diff --git a/dist/tangram.debug.js b/dist/tangram.debug.js index 6e5e9c357..aab77f235 100644 --- a/dist/tangram.debug.js +++ b/dist/tangram.debug.js @@ -28092,6 +28092,8 @@ var _obb3 = _interopRequireDefault(_obb2); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } + function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } @@ -28112,7 +28114,7 @@ var VERTICAL_ANGLE_TOLERANCE = 0.01; // nearly vertical lines considered vertica var LabelLine = { // Given a label's bounding box size and size of broken up individual segments // return a label that fits along the line geometry that is either straight (preferred) or curved (if straight tolerances aren't met) - create: function create(segment_size, total_size, line, layout) { + create: function create(segment_sizes, total_size, line, layout) { // The passes done for fitting a label, and provided tolerances for each pass // First straight is chosen with a low tolerance. Then curved. Then straight with a higher tolerance. var passes = [{ type: 'straight', tolerance: layout.no_curving ? LINE_EXCEED_STRAIGHT_NO_CURVE : LINE_EXCEED_STRAIGHT }, { type: 'curved' }, { type: 'straight', tolerance: LINE_EXCEED_STAIGHT_LOOSE }]; @@ -28124,7 +28126,7 @@ var LabelLine = { if (check.type === 'straight') { label = new LabelLineStraight(total_size, line, layout, check.tolerance); } else if (check.type === 'curved' && !layout.no_curving && line.length > 2) { - label = new LabelLineCurved(segment_size, line, layout); + label = new LabelLineCurved(segment_sizes, line, layout); } if (label && !label.throw_away) { @@ -28150,7 +28152,7 @@ var LabelLineBase = function () { this.offset = layout.offset.slice(); this.obbs = []; this.aabbs = []; - this.type = ''; // "curved" or "straight" to be set by parent class + this.type = ''; // "curved" or "straight" to be set by child class this.throw_away = false; // boolean that determines if label should be discarded } @@ -28215,8 +28217,8 @@ var LabelLineBase = function () { } // Method to calculate oriented bounding box - // "angle" is the angle of the text, "angle_offset" is the angle applied to the offset. - // This distinction is necessary for labels with "left" (inner) or "right" (outer) offsets + // "angle" is the angle of the text segment, "angle_offset" is the angle applied to the offset. + // Offset angle is constant for the entire label, while segment angles are not. }], [{ key: 'splitLineByOrientation', @@ -28475,7 +28477,7 @@ var LabelLineStraight = function (_LabelLineBase) { var LabelLineCurved = function (_LabelLineBase2) { _inherits(LabelLineCurved, _LabelLineBase2); - function LabelLineCurved(size, line, layout) { + function LabelLineCurved(segment_sizes, line, layout) { _classCallCheck(this, LabelLineCurved); var _this2 = _possibleConstructorReturn(this, (LabelLineCurved.__proto__ || Object.getPrototypeOf(LabelLineCurved)).call(this, layout)); @@ -28486,9 +28488,9 @@ var LabelLineCurved = function (_LabelLineBase2) { _this2.angles = []; _this2.pre_angles = []; _this2.offsets = []; - _this2.num_segments = size.length; + _this2.num_segments = segment_sizes.length; - _this2.throw_away = !_this2.fit(size, line, layout); + _this2.throw_away = !_this2.fit(segment_sizes, line, layout); return _this2; } @@ -28502,6 +28504,11 @@ var LabelLineCurved = function (_LabelLineBase2) { var upp = layout.units_per_pixel; var flipped = void 0; // boolean determining if the line orientation is reversed + var height_px = Math.max.apply(Math, _toConsumableArray(size.map(function (s) { + return s[1]; + }))); // use max segment height + var height = height_px * upp; + // Make new copy of line, with consistent orientation // matches for "left" or "right" labels where the offset angle is dependent on the geometry @@ -28512,7 +28519,7 @@ var LabelLineCurved = function (_LabelLineBase2) { line = _LabelLineBase$splitL4[0]; flipped = _LabelLineBase$splitL4[1]; if (typeof layout.orientation === 'number') { - this.offset[1] += ORIENTED_LABEL_OFFSET_FACTOR * (size[1] - layout.vertical_buffer); + this.offset[1] += ORIENTED_LABEL_OFFSET_FACTOR * (height_px - layout.vertical_buffer); // if line is flipped, or the orientation is "left" (-1), flip the offset's y-axis if (flipped) { @@ -28541,8 +28548,6 @@ var LabelLineCurved = function (_LabelLineBase2) { return false; } - var height = size[0][1] * upp; - // find start and end indices that the label can fit on without overlapping tile boundaries // TODO: there is a small probability of a tile boundary crossing on an internal line segment // another option is to create a buffer around the line and check if it overlaps a tile boundary @@ -28614,25 +28619,15 @@ var LabelLineCurved = function (_LabelLineBase2) { return prev + next; }); - // calculate bounding boxes for zollision at zoom level 0 + // calculate bounding boxes for collision at zoom level 0 for (var _i2 = 0; _i2 < positions.length; _i2++) { var position = positions[_i2]; var pre_angle = pre_angles[_i2]; var width = label_lengths[_i2]; - var angle_curve = pre_angle + angles[_i2]; + var angle_segment = pre_angle + angles[_i2]; var angle_offset = this.angle; - if (typeof layout.orientation === 'number') { - if (flipped) { - angle_offset += Math.PI; - } - - if (layout.orientation === -1) { - angle_offset += Math.PI; - } - } - - var obb = LabelLineCurved.createOBB(position, width, height, this.offset, angle_offset, angle_curve, upp); + var obb = LabelLineBase.createOBB(position, width, height, angle_segment, angle_offset, this.offset, upp); var aabb = obb.getExtent(); this.obbs.push(obb); @@ -28795,7 +28790,7 @@ var LabelLineCurved = function (_LabelLineBase2) { } } - // Scale the line by a scale factor (used for computing the angles and offsets are fractional zoom levels) + // Scale the line by a scale factor (used for computing the angles and offsets at fractional zoom levels) // Return the new line positions and their lengths }, { @@ -28951,26 +28946,6 @@ var LabelLineCurved = function (_LabelLineBase2) { return [offsets, angles, pre_angles]; } - - // Modify the LabelLineStraight method to include a distiction between an offset angle, and rotation angle - // as these may be different. (Offset angle is constant for the entire label, while rotation angles are not.) - - }, { - key: 'createOBB', - value: function createOBB(position, width, height, offset, angle_offset, angle_curve, upp) { - var p0 = position[0]; - var p1 = position[1]; - - // apply offset, x positive, y pointing down - if (offset && (offset[0] !== 0 || offset[1] !== 0)) { - offset = _vector2.default.rot(offset, angle_offset); - p0 += offset[0] * upp; - p1 -= offset[1] * upp; - } - - // the angle of the obb is negative since it's the tile system y axis is pointing down - return new _obb3.default(p0, p1, -angle_curve, width, height); - } }]); return LabelLineCurved; @@ -32232,11 +32207,14 @@ var Scene = function () { value: function setIntrospection(val) { var _this13 = this; - this.introspection = val || false; - this.updating++; - return this.updateConfig({ normalize: false }).then(function () { - return _this13.updating--; - }); + if (val !== this.introspection) { + this.introspection = val || false; + this.updating++; + return this.updateConfig({ normalize: false }).then(function () { + return _this13.updating--; + }); + } + return Promise.resolve(); } // Update scene config, and optionally rebuild geometry @@ -36663,8 +36641,8 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } -var shaderSrc_pointsVertex = "uniform vec2 u_resolution;\nuniform float u_time;\nuniform vec3 u_map_position;\nuniform vec4 u_tile_origin;\nuniform float u_tile_proxy_depth;\nuniform bool u_tile_fade_in;\nuniform float u_meters_per_pixel;\nuniform float u_device_pixel_ratio;\nuniform float u_visible_time;\nuniform bool u_view_panning;\nuniform float u_view_pan_snap_timer;\n\nuniform mat4 u_model;\nuniform mat4 u_modelView;\nuniform mat3 u_normalMatrix;\nuniform mat3 u_inverseNormalMatrix;\n\nattribute vec4 a_position;\nattribute vec4 a_shape;\nattribute vec4 a_color;\nattribute float a_outline_edge;\nattribute vec4 a_outline_color;\nattribute vec2 a_texcoord;\nattribute vec2 a_offset;\n\nuniform float u_point_type;\n\n#ifdef TANGRAM_CURVED_LABEL\n attribute vec4 a_offsets;\n attribute vec4 a_pre_angles;\n attribute vec4 a_angles;\n#endif\n\nvarying vec4 v_color;\nvarying vec2 v_texcoord;\nvarying vec4 v_world_position;\nvarying float v_alpha_factor;\n\n#ifdef TANGRAM_SHADER_POINT\n varying float v_outline_edge;\n varying vec4 v_outline_color;\n varying float v_aa_factor;\n#endif\n\n#define PI 3.14159265359\n#define TANGRAM_NORMAL vec3(0., 0., 1.)\n#define TANGRAM_PX_FADE_RANGE 2.\n\n#pragma tangram: camera\n#pragma tangram: material\n#pragma tangram: lighting\n#pragma tangram: raster\n#pragma tangram: global\n\nvec2 rotate2D(vec2 _st, float _angle) {\n return mat2(cos(_angle),-sin(_angle),\n sin(_angle),cos(_angle)) * _st;\n}\n\n// Assumes stops are [0, 0.33, 0.66, 0.99];\nfloat mix4linear(float a, float b, float c, float d, float x) {\n return mix(mix(a, b, 3. * x),\n mix(b,\n mix(c, d, 3. * (max(x, .66) - .66)),\n 3. * (clamp(x, .33, .66) - .33)),\n step(0.33, x)\n );\n}\n\nvoid main() {\n // Initialize globals\n #pragma tangram: setup\n\n v_alpha_factor = 1.0;\n v_color = a_color;\n v_texcoord = a_texcoord;\n\n #ifdef TANGRAM_SHADER_POINT\n v_outline_color = a_outline_color;\n v_outline_edge = a_outline_edge;\n v_aa_factor = 1. / length(a_shape.xy / 256.) * TANGRAM_PX_FADE_RANGE;\n #endif\n\n // Position\n vec4 position = u_modelView * vec4(a_position.xyz, 1.);\n\n // Apply positioning and scaling in screen space\n vec2 shape = a_shape.xy / 256.; // values have an 8-bit fraction\n vec2 offset = vec2(a_offset.x, -a_offset.y); // flip y to make it point down\n\n float zoom = clamp(u_map_position.z - u_tile_origin.z, 0., 1.); //fract(u_map_position.z);\n float theta = a_shape.z / 4096.;\n\n #ifdef TANGRAM_CURVED_LABEL\n //TODO: potential bug? null is passed in for non-curved labels, otherwise the first offset will be 0\n if (a_offsets[0] != 0.){\n #ifdef TANGRAM_FADE_ON_ZOOM_IN\n v_alpha_factor *= clamp(1. + TANGRAM_FADE_ON_ZOOM_IN_RATE - TANGRAM_FADE_ON_ZOOM_IN_RATE * (u_map_position.z - u_tile_origin.z), 0., 1.);\n #endif\n\n vec4 angles_scaled = (PI / 16384.) * a_angles;\n vec4 pre_angles_scaled = (PI / 128.) * a_pre_angles;\n vec4 offsets_scaled = (1. / 64.) * a_offsets;\n\n float pre_angle = mix4linear(pre_angles_scaled[0], pre_angles_scaled[1], pre_angles_scaled[2], pre_angles_scaled[3], zoom);\n float angle = mix4linear(angles_scaled[0], angles_scaled[1], angles_scaled[2], angles_scaled[3], zoom);\n float offset_curve = mix4linear(offsets_scaled[0], offsets_scaled[1], offsets_scaled[2], offsets_scaled[3], zoom);\n\n shape = rotate2D(shape, pre_angle); // rotate in place\n shape.x += offset_curve; // offset for curved label segment\n shape = rotate2D(shape, angle); // rotate relative to curved label anchor\n shape += rotate2D(offset, theta); // offset if specified in the scene file\n }\n else {\n shape = rotate2D(shape + offset, theta);\n }\n #else\n shape = rotate2D(shape + offset, theta);\n #endif\n\n // Fade in (if requested) based on time mesh has been visible.\n // Value passed to fragment shader in the v_alpha_factor varying\n #ifdef TANGRAM_FADE_IN_RATE\n if (u_tile_fade_in) {\n v_alpha_factor *= clamp(u_visible_time * TANGRAM_FADE_IN_RATE, 0., 1.);\n }\n #endif\n\n // Fade out when tile is zooming out, e.g. acting as proxy tiles\n // NB: this is mostly done to compensate for text label collision happening at the label's 1x zoom. As labels\n // in proxy tiles are scaled down, they begin to overlap, and the fade is a simple way to ease the transition.\n // Value passed to fragment shader in the v_alpha_factor varying\n #ifdef TANGRAM_FADE_ON_ZOOM_OUT\n v_alpha_factor *= clamp(1. + TANGRAM_FADE_ON_ZOOM_OUT_RATE * (u_map_position.z - u_tile_origin.z), 0., 1.);\n #endif\n\n // World coordinates for 3d procedural textures\n v_world_position = u_model * position;\n v_world_position.xy += shape * u_meters_per_pixel;\n v_world_position = wrapWorldPosition(v_world_position);\n\n // Modify position before camera projection\n #pragma tangram: position\n\n cameraProjection(position);\n\n #ifdef TANGRAM_LAYER_ORDER\n // +1 is to keep all layers including proxies > 0\n applyLayerOrder(a_position.w + u_tile_proxy_depth + 1., position);\n #endif\n\n // Apply pixel offset in screen-space\n // Multiply by 2 is because screen is 2 units wide Normalized Device Coords (and u_resolution device pixels wide)\n // Device pixel ratio adjustment is because shape is in logical pixels\n position.xy += shape * position.w * 2. * u_device_pixel_ratio / u_resolution;\n\n // Snap to pixel grid\n // Only applied to fully upright sprites/labels (not shader-drawn points), while panning is not active\n if (!u_view_panning && (abs(theta) < TANGRAM_EPSILON) && u_point_type != TANGRAM_POINT_TYPE_SHADER) {\n vec2 position_fract = fract((((position.xy / position.w) + 1.) * .5) * u_resolution);\n vec2 position_snap = position.xy + ((step(0.5, position_fract) - position_fract) * position.w * 2. / u_resolution);\n\n // Animate the snapping to smooth the transition and make it less noticeable\n #ifdef TANGRAM_VIEW_PAN_SNAP_RATE\n position.xy = mix(position.xy, position_snap, clamp(u_view_pan_snap_timer * TANGRAM_VIEW_PAN_SNAP_RATE, 0., 1.));\n #else\n position.xy = position_snap;\n #endif\n }\n\n gl_Position = position;\n}\n"; -var shaderSrc_pointsFragment = "uniform vec2 u_resolution;\nuniform float u_time;\nuniform vec3 u_map_position;\nuniform vec4 u_tile_origin;\nuniform float u_meters_per_pixel;\nuniform float u_device_pixel_ratio;\nuniform float u_visible_time;\n\nuniform mat3 u_normalMatrix;\nuniform mat3 u_inverseNormalMatrix;\n\nuniform sampler2D u_texture;\nuniform float u_point_type;\nuniform bool u_apply_color_blocks;\n\nvarying vec4 v_color;\nvarying vec2 v_texcoord;\nvarying vec4 v_world_position;\nvarying float v_alpha_factor;\n\n#ifdef TANGRAM_SHADER_POINT\n varying vec4 v_outline_color;\n varying float v_outline_edge;\n varying float v_aa_factor;\n#endif\n\n#define TANGRAM_NORMAL vec3(0., 0., 1.)\n\n#pragma tangram: camera\n#pragma tangram: material\n#pragma tangram: lighting\n#pragma tangram: raster\n#pragma tangram: global\n\n#ifdef TANGRAM_SHADER_POINT\n // Draw an SDF-style point\n void drawPoint (inout vec4 color) {\n vec2 uv = v_texcoord * 2. - 1.; // fade alpha near circle edge\n float point_dist = length(uv);\n color = mix(\n color,\n v_outline_color,\n (1. - smoothstep(v_outline_edge - v_aa_factor, v_outline_edge + v_aa_factor, 1.-point_dist)) * step(.000001, v_outline_edge)\n );\n color.a = mix(color.a, 0., (smoothstep(1. - v_aa_factor, 1., point_dist)));\n }\n#endif\n\nvoid main (void) {\n // Initialize globals\n #pragma tangram: setup\n\n vec4 color = v_color;\n\n if (u_point_type == TANGRAM_POINT_TYPE_TEXTURE) { // sprite texture\n color *= texture2D(u_texture, v_texcoord);\n }\n else if (u_point_type == TANGRAM_POINT_TYPE_LABEL) { // label texture\n color = texture2D(u_texture, v_texcoord);\n color.rgb /= max(color.a, 0.001); // un-multiply canvas texture\n }\n #ifdef TANGRAM_SHADER_POINT\n else if (u_point_type == TANGRAM_POINT_TYPE_SHADER) { // shader point\n drawPoint(color); // draw a point\n }\n #endif\n\n // Shader blocks for color/filter are only applied for sprites, shader points, and standalone text,\n // NOT for text attached to a point (N.B.: for compatibility with ES)\n if (u_apply_color_blocks) {\n #pragma tangram: color\n #pragma tangram: filter\n }\n\n color.a *= v_alpha_factor;\n\n // If blending is off, use alpha discard as a lower-quality substitute\n #if !defined(TANGRAM_BLEND_OVERLAY) && !defined(TANGRAM_BLEND_INLAY)\n if (color.a < TANGRAM_ALPHA_TEST) {\n discard;\n }\n #endif\n\n gl_FragColor = color;\n}\n"; +var shaderSrc_pointsVertex = "uniform vec2 u_resolution;\nuniform float u_time;\nuniform vec3 u_map_position;\nuniform vec4 u_tile_origin;\nuniform float u_tile_proxy_depth;\nuniform bool u_tile_fade_in;\nuniform float u_meters_per_pixel;\nuniform float u_device_pixel_ratio;\nuniform float u_visible_time;\nuniform bool u_view_panning;\nuniform float u_view_pan_snap_timer;\n\nuniform mat4 u_model;\nuniform mat4 u_modelView;\nuniform mat3 u_normalMatrix;\nuniform mat3 u_inverseNormalMatrix;\n\nattribute vec4 a_position;\nattribute vec4 a_shape;\nattribute vec4 a_color;\nattribute float a_outline_edge;\nattribute vec4 a_outline_color;\nattribute vec2 a_texcoord;\nattribute vec2 a_offset;\n\nuniform float u_point_type;\n\n#ifdef TANGRAM_CURVED_LABEL\n attribute vec4 a_offsets;\n attribute vec4 a_pre_angles;\n attribute vec4 a_angles;\n#endif\n\nvarying vec4 v_color;\nvarying vec2 v_texcoord;\nvarying vec4 v_world_position;\nvarying float v_alpha_factor;\n\n#ifdef TANGRAM_SHADER_POINT\n varying float v_outline_edge;\n varying vec4 v_outline_color;\n varying float v_aa_offset;\n#endif\n\n#define PI 3.14159265359\n#define TANGRAM_NORMAL vec3(0., 0., 1.)\n\n#pragma tangram: camera\n#pragma tangram: material\n#pragma tangram: lighting\n#pragma tangram: raster\n#pragma tangram: global\n\nvec2 rotate2D(vec2 _st, float _angle) {\n return mat2(cos(_angle),-sin(_angle),\n sin(_angle),cos(_angle)) * _st;\n}\n\n// Assumes stops are [0, 0.33, 0.66, 0.99];\nfloat mix4linear(float a, float b, float c, float d, float x) {\n return mix(mix(a, b, 3. * x),\n mix(b,\n mix(c, d, 3. * (max(x, .66) - .66)),\n 3. * (clamp(x, .33, .66) - .33)),\n step(0.33, x)\n );\n}\n\nvoid main() {\n // Initialize globals\n #pragma tangram: setup\n\n v_alpha_factor = 1.0;\n v_color = a_color;\n v_texcoord = a_texcoord; // UV from vertex\n\n #ifdef TANGRAM_SHADER_POINT\n v_outline_color = a_outline_color;\n v_outline_edge = a_outline_edge;\n if (u_point_type == TANGRAM_POINT_TYPE_SHADER) { // shader point\n v_outline_color = a_outline_color;\n v_outline_edge = a_outline_edge;\n float size = abs(a_shape.x/128.); // radius in pixels\n v_texcoord = sign(a_shape.xy)*(size+1.)/(size);\n size+=2.;\n v_aa_offset=2./size;\n }\n #endif\n\n // Position\n vec4 position = u_modelView * vec4(a_position.xyz, 1.);\n\n // Apply positioning and scaling in screen space\n vec2 shape = a_shape.xy / 256.; // values have an 8-bit fraction\n vec2 offset = vec2(a_offset.x, -a_offset.y); // flip y to make it point down\n\n float zoom = clamp(u_map_position.z - u_tile_origin.z, 0., 1.); //fract(u_map_position.z);\n float theta = a_shape.z / 4096.;\n\n #ifdef TANGRAM_CURVED_LABEL\n //TODO: potential bug? null is passed in for non-curved labels, otherwise the first offset will be 0\n if (a_offsets[0] != 0.){\n #ifdef TANGRAM_FADE_ON_ZOOM_IN\n v_alpha_factor *= clamp(1. + TANGRAM_FADE_ON_ZOOM_IN_RATE - TANGRAM_FADE_ON_ZOOM_IN_RATE * (u_map_position.z - u_tile_origin.z), 0., 1.);\n #endif\n\n vec4 angles_scaled = (PI / 16384.) * a_angles;\n vec4 pre_angles_scaled = (PI / 128.) * a_pre_angles;\n vec4 offsets_scaled = (1. / 64.) * a_offsets;\n\n float pre_angle = mix4linear(pre_angles_scaled[0], pre_angles_scaled[1], pre_angles_scaled[2], pre_angles_scaled[3], zoom);\n float angle = mix4linear(angles_scaled[0], angles_scaled[1], angles_scaled[2], angles_scaled[3], zoom);\n float offset_curve = mix4linear(offsets_scaled[0], offsets_scaled[1], offsets_scaled[2], offsets_scaled[3], zoom);\n\n shape = rotate2D(shape, pre_angle); // rotate in place\n shape.x += offset_curve; // offset for curved label segment\n shape = rotate2D(shape, angle); // rotate relative to curved label anchor\n shape += rotate2D(offset, theta); // offset if specified in the scene file\n }\n else {\n shape = rotate2D(shape + offset, theta);\n }\n #else\n shape = rotate2D(shape + offset, theta);\n #endif\n\n // Fade in (if requested) based on time mesh has been visible.\n // Value passed to fragment shader in the v_alpha_factor varying\n #ifdef TANGRAM_FADE_IN_RATE\n if (u_tile_fade_in) {\n v_alpha_factor *= clamp(u_visible_time * TANGRAM_FADE_IN_RATE, 0., 1.);\n }\n #endif\n\n // Fade out when tile is zooming out, e.g. acting as proxy tiles\n // NB: this is mostly done to compensate for text label collision happening at the label's 1x zoom. As labels\n // in proxy tiles are scaled down, they begin to overlap, and the fade is a simple way to ease the transition.\n // Value passed to fragment shader in the v_alpha_factor varying\n #ifdef TANGRAM_FADE_ON_ZOOM_OUT\n v_alpha_factor *= clamp(1. + TANGRAM_FADE_ON_ZOOM_OUT_RATE * (u_map_position.z - u_tile_origin.z), 0., 1.);\n #endif\n\n // World coordinates for 3d procedural textures\n v_world_position = u_model * position;\n v_world_position.xy += shape * u_meters_per_pixel;\n v_world_position = wrapWorldPosition(v_world_position);\n\n // Modify position before camera projection\n #pragma tangram: position\n\n cameraProjection(position);\n\n #ifdef TANGRAM_LAYER_ORDER\n // +1 is to keep all layers including proxies > 0\n applyLayerOrder(a_position.w + u_tile_proxy_depth + 1., position);\n #endif\n\n // Apply pixel offset in screen-space\n // Multiply by 2 is because screen is 2 units wide Normalized Device Coords (and u_resolution device pixels wide)\n // Device pixel ratio adjustment is because shape is in logical pixels\n position.xy += shape * position.w * 2. * u_device_pixel_ratio / u_resolution;\n #ifdef TANGRAM_SHADER_POINT\n if (u_point_type == TANGRAM_POINT_TYPE_SHADER) { // shader point\n // enlarge by 1px to catch missed MSAA fragments\n position.xy += sign(shape) * position.w * u_device_pixel_ratio / u_resolution;\n }\n #endif\n\n // Snap to pixel grid\n // Only applied to fully upright sprites/labels (not shader-drawn points), while panning is not active\n if (!u_view_panning && (abs(theta) < TANGRAM_EPSILON) && u_point_type != TANGRAM_POINT_TYPE_SHADER) {\n vec2 position_fract = fract((((position.xy / position.w) + 1.) * .5) * u_resolution);\n vec2 position_snap = position.xy + ((step(0.5, position_fract) - position_fract) * position.w * 2. / u_resolution);\n\n // Animate the snapping to smooth the transition and make it less noticeable\n #ifdef TANGRAM_VIEW_PAN_SNAP_RATE\n position.xy = mix(position.xy, position_snap, clamp(u_view_pan_snap_timer * TANGRAM_VIEW_PAN_SNAP_RATE, 0., 1.));\n #else\n position.xy = position_snap;\n #endif\n }\n\n gl_Position = position;\n}\n"; +var shaderSrc_pointsFragment = "uniform vec2 u_resolution;\nuniform float u_time;\nuniform vec3 u_map_position;\nuniform vec4 u_tile_origin;\nuniform float u_meters_per_pixel;\nuniform float u_device_pixel_ratio;\nuniform float u_visible_time;\n\nuniform mat3 u_normalMatrix;\nuniform mat3 u_inverseNormalMatrix;\n\nuniform sampler2D u_texture;\nuniform float u_point_type;\nuniform bool u_apply_color_blocks;\n\nvarying vec4 v_color;\nvarying vec2 v_texcoord;\nvarying vec4 v_world_position;\nvarying float v_alpha_factor;\n\n#ifdef TANGRAM_SHADER_POINT\n varying vec4 v_outline_color;\n varying float v_outline_edge;\n varying float v_aa_offset;\n#endif\n\n#define TANGRAM_NORMAL vec3(0., 0., 1.)\n\n#pragma tangram: camera\n#pragma tangram: material\n#pragma tangram: lighting\n#pragma tangram: raster\n#pragma tangram: global\n\n#ifdef TANGRAM_SHADER_POINT\n //l is the distance from the center to the fragment, R is the radius of the drawn point\n float _tangram_antialias(float l, float R){\n float low = R - v_aa_offset;\n float high = R + v_aa_offset;\n return 1. - smoothstep(low, high, l);\n }\n#endif\n\nvoid main (void) {\n // Initialize globals\n #pragma tangram: setup\n\n vec4 color = v_color;\n\n if (u_point_type == TANGRAM_POINT_TYPE_TEXTURE) { // sprite texture\n color *= texture2D(u_texture, v_texcoord);\n }\n else if (u_point_type == TANGRAM_POINT_TYPE_LABEL) { // label texture\n color = texture2D(u_texture, v_texcoord);\n color.rgb /= max(color.a, 0.001); // un-multiply canvas texture\n }\n #ifdef TANGRAM_SHADER_POINT\n else if (u_point_type == TANGRAM_POINT_TYPE_SHADER) { // shader point\n float outline_edge = v_outline_edge;\n vec4 outlineColor = v_outline_color;\n // Distance to this fragment from the center.\n float l = length(v_texcoord);\n // Mask of outermost circle, either outline or point boundary.\n float outer_alpha = _tangram_antialias(l, 1.);\n float fill_alpha = _tangram_antialias(l, 1.-v_outline_edge*0.5) * color.a;\n float stroke_alpha = (outer_alpha - _tangram_antialias(l, 1.-v_outline_edge)) * outlineColor.a;\n // Apply alpha compositing with stroke 'over' fill.\n\n #ifdef TANGRAM_BLEND_ADD\n color.a = stroke_alpha + fill_alpha;\n color.rgb = color.rgb * fill_alpha + outlineColor.rgb* stroke_alpha;\n #else\n //TANGRAM_BLEND_OVERLAY (and fallback for not implemented blending modes)\n color.a = stroke_alpha + fill_alpha * (1. - stroke_alpha);\n color.rgb = mix(color.rgb * fill_alpha, outlineColor.rgb, stroke_alpha) / color.a;\n #endif\n }\n #endif\n\n // Shader blocks for color/filter are only applied for sprites, shader points, and standalone text,\n // NOT for text attached to a point (N.B.: for compatibility with ES)\n if (u_apply_color_blocks) {\n #pragma tangram: color\n #pragma tangram: filter\n }\n\n color.a *= v_alpha_factor;\n\n // If blending is off, use alpha discard as a lower-quality substitute\n #if !defined(TANGRAM_BLEND_OVERLAY) && !defined(TANGRAM_BLEND_INLAY) && !defined(TANGRAM_BLEND_ADD)\n if (color.a < TANGRAM_ALPHA_TEST) {\n discard;\n }\n #endif\n\n gl_FragColor = color;\n}\n"; var PLACEMENT = _label_point2.default.PLACEMENT; @@ -36806,8 +36784,8 @@ Object.assign(Points, { style.outline_edge_pct = 0; if (style.outline_width && style.outline_color) { - var outline_width = style.outline_width + 1; - style.size[0] += outline_width; // bump outline by 1px to balance out antialiasing + var outline_width = style.outline_width; + style.size[0] += outline_width; style.size[1] += outline_width; style.outline_edge_pct = outline_width / Math.min(style.size[0], style.size[1]) * 2; // UV distance at which outline starts } @@ -36991,7 +36969,7 @@ Object.assign(Points, { // Finish tile mesh return _style.Style.endData.call(_this, tile).then(function (tile_data) { // Attach tile-specific label atlas to mesh as a texture uniform - if (textures && textures.length) { + if (tile_data && textures && textures.length) { var _tile_data$textures; tile_data.textures = tile_data.textures || []; @@ -37052,8 +37030,11 @@ Object.assign(Points, { // Optional text styling draw.text = this.preprocessText(draw.text); // will return null if valid text styling wasn't provided if (draw.text) { - draw.text.key = draw.key; // copy layer key for use as label repeat group - draw.text.repeat_group = draw.text.repeat_group || draw.repeat_group; // inherit repeat group by default + draw.text.key = draw.key; // inherits parent properties + draw.text.group = draw.group; + draw.text.layers = draw.layers; + draw.text.order = draw.order; + draw.text.repeat_group = draw.text.repeat_group || draw.repeat_group; draw.text.anchor = draw.text.anchor || this.default_anchor; draw.text.optional = typeof draw.text.optional === 'boolean' ? draw.text.optional : false; // default text to required draw.text.interactive = draw.text.interactive || draw.interactive; // inherits from point @@ -37903,7 +37884,9 @@ var Style = exports.Style = { } var vertex_data = this.getTileMesh(tile, this.meshVariantTypeForDraw(style)).vertex_data; - this.buildGeometry(feature.geometry, style, vertex_data, context); + if (this.buildGeometry(feature.geometry, style, vertex_data, context) > 0) { + feature.generation = this.generation; // track scene generation that feature was rendered for + } }, buildGeometry: function buildGeometry(geometry, style, vertex_data, context) { var _this = this; @@ -39530,6 +39513,10 @@ var CanvasText = function () { first = false; } + // add size of full text string + text_info.size = this.textSize(style, text, text_settings).size; + + // if text may curve, calculate per-segment as well if (text_settings.can_articulate) { var rtl = false; var bidi = false; @@ -39544,22 +39531,15 @@ var CanvasText = function () { text_info.isRTL = rtl; text_info.no_curving = bidi || isTextCurveBlacklisted(text); // used in LabelLine to prevent curved labels text_info.vertical_buffer = this.vertical_text_buffer; - text_info.size = []; + text_info.segment_sizes = []; if (!text_info.no_curving) { var segments = splitLabelText(text, rtl); text_info.segments = segments; for (var i = 0; i < segments.length; i++) { - text_info.size.push(this.textSize(style, segments[i], text_settings).size); + text_info.segment_sizes.push(this.textSize(style, segments[i], text_settings).size); } } - - // add full text as well - text_info.total_size = this.textSize(style, text, text_settings).size; - } else { - // Only send text sizes back to worker (keep computed text line info - // on main thread, for future rendering) - text_info.size = this.textSize(style, text, text_settings).size; } cursor.text_idx++; @@ -39969,7 +39949,6 @@ var CanvasText = function () { texcoord_cache: {} }, textures = []; - var texcoord_cache = texture.texcoord_cache; for (var style in texts) { var text_infos = texts[style]; @@ -39980,7 +39959,7 @@ var CanvasText = function () { if (text_info.text_settings.can_articulate) { text_info.textures = []; - texcoord_cache[style] = texcoord_cache[style] || {}; + texture.texcoord_cache[style] = texture.texcoord_cache[style] || {}; for (var t = 0; t < text_info.type.length; t++) { var type = text_info.type[t]; @@ -39989,10 +39968,10 @@ var CanvasText = function () { case 'straight': var word = text_info.isRTL ? text.split().reverse().join() : text; - if (!texcoord_cache[style][word]) { - var size = text_info.total_size.texture_size; + if (!texture.texcoord_cache[style][word]) { + var size = text_info.size.texture_size; texture_position = this.placeText(size[0], size[1], style, texture, textures, max_texture_size); - texcoord_cache[style][word] = { + texture.texcoord_cache[style][word] = { texture_id: texture.texture_id, texture_position: texture_position }; @@ -40005,14 +39984,14 @@ var CanvasText = function () { case 'curved': text_info.textures[t] = []; - for (var w = 0; w < text_info.size.length; w++) { + for (var w = 0; w < text_info.segment_sizes.length; w++) { var _word2 = text_info.segments[w]; - if (!texcoord_cache[style][_word2]) { - var _size2 = text_info.size[w].texture_size; + if (!texture.texcoord_cache[style][_word2]) { + var _size2 = text_info.segment_sizes[w].texture_size; var width = 2 * _size2[0]; // doubled to account for side-by-side rendering of fill and stroke texture_position = this.placeText(width, _size2[1], style, texture, textures, max_texture_size); - texcoord_cache[style][_word2] = { + texture.texcoord_cache[style][_word2] = { texture_id: texture.texture_id, texture_position: texture_position }; @@ -40819,11 +40798,11 @@ Object.assign(TextStyle, { style.texcoords = {}; if (q.label.type === 'straight') { - style.size.straight = text_info.total_size.logical_size; + style.size.straight = text_info.size.logical_size; style.texcoords.straight = text_info.texcoords.straight; style.label_texture = textures[text_info.texcoords.straight.texture_id]; } else { - style.size.curved = text_info.size.map(function (size) { + style.size.curved = text_info.segment_sizes.map(function (size) { return size.logical_size; }); style.texcoords_stroke = text_info.texcoords_stroke; @@ -40882,11 +40861,11 @@ Object.assign(TextStyle, { fq.layout.vertical_buffer = text_info.vertical_buffer; if (text_info.text_settings.can_articulate) { - var sizes = text_info.size.map(function (size) { + var sizes = text_info.segment_sizes.map(function (size) { return size.collision_size; }); fq.layout.no_curving = text_info.no_curving; - feature_labels = this.buildLabels(sizes, fq.feature.geometry, fq.layout, text_info.total_size.collision_size); + feature_labels = this.buildLabels(sizes, fq.feature.geometry, fq.layout, text_info.size.collision_size); } else { feature_labels = this.buildLabels(text_info.size.collision_size, fq.feature.geometry, fq.layout); } @@ -40948,7 +40927,12 @@ Object.assign(TextStyle, { labels.push(label); } } - } else { + } + + // Consider full line for label placement if no subdivisions requested, or as last resort if not enough + // labels placed (e.g. fewer than requested subdivisions) + // TODO: refactor multiple label placements per line / move into label placement class for better effectiveness + if (labels.length < subdiv) { var _label = _label_line2.default.create(size, total_size, line, layout); if (_label) { labels.push(_label); @@ -44511,7 +44495,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); -var pkg = JSON.parse("{\n \"name\": \"tangram\",\n \"version\": \"0.13.2\",\n \"description\": \"WebGL Maps for Vector Tiles\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git://github.com/tangrams/tangram.git\"\n },\n \"main\": \"dist/tangram.min.js\",\n \"homepage\": \"https://github.com/tangrams/tangram\",\n \"keywords\": [\n \"maps\",\n \"graphics\",\n \"rendering\",\n \"visualization\",\n \"WebGL\",\n \"OpenStreetMap\"\n ],\n \"config\": {\n \"output\": \"\",\n \"output_map\": \"\"\n },\n \"scripts\": {\n \"start\": \"npm run watch\",\n \"test\": \"npm run lint && npm run build-bundle && npm run test-local\",\n \"test-ci\": \"npm run lint && npm run build-bundle && npm run test-remote\",\n \"test-remote\": \"./node_modules/karma/bin/karma start --browsers SL_Firefox --single-run\",\n \"test-local\": \"./node_modules/karma/bin/karma start --browsers Chrome --single-run\",\n \"karma-start\": \"./node_modules/karma/bin/karma start --browsers Chrome --no-watch\",\n \"karma-run\": \"./node_modules/karma/bin/karma run --browsers Chrome\",\n \"lint\": \"$(npm bin)/jshint src/ && jshint test/\",\n \"build\": \"npm run build-bundle && npm run build-minify\",\n \"build-bundle\": \"$(npm bin)/browserify src/module.js -t [ babelify --presets [ es2015 ] ] -t brfs --debug -s Tangram -p browserify-derequire -p [ './build/quine.js' 'tangram.debug.js.map' ] -p [ mapstraction 'dist/tangram.debug.js.map' ] -o dist/tangram.debug.js\",\n \"build-minify\": \"$(npm bin)/uglifyjs dist/tangram.debug.js -c warnings=false -m | sed -e 's/tangram.debug.js.map//g' > dist/tangram.min.js && npm run build-size\",\n \"build-size\": \"gzip dist/tangram.min.js -c | wc -c | awk '{kb=$1/1024; print kb}' OFMT='%.0fk minified+gzipped'\",\n \"watch\": \"$(npm bin)/budo src/module.js:dist/tangram.debug.js --port 8000 --cors --live -- -t [ babelify --presets [ es2015 ] ] -t brfs -s Tangram -p [ './build/quine.js' 'tangram.debug.temp.js.map' ] -p [ mapstraction 'dist/tangram.debug.temp.js.map' ]\"\n },\n \"author\": {\n \"name\": \"Mapzen\",\n \"email\": \"tangram@mapzen.com\"\n },\n \"contributors\": [\n {\n \"name\": \"Brett Camper\"\n },\n {\n \"name\": \"Peter Richardson\"\n },\n {\n \"name\": \"Patricio Gonzalez Vivo\"\n },\n {\n \"name\": \"Karim Naaji\"\n },\n {\n \"name\": \"Ivan Willig\"\n },\n {\n \"name\": \"Lou Huang\"\n },\n {\n \"name\": \"David Valdman\"\n },\n {\n \"name\": \"Nick Doiron\"\n }\n ],\n \"license\": \"MIT\",\n \"dependencies\": {\n \"brfs\": \"1.4.3\",\n \"csscolorparser\": \"1.0.3\",\n \"earcut\": \"2.1.1\",\n \"fontfaceobserver\": \"2.0.7\",\n \"geojson-vt\": \"2.4.0\",\n \"gl-mat3\": \"1.0.0\",\n \"gl-mat4\": \"1.1.4\",\n \"gl-shader-errors\": \"1.0.3\",\n \"js-yaml\": \"tangrams/js-yaml#read-only\",\n \"jszip\": \"tangrams/jszip#read-only\",\n \"pbf\": \"1.3.7\",\n \"strip-comments\": \"0.3.2\",\n \"topojson-client\": \"tangrams/topojson-client#read-only\",\n \"vector-tile\": \"1.3.0\"\n },\n \"devDependencies\": {\n \"babelify\": \"7.3.0\",\n \"babel-preset-es2015\": \"6.16.0\",\n \"browserify\": \"14.4.0\",\n \"browserify-derequire\": \"0.9.4\",\n \"budo\": \"10.0.3\",\n \"chai\": \"1.9.2\",\n \"chai-as-promised\": \"4.1.1\",\n \"core-js\": \"2.4.1\",\n \"glob\": \"4.0.6\",\n \"jshint\": \"2.9.4\",\n \"karma\": \"1.5.0\",\n \"karma-browserify\": \"5.1.1\",\n \"karma-chrome-launcher\": \"2.0.0\",\n \"karma-mocha\": \"0.1.9\",\n \"karma-mocha-reporter\": \"1.0.0\",\n \"karma-sauce-launcher\": \"tangrams/karma-sauce-launcher#firefox-profiles2\",\n \"karma-sinon\": \"1.0.4\",\n \"mapstraction\": \"1.0.1\",\n \"mocha\": \"1.21.4\",\n \"sinon\": \"1.10.3\",\n \"through2\": \"2.0.3\",\n \"uglify-js\": \"2.4.14\",\n \"yargs\": \"1.3.2\"\n }\n}\n"); +var pkg = JSON.parse("{\n \"name\": \"tangram\",\n \"version\": \"0.13.3\",\n \"description\": \"WebGL Maps for Vector Tiles\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git://github.com/tangrams/tangram.git\"\n },\n \"main\": \"dist/tangram.min.js\",\n \"homepage\": \"https://github.com/tangrams/tangram\",\n \"keywords\": [\n \"maps\",\n \"graphics\",\n \"rendering\",\n \"visualization\",\n \"WebGL\",\n \"OpenStreetMap\"\n ],\n \"config\": {\n \"output\": \"\",\n \"output_map\": \"\"\n },\n \"scripts\": {\n \"start\": \"npm run watch\",\n \"test\": \"npm run lint && npm run build-bundle && npm run test-local\",\n \"test-ci\": \"npm run lint && npm run build-bundle && npm run test-remote\",\n \"test-remote\": \"./node_modules/karma/bin/karma start --browsers SL_Firefox --single-run\",\n \"test-local\": \"./node_modules/karma/bin/karma start --browsers Chrome --single-run\",\n \"karma-start\": \"./node_modules/karma/bin/karma start --browsers Chrome --no-watch\",\n \"karma-run\": \"./node_modules/karma/bin/karma run --browsers Chrome\",\n \"lint\": \"$(npm bin)/jshint src/ && jshint test/\",\n \"build\": \"npm run build-bundle && npm run build-minify\",\n \"build-bundle\": \"$(npm bin)/browserify src/module.js -t [ babelify --presets [ es2015 ] ] -t brfs --debug -s Tangram -p browserify-derequire -p [ './build/quine.js' 'tangram.debug.js.map' ] -p [ mapstraction 'dist/tangram.debug.js.map' ] -o dist/tangram.debug.js\",\n \"build-minify\": \"$(npm bin)/uglifyjs dist/tangram.debug.js -c warnings=false -m | sed -e 's/tangram.debug.js.map//g' > dist/tangram.min.js && npm run build-size\",\n \"build-size\": \"gzip dist/tangram.min.js -c | wc -c | awk '{kb=$1/1024; print kb}' OFMT='%.0fk minified+gzipped'\",\n \"watch\": \"$(npm bin)/budo src/module.js:dist/tangram.debug.js --port 8000 --cors --live -- -t [ babelify --presets [ es2015 ] ] -t brfs -s Tangram -p [ './build/quine.js' 'tangram.debug.temp.js.map' ] -p [ mapstraction 'dist/tangram.debug.temp.js.map' ]\"\n },\n \"author\": {\n \"name\": \"Mapzen\",\n \"email\": \"tangram@mapzen.com\"\n },\n \"contributors\": [\n {\n \"name\": \"Brett Camper\"\n },\n {\n \"name\": \"Peter Richardson\"\n },\n {\n \"name\": \"Patricio Gonzalez Vivo\"\n },\n {\n \"name\": \"Karim Naaji\"\n },\n {\n \"name\": \"Ivan Willig\"\n },\n {\n \"name\": \"Lou Huang\"\n },\n {\n \"name\": \"David Valdman\"\n },\n {\n \"name\": \"Nick Doiron\"\n },\n {\n \"name\": \"Francisco López\"\n },\n {\n \"name\": \"David Manzanares\"\n }\n ],\n \"license\": \"MIT\",\n \"dependencies\": {\n \"brfs\": \"1.4.3\",\n \"csscolorparser\": \"1.0.3\",\n \"earcut\": \"2.1.1\",\n \"fontfaceobserver\": \"2.0.7\",\n \"geojson-vt\": \"2.4.0\",\n \"gl-mat3\": \"1.0.0\",\n \"gl-mat4\": \"1.1.4\",\n \"gl-shader-errors\": \"1.0.3\",\n \"js-yaml\": \"tangrams/js-yaml#read-only\",\n \"jszip\": \"tangrams/jszip#read-only\",\n \"pbf\": \"1.3.7\",\n \"strip-comments\": \"0.3.2\",\n \"topojson-client\": \"tangrams/topojson-client#read-only\",\n \"vector-tile\": \"1.3.0\"\n },\n \"devDependencies\": {\n \"babelify\": \"7.3.0\",\n \"babel-preset-es2015\": \"6.16.0\",\n \"browserify\": \"14.4.0\",\n \"browserify-derequire\": \"0.9.4\",\n \"budo\": \"10.0.3\",\n \"chai\": \"1.9.2\",\n \"chai-as-promised\": \"4.1.1\",\n \"core-js\": \"2.4.1\",\n \"glob\": \"4.0.6\",\n \"jshint\": \"2.9.4\",\n \"karma\": \"1.5.0\",\n \"karma-browserify\": \"5.1.1\",\n \"karma-chrome-launcher\": \"2.0.0\",\n \"karma-mocha\": \"0.1.9\",\n \"karma-mocha-reporter\": \"1.0.0\",\n \"karma-sauce-launcher\": \"tangrams/karma-sauce-launcher#firefox-profiles2\",\n \"karma-sinon\": \"1.0.4\",\n \"mapstraction\": \"1.0.1\",\n \"mocha\": \"1.21.4\",\n \"sinon\": \"1.10.3\",\n \"through2\": \"2.0.3\",\n \"uglify-js\": \"2.4.14\",\n \"yargs\": \"1.3.2\"\n }\n}\n"); var version = void 0; exports.default = version = 'v' + pkg.version; diff --git a/dist/tangram.debug.js.map b/dist/tangram.debug.js.map index bec3299ef..4e58c3123 100644 --- a/dist/tangram.debug.js.map +++ b/dist/tangram.debug.js.map @@ -276,7 +276,7 @@ "src/view.js" ], "names": [], - "mappings": "AAAA;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC/NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClHA;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClrDA;AACA;AACA;AACA;AACA;;ACJA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;;ACJA;AACA;AACA;AACA;AACA;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;;ACJA;AACA;;ACDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnBA;AACA;AACA;AACA;AACA;;ACJA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxBA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;;ACAA;AACA;AACA;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;;ACFA;;ACAA;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;;ACJA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1EA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;AACA;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1SA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC3GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpoBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9SA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACljDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnYA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACvQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AC7MA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC/2BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACnLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACngBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClaA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACl1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACphDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpsCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC/JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACtaA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACnIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AClHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACnEA;AACA;AACA;AACA;AACA;AACA;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC1kBA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;QCjDgB,W,GAAA,W;QAeA,kB,GAAA,kB;;AA1BhB;;;;;;AAEO,IAAM,oCAAc,CACvB,EAAE,GAAG,CAAL,EAAQ,GAAG,CAAX,EADuB,EAEvB,EAAE,GAAG,cAAI,UAAT,EAAqB,GAAG,CAAC,cAAI,UAA7B,CAA0C;AAA1C,CAFuB,CAApB,C,CAHP;AAQO,IAAM,oCAAc,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAApB;;AAEP;AACA;AACO,SAAS,WAAT,CAAsB,EAAtB,EAA0B,EAA1B,EAA8B,SAA9B,EAAyC;AAC5C,QAAI,WAAW,YAAY,CAAZ,CAAf;AACA,QAAI,WAAW,YAAY,CAAZ,CAAf;;AAEA;AACA,QAAK,GAAG,CAAH,KAAS,SAAS,CAAT,GAAa,SAAtB,IAAmC,GAAG,CAAH,KAAS,SAAS,CAAT,GAAa,SAA1D,IACC,GAAG,CAAH,KAAS,SAAS,CAAT,GAAa,SAAtB,IAAmC,GAAG,CAAH,KAAS,SAAS,CAAT,GAAa,SAD1D,IAEC,GAAG,CAAH,KAAS,SAAS,CAAT,GAAa,SAAtB,IAAmC,GAAG,CAAH,KAAS,SAAS,CAAT,GAAa,SAF1D,IAGC,GAAG,CAAH,KAAS,SAAS,CAAT,GAAa,SAAtB,IAAmC,GAAG,CAAH,KAAS,SAAS,CAAT,GAAa,SAH9D,EAG0E;AACtE,eAAO,IAAP;AACH;;AAED,WAAO,KAAP;AACH;;AAEM,SAAS,kBAAT,CAA6B,KAA7B,EAAoC,SAApC,EAA+C;AAClD,gBAAY,aAAa,CAAzB;AACA,QAAI,WAAW,YAAY,CAAZ,CAAf;AACA,QAAI,WAAW,YAAY,CAAZ,CAAf;;AAEA,WAAO,MAAM,CAAN,KAAY,SAAS,CAAT,GAAa,SAAzB,IACA,MAAM,CAAN,KAAY,SAAS,CAAT,GAAa,SADzB,IAEA,MAAM,CAAN,KAAY,SAAS,CAAT,GAAa,SAFzB,IAGA,MAAM,CAAN,KAAY,SAAS,CAAT,GAAa,SAHhC;AAIH;;;;;;;;;ypBCpCD;;;QAMgB,mB,GAAA,mB;;AALhB;;AAEA;AACA;AACA;AACO,SAAS,mBAAT,CAA8B,MAA9B,EAAsC,WAAtC,EAAmD,eAAnD,eAEyK;AAAA,QAD1K,cAC0K,QAD1K,cAC0K;AAAA,QAD1J,cAC0J,QAD1J,cAC0J;AAAA,QAD1I,WAC0I,QAD1I,WAC0I;AAAA,QAD7H,YAC6H,QAD7H,YAC6H;AAAA,QAD/G,aAC+G,QAD/G,aAC+G;AAAA,QADhG,gBACgG,QADhG,gBACgG;AAAA,QAD9E,YAC8E,QAD9E,YAC8E;AAAA,QAA1K,IAA0K,SAA1K,IAA0K;AAAA,QAApK,cAAoK,SAApK,cAAoK;AAAA,QAApJ,MAAoJ,SAApJ,MAAoJ;AAAA,QAA5I,OAA4I,SAA5I,OAA4I;AAAA,QAAnI,UAAmI,SAAnI,UAAmI;AAAA,QAAvH,KAAuH,SAAvH,KAAuH;AAAA,QAAhH,MAAgH,SAAhH,MAAgH;AAAA,QAAxG,KAAwG,SAAxG,KAAwG;AAAA,QAAjG,cAAiG,SAAjG,cAAiG;AAAA,QAAjF,kBAAiF,SAAjF,kBAAiF;AAAA,QAA7D,oBAA6D,SAA7D,oBAA6D;AAAA,QAAvC,gBAAuC,SAAvC,gBAAuC;AAAA,QAArB,iBAAqB,SAArB,iBAAqB;;AAC5K,qBAAiB,kBAAkB,CAAnC;AACA,QAAI,KAAK,KAAK,CAAL,IAAU,CAAV,GAAc,cAAvB;AACA,QAAI,KAAK,KAAK,CAAL,IAAU,CAAV,GAAc,cAAvB;AACA,QAAI,UAAU,CACV,CAAC,CAAC,EAAF,EAAM,CAAC,EAAP,CADU,EAEV,CAAC,EAAD,EAAK,CAAC,EAAN,CAFU,EAGV,CAAC,EAAD,EAAK,EAAL,CAHU,EAIV,CAAC,CAAC,EAAF,EAAM,EAAN,CAJU,CAAd;;AAOA,QAAI,kBAAkB,YAAY,eAAlC;AACA,QAAI,iBAAiB,YAAY,YAAjC;;AAEA,QAAI,kBAAJ;AACA,QAAI,cAAJ,EAAoB;AAChB,6BAAqB,sBAAsB,CAA3C;;AADgB,oBAGmB,qCAHnB;AAAA;AAAA,YAGX,KAHW;AAAA,YAGJ,KAHI;AAAA,YAGG,KAHH;AAAA,YAGU,KAHV;;AAKhB,oBAAY,CACR,CAAC,KAAD,EAAQ,KAAR,CADQ,EAER,CAAC,KAAD,EAAQ,KAAR,CAFQ,EAGR,CAAC,KAAD,EAAQ,KAAR,CAHQ,EAIR,CAAC,KAAD,EAAQ,KAAR,CAJQ,CAAZ;AAMH;;AAED,QAAI,aAAa,CAAjB;AACA,QAAI,aAAa,OAAO,MAAxB;AACA,SAAK,IAAI,IAAE,CAAX,EAAc,IAAI,UAAlB,EAA8B,GAA9B,EAAmC;AAC/B,YAAI,QAAQ,OAAO,CAAP,CAAZ;;AAEA,aAAK,IAAI,MAAI,CAAb,EAAgB,MAAM,CAAtB,EAAyB,KAAzB,EAAgC;AAC5B;AACA,gBAAI,cAAJ,EAAoB;AAChB,gCAAgB,iBAAiB,CAAjC,IAAsC,UAAU,GAAV,EAAe,CAAf,IAAoB,kBAA1D;AACA,gCAAgB,iBAAiB,CAAjC,IAAsC,UAAU,GAAV,EAAe,CAAf,IAAoB,kBAA1D;AACH;;AAED,4BAAgB,iBAAiB,CAAjC,IAAsC,MAAM,CAAN,CAAtC;AACA,4BAAgB,iBAAiB,CAAjC,IAAsC,MAAM,CAAN,CAAtC;;AAEA,4BAAgB,cAAc,CAA9B,IAAmC,QAAQ,GAAR,EAAa,CAAb,CAAnC;AACA,4BAAgB,cAAc,CAA9B,IAAmC,QAAQ,GAAR,EAAa,CAAb,CAAnC;AACA,4BAAgB,cAAc,CAA9B,IAAmC,KAAnC;;AAEA,4BAAgB,eAAe,CAA/B,IAAoC,OAAO,CAAP,CAApC;AACA,4BAAgB,eAAe,CAA/B,IAAoC,OAAO,CAAP,CAApC;;AAEA,gBAAI,KAAJ,EAAU;AACN;AACA;AACA;AACA,gCAAgB,mBAAmB,CAAnC,IAAwC,uBAAuB,WAAW,CAAX,CAA/D;AACA,gCAAgB,mBAAmB,CAAnC,IAAwC,uBAAuB,WAAW,CAAX,CAA/D;AACA,gCAAgB,mBAAmB,CAAnC,IAAwC,uBAAuB,WAAW,CAAX,CAA/D;AACA,gCAAgB,mBAAmB,CAAnC,IAAwC,uBAAuB,WAAW,CAAX,CAA/D;;AAEA;AACA;AACA;AACA,gCAAgB,eAAe,CAA/B,IAAoC,mBAAmB,OAAO,CAAP,CAAvD;AACA,gCAAgB,eAAe,CAA/B,IAAoC,mBAAmB,OAAO,CAAP,CAAvD;AACA,gCAAgB,eAAe,CAA/B,IAAoC,mBAAmB,OAAO,CAAP,CAAvD;AACA,gCAAgB,eAAe,CAA/B,IAAoC,mBAAmB,OAAO,CAAP,CAAvD;;AAEA;AACA;AACA,gCAAgB,gBAAgB,CAAhC,IAAqC,oBAAoB,QAAQ,CAAR,CAAzD;AACA,gCAAgB,gBAAgB,CAAhC,IAAqC,oBAAoB,QAAQ,CAAR,CAAzD;AACA,gCAAgB,gBAAgB,CAAhC,IAAqC,oBAAoB,QAAQ,CAAR,CAAzD;AACA,gCAAgB,gBAAgB,CAAhC,IAAqC,oBAAoB,QAAQ,CAAR,CAAzD;AACH;;AAED,wBAAY,SAAZ,CAAsB,eAAtB;AACH;;AAED,wBAAgB,IAAhB,CAAqB,iBAAiB,CAAtC;AACA,wBAAgB,IAAhB,CAAqB,iBAAiB,CAAtC;AACA,wBAAgB,IAAhB,CAAqB,iBAAiB,CAAtC;AACA,wBAAgB,IAAhB,CAAqB,iBAAiB,CAAtC;AACA,wBAAgB,IAAhB,CAAqB,iBAAiB,CAAtC;AACA,wBAAgB,IAAhB,CAAqB,iBAAiB,CAAtC;;AAEA,0BAAkB,CAAlB;AACA,sBAAc,CAAd;AACH;;AAED,WAAO,UAAP;AACH;;;;;;;;;ypBClGD;;;QAWgB,a,GAAA,a;QAyDA,qB,GAAA,qB;QA2GA,kB,GAAA,kB;;AA9KhB;;;;AACA;;;;AACA;;AAEA;;;;;;AAEA,IAAM,UAAU,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAAhB;;AAEA;AACA;AACO,SAAS,aAAT,CACH,QADG,EAEH,WAFG,EAEU,eAFV,QAGqD;AAAA,QAAtD,cAAsD,QAAtD,cAAsD;AAAA,QAAtC,cAAsC,QAAtC,cAAsC;AAAA,QAAtB,kBAAsB,QAAtB,kBAAsB;;;AAExD,QAAI,kBAAkB,YAAY,eAAlC;;AAEA,QAAI,cAAJ,EAAoB;AAChB,6BAAqB,sBAAsB,CAA3C;;AADgB,oBAEmB,qCAFnB;AAAA;AAAA,YAEX,KAFW;AAAA,YAEJ,KAFI;AAAA,YAEG,KAFH;AAAA,YAEU,KAFV;AAGnB;;AAED,QAAI,aAAa,CAAjB;AACA,QAAI,eAAe,SAAS,MAA5B;AACA,SAAK,IAAI,IAAE,CAAX,EAAc,IAAI,YAAlB,EAAgC,GAAhC,EAAqC;AACjC,YAAI,iBAAiB,YAAY,YAAjC;;AAEA,YAAI,UAAU,SAAS,CAAT,CAAd;;AAEA;AACA,YAAI,cAAJ,EAAoB;AAAA,uCACmB,cAAI,eAAJ,CAAoB,OAApB,CADnB;AAAA;AAAA,gBACX,KADW;AAAA,gBACJ,KADI;AAAA,gBACG,KADH;AAAA,gBACU,KADV;;AAEhB,gBAAI,SAAS,QAAQ,KAArB;AACA,gBAAI,SAAS,QAAQ,KAArB;AACA,gBAAI,UAAU,CAAC,QAAQ,KAAT,IAAkB,MAAhC;AACA,gBAAI,UAAU,CAAC,QAAQ,KAAT,IAAkB,MAAhC;AACH;;AAED,aAAK,IAAI,aAAa,CAAtB,EAAyB,aAAa,QAAQ,MAA9C,EAAsD,YAAtD,EAAmE;AAC/D;AACA,gBAAI,eAAe,QAAQ,UAAR,CAAnB;AACA,iBAAK,IAAI,IAAI,CAAb,EAAgB,IAAI,aAAa,MAAjC,EAAyC,GAAzC,EAA8C;AAC1C,oBAAI,SAAS,aAAa,CAAb,CAAb;AACA,gCAAgB,CAAhB,IAAqB,OAAO,CAAP,CAArB;AACA,gCAAgB,CAAhB,IAAqB,OAAO,CAAP,CAArB;;AAEA;AACA,oBAAI,cAAJ,EAAoB;AAChB,oCAAgB,iBAAiB,CAAjC,IAAsC,CAAC,CAAC,OAAO,CAAP,IAAY,KAAb,IAAsB,OAAtB,GAAgC,KAAjC,IAA0C,kBAAhF;AACA,oCAAgB,iBAAiB,CAAjC,IAAsC,CAAC,CAAC,OAAO,CAAP,IAAY,KAAb,IAAsB,OAAtB,GAAgC,KAAjC,IAA0C,kBAAhF;AACH;;AAED,4BAAY,SAAZ,CAAsB,eAAtB;AACH;AACJ;;AAED;AACA,YAAI,UAAU,mBAAmB,iBAAO,OAAP,CAAe,OAAf,CAAnB,CAAd;AACA,aAAK,IAAI,KAAI,CAAb,EAAgB,KAAI,QAAQ,MAA5B,EAAoC,IAApC,EAAwC;AACpC,4BAAgB,IAAhB,CAAqB,iBAAiB,QAAQ,EAAR,CAAtC;AACH;AACD,sBAAc,QAAQ,MAAR,GAAe,CAA7B;AACH;AACD,WAAO,UAAP;AACH;;AAED;AACO,SAAS,qBAAT,CACH,QADG,EAEH,CAFG,EAEA,MAFA,EAEQ,UAFR,EAGH,WAHG,EAGU,eAHV,EAIH,YAJG,EAKH,gBALG,SAaA;AAAA,QANC,iBAMD,SANC,iBAMD;AAAA,QALC,mBAKD,SALC,mBAKD;AAAA,QAJC,cAID,SAJC,cAID;AAAA,QAHC,cAGD,SAHC,cAGD;AAAA,QAFC,kBAED,SAFC,kBAED;AAAA,QADC,OACD,SADC,OACD;;;AAEH;AACA,QAAI,QAAQ,KAAK,cAAc,CAAnB,CAAZ;AACA,QAAI,QAAQ,IAAI,MAAhB;AACA,oBAAgB,CAAhB,IAAqB,KAArB;AACA,QAAI,aAAa,cAAc,QAAd,EAAwB,WAAxB,EAAqC,eAArC,EAAsD,EAAE,8BAAF,EAAkB,8BAAlB,EAAkC,sCAAlC,EAAtD,CAAjB;;AAEA,QAAI,kBAAkB,YAAY,eAAlC;AACA,QAAI,iBAAiB,YAAY,YAAjC;;AAEA;AACA;AACA,QAAI,cAAJ,EAAoB;AAChB,6BAAqB,sBAAsB,CAA3C;;AADgB,oBAEmB,qCAFnB;AAAA;AAAA,YAEX,KAFW;AAAA,YAEJ,KAFI;AAAA,YAEG,KAFH;AAAA,YAEU,KAFV;;AAGhB,YAAI,YAAY,CACZ,CAAC,KAAD,EAAQ,KAAR,CADY,EAEZ,CAAC,KAAD,EAAQ,KAAR,CAFY,EAGZ,CAAC,KAAD,EAAQ,KAAR,CAHY,EAIZ,CAAC,KAAD,EAAQ,KAAR,CAJY,CAAhB;AAMH;;AAED,QAAI,eAAe,SAAS,MAA5B;AACA,SAAK,IAAI,IAAE,CAAX,EAAc,IAAI,YAAlB,EAAgC,GAAhC,EAAqC;AACjC,YAAI,UAAU,SAAS,CAAT,CAAd;;AAEA,aAAK,IAAI,IAAE,CAAX,EAAc,IAAI,QAAQ,MAA1B,EAAkC,GAAlC,EAAuC;AACnC,gBAAI,UAAU,QAAQ,CAAR,CAAd;;AAEA,iBAAK,IAAI,IAAE,CAAX,EAAc,IAAI,QAAQ,MAAR,GAAiB,CAAnC,EAAsC,GAAtC,EAA2C;AACvC,oBAAI,qBAAqB,yBAAY,QAAQ,CAAR,CAAZ,EAAwB,QAAQ,IAAE,CAAV,CAAxB,EAAsC,mBAAtC,CAAzB,EAAqF;AACjF,6BADiF,CACvE;AACb;;AAED;AACA,oBAAI,WAAJ;AAAA,oBAAQ,WAAR;AACA,oBAAI,YAAY,KAAhB,EAAuB;AACnB,yBAAK,CAAL;AACA,yBAAK,IAAE,CAAP;AACH,iBAHD,MAIK;AACD,yBAAK,IAAE,CAAP;AACA,yBAAK,CAAL;AACH;;AAED;AACA,oBAAI,gBAAgB,CAChB,CAAC,QAAQ,EAAR,EAAY,CAAZ,CAAD,EAAiB,QAAQ,EAAR,EAAY,CAAZ,CAAjB,EAAiC,KAAjC,CADgB,EAEhB,CAAC,QAAQ,EAAR,EAAY,CAAZ,CAAD,EAAiB,QAAQ,EAAR,EAAY,CAAZ,CAAjB,EAAiC,KAAjC,CAFgB,EAGhB,CAAC,QAAQ,EAAR,EAAY,CAAZ,CAAD,EAAiB,QAAQ,EAAR,EAAY,CAAZ,CAAjB,EAAiC,KAAjC,CAHgB,EAIhB,CAAC,QAAQ,EAAR,EAAY,CAAZ,CAAD,EAAiB,QAAQ,EAAR,EAAY,CAAZ,CAAjB,EAAiC,KAAjC,CAJgB,CAApB;;AAOA;AACA,oBAAI,WAAW,iBAAO,SAAP,CAAiB,CAAC,QAAQ,EAAR,EAAY,CAAZ,IAAiB,QAAQ,EAAR,EAAY,CAAZ,CAAlB,EAAkC,QAAQ,EAAR,EAAY,CAAZ,IAAiB,QAAQ,EAAR,EAAY,CAAZ,CAAnD,EAAmE,CAAnE,CAAjB,CAAf;AACA,oBAAI,SAAS,iBAAO,KAAP,CAAa,OAAb,EAAsB,QAAtB,CAAb;;AAEA;AACA,gCAAgB,eAAe,CAA/B,IAAoC,OAAO,CAAP,IAAY,gBAAhD;AACA,gCAAgB,eAAe,CAA/B,IAAoC,OAAO,CAAP,IAAY,gBAAhD;AACA,gCAAgB,eAAe,CAA/B,IAAoC,OAAO,CAAP,IAAY,gBAAhD;;AAEA,qBAAK,IAAI,KAAG,CAAZ,EAAe,KAAK,cAAc,MAAlC,EAA0C,IAA1C,EAAgD;AAC5C,oCAAgB,CAAhB,IAAqB,cAAc,EAAd,EAAkB,CAAlB,CAArB;AACA,oCAAgB,CAAhB,IAAqB,cAAc,EAAd,EAAkB,CAAlB,CAArB;AACA,oCAAgB,CAAhB,IAAqB,cAAc,EAAd,EAAkB,CAAlB,CAArB;;AAEA,wBAAI,cAAJ,EAAoB;AAChB,wCAAgB,iBAAiB,CAAjC,IAAsC,UAAU,EAAV,EAAc,CAAd,IAAmB,kBAAzD;AACA,wCAAgB,iBAAiB,CAAjC,IAAsC,UAAU,EAAV,EAAc,CAAd,IAAmB,kBAAzD;AACH;;AAED,gCAAY,SAAZ,CAAsB,eAAtB;AACH;;AAED,gCAAgB,IAAhB,CAAqB,iBAAiB,CAAtC;AACA,gCAAgB,IAAhB,CAAqB,iBAAiB,CAAtC;AACA,gCAAgB,IAAhB,CAAqB,iBAAiB,CAAtC;AACA,gCAAgB,IAAhB,CAAqB,iBAAiB,CAAtC;AACA,gCAAgB,IAAhB,CAAqB,iBAAiB,CAAtC;AACA,gCAAgB,IAAhB,CAAqB,iBAAiB,CAAtC;;AAEA,kCAAkB,CAAlB;AACA,8BAAc,CAAd;AACH;AACJ;AACJ;AACD,WAAO,UAAP;AACH;;AAED;AACA;AACO,SAAS,kBAAT,CAA6B,IAA7B,EAAmC;AACtC,WAAO,sBAAO,KAAK,QAAZ,EAAsB,KAAK,KAA3B,EAAkC,KAAK,UAAvC,CAAP;AACH;;;;;;;;QClJe,c,GAAA,c;;AA7BhB;;;;AACA;;;;AACA;;;;AAEA,IAAM,YAAY,CAAC,CAAD,EAAI,CAAJ,CAAlB;;AAEA;AARA;;AASA,IAAM,WAAW;AACb,UAAM,CADO;AAEb,YAAQ,CAFK;AAGb,WAAO;AAHM,CAAjB;;AAMA,IAAM,YAAY;AACd,WAAO,CADO;AAEd,WAAO,CAFO;AAGd,WAAO;AAHO,CAAlB;;AAMA,IAAM,UAAU;AACZ,iBAAa,CADD;AAEZ,wBAAoB,CAFR;AAGZ,oBAAgB,CAHJ;AAIZ,mBAAe,CAJH,CAIY;AAJZ,CAAhB;;AAOA;AACA,IAAM,iBAAiB,cAAI,UAA3B;;AAEO,SAAS,cAAT,CAAyB,KAAzB,EAAgC,KAAhC,EAAuC,WAAvC,EAAoD,eAApD,QAcA;AAAA,QAZC,cAYD,QAZC,cAYD;AAAA,QAXC,iBAWD,QAXC,iBAWD;AAAA,QAVC,mBAUD,QAVC,mBAUD;AAAA,QATC,cASD,QATC,cASD;AAAA,QARC,cAQD,QARC,cAQD;AAAA,QAPC,cAOD,QAPC,cAOD;AAAA,QANC,cAMD,QANC,cAMD;AAAA,QALC,kBAKD,QALC,kBAKD;AAAA,QAJC,aAID,QAJC,aAID;AAAA,QAHC,iBAGD,QAHC,iBAGD;AAAA,QAFC,IAED,QAFC,IAED;AAAA,QAFO,GAEP,QAFO,GAEP;AAAA,QADC,WACD,QADC,WACD;;;AAEH,QAAI,WAAW,MAAM,SAAS,GAAT,CAAN,GAAsB,SAAS,IAA9C;AACA,QAAI,YAAY,OAAO,UAAU,IAAV,CAAP,GAAyB,UAAU,KAAnD;;AAEA;AACA,QAAI,cAAc,UAAU,KAA5B,EAAmC;AAC/B,sBAAc,eAAe,QAAQ,WAArC,CAD+B,CACmB;AAClD,YAAI,eAAe,cAAc,WAAjC;AACH;;AAED;AACA,QAAI,OAAJ;AACA,QAAI,cAAJ,EAAoB;AAChB,6BAAqB,sBAAsB,QAAQ,kBAAnD;AACA,yBAAiB,kBAAkB,QAAQ,cAA3C;AACA,kBAAU,KAAK,iBAAiB,cAAjB,GAAkC,cAAvC,CAAV,CAHgB,CAGkD;AACrE;;AAED;AACA,QAAI,UAAU;AACV,sCADU;AAEV,4CAFU;AAGV,gDAHU;AAIV,kCAJU;AAKV,4BALU;AAMV,0BANU;AAOV,gCAPU;AAQV,wCARU;AASV,oBAAY,QAAQ,CATV;AAUV,oCAVU;AAWV,4CAXU;AAYV,wBAZU;AAaV,sCAbU;AAcV,sCAdU;AAeV,8CAfU;AAgBV,oBAAY;AAhBF,KAAd;;AAmBA;AACA,QAAI,cAAc,EAAlB;;AAEA;AACA,SAAK,IAAI,QAAQ,CAAjB,EAAoB,QAAQ,MAAM,MAAlC,EAA0C,OAA1C,EAAmD;AAC/C,sBAAc,MAAM,KAAN,CAAd,EAA4B,OAA5B,EAAqC,WAArC;AACH;;AAED;AACA,SAAK,IAAI,SAAQ,CAAjB,EAAoB,SAAQ,YAAY,MAAxC,EAAgD,QAAhD,EAAyD;AACrD,sBAAc,YAAY,MAAZ,CAAd,EAAkC,OAAlC,EAA2C,WAA3C;AACH;;AAED,WAAO,QAAQ,UAAf;AACH;;AAED,SAAS,aAAT,CAAuB,IAAvB,EAA6B,OAA7B,EAAsC,WAAtC,EAAkD;AAC9C;AACA,QAAI,KAAK,MAAL,GAAc,CAAlB,EAAqB;AACjB;AACH;;AAJ6C,QAMzC,SANyC,GAM6D,OAN7D,CAMzC,SANyC;AAAA,QAM9B,QAN8B,GAM6D,OAN7D,CAM9B,QAN8B;AAAA,QAMpB,cANoB,GAM6D,OAN7D,CAMpB,cANoB;AAAA,QAMJ,iBANI,GAM6D,OAN7D,CAMJ,iBANI;AAAA,QAMe,mBANf,GAM6D,OAN7D,CAMe,mBANf;AAAA,QAMoC,OANpC,GAM6D,OAN7D,CAMoC,OANpC;AAAA,QAM6C,YAN7C,GAM6D,OAN7D,CAM6C,YAN7C;;AAQ9C;AACA;AACA;;AACA,QAAI,kBAAkB,cAAc,UAAU,KAA9C,EAAqD;AACjD,YAAI,gBAAgB,qBAAqB,IAArB,CAApB;AACA,YAAI,kBAAkB,CAAtB,EAAyB;AACrB;AACA,gBAAI,eAAe,YAAY,IAAZ,EAAkB,aAAlB,CAAnB;AACA,wBAAY,IAAZ,CAAiB,YAAjB;AACA;AACH;AACJ;;AAED,QAAI,SAAJ,EAAe,SAAf,EAA0B,QAA1B,EAAoC,QAApC;AACA,QAAI,IAAI,CAAR,CAtB8C,CAsBnC;;AAEX,QAAI,cAAc,CAAlB;AACA,QAAI,YAAY,KAAK,MAAL,GAAc,CAA9B;AACA,QAAI,wBAAwB,CAA5B;;AAEA;AACA;AACA,gBAAY,KAAK,WAAL,CAAZ;AACA,gBAAY,KAAK,cAAc,CAAnB,CAAZ;AACA,WAAO,iBAAO,OAAP,CAAe,SAAf,EAA0B,SAA1B,CAAP,EAA6C;AACzC;AACA,oBAAY,SAAZ;AACA,oBAAY,KAAK,cAAc,CAAnB,CAAZ;AACA;AACA,YAAI,gBAAgB,KAAK,MAAL,GAAc,CAAlC,EAAqC;AACjC;AACH;AACJ;;AAED;AACA,WAAO,iBAAO,OAAP,CAAe,KAAK,SAAL,CAAf,EAAgC,KAAK,YAAY,CAAjB,CAAhC,CAAP,EAA6D;AACzD;AACA;AACA,YAAI,cAAc,CAAlB,EAAqB;AACjB;AACH;AACJ;;AAED,QAAI,KAAK,MAAL,GAAc,IAAI,qBAAtB,EAA6C;AACzC;AACH;;AAED,eAAW,iBAAO,SAAP,CAAiB,iBAAO,IAAP,CAAY,SAAZ,EAAuB,SAAvB,CAAjB,CAAX;;AAEA;AACA,QAAI,qBAAqB,yBAAY,SAAZ,EAAuB,SAAvB,EAAkC,mBAAlC,CAAzB,EAAiF;AAC7E,YAAI,qBAAqB,0BAA0B,IAA1B,EAAgC,WAAhC,EAA6C,mBAA7C,CAAzB;AACA,YAAI,kBAAJ,EAAwB;AACpB,wBAAY,IAAZ,CAAiB,kBAAjB;AACH;AACD;AACH;;AAED,QAAI,cAAJ,EAAmB;AACf;AACA,mBAAW,iBAAO,SAAP,CAAiB,iBAAO,IAAP,CAAY,KAAK,YAAY,CAAjB,CAAZ,EAAiC,SAAjC,CAAjB,CAAX;AACA,qBAAa,SAAb,EAAwB,QAAxB,EAAkC,QAAlC,EAA4C,SAA5C,EAAuD,OAAvD;AACH,KAJD,MAKK;AACD;AACA,YAAI,CAAC,gCAAmB,SAAnB,CAAL,EAAoC;AAChC,mBAAO,SAAP,EAAkB,CAAlB,EAAqB,QAArB,EAA+B,QAA/B,EAAyC,IAAzC,EAA+C,OAA/C;AACA,gBAAI,aAAa,SAAS,IAA1B,EAAgC;AAC5B,qBAAK,MAAM,OAAN,GAAgB,QAAQ,cAA7B;AACH;AACJ;;AAED;AACA,kBAAU,SAAV,EAAqB,QAArB,EAA+B,CAAC,CAAD,EAAI,CAAJ,CAA/B,EAAuC,OAAvC;AACA,kBAAU,SAAV,EAAqB,iBAAO,GAAP,CAAW,QAAX,CAArB,EAA2C,CAAC,CAAD,EAAI,CAAJ,CAA3C,EAAmD,OAAnD;AACH;;AAED;AACA,SAAK,UAAU,iBAAO,MAAP,CAAc,iBAAO,GAAP,CAAW,SAAX,EAAsB,SAAtB,CAAd,CAAf;AACA,SAAK,IAAI,IAAI,cAAc,CAA3B,EAA8B,IAAI,SAAlC,EAA6C,GAA7C,EAAkD;AAC9C,YAAI,YAAY,CAAhB;AACA,YAAI,YAAY,IAAI,CAApB;AACA,oBAAY,KAAK,SAAL,CAAZ;AACA,oBAAY,KAAK,SAAL,CAAZ;;AAEA;AACA,YAAI,iBAAO,OAAP,CAAe,SAAf,EAA0B,SAA1B,CAAJ,EAA0C;AACtC;AACH;;AAED;AACA,YAAI,qBAAqB,yBAAY,SAAZ,EAAuB,SAAvB,EAAkC,mBAAlC,CAAzB,EAAiF;AAC7E,sBAAU,SAAV,EAAqB,QAArB,EAA+B,CAAC,CAAD,EAAI,CAAJ,CAA/B,EAAuC,OAAvC;AACA,sBAAU,SAAV,EAAqB,iBAAO,GAAP,CAAW,QAAX,CAArB,EAA2C,CAAC,CAAD,EAAI,CAAJ,CAA3C,EAAmD,OAAnD;AACA,uBAAW,CAAX,EAAc,OAAd;;AAEA,gBAAI,mBAAmB,0BAA0B,IAA1B,EAAgC,YAAY,CAA5C,EAA+C,mBAA/C,CAAvB;AACA,gBAAI,gBAAJ,EAAsB;AAClB,4BAAY,IAAZ,CAAiB,gBAAjB;AACH;AACD;AACH;;AAED,mBAAW,QAAX;AACA,mBAAW,iBAAO,SAAP,CAAiB,iBAAO,IAAP,CAAY,SAAZ,EAAuB,SAAvB,CAAjB,CAAX;;AAEA;AACA,YAAI,cAAc,UAAU,KAA5B,EAAmC;AAC/B,qBAAS,CAAT,EAAY,SAAZ,EAAuB,QAAvB,EAAiC,QAAjC,EAA2C,YAA3C,EAAyD,KAAzD,EAAgE,OAAhE;AACH,SAFD,MAGK;AACD,oBAAQ,SAAR,EAAmB,CAAnB,EAAsB,SAAtB,EAAiC,QAAjC,EAA2C,QAA3C,EAAqD,KAArD,EAA4D,OAA5D;AACH;;AAED,aAAK,UAAU,iBAAO,MAAP,CAAc,iBAAO,GAAP,CAAW,SAAX,EAAsB,SAAtB,CAAd,CAAf;AACH;;AAED;AACA,gBAAY,SAAZ;AACA,eAAW,QAAX;;AAEA,QAAI,cAAJ,EAAoB;AAChB;AACA,mBAAW,iBAAO,SAAP,CAAiB,iBAAO,IAAP,CAAY,SAAZ,EAAuB,KAAK,CAAL,CAAvB,CAAjB,CAAX;AACA,mBAAW,SAAX,EAAsB,QAAtB,EAAgC,QAAhC,EAA0C,SAA1C,EAAqD,CAArD,EAAwD,OAAxD;AACH,KAJD,MAKK;AACD;AACA,kBAAU,SAAV,EAAqB,QAArB,EAA+B,CAAC,CAAD,EAAI,CAAJ,CAA/B,EAAuC,OAAvC;AACA,kBAAU,SAAV,EAAqB,iBAAO,GAAP,CAAW,QAAX,CAArB,EAA2C,CAAC,CAAD,EAAI,CAAJ,CAA3C,EAAmD,OAAnD;AACA,mBAAW,CAAX,EAAc,OAAd;;AAEA;AACA,YAAI,CAAC,gCAAmB,SAAnB,CAAL,EAAoC;AAChC,mBAAO,SAAP,EAAkB,CAAlB,EAAqB,QAArB,EAA+B,QAA/B,EAAyC,KAAzC,EAAgD,OAAhD;AACH;AACJ;AACJ;;AAED,SAAS,oBAAT,CAA8B,IAA9B,EAAmC;AAC/B,QAAI,gCAAmB,KAAK,CAAL,CAAnB,CAAJ,EAAiC;AAC7B,eAAO,CAAP;AACH;;AAED,SAAK,IAAI,YAAY,CAArB,EAAwB,YAAY,KAAK,MAAzC,EAAiD,WAAjD,EAA8D;AAC1D,YAAI,YAAY,KAAK,KAAK,MAAL,GAAc,CAAd,GAAkB,SAAvB,CAAhB;AACA,YAAI,gCAAmB,SAAnB,CAAJ,EAAmC;AAC/B,mBAAO,KAAK,MAAL,GAAc,CAAd,GAAkB,SAAzB;AACH;AACJ;;AAED,WAAO,CAAP;AACH;;AAED;AACA,SAAS,yBAAT,CAAoC,IAApC,EAA0C,UAA1C,EAAsD,SAAtD,EAAiE;AAC7D,QAAI,WAAW,UAAf;AACA,WAAO,KAAK,WAAW,CAAhB,KAAsB,yBAAY,KAAK,QAAL,CAAZ,EAA4B,KAAK,WAAW,CAAhB,CAA5B,EAAgD,SAAhD,CAA7B,EAAyF;AACrF;AACH;;AAED;AACA,WAAQ,KAAK,MAAL,GAAc,QAAd,IAA0B,CAA3B,GAAgC,KAAK,KAAL,CAAW,QAAX,CAAhC,GAAuD,KAA9D;AACH;;AAED;AACA,SAAS,YAAT,CAAsB,SAAtB,EAAiC,QAAjC,EAA2C,QAA3C,EAAqD,SAArD,EAAgE,OAAhE,EAAwE;AACpE;AACA,QAAI,cAAc,SAAd,IAA2B,gCAAmB,SAAnB,CAA/B,EAA8D;AAC1D,kBAAU,SAAV,EAAqB,QAArB,EAA+B,CAAC,CAAD,EAAI,CAAJ,CAA/B,EAAuC,OAAvC;AACA,kBAAU,SAAV,EAAqB,iBAAO,GAAP,CAAW,QAAX,CAArB,EAA2C,CAAC,CAAD,EAAI,CAAJ,CAA3C,EAAmD,OAAnD;AACH,KAHD,MAIK;AACD;AACA,YAAI,IAAI,CAAR;AACA,YAAI,cAAc,UAAU,KAA5B,EAAmC;AAC/B,qBAAS,CAAT,EAAY,SAAZ,EAAuB,QAAvB,EAAiC,QAAjC,EAA2C,QAAQ,YAAnD,EAAiE,IAAjE,EAAuE,OAAvE;AACH,SAFD,MAGK;AACD,oBAAQ,SAAR,EAAmB,CAAnB,EAAsB,SAAtB,EAAiC,QAAjC,EAA2C,QAA3C,EAAqD,IAArD,EAA2D,OAA3D;AACH;AACJ;AACJ;;AAED;AACA,SAAS,UAAT,CAAoB,SAApB,EAA+B,QAA/B,EAAyC,QAAzC,EAAmD,SAAnD,EAA8D,CAA9D,EAAiE,OAAjE,EAA0E;AACtE;AACA,QAAI,gCAAmB,SAAnB,CAAJ,EAAmC;AAC/B,kBAAU,SAAV,EAAqB,QAArB,EAA+B,CAAC,CAAD,EAAI,CAAJ,CAA/B,EAAuC,OAAvC;AACA,kBAAU,SAAV,EAAqB,iBAAO,GAAP,CAAW,QAAX,CAArB,EAA2C,CAAC,CAAD,EAAI,CAAJ,CAA3C,EAAmD,OAAnD;AACA,mBAAW,CAAX,EAAc,OAAd;AACH,KAJD,MAKK;AACD;AACA,YAAI,WAAW,eAAe,QAAf,EAAyB,QAAzB,CAAf;;AAEA,YAAI,cAAc,UAAU,KAAxB,IAAiC,iBAAO,QAAP,CAAgB,QAAhB,IAA4B,QAAQ,YAAzE,EAAuF;AACnF,wBAAY,UAAU,KAAtB,CADmF,CACtD;AAChC;;AAED,YAAI,cAAc,UAAU,KAA5B,EAAmC;AAC/B,sBAAU,SAAV,EAAqB,QAArB,EAA+B,CAAC,CAAD,EAAI,CAAJ,CAA/B,EAAuC,OAAvC;AACA,sBAAU,SAAV,EAAqB,iBAAO,GAAP,CAAW,QAAX,CAArB,EAA2C,CAAC,CAAD,EAAI,CAAJ,CAA3C,EAAmD,OAAnD;AACA,uBAAW,CAAX,EAAc,OAAd;AACH,SAJD,MAKK;AACD,sBAAU,SAAV,EAAqB,QAArB,EAA+B,CAAC,CAAD,EAAI,CAAJ,CAA/B,EAAuC,OAAvC;AACA,sBAAU,SAAV,EAAqB,iBAAO,GAAP,CAAW,QAAX,CAArB,EAA2C,CAAC,CAAD,EAAI,CAAJ,CAA3C,EAAmD,OAAnD;AACA,uBAAW,CAAX,EAAc,OAAd;AACH;AACJ;AACJ;;AAED,SAAS,cAAT,CAAwB,QAAxB,EAAkC,QAAlC,EAA4C;AACxC,QAAI,WAAW,iBAAO,SAAP,CAAiB,iBAAO,GAAP,CAAW,QAAX,EAAqB,QAArB,CAAjB,CAAf;AACA,QAAI,QAAQ,KAAK,IAAI,KAAK,GAAL,CAAS,iBAAO,GAAP,CAAW,QAAX,EAAqB,QAArB,CAAT,CAAT,CAAZ;AACA,WAAO,iBAAO,IAAP,CAAY,QAAZ,EAAsB,QAAQ,KAA9B,CAAP;AACH;;AAED;AACA,SAAS,QAAT,CAAmB,CAAnB,EAAsB,SAAtB,EAAiC,QAAjC,EAA2C,QAA3C,EAAqD,YAArD,EAAmE,WAAnE,EAAgF,OAAhF,EAAyF;AACrF,QAAI,WAAW,eAAe,QAAf,EAAyB,QAAzB,CAAf;;AAEA;AACA,QAAI,iBAAO,QAAP,CAAgB,QAAhB,IAA4B,YAAhC,EAA8C;AAC1C,gBAAQ,UAAU,KAAlB,EAAyB,CAAzB,EAA4B,SAA5B,EAAuC,QAAvC,EAAiD,QAAjD,EAA2D,WAA3D,EAAwE,OAAxE;AACH,KAFD,MAGK;AACD,kBAAU,SAAV,EAAqB,QAArB,EAA+B,CAAC,CAAD,EAAI,CAAJ,CAA/B,EAAuC,OAAvC;AACA,kBAAU,SAAV,EAAqB,iBAAO,GAAP,CAAW,QAAX,CAArB,EAA2C,CAAC,CAAD,EAAI,CAAJ,CAA3C,EAAmD,OAAnD;AACA,YAAI,CAAC,WAAL,EAAkB;AACd,uBAAW,CAAX,EAAc,OAAd;AACH;AACJ;AACJ;;AAED;AACA,SAAS,OAAT,CAAiB,SAAjB,EAA4B,CAA5B,EAA+B,SAA/B,EAA0C,QAA1C,EAAoD,QAApD,EAA8D,WAA9D,EAA2E,OAA3E,EAAoF;AAChF,QAAI,WAAW,eAAe,QAAf,EAAyB,QAAzB,CAAf;AACA,QAAI,cAAe,SAAS,CAAT,IAAc,SAAS,CAAT,CAAd,GAA4B,SAAS,CAAT,IAAc,SAAS,CAAT,CAA1C,GAAwD,CAA3E;;AAEA,QAAI,WAAJ,EAAgB;AACZ,kBAAU,SAAV,EAAqB,QAArB,EAA+B,CAAC,CAAD,EAAI,CAAJ,CAA/B,EAAuC,OAAvC;AACA,kBAAU,SAAV,EAAqB,iBAAO,GAAP,CAAW,QAAX,CAArB,EAA2C,CAAC,CAAD,EAAI,CAAJ,CAA3C,EAAmD,OAAnD;;AAEA,YAAI,CAAC,WAAL,EAAkB;AACd,uBAAW,CAAX,EAAc,OAAd;AACH;;AAED,YAAI,cAAc,UAAU,KAA5B,EAAmC;AAC/B,qBAAS,SAAT,EACI,iBAAO,GAAP,CAAW,QAAX,CADJ,EAC0B,QAD1B,EACoC,iBAAO,GAAP,CAAW,QAAX,CADpC,EAEI,CAAC,CAAD,EAAI,CAAJ,CAFJ,EAEY,CAAC,CAAD,EAAI,CAAJ,CAFZ,EAEoB,CAAC,CAAD,EAAI,CAAJ,CAFpB,EAGI,OAHJ;AAKH,SAND,MAOK,IAAI,cAAc,UAAU,KAA5B,EAAmC;AACpC,mBAAO,SAAP,EACI,iBAAO,GAAP,CAAW,QAAX,CADJ,EAC0B,QAD1B,EACoC,iBAAO,GAAP,CAAW,QAAX,CADpC,EAEI,CAAC,CAAD,EAAI,CAAJ,CAFJ,EAEY,CAAC,CAAD,EAAI,CAAJ,CAFZ,EAEoB,CAAC,CAAD,EAAI,CAAJ,CAFpB,EAGI,KAHJ,EAGW,OAHX;AAKH;;AAED,kBAAU,SAAV,EAAqB,QAArB,EAA+B,CAAC,CAAD,EAAI,CAAJ,CAA/B,EAAuC,OAAvC;AACA,kBAAU,SAAV,EAAqB,iBAAO,GAAP,CAAW,QAAX,CAArB,EAA2C,CAAC,CAAD,EAAI,CAAJ,CAA3C,EAAmD,OAAnD;AACH,KAzBD,MA0BK;AACD,kBAAU,SAAV,EAAqB,QAArB,EAA+B,CAAC,CAAD,EAAI,CAAJ,CAA/B,EAAuC,OAAvC;AACA,kBAAU,SAAV,EAAqB,iBAAO,GAAP,CAAW,QAAX,CAArB,EAA2C,CAAC,CAAD,EAAI,CAAJ,CAA3C,EAAmD,OAAnD;;AAEA,YAAI,CAAC,WAAL,EAAkB;AACd,uBAAW,CAAX,EAAc,OAAd;AACH;;AAED,YAAI,cAAc,UAAU,KAA5B,EAAmC;AAC/B,qBAAS,SAAT,EACI,QADJ,EACc,iBAAO,GAAP,CAAW,QAAX,CADd,EACoC,QADpC,EAEI,CAAC,CAAD,EAAI,CAAJ,CAFJ,EAEY,CAAC,CAAD,EAAI,CAAJ,CAFZ,EAEoB,CAAC,CAAD,EAAI,CAAJ,CAFpB,EAGI,OAHJ;AAKH,SAND,MAOK,IAAI,cAAc,UAAU,KAA5B,EAAmC;AACpC,mBAAO,SAAP,EACI,QADJ,EACc,iBAAO,GAAP,CAAW,QAAX,CADd,EACoC,QADpC,EAEI,CAAC,CAAD,EAAI,CAAJ,CAFJ,EAEY,CAAC,CAAD,EAAI,CAAJ,CAFZ,EAEoB,CAAC,CAAD,EAAI,CAAJ,CAFpB,EAGI,KAHJ,EAGW,OAHX;AAKH;;AAED,kBAAU,SAAV,EAAqB,QAArB,EAA+B,CAAC,CAAD,EAAI,CAAJ,CAA/B,EAAuC,OAAvC;AACA,kBAAU,SAAV,EAAqB,iBAAO,GAAP,CAAW,QAAX,CAArB,EAA2C,CAAC,CAAD,EAAI,CAAJ,CAA3C,EAAmD,OAAnD;AACH;AACJ;;AAED;AACA,SAAS,UAAT,CAAoB,SAApB,EAA+B,OAA/B,EAAuC;AACnC,QAAI,kBAAkB,QAAQ,WAAR,CAAoB,eAA1C;AACA,QAAI,eAAe,QAAQ,WAAR,CAAoB,YAAvC;AACA,QAAI,SAAS,eAAe,IAAI,SAAnB,GAA+B,CAA5C;;AAEA,SAAK,IAAI,IAAI,CAAb,EAAgB,IAAI,SAApB,EAA+B,GAA/B,EAAmC;AAC/B,wBAAgB,IAAhB,CAAqB,SAAS,IAAI,CAAb,GAAiB,CAAtC;AACA,wBAAgB,IAAhB,CAAqB,SAAS,IAAI,CAAb,GAAiB,CAAtC;AACA,wBAAgB,IAAhB,CAAqB,SAAS,IAAI,CAAb,GAAiB,CAAtC;AACA,wBAAgB,IAAhB,CAAqB,SAAS,IAAI,CAAb,GAAiB,CAAtC;AACA,wBAAgB,IAAhB,CAAqB,SAAS,IAAI,CAAb,GAAiB,CAAtC;AACA,wBAAgB,IAAhB,CAAqB,SAAS,IAAI,CAAb,GAAiB,CAAtC;AACA,gBAAQ,UAAR,IAAsB,CAAtB;AACH;AACJ;;AAED,SAAS,SAAT,CAAmB,UAAnB,EAA+B,MAA/B,EAAuC,EAAvC,EAA2C,OAA3C,EAAoD;AAChD,QAAI,kBAAkB,QAAQ,eAA9B;AACA,QAAI,cAAc,QAAQ,WAA1B;;AAEA,wBAAoB,eAApB,EAAqC,UAArC,EAAiD,EAAjD,EAAqD,MAArD,EAA6D,OAA7D;AACA,gBAAY,SAAZ,CAAsB,eAAtB;AACH;;AAED,SAAS,mBAAT,CAA8B,eAA9B,EAA+C,MAA/C,EAAuD,aAAvD,EAAsE,KAAtE,EAA6E,OAA7E,EAAsF;AAClF;AACA,oBAAgB,CAAhB,IAAqB,OAAO,CAAP,CAArB;AACA,oBAAgB,CAAhB,IAAqB,OAAO,CAAP,CAArB;;AAEA;AACA,QAAI,QAAQ,cAAR,IAA0B,aAA9B,EAA6C;AACzC,wBAAgB,QAAQ,cAAR,GAAyB,CAAzC,IAA8C,cAAc,CAAd,IAAmB,QAAQ,kBAAzE;AACA,wBAAgB,QAAQ,cAAR,GAAyB,CAAzC,IAA8C,cAAc,CAAd,IAAmB,QAAQ,kBAAzE;AACH;;AAED;AACA,QAAI,QAAQ,aAAZ,EAA2B;AACvB,wBAAgB,QAAQ,aAAR,GAAwB,CAAxC,IAA6C,MAAM,CAAN,IAAW,QAAQ,iBAAhE;AACA,wBAAgB,QAAQ,aAAR,GAAwB,CAAxC,IAA6C,MAAM,CAAN,IAAW,QAAQ,iBAAhE;AACA,wBAAgB,QAAQ,aAAR,GAAwB,CAAxC,IAA6C,QAAQ,UAArD;AACH;AACJ;;AAED;AACA;AACA;AACA;AACA,SAAS,MAAT,CAAiB,KAAjB,EAAwB,EAAxB,EAA4B,EAA5B,EAAgC,EAAhC,EAAoC,GAApC,EAAyC,GAAzC,EAA8C,GAA9C,EAAmD,KAAnD,EAA0D,OAA1D,EAAmE;AAC/D,QAAI,QAAQ,GAAG,CAAH,IAAQ,GAAG,CAAH,CAAR,GAAgB,GAAG,CAAH,IAAQ,GAAG,CAAH,CAApC;AACA,QAAI,MAAM,iBAAO,GAAP,CAAW,EAAX,EAAe,EAAf,CAAV;;AAEA,QAAI,QAAQ,KAAK,KAAL,CAAW,KAAX,EAAkB,GAAlB,CAAZ;AACA,WAAO,SAAS,KAAK,EAArB,EAAyB;AACrB,iBAAS,IAAE,KAAK,EAAhB;AACH;;AAED,QAAI,eAAe,gBAAgB,KAAhB,EAAuB,QAAQ,UAA/B,CAAnB;AACA,QAAI,eAAe,CAAnB,EAAsB;AAClB;AACH;;AAED,QAAI,aAAa,QAAQ,WAAR,CAAoB,YAArC;AACA,QAAI,kBAAkB,QAAQ,WAAR,CAAoB,eAA1C;;AAEA,cAAU,KAAV,EAAiB,EAAjB,EAAqB,GAArB,EAA0B,OAA1B;AACA,cAAU,KAAV,EAAiB,EAAjB,EAAqB,GAArB,EAA0B,OAA1B;;AAEA,QAAI,QAAQ,EAAZ;;AAEA,QAAI,QAAQ,cAAR,KAA2B,SAA/B,EAA0C;AACtC,YAAI,MAAJ;AACA,YAAI,KAAJ,EAAU;AACN,qBAAS,EAAT;AACA,gBAAI,gBAAgB,iBAAO,GAAP,CAAW,GAAX,EAAgB,GAAhB,CAApB;AACH,SAHD,MAIK;AACD,qBAAS,iBAAO,GAAP,CAAW,GAAX,CAAT;AACA,gBAAI,WAAW,iBAAO,GAAP,CAAW,iBAAO,GAAP,CAAW,GAAX,EAAgB,GAAhB,CAAX,EAAiC,YAAjC,CAAf;AACH;AACJ;;AAED,QAAI,aAAa,QAAQ,YAAzB;AACA,SAAK,IAAI,IAAI,CAAb,EAAgB,IAAI,YAApB,EAAkC,GAAlC,EAAuC;AACnC,gBAAQ,iBAAO,GAAP,CAAW,KAAX,EAAkB,UAAlB,CAAR;;AAEA,YAAI,QAAQ,cAAR,KAA2B,SAA/B,EAA0C;AACtC,gBAAI,KAAJ,EAAU;AACN;AACA,gCAAgB,iBAAO,GAAP,CAAW,aAAX,EAA0B,UAA1B,CAAhB;AACA,uBAAO,CAAP,IAAY,cAAc,CAAd,IAAmB,IAAI,CAAJ,CAA/B;AACA,uBAAO,CAAP,IAAY,cAAc,CAAd,IAAmB,QAAQ,cAA3B,GAA4C,QAAQ,OAApD,GAA8D,IAAI,CAAJ,CAA1E,CAJM,CAI4E;AACrF,aALD,MAMK;AACD;AACA,yBAAS,iBAAO,GAAP,CAAW,MAAX,EAAmB,QAAnB,CAAT;AACH;AACJ;;AAED,kBAAU,KAAV,EAAiB,KAAjB,EAAwB,MAAxB,EAAgC,OAAhC;;AAEA,wBAAgB,IAAhB,CAAqB,aAAa,CAAb,IAAmB,QAAQ,CAAT,GAAc,CAAd,GAAkB,CAApC,CAArB;AACA,wBAAgB,IAAhB,CAAqB,UAArB;AACA,wBAAgB,IAAhB,CAAqB,aAAa,CAAb,IAAmB,QAAQ,CAAT,GAAc,CAAd,GAAkB,CAApC,CAArB;AACH;AACJ;;AAED;AACA;AACA;AACA;AACA;AACA,SAAS,QAAT,CAAmB,KAAnB,EAA0B,EAA1B,EAA8B,EAA9B,EAAkC,EAAlC,EAAsC,EAAtC,EAA0C,EAA1C,EAA8C,EAA9C,EAAkD,OAAlD,EAA2D;AACvD,QAAI,aAAa,QAAQ,WAAR,CAAoB,YAArC;;AAEA,cAAU,KAAV,EAAiB,EAAjB,EAAqB,EAArB,EAAyB,OAAzB;AACA,cAAU,KAAV,EAAiB,EAAjB,EAAqB,EAArB,EAAyB,OAAzB;AACA,cAAU,KAAV,EAAiB,EAAjB,EAAqB,EAArB,EAAyB,OAAzB;;AAEA,QAAI,cAAc,GAAG,CAAH,IAAQ,GAAG,CAAH,CAAR,GAAgB,GAAG,CAAH,IAAQ,GAAG,CAAH,CAAxB,GAAgC,CAAlD;;AAEA,QAAI,kBAAkB,QAAQ,WAAR,CAAoB,eAA1C;;AAEA,QAAI,WAAJ,EAAiB;AACb,wBAAgB,IAAhB,CAAqB,aAAa,CAAlC;AACA,wBAAgB,IAAhB,CAAqB,aAAa,CAAlC;AACA,wBAAgB,IAAhB,CAAqB,aAAa,CAAlC;AACH,KAJD,MAIO;AACH,wBAAgB,IAAhB,CAAqB,aAAa,CAAlC;AACA,wBAAgB,IAAhB,CAAqB,aAAa,CAAlC;AACA,wBAAgB,IAAhB,CAAqB,aAAa,CAAlC;AACH;AACJ;;AAED;AACA;AACA,SAAS,MAAT,CAAiB,KAAjB,EAAwB,CAAxB,EAA2B,MAA3B,EAAmC,IAAnC,EAAyC,WAAzC,EAAsD,OAAtD,EAA+D;AAC3D,QAAI,aAAa,iBAAO,GAAP,CAAW,MAAX,CAAjB;;AAEA,YAAQ,IAAR;AACI,aAAK,SAAS,MAAd;AACI,gBAAI,OAAJ;AACA,gBAAI,WAAJ,EAAgB;AACZ,0BAAU,CAAC,OAAO,CAAP,CAAD,EAAY,CAAC,OAAO,CAAP,CAAb,CAAV;;AAEA,0BAAU,KAAV,EAAiB,iBAAO,GAAP,CAAW,MAAX,EAAmB,OAAnB,CAAjB,EAA8C,CAAC,CAAD,EAAI,CAAJ,CAA9C,EAAsD,OAAtD;AACA,0BAAU,KAAV,EAAiB,iBAAO,GAAP,CAAW,UAAX,EAAuB,OAAvB,CAAjB,EAAkD,CAAC,CAAD,EAAI,CAAJ,CAAlD,EAA0D,OAA1D;;AAEA;AACA,qBAAK,MAAM,QAAQ,cAAd,GAA+B,QAAQ,OAA5C;;AAEA,0BAAU,KAAV,EAAiB,MAAjB,EAAyB,CAAC,CAAD,EAAI,CAAJ,CAAzB,EAAiC,OAAjC;AACA,0BAAU,KAAV,EAAiB,UAAjB,EAA6B,CAAC,CAAD,EAAI,CAAJ,CAA7B,EAAqC,OAArC;AACH,aAXD,MAYK;AACD,0BAAU,CAAC,CAAC,OAAO,CAAP,CAAF,EAAa,OAAO,CAAP,CAAb,CAAV;;AAEA,0BAAU,KAAV,EAAiB,MAAjB,EAAyB,CAAC,CAAD,EAAI,CAAJ,CAAzB,EAAiC,OAAjC;AACA,0BAAU,KAAV,EAAiB,UAAjB,EAA6B,CAAC,CAAD,EAAI,CAAJ,CAA7B,EAAqC,OAArC;;AAEA;AACA,qBAAK,MAAM,QAAQ,cAAd,GAA+B,QAAQ,OAA5C;;AAEA,0BAAU,KAAV,EAAiB,iBAAO,GAAP,CAAW,MAAX,EAAmB,OAAnB,CAAjB,EAA8C,CAAC,CAAD,EAAI,CAAJ,CAA9C,EAAsD,OAAtD;AACA,0BAAU,KAAV,EAAiB,iBAAO,GAAP,CAAW,UAAX,EAAuB,OAAvB,CAAjB,EAAkD,CAAC,CAAD,EAAI,CAAJ,CAAlD,EAA0D,OAA1D;AACH;;AAED,uBAAW,CAAX,EAAc,OAAd;AACA;AACJ,aAAK,SAAS,KAAd;AACI,gBAAI,EAAJ,EAAQ,EAAR,EAAY,GAAZ,EAAiB,GAAjB,EAAsB,GAAtB;AACA,gBAAI,WAAJ,EAAiB;AACb,qBAAK,MAAL;AACA,qBAAK,UAAL;;AAEA,oBAAI,QAAQ,cAAR,KAA2B,SAA/B,EAAyC;AACrC,yBAAK,MAAM,QAAQ,cAAd,GAA+B,QAAQ,OAA5C;AACA,0BAAM,CAAC,CAAD,EAAI,CAAJ,CAAN;AACA,0BAAM,CAAC,CAAD,EAAI,CAAJ,CAAN;AACA,0BAAM,CAAC,GAAD,EAAM,CAAN,CAAN;AACH;AACJ,aAVD,MAWK;AACD,qBAAK,UAAL;AACA,qBAAK,MAAL;;AAEA,oBAAI,QAAQ,cAAR,KAA2B,SAA/B,EAAyC;AACrC,0BAAM,CAAC,CAAD,EAAI,CAAJ,CAAN;AACA,0BAAM,CAAC,CAAD,EAAI,CAAJ,CAAN;AACA,0BAAM,CAAC,GAAD,EAAM,CAAN,CAAN;AACH;AACJ;;AAED,mBAAO,KAAP,EACI,EADJ,EACQ,SADR,EACmB,EADnB,EAEI,GAFJ,EAES,GAFT,EAEc,GAFd,EAGI,IAHJ,EAGU,OAHV;;AAMA;AACJ,aAAK,SAAS,IAAd;AACI;AA9DR;AAgEH;;AAED;AACA,SAAS,eAAT,CAA0B,KAA1B,EAAiC,KAAjC,EAAwC;AACpC,QAAI,QAAQ,CAAZ,EAAe;AACX,gBAAQ,CAAC,KAAT;AACH;;AAED,QAAI,eAAgB,QAAQ,IAAI,QAAQ,aAArB,GAAsC,KAAK,IAAL,CAAU,QAAQ,QAAQ,aAA1B,CAAtC,GAAiF,CAApG;AACA,WAAO,KAAK,IAAL,CAAU,QAAQ,KAAK,EAAb,GAAkB,YAA5B,CAAP;AACH;;AAED;AACA,SAAS,WAAT,CAAqB,IAArB,EAA2B,UAA3B,EAAsC;AAClC,QAAI,UAAU,EAAd;AACA,SAAK,IAAI,IAAI,CAAb,EAAgB,IAAI,KAAK,MAAzB,EAAiC,GAAjC,EAAqC;AACjC,YAAI,QAAQ,CAAC,IAAI,UAAL,IAAmB,KAAK,MAApC;AACA;AACA,YAAI,UAAU,CAAd,EAAiB;AACb,oBAAQ,IAAR,CAAa,KAAK,KAAL,CAAb;AACH;AACJ;AACD,YAAQ,IAAR,CAAa,QAAQ,CAAR,CAAb;AACA,WAAO,OAAP;AACH;;;;;;;;;;;;;ACtnBD;;;;AACA;;;;AACA;;;;;;;;;;AAEA;IACqB,M;AAEjB,oBAAY,IAAZ,EAAkB,IAAlB,EAAsC;AAAA,YAAd,OAAc,uEAAJ,EAAI;;AAAA;;AAClC,aAAK,IAAL,GAAY,IAAZ;AACA,aAAK,QAAL,GAAgB,QAAQ,QAAxB;AACA,aAAK,IAAL,GAAY,QAAQ,IAApB;AACH;;AAED;;;;;;;AAcA;iCACS,CACR;;AAED;;;;qCACa,O,EAAS,CACrB;;AAED;;;;qCACc;AACV,gBAAI,KAAK,QAAL,IAAiB,KAAK,IAA1B,EAAgC;AAC5B,oBAAI,OAAO,EAAX;AACA,oBAAI,KAAK,QAAT,EAAmB;AACf,2BAAO,EAAE,KAAK,KAAK,QAAL,CAAc,CAAd,CAAP,EAAyB,KAAK,KAAK,QAAL,CAAc,CAAd,CAA9B,EAAgD,MAAM,KAAK,QAAL,CAAc,CAAd,CAAtD,EAAP;AACH;AACD,oBAAI,KAAK,IAAT,EAAe;AACX,yBAAK,IAAL,GAAY,KAAK,IAAjB;AACH;AACD,qBAAK,IAAL,CAAU,OAAV,CAAkB,IAAlB;AACH;AACJ;;AAED;;;;sCACe,Q,EAAU,O,EAAS;AAC9B;AACA,2BAAK,QAAL,CAAc,SAAS,YAAvB,EAAqC,KAAK,WAA1C,EAAuD,SAAS,KAAhE;AACA,oBAAQ,OAAR,CAAgB,WAAhB,EAA6B,aAA7B,EAA4C,SAAS,YAArD;;AAEA;AACA,2BAAK,cAAL,CAAoB,SAAS,QAA7B,EAAuC,SAAS,YAAhD;AACA,2BAAK,MAAL,CAAY,SAAS,gBAArB,EAAuC,SAAS,QAAhD;AACA,oBAAQ,OAAR,CAAgB,WAAhB,EAA6B,gBAA7B,EAA+C,SAAS,QAAxD;AACA,oBAAQ,OAAR,CAAgB,WAAhB,EAA6B,uBAA7B,EAAsD,SAAS,gBAA/D;AACH;;;+BA9Ca,I,EAAM,I,EAAM,M,EAAQ;AAC9B,oBAAQ,OAAO,IAAf;AACI,qBAAK,WAAL;AACI,2BAAO,IAAI,eAAJ,CAAoB,IAApB,EAA0B,IAA1B,EAAgC,MAAhC,CAAP;AACJ,qBAAK,MAAL;AACI,2BAAO,IAAI,UAAJ,CAAe,IAAf,EAAqB,IAArB,EAA2B,MAA3B,CAAP;AACJ,qBAAK,aAAL;AACA;AACA;AACI,2BAAO,IAAI,iBAAJ,CAAsB,IAAtB,EAA4B,IAA5B,EAAkC,MAAlC,CAAP;AARR;AAUH;;;;;;AAuCL;;;;;;;;;;;;;;;;;kBA3DqB,M;;IA0Ef,iB;;;AAEF,+BAAY,IAAZ,EAAkB,IAAlB,EAAsC;AAAA,YAAd,OAAc,uEAAJ,EAAI;;AAAA;;AAAA,0IAC5B,IAD4B,EACtB,IADsB,EAChB,OADgB;;AAElC,cAAK,IAAL,GAAY,aAAZ;;AAEA;AACA,cAAK,YAAL,GAAoB,QAAQ,YAA5B;AACA,cAAK,GAAL,GAAW,QAAQ,GAAnB;AACA,YAAI,CAAC,MAAK,YAAN,IAAsB,CAAC,MAAK,GAAhC,EAAqC;AACjC;AACA,kBAAK,YAAL,GAAoB,CAAC,CAAC,EAAD,EAAK,CAAL,CAAD,EAAU,CAAC,EAAD,EAAK,GAAL,CAAV,EAAqB,CAAC,EAAD,EAAK,CAAL,CAArB,EAA8B,CAAC,EAAD,EAAK,CAAL,CAA9B,EAAuC,CAAC,EAAD,EAAK,CAAL,CAAvC,CAApB;AACH;;AAED,cAAK,eAAL,GAAuB,QAAQ,eAAR,IAA2B,CAAC,CAAD,EAAI,CAAJ,CAAlD,CAZkC,CAYwB;AAC1D,cAAK,eAAL,GAAuB,MAAK,eAAL,CAAqB,GAArB,CAAyB,UAAzB,CAAvB,CAbkC,CAa2B;AAC7D,cAAK,oBAAL,GAA4B,EAA5B;;AAEA,cAAK,eAAL,GAAuB,IAAvB;AACA,cAAK,WAAL,GAAmB,IAAI,YAAJ,CAAiB,EAAjB,CAAnB;AACA,cAAK,iBAAL,GAAyB,IAAI,YAAJ,CAAiB,EAAjB,CAAzB;;AAEA;AACA,iCAAc,YAAd,CAA2B,QAA3B;AArBkC;AA8BrC;;AAED;AACA;AACA;;;;;8CAC4D;AAAA,gBAA1C,WAA0C,QAA1C,WAA0C;AAAA,gBAA7B,MAA6B,QAA7B,MAA6B;AAAA,gBAArB,YAAqB,QAArB,YAAqB;AAAA,gBAAP,GAAO,QAAP,GAAO;;AACxD;AACA,gBAAI,CAAC,MAAL,EAAa;AACT;AACA,oBAAI,YAAJ,EAAkB;AACd,0BAAM,KAAK,IAAL,CAAU,IAAI,YAAd,IAA8B,CAApC;AACH;AACD;AAHA,qBAIK,IAAI,GAAJ,EAAS;AACV,8BAAM,MAAM,KAAK,EAAX,GAAgB,GAAtB,CADU,CACiB;AAC3B,uCAAe,IAAI,KAAK,GAAL,CAAS,MAAM,CAAf,CAAnB;AACH;;AAED;AACA;AACA,yBAAS,cAAc,CAAd,GAAkB,YAA3B;AACH;AACD;AAfA,iBAgBK;AACD,mCAAe,IAAI,MAAJ,GAAa,WAA5B;AACA,0BAAM,KAAK,IAAL,CAAU,IAAI,YAAd,IAA8B,CAApC;AACH;;AAED,mBAAO,EAAE,wBAAF,EAAe,cAAf,EAAuB,0BAAvB,EAAqC,QAArC,EAAP;AACH;;;yCAEgB;AACb;;AAEA;AACA,gBAAI,kBAAkB,KAAK,IAAL,CAAU,IAAV,CAAe,GAAf,CAAmB,MAAnB,GAA4B,KAAK,IAAL,CAAU,gBAA5D;;AAEA;;AANa,mCAOS,KAAK,eAAL,CAAqB;AACvC,6BAAa,eAD0B;AAEvC,8BAAc,gBAAM,WAAN,CAAkB,KAAK,IAAL,CAAU,IAA5B,EAAkC,KAAK,YAAvC,CAFyB;AAGvC,qBAAK,gBAAM,WAAN,CAAkB,KAAK,IAAL,CAAU,IAA5B,EAAkC,KAAK,GAAvC;AAHkC,aAArB,CAPT;AAAA,gBAOP,MAPO,oBAOP,MAPO;AAAA,gBAOC,GAPD,oBAOC,GAPD;;AAab;;;AACA,gBAAI,WAAW,CAAC,KAAK,IAAL,CAAU,MAAV,CAAiB,MAAjB,CAAwB,CAAzB,EAA4B,KAAK,IAAL,CAAU,MAAV,CAAiB,MAAjB,CAAwB,CAApD,EAAuD,MAAvD,CAAf;AACA,iBAAK,eAAL,GAAuB,QAAvB;;AAEA;AACA;AACA;AACA;AACA;AACA,2BAAK,MAAL,CAAY,KAAK,WAAjB,EACI,eAAK,UAAL,CAAgB,SAAS,CAAT,CAAhB,EAA6B,SAAS,CAAT,CAA7B,EAA0C,CAA1C,CADJ,EAEI,eAAK,UAAL,CAAgB,SAAS,CAAT,CAAhB,EAA6B,SAAS,CAAT,CAA7B,EAA0C,CAAC,CAA3C,CAFJ,EAGI,eAAK,UAAL,CAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAHJ;;AAKA;AACA,2BAAK,WAAL,CAAiB,KAAK,iBAAtB,EAAyC,GAAzC,EAA8C,KAAK,IAAL,CAAU,MAAxD,EAAgE,CAAhE,EAAmE,SAAS,CAA5E;;AAEA;AACA,iBAAK,oBAAL,CAA0B,CAA1B,IAA+B,KAAK,eAAL,CAAqB,CAArB,IAA0B,KAAK,IAAL,CAAU,IAAV,CAAe,GAAf,CAAmB,KAA5E;AACA,iBAAK,oBAAL,CAA0B,CAA1B,IAA+B,KAAK,eAAL,CAAqB,CAArB,IAA0B,KAAK,IAAL,CAAU,IAAV,CAAe,GAAf,CAAmB,MAA5E;;AAEA;AACA,iBAAK,iBAAL,CAAuB,CAAvB,IAA4B,CAAC,KAAK,oBAAL,CAA0B,CAA1B,CAAD,GAAgC,CAA5D,CAnCa,CAmCkD;AAC/D,iBAAK,iBAAL,CAAuB,CAAvB,IAA4B,CAAC,KAAK,oBAAL,CAA0B,CAA1B,CAAD,GAAgC,CAA5D,CApCa,CAoCkD;;AAE/D;AACA;AACA;AACA,2BAAK,SAAL,CAAe,KAAK,iBAApB,EAAuC,KAAK,iBAA5C,EACI,eAAK,UAAL,CACI,kBAAgB,CAAhB,GAAoB,KAAK,IAAL,CAAU,MAA9B,IAAwC,CAAC,KAAK,oBAAL,CAA0B,CAA1B,CAAD,GAAgC,CAAxE,CADJ,EAEI,kBAAgB,CAAhB,IAAqB,CAAC,KAAK,oBAAL,CAA0B,CAA1B,CAAD,GAAgC,CAArD,CAFJ,EAGI,CAHJ,CADJ;;AAQA;AACA,2BAAK,SAAL,CAAe,KAAK,iBAApB,EAAuC,KAAK,iBAA5C,EAA+D,eAAK,UAAL,CAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAC,MAAvB,CAA/D;AACH;;;iCAEQ;AACL;AACA,iBAAK,cAAL;AACH;;;qCAEY,O,EAAS;AAClB,oBAAQ,OAAR,CAAgB,WAAhB,EAA6B,cAA7B,EAA6C,KAAK,iBAAlD;AACA,oBAAQ,OAAR,CAAgB,IAAhB,EAAsB,OAAtB,EAA+B,CAAC,CAAD,EAAI,CAAJ,EAAO,KAAK,eAAL,CAAqB,CAArB,CAAP,CAA/B;AACA,oBAAQ,OAAR,CAAgB,KAAhB,EAAuB,mBAAvB,EAA4C,KAAK,oBAAjD;AACH;;;;EA7H2B,M;;AAiIhC;AACA;AACA;AACA;AACA;;;IACM,e;;;AAEF,6BAAY,IAAZ,EAAkB,IAAlB,EAAsC;AAAA,YAAd,OAAc,uEAAJ,EAAI;;AAAA;;AAAA,uIAC5B,IAD4B,EACtB,IADsB,EAChB,OADgB;;AAElC,eAAK,IAAL,GAAY,WAAZ;AACA,eAAK,IAAL,GAAY,QAAQ,IAAR,IAAgB,EAAE,GAAG,CAAL,EAAQ,GAAG,CAAX,EAA5B;AACA,YAAI,OAAK,IAAL,CAAU,MAAV,KAAqB,CAAzB,EAA4B;AACxB,mBAAK,IAAL,GAAY,EAAE,GAAG,OAAK,IAAL,CAAU,CAAV,CAAL,EAAmB,GAAG,OAAK,IAAL,CAAU,CAAV,CAAtB,EAAZ,CADwB,CAC0B;AACrD;;AAED,eAAK,eAAL,GAAuB,IAAvB;AACA,eAAK,eAAL,GAAuB,IAAvB;;AAEA,eAAK,WAAL,GAAmB,IAAI,YAAJ,CAAiB,EAAjB,CAAnB;AACA,eAAK,iBAAL,GAAyB,IAAI,YAAJ,CAAiB,EAAjB,CAAzB;;AAEA;AACA,iCAAc,YAAd,CAA2B,QAA3B;AAfkC;AA8BrC;;;;iCAEQ;AACL;;AAEA,iBAAK,eAAL,GAAuB,KAAK,IAAL,CAAU,IAAV,CAAe,GAAf,CAAmB,MAAnB,GAA4B,KAAK,IAAL,CAAU,gBAA7D;AACA,gBAAI,WAAW,CAAC,KAAK,IAAL,CAAU,MAAV,CAAiB,MAAjB,CAAwB,CAAzB,EAA4B,KAAK,IAAL,CAAU,MAAV,CAAiB,MAAjB,CAAwB,CAApD,EAAuD,KAAK,eAA5D,CAAf;AACA,iBAAK,eAAL,GAAuB,QAAvB;;AAEA;AACA,2BAAK,QAAL,CAAc,KAAK,WAAnB;AACA,2BAAK,SAAL,CAAe,KAAK,WAApB,EAAiC,KAAK,WAAtC,EAAmD,eAAK,UAAL,CAAgB,CAAC,SAAS,CAAT,CAAjB,EAA8B,CAAC,SAAS,CAAT,CAA/B,EAA4C,CAA5C,CAAnD;;AAEA;AACA,2BAAK,QAAL,CAAc,KAAK,iBAAnB;;AAEA;AACA,iBAAK,iBAAL,CAAuB,CAAvB,IAA4B,KAAK,IAAL,CAAU,CAAV,GAAc,KAAK,IAAL,CAAU,MAApD,CAfK,CAeuD;AAC5D,iBAAK,iBAAL,CAAuB,CAAvB,IAA4B,KAAK,IAAL,CAAU,CAAtC,CAhBK,CAgBuD;;AAE5D;AACA,2BAAK,KAAL,CAAW,KAAK,iBAAhB,EAAmC,KAAK,iBAAxC,EACI,eAAK,UAAL,CACI,IAAI,KAAK,IAAL,CAAU,IAAV,CAAe,MAAf,CAAsB,CAD9B,EAEI,IAAI,KAAK,IAAL,CAAU,IAAV,CAAe,MAAf,CAAsB,CAF9B,EAGI,IAAI,KAAK,IAAL,CAAU,IAAV,CAAe,MAAf,CAAsB,CAH9B,CADJ;AAOH;;;qCAEY,O,EAAS;AAClB,oBAAQ,OAAR,CAAgB,WAAhB,EAA6B,cAA7B,EAA6C,KAAK,iBAAlD;;AAEA,oBAAQ,OAAR,CAAgB,KAAhB,EAAuB,OAAvB,EAAgC,CAAC,CAAD,EAAI,CAAJ,EAAO,KAAK,eAAZ,CAAhC;AACA;AACA,oBAAQ,OAAR,CAAgB,KAAhB,EAAuB,mBAAvB,EAA4C,CAAC,CAAD,EAAI,CAAJ,CAA5C;AACH;;;;EApEyB,M;;AAwE9B;;;IACM,U;;;AAEF,wBAAY,IAAZ,EAAkB,IAAlB,EAAsC;AAAA,YAAd,OAAc,uEAAJ,EAAI;;AAAA;;AAAA,6HAC5B,IAD4B,EACtB,IADsB,EAChB,OADgB;;AAElC,eAAK,IAAL,GAAY,MAAZ;AAFkC;AAGrC;;;;iCAEQ;AACL;AACA,iBAAK,IAAL,CAAU,CAAV,GAAc,CAAd;AACA,iBAAK,IAAL,CAAU,CAAV,GAAc,CAAd;;AAEA;AACH;;;;EAboB,e;;;;;;;;;;;AC9RzB;;AAEA,IAAI,GAAJ;kBACe,MAAM,E;;AAErB;;AACA,IAAI,uBAAJ,GAA8B,EAA9B;AACA,IAAI,qBAAJ,GAA4B,EAA5B;AACA,IAAI,SAAJ,GAAgB,GAAhB;AACA,IAAI,yBAAJ,GAAgC,kBAAhC;AACA,IAAI,oBAAJ,GAA2B,IAAI,yBAAJ,GAAgC,CAA3D;AACA,IAAI,yBAAJ,GAAgC,IAAI,oBAAJ,GAA2B,IAAI,SAA/D,C,CAA0E;;AAE1E,IAAI,mBAAmB,EAAvB;AACA,IAAI,cAAJ,GAAqB,UAAU,CAAV,EAAa;AAC9B,qBAAiB,CAAjB,IAAsB,iBAAiB,CAAjB,KAAuB,IAAI,yBAAJ,GAAgC,KAAK,GAAL,CAAS,CAAT,EAAY,CAAZ,CAA7E;AACA,WAAO,iBAAiB,CAAjB,CAAP;AACH,CAHD;;AAKA,IAAI,kBAAkB,EAAtB;AACA,IAAI,aAAJ,GAAoB,UAAU,CAAV,EAAa;AAC7B,oBAAgB,CAAhB,IAAqB,gBAAgB,CAAhB,KAAsB,IAAI,oBAAJ,GAA2B,KAAK,GAAL,CAAS,CAAT,EAAY,CAAZ,CAAtE;AACA,WAAO,gBAAgB,CAAhB,CAAP;AACH,CAHD;;AAKA;AACA,IAAI,UAAJ,GAAiB,IAAjB,C,CAAuB;AACvB,IAAI,eAAJ,GAAsB,IAAI,UAAJ,GAAiB,IAAI,SAA3C;AACA,IAAI,YAAJ,GAAmB,EAAnB,C,CAAwB;;AAExB,IAAI,kBAAkB,EAAtB;AACA,IAAI,aAAJ,GAAoB,UAAU,CAAV,EAAa;AAC7B,oBAAgB,CAAhB,IAAqB,gBAAgB,CAAhB,KAAsB,IAAI,UAAJ,IAAkB,IAAI,SAAJ,GAAgB,IAAI,cAAJ,CAAmB,CAAnB,CAAlC,CAA3C;AACA,WAAO,gBAAgB,CAAhB,CAAP;AACH,CAHD;;AAKA;AACA,IAAI,aAAJ,GAAoB,UAAU,IAAV,EAAgB;AAChC,WAAO;AACH,WAAG,KAAK,CAAL,GAAS,IAAI,oBAAb,GAAoC,KAAK,GAAL,CAAS,CAAT,EAAY,KAAK,CAAjB,CAApC,GAA0D,IAAI,yBAD9D;AAEH,WAAG,EAAE,KAAK,CAAL,GAAS,IAAI,oBAAb,GAAoC,KAAK,GAAL,CAAS,CAAT,EAAY,KAAK,CAAjB,CAApC,GAA0D,IAAI,yBAAhE;AAFA,KAAP;AAIH,CALD;;AAOA;;;AAGA,IAAI,aAAJ,GAAoB,gBAAkB,IAAlB,EAAwB;AAAA;AAAA,QAAb,CAAa;AAAA,QAAV,CAAU;;AACxC,WAAO;AACH,WAAG,KAAK,KAAL,CAAW,CAAC,IAAI,IAAI,yBAAT,KAAuC,IAAI,oBAAJ,GAA2B,KAAK,GAAL,CAAS,CAAT,EAAY,IAAZ,CAAlE,CAAX,CADA;AAEH,WAAG,KAAK,KAAL,CAAW,CAAC,CAAC,CAAD,GAAK,IAAI,yBAAV,KAAwC,IAAI,oBAAJ,GAA2B,KAAK,GAAL,CAAS,CAAT,EAAY,IAAZ,CAAnE,CAAX,CAFA;AAGH,WAAG;AAHA,KAAP;AAKH,CAND;;AAQA;AACA;AACA,IAAI,QAAJ,GAAe,iBAAoD;AAAA,QAAzC,CAAyC,SAAzC,CAAyC;AAAA,QAAtC,CAAsC,SAAtC,CAAsC;AAAA,QAAnC,CAAmC,SAAnC,CAAmC;AAAA,QAA9B,IAA8B,uEAAvB,EAAE,GAAG,IAAL,EAAW,GAAG,KAAd,EAAuB;;AAC/D,QAAI,IAAI,CAAC,KAAK,CAAN,IAAW,CAAnB;AACA,QAAI,KAAK,CAAT,EAAY;AACR,YAAI,IAAI,CAAR;AACH;AACD,QAAI,KAAK,CAAT,EAAY;AACR,YAAI,IAAI,CAAR;AACH;AACD,WAAO,EAAE,IAAF,EAAK,IAAL,EAAQ,IAAR,EAAP;AACH,CATD;;AAWA;;;AAGA,IAAI,cAAJ,GAAqB,iBAAkB;AAAA;AAAA,QAAP,CAAO;AAAA,QAAJ,CAAI;;AAEnC,SAAK,IAAI,yBAAT;AACA,SAAK,IAAI,yBAAT;;AAEA,QAAI,CAAC,IAAI,KAAK,IAAL,CAAU,KAAK,GAAL,CAAS,IAAI,KAAK,EAAlB,CAAV,CAAJ,GAAwC,KAAK,EAAL,GAAU,CAAnD,IAAyD,KAAK,EAAlE;;AAEA,SAAK,GAAL;AACA,SAAK,GAAL;;AAEA,WAAO,CAAC,CAAD,EAAI,CAAJ,CAAP;AACH,CAXD;;AAaA;;;AAGA,IAAI,cAAJ,GAAqB,iBAAiB;AAAA;AAAA,QAAP,CAAO;AAAA,QAAJ,CAAI;;AAElC;AACA,QAAI,KAAK,GAAL,CAAS,KAAK,GAAL,CAAS,IAAE,KAAK,EAAP,GAAU,GAAV,GAAgB,KAAK,EAAL,GAAQ,CAAjC,CAAT,IAAgD,KAAK,EAAzD;AACA,SAAK,IAAI,yBAAT;;AAEA;AACA,SAAK,IAAI,yBAAJ,GAAgC,GAArC;;AAEA,WAAO,CAAC,CAAD,EAAI,CAAJ,CAAP;AACH,CAVD;;AAYA;AACA,IAAI,iBAAJ,GAAwB,UAAU,QAAV,EAAoB,CAApB,EAAuB,GAAvB,EAA4B,GAA5B,EAAiC;AACrD,QAAM,kBAAkB,IAAI,aAAJ,CAAkB,CAAlB,CAAxB;AACA,QAAI,iBAAJ,CAAsB,QAAtB,EAAgC,iBAAS;AACrC,cAAM,CAAN,IAAY,MAAM,CAAN,IAAW,eAAZ,GAA+B,IAAI,CAA9C;AACA,cAAM,CAAN,IAAY,MAAM,CAAN,IAAW,eAAZ,GAA+B,IAAI,CAA9C;;AAFqC,kCAIxB,IAAI,cAAJ,CAAmB,KAAnB,CAJwB;AAAA;AAAA,YAIhC,CAJgC;AAAA,YAI7B,CAJ6B;;AAKrC,cAAM,CAAN,IAAW,CAAX;AACA,cAAM,CAAN,IAAW,CAAX;AACH,KAPD;AAQA,WAAO,QAAP;AACH,CAXD;;AAaA;AACA,IAAI,YAAJ,GAAmB,UAAU,QAAV,EAAoB;AACnC,QAAI,YAAY,IAAhB,EAAsB;AAClB,eADkB,CACV;AACX;;AAED,QAAI,OAAO,EAAE,MAAM,SAAS,IAAjB,EAAX;;AAEA,QAAI,SAAS,IAAT,KAAkB,OAAtB,EAA+B;AAC3B,aAAK,WAAL,GAAmB,CAAC,SAAS,WAAT,CAAqB,CAArB,CAAD,EAA0B,SAAS,WAAT,CAAqB,CAArB,CAA1B,CAAnB;AACH,KAFD,MAGK,IAAI,SAAS,IAAT,KAAkB,YAAlB,IAAkC,SAAS,IAAT,KAAkB,YAAxD,EAAsE;AACvE,aAAK,WAAL,GAAmB,SAAS,WAAT,CAAqB,GAArB,CAAyB;AAAA,mBAAK,CAAC,EAAE,CAAF,CAAD,EAAO,EAAE,CAAF,CAAP,CAAL;AAAA,SAAzB,CAAnB;AACH,KAFI,MAGA,IAAI,SAAS,IAAT,KAAkB,SAAlB,IAA+B,SAAS,IAAT,KAAkB,iBAArD,EAAwE;AACzE,aAAK,WAAL,GAAmB,SAAS,WAAT,CAAqB,GAArB,CAAyB;AAAA,mBAAQ,KAAK,GAAL,CAAS;AAAA,uBAAK,CAAC,EAAE,CAAF,CAAD,EAAO,EAAE,CAAF,CAAP,CAAL;AAAA,aAAT,CAAR;AAAA,SAAzB,CAAnB;AACH,KAFI,MAGA,IAAI,SAAS,IAAT,KAAkB,cAAtB,EAAsC;AACvC,aAAK,WAAL,GAAmB,SAAS,WAAT,CAAqB,GAArB,CAAyB,mBAAW;AACnD,mBAAO,QAAQ,GAAR,CAAY;AAAA,uBAAQ,KAAK,GAAL,CAAS;AAAA,2BAAK,CAAC,EAAE,CAAF,CAAD,EAAO,EAAE,CAAF,CAAP,CAAL;AAAA,iBAAT,CAAR;AAAA,aAAZ,CAAP;AACH,SAFkB,CAAnB;AAGH;AACD;AACA,WAAO,IAAP;AACH,CAvBD;;AAyBA;AACA,IAAI,iBAAJ,GAAwB,UAAU,QAAV,EAAoB,SAApB,EAA+B;AACnD,QAAI,YAAY,IAAhB,EAAsB;AAClB,eADkB,CACV;AACX;;AAED,QAAI,SAAS,IAAT,KAAkB,OAAtB,EAA+B;AAC3B,kBAAU,SAAS,WAAnB;AACH,KAFD,MAGK,IAAI,SAAS,IAAT,KAAkB,YAAlB,IAAkC,SAAS,IAAT,KAAkB,YAAxD,EAAsE;AACvE,iBAAS,WAAT,CAAqB,OAArB,CAA6B,SAA7B;AACH,KAFI,MAGA,IAAI,SAAS,IAAT,KAAkB,SAAlB,IAA+B,SAAS,IAAT,KAAkB,iBAArD,EAAwE;AACzE,iBAAS,WAAT,CAAqB,OAArB,CAA6B;AAAA,mBAAQ,KAAK,OAAL,CAAa,SAAb,CAAR;AAAA,SAA7B;AACH,KAFI,MAGA,IAAI,SAAS,IAAT,KAAkB,cAAtB,EAAsC;AACvC,iBAAS,WAAT,CAAqB,OAArB,CAA6B,mBAAW;AACpC,oBAAQ,OAAR,CAAgB;AAAA,uBAAQ,KAAK,OAAL,CAAa,SAAb,CAAR;AAAA,aAAhB;AACH,SAFD;AAGH;AACD;AACH,CApBD;;AAsBA,IAAI,YAAJ,GAAmB,UAAU,EAAV,EAAc,EAAd,EAAkB;AACjC,WAAO,EACH,GAAG,EAAH,CAAM,CAAN,GAAU,GAAG,EAAH,CAAM,CAAhB,IACA,GAAG,EAAH,CAAM,CAAN,GAAU,GAAG,EAAH,CAAM,CADhB,IAEA,GAAG,EAAH,CAAM,CAAN,GAAU,GAAG,EAAH,CAAM,CAFhB,IAGA,GAAG,EAAH,CAAM,CAAN,GAAU,GAAG,EAAH,CAAM,CAJb,CAAP;AAMH,CAPD;;AASA;AACA,IAAI,eAAJ,GAAsB,UAAU,OAAV,EAAmB;AACrC,QAAI,QAAQ,QAAZ;AAAA,QACI,QAAQ,CAAC,QADb;AAAA,QAEI,QAAQ,QAFZ;AAAA,QAGI,QAAQ,CAAC,QAHb;;AAKA;AACA,QAAI,aAAa,QAAQ,CAAR,EAAW,MAA5B;AACA,SAAK,IAAI,IAAE,CAAX,EAAc,IAAI,UAAlB,EAA8B,GAA9B,EAAmC;AAC/B,YAAI,QAAQ,QAAQ,CAAR,EAAW,CAAX,CAAZ;;AAEA,YAAI,MAAM,CAAN,IAAW,KAAf,EAAsB;AAClB,oBAAQ,MAAM,CAAN,CAAR;AACH;AACD,YAAI,MAAM,CAAN,IAAW,KAAf,EAAsB;AAClB,oBAAQ,MAAM,CAAN,CAAR;AACH;AACD,YAAI,MAAM,CAAN,IAAW,KAAf,EAAsB;AAClB,oBAAQ,MAAM,CAAN,CAAR;AACH;AACD,YAAI,MAAM,CAAN,IAAW,KAAf,EAAsB;AAClB,oBAAQ,MAAM,CAAN,CAAR;AACH;AACJ;;AAED,WAAO,CAAC,KAAD,EAAQ,KAAR,EAAe,KAAf,EAAsB,KAAtB,CAAP;AACH,CA1BD;;AA4BA;AACA,IAAI,YAAJ,GAAmB,UAAS,IAAT,EAAe;AAC9B,QAAI,SAAS,SAAT,IAAsB,SAAS,cAAnC,EAAmD;AAC/C,eAAO,SAAP;AACH,KAFD,MAGK,IAAI,SAAS,YAAT,IAAyB,SAAS,iBAAtC,EAAyD;AAC1D,eAAO,MAAP;AACH;AACD,QAAI,SAAS,OAAT,IAAoB,SAAS,YAAjC,EAA+C;AAC3C,eAAO,OAAP;AACH;AACJ,CAVD;;AAYA;AACA;AACA,IAAI,QAAJ,GAAe,UAAU,OAAV,EAAoC;AAAA,QAAjB,QAAiB,uEAAN,IAAM;;AAC/C,QAAI,CAAC,OAAD,IAAY,QAAQ,MAAR,KAAmB,CAAnC,EAAsC;AAClC;AACH;;AAED,QAAI,IAAI,CAAR;AAAA,QAAW,IAAI,CAAf;AAAA,QAAkB,OAAO,CAAzB;AACA,QAAI,OAAO,QAAQ,CAAR,CAAX,CAN+C,CAMxB;AACvB,QAAI,MAAM,KAAK,MAAf;;AAEA;AACA,QAAI,eAAJ;AACA,QAAI,QAAJ,EAAc;AACV,iBAAS,KAAK,CAAL,CAAT;AACA,eAAO,KAAK,GAAL,CAAS;AAAA,mBAAK,CAAC,EAAE,CAAF,IAAO,OAAO,CAAP,CAAR,EAAmB,EAAE,CAAF,IAAO,OAAO,CAAP,CAA1B,CAAL;AAAA,SAAT,CAAP;AACH;;AAED,SAAK,IAAI,IAAI,CAAR,EAAW,IAAI,MAAM,CAA1B,EAA6B,IAAI,GAAjC,EAAsC,IAAI,CAAJ,EAAO,GAA7C,EAAkD;AAC9C,YAAI,KAAK,KAAK,CAAL,CAAT;AACA,YAAI,KAAK,KAAK,CAAL,CAAT;AACA,YAAI,IAAI,GAAG,CAAH,IAAQ,GAAG,CAAH,CAAR,GAAgB,GAAG,CAAH,IAAQ,GAAG,CAAH,CAAhC;;AAEA,aAAK,CAAC,GAAG,CAAH,IAAQ,GAAG,CAAH,CAAT,IAAkB,CAAvB;AACA,aAAK,CAAC,GAAG,CAAH,IAAQ,GAAG,CAAH,CAAT,IAAkB,CAAvB;AACA,gBAAQ,IAAI,CAAZ;AACH;;AAED,QAAI,IAAI,CAAC,IAAI,IAAL,EAAW,IAAI,IAAf,CAAR;AACA,QAAI,QAAJ,EAAc;AACV,UAAE,CAAF,KAAQ,OAAO,CAAP,CAAR;AACA,UAAE,CAAF,KAAQ,OAAO,CAAP,CAAR;AACH;AACD,WAAO,CAAP;AACH,CAhCD;;AAkCA,IAAI,aAAJ,GAAoB,UAAU,QAAV,EAAoB;AACpC,QAAI,IAAI,SAAS,MAAjB;AACA,QAAI,WAAW,CAAC,CAAD,EAAI,CAAJ,CAAf;;AAEA,SAAK,IAAI,IAAE,CAAX,EAAc,IAAI,SAAS,MAA3B,EAAmC,GAAnC,EAAwC;AACpC,YAAI,IAAI,IAAI,QAAJ,CAAa,SAAS,CAAT,CAAb,CAAR;AACA,iBAAS,CAAT,KAAe,EAAE,CAAF,CAAf;AACA,iBAAS,CAAT,KAAe,EAAE,CAAF,CAAf;AACH;;AAED,aAAS,CAAT,KAAe,CAAf;AACA,aAAS,CAAT,KAAe,CAAf;;AAEA,WAAO,QAAP;AACH,CAdD;;AAgBA,IAAI,wBAAJ,GAA+B,UAAU,IAAV,EAAgB;AAC3C,QAAI,OAAO,CAAX;AACA,QAAI,IAAI,KAAK,MAAb;;AAEA,SAAK,IAAI,IAAI,CAAb,EAAgB,IAAI,IAAI,CAAxB,EAA2B,GAA3B,EAAgC;AAC5B,YAAI,KAAK,KAAK,CAAL,CAAT;AACA,YAAI,KAAK,KAAK,IAAE,CAAP,CAAT;;AAEA,gBAAQ,GAAG,CAAH,IAAQ,GAAG,CAAH,CAAR,GAAgB,GAAG,CAAH,IAAQ,GAAG,CAAH,CAAhC;AACH;;AAED,YAAQ,KAAK,IAAI,CAAT,EAAY,CAAZ,IAAiB,KAAK,CAAL,EAAQ,CAAR,CAAjB,GAA8B,KAAK,CAAL,EAAQ,CAAR,IAAa,KAAK,IAAI,CAAT,EAAY,CAAZ,CAAnD;AACA,WAAO,IAAP;AACH,CAbD;;AAeA,IAAI,eAAJ,GAAsB,UAAU,IAAV,EAAgB;AAClC,WAAO,KAAK,GAAL,CAAS,IAAI,wBAAJ,CAA6B,IAA7B,CAAT,IAA+C,CAAtD;AACH,CAFD;;AAIA;AACA,IAAI,WAAJ,GAAkB,UAAU,OAAV,EAAmB;AACjC,QAAI,CAAC,OAAL,EAAc;AACV;AACH;AACD,WAAO,IAAI,eAAJ,CAAoB,QAAQ,CAAR,CAApB,CAAP;AACH,CALD;;AAOA,IAAI,gBAAJ,GAAuB,UAAU,QAAV,EAAoB;AACvC,QAAI,OAAO,CAAX;;AAEA,SAAK,IAAI,IAAE,CAAX,EAAc,IAAI,SAAS,MAA3B,EAAmC,GAAnC,EAAwC;AACpC,gBAAQ,IAAI,WAAJ,CAAgB,SAAS,CAAT,CAAhB,CAAR;AACH;;AAED,WAAO,IAAP;AACH,CARD;;AAUA,IAAI,WAAJ,GAAkB,UAAU,IAAV,EAAgB;AAC9B,QAAI,OAAO,IAAI,wBAAJ,CAA6B,IAA7B,CAAX;AACA,QAAI,OAAO,CAAX,EAAc;AACV,eAAO,IAAP;AACH,KAFD,MAGK,IAAI,OAAO,CAAX,EAAc;AACf,eAAO,KAAP;AACH;AACD;AACH,CATD;;;;;;;;AC9SA;;AAEA,IAAI,EAAJ;kBACe,KAAK,E;;AAEpB;;AACA,GAAG,IAAH,GAAoC,MAApC;AACA,GAAG,aAAH,GAAoC,MAApC;AACA,GAAG,KAAH,GAAoC,MAApC;AACA,GAAG,cAAH,GAAoC,MAApC;AACA,GAAG,GAAH,GAAoC,MAApC;AACA,GAAG,YAAH,GAAoC,MAApC;AACA,GAAG,KAAH,GAAoC,MAApC;;;;;;;;ACZA;;AAEA,IAAI,OAAJ;kBACe,UAAU,E;;;AAEzB,IAAI,aAAa,CAAjB;;AAEA;AACA;AACA,QAAQ,UAAR,GAAqB,SAAS,UAAT,CAAqB,MAArB,EAA6B,OAA7B,EACrB;AACI,QAAI,aAAa,KAAjB;AACA,QAAI,UAAU,IAAd,EAAoB;AAChB,iBAAS,SAAS,aAAT,CAAuB,QAAvB,CAAT;AACA,eAAO,KAAP,CAAa,QAAb,GAAwB,UAAxB;AACA,eAAO,KAAP,CAAa,GAAb,GAAmB,CAAnB;AACA,eAAO,KAAP,CAAa,IAAb,GAAoB,CAApB;AACA,eAAO,KAAP,CAAa,MAAb,GAAsB,CAAC,CAAvB;AACA,iBAAS,IAAT,CAAc,WAAd,CAA0B,MAA1B;AACA,qBAAa,IAAb;AACH;;AAED,QAAI,KAAK,OAAO,UAAP,CAAkB,OAAlB,EAA2B,OAA3B,KAAuC,OAAO,UAAP,CAAkB,oBAAlB,EAAwC,OAAxC,CAAhD;AACA,QAAI,CAAC,EAAL,EAAS;AACL,cAAM,IAAI,KAAJ,CAAU,gCAAV,CAAN;AACH;AACD,OAAG,WAAH,GAAiB,YAAjB;;AAEA,QAAI,CAAC,UAAL,EAAiB;AACb,gBAAQ,MAAR,CAAe,EAAf,EAAmB,WAAW,OAAO,KAAP,CAAa,KAAxB,CAAnB,EAAmD,WAAW,OAAO,KAAP,CAAa,MAAxB,CAAnD,EAAoF,QAAQ,kBAA5F;AACH,KAFD,MAGK;AACD,gBAAQ,MAAR,CAAe,EAAf,EAAmB,OAAO,UAA1B,EAAsC,OAAO,WAA7C,EAA0D,QAAQ,kBAAlE;AACA,eAAO,gBAAP,CAAwB,QAAxB,EAAkC,YAAY;AAC1C,oBAAQ,MAAR,CAAe,EAAf,EAAmB,OAAO,UAA1B,EAAsC,OAAO,WAA7C,EAA0D,QAAQ,kBAAlE;AACH,SAFD;AAGH;;AAED,WAAO,EAAP;AACH,CA9BD;;AAgCA,QAAQ,MAAR,GAAiB,UAAU,EAAV,EAAc,KAAd,EAAqB,MAArB,EAA6B,kBAA7B,EACjB;AACI,yBAAqB,sBAAsB,OAAO,gBAA7B,IAAiD,CAAtE;AACA,OAAG,MAAH,CAAU,KAAV,CAAgB,KAAhB,GAAwB,QAAQ,IAAhC;AACA,OAAG,MAAH,CAAU,KAAV,CAAgB,MAAhB,GAAyB,SAAS,IAAlC;AACA,OAAG,MAAH,CAAU,KAAV,GAAkB,KAAK,KAAL,CAAW,QAAQ,kBAAnB,CAAlB;AACA,OAAG,MAAH,CAAU,MAAV,GAAmB,KAAK,KAAL,CAAW,SAAS,kBAApB,CAAnB;AACA,OAAG,eAAH,CAAmB,GAAG,WAAtB,EAAmC,IAAnC;AACA,OAAG,QAAH,CAAY,CAAZ,EAAe,CAAf,EAAkB,GAAG,MAAH,CAAU,KAA5B,EAAmC,GAAG,MAAH,CAAU,MAA7C;AACH,CATD;;;;;;;;kBCnCwB,Y;AANxB;AACA;;AAEA;AACA,IAAI,aAAa,EAAjB;;AAEe,SAAS,YAAT,CAAuB,EAAvB,EAA2B,IAA3B,EAAiC;AAC5C,QAAI,OAAO,WAAW,MAAX,CAAkB;AAAA,eAAK,EAAE,CAAF,MAAS,EAAd;AAAA,KAAlB,EAAoC,CAApC,CAAX;AACA,WAAO,QAAQ,KAAK,CAAL,CAAf;;AAEA,QAAI,CAAC,IAAL,EAAW;AACP,mBAAW,IAAX,CAAgB,CAAC,EAAD,EAAK,EAAL,CAAhB;AACA,eAAO,WAAW,WAAW,MAAX,GAAkB,CAA7B,EAAgC,CAAhC,CAAP;AACH;;AAED,QAAI,CAAC,KAAK,IAAL,CAAL,EAAiB;AACb,aAAK,IAAL,IAAa,GAAG,YAAH,CAAgB,IAAhB,CAAb;AACH;AACD,WAAO,KAAK,IAAL,CAAP;AACH;;;;;;;;;;;ACnBD,IAAI,OAAO,EAAX;kBACe,I;;AAEf;;;;;;;;;;;;;;;;;AAgBA,KAAK,aAAL,GAAqB,UAAU,QAAV,EAAoB;AACrC,QAAI,SAAS,EAAb;;AAEA,SAAK,IAAI,IAAT,IAAiB,QAAjB,EAA2B;AACvB,YAAI,MAAM,IAAV,CADuB,CACP;AAChB,YAAI,UAAU,SAAS,IAAT,CAAd;AACA,YAAI,CAAJ;;AAEA;AACA,YAAI,OAAO,OAAP,KAAmB,QAAvB,EAAiC;AAC7B,mBAAO,IAAP,CAAY;AACR,sBAAM,OADE;AAER,wBAAQ,IAFA;AAGR,0BAHQ;AAIR,uBAAO,OAJC;AAKR,wBALQ;AAMR;AANQ,aAAZ;AAQH;AACD;AAVA,aAWK,IAAI,MAAM,OAAN,CAAc,OAAd,CAAJ,EAA4B;AAC7B;AACA,oBAAI,OAAO,QAAQ,CAAR,CAAP,KAAsB,QAA1B,EAAoC;AAChC;AACA,wBAAI,QAAQ,MAAR,IAAkB,CAAlB,IAAuB,QAAQ,MAAR,IAAkB,CAA7C,EAAgD;AAC5C,+BAAO,IAAP,CAAY;AACR,kCAAM,QAAQ,QAAQ,MADd;AAER,oCAAQ,QAAQ,MAAR,GAAiB,IAFjB;AAGR,sCAHQ;AAIR,mCAAO,OAJC;AAKR,oCALQ;AAMR;AANQ,yBAAZ;AAQH;AACD;AAVA,yBAWK,IAAI,QAAQ,MAAR,GAAiB,CAArB,EAAwB;AACzB,mCAAO,IAAP,CAAY;AACR,sCAAM,SADE;AAER,wCAAQ,KAFA;AAGR,sCAAM,OAAO,KAHL;AAIR,uCAAO,OAJC;AAKR,wCALQ;AAMR;AANQ,6BAAZ;AAQH;AACD;AACH;AACD;AAzBA,qBA0BK,IAAI,OAAO,QAAQ,CAAR,CAAP,KAAsB,QAA1B,EAAoC;AACrC,6BAAK,IAAE,CAAP,EAAU,IAAI,QAAQ,MAAtB,EAA8B,GAA9B,EAAmC;AAC/B,mCAAO,IAAP,CAAY;AACR,sCAAM,WADE;AAER,wCAAQ,IAFA;AAGR,sCAAM,OAAO,GAAP,GAAa,CAAb,GAAiB,GAHf;AAIR,uCAAO,QAAQ,CAAR,CAJC;AAKR,qCAAK,CALG;AAMR,0CAAU;AANF,6BAAZ;AAQH;AACJ;AACD;AAZK,yBAaA,IAAI,MAAM,OAAN,CAAc,QAAQ,CAAR,CAAd,KAA6B,OAAO,QAAQ,CAAR,EAAW,CAAX,CAAP,KAAyB,QAA1D,EAAoE;AACrE;AACA,gCAAI,QAAQ,CAAR,EAAW,MAAX,IAAqB,CAArB,IAA0B,QAAQ,CAAR,EAAW,MAAX,IAAqB,CAAnD,EAAsD;AAClD;AACA,qCAAK,IAAE,CAAP,EAAU,IAAI,QAAQ,MAAtB,EAA8B,GAA9B,EAAmC;AAC/B,2CAAO,IAAP,CAAY;AACR,8CAAM,QAAQ,QAAQ,CAAR,EAAW,MADjB;AAER,gDAAQ,QAAQ,CAAR,EAAW,MAAX,GAAoB,IAFpB;AAGR,8CAAM,OAAO,GAAP,GAAa,CAAb,GAAiB,GAHf;AAIR,+CAAO,QAAQ,CAAR,CAJC;AAKR,6CAAK,CALG;AAMR,kDAAU;AANF,qCAAZ;AAQH;AACJ;AACJ;AACD;AACH;AACD;AA3DK,iBA4DA,IAAI,OAAO,OAAP,KAAmB,SAAvB,EAAkC;AACnC,2BAAO,IAAP,CAAY;AACR,8BAAM,MADE;AAER,gCAAQ,IAFA;AAGR,kCAHQ;AAIR,+BAAO,OAJC;AAKR,gCALQ;AAMR;AANQ,qBAAZ;AAQH;AACD;AAVK,qBAWA,IAAI,OAAO,OAAP,KAAmB,QAAvB,EAAiC;AAClC,+BAAO,IAAP,CAAY;AACR,kCAAM,WADE;AAER,oCAAQ,IAFA;AAGR,sCAHQ;AAIR,mCAAO,OAJC;AAKR,oCALQ;AAMR;AANQ,yBAAZ;AAQH;AACJ;;AAED,WAAO,MAAP;AACH,CAxGD;;AA0GA;;;AAGA,KAAK,cAAL,GAAsB,UAAU,IAAV,EAAgB,KAAhB,EAAuB;AACzC,QAAI,IAAJ,EAAU,KAAV;;AAEA;AACA,QAAI,OAAO,KAAP,KAAiB,QAArB,EAA+B;AAC3B,eAAO,OAAP;AACH;AACD;AAHA,SAIK,IAAI,MAAM,OAAN,CAAc,KAAd,CAAJ,EAA0B;AAC3B;AACA,gBAAI,OAAO,MAAM,CAAN,CAAP,KAAoB,QAAxB,EAAkC;AAC9B;AACA,oBAAI,MAAM,MAAN,IAAgB,CAAhB,IAAqB,MAAM,MAAN,IAAgB,CAAzC,EAA4C;AACxC,2BAAO,QAAQ,MAAM,MAArB;AACH;AACD;AAHA,qBAIK;AAAE;AACH,+BAAO,OAAP;AACA,gCAAQ,MAAM,MAAd;AACH;AACD;AACH;AACD;AAZA,iBAaK,IAAI,OAAO,MAAM,CAAN,CAAP,KAAoB,QAAxB,EAAkC;AACnC,2BAAO,WAAP;AACA,4BAAQ,MAAM,MAAd;AACH;AACJ;AACD;AApBK,aAqBA,IAAI,OAAO,KAAP,KAAiB,SAArB,EAAgC;AACjC,uBAAO,MAAP;AACH;AACD;AAHK,iBAIA,IAAI,OAAO,KAAP,KAAiB,QAArB,EAA+B;AAChC,2BAAO,WAAP;AACH,iBAFI,MAGA;AACD,2BADC,CACO;AACX;;AAED;AACA,QAAI,WAAW,EAAf;AACA,gBAAe,IAAf,SAAuB,IAAvB;AACA,QAAI,KAAJ,EAAW;AACP,0BAAgB,KAAhB;AACH;AACD,gBAAY,KAAZ;;AAEA,WAAO,QAAP;AACH,CAjDD;;AAmDA;;;AAGA,KAAK,aAAL,GAAqB,UAAU,IAAV,EAAgB,KAAhB,EAAuB;AACxC,QAAI,MAAM,KAAK,cAAL,CAAoB,IAApB,EAA0B,KAA1B,CAAV;AACA,QAAI,CAAC,GAAL,EAAU;AACN;AACH;AACD,WAAO,aAAa,GAApB;AACH,CAND;;AAQA;;;;;AAKA,KAAK,gBAAL,GAAwB,UAAU,IAAV,EAAgB,MAAhB,EAAwB;AAC5C;AACA;AACA;AACA;AACA;AACA;;AAEA,QAAI,KAAK,IAAI,MAAJ,CAAW,yCAAyC,IAAzC,GAAgD,KAA3D,EAAkE,GAAlE,CAAT;AACA,QAAI,OAAO,KAAP,CAAa,EAAb,CAAJ,EAAsB;AAClB,eAAO,IAAP;AACH;AACD,WAAO,KAAP;AACH,CAbD;;AAeA;;;;AAIA,KAAK,kBAAL,GAA0B,UAAU,IAAV,EAAgB,MAAhB,EAAwB;AAC9C,QAAI,KAAK,IAAI,MAAJ,CAAW,QAAQ,IAAR,GAAe,KAA1B,EAAiC,GAAjC,CAAT;AACA,QAAI,OAAO,MAAP,CAAc,EAAd,KAAqB,CAAzB,EAA4B;AACxB,eAAO,IAAP;AACH;AACD,WAAO,KAAP;AACH,CAND;;AAQA;;;;;AAKA,KAAK,UAAL,GAAkB,UAAU,CAAV,EAAoB;AAAA,QAAP,CAAO,uEAAH,CAAG;;AAClC,QAAI,UAAJ;AACA,QAAI,MAAM,OAAN,CAAc,CAAd,CAAJ,EAAsB;AAClB,YAAI,EAAE,MAAF,KAAa,CAAjB,EAAoB;AAChB,gBAAI,6BAAI,CAAJ,IAAO,CAAP,GAAU,GAAV,CAAc,UAAd,CAAJ;AACH,SAFD,MAGK;AACD,mBAAO,CAAP;AACH;AACJ,KAPD,MAQK;AACD,YAAI,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,GAAV,CAAc,UAAd,CAAJ;AACH;;AAED,QAAI,KAAK,EAAE,KAAF,CAAQ;AAAA,eAAK,OAAO,CAAP,KAAa,QAAb,IAAyB,CAAC,MAAM,CAAN,CAA/B;AAAA,KAAR,CAAT,EAA2D;AACvD,eAAO,CAAP;AACH;AACJ,CAjBD;;AAmBA;;;;;AAKA,KAAK,UAAL,GAAkB,UAAU,CAAV,EAAoB;AAAA,QAAP,CAAO,uEAAH,CAAG;;AAClC,QAAI,UAAJ;AACA,QAAI,MAAM,OAAN,CAAc,CAAd,CAAJ,EAAsB;AAClB,YAAI,EAAE,MAAF,KAAa,CAAjB,EAAoB;AAChB,gBAAI,6BAAI,CAAJ,IAAO,CAAP,GAAU,GAAV,CAAc,UAAd,CAAJ;AACH,SAFD,MAGK;AACD,mBAAO,CAAP;AACH;AACJ,KAPD,MAQK;AACD,YAAI,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,GAAb,CAAiB,UAAjB,CAAJ;AACH;;AAED,QAAI,KAAK,EAAE,KAAF,CAAQ;AAAA,eAAK,OAAO,CAAP,KAAa,QAAb,IAAyB,CAAC,MAAM,CAAN,CAA/B;AAAA,KAAR,CAAT,EAA2D;AACvD,eAAO,CAAP;AACH;AACJ,CAjBD;;;;;;;;;;;;;IC1Pa,W,WAAA,W;AACZ,yBAAa,KAAb,EAAoB,KAApB,EAA2B;AAAA;;AACpB,cAAM,KAAN;AACA,aAAK,KAAL,GAAa,KAAb;AACA,aAAK,KAAL,GAAa,KAAb;AACH;;;;4BAEI,K,EAAO;AACX;AACA,gBAAI,KAAK,SAAL,CAAe,KAAK,KAApB,MAA+B,KAAK,SAAL,CAAe,KAAf,CAAnC,EAA0D;AACzD,qBAAK,KAAL,CAAW,KAAX;AACA,qBAAK,KAAL,GAAa,KAAb;AACA;AACD;;;;;;IAGgB,kB,GAEjB,4BAAa,EAAb,EAAiB;AAAA;;AACb,SAAK,QAAL,GAAgB,EAAhB;;AAEA;AACA,SAAK,QAAL,CAAc,OAAd,GAAwB,IAAxB;AACA,SAAK,QAAL,CAAc,YAAd,GAA6B,GAAG,IAAhC;;AAEA;AACA,SAAK,QAAL,CAAc,QAAd,GAAyB,KAAzB;AACA,SAAK,QAAL,CAAc,YAAd,GAA6B,GAAG,mBAAhC;AACA,SAAK,QAAL,CAAc,YAAd,GAA6B,GAAG,mBAAhC;AACA,SAAK,QAAL,CAAc,kBAAd,GAAmC,GAAG,GAAtC;AACA,SAAK,QAAL,CAAc,kBAAd,GAAmC,GAAG,mBAAtC;;AAEA;AACA,SAAK,QAAL,CAAc,WAAd,GAA4B,IAA5B;AACA,SAAK,QAAL,CAAc,UAAd,GAA2B,IAA3B;AACA,OAAG,SAAH,CAAa,GAAG,IAAhB,EAjBa,CAiBU;;AAE1B;AACG,SAAK,OAAL,GAAe,IAAI,WAAJ,CACX,EAAE,MAAM,KAAK,QAAL,CAAc,OAAtB,EAA+B,MAAM,KAAK,QAAL,CAAc,YAAnD,EADW,EAEjB,UAAC,KAAD,EAAW;AACV,YAAI,MAAM,IAAV,EAAgB;AACf,eAAG,MAAH,CAAU,GAAG,SAAb;AACM,eAAG,QAAH,CAAY,MAAM,IAAlB;AACN,SAHD,MAGO;AACN,eAAG,OAAH,CAAW,GAAG,SAAd;AACA;AACD,KATgB,CAAf;;AAYH;AACG,SAAK,QAAL,GAAgB,IAAI,WAAJ,CAAgB;AACxB,eAAO,KAAK,QAAL,CAAc,QADG;AAExB,aAAK,KAAK,QAAL,CAAc,YAFK;AAGxB,aAAK,KAAK,QAAL,CAAc,YAHK;AAIxB,mBAAW,KAAK,QAAL,CAAc,kBAJD;AAKxB,mBAAW,KAAK,QAAL,CAAc;AALD,KAAhB,EAOZ,UAAC,KAAD,EAAW;AAChB,YAAI,MAAM,KAAV,EAAiB;AACV,eAAG,MAAH,CAAU,GAAG,KAAb;;AAEM,gBAAI,MAAM,SAAN,IAAmB,MAAM,SAA7B,EAAwC;AACpC,mBAAG,iBAAH,CAAqB,MAAM,GAA3B,EAAgC,MAAM,GAAtC,EAA2C,MAAM,SAAjD,EAA4D,MAAM,SAAlE;AACH,aAFD,MAGK;AACD,mBAAG,SAAH,CAAa,MAAM,GAAnB,EAAwB,MAAM,GAA9B;AACH;AACb,SATD,MASO;AACN,eAAG,OAAH,CAAW,GAAG,KAAd;AACA;AACD,KApBiB,CAAhB;;AAuBH;AACG,SAAK,WAAL,GAAmB,IAAI,WAAJ,CACf,EAAE,aAAa,KAAK,QAAL,CAAc,WAA7B,EADe,EAErB,UAAC,KAAD,EAAW;AACP,WAAG,SAAH,CAAa,MAAM,WAAnB;AACH,KAJoB,CAAnB;;AAOH;AACG,SAAK,UAAL,GAAkB,IAAI,WAAJ,CACd,EAAE,YAAY,KAAK,QAAL,CAAc,UAA5B,EADc,EAEd,UAAC,KAAD,EAAW;AAChB,YAAI,MAAM,UAAV,EAAsB;AACf,eAAG,MAAH,CAAU,GAAG,UAAb;AACN,SAFD,MAEO;AACA,eAAG,OAAH,CAAW,GAAG,UAAd;AACN;AACD,KARmB,CAAlB;AAWH,C;;kBA9EgB,kB;;;;;;;;;qjBCjBrB;AACA;;AAEA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AAEA;;;;AACA;;;;;;;;;;AAEA;AACA,IAAM,YAAY,kBAAlB,C,CAAwC;AACxC,IAAM,mBAAmB,WAAzB,C,CAAwC;;IAEnB,a;AAEjB,2BAAY,EAAZ,EAAgB,aAAhB,EAA+B,eAA/B,EAAgD,OAAhD,EAAyD;AAAA;;AACrD,kBAAU,WAAW,EAArB;;AAEA,aAAK,EAAL,GAAU,EAAV;AACA,aAAK,OAAL,GAAe,IAAf;AACA,aAAK,QAAL,GAAgB,KAAhB;AACA,aAAK,SAAL,GAAiB,KAAjB;AACA,aAAK,KAAL,GAAa,IAAb;;AAEA;AACA,aAAK,OAAL,GAAe,OAAO,MAAP,CAAc,EAAd,EAAkB,QAAQ,OAAR,IAAiB,EAAnC,CAAf;;AAEA;AACA,aAAK,MAAL,GAAc,OAAO,MAAP,CAAc,EAAd,EAAkB,QAAQ,MAAR,IAAgB,EAAlC,CAAd;AACA,aAAK,YAAL,GAAoB,OAAO,MAAP,CAAc,EAAd,EAAkB,QAAQ,YAAR,IAAsB,EAAxC,CAApB;;AAEA;AACA,aAAK,UAAL,GAAkB,QAAQ,UAAR,IAAsB,EAAxC;;AAEA;AACA;AACA;AACA,aAAK,kBAAL,GAA0B,QAAQ,QAAlC;;AAEA,aAAK,QAAL,GAAgB,EAAhB,CAxBqD,CAwBjC;AACpB,aAAK,OAAL,GAAe,EAAf,CAzBqD,CAyBlC;;AAEnB,aAAK,aAAL,GAAqB,aAArB;AACA,aAAK,eAAL,GAAuB,eAAvB;;AAEA,aAAK,EAAL,GAAU,cAAc,EAAd,EAAV;AACA,aAAK,IAAL,GAAY,QAAQ,IAApB,CA/BqD,CA+B3B;AAC7B;;;;kCAES;AACN,iBAAK,EAAL,CAAQ,UAAR,CAAmB,IAAnB;AACA,iBAAK,EAAL,CAAQ,aAAR,CAAsB,KAAK,OAA3B;AACA,iBAAK,OAAL,GAAe,IAAf;AACA,iBAAK,QAAL,GAAgB,EAAhB;AACA,iBAAK,OAAL,GAAe,EAAf;AACA,iBAAK,QAAL,GAAgB,KAAhB;AACH;;AAED;;;;8BACM;AACF,gBAAI,CAAC,KAAK,QAAV,EAAoB;AAChB;AACH;;AAED,gBAAI,cAAc,OAAd,KAA0B,IAA9B,EAAoC;AAChC,qBAAK,EAAL,CAAQ,UAAR,CAAmB,KAAK,OAAxB;AACH;AACD,0BAAc,OAAd,GAAwB,IAAxB;AACH;;;kCAES;AAAA;;AACN,gBAAI,KAAK,SAAT,EAAoB;AAChB,sBAAM,IAAI,KAAJ,4CAAmD,KAAK,EAAxD,UAA+D,KAAK,IAApE,iCAAN;AACH;AACD,iBAAK,SAAL,GAAiB,IAAjB;AACA,iBAAK,QAAL,GAAgB,KAAhB;AACA,iBAAK,KAAL,GAAa,IAAb;;AAEA;AACA,iBAAK,sBAAL,GAA8B,KAAK,aAAnC;AACA,iBAAK,wBAAL,GAAgC,KAAK,eAArC;;AAEA;AACA,gBAAI,aAAa,KAAK,eAAL,EAAjB;;AAEA;AACA,gBAAI,UAAU,KAAK,eAAL,EAAd;;AAEA;AACA;AACA;AACA;;AAEA;AACA,gBAAI,SAAS,KAAK,oBAAL,EAAb;AACA,gBAAI,MAAJ;;AAEA,iBAAK,IAAI,GAAT,IAAgB,MAAhB,EAAwB;AACpB,oBAAI,QAAQ,OAAO,GAAP,CAAZ;AACA,oBAAI,CAAC,KAAD,IAAW,MAAM,OAAN,CAAc,KAAd,KAAwB,MAAM,MAAN,KAAiB,CAAxD,EAA4D;AACxD;AACH;;AAED;AACA,yBAAS,IAAI,MAAJ,CAAW,iCAAiC,GAAjC,GAAuC,OAAlD,EAA2D,GAA3D,CAAT;AACA,oBAAI,gBAAgB,KAAK,sBAAL,CAA4B,KAA5B,CAAkC,MAAlC,CAApB;AACA,oBAAI,kBAAkB,KAAK,wBAAL,CAA8B,KAA9B,CAAoC,MAApC,CAAtB;;AAEA;AACA,oBAAI,iBAAiB,IAAjB,IAAyB,mBAAmB,IAAhD,EAAsD;AAClD;AACH;;AAED;AACA,oBAAI,SAAS,EAAb;AACA,sBAAM,OAAN,CAAc,eAAO;AACjB;AACA;AACA,wBAAI,OAAU,IAAI,KAAd,UAAwB,IAAI,GAA5B,UAAoC,IAAI,GAA5C;AACA,6DAAuC,IAAvC;AACA,8BAAU,IAAI,MAAd;AACA,2DAAqC,IAArC;AACH,iBAPD;;AASA;AACA,oBAAI,iBAAiB,IAArB,EAA2B;AACvB,yBAAK,sBAAL,GAA8B,KAAK,sBAAL,CAA4B,OAA5B,CAAoC,MAApC,EAA4C,MAA5C,CAA9B;AACH;AACD,oBAAI,mBAAmB,IAAvB,EAA6B;AACzB,yBAAK,wBAAL,GAAgC,KAAK,wBAAL,CAA8B,OAA9B,CAAsC,MAAtC,EAA8C,MAA9C,CAAhC;AACH;;AAED;AACA,wBAAQ,mBAAmB,IAAI,OAAJ,CAAY,SAAZ,EAAuB,GAAvB,EAA4B,WAA5B,EAA3B,IAAwE,IAAxE;AACH;;AAED;AACA,iBAAK,sBAAL,GAA8B,KAAK,sBAAL,CAA4B,OAA5B,CAAoC,SAApC,EAA+C,EAA/C,CAA9B;AACA,iBAAK,wBAAL,GAAgC,KAAK,wBAAL,CAA8B,OAA9B,CAAsC,SAAtC,EAAiD,EAAjD,CAAhC;;AAEA;AACA,iBAAK,cAAL,CAAoB,KAAK,kBAAzB;;AAEA;AACA;AACA,gBAAI,YAAY,EAAhB;AACA,gBAAI,OAAO,KAAK,EAAL,CAAQ,wBAAR,CAAiC,KAAK,EAAL,CAAQ,eAAzC,EAA0D,KAAK,EAAL,CAAQ,UAAlE,CAAX;AACA,gBAAI,QAAQ,KAAK,SAAL,GAAiB,CAA7B,EAAgC;AAC5B,4BAAY,0BAAZ;AACH,aAFD,MAGK;AACD,4BAAY,4BAAZ;AACH;;AAED,oBAAQ,uBAAR,IAAmC,IAAnC;AACA,oBAAQ,yBAAR,IAAqC,KAArC;AACA,iBAAK,sBAAL,GACI,YACA,cAAc,iBAAd,CAAgC,OAAhC,CADA,GAEA,KAAK,sBAHT;;AAKA;AACA;AACA;AACA,oBAAQ,uBAAR,IAAmC,KAAnC;AACA,oBAAQ,yBAAR,IAAqC,IAArC;AACA,iBAAK,wBAAL,GACI,cAAc,oBAAd,CAAmC,UAAnC,IACA,SADA,GAEA,cAAc,iBAAd,CAAgC,OAAhC,CAFA,GAGA,KAAK,wBAJT;;AAMA;AACA,iBAAK,sBAAL,GAA8B,KAAK,sBAAL,CAA4B,OAA5B,CAAoC,gBAApC,EAAsD,EAAtD,CAA9B;AACA,iBAAK,wBAAL,GAAgC,KAAK,wBAAL,CAA8B,OAA9B,CAAsC,gBAAtC,EAAwD,EAAxD,CAAhC;;AAEA;AACA,gBAAI;AACA,qBAAK,OAAL,GAAe,cAAc,aAAd,CAA4B,KAAK,EAAjC,EAAqC,KAAK,OAA1C,EAAmD,KAAK,sBAAxD,EAAgF,KAAK,wBAArF,CAAf;AACA,qBAAK,QAAL,GAAgB,IAAhB;AACA,qBAAK,SAAL,GAAiB,KAAjB;AACH,aAJD,CAKA,OAAM,KAAN,EAAa;AACT,qBAAK,OAAL,GAAe,IAAf;AACA,qBAAK,QAAL,GAAgB,KAAhB;AACA,qBAAK,SAAL,GAAiB,KAAjB;AACA,qBAAK,KAAL,GAAa,KAAb;;AAEA;AACA,oBAAI,MAAM,IAAN,KAAe,QAAf,IAA2B,MAAM,IAAN,KAAe,UAA9C,EAA0D;AACtD,yBAAK,aAAL,GAAqB,MAAM,MAA3B;AACA,yBAAK,aAAL,CAAmB,OAAnB,CAA2B,aAAK;AAC5B,0BAAE,IAAF,GAAS,MAAM,IAAf;AACA,0BAAE,KAAF,GAAU,MAAK,KAAL,CAAW,MAAM,IAAjB,EAAuB,EAAE,IAAzB,CAAV;AACH,qBAHD;AAIH;AACD,sBAAM,KAAN;AACH;;AAED;AACA,iBAAK,sBAAL,GAA8B,IAA9B;AACA,iBAAK,wBAAL,GAAgC,IAAhC;;AAEA,iBAAK,GAAL;AACA,iBAAK,eAAL;AACA,iBAAK,iBAAL;AACH;;AAED;;;;0CACkB;AACd,gBAAI,CAAJ;AAAA,gBAAO,UAAU,EAAjB;AACA,iBAAK,CAAL,IAAU,cAAc,OAAxB,EAAiC;AAC7B,wBAAQ,CAAR,IAAa,cAAc,OAAd,CAAsB,CAAtB,CAAb;AACH;AACD,iBAAK,CAAL,IAAU,KAAK,OAAf,EAAwB;AACpB,wBAAQ,CAAR,IAAa,KAAK,OAAL,CAAa,CAAb,CAAb;AACH;AACD,mBAAO,OAAP;AACH;;AAED;;;;+CACuB;AACnB,gBAAI,YAAJ;AAAA,gBAAS,SAAS,EAAlB;;AAEA;AACA,iBAAK,GAAL,IAAY,cAAc,MAA1B,EAAkC;AAC9B,uBAAO,GAAP,IAAc,EAAd;;AAEA,oBAAI,MAAM,OAAN,CAAc,cAAc,MAAd,CAAqB,GAArB,CAAd,CAAJ,EAA8C;AAAA;;AAC1C,0CAAO,GAAP,GAAY,IAAZ,uCACO,cAAc,MAAd,CAAqB,GAArB,EAA0B,GAA1B,CAA8B,UAAC,MAAD,EAAS,GAAT,EAAiB;AAC9C,+BAAO,EAAE,QAAF,EAAO,cAAP,EAAe,QAAf,EAAoB,OAAO,eAA3B,EAAP;AACH,qBAFE,CADP;AAKH,iBAND,MAOK;AACD,2BAAO,GAAP,IAAc,CAAC,EAAE,QAAF,EAAO,QAAQ,cAAc,MAAd,CAAqB,GAArB,CAAf,EAA0C,KAAK,CAA/C,EAAkD,OAAO,eAAzD,EAAD,CAAd;AACH;AACJ;;AAED;AACA,iBAAK,GAAL,IAAY,KAAK,MAAjB,EAAyB;AACrB,uBAAO,GAAP,IAAc,OAAO,GAAP,KAAe,EAA7B;;AAEA,oBAAI,MAAM,OAAN,CAAc,KAAK,MAAL,CAAY,GAAZ,CAAd,CAAJ,EAAqC;AACjC,wBAAI,SAAU,KAAK,YAAL,IAAqB,KAAK,YAAL,CAAkB,GAAlB,CAAtB,IAAiD,EAA9D;AACA,wBAAI,YAAY,IAAhB;AAAA,wBAAsB,MAAM,CAA5B;;AAEA,yBAAK,IAAI,IAAE,CAAX,EAAc,IAAI,KAAK,MAAL,CAAY,GAAZ,EAAiB,MAAnC,EAA2C,GAA3C,EAAgD;AAC5C;AACA,4BAAI,OAAO,CAAP,MAAc,SAAlB,EAA6B;AACzB,wCAAY,OAAO,CAAP,CAAZ;AACA,kCAAM,CAAN;AACH;;AAED,+BAAO,GAAP,EAAY,IAAZ,CAAiB;AACb,oCADa;AAEb,oCAAQ,KAAK,MAAL,CAAY,GAAZ,EAAiB,CAAjB,CAFK;AAGb,oCAHa;AAIb,mCAAO,aAAa,KAAK;AAJZ,yBAAjB;;AAOA;AACH;AACJ,iBApBD,MAqBK;AACD;AACA;AACA,2BAAO,GAAP,EAAY,IAAZ,CAAiB,EAAE,QAAF,EAAO,QAAQ,KAAK,MAAL,CAAY,GAAZ,CAAf,EAAiC,KAAK,CAAtC,EAAyC,OAAO,KAAK,IAArD,EAAjB;AACH;AACJ;AACD,mBAAO,MAAP;AACH;;AAED;;;;uCACe,Q,EAAU;AACrB,gBAAI,CAAC,QAAL,EAAe;AACX;AACH;;AAED,gBAAI,KAAK,6BAAM,KAAK,sBAAX,CAAT;AACA,gBAAI,KAAK,6BAAM,KAAK,wBAAX,CAAT;AACA,gBAAI,MAAJ;AAAA,gBAAY,gBAAgB,EAA5B;AAAA,gBAAgC,gBAAgB,EAAhD;;AAEA;AACA,iBAAK,IAAI,IAAT,IAAiB,QAAjB,EAA2B;AACvB,oBAAI,aAAa,eAAK,gBAAL,CAAsB,IAAtB,EAA4B,EAA5B,CAAjB,CADuB,CAC2B;AAClD,oBAAI,aAAa,eAAK,gBAAL,CAAsB,IAAtB,EAA4B,EAA5B,CAAjB,CAFuB,CAE2B;;AAElD,oBAAI,CAAC,UAAD,IAAe,CAAC,UAApB,EAAgC;AAC5B,6BAAS,eAAK,aAAL,CAAmB,IAAnB,EAAyB,SAAS,IAAT,CAAzB,CAAT;AACA,wBAAI,CAAC,MAAL,EAAa;AACT;AACH;;AAED,wBAAI,CAAC,UAAL,EAAiB;AACb,2CAAI,OAAJ,eAAwB,KAAK,IAA7B,UAAsC,IAAtC,oDAAwF,MAAxF;AACA,sCAAc,IAAd,CAAmB,MAAnB;AACH;;AAED,wBAAI,CAAC,UAAL,EAAiB;AACb,2CAAI,OAAJ,eAAwB,KAAK,IAA7B,UAAsC,IAAtC,sDAA0F,MAA1F;AACA,sCAAc,IAAd,CAAmB,MAAnB;AACH;AACJ;AACJ;;AAED;AACA;AACA;AACA,gBAAI,cAAc,MAAd,GAAuB,CAA3B,EAA8B;AAC1B,qBAAK,sBAAL,GAA8B,cAAc,IAAd,CAAmB,IAAnB,IAA2B,KAAK,sBAA9D;AACH;;AAED,gBAAI,cAAc,MAAd,GAAuB,CAA3B,EAA8B;AAC1B,qBAAK,wBAAL,GAAgC,cAAc,IAAd,CAAmB,IAAnB,IAA2B,KAAK,wBAAhE;AACH;AACJ;;AAED;;;;oCACY,Q,EAAqC;AAAA,gBAA3B,kBAA2B,uEAAN,IAAM;;AAC7C,gBAAI,CAAC,KAAK,QAAV,EAAoB;AAChB;AACH;;AAED;;AAEA;AACA;AACA;AACA;AACA,gBAAI,kBAAJ,EAAwB;AACpB,qBAAK,YAAL,GAAoB,CAApB;AACH;;AAED;AACA,gBAAM,SAAS,eAAK,aAAL,CAAmB,QAAnB,CAAf;;AAEA;AACA,iBAAK,IAAI,IAAE,CAAX,EAAc,IAAI,OAAO,MAAzB,EAAiC,GAAjC,EAAsC;AAClC,oBAAM,UAAU,OAAO,CAAP,CAAhB;AACA,oBAAI,QAAQ,IAAR,KAAiB,WAArB,EAAkC;AAC9B;AACA,yBAAK,iBAAL,CAAuB,QAAQ,IAA/B,EAAqC,QAAQ,KAA7C;AACH,iBAHD,MAIK;AACD,yBAAK,OAAL,CAAa,QAAQ,MAArB,EAA6B,QAAQ,IAArC,EAA2C,QAAQ,KAAnD;AACH;AACJ;AACJ;;AAED;;;;qCACa,M,EAAQ;AACjB,gBAAI,WAAW,UAAU,KAAK,QAA9B;AACA,iBAAK,IAAI,CAAT,IAAc,QAAd,EAAwB;AACpB,oBAAI,UAAU,KAAK,QAAL,CAAc,CAAd,CAAd;AACA,oBAAI,OAAJ,EAAa;AACT,4BAAQ,WAAR,GAAsB,QAAQ,KAA9B;AACH;AACJ;AACD,iBAAK,kBAAL,GAA0B,KAAK,YAAL,IAAqB,CAA/C;AACH;;AAED;;;;wCACgB,M,EAAQ;AACpB,gBAAI,WAAW,UAAU,KAAK,QAA9B;AACA,iBAAK,IAAI,CAAT,IAAc,QAAd,EAAwB;AACpB,oBAAI,UAAU,KAAK,QAAL,CAAc,CAAd,CAAd;AACA,oBAAI,WAAW,QAAQ,WAAvB,EAAoC;AAChC,4BAAQ,KAAR,GAAgB,QAAQ,WAAxB;AACA,yBAAK,aAAL,CAAmB,OAAnB;AACH;AACJ;AACD,iBAAK,YAAL,GAAoB,KAAK,kBAAL,IAA2B,CAA/C;AACH;;AAED;;;;0CACkB,Y,EAAc,Y,EAAc;AAC1C,gBAAI,UAAU,kBAAQ,QAAR,CAAiB,YAAjB,CAAd;AACA,gBAAI,WAAW,IAAf,EAAqB;AACjB,mCAAI,MAAJ,6BAAoC,YAApC;AACA;AACH;;AAED,oBAAQ,IAAR,CAAa,KAAK,YAAlB;AACA,iBAAK,OAAL,CAAa,IAAb,EAAmB,YAAnB,EAAiC,KAAK,YAAtC;AACA,iBAAK,YAAL,GAT0C,CASrB;AACxB;;AAED;AACA;;;;gCACQ,M,EAAQ,I,EAAM,K,EAAO;AAAE;AAC3B,gBAAI,CAAC,KAAK,QAAV,EAAoB;AAChB;AACH;;AAED,iBAAK,QAAL,CAAc,IAAd,IAAsB,KAAK,QAAL,CAAc,IAAd,KAAuB,EAA7C;AACA,gBAAI,UAAU,KAAK,QAAL,CAAc,IAAd,CAAd;AACA,oBAAQ,IAAR,GAAe,IAAf;AACA,gBAAI,QAAQ,QAAR,KAAqB,SAAzB,EAAoC;AAChC,wBAAQ,QAAR,GAAmB,KAAK,EAAL,CAAQ,kBAAR,CAA2B,KAAK,OAAhC,EAAyC,IAAzC,CAAnB;AACH;AACD,oBAAQ,MAAR,GAAiB,MAAjB;AACA,oBAAQ,KAAR,GAAgB,KAAhB;AACA,iBAAK,aAAL,CAAmB,OAAnB;AACH;;AAED;;;;sCACc,O,EAAS;AACnB,gBAAI,CAAC,KAAK,QAAV,EAAoB;AAChB;AACH;;AAED,gBAAI,CAAC,OAAD,IAAY,QAAQ,QAAR,IAAoB,IAApC,EAA0C;AACtC;AACH;;AAED,iBAAK,GAAL;AACA,iBAAK,aAAL,CAAmB,OAAnB;AACH;;AAED;;;;sCACc,O,EAAQ;AAClB,gBAAI,WAAW,QAAQ,QAAvB;AACA,gBAAI,QAAQ,QAAQ,KAApB;;AAEA,oBAAQ,QAAQ,MAAhB;AACI,qBAAK,IAAL;AACI,yBAAK,EAAL,CAAQ,SAAR,CAAkB,QAAlB,EAA4B,KAA5B;AACA;AACJ,qBAAK,IAAL;AACI,yBAAK,EAAL,CAAQ,SAAR,CAAkB,QAAlB,EAA4B,KAA5B;AACA;AACJ,qBAAK,IAAL;AACI,yBAAK,EAAL,CAAQ,SAAR,CAAkB,QAAlB,EAA4B,MAAM,CAAN,CAA5B,EAAsC,MAAM,CAAN,CAAtC;AACA;AACJ,qBAAK,IAAL;AACI,yBAAK,EAAL,CAAQ,SAAR,CAAkB,QAAlB,EAA4B,MAAM,CAAN,CAA5B,EAAsC,MAAM,CAAN,CAAtC,EAAgD,MAAM,CAAN,CAAhD;AACA;AACJ,qBAAK,IAAL;AACI,yBAAK,EAAL,CAAQ,SAAR,CAAkB,QAAlB,EAA4B,MAAM,CAAN,CAA5B,EAAsC,MAAM,CAAN,CAAtC,EAAgD,MAAM,CAAN,CAAhD,EAA0D,MAAM,CAAN,CAA1D;AACA;AACJ,qBAAK,KAAL;AACI,yBAAK,EAAL,CAAQ,UAAR,CAAmB,QAAnB,EAA6B,KAA7B;AACA;AACJ,qBAAK,KAAL;AACI,yBAAK,EAAL,CAAQ,UAAR,CAAmB,QAAnB,EAA6B,KAA7B;AACA;AACJ,qBAAK,KAAL;AACI,yBAAK,EAAL,CAAQ,UAAR,CAAmB,QAAnB,EAA6B,KAA7B;AACA;AACJ,qBAAK,KAAL;AACI,yBAAK,EAAL,CAAQ,UAAR,CAAmB,QAAnB,EAA6B,KAA7B;AACA;AACJ,qBAAK,KAAL;AACI,yBAAK,EAAL,CAAQ,UAAR,CAAmB,QAAnB,EAA6B,KAA7B;AACA;AACJ,qBAAK,KAAL;AACI,yBAAK,EAAL,CAAQ,UAAR,CAAmB,QAAnB,EAA6B,KAA7B;AACA;AACJ,qBAAK,WAAL;AACI,yBAAK,EAAL,CAAQ,gBAAR,CAAyB,QAAzB,EAAmC,KAAnC,EAA0C,KAA1C;AACA;AACJ,qBAAK,WAAL;AACI,yBAAK,EAAL,CAAQ,gBAAR,CAAyB,QAAzB,EAAmC,KAAnC,EAA0C,KAA1C;AACA;AAvCR;AAyCH;;AAED;;;;0CACkB;AACd,gBAAI,CAAC,KAAK,QAAV,EAAoB;AAChB;AACH;;AAED,iBAAK,IAAI,CAAT,IAAc,KAAK,QAAnB,EAA6B;AACzB,oBAAI,UAAU,KAAK,QAAL,CAAc,CAAd,CAAd;AACA,wBAAQ,QAAR,GAAmB,KAAK,EAAL,CAAQ,kBAAR,CAA2B,KAAK,OAAhC,EAAyC,CAAzC,CAAnB;AACA,qBAAK,aAAL,CAAmB,OAAnB;AACH;AACJ;;;4CAEmB;AAChB;AACA;AACA;AACA;AACA,iBAAK,OAAL,GAAe,EAAf;AACH;;AAED;;;;kCACU,I,EAAM;AACZ,gBAAI,CAAC,KAAK,QAAV,EAAoB;AAChB;AACH;;AAED,gBAAI,SAAU,KAAK,OAAL,CAAa,IAAb,IAAqB,KAAK,OAAL,CAAa,IAAb,KAAsB,EAAzD;AACA,gBAAI,OAAO,QAAP,IAAmB,IAAvB,EAA6B;AACzB,uBAAO,MAAP;AACH;;AAED,mBAAO,IAAP,GAAc,IAAd;AACA,mBAAO,QAAP,GAAkB,KAAK,EAAL,CAAQ,iBAAR,CAA0B,KAAK,OAA/B,EAAwC,IAAxC,CAAlB;;AAEA;AACA;AACA;;AAEA,mBAAO,MAAP;AACH;;AAED;;;;+BACO,I,EAAM;AACT,gBAAI,SAAS,QAAb,EAAuB;AACnB,uBAAO,KAAK,sBAAZ;AACH,aAFD,MAGK,IAAI,SAAS,UAAb,EAAyB;AAC1B,uBAAO,KAAK,wBAAZ;AACH;AACJ;;AAED;;;;8BACM,I,EAAM;AACR,gBAAI,SAAS,KAAK,MAAL,CAAY,IAAZ,CAAb;AACA,gBAAI,MAAJ,EAAY;AACR,uBAAO,OAAO,KAAP,CAAa,IAAb,CAAP;AACH;AACD,mBAAO,EAAP;AACH;;AAED;;;;6BACK,I,EAAM,G,EAAK;AACZ,gBAAI,SAAS,KAAK,KAAL,CAAW,IAAX,CAAb;AACA,gBAAI,MAAJ,EAAY;AACR,uBAAO,OAAO,GAAP,CAAP;AACH;AACJ;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;8BACM,I,EAAM,G,EAAK;AACb,gBAAI,QAAQ,KAAK,KAAL,CAAW,IAAX,CAAZ;AACA,gBAAI,cAAJ;AACA,iBAAK,IAAI,IAAE,CAAX,EAAc,IAAI,GAAJ,IAAW,IAAI,MAAM,MAAnC,EAA2C,GAA3C,EAAgD;AAC5C,oBAAI,OAAO,MAAM,CAAN,CAAX;AACA,oBAAI,QAAQ,KAAK,KAAL,CAAW,qEAAX,CAAZ;AACA,oBAAI,SAAS,MAAM,MAAN,GAAe,CAA5B,EAA+B;AAC3B;AACA,4BAAQ;AACJ,+BAAO,MAAM,CAAN,CADH;AAEJ,8BAAM,MAAM,CAAN,CAFF;AAGJ,6BAAK,MAAM,CAAN;AAHD,qBAAR;AAKH,iBAPD,MAQK;AACD,4BAAQ,KAAK,KAAL,CAAW,mEAAX,CAAR;AACA,wBAAI,SAAS,MAAM,MAAN,GAAe,CAA5B,EAA+B;AAC3B,gCAAQ,IAAR,CAD2B,CACb;AACjB;AACJ;;AAED;AACA,oBAAI,KAAJ,EAAW;AACP;AACA,0BAAM,IAAN,GAAc,MAAM,IAAN,IAAc,IAAf,GAAuB,CAAC,CAAxB,GAA4B,MAAM,IAAN,GAAa,CAAtD;AACA,0BAAM,MAAN,GAAe,IAAf;AACH;AACJ;AACD,mBAAO,KAAP;AACH;;AAED;AACA;;;;0CACkB;AAAA;;AACd,gBAAI,OAAO,EAAX;AACA,iBAAK,UAAL,CAAgB,OAAhB,CAAwB,gBAAQ;AAC5B,oBAAI,MAAM,0BAAa,OAAK,EAAlB,EAAsB,IAAtB,CAAV;AACA,oBAAI,6BAA2B,IAA/B;;AAEA,uBAAK,OAAL,CAAa,GAAb,IAAqB,OAAO,IAA5B;;AAEA,oBAAI,GAAJ,EAAS;AACL,yBAAK,IAAL,CAAU,IAAV;AACH,iBAFD,MAGK;AACD,uCAAI,OAAJ,oCAA4C,IAA5C;AACH;AACJ,aAZD;AAaA,mBAAO,IAAP;AACH;;;;;;AAKL;;;kBA9kBqB,a;AA+kBrB,cAAc,EAAd,GAAmB,CAAnB,C,CAAwC;AACxC,cAAc,OAAd,GAAwB,IAAxB,C,CAAwC;;AAExC;AACA,cAAc,OAAd,GAAwB,EAAxB;AACA,cAAc,MAAd,GAAuB,EAAvB;;AAEA;AACA,cAAc,KAAd,GAAsB,YAAY;AAC9B,kBAAc,kBAAd,GAAmC,EAAnC,CAD8B,CACU;AACxC,kBAAc,iBAAd,GAAkC,EAAlC,CAF8B,CAEU;AAC3C,CAHD;AAIA,cAAc,KAAd;;AAEA;AACA,cAAc,iBAAd,GAAkC,UAAU,OAAV,EAAmB;AACjD,QAAI,aAAa,EAAjB;AACA,SAAK,IAAI,CAAT,IAAc,OAAd,EAAuB;AACnB,YAAI,QAAQ,CAAR,KAAc,IAAd,IAAsB,QAAQ,CAAR,MAAe,KAAzC,EAAgD;AAC5C;AACH,SAFD,MAGK,IAAI,OAAO,QAAQ,CAAR,CAAP,KAAsB,SAAtB,IAAmC,QAAQ,CAAR,MAAe,IAAtD,EAA4D;AAAE;AAC/D,0BAAc,aAAa,CAAb,GAAiB,IAA/B;AACH,SAFI,MAGA,IAAI,OAAO,QAAQ,CAAR,CAAP,KAAsB,QAAtB,IAAkC,KAAK,KAAL,CAAW,QAAQ,CAAR,CAAX,MAA2B,QAAQ,CAAR,CAAjE,EAA6E;AAAE;AAChF,0BAAc,aAAa,CAAb,GAAiB,GAAjB,GAAuB,QAAQ,CAAR,EAAW,OAAX,CAAmB,CAAnB,CAAvB,GAA+C,IAA7D;AACH,SAFI,MAGA;AAAE;AACH,0BAAc,aAAa,CAAb,GAAiB,GAAjB,GAAuB,QAAQ,CAAR,CAAvB,GAAoC,IAAlD;AACH;AACJ;AACD,WAAO,UAAP;AACH,CAjBD;;AAmBA;AACA,cAAc,oBAAd,GAAqC,UAAU,UAAV,EAAsB;AACvD,iBAAa,cAAc,EAA3B;AACA,QAAI,MAAM,EAAV;AACA,eAAW,OAAX,CAAmB,eAAO;AACtB,8BAAoB,GAApB,wBAA0C,GAA1C;AACH,KAFD;AAGA,WAAO,GAAP;AACH,CAPD;;AASA,cAAc,QAAd,GAAyB,UAAU,GAAV,EAA0B;AAAA;;AAC/C,kBAAc,MAAd,CAAqB,GAArB,IAA4B,cAAc,MAAd,CAAqB,GAArB,KAA6B,EAAzD;;AAD+C,sCAAR,MAAQ;AAAR,cAAQ;AAAA;;AAE/C,2CAAc,MAAd,CAAqB,GAArB,GAA0B,IAA1B,8BAAkC,MAAlC;AACH,CAHD;;AAKA;AACA,cAAc,WAAd,GAA4B,UAAU,GAAV,EAAe;AACvC,kBAAc,MAAd,CAAqB,GAArB,IAA4B,EAA5B;AACH,CAFD;;AAIA,cAAc,YAAd,GAA6B,UAAU,GAAV,EAA0B;AACnD,kBAAc,WAAd,CAA0B,GAA1B;;AADmD,uCAAR,MAAQ;AAAR,cAAQ;AAAA;;AAEnD,kBAAc,QAAd,uBAAuB,GAAvB,SAA+B,MAA/B;AACH,CAHD;;AAKA;AACA;AACA,cAAc,aAAd,GAA8B,UAAU,EAAV,EAAc,OAAd,EAAuB,oBAAvB,EAA6C,sBAA7C,EAAqE;AAC/F;AACA,QAAI,MAAM,oBAAW,GAAG,WAAH,GAAiB,IAAjB,GAAwB,oBAAxB,GAA+C,IAA/C,GAAsD,sBAAjE,CAAV;AACA,QAAI,cAAc,kBAAd,CAAiC,GAAjC,CAAJ,EAA2C;AACvC,2BAAI,OAAJ,EAAa,4CAAb;AACA,eAAO,cAAc,kBAAd,CAAiC,GAAjC,CAAP;AACH;;AAED,QAAI,gBAAgB,cAAc,YAAd,CAA2B,EAA3B,EAA+B,oBAA/B,EAAqD,GAAG,aAAxD,CAApB;AACA,QAAI,kBAAkB,cAAc,YAAd,CAA2B,EAA3B,EAA+B,sBAA/B,EAAuD,GAAG,eAA1D,CAAtB;;AAEA,OAAG,UAAH,CAAc,IAAd;AACA,QAAI,WAAW,IAAf,EAAqB;AACjB,YAAI,cAAc,GAAG,kBAAH,CAAsB,OAAtB,CAAlB;AACA,aAAI,IAAI,IAAI,CAAZ,EAAe,IAAI,YAAY,MAA/B,EAAuC,GAAvC,EAA4C;AACxC,eAAG,YAAH,CAAgB,OAAhB,EAAyB,YAAY,CAAZ,CAAzB;AACH;AACJ,KALD,MAKO;AACH,kBAAU,GAAG,aAAH,EAAV;AACH;;AAED,QAAI,iBAAiB,IAAjB,IAAyB,mBAAmB,IAAhD,EAAsD;AAClD,eAAO,OAAP;AACH;;AAED,OAAG,YAAH,CAAgB,OAAhB,EAAyB,aAAzB;AACA,OAAG,YAAH,CAAgB,OAAhB,EAAyB,eAAzB;;AAEA,OAAG,WAAH,CAAe,OAAf;;AAEA;;AAEA,QAAI,CAAC,GAAG,mBAAH,CAAuB,OAAvB,EAAgC,GAAG,WAAnC,CAAL,EAAsD;AAClD,YAAI,UAAU,IAAI,KAAJ,yDAES,GAAG,mBAAH,CAAuB,OAAvB,EAAgC,GAAG,eAAnC,CAFT,6BAGD,GAAG,QAAH,EAHC,yDAKR,oBALQ,2DAOR,sBAPQ,CAAd;;AASA,cAAM,OAAO,MAAP,CAAc,IAAI,KAAJ,CAAU,OAAV,CAAd,EAAkC,EAAE,MAAM,SAAR,EAAlC,CAAN;AACH;;AAED,kBAAc,kBAAd,CAAiC,GAAjC,IAAwC,OAAxC,CA7C+F,CA6C9C;AACjD,WAAO,OAAP;AACH,CA/CD;;AAiDA;AACA,cAAc,YAAd,GAA6B,UAAU,EAAV,EAAc,MAAd,EAAsB,KAAtB,EAA6B;AACtD;AACA,QAAI,MAAM,oBAAW,GAAG,WAAH,GAAiB,IAAjB,GAAwB,MAAnC,CAAV;AACA,QAAI,cAAc,iBAAd,CAAgC,GAAhC,CAAJ,EAA0C;AACtC,2BAAI,OAAJ,EAAa,2CAAb;AACA,eAAO,cAAc,iBAAd,CAAgC,GAAhC,CAAP;AACH;;AAED,QAAI,SAAS,GAAG,YAAH,CAAgB,KAAhB,CAAb;;AAEA,OAAG,YAAH,CAAgB,MAAhB,EAAwB,MAAxB;AACA,OAAG,aAAH,CAAiB,MAAjB;;AAEA,QAAI,CAAC,GAAG,kBAAH,CAAsB,MAAtB,EAA8B,GAAG,cAAjC,CAAL,EAAuD;AACnD,YAAI,OAAQ,UAAU,GAAG,aAAb,GAA6B,QAA7B,GAAwC,UAApD;AACA,YAAI,UAAU,GAAG,gBAAH,CAAoB,MAApB,CAAd;AACA,YAAI,SAAS,8BAAkB,OAAlB,CAAb;AACA,cAAM,OAAO,MAAP,CAAc,IAAI,KAAJ,CAAU,OAAV,CAAd,EAAkC,EAAE,UAAF,EAAQ,cAAR,EAAlC,CAAN;AACH;;AAED,kBAAc,iBAAd,CAAgC,GAAhC,IAAuC,MAAvC,CApBsD,CAoBP;AAC/C,WAAO,MAAP;AACH,CAtBD;;;;;;;;;qjBC9sBA;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;;;;;AAEA;IACqB,O;AAEjB,qBAAY,EAAZ,EAAgB,IAAhB,EAAoC;AAAA,YAAd,OAAc,uEAAJ,EAAI;;AAAA;;AAChC,kBAAU,QAAQ,YAAR,CAAqB,OAArB,CAAV,CADgC,CACS;AACzC,aAAK,EAAL,GAAU,EAAV;AACA,aAAK,OAAL,GAAe,GAAG,aAAH,EAAf;AACA,YAAI,KAAK,OAAT,EAAkB;AACd,iBAAK,KAAL,GAAa,IAAb;AACH;AACD,aAAK,IAAL;;AAEA,aAAK,IAAL,GAAY,IAAZ;AACA,aAAK,YAAL,GAAoB,CAApB;AACA,aAAK,WAAL,GAAmB,IAAnB;AACA,aAAK,OAAL,GAAe,IAAf,CAZgC,CAYR;AACxB,aAAK,MAAL,GAAc,KAAd,CAbgC,CAaR;AACxB,aAAK,SAAL,GAAiB,QAAQ,SAAzB;AACA,aAAK,OAAL,GAAe,QAAQ,OAAvB;AACA,aAAK,SAAL,GAAiB,EAAjB,CAhBgC,CAgBR;AACxB,aAAK,KAAL,GAAa,EAAb,CAjBgC,CAiBR;;AAExB;AACA;AACA,aAAK,OAAL,CAAa,CAAb,EAAgB,CAAhB,EAAmB,IAAI,UAAJ,CAAe,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,GAAV,CAAf,CAAnB,EAAmD,EAAE,WAAW,SAAb,EAAnD;;AAEA;AACA,YAAI,QAAQ,QAAR,CAAiB,KAAK,IAAtB,CAAJ,EAAiC;AAC7B;AACA,iBAAK,YAAL,GAAoB,QAAQ,QAAR,CAAiB,KAAK,IAAtB,EAA4B,YAAhD;AACA,oBAAQ,QAAR,CAAiB,KAAK,IAAtB,EAA4B,YAA5B,GAA2C,CAA3C,CAH6B,CAGiB;AAC9C,oBAAQ,QAAR,CAAiB,KAAK,IAAtB,EAA4B,OAA5B;AACH;;AAED;AACA,gBAAQ,QAAR,CAAiB,KAAK,IAAtB,IAA8B,IAA9B;AACA,gBAAQ,eAAR,CAAwB,KAAK,IAA7B,IAAqC,KAAK,SAAL,CAAe,OAAO,MAAP,CAAc,EAAE,UAAF,EAAd,EAAwB,OAAxB,CAAf,CAArC;;AAEA,aAAK,IAAL,CAAU,OAAV;AACA,2BAAI,OAAJ,wBAAiC,KAAK,IAAtC;AACH;;AAED;;;;;kCACwB;AAAA,2FAAJ,EAAI;AAAA,gBAAd,KAAc,QAAd,KAAc;;AACpB,gBAAI,KAAK,YAAL,GAAoB,CAApB,IAAyB,CAAC,KAA9B,EAAqC;AACjC,mCAAI,OAAJ,iBAAyB,KAAK,IAA9B,sDAAiF,KAAK,YAAtF;AACA;AACH;;AAED,gBAAI,CAAC,KAAK,KAAV,EAAiB;AACb;AACH;AACD,iBAAK,EAAL,CAAQ,aAAR,CAAsB,KAAK,OAA3B;AACA,iBAAK,OAAL,GAAe,IAAf;AACA,mBAAO,KAAK,IAAZ;AACA,iBAAK,IAAL,GAAY,IAAZ;AACA,mBAAO,QAAQ,QAAR,CAAiB,KAAK,IAAtB,CAAP;AACA,mBAAO,QAAQ,eAAR,CAAwB,KAAK,IAA7B,CAAP;AACA,iBAAK,KAAL,GAAa,KAAb;AACA,+BAAI,OAAJ,0BAAmC,KAAK,IAAxC;AACH;;;iCAES;AACN,iBAAK,YAAL;AACH;;;kCAEU;AACP,gBAAI,KAAK,YAAL,IAAqB,CAAzB,EAA4B;AACxB,mCAAI,OAAJ,iBAAyB,KAAK,IAA9B,qDAAgF,KAAK,YAArF;AACH;;AAED,iBAAK,YAAL;AACA,gBAAI,KAAK,YAAL,IAAqB,CAAzB,EAA4B;AACxB,qBAAK,OAAL;AACH;AACJ;;;+BAEc;AAAA,gBAAV,IAAU,uEAAH,CAAG;;AACX,gBAAI,CAAC,KAAK,KAAV,EAAiB;AACb;AACH;;AAED,gBAAI,QAAQ,UAAR,KAAuB,IAA3B,EAAiC;AAC7B,qBAAK,EAAL,CAAQ,aAAR,CAAsB,KAAK,EAAL,CAAQ,QAAR,GAAmB,IAAzC;AACA,wBAAQ,UAAR,GAAqB,IAArB;AACA,wBAAQ,YAAR,GAAuB,IAAvB,CAH6B,CAGA;AAChC;;AAED,gBAAI,QAAQ,YAAR,KAAyB,KAAK,OAAlC,EAA2C;AACvC,qBAAK,EAAL,CAAQ,WAAR,CAAoB,KAAK,EAAL,CAAQ,UAA5B,EAAwC,KAAK,OAA7C;AACA,wBAAQ,YAAR,GAAuB,KAAK,OAA5B;AACH;AACJ;;;6BAEI,O,EAAS;AAAA;;AACV,gBAAI,CAAC,OAAL,EAAc;AACV,uBAAO,KAAK,OAAL,IAAgB,QAAQ,OAAR,CAAgB,IAAhB,CAAvB;AACH;;AAED,iBAAK,OAAL,GAAe,IAAf;AACA,gBAAI,OAAO,QAAQ,GAAf,KAAuB,QAA3B,EAAqC;AACjC,qBAAK,WAAL,GAAmB,KAAnB;AACA,qBAAK,MAAL,CAAY,QAAQ,GAApB,EAAyB,OAAzB;AACH,aAHD,MAGO,IAAI,QAAQ,OAAZ,EAAqB;AACxB,qBAAK,WAAL,GAAmB,SAAnB;AACA,qBAAK,UAAL,CAAgB,QAAQ,OAAxB,EAAiC,OAAjC;AACH,aAHM,MAGA,IAAI,QAAQ,IAAR,IAAgB,QAAQ,KAAxB,IAAiC,QAAQ,MAA7C,EAAqD;AACxD,qBAAK,WAAL,GAAmB,MAAnB;AACA,qBAAK,OAAL,CAAa,QAAQ,KAArB,EAA4B,QAAQ,MAApC,EAA4C,QAAQ,IAApD,EAA0D,OAA1D;AACH;;AAED,iBAAK,OAAL,GACK,KAAK,OAAL,IAAgB,KAAK,OAAL,CAAa,IAAb,CAAkB,YAAM;AAAE,sBAAK,gBAAL,GAAyB;AAAc,aAAjE,CAAjB,IACA,QAAQ,OAAR,CAAgB,IAAhB,CAFJ;AAGA,mBAAO,KAAK,OAAZ;AACH;;AAED;;;;+BACO,G,EAAmB;AAAA;;AAAA,gBAAd,OAAc,uEAAJ,EAAI;;AACtB,gBAAI,CAAC,KAAK,KAAV,EAAiB;AACb;AACH;;AAED,iBAAK,GAAL,GAAW,GAAX,CALsB,CAKN;;AAEhB,iBAAK,OAAL,GAAe,IAAI,OAAJ,CAAY,UAAC,OAAD,EAAU,MAAV,EAAqB;AAC5C,oBAAI,QAAQ,IAAI,KAAJ,EAAZ;AACA,sBAAM,MAAN,GAAe,YAAM;AACjB,wBAAI;AACA,+BAAK,UAAL,CAAgB,KAAhB,EAAuB,OAAvB;AACH,qBAFD,CAGA,OAAO,CAAP,EAAU;AACN,+BAAK,MAAL,GAAc,KAAd;AACA,2CAAI,MAAJ,iBAAwB,OAAK,IAA7B,kCAA4D,OAAK,GAAjE,SAAyE,CAAzE,EAA4E,OAA5E;AACA,gCAAQ,OAAR,CAAgB,SAAhB,EAA2B,EAAE,0CAAwC,OAAK,GAA/C,EAAsD,OAAO,CAA7D,EAAgE,SAAS,OAAzE,EAA3B;AACH;;AAED,2BAAK,MAAL,GAAc,IAAd;AACA;AACH,iBAZD;AAaA,sBAAM,OAAN,GAAgB,aAAK;AACjB;AACA,2BAAK,MAAL,GAAc,KAAd;AACA,uCAAI,MAAJ,iBAAwB,OAAK,IAA7B,kCAA4D,OAAK,GAAjE,SAAyE,CAAzE,EAA4E,OAA5E;AACA,4BAAQ,OAAR,CAAgB,SAAhB,EAA2B,EAAE,0CAAwC,OAAK,GAA/C,EAAsD,OAAO,CAA7D,EAAgE,SAAS,OAAzE,EAA3B;AACA;AACH,iBAND;;AAQA;AACA;AACA,oBAAI,EAAE,gBAAM,QAAN,MAAoB,OAAK,GAAL,CAAS,KAAT,CAAe,CAAf,EAAkB,CAAlB,MAAyB,OAA/C,CAAJ,EAA6D;AACzD,0BAAM,WAAN,GAAoB,WAApB;AACH;;AAED,sBAAM,GAAN,GAAY,OAAK,GAAjB;AACH,aA9Bc,CAAf;AA+BA,mBAAO,KAAK,OAAZ;AACH;;AAED;;;;gCACQ,K,EAAO,M,EAAQ,I,EAAoB;AAAA,gBAAd,OAAc,uEAAJ,EAAI;;AACvC,iBAAK,KAAL,GAAa,KAAb;AACA,iBAAK,MAAL,GAAc,MAAd;;AAEA;AACA,gBAAI,MAAM,OAAN,CAAc,IAAd,CAAJ,EAAyB;AACrB,uBAAO,IAAI,UAAJ,CAAe,IAAf,CAAP;AACH;;AAED,iBAAK,MAAL,CAAY,IAAZ,EAAkB,OAAlB;AACA,iBAAK,YAAL,CAAkB,OAAlB;;AAEA,iBAAK,MAAL,GAAc,IAAd;AACA,iBAAK,OAAL,GAAe,QAAQ,OAAR,CAAgB,IAAhB,CAAf;AACA,mBAAO,KAAK,OAAZ;AACH;;AAED;;;;mCACW,O,EAAS,O,EAAS;AACzB,gBAAI,KAAK,OAAT;;AAEA;AACA,gBAAI,OAAO,OAAP,KAAmB,QAAvB,EAAiC;AAC7B,0BAAU,SAAS,aAAT,CAAuB,OAAvB,CAAV;AACH;;AAED,gBAAI,mBAAmB,iBAAnB,IACA,mBAAmB,gBADnB,IAEA,mBAAmB,gBAFvB,EAEyC;AACrC,qBAAK,MAAL,CAAY,OAAZ,EAAqB,OAArB;AACA,qBAAK,YAAL,CAAkB,OAAlB;AACH,aALD,MAMK;AACD,qBAAK,MAAL,GAAc,KAAd;AACA,oBAAI,gDAA6C,KAAK,SAAL,CAAe,EAAf,CAA7C,sBAAJ;AACA;AACA,mCAAI,MAAJ,iBAAwB,KAAK,IAA7B,YAAuC,GAAvC,EAA8C,OAA9C;AACA,wBAAQ,OAAR,CAAgB,SAAhB,EAA2B,EAAE,6CAA2C,GAA7C,EAAoD,SAAS,OAA7D,EAA3B;AACH;;AAED,iBAAK,MAAL,GAAc,IAAd;AACA,iBAAK,OAAL,GAAe,QAAQ,OAAR,CAAgB,IAAhB,CAAf;AACA,mBAAO,KAAK,OAAZ;AACH;;AAED;;;;+BACO,M,EAAsB;AAAA,gBAAd,OAAc,uEAAJ,EAAI;;AACzB,gBAAI,CAAC,KAAK,KAAV,EAAiB;AACb;AACH;;AAED,iBAAK,IAAL;AACA,iBAAK,EAAL,CAAQ,WAAR,CAAoB,KAAK,EAAL,CAAQ,mBAA5B,EAAkD,QAAQ,mBAAR,KAAgC,KAAhC,GAAwC,KAAxC,GAAgD,IAAlG;AACA,iBAAK,EAAL,CAAQ,WAAR,CAAoB,KAAK,EAAL,CAAQ,8BAA5B,EAA4D,QAAQ,8BAAR,IAA0C,KAAtG;;AAEA;AACA,gBAAI,kBAAkB,iBAAlB,IAAuC,kBAAkB,gBAAzD,IACC,kBAAkB,gBAAlB,IAAsC,OAAO,QADlD,EAC6D;;AAEzD,qBAAK,KAAL,GAAa,OAAO,KAApB;AACA,qBAAK,MAAL,GAAc,OAAO,MAArB;AACA,qBAAK,EAAL,CAAQ,UAAR,CAAmB,KAAK,EAAL,CAAQ,UAA3B,EAAuC,CAAvC,EAA0C,KAAK,EAAL,CAAQ,IAAlD,EAAwD,KAAK,EAAL,CAAQ,IAAhE,EAAsE,KAAK,EAAL,CAAQ,aAA9E,EAA6F,MAA7F;AACH;AACD;AAPA,iBAQK;AACD,yBAAK,EAAL,CAAQ,UAAR,CAAmB,KAAK,EAAL,CAAQ,UAA3B,EAAuC,CAAvC,EAA0C,KAAK,EAAL,CAAQ,IAAlD,EAAwD,KAAK,KAA7D,EAAoE,KAAK,MAAzE,EAAiF,CAAjF,EAAoF,KAAK,EAAL,CAAQ,IAA5F,EAAkG,KAAK,EAAL,CAAQ,aAA1G,EAAyH,MAAzH;AACH;;AAED,oBAAQ,OAAR,CAAgB,QAAhB,EAA0B,IAA1B;AACH;;AAED;;;;uCAC2B;AAAA,gBAAd,OAAc,uEAAJ,EAAI;;AACvB,gBAAI,CAAC,KAAK,KAAV,EAAiB;AACb;AACH;;AAED,oBAAQ,SAAR,GAAoB,QAAQ,SAAR,IAAqB,QAAzC;;AAEA,gBAAI,KAAK,KAAK,EAAd;AACA,iBAAK,IAAL;;AAEA;AACA;AACA;AACA;AACA,gBAAI,gBAAM,UAAN,CAAiB,KAAK,KAAtB,KAAgC,gBAAM,UAAN,CAAiB,KAAK,MAAtB,CAApC,EAAmE;AAC/D,qBAAK,UAAL,GAAkB,IAAlB;AACA,mBAAG,aAAH,CAAiB,GAAG,UAApB,EAAgC,GAAG,cAAnC,EAAmD,QAAQ,cAAR,IAA2B,QAAQ,MAAR,IAAkB,GAAG,MAAhD,IAA2D,GAAG,aAAjH;AACA,mBAAG,aAAH,CAAiB,GAAG,UAApB,EAAgC,GAAG,cAAnC,EAAmD,QAAQ,cAAR,IAA2B,QAAQ,MAAR,IAAkB,GAAG,MAAhD,IAA2D,GAAG,aAAjH;;AAEA,oBAAI,QAAQ,SAAR,KAAsB,QAA1B,EAAoC;AAChC,yBAAK,SAAL,GAAiB,QAAjB;AACA,uBAAG,aAAH,CAAiB,GAAG,UAApB,EAAgC,GAAG,kBAAnC,EAAuD,GAAG,oBAA1D,EAFgC,CAEiD;AACjF,uBAAG,aAAH,CAAiB,GAAG,UAApB,EAAgC,GAAG,kBAAnC,EAAuD,GAAG,MAA1D;AACA,uBAAG,cAAH,CAAkB,GAAG,UAArB;AACH,iBALD,MAMK,IAAI,QAAQ,SAAR,KAAsB,QAA1B,EAAoC;AACrC,yBAAK,SAAL,GAAiB,QAAjB;AACA,uBAAG,aAAH,CAAiB,GAAG,UAApB,EAAgC,GAAG,kBAAnC,EAAuD,GAAG,MAA1D;AACA,uBAAG,aAAH,CAAiB,GAAG,UAApB,EAAgC,GAAG,kBAAnC,EAAuD,GAAG,MAA1D;AACH,iBAJI,MAKA,IAAI,QAAQ,SAAR,KAAsB,SAA1B,EAAqC;AACtC,yBAAK,SAAL,GAAiB,SAAjB;AACA,uBAAG,aAAH,CAAiB,GAAG,UAApB,EAAgC,GAAG,kBAAnC,EAAuD,GAAG,OAA1D;AACA,uBAAG,aAAH,CAAiB,GAAG,UAApB,EAAgC,GAAG,kBAAnC,EAAuD,GAAG,OAA1D;AACH;AACJ,aArBD,MAsBK;AACD;AACA;AACA,qBAAK,UAAL,GAAkB,KAAlB;AACA,mBAAG,aAAH,CAAiB,GAAG,UAApB,EAAgC,GAAG,cAAnC,EAAmD,GAAG,aAAtD;AACA,mBAAG,aAAH,CAAiB,GAAG,UAApB,EAAgC,GAAG,cAAnC,EAAmD,GAAG,aAAtD;;AAEA,oBAAI,QAAQ,SAAR,KAAsB,SAA1B,EAAqC;AACjC,yBAAK,SAAL,GAAiB,SAAjB;AACA,uBAAG,aAAH,CAAiB,GAAG,UAApB,EAAgC,GAAG,kBAAnC,EAAuD,GAAG,OAA1D;AACA,uBAAG,aAAH,CAAiB,GAAG,UAApB,EAAgC,GAAG,kBAAnC,EAAuD,GAAG,OAA1D;AACH,iBAJD,MAKK;AAAE;AACH,yBAAK,SAAL,GAAiB,QAAjB;AACA,uBAAG,aAAH,CAAiB,GAAG,UAApB,EAAgC,GAAG,kBAAnC,EAAuD,GAAG,MAA1D;AACA,uBAAG,aAAH,CAAiB,GAAG,UAApB,EAAgC,GAAG,kBAAnC,EAAuD,GAAG,MAA1D;AACH;AACJ;;AAED,oBAAQ,OAAR,CAAgB,QAAhB,EAA0B,IAA1B;AACH;;AAED;;;;2CACmB;AACf,gBAAI,KAAK,OAAT,EAAkB;AACd,qBAAK,IAAI,CAAT,IAAc,KAAK,OAAnB,EAA4B;AACxB,wBAAI,SAAS,KAAK,OAAL,CAAa,CAAb,CAAb;;AAEA;AACA,yBAAK,SAAL,CAAe,CAAf,IAAoB,QAAQ,qBAAR,CAChB,CAAC,OAAO,CAAP,CAAD,EAAY,OAAO,CAAP,CAAZ,CADgB,EAEhB,CAAC,OAAO,CAAP,CAAD,EAAY,OAAO,CAAP,CAAZ,CAFgB,EAGhB,CAAC,KAAK,KAAN,EAAa,KAAK,MAAlB,CAHgB,CAApB;;AAMA;AACA,yBAAK,KAAL,CAAW,CAAX,IAAgB,CAAC,OAAO,CAAP,CAAD,EAAY,OAAO,CAAP,CAAZ,CAAhB;AACH;AACJ;AACJ;;;;;;AAKL;;kBAvTqB,O;AAyTrB,QAAQ,MAAR,GAAiB,UAAU,EAAV,EAAc,IAAd,EAAoB,OAApB,EAA6B;AAC1C,WAAO,IAAI,OAAJ,CAAY,EAAZ,EAAgB,IAAhB,EAAsB,OAAtB,CAAP;AACH,CAFD;;AAIA,QAAQ,MAAR,GAAiB,UAAU,IAAV,EAAgB;AAC7B,QAAI,QAAQ,QAAR,CAAiB,IAAjB,CAAJ,EAA4B;AACxB,gBAAQ,QAAR,CAAiB,IAAjB,EAAuB,MAAvB;AACH;AACJ,CAJD;;AAMA,QAAQ,OAAR,GAAkB,UAAU,IAAV,EAAgB;AAC9B,QAAI,QAAQ,QAAR,CAAiB,IAAjB,CAAJ,EAA4B;AACxB,gBAAQ,QAAR,CAAiB,IAAjB,EAAuB,OAAvB;AACH;AACJ,CAJD;;AAMA;AACA,QAAQ,OAAR,GAAkB,UAAU,EAAV,EAAc;AAC5B,QAAI,WAAW,OAAO,IAAP,CAAY,QAAQ,QAApB,CAAf;AACA,aAAS,OAAT,CAAiB,aAAK;AAClB,YAAI,UAAU,QAAQ,QAAR,CAAiB,CAAjB,CAAd;AACA,YAAI,QAAQ,EAAR,KAAe,EAAnB,EAAuB;AACnB,oBAAQ,OAAR,CAAgB,EAAE,OAAO,IAAT,EAAhB;AACH;AACJ,KALD;AAMH,CARD;;AAUA;AACA,QAAQ,aAAR,GAAwB,UAAU,OAAV,EAAmB,MAAnB,EAA2B;AAC/C,QAAI,UAAU,QAAQ,QAAR,CAAiB,OAAjB,CAAd;AACA,WAAO,WAAW,EAAE,MAAM,QAAQ,KAAR,CAAc,MAAd,CAAR,EAA+B,WAAW,QAAQ,SAAR,CAAkB,MAAlB,CAA1C,EAAlB;AACH,CAHD;;AAKA;AACA,QAAQ,qBAAR,GAAgC,UAAU,WAAV,EAAuB,SAAvB,EAAkC,QAAlC,EAA4C;AACxE,QAAI,gBAAgB,SAAS,CAAT,IAAc,YAAY,CAAZ,CAAd,GAA+B,UAAU,CAAV,CAAnD;;AAEA,WAAO,CACH,YAAY,CAAZ,IAAiB,SAAS,CAAT,CADd,EAEH,gBAAgB,SAAS,CAAT,CAFb,EAGH,CAAC,UAAU,CAAV,IAAe,YAAY,CAAZ,CAAhB,IAAkC,SAAS,CAAT,CAH/B,EAIH,CAAC,UAAU,CAAV,IAAe,aAAhB,IAAiC,SAAS,CAAT,CAJ9B,CAAP;AAMH,CATD;;AAWA;AACA;AACA,QAAQ,gBAAR,GAA2B,UAAU,EAAV,EAAc,QAAd,EAAwB;AAC/C,QAAI,UAAU,EAAd;AACA,QAAI,QAAJ,EAAc;AACV,aAAK,IAAI,OAAT,IAAoB,QAApB,EAA8B;AAC1B,gBAAI,SAAS,SAAS,OAAT,CAAb;;AAEA;AACA;AACA,gBAAI,CAAC,QAAQ,OAAR,CAAgB,OAAhB,EAAyB,MAAzB,CAAL,EAAuC;AACnC;AACH;;AAED,gBAAI,UAAU,QAAQ,MAAR,CAAe,EAAf,EAAmB,OAAnB,EAA4B,MAA5B,CAAd;AACA,oBAAQ,IAAR,CAAa,QAAQ,OAArB;AACH;AACJ;AACD,WAAO,QAAQ,GAAR,CAAY,OAAZ,CAAP;AACH,CAjBD;;AAmBA;AACA;AACA,QAAQ,OAAR,GAAkB,WAAlB;AACA,QAAQ,aAAR,GAAwB,UAAU,EAAV,EAAc;AAClC,WAAO,QAAQ,MAAR,CAAe,EAAf,EAAmB,QAAQ,OAA3B,CAAP;AACH,CAFD;;AAIA;AACA;AACA,QAAQ,YAAR,GAAuB,UAAS,OAAT,EAAkB;AACrC,WAAO;AACH,mBAAW,QAAQ,SADhB;AAEH,iBAAS,QAAQ,OAFd;AAGH,aAAK,QAAQ,GAHV;AAIH,iBAAS,QAAQ,OAJd;AAKH,cAAM,QAAQ,IALX;AAMH,eAAO,QAAQ,KANZ;AAOH,gBAAQ,QAAQ,MAPb;AAQH,gBAAQ,QAAQ,MARb;AASH,wBAAgB,QAAQ,cATrB;AAUH,wBAAgB,QAAQ,cAVrB;AAWH,6BAAqB,QAAQ,mBAX1B;AAYH,wCAAgC,QAAQ;AAZrC,KAAP;AAcH,CAfD;;AAiBA;AACA,QAAQ,OAAR,GAAkB,UAAU,IAAV,EAAgB,MAAhB,EAAwB;AACtC,QAAI,UAAU,QAAQ,QAAR,CAAiB,IAAjB,CAAd;AACA,QAAI,OAAJ,EAAa;AAAE;AACX;AACA,YAAI,QAAQ,WAAR,KAAwB,SAAxB,IAAqC,OAAO,OAAP,IAAkB,IAA3D,EAAiE;AAC7D,mBAAO,IAAP;AACH;;AAED;AACA,iBAAS,QAAQ,YAAR,CAAqB,MAArB,CAAT,CAPS,CAO8B;AACvC,YAAI,QAAQ,eAAR,CAAwB,IAAxB,MAAkC,KAAK,SAAL,CAAe,OAAO,MAAP,CAAc,EAAE,UAAF,EAAd,EAAwB,MAAxB,CAAf,CAAtC,EAAuF;AACnF,mBAAO,KAAP;AACH;AACJ;AACD,WAAO,IAAP;AACH,CAfD;;AAiBA;AACA;AACA;AACA,QAAQ,OAAR,GAAkB,UAAU,IAAV,EAAgB;AAC9B;AACA,QAAI,CAAC,IAAL,EAAW;AACP,eAAO,OAAO,IAAP,CAAY,QAAQ,QAApB,CAAP;AACH;;AAED;AACA,QAAI,MAAM,OAAN,CAAc,IAAd,CAAJ,EAAyB;AACrB,eAAO,QAAQ,GAAR,CAAY,KAAK,GAAL,CAAS;AAAA,mBAAK,QAAQ,OAAR,CAAgB,CAAhB,CAAL;AAAA,SAAT,CAAZ,CAAP;AACH;;AAED;AACA,QAAI,MAAM,QAAQ,QAAR,CAAiB,IAAjB,CAAV;AACA,QAAI,GAAJ,EAAS;AACL;AACA,YAAI,UAAU,IAAI,OAAJ,IAAe,QAAQ,OAAR,CAAgB,GAAhB,CAA7B;AACA,eAAO,QAAQ,IAAR,CAAa,YAAM;AACtB;AACA;AACA,mBAAO;AACH,sBAAM,IAAI,IADP;AAEH,uBAAO,IAAI,KAFR;AAGH,wBAAQ,IAAI,MAHT;AAIH,yBAAS,IAAI,OAJV;AAKH,2BAAW,IAAI,SALZ;AAMH,uBAAO,IAAI,KANR;AAOH,2BAAW,IAAI,SAPZ;AAQH,4BAAY,IAAI,UARb;AASH,uBAAO,IAAI;AATR,aAAP;AAWH,SAdM,CAAP;AAeH,KAlBD,MAmBK;AACD;AACA,eAAO,QAAQ,OAAR,CAAgB,IAAhB,CAAP;AACH;AACJ,CApCD;;AAsCA;AACA;AACA;AACA,QAAQ,oBAAR,GAA+B,UAAU,KAAV,EAAiB;AAC5C,WAAO,wBAAa,WAAb,CAAyB,iBAAzB,EAA4C,KAA5C,EACH,IADG,CACE,oBAAY;AACb,iBAAS,OAAT,CAAiB,eAAO;AACpB,oBAAQ,QAAR,CAAiB,IAAI,IAArB,IAA6B,GAA7B;AACH,SAFD;AAGA,eAAO,QAAQ,QAAf;AACH,KANE,CAAP;AAOH,CARD;;AAUA;AACA,QAAQ,iBAAR,GAA4B,UAAU,EAAV,EAAc;AACtC,WAAO,GAAG,YAAH,CAAgB,GAAG,gBAAnB,CAAP;AACH,CAFD;;AAIA;AACA,QAAQ,QAAR,GAAmB,EAAnB;AACA,QAAQ,eAAR,GAA0B,EAA1B;AACA,QAAQ,YAAR,GAAuB,IAAvB;AACA,QAAQ,UAAR,GAAqB,IAArB;;AAEA,wBAAa,SAAb,CAAuB,SAAvB,EAAkC,OAAlC;AACA,yBAAe,OAAf;;;;;;;;;AC9eA;;;;AACA;;;;;;AAHA;;kBAKe;;AAEX,cAAU,KAFC,EAEM;AACjB,eAAW,EAHA,EAGM;;AAEjB,QALW,gBAKL,EALK,EAKD;AACN,YAAI,YAAJ;AACA,YAAI,KAAK,QAAL,KAAkB,IAAtB,EAA4B;AACxB,kBAAM,0BAAa,EAAb,EAAiB,yBAAjB,CAAN;AACH;;AAED,YAAI,OAAO,IAAX,EAAiB;AACb,+BAAI,MAAJ,EAAY,yCAAZ;AACH,SAFD,MAGK,IAAI,KAAK,QAAL,KAAkB,IAAtB,EAA4B;AAC7B,+BAAI,MAAJ,EAAY,6CAAZ;AACH,SAFI,MAGA;AACD,+BAAI,MAAJ,EAAY,8CAAZ;AACH;AACJ,KApBU;AAsBX,UAtBW,kBAsBH,EAtBG,EAsBC,KAtBD,EAsBQ,QAtBR,EAsBkB;AACzB,YAAI,MAAM,EAAV;AACA,YAAI,KAAJ,GAAY,KAAZ;AACA,YAAI,QAAJ,GAAe,QAAf;;AAEA,YAAI,MAAM,0BAAa,EAAb,EAAiB,yBAAjB,CAAV;AACA,YAAI,OAAO,IAAX,EAAiB;AACb,gBAAI,IAAJ,GAAW,IAAI,oBAAJ,EAAX;AACA,gBAAI,kBAAJ,CAAuB,IAAI,IAA3B;AACH;;AAED,YAAI,KAAJ,CAAU,IAAV;;AAEA,eAAO,GAAP;AACH,KApCU;AAsCX,qBAtCW,6BAsCQ,EAtCR,EAsCY;AACnB,YAAI,QAAQ,KAAK,SAAL,CAAe,MAAf,CAAsB;AAAA,mBAAK,EAAE,CAAF,MAAS,EAAd;AAAA,SAAtB,EAAwC,CAAxC,CAAZ;AACA,eAAO,SAAS,MAAM,CAAN,CAAhB;AACH,KAzCU;AA2CX,qBA3CW,6BA2CQ,EA3CR,EA2CY,GA3CZ,EA2CiB;AACxB,YAAI,YAAY,KAAK,SAArB;AACA,YAAI,UAAU,UAAU,MAAV,CAAiB;AAAA,mBAAK,EAAE,CAAF,MAAS,EAAd;AAAA,SAAjB,EAAmC,CAAnC,CAAd;AACA,YAAI,WAAW,IAAf,EAAqB;AACjB,sBAAU,IAAV,CAAe,CAAC,EAAD,EAAK,GAAL,CAAf;AACH,SAFD,MAGK;AACD,oBAAQ,CAAR,IAAa,GAAb;AACH;AACJ,KApDU;AAsDX,QAtDW,gBAsDL,EAtDK,EAsDD,GAtDC,EAsDI;AACX,YAAI,MAAM,0BAAa,EAAb,EAAiB,yBAAjB,CAAV;AACA,YAAI,OAAO,IAAX,EAAiB;AACb,gBAAI,OAAO,IAAP,IAAe,IAAI,IAAJ,IAAY,IAA/B,EAAqC;AACjC,oBAAI,kBAAJ,CAAuB,IAAI,IAA3B;AACA,qBAAK,iBAAL,CAAuB,EAAvB,EAA2B,GAA3B;AACH,aAHD,MAIK;AACD,oBAAI,KAAJ,CAAU,KAAV;AACH;AACJ,SARD,MASK;AACD,gBAAI,YAAY,KAAK,iBAAL,CAAuB,EAAvB,CAAhB;AACA,gBAAI,OAAO,IAAX,EAAiB;AACb,oBAAI,kBAAJ,CAAuB,IAAvB;AACH,aAFD,MAGK,IAAI,aAAa,IAAb,IAAqB,OAAO,UAAU,QAAjB,KAA8B,UAAvD,EAAmE;AACpE,0BAAU,QAAV;AACH;AACD,iBAAK,iBAAL,CAAuB,EAAvB,EAA2B,IAA3B;AACH;AACJ,KA3EU;AA6EX,WA7EW,mBA6EF,EA7EE,EA6EE,GA7EF,EA6EO;AACd,YAAI,MAAM,0BAAa,EAAb,EAAiB,yBAAjB,CAAV;AACA,YAAI,OAAO,IAAP,IAAe,OAAO,IAAtB,IAA8B,IAAI,IAAJ,IAAY,IAA9C,EAAoD;AAChD,gBAAI,oBAAJ,CAAyB,IAAI,IAA7B;AACA,gBAAI,IAAJ,GAAW,IAAX;AACH;AACD;AACH;AApFU,C;;;;;;;;;qjBCLf;;;AACA;;;;AACA;;;;;;;;AAEA;IACqB,O;AAEjB,qBAAY,EAAZ,EAAgB,WAAhB,EAA6B,YAA7B,EAA2C,aAA3C,EAA0D,OAA1D,EAAmE;AAAA;;AAC/D,kBAAU,WAAW,EAArB;;AAEA,aAAK,EAAL,GAAU,EAAV;AACA,aAAK,WAAL,GAAmB,WAAnB,CAJ+D,CAI/B;AAChC,aAAK,YAAL,GAAoB,YAApB,CAL+D,CAK7B;AAClC,aAAK,aAAL,GAAqB,aAArB;AACA,aAAK,aAAL,GAAqB,KAAK,EAAL,CAAQ,YAAR,EAArB;AACA,aAAK,WAAL,GAAmB,KAAK,WAAL,CAAiB,UAApC;AACA,aAAK,SAAL,GAAiB,QAAQ,SAAR,IAAqB,KAAK,EAAL,CAAQ,SAA9C;AACA,aAAK,UAAL,GAAkB,QAAQ,UAAR,IAAsB,KAAK,EAAL,CAAQ,WAAhD;AACA,aAAK,qBAAL,GAA6B,CAA7B,CAX+D,CAW/B;AAChC,aAAK,QAAL,GAAgB,QAAQ,QAAxB;AACA,aAAK,MAAL,GAAc,QAAQ,MAAR,IAAkB,KAAhC,CAb+D,CAaxB;AACvC,aAAK,UAAL,GAAkB,CAAC,IAAI,IAAJ,EAAnB;AACA,aAAK,YAAL,GAAoB,QAAQ,YAAR,IAAwB,CAA5C,CAf+D,CAehB;;AAE/C,aAAK,YAAL,GAAoB,KAAK,WAAL,CAAiB,UAAjB,GAA8B,KAAK,aAAL,CAAmB,MAArE;AACA,aAAK,aAAL,GAAqB,CAArB;AACA,aAAK,IAAL,GAAY,EAAZ,CAnB+D,CAmB/C;;AAEhB,aAAK,oBAAL,GAA4B,KAA5B;AACA,YAAI,KAAK,YAAT,EAAuB;AACnB,iBAAK,oBAAL,GAA4B,IAA5B;AACA,iBAAK,aAAL,GAAqB,KAAK,YAAL,CAAkB,MAAvC;AACA,iBAAK,cAAL,GAAsB,KAAK,aAAL,GAAqB,KAAK,qBAAhD;AACA,iBAAK,YAAL,GAAqB,KAAK,YAAL,CAAkB,WAAlB,KAAkC,WAAnC,GAAkD,KAAK,EAAL,CAAQ,cAA1D,GAA0E,KAAK,EAAL,CAAQ,YAAtG;AACA,iBAAK,cAAL,GAAsB,KAAK,EAAL,CAAQ,YAAR,EAAtB;AACA,iBAAK,WAAL,IAAoB,KAAK,YAAL,CAAkB,UAAtC;AACA,iBAAK,EAAL,CAAQ,UAAR,CAAmB,KAAK,EAAL,CAAQ,oBAA3B,EAAiD,KAAK,cAAtD;AACA,iBAAK,EAAL,CAAQ,UAAR,CAAmB,KAAK,EAAL,CAAQ,oBAA3B,EAAiD,KAAK,YAAtD,EAAoE,KAAK,UAAzE;AACH,SATD,MAUK;AACD,iBAAK,cAAL,GAAsB,KAAK,YAAL,GAAoB,KAAK,qBAA/C;AACH;;AAED,aAAK,EAAL,CAAQ,UAAR,CAAmB,KAAK,EAAL,CAAQ,YAA3B,EAAyC,KAAK,aAA9C;AACA,aAAK,EAAL,CAAQ,UAAR,CAAmB,KAAK,EAAL,CAAQ,YAA3B,EAAyC,KAAK,WAA9C,EAA2D,KAAK,UAAhE;;AAEA,YAAI,CAAC,KAAK,MAAV,EAAkB;AACd,mBAAO,KAAK,WAAZ;AACA,mBAAO,KAAK,YAAZ;AACH;AACD,aAAK,KAAL,GAAa,IAAb;AACH;;AAED;AACA;;;;;iCACqB;AAAA,gBAAd,OAAc,uEAAJ,EAAI;;AACjB,gBAAI,CAAC,KAAK,KAAV,EAAiB;AACb,uBAAO,KAAP;AACH;;AAED,gBAAI,UAAU,QAAQ,OAAR,IAAmB,yBAAc,OAA/C;AACA,oBAAQ,GAAR;;AAEA,gBAAI,KAAK,QAAT,EAAmB;AACf,wBAAQ,YAAR,CAAqB,KAAK,QAA1B;AACA,wBAAQ,WAAR,CAAoB,KAAK,QAAzB,EAAmC,KAAnC,EAFe,CAE4B;AAC9C;;AAED,gBAAI,eAAe,CAAC,CAAC,IAAI,IAAJ,EAAD,GAAc,KAAK,UAApB,IAAkC,IAArD;AACA,oBAAQ,OAAR,CAAgB,IAAhB,EAAsB,gBAAtB,EAAwC,YAAxC;;AAEA,iBAAK,IAAL,CAAU,OAAV;;AAEA,gBAAI,KAAK,oBAAT,EAA8B;AAC1B,qBAAK,EAAL,CAAQ,YAAR,CAAqB,KAAK,SAA1B,EAAqC,KAAK,aAA1C,EAAyD,KAAK,YAA9D,EAA4E,CAA5E;AACH,aAFD,MAGK;AACD,qBAAK,EAAL,CAAQ,UAAR,CAAmB,KAAK,SAAxB,EAAmC,CAAnC,EAAsC,KAAK,YAA3C;AACH;;AAED,0BAAkB,IAAlB,CAAuB,KAAK,EAA5B,EAAgC,IAAhC;;AAEA,gBAAI,KAAK,QAAT,EAAmB;AACf,wBAAQ,eAAR,CAAwB,KAAK,QAA7B;AACH;;AAED;AACA,mBAAQ,eAAe,KAAK,YAA5B;AACH;;AAED;;;;6BACK,O,EAAS;AAAA;;AACV;AACA,gBAAI,MAAM,KAAK,IAAL,CAAU,QAAQ,EAAlB,CAAV;AACA,gBAAI,GAAJ,EAAS;AACL,8BAAkB,IAAlB,CAAuB,KAAK,EAA5B,EAAgC,GAAhC;AACH,aAFD,MAGK;AACD,qBAAK,IAAL,CAAU,QAAQ,EAAlB,IAAwB,cAAkB,MAAlB,CAAyB,KAAK,EAA9B,EAAkC,UAAC,KAAD,EAAW;AACjE,0BAAK,EAAL,CAAQ,UAAR,CAAmB,MAAK,EAAL,CAAQ,YAA3B,EAAyC,MAAK,aAA9C;AACA,wBAAI,MAAK,oBAAT,EAA+B;AAC3B,8BAAK,EAAL,CAAQ,UAAR,CAAmB,MAAK,EAAL,CAAQ,oBAA3B,EAAiD,MAAK,cAAtD;AACH;AACD,0BAAK,aAAL,CAAmB,MAAnB,CAA0B,MAAK,EAA/B,EAAmC,OAAnC,EAA4C,KAA5C;AACH,iBANuB,CAAxB;AAOH;AACJ;;;kCAES;AACN,gBAAI,CAAC,KAAK,KAAV,EAAiB;AACb,uBAAO,KAAP;AACH;AACD,iBAAK,KAAL,GAAa,KAAb;;AAEA,iBAAK,IAAI,CAAT,IAAc,KAAK,IAAnB,EAAyB;AACrB,8BAAkB,OAAlB,CAA0B,KAAK,EAA/B,EAAmC,KAAK,IAAL,CAAU,CAAV,CAAnC;AACH;;AAGD,iBAAK,EAAL,CAAQ,YAAR,CAAqB,KAAK,aAA1B;AACA,iBAAK,aAAL,GAAqB,IAArB;;AAEA,gBAAI,KAAK,cAAT,EAAyB;AACrB,qBAAK,EAAL,CAAQ,YAAR,CAAqB,KAAK,cAA1B;AACA,qBAAK,cAAL,GAAsB,IAAtB;AACH;;AAED,mBAAO,KAAK,WAAZ;AACA,mBAAO,KAAK,YAAZ;;AAEA,mBAAO,IAAP;AACH;;;;;;kBA9HgB,O;;;;;;;;;;;;;ACLrB;;;;AACA;;;;AACA;;;;;;;;kNAF8B;;;AAI9B;AACA,IAAI,gEACC,oBAAG,KADJ,EACY,YADZ,iCAEC,oBAAG,IAFJ,EAEW,SAFX,iCAGC,oBAAG,aAHJ,EAGoB,UAHpB,iCAIC,oBAAG,GAJJ,EAIU,UAJV,iCAKC,oBAAG,YALJ,EAKmB,WALnB,iCAMC,oBAAG,KANJ,EAMY,UANZ,iCAOC,oBAAG,cAPJ,EAOqB,WAPrB,gBAAJ;;AAUA;AACA;;IACqB,U;AAEjB,wBAAa,aAAb,EAAqD;AAAA,uFAAJ,EAAI;AAAA,iCAAvB,QAAuB;AAAA,YAAvB,QAAuB,iCAAZ,GAAY;;AAAA;;AACjD,aAAK,aAAL,GAAqB,aAArB;AACA,aAAK,eAAL,GAAuB,+BAAvB;AACA,aAAK,MAAL,GAAc,KAAK,aAAL,CAAmB,MAAjC;;AAEA,YAAI,WAAW,UAAX,CAAsB,MAAtB,GAA+B,CAAnC,EAAsC;AAClC,iBAAK,aAAL,GAAqB,WAAW,UAAX,CAAsB,GAAtB,EAArB;AACA,iBAAK,WAAL,GAAmB,KAAK,aAAL,CAAmB,UAAtC;AACA,iBAAK,IAAL,GAAY,KAAK,KAAL,CAAW,KAAK,WAAL,GAAmB,KAAK,MAAnC,CAAZ;AACA,+BAAI,OAAJ,0CAAmD,KAAK,WAAxD,UAAwE,KAAK,IAA7E;AACH,SALD,MAMK;AACD,iBAAK,IAAL,GAAY,QAAZ,CADC,CACqB;AACtB,iBAAK,WAAL,GAAmB,KAAK,MAAL,GAAc,KAAK,IAAtC;AACA,iBAAK,aAAL,GAAqB,IAAI,UAAJ,CAAe,KAAK,WAApB,CAArB;AACH;AACD,aAAK,MAAL,GAAc,CAAd,CAhBiD,CAgBpB;;AAE7B,aAAK,YAAL,GAAoB,CAApB;AACA,aAAK,aAAL,GAAqB,CAArB;AACA,aAAK,cAAL;AACA,aAAK,oBAAL;AACH;;AAED;;;;;yCACkB;AACd,iBAAK,KAAL,GAAa,EAAb;AACA,iBAAK,KAAL,CAAW,oBAAG,aAAd,IAA+B,KAAK,aAApC;AACA,iBAAK,IAAI,IAAE,CAAX,EAAc,IAAI,KAAK,aAAL,CAAmB,OAAnB,CAA2B,MAA7C,EAAqD,GAArD,EAA0D;AACtD,oBAAM,SAAS,KAAK,aAAL,CAAmB,OAAnB,CAA2B,CAA3B,CAAf;;AAEA;AACA,oBAAI,KAAK,KAAL,CAAW,OAAO,IAAlB,KAA2B,IAA/B,EAAqC;AACjC,wBAAI,aAAa,YAAY,OAAO,IAAnB,CAAjB;AACA,yBAAK,KAAL,CAAW,OAAO,IAAlB,IAA0B,IAAI,UAAJ,CAAe,KAAK,aAAL,CAAmB,MAAlC,CAA1B;AACH;AACJ;AACJ;;AAED;;;;0CACmB;AACf,gBAAK,KAAK,MAAL,GAAc,KAAK,MAApB,GAA8B,KAAK,WAAvC,EAAoD;AAChD,qBAAK,IAAL,GAAY,KAAK,KAAL,CAAW,KAAK,IAAL,GAAY,GAAvB,CAAZ;AACA,qBAAK,IAAL,IAAa,KAAK,IAAL,GAAY,CAAzB;AACA,qBAAK,WAAL,GAAmB,KAAK,MAAL,GAAc,KAAK,IAAtC;AACA,oBAAI,WAAW,IAAI,UAAJ,CAAe,KAAK,WAApB,CAAf;AACA,yBAAS,GAAT,CAAa,KAAK,aAAlB,EALgD,CAKd;AAClC,2BAAW,UAAX,CAAsB,IAAtB,CAA2B,KAAK,aAAhC,EANgD,CAMA;AAChD,qBAAK,aAAL,GAAqB,QAArB;AACA,qBAAK,cAAL;AACA,qBAAK,aAAL;AACA;AACH;AACJ;;AAED;;;;+CACwB;AACpB,iBAAK,qBAAL,GAA6B,KAAK,aAAL,CAAmB,oBAAnB,EAA7B;AACH;;AAED;;;;kCACW,M,EAAQ;AACf,iBAAK,eAAL;AACA,iBAAK,qBAAL,CAA2B,MAA3B,EAAmC,KAAK,KAAxC,EAA+C,KAAK,MAApD;AACA,iBAAK,MAAL,IAAe,KAAK,MAApB;AACA,iBAAK,YAAL;AACH;;AAED;;;;8BACO;AACH;AACA,iBAAK,aAAL,GAAqB,KAAK,aAAL,CAAmB,QAAnB,CAA4B,CAA5B,EAA+B,KAAK,MAApC,CAArB;AACA,iBAAK,cAAL,GAAsB,KAAK,eAAL,CAAqB,GAArB,EAAtB;;AAEA,+BAAI,OAAJ,mBAA4B,KAAK,IAAjC,uCAAuE,KAAK,aAA5E;;AAEA,mBAAO,IAAP;AACH;;;;;;kBA/EgB,U;;;AAmFrB,WAAW,UAAX,GAAwB,EAAxB,C,CAA4B;;;;;;;;;;;;;ACpG5B,IAAI,YAAY,KAAK,GAAL,CAAS,CAAT,EAAY,EAAZ,IAAkB,CAAlC;AACA,IAAI,yBAAyB,KAA7B;;IAEqB,c;AACjB,8BAAe;AAAA;;AACX,aAAK,KAAL,GAAa,EAAb;AACA,aAAK,aAAL,GAAqB,KAArB;AACH;;;;6BACK,K,EAAO;AACT;AACA,gBAAI,KAAK,aAAL,IAAsB,CAAC,sBAA3B,EAAmD;AAC/C;AACH;;AAED;AACA,gBAAI,QAAQ,SAAZ,EAAuB;AACnB,qBAAK,aAAL,GAAqB,IAArB;AACA,oBAAI,CAAC,sBAAL,EAA6B;AACzB;AACH;AACJ;;AAED,iBAAK,KAAL,CAAW,IAAX,CAAgB,KAAhB;AACH;;;8BACM;AACH,gBAAI,KAAK,KAAL,CAAW,MAAf,EAAsB;AAClB,oBAAI,SAAS,aAAa,KAAK,KAAlB,EAAyB,KAAK,aAA9B,CAAb;AACA,qBAAK,KAAL,GAAa,EAAb;AACA,qBAAK,aAAL,GAAqB,KAArB;AACA,uBAAO,MAAP;AACH,aALD,MAMK;AACD,uBAAO,KAAP;AACH;AACJ;;;;;;kBA/BgB,c;;;AAkCrB,eAAe,mBAAf,GAAqC,UAAS,IAAT,EAAe;AAChD,6BAAyB,IAAzB;AACH,CAFD;;AAIA,SAAS,YAAT,CAAsB,KAAtB,EAA6B,SAA7B,EAAwC;AACpC,QAAI,aAAc,aAAa,sBAAd,GAAwC,WAAxC,GAAsD,WAAvE;AACA,WAAO,IAAI,UAAJ,CAAe,KAAf,CAAP;AACH;;;;;;;;;qjBC5C6B;;;AAA9B;;;;AACA;;;;AACA;;;;;;;;;;AAEA;IACqB,Y;AACjB;AACA;AACA,0BAAa,OAAb,EAAsB;AAAA;;AAClB,aAAK,OAAL,GAAe,OAAf,CADkB,CACM;AACxB,aAAK,UAAL,GAAkB,EAAlB,CAFkB,CAEM;AACxB,aAAK,KAAL,GAAa,EAAb,CAHkB,CAGM;;AAExB;AACA,aAAK,MAAL,GAAc,CAAd;;AAEA,YAAI,QAAQ,CAAZ;AAAA,YAAe,QAAQ,CAAvB;AACA,aAAK,IAAI,IAAE,CAAX,EAAc,IAAI,KAAK,OAAL,CAAa,MAA/B,EAAuC,GAAvC,EAA4C;AACxC,gBAAI,SAAS,KAAK,OAAL,CAAa,CAAb,CAAb;AACA,mBAAO,MAAP,GAAgB,KAAK,MAArB;AACA,mBAAO,SAAP,GAAmB,OAAO,IAA1B;AACA,gBAAI,QAAQ,CAAZ;;AAEA,oBAAQ,OAAO,IAAf;AACI,qBAAK,oBAAG,KAAR;AACA,qBAAK,oBAAG,GAAR;AACA,qBAAK,oBAAG,YAAR;AACI,2BAAO,SAAP,IAAoB,CAApB;AACA,4BAAQ,CAAR;AACA;AACJ,qBAAK,oBAAG,KAAR;AACA,qBAAK,oBAAG,cAAR;AACI,2BAAO,SAAP,IAAoB,CAApB;AACA,4BAAQ,CAAR;AACA;AAXR;;AAcA;AACA,gBAAI,OAAO,SAAP,GAAmB,CAAvB,EAA0B;AAAE;AACxB,uBAAO,SAAP,IAAoB,KAAK,OAAO,SAAP,GAAmB,CAAxB,CAApB;AACH;AACD,iBAAK,MAAL,IAAe,OAAO,SAAtB;;AAEA;AACA;AACA,gBAAI,eAAe,OAAO,MAAP,IAAiB,KAApC;AACA,iBAAK,IAAI,IAAE,CAAX,EAAc,IAAI,OAAO,IAAzB,EAA+B,GAA/B,EAAoC;AAChC,qBAAK,UAAL,CAAgB,IAAhB,CAAqB;AACjB,0BAAM,OAAO,IADI;AAEjB,gCAFiB;AAGjB,4BAAQ,cAHS;AAIjB,2BAAO;AAJU,iBAArB;AAMH;;AAED;AACA,iBAAK,KAAL,CAAW,OAAO,IAAlB,IAA0B,KAA1B;AACA,qBAAS,OAAO,IAAhB;AACH;AACJ;;AAED;AACA;AACA;AACA;;;;;+BACQ,E,EAAI,O,EAAS,K,EAAO;AACxB,gBAAI,MAAJ,EAAY,QAAZ;;AAEA;AACA,iBAAK,IAAI,IAAE,CAAX,EAAc,IAAI,KAAK,OAAL,CAAa,MAA/B,EAAuC,GAAvC,EAA4C;AACxC,yBAAS,KAAK,OAAL,CAAa,CAAb,CAAT;AACA,2BAAW,QAAQ,SAAR,CAAkB,OAAO,IAAzB,EAA+B,QAA1C;;AAEA,oBAAI,aAAa,CAAC,CAAlB,EAAqB;AACjB,wBAAI,CAAC,aAAa,eAAb,CAA6B,QAA7B,CAAD,IAA2C,KAA/C,EAAsD;AAClD,2BAAG,uBAAH,CAA2B,QAA3B;AACH;AACD,uBAAG,mBAAH,CAAuB,QAAvB,EAAiC,OAAO,IAAxC,EAA8C,OAAO,IAArD,EAA2D,OAAO,UAAlE,EAA8E,KAAK,MAAnF,EAA2F,OAAO,MAAlG;AACA,iCAAa,eAAb,CAA6B,QAA7B,IAAyC,OAAzC;AACH;AACJ;;AAED;AACA,iBAAK,QAAL,IAAiB,aAAa,eAA9B,EAA+C;AAC3C,qBAAK,sBAAL,CAA4B,EAA5B,EAAgC,QAAhC,EAA0C,OAA1C;AACH;AACJ;;AAED;AACA;;;;+CACwB,E,EAAI,Q,EAAU,O,EAAS;AAC3C,gBAAI,aAAa,eAAb,CAA6B,QAA7B,MAA2C,OAA/C,EAAwD;AACpD,mBAAG,wBAAH,CAA4B,QAA5B;AACA,uBAAO,aAAa,eAAb,CAA6B,QAA7B,CAAP;AACH;AACJ;;;2CAEmB;AAChB,mBAAO,0BAAe,IAAf,CAAP;AACH;;AAED;;;;+CACwB;AACpB,gBAAI,KAAK,SAAL,IAAkB,IAAtB,EAA4B;AACxB,qBAAK,uBAAL;AACH;AACD,mBAAO,KAAK,SAAZ;AACH;;AAED;;;;kDAC2B;AACvB,gBAAI,MAAM,oBAAW,KAAK,SAAL,CAAe,KAAK,OAApB,CAAX,CAAV;AACA,gBAAI,aAAa,gBAAb,CAA8B,GAA9B,KAAsC,IAA1C,EAAgD;AAC5C;AACA;AACA;AACA;AACA;AACA,oBAAI,MAAM,aAAV;;AAEA;AACA,oBAAI,kBAAJ;AACA,oBAAI,0CAAiB,KAAK,UAAtB,EAAJ;AACA,2BAAW,IAAX,CAAgB,UAAC,CAAD,EAAI,CAAJ;AAAA,2BAAW,EAAE,IAAF,KAAW,EAAE,IAAd,GAAuB,EAAE,IAAF,GAAS,EAAE,IAAlC,GAA2C,EAAE,KAAF,GAAU,EAAE,KAAjE;AAAA,iBAAhB;;AAEA,qBAAK,IAAI,IAAE,CAAX,EAAc,IAAI,WAAW,MAA7B,EAAqC,GAArC,EAA0C;AACtC,wBAAI,YAAY,WAAW,CAAX,CAAhB;;AAEA,wBAAI,cAAc,UAAU,IAA5B,EAAkC;AAC9B,4BAAI,IAAJ,aAAmB,UAAU,IAA7B;AACA,4BAAI,IAAJ,cAAmB,UAAU,KAAV,GAAkB,SAAS,UAAU,KAArC,GAA6C,EAAhE;AACA,oCAAY,UAAU,IAAtB;AACH;;AAED,wBAAI,IAAJ,YAAkB,UAAU,MAA5B,cAA2C,UAAU,KAArD;AACH;;AAED,sBAAM,IAAI,IAAJ,CAAS,IAAT,CAAN;AACA,oBAAI,OAAO,IAAI,QAAJ,CAAa,GAAb,EAAkB,IAAlB,EAAwB,KAAxB,EAA+B,GAA/B,CAAX,CA1B4C,CA0BI;AAChD,6BAAa,gBAAb,CAA8B,GAA9B,IAAqC,IAArC;AACH;;AAED,iBAAK,SAAL,GAAiB,aAAa,gBAAb,CAA8B,GAA9B,CAAjB;AACH;;;;;;AAIL;AACA;;;kBA/IqB,Y;AAgJrB,aAAa,eAAb,GAA+B,EAA/B;;AAEA;AACA,aAAa,gBAAb,GAAgC,EAAhC,C,CAAoC;;;;;;;;;ACxJpC;;;;AACA;;;;;;AAEA,IAAI,SAAJ;;kBAEe,YAAY;;AAEvB,WAAO,EAFgB;;AAIvB,aAJuB,qBAIZ,IAJY,EAIN;AACb,YAAI,QAAQ,KAAK,KAAL,CAAW,IAAX,IAAmB;AAC3B,oBAAQ,EAAY;AAChB,sBAAM,EADF;AAEJ,qBAAK;AAFD,aADmB;AAK3B,qBAAS,EALkB,EAKP;AACpB,kBAAM,EANqB,EAMP;AACpB,oBAAQ,EAPmB,CAOP;AAPO,SAA/B;;AAUA;AACA,YAAI,MAAM,QAAN,IAAkB,IAAtB,EAA4B;AACxB,kBAAM,QAAN,GAAiB,IAAI,OAAJ,CAAY,UAAC,OAAD,EAAU,MAAV,EAAqB;AAC9C,sBAAM,OAAN,GAAgB,OAAhB;AACA,sBAAM,MAAN,GAAe,MAAf;AACH,aAHgB,CAAjB;AAIH;AACJ,KAtBsB;AAwBvB,aAxBuB,qBAwBZ,IAxBY,EAwBN;AACb,eAAO,KAAK,KAAL,CAAW,IAAX,CAAP;AACH,KA1BsB;AA4BvB,aA5BuB,qBA4BZ,IA5BY,EA4BN;AACb,YAAI,KAAK,KAAL,CAAW,IAAX,KAAoB,KAAK,KAAL,CAAW,IAAX,EAAiB,OAAzC,EAAkD;AAC9C,iBAAK,KAAL,CAAW,IAAX,EAAiB,OAAjB,CAAyB,EAAzB;AACH;AACD,aAAK,SAAL,CAAe,IAAf;AACH,KAjCsB;;;AAmCvB;AACA,YApCuB,oBAoCb,KApCa,EAoCN,IApCM,EAoCA;AACnB,aAAK,KAAL,CAAW,IAAX,EAAiB,MAAjB,CAAwB,KAAxB,IAAiC,IAAjC;AACH,KAtCsB;;;AAwCvB;AACA,WAzCuB,mBAyCd,OAzCc,EAyCL,KAzCK,EAyCE,IAzCF,EAyCQ;AAC3B,YAAI,QAAQ,KAAK,KAAL,CAAW,IAAX,CAAZ;AACA,YAAI,CAAC,KAAL,EAAY;AACR,+BAAI,OAAJ,EAAa,2CAAb,EAA0D,IAA1D,EAAgE,KAAK,KAArE,EAA4E,KAA5E,EAAmF,OAAnF;AACA,mBAAO,QAAQ,OAAR,CAAgB,EAAhB,CAAP;AACH;;AAED;AACA,YAAI,eAAe,MAAM,OAAzB;AACA,aAAK,IAAI,IAAE,CAAX,EAAc,IAAI,QAAQ,MAA1B,EAAkC,GAAlC,EAAuC;AACnC,gBAAI,MAAM,QAAQ,CAAR,CAAV;AACA,gBAAI,WAAW,IAAI,KAAJ,CAAU,MAAV,CAAiB,QAAhC;AACA,yBAAa,QAAb,IAAyB,aAAa,QAAb,KAA0B,EAAnD;AACA,yBAAa,QAAb,EAAuB,KAAvB,IAAgC,aAAa,QAAb,EAAuB,KAAvB,KAAiC,EAAjE;AACA,yBAAa,QAAb,EAAuB,KAAvB,EAA8B,IAA9B,CAAmC,GAAnC;AACH;;AAED;AACA,eAAO,MAAM,MAAN,CAAa,KAAb,CAAP;AACA,YAAI,OAAO,IAAP,CAAY,MAAM,MAAlB,EAA0B,MAA1B,KAAqC,CAAzC,EAA4C;AACxC,iBAAK,OAAL,CAAa,IAAb;AACH;;AAED;AACA,eAAO,MAAM,QAAN,CAAe,IAAf,CAAoB,YAAM;AAC7B,kBAAM,OAAN,GAAgB,IAAhB;AACA,mBAAO,MAAM,IAAN,CAAW,KAAX,KAAqB,EAA5B;AACH,SAHM,CAAP;AAIH,KArEsB;;;AAuEvB;AACA;AACA,WAzEuB,mBAyEd,IAzEc,EAyER;AACX,YAAI,QAAQ,KAAK,KAAL,CAAW,IAAX,CAAZ;AACA,YAAI,OAAO,MAAM,IAAjB;;AAEA,+BAAY,KAAZ,CAAkB,IAAlB;;AAEA;AACA,YAAI,aAAa,OAAO,IAAP,CAAY,MAAM,OAAlB,EAA2B,IAA3B,CAAgC,UAAC,CAAD,EAAI,CAAJ;AAAA,mBAAU,IAAI,CAAd;AAAA,SAAhC,CAAjB;AACA,aAAK,IAAI,IAAE,CAAX,EAAc,IAAI,WAAW,MAA7B,EAAqC,GAArC,EAA0C;AACtC,gBAAI,gBAAgB,MAAM,OAAN,CAAc,WAAW,CAAX,CAAd,CAApB;AACA,gBAAI,CAAC,aAAL,EAAoB;AAAE;AAClB;AACH;;AAED;AACA,iBAAK,IAAI,KAAT,IAAkB,aAAlB,EAAiC;AAC7B,oBAAI,UAAU,cAAc,KAAd,CAAd;AACA,qBAAK,KAAL,IAAc,KAAK,KAAL,KAAe,EAA7B;;AAEA,qBAAK,IAAI,IAAI,CAAb,EAAgB,IAAI,QAAQ,MAA5B,EAAoC,GAApC,EAAyC;AACrC,wBAAI,SAAS,QAAQ,CAAR,CAAb;AACA,wBAAI,KAAK,WAAL,CAAiB,MAAjB,EAAyB,IAAzB,EAA+B,OAAO,MAAtC,CAAJ,EAAmD;AAC/C;AACA,4BAAI,CAAC,OAAO,MAAZ,EAAoB;AAChB,iCAAK,KAAL,EAAY,IAAZ,CAAiB,MAAjB;AACA,iCAAK,KAAL,CAAW,MAAX,EAAmB,IAAnB;AACH;AACD;AAJA,6BAKK,IAAI,KAAK,WAAL,CAAiB,OAAO,MAAxB,EAAgC,IAAhC,EAAsC,MAAtC,CAAJ,EAAmD;AACpD,qCAAK,KAAL,EAAY,IAAZ,CAAiB,MAAjB;AACA,qCAAK,KAAL,CAAW,MAAX,EAAmB,IAAnB;AACA,qCAAK,KAAL,CAAW,OAAO,MAAlB,EAA0B,IAA1B;AACH;AACJ;AACJ;AACJ;AACJ;;AAED,eAAO,KAAK,KAAL,CAAW,IAAX,CAAP;AACA,cAAM,OAAN;AACH,KAjHsB;;;AAmHvB;AACA,eApHuB,uBAoHV,MApHU,EAoHF,IApHE,EAoHoB;AAAA,YAAhB,OAAgB,uEAAN,IAAM;;AACvC,YAAI,QAAQ,OAAO,KAAnB;AACA,YAAI,SAAS,OAAO,KAAP,CAAa,MAA1B;;AAEA;AACA,YAAI,MAAM,MAAN,IAAgB,IAApB,EAA0B;AACtB,mBAAO,MAAM,MAAb;AACH;;AAED;AACA,YAAI,SAAS,KAAK,KAAL,CAAW,IAAX,EAAiB,MAA9B;AACA,YAAI,CAAC,OAAO,OAAR,IAAmB,CAAC,MAAM,OAAN,CAAc,MAAd,EAAsB,WAAW,QAAQ,KAAzC,CAAxB,EAAyE;AACrE;AACA,gBAAI,SAAS,uBAAY,KAAZ,CAAkB,KAAlB,EAAyB,MAAzB,EAAiC,IAAjC,CAAb;AACA,gBAAI,MAAJ,EAAY;AACR;AACA,sBAAM,MAAN,GAAe,KAAf;AACH,aAHD,MAIK;AACD,uBAAO,IAAP;AACH;AACJ,SAVD,MAWK,IAAI,OAAO,OAAX,EAAoB;AACrB;AACA,kBAAM,MAAN,GAAe,KAAf;AACH;AACD,eAAO,MAAM,MAAb;AACH,KA/IsB;;;AAiJvB;AACA,SAlJuB,uBAkJL,IAlJK,EAkJC;AAAA,YAAf,KAAe,QAAf,KAAe;;AACpB;AACA,YAAI,MAAM,MAAN,IAAgB,IAApB,EAA0B;AACtB;AACH;;AAED;AACA,+BAAY,GAAZ,CAAgB,KAAhB,EAAuB,MAAM,MAA7B,EAAqC,IAArC;AACA,cAAM,GAAN,CAAU,KAAK,KAAL,CAAW,IAAX,EAAiB,MAA3B;AACH;AA3JsB,C;;;;;;;;QCHX,gB,GAAA,gB;QAaA,iB,GAAA,iB;;AAdhB;AACO,SAAS,gBAAT,CAA2B,CAA3B,EAA8B,CAA9B,EAAiC;AACpC,QAAI,EAAE,CAAF,IAAO,EAAE,CAAF,CAAP,IAAe;AACf,MAAE,CAAF,IAAO,EAAE,CAAF,CADP,IACe;AACf,MAAE,CAAF,IAAO,EAAE,CAAF,CAFP,IAEe;AACf,MAAE,CAAF,IAAO,EAAE,CAAF,CAHX,EAGiB;AAAE;AACf,eAAO,KAAP;AACH;AACD,WAAO,IAAP,CAPoC,CAOvB;AAChB;;AAED;AACA;AACA;AACO,SAAS,iBAAT,CAA4B,CAA5B,EAA+B,KAA/B,EAAsC,QAAtC,EAAgD;AACnD,SAAK,IAAI,IAAE,CAAX,EAAc,IAAI,MAAM,MAAxB,EAAgC,GAAhC,EAAqC;AACjC,YAAI,iBAAiB,CAAjB,EAAoB,MAAM,CAAN,CAApB,CAAJ,EAAmC;AAC/B,gBAAI,SAAS,CAAT,KAAe,IAAnB,EAAyB;AACrB;AACH;AACJ;AACJ;AACJ;;;;;;;;;;;ACvBD;;;;AACA;;AACA;;;;AACA;;;;;;;;AACA;;IAEqB,K;AAEjB,mBAAa,IAAb,EAAgC;AAAA,YAAb,MAAa,uEAAJ,EAAI;;AAAA;;AAC5B,aAAK,IAAL,GAAY,IAAZ;AACA,aAAK,MAAL,GAAc,MAAd;AACA,aAAK,QAAL,GAAgB,IAAhB;AACA,aAAK,MAAL,GAAc,MAAM,OAAN,CAAc,KAAK,MAAL,CAAY,MAA1B,IAAoC,KAAK,MAAL,CAAY,MAAZ,CAAmB,CAAnB,CAApC,GAA4D,KAAK,MAAL,CAAY,MAAtF,CAJ4B,CAIkE;AAC9F,aAAK,MAAL,GAAc,IAAd;AACA,aAAK,MAAL,GAAc,OAAO,MAArB;AACA,aAAK,IAAL,GAAY,IAAZ;AACA,aAAK,GAAL,GAAW,IAAX;AACA,aAAK,KAAL,GAAa,QAAb;AACA,aAAK,UAAL,GAAkB,KAAlB,CAV4B,CAUA;AAC/B;;;;iCAES;AACN,iBAAK,KAAL,GAAa,KAAK,MAAL,CAAY,KAAZ,IAAqB,uBAAY,cAAZ,CAA2B,KAAK,MAAhC,CAAlC;AACH;;AAED;;;;iCACU,M,EAAwB;AAAA;;AAAA,gBAAhB,OAAgB,uEAAN,IAAM;;AAC9B,gBAAI,YAAY,KAAhB;AACA,gBAAI,QAAQ,OAAO,IAAnB;AACA,gBAAI,OAAO,OAAO,GAAlB;;AAEA;AACA,gBAAI,MAAM,MAAN,GAAe,CAAnB,EAAsB;AAClB,kDAAkB,KAAK,IAAvB,EAA6B,KAA7B,EAAoC,UAAC,CAAD,EAAO;AACvC;;AAEA;AACA,wBAAI,WAAW,MAAM,CAAN,MAAa,QAAQ,IAApC,EAA0C;AACtC;AACA;AACH;;AAED;AACA,wBAAI,MAAK,GAAL,CAAS,KAAT,KAAmB,CAAnB,IAAwB,KAAK,CAAL,EAAQ,KAAR,KAAkB,CAA9C,EAAiD;AAC7C;AACA,oCAAY,IAAZ;AACA,+BAAO,IAAP;AACH;;AAED;AACA,wBAAI,cAAI,SAAJ,CAAc,MAAK,GAAnB,EAAwB,KAAK,CAAL,CAAxB,CAAJ,EAAsC;AAClC;AACA,oCAAY,IAAZ;AACA,+BAAO,IAAP;AACH;AACJ,iBAtBD;AAuBH;AACD,mBAAO,SAAP;AACH;;AAED;;;;4BACK,M,EAAQ;AACT,iBAAK,MAAL,GAAc,IAAd;AACA,mBAAO,IAAP,CAAY,IAAZ,CAAiB,KAAK,IAAtB;AACA,mBAAO,GAAP,CAAW,IAAX,CAAgB,KAAK,GAArB;AACH;;AAED;;;;uCACgB;AACZ,gBAAI,MAAM,CAAE,KAAK,IAAL,CAAU,CAAV,CAAF,EAAgB,KAAK,IAAL,CAAU,CAAV,CAAhB,CAAV;AACA,gBAAI,MAAM,CAAE,KAAK,IAAL,CAAU,CAAV,CAAF,EAAgB,KAAK,IAAL,CAAU,CAAV,CAAhB,CAAV;;AAEA,gBAAI,CAAC,gBAAM,WAAN,CAAkB,GAAlB,CAAD,IAA2B,CAAC,gBAAM,WAAN,CAAkB,GAAlB,CAAhC,EAAwD;AACpD,uBAAO,KAAP;AACH;;AAED,mBAAO,IAAP;AACH;;AAED;AACA;;;;gCACQ,M,EAAwB;AAAA,gBAAhB,OAAgB,uEAAN,IAAM;;AAC5B,gBAAI,KAAK,UAAT,EAAqB;AACjB,uBAAO,IAAP;AACH;AACD,mBAAO,KAAK,QAAL,CAAc,MAAd,EAAsB,OAAtB,CAAP;AACH;;;;;;kBAhFgB,K;;;AAmFrB,MAAM,OAAN,GAAgB,MAAhB,C,CAAwB;;;;;;;;;;;;;ACzFxB;;;;AACA;;;;AACA;;;;;;;;;;;;AAEA,IAAM,QAAQ,CAAC,CAAD,EAAI,IAAJ,EAAU,IAAV,EAAgB,IAAhB,CAAd,C,CAA4C;AAC5C,IAAM,uBAAuB,GAA7B,C,CAA4C;AAC5C,IAAM,gCAAgC,GAAtC,C,CAA4C;AAC5C,IAAM,4BAA4B,GAAlC,C,CAA4C;AAC5C,IAAM,2BAA2B,GAAjC,C,CAA4C;AAC5C,IAAM,uBAAuB,GAA7B,C,CAA4C;AAC5C,IAAM,qBAAqB,GAA3B,C,CAA4C;AAC5C,IAAM,kBAAkB,CAAxB,C,CAA4C;AAC5C,IAAM,+BAA+B,GAArC,C,CAA4C;AAC5C,IAAM,2BAA2B,IAAjC,C,CAA4C;;AAE5C,IAAI,YAAY;AACZ;AACA;AACA,YAAS,gBAAS,YAAT,EAAuB,UAAvB,EAAmC,IAAnC,EAAyC,MAAzC,EAAgD;AACrD;AACA;AACA,YAAM,SAAS,CACX,EAAE,MAAM,UAAR,EAAoB,WAAa,OAAO,UAAR,GAAsB,6BAAtB,GAAsD,oBAAtF,EADW,EAEX,EAAE,MAAM,QAAR,EAFW,EAGX,EAAE,MAAM,UAAR,EAAoB,WAAY,yBAAhC,EAHW,CAAf;;AAMA;AACA,aAAK,IAAI,IAAI,CAAb,EAAgB,IAAI,OAAO,MAA3B,EAAmC,GAAnC,EAAuC;AACnC,gBAAI,QAAQ,OAAO,CAAP,CAAZ;AACA,gBAAI,cAAJ;AACA,gBAAI,MAAM,IAAN,KAAe,UAAnB,EAA8B;AAC1B,wBAAQ,IAAI,iBAAJ,CAAsB,UAAtB,EAAkC,IAAlC,EAAwC,MAAxC,EAAgD,MAAM,SAAtD,CAAR;AACH,aAFD,MAGK,IAAI,MAAM,IAAN,KAAe,QAAf,IAA2B,CAAC,OAAO,UAAnC,IAAiD,KAAK,MAAL,GAAc,CAAnE,EAAqE;AACtE,wBAAQ,IAAI,eAAJ,CAAoB,YAApB,EAAkC,IAAlC,EAAwC,MAAxC,CAAR;AACH;;AAED,gBAAI,SAAS,CAAC,MAAM,UAApB,EAAgC;AAC5B,uBAAO,KAAP;AACH;AACJ;;AAED,eAAO,KAAP;AACH;AA7BW,CAAhB;;kBAgCe,S;;AAEf;;IACM,a;AACF,2BAAa,MAAb,EAAqB;AAAA;;AACjB,aAAK,MAAL,GAAc,MAAd;AACA,aAAK,QAAL,GAAgB,EAAhB;AACA,aAAK,KAAL,GAAa,CAAb;AACA,aAAK,MAAL,GAAc,OAAO,MAAP,CAAc,KAAd,EAAd;AACA,aAAK,IAAL,GAAY,EAAZ;AACA,aAAK,KAAL,GAAa,EAAb;AACA,aAAK,IAAL,GAAY,EAAZ,CAPiB,CAOD;AAChB,aAAK,UAAL,GAAkB,KAAlB,CARiB,CAQQ;AAC5B;;AAED;AACA;AACA;;;;;;;AAkFA;4BACI,M,EAAQ;AACR,iBAAK,MAAL,GAAc,IAAd;AACA,iBAAK,IAAI,IAAI,CAAb,EAAgB,IAAI,KAAK,KAAL,CAAW,MAA/B,EAAuC,GAAvC,EAA4C;AACxC,oBAAI,OAAO,KAAK,KAAL,CAAW,CAAX,CAAX;AACA,oBAAI,MAAM,KAAK,IAAL,CAAU,CAAV,CAAV;AACA,oBAAI,MAAM,EAAE,UAAF,EAAQ,QAAR,EAAV;AACA,gCAAM,SAAN,CAAgB,GAAhB,CAAoB,IAApB,CAAyB,GAAzB,EAA8B,MAA9B;AACH;AACJ;;AAED;;;;gCACQ,M,EAAwB;AAAA,gBAAhB,OAAgB,uEAAN,IAAM;;AAC5B,gBAAI,KAAK,UAAT,EAAqB;AACjB,uBAAO,IAAP;AACH;;AAED,iBAAK,IAAI,IAAI,CAAb,EAAgB,IAAI,KAAK,IAAL,CAAU,MAA9B,EAAsC,GAAtC,EAA0C;AACtC,oBAAI,OAAO,KAAK,KAAL,CAAW,CAAX,CAAX;AACA,oBAAI,MAAM,KAAK,IAAL,CAAU,CAAV,CAAV;AACA,oBAAI,MAAM,EAAE,UAAF,EAAQ,QAAR,EAAV;;AAEA,oBAAI,gBAAgB,gBAAM,SAAN,CAAgB,QAAhB,CAAyB,IAAzB,CAA8B,GAA9B,EAAmC,MAAnC,EAA2C,OAA3C,CAApB;AACA,oBAAI,aAAJ,EAAmB;AACf,2BAAO,IAAP;AACH;AACJ;AACD,mBAAO,KAAP;AACH;;AAED;;;;uCACe;AACX,iBAAK,IAAI,IAAI,CAAb,EAAgB,IAAI,KAAK,KAAL,CAAW,MAA/B,EAAuC,GAAvC,EAA4C;AACxC,oBAAI,OAAO,KAAK,KAAL,CAAW,CAAX,CAAX;AACA,oBAAI,MAAM,EAAE,UAAF,EAAV;AACA,oBAAI,YAAY,gBAAM,SAAN,CAAgB,YAAhB,CAA6B,IAA7B,CAAkC,GAAlC,CAAhB;AACA,oBAAI,CAAC,SAAL,EAAgB;AACZ,2BAAO,KAAP;AACH;AACJ;AACD,mBAAO,IAAP;AACH;;AAED;AACA;AACA;;;;+CA9H8B,I,EAAK;AAC/B,gBAAI,eAAe,CAAC,KAAK,CAAL,CAAD,CAAnB;AACA,gBAAI,iBAAiB,CAArB;AACA,gBAAI,aAAa,CAAjB;AACA,gBAAI,cAAc,CAAlB;AACA,gBAAI,eAAe,YAAnB;AACA,gBAAI,OAAO,KAAX;;AAEA,iBAAK,IAAI,IAAI,CAAb,EAAgB,IAAI,KAAK,MAAzB,EAAiC,GAAjC,EAAsC;AAClC,oBAAI,KAAK,KAAK,CAAL,CAAT;AACA,oBAAI,UAAU,KAAK,IAAI,CAAT,CAAd;AACA,oBAAI,SAAS,iBAAO,MAAP,CAAc,iBAAO,GAAP,CAAW,EAAX,EAAe,OAAf,CAAd,CAAb;;AAEA,oBAAI,GAAG,CAAH,IAAQ,QAAQ,CAAR,CAAZ,EAAuB;AACnB;AACA,wBAAI,gBAAgB,CAApB,EAAsB;AAClB,qCAAa,IAAb,CAAkB,EAAlB;AACA,0CAAkB,MAAlB;AACA,4BAAI,iBAAiB,UAArB,EAAgC;AAC5B,2CAAe,YAAf;AACA,yCAAa,cAAb;AACA,mCAAO,KAAP;AACH;AACJ,qBARD,MASK;AACD,uCAAe,CAAC,OAAD,EAAU,EAAV,CAAf;AACA,yCAAiB,MAAjB;AACA,4BAAI,iBAAiB,UAArB,EAAgC;AAC5B,2CAAe,YAAf;AACA,yCAAa,cAAb;AACA,mCAAO,KAAP;AACH;AACD,sCAAc,CAAd;AACH;AACJ,iBArBD,MAsBK,IAAI,GAAG,CAAH,IAAQ,QAAQ,CAAR,CAAZ,EAAwB;AACzB;AACA,wBAAI,gBAAgB,CAAC,CAArB,EAAuB;AACnB,qCAAa,OAAb,CAAqB,EAArB;AACA,0CAAkB,MAAlB;AACA,4BAAI,iBAAiB,UAArB,EAAgC;AAC5B,2CAAe,YAAf;AACA,yCAAa,cAAb;AACA,mCAAO,IAAP;AACH;AACJ,qBARD,MASK;AACD;AACA,uCAAe,CAAC,EAAD,EAAK,OAAL,CAAf;AACA,yCAAiB,MAAjB;AACA,4BAAI,iBAAiB,UAArB,EAAgC;AAC5B,2CAAe,YAAf;AACA,yCAAa,cAAb;AACA,mCAAO,IAAP;AACH;AACD,sCAAc,CAAC,CAAf;AACH;AACJ,iBAtBI,MAuBA;AACD;AACA,wBAAI,gBAAgB,CAAC,CAArB,EAAuB;AACnB,qCAAa,OAAb,CAAqB,EAArB;AACH,qBAFD,MAGK;AACD,qCAAa,IAAb,CAAkB,EAAlB;AACA,sCAAc,CAAd;AACH;;AAED,sCAAkB,MAAlB;AACA,wBAAI,iBAAiB,UAArB,EAAgC;AAC5B,uCAAe,YAAf;AACA,qCAAa,cAAb;;AAEA,+BAAQ,gBAAgB,CAAC,CAAzB;AACH;AACJ;AACJ;;AAED,mBAAO,CAAC,YAAD,EAAe,IAAf,CAAP;AACH;;;kCAgDiB,Q,EAAU,K,EAAO,M,EAAQ,K,EAAO,Y,EAAc,M,EAAQ,G,EAAK;AACzE,gBAAI,KAAK,SAAS,CAAT,CAAT;AACA,gBAAI,KAAK,SAAS,CAAT,CAAT;;AAEA;AACA,gBAAI,WAAW,OAAO,CAAP,MAAc,CAAd,IAAmB,OAAO,CAAP,MAAc,CAA5C,CAAJ,EAAoD;AAChD,yBAAS,iBAAO,GAAP,CAAW,MAAX,EAAmB,YAAnB,CAAT;AACA,sBAAM,OAAO,CAAP,IAAY,GAAlB;AACA,sBAAM,OAAO,CAAP,IAAY,GAAlB;AACH;;AAED;AACA,mBAAO,kBAAQ,EAAR,EAAY,EAAZ,EAAgB,CAAC,KAAjB,EAAwB,KAAxB,EAA+B,MAA/B,CAAP;AACH;;;;;;AAGL;AACA;;;IACM,iB;;;AACF,+BAAa,IAAb,EAAmB,IAAnB,EAAyB,MAAzB,EAAiC,SAAjC,EAA2C;AAAA;;AAAA,0IACjC,MADiC;;AAEvC,cAAK,IAAL,GAAY,UAAZ;AACA,cAAK,UAAL,GAAkB,CAAC,MAAK,GAAL,CAAS,IAAT,EAAe,IAAf,EAAqB,MAArB,EAA6B,SAA7B,CAAnB;AAHuC;AAI1C;;AAED;AACA;AACA;;;;;4BACK,I,EAAM,I,EAAM,M,EAAQ,S,EAAU;AAC/B,gBAAI,MAAM,OAAO,eAAjB;AACA,gBAAI,gBAAJ,CAF+B,CAElB;;AAEb;;AAGA;AAP+B,wCAKb,cAAc,sBAAd,CAAqC,IAArC,CALa;;AAAA;;AAK9B,gBAL8B;AAKxB,mBALwB;AAQ/B,gBAAI,OAAO,OAAO,WAAd,KAA8B,QAAlC,EAA2C;AACvC,qBAAK,MAAL,CAAY,CAAZ,KAAkB,gCAAgC,KAAK,CAAL,IAAU,OAAO,eAAjD,CAAlB;;AAEA;AACA,oBAAI,OAAJ,EAAY;AACR,yBAAK,MAAL,CAAY,CAAZ,KAAkB,CAAC,CAAnB;AACH;;AAED,oBAAI,OAAO,WAAP,KAAuB,CAAC,CAA5B,EAA8B;AAC1B,yBAAK,MAAL,CAAY,CAAZ,KAAkB,CAAC,CAAnB;AACH;AACJ;;AAED,gBAAI,eAAe,eAAe,IAAf,CAAnB;AACA,gBAAI,eAAe,KAAK,CAAL,IAAU,GAA7B;;AAEA;AACA,iBAAK,IAAI,IAAI,CAAb,EAAgB,IAAI,KAAK,MAAL,GAAc,CAAlC,EAAqC,GAArC,EAAyC;AACrC,oBAAI,OAAO,KAAK,CAAL,CAAX;;AAEA,oBAAI,kBAAkB,CAAtB;AACA,oBAAI,SAAS,CAAb;AACA,oBAAI,cAAc,IAAI,CAAtB;AACA,oBAAI,mBAAJ;;AAEA;AACA,uBAAO,cAAc,KAAK,MAA1B,EAAiC;AAC7B,wBAAI,aAAa,KAAK,cAAc,CAAnB,CAAjB;AACA,wBAAI,aAAa,KAAK,WAAL,CAAjB;;AAEA,wBAAI,aAAa,mBAAmB,UAAnB,EAA+B,UAA/B,CAAjB;;AAEA,wBAAI,gBAAgB,IAAI,CAAxB,EAA0B;AACtB,2CAAmB,gBAAgB,UAAhB,EAA4B,UAA5B,CAAnB;AACH;;AAED;AACA,wBAAI,KAAK,GAAL,CAAS,eAAT,IAA4B,wBAAhC,EAAyD;AACrD;AACH;;AAED,8BAAU,aAAa,cAAc,CAA3B,CAAV;;AAEA;AACA,wBAAI,YAAY,MAAZ,EAAoB,YAApB,IAAoC,SAAxC,EAAkD;AAC9C,4BAAI,aAAa,iBAAO,IAAP,CAAY,iBAAO,GAAP,CAAW,IAAX,EAAiB,UAAjB,CAAZ,EAA0C,GAA1C,CAAjB;;AAEA;AACA;AACA,6BAAK,KAAL,GAAa,CAAC,UAAd;AACA,4BAAI,eAAe,KAAK,KAAxB;;AAEA;AACA,4BAAI,OAAO,OAAO,WAAd,KAA8B,QAAlC,EAA2C;AACvC,gCAAI,OAAJ,EAAY;AACR,gDAAgB,KAAK,EAArB;AACH;;AAED,gCAAI,OAAO,WAAP,KAAuB,CAAC,CAA5B,EAA8B;AAC1B,gDAAgB,KAAK,EAArB;AACH;AACJ;;AAED;AACA,4BAAI,KAAK,GAAL,CAAS,KAAK,KAAL,GAAa,KAAK,EAAL,GAAQ,CAA9B,IAAmC,wBAAvC,EAAiE;AAC7D;AACA,iCAAK,KAAL,GAAa,CAAC,KAAK,EAAN,GAAS,CAAtB;;AAEA,gCAAI,OAAO,OAAO,WAAd,KAA8B,QAAlC,EAA2C;AACvC,qCAAK,MAAL,CAAY,CAAZ,KAAkB,CAAC,CAAnB;AACH;AACJ;;AAED,6BAAK,QAAL,GAAgB,UAAhB;;AAEA,6BAAK,YAAL,CAAkB,KAAK,QAAvB,EAAiC,IAAjC,EAAuC,KAAK,KAA5C,EAAmD,KAAK,KAAxD,EAA+D,KAAK,MAApE;;AAEA,4BAAI,KAAK,YAAL,EAAJ,EAAyB;AACrB,mCAAO,IAAP;AACH;AACJ;;AAED,iCAAa,UAAb;AACA;AACH;AACJ;;AAED,mBAAO,KAAP;AACH;;AAED;;;;qCACa,Q,EAAU,I,EAAM,K,EAAO,Y,EAAc,M,EAAQ;AACtD,gBAAI,MAAM,KAAK,MAAL,CAAY,eAAtB;;AAEA;AACA,iBAAK,IAAL,GAAY,EAAZ;AACA,iBAAK,KAAL,GAAa,EAAb;;AAEA,gBAAI,QAAQ,CAAC,KAAK,CAAL,IAAU,IAAI,KAAK,MAAL,CAAY,MAAZ,CAAmB,CAAnB,CAAf,IAAwC,GAAxC,GAA8C,gBAAM,OAAhE;AACA,gBAAI,SAAS,CAAC,KAAK,CAAL,IAAU,IAAI,KAAK,MAAL,CAAY,MAAZ,CAAmB,CAAnB,CAAf,IAAwC,GAAxC,GAA8C,gBAAM,OAAjE;;AAEA,gBAAI,MAAM,cAAc,SAAd,CAAwB,QAAxB,EAAkC,KAAlC,EAAyC,MAAzC,EAAiD,KAAjD,EAAwD,YAAxD,EAAsE,MAAtE,EAA8E,GAA9E,CAAV;AACA,gBAAI,OAAO,IAAI,SAAJ,EAAX;;AAEA,iBAAK,IAAL,CAAU,IAAV,CAAe,GAAf;AACA,iBAAK,KAAL,CAAW,IAAX,CAAgB,IAAhB;AACH;;;;EA5H2B,a;;AA+HhC;AACA;;;IACM,e;;;AACF,6BAAa,IAAb,EAAmB,IAAnB,EAAyB,MAAzB,EAAiC;AAAA;;AAAA,uIACvB,MADuB;;AAE7B,eAAK,IAAL,GAAY,QAAZ;;AAEA;AACA,eAAK,MAAL,GAAc,EAAd;AACA,eAAK,UAAL,GAAkB,EAAlB;AACA,eAAK,OAAL,GAAe,EAAf;AACA,eAAK,YAAL,GAAoB,KAAK,MAAzB;;AAEA,eAAK,UAAL,GAAkB,CAAC,OAAK,GAAL,CAAS,IAAT,EAAe,IAAf,EAAqB,MAArB,CAAnB;AAV6B;AAWhC;;AAED;AACA;;;;;4BACK,I,EAAM,I,EAAM,M,EAAO;AACpB,gBAAI,MAAM,OAAO,eAAjB;AACA,gBAAI,gBAAJ,CAFoB,CAEP;;AAEb;;AAGA;AAPoB,yCAKF,cAAc,sBAAd,CAAqC,IAArC,CALE;;AAAA;;AAKnB,gBALmB;AAKb,mBALa;AAQpB,gBAAI,OAAO,OAAO,WAAd,KAA8B,QAAlC,EAA2C;AACvC,qBAAK,MAAL,CAAY,CAAZ,KAAkB,gCAAgC,KAAK,CAAL,IAAU,OAAO,eAAjD,CAAlB;;AAEA;AACA,oBAAI,OAAJ,EAAY;AACR,yBAAK,MAAL,CAAY,CAAZ,KAAkB,CAAC,CAAnB;AACH;;AAED,oBAAI,OAAO,WAAP,KAAuB,CAAC,CAA5B,EAA8B;AAC1B,yBAAK,MAAL,CAAY,CAAZ,KAAkB,CAAC,CAAnB;AACH;AACJ;;AAED,gBAAI,eAAe,eAAe,IAAf,CAAnB;AACA,gBAAI,gBAAgB,KAAK,GAAL,CAAS,UAAS,IAAT,EAAc;AAAE,uBAAO,KAAK,CAAL,IAAU,GAAjB;AAAuB,aAAhD,CAApB;;AAEA,gBAAI,oBAAoB,aAAa,MAAb,CAAoB,UAAS,IAAT,EAAe,IAAf,EAAoB;AAAE,uBAAO,OAAO,IAAd;AAAqB,aAA/D,EAAiE,CAAjE,CAAxB;AACA,gBAAI,qBAAqB,cAAc,MAAd,CAAqB,UAAS,IAAT,EAAe,IAAf,EAAoB;AAAE,uBAAO,OAAO,IAAd;AAAqB,aAAhE,EAAkE,CAAlE,CAAzB;;AAEA;AACA,gBAAI,qBAAqB,iBAAzB,EAA2C;AACvC,uBAAO,KAAP;AACH;;AAED,gBAAI,SAAS,KAAK,CAAL,EAAQ,CAAR,IAAa,GAA1B;;AAEA;AACA;AACA;;AApCoB,wCAqCW,gBAAgB,iBAAhB,CAAkC,IAAlC,EAAwC,YAAxC,EAAsD,MAAtD,EAA8D,KAAK,MAAnE,EAA2E,GAA3E,CArCX;AAAA;AAAA,gBAqCf,WArCe;AAAA,gBAqCF,SArCE;;AAuCpB;;;AACA,gBAAI,YAAY,WAAZ,GAA0B,CAA9B,EAAgC;AAC5B,uBAAO,KAAP;AACH;;AAED;AACA,gBAAI,eAAe,gBAAgB,kBAAhB,CAAmC,IAAnC,EAAyC,iBAAzC,EAA4D,YAA5D,EAA0E,kBAA1E,EAA8F,WAA9F,EAA2G,SAA3G,CAAnB;AACA,gBAAI,SAAS,KAAK,YAAL,CAAb;;AAEA;AACA,gBAAI,iBAAiB,CAAC,CAAlB,IAAuB,YAAY,YAAZ,GAA2B,CAAtD,EAAwD;AACpD,uBAAO,KAAP;AACH;;AAED;AACA,iBAAK,QAAL,GAAgB,MAAhB;;AAEA;AACA;AACA;AACA,iBAAK,IAAI,IAAI,CAAb,EAAgB,IAAI,cAAc,MAAlC,EAA0C,GAA1C,EAA8C;AAC1C,qBAAK,OAAL,CAAa,CAAb,IAAkB,EAAlB;AACA,qBAAK,MAAL,CAAY,CAAZ,IAAiB,EAAjB;AACA,qBAAK,UAAL,CAAgB,CAAhB,IAAqB,EAArB;;AAEA;AACA,qBAAK,IAAI,IAAI,CAAb,EAAgB,IAAI,MAAM,MAA1B,EAAkC,GAAlC,EAAsC;AAClC,wBAAI,OAAO,MAAM,CAAN,CAAX;;AAEA;;AAHkC,gDAIH,gBAAgB,SAAhB,CAA0B,IAA1B,EAAgC,IAAhC,CAJG;AAAA;AAAA,wBAI7B,QAJ6B;AAAA,wBAInB,aAJmB;;AAKlC,6BAAS,SAAS,YAAT,CAAT;;AAEA;;AAPkC,gDAQa,gBAAgB,YAAhB,CAA6B,YAA7B,EAA2C,QAA3C,EAAqD,aAArD,EAAmE,aAAnE,CARb;AAAA,wBAQ7B,SAR6B,yBAQ7B,SAR6B;AAAA,wBAQlB,OARkB,yBAQlB,OARkB;AAAA,wBAQT,MARS,yBAQT,MARS;AAAA,wBAQD,UARC,yBAQD,UARC;;AAUlC;;;AACA,wBAAI,YAAY,QAAQ,GAAR,CAAY,UAAS,MAAT,EAAgB;AACxC,+BAAO,KAAK,IAAL,CAAU,OAAO,CAAP,IAAY,OAAO,CAAP,CAAZ,GAAwB,OAAO,CAAP,IAAY,OAAO,CAAP,CAA9C,IAA2D,GAAlE;AACH,qBAFe,CAAhB;;AAIA;AACA,wBAAI,SAAS,CAAb,EAAe;AACX;AACA,6BAAK,KAAL,GAAa,IAAI,OAAO,MAAX,GAAoB,OAAO,MAAP,CAAc,UAAS,IAAT,EAAe,IAAf,EAAoB;AAAE,mCAAO,OAAO,IAAd;AAAqB,yBAAzD,CAAjC;;AAEA;AACA,6BAAK,IAAI,MAAI,CAAb,EAAgB,MAAI,UAAU,MAA9B,EAAsC,KAAtC,EAA0C;AACtC,gCAAI,WAAW,UAAU,GAAV,CAAf;AACA,gCAAI,YAAY,WAAW,GAAX,CAAhB;AACA,gCAAI,QAAQ,cAAc,GAAd,CAAZ;AACA,gCAAI,cAAc,YAAY,OAAO,GAAP,CAA9B;AACA,gCAAI,eAAe,KAAK,KAAxB;;AAEA,gCAAI,OAAO,OAAO,WAAd,KAA8B,QAAlC,EAA2C;AACvC,oCAAI,OAAJ,EAAY;AACR,oDAAgB,KAAK,EAArB;AACH;;AAED,oCAAI,OAAO,WAAP,KAAuB,CAAC,CAA5B,EAA8B;AAC1B,oDAAgB,KAAK,EAArB;AACH;AACJ;;AAED,gCAAI,MAAM,gBAAgB,SAAhB,CAA0B,QAA1B,EAAoC,KAApC,EAA2C,MAA3C,EAAmD,KAAK,MAAxD,EAAgE,YAAhE,EAA8E,WAA9E,EAA2F,GAA3F,CAAV;AACA,gCAAI,OAAO,IAAI,SAAJ,EAAX;;AAEA,iCAAK,IAAL,CAAU,IAAV,CAAe,GAAf;AACA,iCAAK,KAAL,CAAW,IAAX,CAAgB,IAAhB;AACH;AACJ;;AAED;AACA,yBAAK,OAAL,CAAa,CAAb,EAAgB,IAAhB,CAAqB,UAAU,CAAV,CAArB;AACA,yBAAK,MAAL,CAAY,CAAZ,EAAe,IAAf,CAAoB,OAAO,CAAP,CAApB;AACA,yBAAK,UAAL,CAAgB,CAAhB,EAAmB,IAAnB,CAAwB,WAAW,CAAX,CAAxB;AACH;AACJ;;AAED,mBAAO,IAAP;AACH;;AAED;AACA;AACA;;;;0CACyB,I,EAAM,M,EAAQ,M,EAAQ,M,EAAQ,G,EAAI;AACvD,gBAAI,QAAQ,CAAZ;AACA,gBAAI,MAAM,KAAK,MAAL,GAAc,CAAxB;;AAEA,sBAAU,gBAAM,OAAhB;;AAEA,gBAAI,cAAc,OAAO,KAAP,IAAgB,gBAAM,OAAxC;AACA,gBAAI,YAAY,OAAO,OAAO,MAAP,GAAgB,CAAvB,IAA4B,gBAAM,OAAlD;;AAEA;AACA,mBAAO,QAAQ,GAAf,EAAmB;AACf,oBAAI,QAAQ,mBAAmB,KAAK,KAAL,CAAnB,EAAgC,KAAK,QAAQ,CAAb,CAAhC,CAAZ;AACA,oBAAI,WAAW,iBAAO,GAAP,CAAW,iBAAO,GAAP,CAAW,CAAC,cAAY,CAAb,EAAgB,CAAhB,CAAX,EAA+B,KAA/B,CAAX,EAAkD,KAAK,KAAL,CAAlD,CAAf;AACA,oBAAI,MAAM,cAAc,SAAd,CAAwB,QAAxB,EAAkC,WAAlC,EAA+C,MAA/C,EAAuD,CAAC,KAAxD,EAA+D,CAAC,KAAhE,EAAuE,MAAvE,EAA+E,GAA/E,CAAV;AACA,oBAAI,OAAO,IAAI,SAAJ,EAAX;AACA,oBAAI,UAAU,gBAAM,SAAN,CAAgB,YAAhB,CAA6B,IAA7B,CAAkC,EAAE,UAAF,EAAlC,CAAd;AACA,oBAAI,OAAJ,EAAa;AACT;AACH,iBAFD,MAGK;AACD;AACH;AACJ;;AAED;AACA,mBAAO,MAAM,KAAb,EAAmB;AACf,oBAAI,SAAQ,mBAAmB,KAAK,MAAM,CAAX,CAAnB,EAAkC,KAAK,GAAL,CAAlC,CAAZ;AACA,oBAAI,YAAW,iBAAO,GAAP,CAAW,iBAAO,GAAP,CAAW,CAAC,CAAC,SAAD,GAAW,CAAZ,EAAe,CAAf,CAAX,EAA8B,MAA9B,CAAX,EAAiD,KAAK,GAAL,CAAjD,CAAf;AACA,oBAAI,OAAM,cAAc,SAAd,CAAwB,SAAxB,EAAkC,SAAlC,EAA6C,MAA7C,EAAqD,CAAC,MAAtD,EAA6D,CAAC,MAA9D,EAAqE,MAArE,EAA6E,GAA7E,CAAV;AACA,oBAAI,QAAO,KAAI,SAAJ,EAAX;AACA,oBAAI,WAAU,gBAAM,SAAN,CAAgB,YAAhB,CAA6B,IAA7B,CAAkC,EAAE,WAAF,EAAlC,CAAd;AACA,oBAAI,QAAJ,EAAa;AACT;AACH,iBAFD,MAGK;AACD;AACH;AACJ;;AAED,mBAAO,CAAC,KAAD,EAAQ,GAAR,CAAP;AACH;;AAED;AACA;AACA;AACA;AACA;;;;2CAC0B,I,EAAM,iB,EAAmB,Y,EAAc,Y,EAAc,W,EAAa,S,EAAU;AAClG,0BAAc,eAAe,CAA7B;AACA,wBAAY,aAAa,KAAK,MAAL,GAAc,CAAvC;;AAEA,gBAAI,aAAa,EAAjB,CAJkG,CAI7E;;AAErB;AACA,iBAAK,IAAI,IAAI,cAAc,CAA3B,EAA8B,IAAI,SAAlC,EAA6C,GAA7C,EAAiD;AAC7C,oBAAI,OAAO,KAAK,IAAI,CAAT,CAAX;AACA,oBAAI,OAAO,KAAK,CAAL,CAAX;AACA,oBAAI,OAAO,KAAK,IAAI,CAAT,CAAX;;AAEA,oBAAI,SAAS,iBAAO,IAAP,CAAY,IAAZ,EAAkB,IAAlB,CAAb;AACA,oBAAI,SAAS,iBAAO,IAAP,CAAY,IAAZ,EAAkB,IAAlB,CAAb;;AAEA,oBAAI,YAAY,iBAAO,YAAP,CAAoB,MAApB,EAA4B,MAA5B,CAAhB;;AAEA;AACA;AACA,oBAAI,YAAY,eAAhB,EAAiC;AAC7B,gCAAY,QAAZ;AACH;;AAED,2BAAW,IAAX,CAAgB,SAAhB;AACH;;AAED,uBAAW,IAAX,CAAgB,QAAhB,EA1BkG,CA0BvE;;AAE3B;AACA,gBAAI,cAAc,EAAlB;AACA,gBAAI,YAAY,EAAhB;AACA,gBAAI,aAAa,WAAjB;AACA,gBAAI,WAAW,CAAf;;AAEA,iBAAK,IAAI,MAAI,CAAb,EAAgB,MAAI,WAApB,EAAiC,KAAjC,EAAqC;AACjC,4BAAY,aAAa,GAAb,CAAZ;AACH;;AAED;AACA,mBAAO,WAAW,YAAX,GAA0B,iBAAjC,EAAmD;AAC/C;AACA,oBAAI,eAAe,QAAnB;AACA,oBAAI,aAAa,eAAe,YAAhC;;AAEA,oBAAI,gBAAgB,YAApB;AACA,oBAAI,cAAc,UAAlB;AACA,oBAAI,OAAO,CAAX;;AAEA;AACA,uBAAO,cAAc,SAAd,IAA2B,gBAAgB,aAAa,WAAb,CAAhB,GAA4C,UAA9E,EAAyF;AACrF,4BAAQ,WAAW,WAAX,CAAR;AACA,wBAAI,SAAS,QAAb,EAAuB;AACnB,8BADmB,CACZ;AACV;;AAED,qCAAiB,aAAa,WAAb,CAAjB;AACA;AACH;;AAED;AACA,oBAAI,SAAS,CAAb,EAAgB;AACZ,2BAAO,UAAP;AACH;;AAED,oBAAI,WAAW,QAAQ,cAAc,UAAtB,CAAf;;AAEA,4BAAY,IAAZ,CAAiB,IAAjB;AACA,0BAAU,IAAV,CAAe,QAAf;;AAEA,4BAAY,aAAa,UAAb,CAAZ;AACA;AACH;;AAED,gBAAI,YAAY,MAAZ,KAAuB,CAA3B,EAA8B;AAC1B,uBAAO,CAAC,CAAR;AACH;;AAED;AACA,gBAAI,iBAAiB,KAAK,GAAL,CAAS,KAAT,CAAe,IAAf,EAAqB,WAArB,CAArB;AACA,gBAAI,YAAY,YAAY,OAAZ,CAAoB,cAApB,CAAhB;AACA,gBAAI,eAAe,UAAU,SAAV,CAAnB;;AAEA,gBAAI,iBAAiB,oBAAjB,IAAyC,eAAe,kBAA5D,EAA+E;AAC3E;AACA,uBAAO,YAAY,OAAZ,CAAoB,cAApB,CAAP;AACH,aAHD,MAIK;AACD;AACA,uBAAO,CAAC,CAAR;AACH;AACJ;;AAED;AACA;;;;kCACiB,K,EAAO,I,EAAK;AACzB,gBAAI,WAAW,CAAC,KAAK,CAAL,CAAD,CAAf;AACA,gBAAI,eAAe,EAAnB;;AAEA,iBAAK,OAAL,CAAa,UAAS,EAAT,EAAa,CAAb,EAAe;AACxB,oBAAI,MAAM,KAAK,MAAL,GAAc,CAAxB,EAA2B;AACvB;AACH;AACD,oBAAI,IAAI,iBAAO,GAAP,CAAW,KAAK,IAAE,CAAP,CAAX,EAAsB,KAAK,CAAL,CAAtB,CAAR;AACA,oBAAI,QAAQ,iBAAO,IAAP,CAAY,CAAZ,EAAe,IAAI,KAAnB,CAAZ;;AAEA,yBAAS,IAAT,CAAc,iBAAO,GAAP,CAAW,SAAS,CAAT,CAAX,EAAwB,KAAxB,CAAd;AACA,6BAAa,IAAb,CAAkB,iBAAO,MAAP,CAAc,KAAd,CAAlB;AACH,aATD;;AAWA,mBAAO,CAAC,QAAD,EAAW,YAAX,CAAP;AACH;;AAED;;;;qCACoB,Y,EAAc,I,EAAM,Y,EAAc,a,EAAc;AAChE,gBAAI,SAAS,KAAK,YAAL,CAAb;;AAEA;;AAHgE,wCAI9B,gBAAgB,oBAAhB,CAAqC,YAArC,EAAmD,YAAnD,EAAiE,aAAjE,CAJ8B;AAAA;AAAA,gBAI3D,OAJ2D;AAAA,gBAIlD,gBAJkD;;AAMhE;;;AACA,gBAAI,YAAY,gBAAgB,iCAAhB,CAAkD,IAAlD,EAAwD,OAAxD,EAAiE,gBAAjE,CAAhB;;AAEA;;AATgE,wCAU5B,gBAAgB,8BAAhB,CAA+C,MAA/C,EAAuD,OAAvD,EAAgE,IAAhE,EAAsE,SAAtE,CAV4B;AAAA;AAAA,gBAU3D,OAV2D;AAAA,gBAUlD,MAVkD;AAAA,gBAU1C,UAV0C;;AAYhE,mBAAO,EAAC,oBAAD,EAAY,gBAAZ,EAAqB,cAArB,EAA6B,sBAA7B,EAAP;AACH;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;6CAC4B,U,EAAY,Y,EAAc,a,EAAc;AAChE,gBAAI,aAAa,cAAc,MAA/B;;AAEA,gBAAI,UAAU,EAAd;AACA,gBAAI,UAAU,EAAd;;AAEA,gBAAI,cAAc,CAAlB;AACA,gBAAI,eAAe,CAAnB;AACA,gBAAI,cAAc,CAAlB;;AAEA;AACA,mBAAO,cAAc,UAArB,EAAgC;AAC5B,oBAAI,eAAe,cAAc,WAAd,CAAnB;;AAEA;AACA,uBAAO,cAAc,UAAd,IAA4B,eAAe,MAAM,YAArB,IAAqC,cAAc,aAAa,UAAb,CAAtF,EAA+G;AAC3G,wBAAI,SAAS,eAAe,WAAf,GAA6B,MAAM,YAAhD;AACA,4BAAQ,IAAR,CAAa,MAAb;AACA,4BAAQ,IAAR,CAAa,UAAb;;AAEA,oCAAgB,YAAhB;AACA;AACA,mCAAe,cAAc,WAAd,CAAf;AACH;;AAED,+BAAe,aAAa,UAAb,CAAf;AACA;AACH;;AAED,mBAAO,CAAC,OAAD,EAAU,OAAV,CAAP;AACH;;AAED;;;;0DACyC,I,EAAM,O,EAAS,O,EAAQ;AAC5D,gBAAI,YAAY,EAAhB;AACA,iBAAK,IAAI,IAAI,CAAb,EAAgB,IAAI,QAAQ,MAA5B,EAAoC,GAApC,EAAwC;AACpC,oBAAI,QAAQ,QAAQ,CAAR,CAAZ;AACA,oBAAI,SAAS,QAAQ,CAAR,CAAb;;AAEA,oBAAI,QAAQ,mBAAmB,KAAK,KAAL,CAAnB,EAAgC,KAAK,QAAQ,CAAb,CAAhC,CAAZ;;AAEA,oBAAI,WAAW,iBAAO,GAAP,CAAW,CAAC,MAAD,EAAS,CAAT,CAAX,EAAwB,KAAxB,CAAf;AACA,oBAAI,WAAW,iBAAO,GAAP,CAAW,KAAK,KAAL,CAAX,EAAwB,QAAxB,CAAf;;AAEA,0BAAU,IAAV,CAAe,QAAf;AACH;;AAED,mBAAO,SAAP;AACH;;AAED;;;;uDACsC,M,EAAQ,O,EAAS,I,EAAM,S,EAAU;AACnE,gBAAI,SAAS,EAAb;AACA,gBAAI,aAAa,EAAjB;AACA,gBAAI,UAAU,EAAd;;AAEA,iBAAK,IAAI,IAAI,CAAb,EAAgB,IAAI,UAAU,MAA9B,EAAsC,GAAtC,EAA0C;AACtC,oBAAI,WAAW,UAAU,CAAV,CAAf;AACA,oBAAI,QAAQ,QAAQ,CAAR,CAAZ;;AAEA,oBAAI,SAAS,iBAAO,GAAP,CAAW,QAAX,EAAqB,MAArB,CAAb;AACA,oBAAI,eAAe,CAAC,iBAAO,KAAP,CAAa,MAAb,CAApB;;AAEA,oBAAI,QAAQ,uBAAuB,KAAK,KAAL,CAAvB,EAAoC,KAAK,QAAQ,CAAb,CAApC,CAAZ;AACA,oBAAI,YAAY,QAAQ,YAAxB;;AAEA,oBAAI,IAAI,CAAR,EAAU;AACN,wBAAI,aAAa,OAAO,IAAI,CAAX,CAAjB;AACA,wBAAI,iBAAiB,WAAW,IAAI,CAAf,CAArB;AACA,wBAAI,KAAK,GAAL,CAAS,eAAe,UAAxB,IAAsC,KAAK,EAA/C,EAAmD;AAC/C,wCAAiB,eAAe,UAAhB,GAA8B,CAAC,CAAD,GAAK,KAAK,EAAxC,GAA6C,IAAI,KAAK,EAAtE;AACH;AACD,wBAAI,KAAK,GAAL,CAAS,iBAAiB,SAA1B,IAAuC,KAAK,EAAhD,EAAoD;AAChD,qCAAc,YAAY,cAAb,GAA+B,CAAC,CAAD,GAAK,KAAK,EAAzC,GAA8C,IAAI,KAAK,EAApE;AACH;AACJ;;AAED,uBAAO,IAAP,CAAY,YAAZ;AACA,2BAAW,IAAX,CAAgB,SAAhB;AACA,wBAAQ,IAAR,CAAa,MAAb;AACH;;AAED,mBAAO,CAAC,OAAD,EAAU,MAAV,EAAkB,UAAlB,CAAP;AACH;;AAED;AACA;;;;kCACkB,Q,EAAU,K,EAAO,M,EAAQ,M,EAAQ,Y,EAAc,W,EAAa,G,EAAK;AAC/E,gBAAI,KAAK,SAAS,CAAT,CAAT;AACA,gBAAI,KAAK,SAAS,CAAT,CAAT;;AAEA;AACA,gBAAI,WAAW,OAAO,CAAP,MAAc,CAAd,IAAmB,OAAO,CAAP,MAAc,CAA5C,CAAJ,EAAoD;AAChD,yBAAS,iBAAO,GAAP,CAAW,MAAX,EAAmB,YAAnB,CAAT;AACA,sBAAM,OAAO,CAAP,IAAY,GAAlB;AACA,sBAAM,OAAO,CAAP,IAAY,GAAlB;AACH;;AAED;AACA,mBAAO,kBAAQ,EAAR,EAAY,EAAZ,EAAgB,CAAC,WAAjB,EAA8B,KAA9B,EAAqC,MAArC,CAAP;AACH;;;;EAzayB,a;;AA4a9B;;;AACA,SAAS,WAAT,CAAqB,WAArB,EAAkC,YAAlC,EAAgD;AAC5C,WAAO,eAAe,WAAtB;AACH;;AAED,SAAS,kBAAT,CAA4B,CAA5B,EAA+B,CAA/B,EAAiC;AAC7B,QAAI,KAAK,iBAAO,GAAP,CAAW,CAAX,EAAa,CAAb,CAAT;AACA,WAAO,iBAAO,KAAP,CAAa,EAAb,CAAP;AACH;;AAED,SAAS,sBAAT,CAAgC,GAAhC,EAAqC,GAArC,EAA0C;AACtC,WAAO,CAAC,mBAAmB,GAAnB,EAAwB,GAAxB,CAAR;AACH;;AAED,SAAS,cAAT,CAAwB,IAAxB,EAA6B;AACzB,QAAI,UAAU,EAAd;AACA,SAAK,IAAI,IAAI,CAAb,EAAgB,IAAI,KAAK,MAAL,GAAc,CAAlC,EAAqC,GAArC,EAAyC;AACrC,YAAI,IAAI,KAAK,CAAL,CAAR;AACA,YAAI,IAAI,KAAK,IAAE,CAAP,CAAR;AACA,YAAI,SAAS,KAAK,KAAL,CAAW,EAAE,CAAF,IAAO,EAAE,CAAF,CAAlB,EAAwB,EAAE,CAAF,IAAO,EAAE,CAAF,CAA/B,CAAb;AACA,gBAAQ,IAAR,CAAa,MAAb;AACH;AACD,WAAO,OAAP;AACH;;AAED,SAAS,eAAT,CAAyB,MAAzB,EAAiC,MAAjC,EAAwC;AACpC,QAAI,cAAJ;AAAA,QAAW,YAAX;AACA,QAAI,SAAS,MAAb,EAAoB;AAChB,gBAAQ,MAAR;AACA,cAAM,MAAN;AACH,KAHD,MAIK;AACD,gBAAQ,MAAR;AACA,cAAM,MAAN;AACH;;AAED,WAAO,MAAM,KAAN,GAAc,KAAK,EAA1B,EAA6B;AACzB,iBAAS,IAAI,KAAK,EAAlB;AACH;;AAED,WAAO,KAAK,GAAL,CAAS,MAAM,KAAf,CAAP;AACH;;;;;;;;;;;;;ACxyBD;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;;;;;;;IAEqB,U;;;AAEjB,wBAAa,QAAb,EAAuB,IAAvB,EAA6B,MAA7B,EAAqC;AAAA;;AAAA,4HAC3B,IAD2B,EACrB,MADqB;;AAEjC,cAAK,QAAL,GAAgB,CAAC,SAAS,CAAT,CAAD,EAAc,SAAS,CAAT,CAAd,CAAhB;AACA,cAAK,MAAL,GAAc,MAAK,MAAL,CAAY,MAA1B;AACA,cAAK,MAAL;;AAEA,cAAK,kBAAL,GAA0B,CAA1B;AACA,cAAK,UAAL,GAAkB,CAAC,MAAK,IAAL,CAAU,CAAV,CAAD,IAAiB,CAAC,MAAK,IAAL,CAAU,CAAV,CAAlB,IAAkC,CAAC,MAAK,MAAL,CAAY,MAAZ,CAAmB,CAAnB,CAAnC,IAA4D,CAAC,MAAK,MAAL,CAAY,MAAZ,CAAmB,CAAnB,CAA/E;AACA,cAAK,UAAL,GAAkB,CAAC,MAAK,UAAL,EAAnB;AARiC;AASpC;;;;iCAEQ;AACL;AACA,iBAAK,aAAL;AACA,iBAAK,YAAL;AACH;;;wCAEgB;AACb,iBAAK,MAAL,GAAc,CAAC,KAAK,MAAL,CAAY,MAAZ,CAAmB,CAAnB,CAAD,EAAwB,KAAK,MAAL,CAAY,MAAZ,CAAmB,CAAnB,CAAxB,CAAd;;AAEA;AACA,gBAAI,KAAK,MAAT,EAAiB;AACb,oBAAI,SAAS,KAAK,MAAlB;AACA;AACA,qBAAK,MAAL,GAAc,uBAAY,aAAZ,CAA0B,KAAK,MAA/B,EAAuC,OAAO,IAA9C,EAAoD,OAAO,MAA3D,EAAmE,uBAAY,WAA/E,CAAd;AACA,qBAAK,MAAL,GAAc,uBAAY,aAAZ,CAA0B,KAAK,MAA/B,EAAuC,OAAO,IAA9C,EAAoD,KAAK,MAAzD,EAAiE,uBAAY,WAA7E,CAAd;AACA,oBAAI,OAAO,MAAP,KAAkB,0BAAY,QAAlC,EAA4C;AAAS;AACjD,wBAAI,KAAK,MAAL,KAAgB,0BAAY,QAAhC,EAA0C;AAAO;AAC7C,6BAAK,MAAL,GAAc,OAAO,MAArB;AACH,qBAFD,MAGK;AAA4C;AAC7C,6BAAK,MAAL,CAAY,CAAZ,KAAkB,OAAO,MAAP,CAAc,CAAd,CAAlB;AACA,6BAAK,MAAL,CAAY,CAAZ,KAAkB,OAAO,MAAP,CAAc,CAAd,CAAlB;AACH;AACJ;AACJ;;AAED,iBAAK,MAAL,GAAc,uBAAY,aAAZ,CAA0B,KAAK,MAA/B,EAAuC,KAAK,IAA5C,EAAkD,KAAK,MAAvD,CAAd;AACH;;;uCAEe;AACZ,gBAAI,QAAQ,CAAC,KAAK,IAAL,CAAU,CAAV,IAAe,KAAK,MAAL,CAAY,MAAZ,CAAmB,CAAnB,IAAwB,CAAxC,IAA6C,KAAK,MAAL,CAAY,eAAzD,GAA2E,gBAAM,OAA7F;AACA,gBAAI,SAAS,CAAC,KAAK,IAAL,CAAU,CAAV,IAAe,KAAK,MAAL,CAAY,MAAZ,CAAmB,CAAnB,IAAwB,CAAxC,IAA6C,KAAK,MAAL,CAAY,eAAzD,GAA2E,gBAAM,OAA9F;;AAEA;AACA,gBAAI,KAAK,MAAL,CAAY,MAAhB,EAAuB;AACnB,yBAAS,IAAI,KAAK,MAAL,CAAY,eAAzB;AACH;;AAED,gBAAI,IAAI,CACJ,KAAK,QAAL,CAAc,CAAd,IAAoB,KAAK,MAAL,CAAY,CAAZ,IAAiB,KAAK,MAAL,CAAY,eAD7C,EAEJ,KAAK,QAAL,CAAc,CAAd,IAAoB,KAAK,MAAL,CAAY,CAAZ,IAAiB,KAAK,MAAL,CAAY,eAF7C,CAAR;;AAKA,iBAAK,GAAL,GAAW,kBAAQ,EAAE,CAAF,CAAR,EAAc,EAAE,CAAF,CAAd,EAAoB,CAApB,EAAuB,KAAvB,EAA8B,MAA9B,CAAX;AACA,iBAAK,IAAL,GAAY,KAAK,GAAL,CAAS,SAAT,EAAZ;AACH;;AAED;AACA;;;;uCACgB;AACZ,gBAAI,UAAU,KAAd;;AAEA,gBAAI,KAAK,IAAL,CAAU,CAAV,IAAe,CAAnB,EAAsB;AAClB,qBAAK,QAAL,CAAc,CAAd,KAAoB,CAAC,KAAK,IAAL,CAAU,CAAV,CAArB;AACA,0BAAU,IAAV;AACH;;AAED,gBAAI,KAAK,IAAL,CAAU,CAAV,KAAgB,cAAI,UAAxB,EAAoC;AAChC,qBAAK,QAAL,CAAc,CAAd,KAAoB,KAAK,IAAL,CAAU,CAAV,IAAe,cAAI,UAAnB,GAAgC,CAApD;AACA,0BAAU,IAAV;AACH;;AAED,gBAAI,KAAK,IAAL,CAAU,CAAV,IAAe,CAAnB,EAAsB;AAClB,qBAAK,QAAL,CAAc,CAAd,KAAoB,KAAK,IAAL,CAAU,CAAV,CAApB;AACA,0BAAU,IAAV;AACH;;AAED,gBAAI,KAAK,IAAL,CAAU,CAAV,KAAgB,CAAC,cAAI,UAAzB,EAAqC;AACjC,qBAAK,QAAL,CAAc,CAAd,KAAoB,KAAK,IAAL,CAAU,CAAV,IAAe,cAAI,UAAnB,GAAgC,CAApD;AACA,0BAAU,IAAV;AACH;;AAED,gBAAI,OAAJ,EAAa;AACT,qBAAK,YAAL;AACH;;AAED,mBAAO,OAAP;AACH;;;qCAEY;AACT,gBAAI,CAAC,KAAK,MAAL,CAAY,cAAb,IAA+B,KAAK,YAAL,EAAnC,EAAwD;AACpD,uBAAO,IAAP;AACH;;AAED,gBAAI,KAAK,MAAL,CAAY,cAAhB,EAA+B;AAC3B,qBAAK,YAAL;AACA,uBAAO,IAAP;AACH,aAHD,MAIK;AACD,oBAAI,MAAM,OAAN,CAAc,KAAK,MAAL,CAAY,MAA1B,CAAJ,EAAuC;AACnC;AACA,yBAAK,IAAI,IAAI,CAAb,EAAgB,IAAI,KAAK,MAAL,CAAY,MAAZ,CAAmB,MAAvC,EAA+C,GAA/C,EAAoD;AAChD,6BAAK,MAAL,GAAc,KAAK,MAAL,CAAY,MAAZ,CAAmB,CAAnB,CAAd;AACA,6BAAK,MAAL;;AAEA,6BAAK,kBAAL,GAA0B,CAA1B;;AAEA,4BAAI,KAAK,YAAL,EAAJ,EAAyB;AACrB,mCAAO,IAAP;AACH;AACJ;AACJ;;AAED;AACA,uBAAO,KAAP;AACH;AACJ;;;gCAEQ,M,EAAwB;AAAA,gBAAhB,OAAgB,uEAAN,IAAM;;AAC7B,gBAAI,KAAK,UAAT,EAAqB;AACjB,uBAAO,KAAP;AACH;;AAED,gIAAkB,MAAlB,EAA0B,OAA1B,GAAoC;AAChC;AACA,oBAAI,MAAM,OAAN,CAAc,KAAK,MAAL,CAAY,MAA1B,CAAJ,EAAuC;AACnC;AACA,yBAAK,IAAI,IAAE,KAAK,kBAAhB,EAAoC,IAAI,KAAK,MAAL,CAAY,MAAZ,CAAmB,MAA3D,EAAmE,GAAnE,EAAwE;AACpE,6BAAK,MAAL,GAAc,KAAK,MAAL,CAAY,MAAZ,CAAmB,CAAnB,CAAd;AACA,6BAAK,MAAL;;AAEA,4BAAI,KAAK,MAAL,CAAY,cAAZ,IAA8B,CAAC,KAAK,YAAL,EAAnC,EAAwD;AACpD;AACH;;AAED,4BAAI,iHAAe,MAAf,EAAuB,OAAvB,CAAJ,EAAqC;AACjC,mCAAO,KAAP;AACH;AACJ;AACJ;AACD,uBAAO,IAAP;AACH;AACD,mBAAO,KAAP;AACH;;;;;;AAIL;;;kBAtJqB,U;AAuJrB,WAAW,SAAX,GAAuB;AACnB,YAAQ,CADW,EACC;AACpB,cAAU,CAFS,EAEC;AACpB,YAAQ,CAHW,EAGC;AACpB,cAAU,CAJS,CAIC;AAJD,CAAvB;;;;;;;;AC7JA;AACA,IAAM,QAAQ,CAAC,MAAD,EAAS,UAAT,EAAqB,aAArB,CAAd;AACA,IAAM,SAAS,CAAC,OAAD,EAAU,WAAV,EAAuB,cAAvB,CAAf;AACA,IAAM,OAAO,CAAC,KAAD,EAAQ,UAAR,EAAoB,WAApB,CAAb;AACA,IAAM,UAAU,CAAC,QAAD,EAAW,aAAX,EAA0B,cAA1B,CAAhB;;AAEA,IAAI,oBAAJ;;kBAEe,cAAc;AAEzB,iBAFyB,yBAEV,MAFU,EAEF,IAFE,EAEI,MAFJ,EAE2B;AAAA,YAAf,MAAe,uEAAN,IAAM;;AAChD,YAAI,CAAC,MAAD,IAAW,WAAW,QAA1B,EAAoC;AAChC,mBAAO,MAAP;AACH;;AAED,YAAI,UAAU,CAAC,OAAO,CAAP,CAAD,EAAY,OAAO,CAAP,CAAZ,CAAd;AACA,iBAAS,UAAU,KAAK,cAAxB;;AAEA;AACA,YAAI,KAAK,YAAL,CAAkB,MAAlB,CAAJ,EAA+B;AAC3B,oBAAQ,CAAR,KAAc,KAAK,CAAL,IAAU,CAAxB;AACA,gBAAI,WAAW,MAAf,EAAuB;AACnB,wBAAQ,CAAR,KAAc,OAAO,CAAP,CAAd;AACH;AACJ,SALD,MAMK,IAAI,KAAK,aAAL,CAAmB,MAAnB,CAAJ,EAAgC;AACjC,oBAAQ,CAAR,KAAc,KAAK,CAAL,IAAU,CAAxB;AACA,gBAAI,WAAW,OAAf,EAAwB;AACpB,wBAAQ,CAAR,KAAc,OAAO,CAAP,CAAd;AACH;AACJ;;AAED;AACA,YAAI,KAAK,WAAL,CAAiB,MAAjB,CAAJ,EAA8B;AAC1B,oBAAQ,CAAR,KAAc,KAAK,CAAL,IAAU,CAAxB;AACA,gBAAI,WAAW,KAAf,EAAsB;AAClB,wBAAQ,CAAR,KAAc,OAAO,CAAP,CAAd;AACH;AACJ,SALD,MAMK,IAAI,KAAK,cAAL,CAAoB,MAApB,CAAJ,EAAiC;AAClC,oBAAQ,CAAR,KAAc,KAAK,CAAL,IAAU,CAAxB;AACA,gBAAI,WAAW,QAAf,EAAyB;AACrB,wBAAQ,CAAR,KAAc,OAAO,CAAP,CAAd;AACH;AACJ;;AAED,eAAO,OAAP;AACH,KAvCwB;AAyCzB,kBAzCyB,0BAyCT,MAzCS,EAyCD;AACpB,YAAI,UAAU,WAAW,QAAzB,EAAmC;AAC/B,gBAAI,KAAK,YAAL,CAAkB,MAAlB,CAAJ,EAA+B;AAC3B,uBAAO,OAAP;AACH,aAFD,MAGK,IAAI,KAAK,aAAL,CAAmB,MAAnB,CAAJ,EAAgC;AACjC,uBAAO,MAAP;AACH;AACJ;AACD,eAAO,QAAP;AACH,KAnDwB;AAqDzB,gBArDyB,wBAqDX,MArDW,EAqDH;AAClB,eAAQ,MAAM,OAAN,CAAc,MAAd,IAAwB,CAAC,CAAjC;AACH,KAvDwB;AAyDzB,iBAzDyB,yBAyDV,MAzDU,EAyDF;AACnB,eAAQ,OAAO,OAAP,CAAe,MAAf,IAAyB,CAAC,CAAlC;AACH,KA3DwB;AA6DzB,eA7DyB,uBA6DZ,MA7DY,EA6DJ;AACjB,eAAQ,KAAK,OAAL,CAAa,MAAb,IAAuB,CAAC,CAAhC;AACH,KA/DwB;AAiEzB,kBAjEyB,0BAiET,MAjES,EAiED;AACpB,eAAQ,QAAQ,OAAR,CAAgB,MAAhB,IAA0B,CAAC,CAAnC;AACH,KAnEwB;;;AAqEzB;AACA,oBAAgB,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,EAAgB,IAAhB,CAtES;AAuEzB,iBAAa,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV;;AAvEY,C;;;;;;;;kBCAL,iB;;AANxB;;;;AACA;;;;AAHA;;AAKA,IAAM,YAAY,sBAAW,SAA7B;AACA,IAAM,kBAAkB,EAAxB,C,CAA4B;;AAEb,SAAS,iBAAT,CAA4B,IAA5B,EAAkC,IAAlC,EAAwC,OAAxC,EAAiD;AAC5D,QAAI,SAAS,EAAb;AACA,QAAI,WAAW,QAAQ,SAAvB;AACA,QAAI,aAAa,KAAK,GAAL,CAAS,KAAK,CAAL,CAAT,EAAkB,KAAK,CAAL,CAAlB,IAA6B,QAAQ,0BAArC,GAAkE,QAAQ,eAA3F;;AAEA,YAAQ,QAAR;AACI,aAAK,UAAU,MAAf;AACI,gBAAI,SAAS,sBAAsB,IAAtB,EAA4B,UAA5B,EAAwC,OAAxC,CAAb;AACA;AACA,gBAAI,CAAC,MAAL,EAAa;AACT,uBAAO,EAAP;AACH;;AAED,gBAAI,YAAY,OAAO,SAAvB;AACA,gBAAI,SAAS,OAAO,MAApB;AACA,iBAAK,IAAI,IAAI,CAAb,EAAgB,IAAI,UAAU,MAA9B,EAAsC,GAAtC,EAA0C;AACtC,oBAAI,WAAW,UAAU,CAAV,CAAf;AACA,oBAAI,QAAQ,OAAO,CAAP,CAAZ;AACA,oBAAI,QAAQ,UAAR,KAAuB,IAAvB,IAA+B,CAAC,gCAAmB,QAAnB,CAApC,EAAkE;AAC9D,wBAAI,SAAQ,0BAAe,QAAf,EAAyB,IAAzB,EAA+B,OAA/B,CAAZ;AACA,2BAAM,KAAN,GAAc,KAAd;AACA,2BAAO,IAAP,CAAY,MAAZ;AACH;AACJ;AACD;AACJ,aAAK,UAAU,MAAf;AACI,gBAAI,UAAJ;AAAA,gBAAO,UAAP;AAAA,gBAAU,cAAV;AACA,iBAAK,IAAI,KAAI,CAAb,EAAgB,KAAI,KAAK,MAAL,GAAc,CAAlC,EAAqC,IAArC,EAAyC;AACrC,oBAAI,KAAK,EAAL,CAAJ;AACA,oBAAI,KAAK,KAAI,CAAT,CAAJ;AACA,oBAAI,QAAQ,UAAR,KAAuB,IAAvB,IAA+B,CAAC,gCAAmB,CAAnB,CAApC,EAA2D;AACvD,4BAAQ,0BAAe,CAAf,EAAkB,IAAlB,EAAwB,OAAxB,CAAR;AACA,0BAAM,KAAN,GAAc,SAAS,CAAT,EAAY,CAAZ,EAAe,QAAQ,KAAvB,CAAd;AACA,2BAAO,IAAP,CAAY,KAAZ;AACH;AACJ;;AAED;AACA,oBAAQ,0BAAe,CAAf,EAAkB,IAAlB,EAAwB,OAAxB,CAAR;AACA,kBAAM,KAAN,GAAc,SAAS,CAAT,EAAY,CAAZ,EAAe,QAAQ,KAAvB,CAAd;AACA,mBAAO,IAAP,CAAY,KAAZ;AACA;AACJ,aAAK,UAAU,QAAf;AACI,iBAAK,IAAI,MAAI,CAAb,EAAgB,MAAI,KAAK,MAAL,GAAc,CAAlC,EAAqC,KAArC,EAAyC;AACrC,oBAAI,KAAI,KAAK,GAAL,CAAR;AACA,oBAAI,KAAI,KAAK,MAAI,CAAT,CAAR;AACA,oBAAI,YAAW,CACX,OAAO,GAAE,CAAF,IAAO,GAAE,CAAF,CAAd,CADW,EAEX,OAAO,GAAE,CAAF,IAAO,GAAE,CAAF,CAAd,CAFW,CAAf;AAIA,oBAAI,QAAQ,UAAR,KAAuB,IAAvB,IAA+B,CAAC,gCAAmB,SAAnB,CAApC,EAAkE;AAC9D,wBAAI,CAAC,UAAD,IAAe,KAAK,EAAL,EAAQ,EAAR,IAAa,UAAhC,EAA4C;AACxC,4BAAI,UAAQ,0BAAe,SAAf,EAAyB,IAAzB,EAA+B,OAA/B,CAAZ;AACA,gCAAM,KAAN,GAAc,SAAS,EAAT,EAAY,EAAZ,EAAe,QAAQ,KAAvB,CAAd;AACA,+BAAO,IAAP,CAAY,OAAZ;AACH;AACJ;AACJ;AACD;AArDR;AAuDA,WAAO,MAAP;AACH;;AAED,SAAS,qBAAT,CAA+B,IAA/B,EAAqC,UAArC,EAAiD,OAAjD,EAAyD;AACrD,QAAI,MAAM,QAAQ,eAAlB;AACA,QAAI,UAAU,CAAC,QAAQ,iBAAR,IAA6B,eAA9B,IAAiD,GAA/D;;AAEA,QAAI,SAAS,cAAc,IAAd,CAAb;AACA,QAAI,UAAU,UAAd,EAA0B;AACtB,eAAO,KAAP;AACH;;AAED,QAAI,aAAa,KAAK,GAAL,CAAS,KAAK,KAAL,CAAW,SAAS,OAApB,CAAT,EAAuC,CAAvC,CAAjB;AACA,QAAI,YAAY,SAAS,CAAC,aAAa,CAAd,IAAmB,OAA5C;AACA,QAAI,YAAY,EAAhB;AACA,QAAI,SAAS,EAAb;;AAEA,QAAI,WAAW,MAAM,SAArB;AACA,SAAK,IAAI,IAAI,CAAb,EAAgB,IAAI,UAApB,EAAgC,GAAhC,EAAoC;AAAA,+BACR,gBAAgB,IAAhB,EAAsB,QAAtB,EAAgC,UAAhC,EAA4C,OAA5C,CADQ;AAAA,YAC3B,QAD2B,oBAC3B,QAD2B;AAAA,YACjB,KADiB,oBACjB,KADiB;;AAEhC,YAAI,YAAY,IAAZ,IAAoB,SAAS,IAAjC,EAAuC;AACnC,sBAAU,IAAV,CAAe,QAAf;AACA,mBAAO,IAAP,CAAY,KAAZ;AACH;AACD,oBAAY,OAAZ;AACH;;AAED,WAAO,EAAC,oBAAD,EAAY,cAAZ,EAAP;AACH;;AAED,SAAS,QAAT,CAAkB,CAAlB,EAAqB,CAArB,EAAkC;AAAA,QAAV,KAAU,uEAAF,CAAE;;AAC9B,WAAQ,UAAU,MAAX,GAAqB,KAAK,KAAL,CAAW,EAAE,CAAF,IAAO,EAAE,CAAF,CAAlB,EAAwB,EAAE,CAAF,IAAO,EAAE,CAAF,CAA/B,CAArB,GAA4D,KAAnE;AACH;;AAED,SAAS,aAAT,CAAuB,IAAvB,EAA4B;AACxB,QAAI,WAAW,CAAf;AACA,SAAK,IAAI,IAAI,CAAb,EAAgB,IAAI,KAAK,MAAL,GAAc,CAAlC,EAAqC,GAArC,EAAyC;AACrC,oBAAY,KAAK,KAAK,CAAL,CAAL,EAAc,KAAK,IAAE,CAAP,CAAd,CAAZ;AACH;AACD,WAAO,QAAP;AACH;;AAED,SAAS,IAAT,CAAc,CAAd,EAAiB,CAAjB,EAAmB;AACf,WAAO,KAAK,IAAL,CAAU,KAAK,GAAL,CAAS,EAAE,CAAF,IAAO,EAAE,CAAF,CAAhB,EAAsB,CAAtB,IAA2B,KAAK,GAAL,CAAS,EAAE,CAAF,IAAO,EAAE,CAAF,CAAhB,EAAsB,CAAtB,CAArC,CAAP;AACH;;AAED;AACA;AACA,SAAS,eAAT,CAAyB,IAAzB,EAA+B,QAA/B,EAAyC,UAAzC,EAAqD,OAArD,EAA6D;AACzD,QAAI,MAAM,CAAV;AACA,QAAI,iBAAJ;AAAA,QAAc,cAAd;AACA,SAAK,IAAI,IAAI,CAAb,EAAgB,IAAI,KAAK,MAAL,GAAY,CAAhC,EAAmC,GAAnC,EAAuC;AACnC,YAAI,IAAI,KAAK,CAAL,CAAR;AACA,YAAI,IAAI,KAAK,IAAE,CAAP,CAAR;;AAEA,YAAM,SAAS,KAAK,CAAL,EAAQ,CAAR,CAAf;AACA,YAAI,UAAU,UAAd,EAA0B;AACtB;AACH;;AAED,eAAO,MAAP;;AAEA,YAAI,MAAM,QAAV,EAAmB;AACf,uBAAW,mBAAmB,CAAnB,EAAsB,CAAtB,EAAyB,MAAM,QAA/B,CAAX;AACA,oBAAQ,SAAS,CAAT,EAAY,CAAZ,EAAe,QAAQ,KAAvB,CAAR;AACA;AACH;AACJ;AACD,WAAO,EAAC,kBAAD,EAAW,YAAX,EAAP;AACH;;AAED,SAAS,kBAAT,CAA4B,CAA5B,EAA+B,CAA/B,EAAkC,QAAlC,EAA2C;AACvC,QAAI,SAAS,KAAK,CAAL,EAAQ,CAAR,CAAb;AACA,QAAI,QAAQ,WAAW,MAAvB;AACA,WAAO,CACH,QAAQ,EAAE,CAAF,CAAR,GAAe,CAAC,IAAI,KAAL,IAAc,EAAE,CAAF,CAD1B,EAEH,QAAQ,EAAE,CAAF,CAAR,GAAe,CAAC,IAAI,KAAL,IAAc,EAAE,CAAF,CAF1B,CAAP;AAIH;;;;;;;;;;;AClJD;;;;;;;;IAEqB,W;AAEjB,yBAAa,GAAb,EAAkB,WAAlB,EAA+B,eAA/B,EAAgD;AAAA;;AAC5C,aAAK,GAAL,GAAW,GAAX;AACA,aAAK,WAAL,GAAmB,WAAnB;AACA,aAAK,cAAL,GAAsB,KAAK,WAAL,GAAmB,KAAK,WAA9C;AACA,aAAK,kBAAL,GAA0B,kBAAkB,eAA5C;AACA,aAAK,aAAL,GAAsB,KAAK,cAAL,IAAuB,KAAK,kBAA7B,GAAmD,IAAnD,GAA0D,KAA/E;AACA,aAAK,SAAL,GAAiB,EAAjB;AACH;;AAED;;;;;8BACO,G,EAAK;AACR;AACA,gBAAI,KAAK,aAAT,EAAwB;AACpB,oBAAI,KAAK,SAAL,CAAe,MAAf,GAAwB,CAA5B,EAA+B;AAC3B;AACA;AACA,2BAAO;AACH,iCAAS,KAAK,kBADX;AAEH,wCAAgB,KAAK,cAFlB;AAGH,uCAAe,KAAK;AAHjB,qBAAP;AAKH;AACD,uBAVoB,CAUZ;AACX;;AAED;AACA,gBAAI,KAAK,IAAI,QAAb;AACA,iBAAK,IAAI,IAAE,CAAX,EAAc,IAAI,KAAK,SAAL,CAAe,MAAjC,EAAyC,GAAzC,EAA8C;AAC1C,oBAAI,KAAK,KAAK,SAAL,CAAe,CAAf,CAAT;AACA,oBAAI,KAAK,GAAG,CAAH,IAAQ,GAAG,CAAH,CAAjB;AACA,oBAAI,KAAK,GAAG,CAAH,IAAQ,GAAG,CAAH,CAAjB;AACA,oBAAI,UAAU,KAAK,EAAL,GAAU,KAAK,EAA7B;;AAEA;AACA,oBAAI,UAAU,KAAK,cAAnB,EAAmC;AAC/B,2BAAO;AACH,wCADG;AAEH,wCAAgB,KAAK;AAFlB,qBAAP;AAIH;AACJ;AACJ;;AAED;;;;4BACK,G,EAAK;AACN;AACA,gBAAI,OAAO,IAAI,QAAf,EAAyB;AACrB,qBAAK,SAAL,CAAe,IAAf,CAAoB,IAAI,QAAxB;AACH;AACJ;;AAED;;AAEA;;;;8BACc,I,EAAM;AAChB,iBAAK,MAAL,CAAY,IAAZ,IAAoB,EAApB;AACH;;AAED;;;;8BACc,G,EAAK,M,EAAQ,I,EAAM;AAC7B,gBAAI,OAAO,eAAP,IAA0B,OAAO,YAAjC,IAAiD,KAAK,MAAL,CAAY,IAAZ,EAAkB,OAAO,YAAzB,CAArD,EAA6F;AACzF,uBAAO,KAAK,MAAL,CAAY,IAAZ,EAAkB,OAAO,YAAzB,EAAuC,KAAvC,CAA6C,GAA7C,CAAP;AACH;AACJ;;AAED;;;;4BACY,G,EAAK,M,EAAQ,I,EAAM;AAC3B,gBAAI,OAAO,eAAP,IAA0B,OAAO,YAArC,EAAmD;AAC/C,oBAAI,KAAK,MAAL,CAAY,IAAZ,EAAkB,OAAO,YAAzB,KAA0C,IAA9C,EAAoD;AAChD,yBAAK,MAAL,CAAY,IAAZ,EAAkB,OAAO,YAAzB,IAAyC,IAAI,WAAJ,CACrC,OAAO,YAD8B,EAErC,OAAO,eAF8B,EAGrC,YAAY,eAHyB,CAAzC;AAKH;AACD,qBAAK,MAAL,CAAY,IAAZ,EAAkB,OAAO,YAAzB,EAAuC,GAAvC,CAA2C,GAA3C;AACH;AACJ;;;;;;AAIL;;;kBAnFqB,W;AAoFrB,YAAY,MAAZ,GAAqB,EAArB;;AAEA;AACA;AACA,YAAY,eAAZ,GAA8B,cAAI,UAAlC;;;;;;;;;QClFgB,Y,GAAA,Y;;AARhB;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AAEA;AACO,IAAI,+CAAJ;AACA,SAAS,YAAT,CAAsB,OAAtB,EAA+B;AAClC,WAAO,cAAc,OAAd,CAAP;AACH;;AAED,SAAS,aAAT,CAAuB,OAAvB,EAAgC;;AAE5B;AACA;AACA,QAAI,OAAO,YAAP,KAAwB,WAA5B,EAAyC;AACrC,eAAO,IAAI,YAAJ,CAAiB,OAAjB,CAAP;AACH;;AAED;AACA,QAAI,iBAAO,OAAX,EAAoB;;AAEhB,YAAI,IAAI,QAAQ,OAAR,IAAmB,OAAO,CAAlC;;AAEA;AACA;AACA,YAAI,iBAAiB,EAAE,SAAF,GAAc,EAAE,SAAhB,GAA4B,EAAE,SAAnD;AACA,YAAI,iBAAiB,mBAAmB,EAAE,SAArB,GAAiC,KAAjC,GAAyC,OAA9D;AACA,YAAI,mBAAmB,EAAvB;AACA,YAAI,+BAAJ;AAAA,YAA4B,wBAA5B,CATgB,CAS6B;;AAE7C;AACA,YAAI,mBAAmB,EAAE,SAAzB,EAAoC;AAChC,6BAAiB,QAAjB,GAA4B,YAAU,CAAE,CAAxC;AACA,6BAAiB,WAAjB,GAA+B,YAAU,CAAE,CAA3C;AACA,6BAAiB,MAAjB,GAA0B,YAAW;AACjC,+BAAe,SAAf,CAAyB,MAAzB,CAAgC,KAAhC,CAAsC,IAAtC,EAA4C,SAA5C;AACA;AACA,oBAAI,KAAK,KAAL,IAAc,KAAK,KAAL,CAAW,SAAzB,IAAsC,KAAK,KAAL,CAAW,MAArD,EAA6D;AACzD,yBAAK,KAAL,CAAW,SAAX,CAAqB,WAArB,CAAiC,KAAK,KAAL,CAAW,MAA5C;AACH;AACJ,aAND;AAOH;;AAED;AACA,eAAO,MAAP,CAAc,gBAAd,EAAgC;AAE5B,sBAF4B,sBAEhB,OAFgB,EAEP;AACjB;AACA,wBAAQ,SAAR,GAAqB,CAAC,QAAQ,SAAT,GAAqB,KAArB,GAA6B,IAAlD;;AAEA,kBAAE,UAAF,CAAa,IAAb,EAAmB,OAAnB;AACA,qBAAK,0BAAL;AACA,qBAAK,WAAL;AACA,qBAAK,KAAL,GAAa,EAAb;AACA,qBAAK,iBAAL,GAAyB,KAAzB;AACA,qBAAK,aAAL,GAAqB,KAArB,CATiB,CASW;AAC/B,aAZ2B;AAc5B,uBAd4B,yBAcb;AACX,qBAAK,KAAL,GAAa,gBAAM,MAAN,CACT,KAAK,OAAL,CAAa,KADJ,EAET;AACI,gCAAY,KAAK,OAAL,CAAa,UAD7B;AAEI,+BAAW,KAAK,OAAL,CAAa,SAF5B;AAGI,gCAAY,KAAK,OAAL,CAAa,UAH7B;AAII,oCAAiB,aAAa,cAAb,KAAgC,KAJrD;AAKI,8BAAW,KAAK,OAAL,CAAa,MAAb,KAAwB,IAAxB,GAA+B,KAA/B,GAAuC,IALtD;AAMI,wCAAoB,KAAK,OAAL,CAAa,kBANrC;AAOI,8BAAU,KAAK,OAAL,CAAa,QAP3B;AAQI,mCAAe,KAAK,OAAL,CAAa,aARhC;AASI,yCAAqB,KAAK,OAAL,CAAa,mBATtC,EAS2D;AACvD,uCAAmB,KAAK,OAAL,CAAa,iBAVpC,CAUsD;AAVtD,iBAFS,CAAb;AAcH,aA7B2B;;;AA+B5B;AACA,iBAhC4B,iBAgCrB,GAhCqB,EAgChB;AAAA;;AACR,oBAAI,CAAC,KAAK,KAAV,EAAiB;AACb,yBAAK,WAAL;AACH;;AAED,+BAAe,SAAf,CAAyB,KAAzB,CAA+B,KAA/B,CAAqC,IAArC,EAA2C,SAA3C;;AAEA,qBAAK,KAAL,CAAW,MAAX,GAAoB,YAAM;AACtB,0BAAK,iBAAL,GAAyB,IAAzB;AACA,0BAAK,UAAL;AACA,0BAAK,iBAAL,GAAyB,KAAzB;AACH,iBAJD;AAKA,oBAAI,EAAJ,CAAO,QAAP,EAAiB,KAAK,KAAL,CAAW,MAA5B;;AAEA,qBAAK,KAAL,CAAW,IAAX,GAAkB,YAAM;AACpB,wBAAI,MAAK,iBAAT,EAA4B;AACxB;AACH;AACD,0BAAK,iBAAL,GAAyB,IAAzB;;AAEA,0BAAK,KAAL,CAAW,IAAX,CAAgB,UAAhB,CAA2B,IAA3B;AACA,wBAAI,OAAO,IAAI,SAAJ,EAAX;AACA,yBAAK,IAAL,GAAY,KAAK,GAAL,CAAS,KAAK,GAAL,CAAS,IAAI,OAAJ,EAAT,EAAwB,IAAI,UAAJ,MAAoB,cAAI,qBAAhD,CAAT,EAAiF,IAAI,UAAJ,EAAjF,CAAZ;;AAEA,0BAAK,KAAL,CAAW,IAAX,CAAgB,OAAhB,CAAwB,IAAxB;AACA,wBAAI,MAAK,cAAL,GAAsB,CAA1B,EAA6B;AACzB;AACA;AACA,8BAAK,KAAL,CAAW,eAAX;AACH;AACD,0BAAK,gBAAL;;AAEA,0BAAK,iBAAL,GAAyB,KAAzB;AACH,iBAnBD;AAoBA,oBAAI,EAAJ,CAAO,MAAP,EAAe,KAAK,KAAL,CAAW,IAA1B;;AAEA,qBAAK,KAAL,CAAW,OAAX,GAAqB,YAAM;AACvB,0BAAK,KAAL,CAAW,IAAX,CAAgB,UAAhB,CAA2B,KAA3B;AACA,0BAAK,KAAL,CAAW,aAAX;AACH,iBAHD;AAIA,oBAAI,EAAJ,CAAO,SAAP,EAAkB,KAAK,KAAL,CAAW,OAA7B;;AAEA,qBAAK,KAAL,CAAW,IAAX,GAAkB,YAAM;AACpB,0BAAK,KAAL,CAAW,IAAX,CAAgB,aAAhB;AACH,iBAFD;AAGA,oBAAI,EAAJ,CAAO,MAAP,EAAe,KAAK,KAAL,CAAW,IAA1B;;AAEA;AACA,qBAAK,yBAAL,CAA+B,GAA/B;AACA,qBAAK,qBAAL,CAA2B,GAA3B;AACA,kCAAkB,wBACd,UAAS,GAAT,EAAc;AACV,wBAAI,QAAJ,CAAa,IAAb;AACA,wBAAI,IAAJ,CAAS,WAAT,EAFU,CAEa;AAC1B,iBAJa,EAKd,IAAI,OAAJ,CAAY,iBAAZ,GAAgC,CALlB,CAAlB;AAOA,qBAAK,mBAAL,CAAyB,GAAzB;;AAEA;AACA,qBAAK,2BAAL,CAAiC,GAAjC;AACA,qBAAK,kBAAL,CAAwB,KAAK,OAAL,CAAa,MAArC,EAA6C,EAAE,QAAQ,KAAK,OAAL,CAAa,eAAvB,EAA7C;;AAEA;AACA,qBAAK,KAAL,CAAW,SAAX,GAAuB,KAAK,YAAL,EAAvB;AACA,qBAAK,UAAL;;AAEA;AACA,qBAAK,UAAL;AACA,qBAAK,oBAAL;;AAEA;AACA,qBAAK,KAAL,CAAW,SAAX,CAAqB;AACjB,0BAAM,KAAK,mBAAL,CAAyB,IAAzB,CAA8B,IAA9B;AADW,iBAArB;;AAIA;AACA,qBAAK,KAAL,CAAW,IAAX,CACI,KAAK,OAAL,CAAa,KADjB,EAEI;AACI,+BAAW,KAAK,OAAL,CAAa,aAD5B;AAEI,+BAAW,KAAK,OAAL,CAAa,aAF5B;AAGI,8BAAU;AAHd,iBAFJ,EAMO,IANP,CAMY,YAAM;;AAEd,0BAAK,iBAAL,GAAyB,IAAzB;;AAEA,0BAAK,UAAL;AACA,0BAAK,UAAL;AACA,0BAAK,gBAAL;;AAEA,0BAAK,iBAAL,GAAyB,KAAzB;;AAEA,0BAAK,IAAL,CAAU,MAAV;AACH,iBAjBD,EAiBG,KAjBH,CAiBS,iBAAS;AACd,0BAAK,IAAL,CAAU,OAAV,EAAmB,KAAnB;AACH,iBAnBD;AAoBH,aAjI2B;AAmI5B,oBAnI4B,oBAmIlB,GAnIkB,EAmIb;AACX,+BAAe,SAAf,CAAyB,QAAzB,CAAkC,KAAlC,CAAwC,IAAxC,EAA8C,SAA9C;;AAEA,oBAAI,GAAJ,CAAQ,+CAAR,EAAyD,KAAK,oBAA9D;AACA,oBAAI,GAAJ,CAAQ,QAAR,EAAkB,KAAK,KAAL,CAAW,MAA7B;AACA,oBAAI,GAAJ,CAAQ,MAAR,EAAgB,KAAK,KAAL,CAAW,IAA3B;AACA,oBAAI,GAAJ,CAAQ,SAAR,EAAmB,KAAK,KAAL,CAAW,OAA9B;AACA,oBAAI,GAAJ,CAAQ,MAAR,EAAgB,KAAK,KAAL,CAAW,IAA3B;AACA,oBAAI,GAAJ,CAAQ,OAAR,EAAiB,KAAK,KAAL,CAAW,KAA5B;AACA,oBAAI,GAAJ,CAAQ,WAAR,EAAqB,KAAK,KAAL,CAAW,SAAhC;AACA,oBAAI,GAAJ,CAAQ,UAAR,EAAoB,KAAK,KAAL,CAAW,QAA/B;AACA,yBAAS,mBAAT,CAA6B,kBAA7B,EAAiD,KAAK,KAAL,CAAW,gBAA5D;AACA,qBAAK,KAAL,GAAa,EAAb;;AAEA,oBAAI,KAAK,KAAT,EAAgB;AACZ,yBAAK,KAAL,CAAW,OAAX;AACA,yBAAK,KAAL,GAAa,IAAb;AACH;AACJ,aArJ2B;AAuJ5B,sBAvJ4B,sBAuJhB,MAvJgB,EAuJR;AAChB,oBAAI,MAAM,OAAO,CAAP,GAAW,GAAX,GAAiB,OAAO,CAAxB,GAA4B,GAA5B,GAAkC,OAAO,CAAnD;AACA,oBAAI,MAAM,SAAS,aAAT,CAAuB,KAAvB,CAAV;AACA,oBAAI,YAAJ,CAAiB,eAAjB,EAAkC,GAAlC;AACA,oBAAI,KAAJ,CAAU,KAAV,GAAkB,OAAlB;AACA,oBAAI,KAAJ,CAAU,MAAV,GAAmB,OAAnB;;AAEA,oBAAI,KAAK,OAAL,CAAa,SAAjB,EAA4B;AACxB,wBAAI,gBAAgB,SAAS,aAAT,CAAuB,KAAvB,CAApB;AACA,kCAAc,WAAd,GAA4B,GAA5B;AACA,kCAAc,KAAd,CAAoB,QAApB,GAA+B,UAA/B;AACA,kCAAc,KAAd,CAAoB,IAApB,GAA2B,CAA3B;AACA,kCAAc,KAAd,CAAoB,GAApB,GAA0B,CAA1B;AACA,kCAAc,KAAd,CAAoB,KAApB,GAA4B,OAA5B;AACA,kCAAc,KAAd,CAAoB,QAApB,GAA+B,MAA/B;AACA,kCAAc,KAAd,CAAoB,WAApB,GAAkC,aAAlC;AACA,kCAAc,KAAd,CAAoB,OAApB,GAA8B,KAA9B;;AAEA,wBAAI,WAAJ,CAAgB,aAAhB;AACA,wBAAI,KAAJ,CAAU,WAAV,GAAwB,OAAxB;AACA,wBAAI,KAAJ,CAAU,WAAV,GAAwB,OAAxB;AACA,wBAAI,KAAJ,CAAU,WAAV,GAAwB,KAAxB;AACH;;AAED,uBAAO,GAAP;AACH,aAhL2B;;;AAkL5B;AACA;AACA,qCApL4B,qCAoLD,GApLC,EAoLI;AAC5B,oBAAI,KAAK,KAAL,CAAW,IAAX,CAAgB,eAAhB,IAAmC,IAAI,eAAvC,IAA0D,KAAK,OAAL,CAAa,iBAAb,KAAmC,KAAjG,EAAwG;AACpG,wBAAI,OAAJ,CAAY,QAAZ,GAAuB,CAAvB;;AAEA,wBAAM,UAAU,IAAI,eAAJ,CAAoB,OAApB,EAAhB;AACA,wBAAI,eAAJ,CAAoB,OAApB;;AAEA;AACA;AACA;AACA,wBAAI,EAAE,OAAF,CAAU,MAAV,IAAoB,EAAE,OAAF,CAAU,MAAlC,EAA0C;AACtC,4BAAI,eAAJ,CAAoB,cAApB,GAAqC,UAAU,CAAV,EAAa;AAC9C,gCAAI,QAAQ,EAAE,QAAF,CAAW,aAAX,CAAyB,CAAzB,CAAZ;AACA,iCAAK,MAAL,IAAe,KAAf;AACA,iCAAK,aAAL,GAAqB,KAAK,IAAL,CAAU,0BAAV,CAAqC,CAArC,CAArB;AACA,iCAAK,YAAL;AACA,8BAAE,QAAF,CAAW,IAAX,CAAgB,CAAhB;AACH,yBAND;AAOH,qBARD,MASK;AACD,4BAAI,OAAJ,CAAY,iBAAZ,GAAgC,EAAhC,CADC,CACmC;AACvC;;AAED,wBAAI,QAAQ,IAAZ;AACA,wBAAI,eAAJ,CAAoB,YAApB,GAAmC,YAAY;AAC3C,4BAAI,MAAM,KAAK,IAAf;AAAA,4BACI,OAAO,IAAI,OAAJ,EADX;;AAGA,4BAAI,KAAJ,GAJ2C,CAI9B;;AAEb,4BAAI,QAAQ,KAAK,MAAL,IAAe,KAAK,IAAL,CAAU,OAAV,CAAkB,mBAAlB,GAAwC,CAAvD,CAAZ;AACA,6BAAK,MAAL,GAAc,CAAd;;AAEA,4BAAK,OAAO,KAAR,IAAkB,KAAK,IAAL,CAAU,UAAV,EAAtB,EAA8C;AAC1C,oCAAQ,KAAK,IAAL,CAAU,UAAV,KAAyB,IAAjC,CAD0C,CACH;AAC1C,yBAFD,MAGK,IAAK,OAAO,KAAR,IAAkB,KAAK,IAAL,CAAU,UAAV,EAAtB,EAA8C;AAC/C,oCAAQ,KAAK,IAAL,CAAU,UAAV,KAAyB,IAAjC,CAD+C,CACR;AAC1C;;AAED,4BAAI,CAAC,KAAL,EAAY;AAAE;AAAS;;AAEvB,4BAAI,IAAI,OAAJ,CAAY,eAAZ,KAAgC,QAApC,EAA8C;AAC1C,mDAAuB,KAAvB,EAA8B,IAAI,SAAJ,EAA9B,EAA+C,OAAO,KAAtD;AACH,yBAFD,MAEO;AACH,mDAAuB,KAAvB,EAA8B,KAAK,aAAnC,EAAkD,OAAO,KAAzD;AACH;AACD,wCAAgB,GAAhB;AACH,qBAxBD;;AA0BA,wBAAI,OAAJ,EAAa;AACT,4BAAI,eAAJ,CAAoB,MAApB;AACH;AACJ;AACJ,aA1O2B;;;AA4O5B;AACA,iCA7O4B,iCA6OL,GA7OK,EA6OA;AACxB,oBAAI,KAAK,KAAL,CAAW,IAAX,CAAgB,eAAhB,IAAmC,IAAI,eAAvC,IAA0D,KAAK,OAAL,CAAa,qBAAb,KAAuC,KAArG,EAA4G;;AAExG;AACA,wBAAM,YAAY,SAAZ,SAAY,CAAU,KAAV,EAAiB,YAAjB,EAA+B,UAA/B,EAA2C,OAA3C,EAAoD;AAClE,kCAAU,WAAW,EAArB;AACA,4BAAI,QAAQ,OAAR,KAAoB,KAApB,IAA6B,CAAC,EAAE,OAAF,CAAU,KAA5C,EAAmD;AAC/C,mCAAO,IAAI,OAAJ,CAAY,YAAZ,EAA0B,UAA1B,EAAsC,OAAtC,CAAP;AACH;;AAED,4BAAI,KAAJ;;AAEA,4BAAI,YAAY,IAAI,KAApB;;AAEA,uCAAe,EAAE,MAAF,CAAS,YAAT,CAAf;AACA,qCAAa,eAAe,SAAf,GAA2B,SAA3B,GAAuC,UAApD;AACA,qCAAa,KAAK,GAAL,CAAS,UAAT,EAAqB,IAAI,UAAJ,EAArB,CAAb,CAZkE,CAYb;;AAErD,4BAAI,OAAO,IAAI,OAAJ,CAAY,IAAI,SAAJ,EAAZ,EAA6B,SAA7B,CAAX;AAAA,4BACI,KAAK,IAAI,OAAJ,CAAY,YAAZ,EAA0B,SAA1B,CADT;;AAGA,4BAAI,QAAQ,KAAK,GAAL,EAAZ;AAAA,4BACI,WAAW,QAAQ,QAAR,GAAmB,OAAO,QAAQ,QAAlC,GAA6C,EAD5D;;AAGA,iCAAS,KAAT,GAAiB;AACb,gCAAI,IAAI,CAAC,KAAK,GAAL,KAAa,KAAd,IAAuB,QAA/B;;AAEA,gCAAI,KAAK,CAAT,EAAY;AACR;AACA,oCAAI,WAAJ,GAAkB,EAAE,IAAF,CAAO,gBAAP,CAAwB,KAAxB,EAA+B,GAA/B,CAAlB;;AAEA,oCAAI,SAAS,KAAK,GAAL,CAAS,GAAG,QAAH,CAAY,IAAZ,EAAkB,UAAlB,CAA6B,CAA7B,CAAT,CAAb;AACA,yCAAS,CAAC,OAAO,CAAR,EAAW,OAAO,CAAlB,CAAT;AACA,yCAAS,cAAI,cAAJ,CAAmB,MAAnB,CAAT;AACA,uDAAuB,KAAvB,EAA8B,YAA9B,EAA4C,YAAY,CAAC,aAAa,SAAd,IAA2B,CAAnF;AACH,6BARD,MAQO;AACH,uDAAuB,KAAvB,EAA8B,YAA9B,EAA4C,UAA5C,EACK,QADL,CACc,IADd;AAEH;AACJ;;AAED,4BAAI,UAAJ,CAAe,IAAf;;AAEA,8BAAM,IAAN,CAAW,GAAX;AACA,+BAAO,GAAP;AACH,qBAzCD;;AA2CA;AACA,wBAAM,UAAU,IAAI,eAAJ,CAAoB,OAApB,EAAhB;AACA,wBAAI,eAAJ,CAAoB,OAApB;;AAEA,wBAAI,QAAQ,IAAZ;AACA,wBAAI,eAAJ,CAAoB,cAApB,GAAqC,UAAU,CAAV,EAAa;AAC9C,4BAAI,MAAM,KAAK,IAAf;AAAA,4BACI,UAAU,IAAI,OAAJ,EADd;AAAA,4BAEI,QAAQ,IAAI,OAAJ,CAAY,SAFxB;AAAA,4BAGI,OAAO,EAAE,aAAF,CAAgB,QAAhB,GAA2B,UAAU,KAArC,GAA6C,UAAU,KAHlE;;AAKA,4BAAI,IAAI,OAAJ,CAAY,eAAZ,KAAgC,QAApC,EAA8C;AAC1C,sCAAU,KAAV,EAAiB,IAAI,SAAJ,EAAjB,EAAkC,IAAlC;AACH,yBAFD,MAEO;AACH,sCAAU,KAAV,EAAiB,IAAI,sBAAJ,CAA2B,EAAE,cAA7B,CAAjB,EAA+D,IAA/D;AACH;AACJ,qBAXD;;AAaA,wBAAI,OAAJ,EAAa;AACT,4BAAI,eAAJ,CAAoB,MAApB;AACH;AACJ;AACJ,aAlT2B;AAoT5B,sBApT4B,wBAoTd;AACV,oBAAI,OAAO,KAAK,IAAL,CAAU,SAAV,EAAX;AACA,qBAAK,IAAL,GAAY,KAAK,GAAL,CAAS,KAAK,GAAL,CAAS,KAAK,IAAL,CAAU,OAAV,EAAT,EAA8B,KAAK,IAAL,CAAU,UAAV,MAA0B,cAAI,qBAA5D,CAAT,EAA6F,KAAK,IAAL,CAAU,UAAV,EAA7F,CAAZ;AACA,qBAAK,KAAL,CAAW,IAAX,CAAgB,OAAhB,CAAwB,IAAxB;AACH,aAxT2B;AA0T5B,sBA1T4B,wBA0Td;AACV,oBAAI,OAAO,KAAK,IAAL,CAAU,OAAV,EAAX;AACA,qBAAK,KAAL,CAAW,SAAX,CAAqB,KAAK,CAA1B,EAA6B,KAAK,CAAlC;AACH,aA7T2B;AA+T5B,gCA/T4B,kCA+TJ;AAAA;;AACpB,oBAAI,mBAAmB,IAAvB;AACA,qBAAK,KAAL,CAAW,gBAAX,GAA8B,YAAM;AAChC,wBAAI,gBAAJ,EAAsB;AAClB,2CAAmB,KAAnB;AACA,+BAAK,UAAL;AACH;AACJ,iBALD;;AAOA,yBAAS,gBAAT,CAA0B,kBAA1B,EAA8C,KAAK,KAAL,CAAW,gBAAzD;AACH,aAzU2B;AA2U5B,+BA3U4B,iCA2UL;AACnB,oBAAI,CAAC,KAAK,IAAN,IAAc,KAAK,iBAAvB,EAA0C;AACtC;AACH;;AAED;AACA,oBAAI,aAAa,KAAK,IAAL,CAAU,SAAV,EAAjB;AACA,oBAAI,cAAc,KAAK,KAAL,CAAW,IAAX,CAAgB,MAAlC;AACA,oBAAI,WAAW,GAAX,KAAmB,YAAY,GAA/B,IACA,WAAW,GAAX,KAAmB,YAAY,GAD/B,IAEA,KAAK,IAAL,CAAU,OAAV,OAAwB,KAAK,KAAL,CAAW,IAAX,CAAgB,IAF5C,EAEkD;AAC9C;AACH;;AAED,qBAAK,iBAAL,GAAyB,IAAzB;AACA,qBAAK,IAAL,CAAU,OAAV,CAAkB,CAAC,KAAK,KAAL,CAAW,IAAX,CAAgB,MAAhB,CAAuB,GAAxB,EAA6B,KAAK,KAAL,CAAW,IAAX,CAAgB,MAAhB,CAAuB,GAApD,CAAlB,EAA4E,KAAK,KAAL,CAAW,IAAX,CAAgB,IAA5F,EAAkG,EAAE,SAAS,KAAX,EAAlG;AACA,qBAAK,gBAAL;AACA,qBAAK,iBAAL,GAAyB,KAAzB;AACH,aA7V2B;AA+V5B,kBA/V4B,oBA+VlB;AACN,oBAAI,CAAC,KAAK,KAAV,EAAiB;AACb;AACH;AACD,qBAAK,KAAL,CAAW,MAAX;AACH,aApW2B;;;AAsW5B;AACA;AACA,4BAxW4B,8BAwWR;AAChB,oBAAI,CAAC,KAAK,IAAN,IAAc,CAAC,KAAK,KAApB,IAA6B,CAAC,KAAK,KAAL,CAAW,SAA7C,EAAwD;AACpD;AACH;;AAED,oBAAI,WAAW,KAAK,IAAL,CAAU,0BAAV,CAAqC,CAAC,CAAD,EAAI,CAAJ,CAArC,CAAf;AACA,kBAAE,OAAF,CAAU,WAAV,CAAsB,KAAK,KAAL,CAAW,SAAjC,EAA4C,QAA5C;AACH,aA/W2B;;;AAiX5B;AACA,uCAlX4B,uCAkXC,GAlXD,EAkXM;AAAA;;AAC9B,qBAAK,iBAAL,GAAyB,EAAzB;AACA,qBAAK,iBAAL,GAAyB,IAAzB,CAF8B,CAEC;;AAE/B,qBAAK,KAAL,CAAW,KAAX,GAAmB,UAAC,KAAD,EAAW;AAC1B,wBAAI,OAAO,OAAK,iBAAL,CAAuB,KAA9B,KAAwC,UAA5C,EAAwD;AACpD,+BAAK,KAAL,CAAW,YAAX,CAAwB,MAAM,cAA9B,EAA8C,EAAE,QAAQ,OAAK,iBAAf,EAA9C,EACI,IADJ,CACS,qBAAa;AACd,gCAAI,UAAU,OAAO,MAAP,CAAc,EAAd,EAAkB,SAAlB,EAA6B,EAAE,eAAe,KAAjB,EAA7B,CAAd;AACA,mCAAK,iBAAL,CAAuB,KAAvB,CAA6B,OAA7B;AACH,yBAJL;AAKH;AACJ,iBARD;AASA,oBAAI,EAAJ,CAAO,OAAP,EAAgB,KAAK,KAAL,CAAW,KAA3B;;AAEA,qBAAK,KAAL,CAAW,SAAX,GAAuB,UAAC,KAAD,EAAW;AAC9B,wBAAI,OAAO,OAAK,iBAAL,CAAuB,KAA9B,KAAwC,UAA5C,EAAwD;AACpD,+BAAK,KAAL,CAAW,YAAX,CAAwB,MAAM,cAA9B,EAA8C,EAAE,QAAQ,OAAK,iBAAf,EAA9C,EACI,IADJ,CACS,qBAAa;AACd,gCAAI,UAAU,OAAO,MAAP,CAAc,EAAd,EAAkB,SAAlB,EAA6B,EAAE,eAAe,KAAjB,EAA7B,CAAd;AACA,mCAAK,iBAAL,CAAuB,KAAvB,CAA6B,OAA7B;AACH,yBAJL;AAKH;AACJ,iBARD;AASA,oBAAI,EAAJ,CAAO,WAAP,EAAoB,KAAK,KAAL,CAAW,SAA/B;;AAEA,qBAAK,KAAL,CAAW,QAAX,GAAsB,UAAC,KAAD,EAAW;AAC7B;AACA,wBAAI,OAAO,OAAK,iBAAL,CAAuB,KAA9B,KAAwC,UAA5C,EAAwD;AACpD,+BAAK,iBAAL,CAAuB,KAAvB,CAA6B,EAAE,SAAS,IAAX,EAAiB,eAAe,KAAhC,EAA7B;AACH;AACJ,iBALD;AAMA,oBAAI,EAAJ,CAAO,UAAP,EAAmB,KAAK,KAAL,CAAW,QAA9B;AACH,aAnZ2B;;;AAqZ5B;AACA;AACA;AACA,8BAxZ4B,8BAwZR,MAxZQ,EAwZiB;AAAA,+FAAJ,EAAI;AAAA,oBAAf,MAAe,QAAf,MAAe;;AACzC,qBAAK,iBAAL,GAAyB,OAAO,MAAP,CAAc,KAAK,iBAAnB,EAAsC,MAAtC,CAAzB;AACA,qBAAK,iBAAL,GAA0B,WAAW,SAAZ,GAAyB,MAAzB,GAAkC,KAAK,iBAAhE;AACH,aA3Z2B;;;AA6Z5B;AACA;AACA,+BA/Z4B,+BA+ZP,GA/ZO,EA+ZF;AAAA;;AACtB,qBAAK,oBAAL,GAA4B,YAAM;AAC9B,wBAAI,QAAQ,IAAI,QAAJ,GAAe,OAAf,CAAuB,UAAnC;AACA,2BAAK,cAAL,GAAsB,CAAtB;AACA,yBAAK,IAAI,IAAE,CAAX,EAAc,IAAI,MAAM,MAAxB,EAAgC,GAAhC,EAAqC;AACjC,+BAAK,cAAL,IAAuB,MAAM,CAAN,EAAS,UAAT,CAAoB,MAA3C;AACH;AACJ,iBAND;;AAQA,oBAAI,EAAJ,CAAO,+CAAP,EAAwD,KAAK,oBAA7D;AACA,qBAAK,oBAAL;AACH,aA1a2B;AA4a5B,sCA5a4B,wCA4aE;AAC1B,wDAAmB,KAAK,OAAL,CAAa,KAAb,IAAsB,EAAzC;AACH;AA9a2B,SAAhC;;AAkbA;AACA,iCAAyB,gCAAU,KAAV,EAAiB,MAAjB,EAAyB,IAAzB,EAA+B;AACpD,gBAAI,MAAM,MAAM,IAAhB;AAAA,gBACI,QAAQ,MAAM,KADlB;AAAA,gBAEI,QAAQ,IAAI,YAAJ,CAAiB,IAAjB,CAFZ;AAAA,gBAGI,WAAW,IAAI,OAAJ,GAAc,QAAd,CAAuB,CAAvB,CAHf;AAAA,gBAII,iBAAiB,kBAAkB,EAAE,KAApB,GAA4B,MAA5B,GAAqC,IAAI,sBAAJ,CAA2B,MAA3B,CAJ1D;AAAA,gBAMI,eAAe,eAAe,QAAf,CAAwB,QAAxB,EAAkC,UAAlC,CAA6C,IAAI,IAAI,KAArD,CANnB;AAAA,gBAOI,YAAY,IAAI,sBAAJ,CAA2B,SAAS,GAAT,CAAa,YAAb,CAA3B,CAPhB;;AASA,gBAAI,KAAJ,EAAW;AACP,sBAAM,IAAN,CAAW,aAAX;AACH;AACD,mBAAO,IAAI,KAAJ,CAAU,SAAV,EAAqB,IAArB,EAA2B,EAAE,OAAO,IAAT,EAA3B,CAAP;AACH,SAdD;;AAgBA;AACA,gBA3eG,YA2eH,kBAAe,eAAe,MAAf,CAAsB,gBAAtB,CAAf;;AAEA;AACA,YAAI,OAAO,aAAa,MAApB,KAA+B,UAAnC,EAA+C;AAC3C,yBAAa,SAAb,CAAuB,MAAvB,GAAgC,YAAW;AACvC,oBAAI,KAAK,IAAT,EAAe;AACX,yBAAK,IAAL,CAAU,WAAV,CAAsB,IAAtB;AACH;AACD,qBAAK,IAAL,CAAU,QAAV;AACH,aALD;AAMH;;AAED,qBAAa,cAAb,GAA8B,cAA9B;AACA,qBAAa,cAAb,GAA8B,cAA9B;;AAEA,eAAO,IAAI,YAAJ,CAAiB,OAAjB,CAAP;AACH;AACJ;;;;;;;;;;;;;;;ACngBD;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;;;;;;;AAEA,IAAI,KAAK,QAAQ,IAAR,CAAT;;AAEA,IAAM,yBAAyB,GAAG,YAAH,CAAgB,YAAY,+BAA5B,EAA6D,MAA7D,CAA/B;AACA,IAAM,6BAA6B,GAAG,YAAH,CAAgB,YAAY,mCAA5B,EAAiE,MAAjE,CAAnC;AACA,IAAM,uBAAuB,GAAG,YAAH,CAAgB,YAAY,6BAA5B,EAA2D,MAA3D,CAA7B;AACA,IAAM,sBAAsB,GAAG,YAAH,CAAgB,YAAY,4BAA5B,EAA0D,MAA1D,CAA5B;;AAEA;;IACqB,K;AAEjB,mBAAa,IAAb,EAAmB,MAAnB,EAA2B;AAAA;;AACvB,aAAK,IAAL,GAAY,OAAO,IAAnB;AACA,aAAK,IAAL,GAAY,IAAZ;;AAEA,YAAI,OAAO,OAAP,IAAkB,IAAlB,IAA0B,OAAO,OAAO,OAAd,KAA0B,QAAxD,EAAkE;AAC9D,iBAAK,OAAL,GAAe,eAAK,UAAL,CAAgB,OAAO,OAAP,IAAkB,CAAlC,CAAf;AACH,SAFD,MAGK;AACD,iBAAK,OAAL,GAAe,0BAAY,UAAZ,CAAuB,OAAO,OAA9B,EAAuC,KAAvC,CAA6C,CAA7C,EAAgD,CAAhD,CAAf;AACH;;AAED,YAAI,OAAO,OAAP,IAAkB,IAAlB,IAA0B,OAAO,OAAO,OAAd,KAA0B,QAAxD,EAAkE;AAC9D,iBAAK,OAAL,GAAe,eAAK,UAAL,CAAgB,OAAO,OAAP,IAAkB,IAAlB,GAAyB,OAAO,OAAhC,GAA0C,CAA1D,CAAf;AACH,SAFD,MAGK;AACD,iBAAK,OAAL,GAAe,0BAAY,UAAZ,CAAuB,OAAO,OAA9B,EAAuC,KAAvC,CAA6C,CAA7C,EAAgD,CAAhD,CAAf;AACH;;AAED,YAAI,OAAO,QAAP,IAAmB,IAAnB,IAA2B,OAAO,OAAO,QAAd,KAA2B,QAA1D,EAAoE;AAChE,iBAAK,QAAL,GAAgB,eAAK,UAAL,CAAgB,OAAO,QAAP,IAAmB,CAAnC,CAAhB;AACH,SAFD,MAGK;AACD,iBAAK,QAAL,GAAgB,0BAAY,UAAZ,CAAuB,OAAO,QAA9B,EAAwC,KAAxC,CAA8C,CAA9C,EAAiD,CAAjD,CAAhB;AACH;AACJ;;AAED;AACA;;;;;;;AAiGA;iCACU;AACN,gBAAI,sCACU,KAAK,WADf,WACgC,KAAK,IADrC,uBAEE,KAAK,WAFP,SAEsB,KAAK,IAF3B,oBAAJ;AAIA,gBAAI,4BACE,KAAK,IADP,aACmB,KAAK,IADxB,kBAAJ;;AAIA,qCAAc,QAAd,CAAuB,MAAM,KAA7B,EAAoC,QAApC;AACA,qCAAc,QAAd,CAAuB,OAAvB,EAAgC,MAAhC;AACH;;AAED;;;;iCACU,CACT;;AAED;AACA;;;;qCACc,Q,EAAU;AACpB;AACA,qBAAS,OAAT,CAAiB,KAAjB,SAA6B,KAAK,IAAlC,eAAkD,KAAK,OAAvD;AACA,qBAAS,OAAT,CAAiB,KAAjB,SAA6B,KAAK,IAAlC,eAAkD,KAAK,OAAvD;AACA,qBAAS,OAAT,CAAiB,KAAjB,SAA6B,KAAK,IAAlC,gBAAmD,KAAK,QAAxD;AACH;;;+BAzHc,I,EAAM,M,EAAQ;AACzB,gBAAI,MAAM,KAAN,CAAY,OAAO,IAAnB,CAAJ,EAA8B;AAC1B,uBAAO,IAAI,MAAM,KAAN,CAAY,OAAO,IAAnB,CAAJ,CAA6B,IAA7B,EAAmC,MAAnC,CAAP;AACH;AACJ;;AAED;;;;gCACgB,I,EAAM,K,EAAO;AACzB,gBAAI,SAAS,IAAb,EAAmB;AACf,uBAAO,UAAP;AACH;AACD,mBAAO,MAAM,OAAN,KAAmB,QAAQ,IAAT,GAAiB,IAAjB,GAAwB,UAA1C,CAAP,CAJyB,CAIqC;AAC9D,kBAAM,OAAN,CAAc,2BAAd,IAA8C,SAAS,UAAvD;AACA,kBAAM,OAAN,CAAc,yBAAd,IAA4C,SAAS,QAArD;AACH;;AAED;;;;+BACe,M,EAAQ;AACnB;AACA,qCAAc,WAAd,CAA0B,MAAM,KAAhC;;AAEA;AACA,gBAAI,CAAC,MAAM,OAAX,EAAoB;AAChB;AACH;;AAED;AACA,gBAAI,kBAAkB,EAAtB;AACA,gBAAI,UAAU,OAAO,IAAP,CAAY,MAAZ,EAAoB,MAApB,GAA6B,CAA3C,EAA8C;AAC1C;AACA,oBAAI,QAAQ,EAAZ;AACA,qBAAK,IAAI,UAAT,IAAuB,MAAvB,EAA+B;AAC3B,0BAAM,OAAO,UAAP,EAAmB,IAAzB,IAAiC,IAAjC;AACH;;AAED;AACA,qBAAK,IAAI,IAAT,IAAiB,KAAjB,EAAwB;AACpB,0BAAM,KAAN,CAAY,IAAZ,EAAkB,MAAlB;AACH;;AAED;AACA,qBAAK,IAAI,WAAT,IAAuB,MAAvB,EAA+B;AAC3B;AACA,2BAAO,WAAP,EAAmB,MAAnB;;AAEA;AACA,2DAAqC,WAArC;AACH;AACJ;;AAED;AACA,gBAAI,4XAOM,eAPN,60CAAJ;;AA0CA,qCAAc,QAAd,CAAuB,MAAM,KAA7B,EAAoC,iBAApC;AACH;;;;;;kBA5HgB,K;;;AA2JrB,MAAM,KAAN,GAAc,EAAd,C,CAAkB;AAClB,MAAM,KAAN,GAAc,UAAd,C,CAA0B;AAC1B,MAAM,OAAN,GAAgB,IAAhB,C,CAAsB;;;AAGtB;;IACM,Y;;;AAEF,0BAAY,IAAZ,EAAkB,MAAlB,EAA0B;AAAA;;AAAA,gIAChB,IADgB,EACV,MADU;;AAEtB,cAAK,IAAL,GAAY,SAAZ;AACA,cAAK,WAAL,GAAmB,cAAnB;AAHsB;AAIzB;;AAED;;;;;qCAKc,Q,EAAU;AACpB,qBAAS,OAAT,CAAiB,KAAjB,SAA6B,KAAK,IAAlC,eAAkD,KAAK,OAAvD;AACH;;;iCANe;AACZ,qCAAc,QAAd,CAAuB,MAAM,KAA7B,EAAoC,sBAApC;AACH;;;;EAXsB,K;;AAkB3B,MAAM,KAAN,CAAY,SAAZ,IAAyB,YAAzB;;IAEM,gB;;;AAEF,8BAAY,IAAZ,EAAkB,MAAlB,EAA0B;AAAA;;AAAA,yIAChB,IADgB,EACV,MADU;;AAEtB,eAAK,IAAL,GAAY,aAAZ;AACA,eAAK,WAAL,GAAmB,kBAAnB;;AAEA,YAAI,OAAO,SAAX,EAAsB;AAClB,mBAAK,UAAL,GAAkB,OAAO,SAAzB;AACH,SAFD,MAGK;AACD;AACA,gBAAI,QAAQ,GAAZ,CAFC,CAEgB;AACjB,gBAAI,QAAQ,KAAK,GAAL,CAAS,KAAK,EAAL,GAAQ,EAAR,GAAW,GAApB,CAAZ,CAHC,CAGqC;AACtC,mBAAK,UAAL,GAAkB,CACd,KAAK,GAAL,CAAS,KAAK,EAAL,GAAQ,KAAR,GAAc,GAAvB,IAA8B,KADhB,EAEd,KAAK,GAAL,CAAS,KAAK,EAAL,GAAQ,KAAR,GAAc,GAAvB,IAA8B,KAFhB,EAGd,CAAC,GAHa,CAAlB;;AAMA,gBAAI,OAAO,OAAP,IAAkB,IAAtB,EAA4B;AACxB,uBAAK,OAAL,GAAe,eAAK,UAAL,CAAgB,GAAhB,CAAf;AACH;AACJ;AACD,eAAK,SAAL,GAAiB,OAAK,UAAL,CAAgB,GAAhB,CAAoB,UAApB,CAAjB;AAtBsB;AAuBzB;;;;qCAea,Q,EAAU;AACpB,6IAAmB,QAAnB;AACA,qBAAS,OAAT,CAAiB,KAAjB,SAA6B,KAAK,IAAlC,iBAAoD,KAAK,SAAzD;AACH;;;4BAhBgB;AACb,mBAAO,KAAK,UAAZ;AACH,S;0BAEc,C,EAAG;AACd,iBAAK,UAAL,GAAkB,iBAAO,SAAP,CAAiB,CAAjB,CAAlB;AACH;;AAED;;;;iCACgB;AACZ,qCAAc,QAAd,CAAuB,MAAM,KAA7B,EAAoC,0BAApC;AACH;;;;EAtC0B,K;;AA8C/B,MAAM,KAAN,CAAY,aAAZ,IAA6B,gBAA7B;;IAGM,U;;;AAEF,wBAAa,IAAb,EAAmB,MAAnB,EAA2B;AAAA;;AAAA,6HACjB,IADiB,EACX,MADW;;AAEvB,eAAK,IAAL,GAAY,OAAZ;AACA,eAAK,WAAL,GAAmB,YAAnB;;AAEA,eAAK,QAAL,GAAgB,OAAO,QAAP,IAAmB,CAAC,CAAD,EAAI,CAAJ,EAAO,OAAP,CAAnC;AACA,eAAK,YAAL,GAAoB,EAApB,CANuB,CAMC;AACxB,eAAK,MAAL,GAAc,OAAO,MAAP,IAAiB,QAA/B;AACA,eAAK,WAAL,GAAmB,CAAC,MAAM,WAAW,OAAO,WAAlB,CAAN,CAAD,GAAyC,WAAW,OAAO,WAAlB,CAAzC,GAA0E,CAA7F;;AAEA,YAAI,OAAO,MAAX,EAAmB;AACf,gBAAI,MAAM,OAAN,CAAc,OAAO,MAArB,KAAgC,OAAO,MAAP,CAAc,MAAd,KAAyB,CAA7D,EAAgE;AAC5D,uBAAK,MAAL,GAAc,OAAO,MAArB;AACH,aAFD,MAGK;AACD,uBAAK,MAAL,GAAc,CAAC,IAAD,EAAO,OAAO,MAAd,CAAd;AACH;AACJ,SAPD,MAQK;AACD,mBAAK,MAAL,GAAc,IAAd;AACH;AApBsB;AAqB1B;;AAED;;;;;;;AAKA;iCACS;AACL;;AAEA,qCAAc,OAAd,CAAsB,yCAAtB,IAAoE,KAAK,WAAL,KAAqB,CAAzF;AACA,qCAAc,OAAd,CAAsB,6CAAtB,IAAwE,KAAK,MAAL,IAAe,IAAf,IAAuB,KAAK,MAAL,CAAY,CAAZ,KAAkB,IAAjH;AACA,qCAAc,OAAd,CAAsB,6CAAtB,IAAwE,KAAK,MAAL,IAAe,IAAvF;AACH;;;iCAES;AACN,iBAAK,iBAAL;AACH;;;4CAEoB;AACjB,gBAAI,KAAK,MAAL,KAAgB,OAApB,EAA6B;AACzB;;AAEA;AAHyB,0CAIZ,cAAI,cAAJ,CAAmB,KAAK,QAAxB,CAJY;AAAA;AAAA,oBAIpB,CAJoB;AAAA,oBAIjB,CAJiB;;AAKzB,qBAAK,YAAL,CAAkB,CAAlB,IAAuB,IAAI,KAAK,IAAL,CAAU,MAAV,CAAiB,eAAjB,CAAiC,CAAjC,CAA3B;AACA,qBAAK,YAAL,CAAkB,CAAlB,IAAuB,IAAI,KAAK,IAAL,CAAU,MAAV,CAAiB,eAAjB,CAAiC,CAAjC,CAA3B;;AAEA,qBAAK,YAAL,CAAkB,CAAlB,IAAuB,0BAAY,YAAZ,CAAyB,KAAK,QAAL,CAAc,CAAd,CAAzB,EACnB,EAAE,MAAM,KAAK,IAAL,CAAU,IAAlB,EAAwB,kBAAkB,cAAI,cAAJ,CAAmB,KAAK,IAAL,CAAU,IAA7B,CAA1C,EADmB,CAAvB;AAEA,qBAAK,YAAL,CAAkB,CAAlB,IAAuB,KAAK,YAAL,CAAkB,CAAlB,IAAuB,KAAK,IAAL,CAAU,MAAV,CAAiB,eAAjB,CAAiC,CAAjC,CAA9C;AACH,aAXD,MAYK,IAAI,KAAK,MAAL,KAAgB,QAAhB,IAA4B,KAAK,MAAL,KAAgB,QAAhD,EAA0D;AAC3D;;AAEA;AACA,qBAAK,YAAL,GAAoB,0BAAY,YAAZ,CAAyB,KAAK,QAA9B,EAChB,EAAE,MAAM,KAAK,IAAL,CAAU,IAAlB,EAAwB,kBAAkB,cAAI,cAAJ,CAAmB,KAAK,IAAL,CAAU,IAA7B,CAA1C,EADgB,CAApB;;AAGA,oBAAI,KAAK,MAAL,KAAgB,QAApB,EAA8B;AAC1B;AACA,yBAAK,YAAL,CAAkB,CAAlB,IAAuB,KAAK,YAAL,CAAkB,CAAlB,IAAuB,KAAK,IAAL,CAAU,MAAV,CAAiB,eAAjB,CAAiC,CAAjC,CAA9C;AACH;AACJ;AACD,iBAAK,YAAL,CAAkB,CAAlB,IAAuB,CAAvB;AACH;;;qCAEa,Q,EAAU;AACpB,iIAAmB,QAAnB;;AAEA,qBAAS,OAAT,CAAiB,KAAjB,SAA6B,KAAK,IAAlC,gBAAmD,KAAK,YAAxD;;AAEA,gBAAG,yBAAc,OAAd,CAAsB,yCAAtB,CAAH,EAAqE;AACjE,yBAAS,OAAT,CAAiB,IAAjB,SAA4B,KAAK,IAAjC,2BAA6D,KAAK,WAAlE;AACH;;AAED,gBAAG,yBAAc,OAAd,CAAsB,6CAAtB,CAAH,EAAyE;AACrE,yBAAS,OAAT,CAAiB,IAAjB,SAA4B,KAAK,IAAjC,mBACI,0BAAY,YAAZ,CAAyB,KAAK,MAAL,CAAY,CAAZ,CAAzB,EACI,EAAE,MAAM,KAAK,IAAL,CAAU,IAAlB,EAAwB,kBAAkB,cAAI,cAAJ,CAAmB,KAAK,IAAL,CAAU,IAA7B,CAA1C,EADJ,CADJ;AAGH;;AAED,gBAAG,yBAAc,OAAd,CAAsB,6CAAtB,CAAH,EAAyE;AACrE,yBAAS,OAAT,CAAiB,IAAjB,SAA4B,KAAK,IAAjC,mBACI,0BAAY,YAAZ,CAAyB,KAAK,MAAL,CAAY,CAAZ,CAAzB,EACI,EAAE,MAAM,KAAK,IAAL,CAAU,IAAlB,EAAwB,kBAAkB,cAAI,cAAJ,CAAmB,KAAK,IAAL,CAAU,IAA7B,CAA1C,EADJ,CADJ;AAGH;AACJ;;;iCAjEgB;AACb,qCAAc,QAAd,CAAuB,MAAM,KAA7B,EAAoC,oBAApC;AACH;;;;EA5BoB,K;;AA6FzB,MAAM,KAAN,CAAY,OAAZ,IAAuB,UAAvB;;IAGM,S;;;AAEF,uBAAa,IAAb,EAAmB,MAAnB,EAA2B;AAAA;;AAAA,2HACjB,IADiB,EACX,MADW;;AAEvB,eAAK,IAAL,GAAY,WAAZ;AACA,eAAK,WAAL,GAAmB,WAAnB;;AAEA,eAAK,SAAL,GAAiB,OAAK,UAAL,GAAkB,CAAC,OAAO,SAAP,IAAoB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAC,CAAR,CAArB,EAAiC,GAAjC,CAAqC,UAArC,CAAnC,CALuB,CAK8D;AACrF,eAAK,QAAL,GAAgB,OAAO,QAAP,GAAkB,WAAW,OAAO,QAAlB,CAAlB,GAAgD,GAAhE;AACA,eAAK,KAAL,GAAa,OAAO,KAAP,GAAe,WAAW,OAAO,KAAlB,CAAf,GAA0C,EAAvD;AAPuB;AAQ1B;;;;qCAea,Q,EAAU;AACpB,+HAAmB,QAAnB;;AAEA,qBAAS,OAAT,CAAiB,KAAjB,SAA6B,KAAK,IAAlC,iBAAoD,KAAK,SAAzD;AACA,qBAAS,OAAT,CAAiB,IAAjB,SAA4B,KAAK,IAAjC,qBAAuD,KAAK,GAAL,CAAS,KAAK,KAAL,GAAa,OAAb,GAAuB,GAAhC,CAAvD;AACA,qBAAS,OAAT,CAAiB,IAAjB,SAA4B,KAAK,IAAjC,oBAAsD,KAAK,QAA3D;AACH;;;4BAnBgB;AACb,mBAAO,KAAK,UAAZ;AACH,S;0BAEc,C,EAAG;AACd,iBAAK,UAAL,GAAkB,iBAAO,SAAP,CAAiB,CAAjB,CAAlB;AACH;;AAED;;;;iCACiB;AACb,qCAAc,QAAd,CAAuB,MAAM,KAA7B,EAAoC,mBAApC;AACH;;;;EAvBmB,U;;AAkCxB,MAAM,KAAN,CAAY,WAAZ,IAA2B,SAA3B;;;;;;;;;;;ACtXA;;;;AACA;;;;;;AAEA,IAAI,KAAK,QAAQ,IAAR,CAAT;AACA,IAAM,qBAAqB,GAAG,YAAH,CAAgB,YAAY,2BAA5B,EAAyD,MAAzD,CAA3B;;AAEA,IAAM,iBAAiB,CAAC,UAAD,EAAa,SAAb,EAAwB,SAAxB,EAAmC,UAAnC,CAAvB;;IAEqB,Q;AACjB,sBAAa,MAAb,EAAqB;AAAA;;AAAA;;AAEjB,iBAAS,UAAU,EAAnB;;AAEA;AACA,uBAAe,OAAf,CAAuB,gBAAQ;AAC3B,gBAAM,QAAQ,OAAO,IAAP,CAAd;AACA,gBAAI,SAAS,IAAb,EAAmB;AACf,oBAAI,MAAM,OAAV,EAAmB;AACf,0BAAK,IAAL,IAAa;AACT,iCAAS,MAAM,OADN;AAET,iCAAS,MAAM,OAAN,IAAiB,WAFjB;AAGT,+BAAO,eAAK,UAAL,CAAgB,MAAM,KAAN,IAAe,IAAf,GAAsB,MAAM,KAA5B,GAAoC,CAApD,CAHE;AAIT,gCAAQ,eAAK,UAAL,CAAgB,MAAM,MAAN,IAAgB,IAAhB,GAAuB,MAAM,MAA7B,GAAsC,CAAtD;AAJC,qBAAb;AAMH,iBAPD,MAQK,IAAI,OAAO,KAAP,KAAiB,QAAjB,IAA6B,MAAM,OAAN,CAAc,KAAd,CAAjC,EAAuD;AACxD,0BAAK,IAAL,IAAa,EAAE,QAAQ,eAAK,UAAL,CAAgB,KAAhB,CAAV,EAAb;AACH,iBAFI,MAGA,IAAI,OAAO,KAAP,KAAiB,QAArB,EAA+B;AAChC,0BAAK,IAAL,IAAa,EAAE,QAAQ,0BAAY,UAAZ,CAAuB,KAAvB,CAAV,EAAb;AACH,iBAFI,MAGA;AACD,0BAAK,IAAL,IAAa,KAAb;AACH;AACJ;AACJ,SArBD;;AAuBA;AACA,YAAI,KAAK,QAAT,EAAmB;AACf,iBAAK,QAAL,CAAc,SAAd,GAA0B,OAAO,SAAP,GAAmB,WAAW,OAAO,SAAlB,CAAnB,GAAkD,GAA5E;AACH;;AAED;AACA,YAAI,OAAO,MAAP,IAAiB,IAArB,EAA2B;AACvB,iBAAK,MAAL,GAAc;AACV,yBAAS,OAAO,MAAP,CAAc,OADb;AAEV,yBAAS,OAAO,MAAP,CAAc,OAAd,IAAyB,WAFxB;AAGV,uBAAO,eAAK,UAAL,CAAgB,OAAO,MAAP,CAAc,KAAd,IAAuB,IAAvB,GAA8B,OAAO,MAAP,CAAc,KAA5C,GAAoD,CAApE,CAHG;AAIV,wBAAQ,OAAO,MAAP,CAAc,MAAd,IAAwB,IAAxB,GAA+B,OAAO,MAAP,CAAc,MAA7C,GAAsD;AAJpD,aAAd;AAMH;AACJ;;AAED;;;;;+BAgBQ,K,EAAO;AAAA;;AACX;AACA;AACA;AACA;AACA;AACA,2BAAe,OAAf,CAAuB,gBAAQ;AAC3B,oBAAI,4BAA0B,KAAK,WAAL,EAA9B;AACA,oBAAI,SAAS,MAAM,UAAnB;AACA,sBAAM,OAAN,CAAc,GAAd,IAAsB,OAAK,IAAL,KAAc,IAApC;AACA,oBAAI,OAAK,IAAL,KAAc,OAAK,IAAL,EAAW,OAA7B,EAAsC;AAClC,0BAAM,OAAN,CAAc,MAAd,IAAwB,IAAxB;AACA,0BAAM,OAAN,CAAc,SAAS,GAAT,GAAe,OAAK,IAAL,EAAW,OAAX,CAAmB,WAAnB,EAA7B,IAAiE,IAAjE;AACA,0BAAM,OAAN,+BAA0C,OAAK,IAAL,EAAW,OAAX,CAAmB,WAAnB,EAA1C,IAAgF,IAAhF;AACA,0BAAM,SAAN,GAAkB,MAAM,SAAN,IAAoB,OAAK,IAAL,EAAW,OAAX,KAAuB,IAA7D;AACH;AACJ,aAVD;;AAYA;AACA;AACA;AACA,gBAAI,KAAK,MAAL,IAAe,KAAK,MAAL,CAAY,OAA/B,EAAwC;AACpC,sBAAM,OAAN,CAAc,iCAAd,IAAmD,IAAnD;AACA,sBAAM,OAAN,CAAc,qCAAqC,KAAK,MAAL,CAAY,OAAZ,CAAoB,WAApB,EAAnD,IAAwF,IAAxF;AACA,sBAAM,OAAN,+BAA0C,KAAK,MAAL,CAAY,OAAZ,CAAoB,WAApB,EAA1C,IAAiF,IAAjF;AACA,sBAAM,SAAN,GAAkB,MAAM,SAAN,IAAoB,KAAK,MAAL,CAAY,OAAZ,KAAwB,IAA9D;AACH;;AAED,kBAAM,kBAAN,CAAyB,SAAS,KAAlC,EAAyC,kBAAzC,EAA6D,UAA7D;AACA,kBAAM,cAAN,CAAqB,OAArB,EAA8B,4BAA9B,EAA4D,UAA5D;AACH;;;qCAEa,Q,EAAU;AAAA;;AACpB;AACA;AACA,2BAAe,OAAf,CAAuB,gBAAQ;AAC3B,oBAAI,OAAK,IAAL,CAAJ,EAAgB;AACZ,wBAAI,OAAK,IAAL,EAAW,OAAf,EAAwB;AACpB,iCAAS,iBAAT,iBAAyC,IAAzC,eAAyD,OAAK,IAAL,EAAW,OAApE;AACA,iCAAS,OAAT,CAAiB,KAAjB,kBAAsC,IAAtC,YAAmD,OAAK,IAAL,EAAW,KAA9D;AACA,iCAAS,OAAT,CAAiB,KAAjB,kBAAsC,IAAtC,EAA8C,OAAK,IAAL,EAAW,MAAzD;AACH,qBAJD,MAIO,IAAI,OAAK,IAAL,EAAW,MAAf,EAAuB;AAC1B,iCAAS,OAAT,CAAiB,KAAjB,kBAAsC,IAAtC,EAA8C,OAAK,IAAL,EAAW,MAAzD;AACH;AACJ;AACJ,aAVD;;AAYA;AACA,gBAAI,KAAK,QAAT,EAAmB;AACf,yBAAS,OAAT,CAAiB,IAAjB,EAAuB,sBAAvB,EAA+C,KAAK,QAAL,CAAc,SAA7D;AACH;;AAED;AACA,gBAAI,KAAK,MAAL,IAAe,KAAK,MAAL,CAAY,OAA/B,EAAwC;AACpC,yBAAS,iBAAT,CAA2B,2BAA3B,EAAwD,KAAK,MAAL,CAAY,OAApE;AACA,yBAAS,OAAT,CAAiB,KAAjB,EAAwB,wBAAxB,EAAkD,KAAK,MAAL,CAAY,KAA9D;AACA,yBAAS,OAAT,CAAiB,IAAjB,EAAuB,yBAAvB,EAAkD,KAAK,MAAL,CAAY,MAA9D;AACH;AACJ;;;gCAzEe,M,EAAQ;AACpB,gBAAI,UAAU,IAAd,EAAoB;AAChB,uBAAO,KAAP;AACH;;AAED,gBAAI,OAAO,QAAP,IAAmB,IAAnB,IACA,OAAO,OAAP,IAAkB,IADlB,IAEA,OAAO,OAAP,IAAkB,IAFlB,IAGA,OAAO,QAAP,IAAmB,IAHvB,EAG6B;AACzB,uBAAO,KAAP;AACH;;AAED,mBAAO,IAAP;AACH;;;;;;kBA3DgB,Q;;;AA0HrB,SAAS,KAAT,GAAiB,UAAjB;;;;;AChIA;;AAGA;;AAGA;;;;AACA;;AAGA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;AACA;;AACA;;AACA;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;AACA;;AACA;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AAEA;;;;AACA;;;;;;AAEA;;;AArCA;AAsCA,IAAI,QAAQ;AACR,sBADQ;AAER,0BAFQ;AAGR,4BAHQ;AAIR,0BAJQ;AAKR,sBALQ;AAMR,4BANQ;AAOR,qCAPQ;AAQR,wBARQ;AASR,2CATQ;AAUR,qCAVQ;AAWR,8BAXQ;AAYR,gCAZQ;AAaR,0BAbQ;AAcR,0BAdQ;AAeR,0CAfQ;AAgBR,yCAhBQ;AAiBR,iCAjBQ;AAkBR,6CAlBQ;AAmBR,0CAnBQ;AAoBR,kCApBQ;AAqBR,yCArBQ;AAsBR,qCAtBQ;AAuBR;AAvBQ,CAAZ;;AA/BA;;;AAJA;AAPA;;AAoEA,IAAI,iBAAO,OAAX,EAAoB;AAChB,oBAAM,6BAAN;;AAEA;AACA;AACA,QAAI,OAAO,OAAP,KAAmB,SAAvB,EAAkC;AAC9B,eAAO,OAAP,GAAiB,OAAjB;AACA,wBAAM,QAAN,CAAe,OAAf,GAAyB,OAAzB;AACH;AACJ;;AAED,OAAO,OAAP,GAAiB;AACb,6CADa;AAEb,gBAFa;AAGb;AAHa,CAAjB;;;;;;;;;;;;;AC/EA;;;;AACA;;;;AACA;;;;AACA;;IAAY,I;;AACZ;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;AACA;;AACA;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;;;;;;;;;AAEA;IACqB,K;AAEjB,mBAAY,aAAZ,EAA2B,OAA3B,EAAoC;AAAA;;AAChC,kBAAU,WAAW,EAArB;AACA,iCAAe,IAAf;;AAEA,aAAK,EAAL,GAAU,MAAM,EAAN,EAAV;AACA,aAAK,WAAL,GAAmB,KAAnB;AACA,aAAK,YAAL,GAAoB,IAApB,CANgC,CAMN;AAC1B,aAAK,OAAL,GAAe,EAAf;;AAEA,aAAK,IAAL,GAAY,mBAAS,IAAT,EAAe,OAAf,CAAZ;AACA,aAAK,YAAL,GAAoB,2BAAgB,EAAE,OAAO,IAAT,EAAe,MAAM,KAAK,IAA1B,EAAhB,CAApB;AACA,aAAK,WAAL,GAAmB,QAAQ,UAAR,IAAsB,CAAzC;AACA,YAAI,QAAQ,yBAAR,KAAsC,IAA1C,EAAgD;AAC5C,0BAAkB,QAAlB,GAA6B,IAA7B;AACH;;AAED,wBAAM,wBAAN,GAAiC,QAAQ,kBAAR,KAA+B,SAA/B,GAA2C,QAAQ,kBAAnD,GAAwE,IAAzG;AACA,wBAAM,sBAAN;;AAEA,aAAK,MAAL,GAAc,IAAd;AACA,aAAK,aAAL,GAAqB,aAArB;AACA,aAAK,aAAL,GAAqB,IAArB;AACA,aAAK,wBAAL,GAAgC,IAAhC;;AAEA,aAAK,MAAL,GAAc,IAAd;AACA,aAAK,aAAL,GAAqB,iCAArB;;AAEA,aAAK,QAAL,GAAgB,IAAhB,CA3BgC,CA2BgB;AAChD,aAAK,KAAL,GAAa,IAAb,CA5BgC,CA4BgB;;AAEhD,YAAI,QAAQ,SAAZ,EAAsB;AAClB;AACA,iBAAK,SAAL,CAAe,EAAC,aAAa,QAAQ,SAAtB,EAAf;AACH;;AAED,YAAI,QAAQ,UAAZ,EAAuB;AACnB;AACA,iBAAK,SAAL,CAAe,EAAC,cAAc,QAAQ,UAAvB,EAAf;AACH;;AAED,aAAK,WAAL,GAAmB,CAAC,QAAQ,iBAA5B,CAxCgC,CAwCgB;AAChD,aAAK,kBAAL,GAA0B,KAA1B;AACA,aAAK,gBAAL,GAAwB,KAAxB;AACA,aAAK,YAAL,GAAoB,CAApB;AACA,aAAK,iBAAL,GAAyB,CAAzB;AACA,aAAK,oBAAL,GAA4B,KAA5B;AACA,aAAK,KAAL,GAAa,CAAb;AACA,aAAK,gBAAL,GAAwB,CAAC,CAAzB,CA/CgC,CA+CI;AACpC,aAAK,qBAAL,GAA6B,CAAC,CAA9B,CAhDgC,CAgDI;AACpC,aAAK,aAAL,GAAqB,6BAArB;AACA,aAAK,SAAL,GAAiB,IAAjB;AACA,aAAK,aAAL,GAAsB,QAAQ,aAAR,KAA0B,IAA3B,GAAmC,IAAnC,GAA0C,KAA/D;AACA,aAAK,SAAL;;AAEA,aAAK,SAAL,GAAiB,QAAQ,SAAzB;AACA,aAAK,MAAL,GAAc,IAAd;AACA,aAAK,cAAL,GAAsB,QAAQ,mBAA9B;;AAEA,aAAK,MAAL,GAAc,IAAd;AACA,aAAK,UAAL,GAAkB,IAAlB;;AAEA,aAAK,eAAL;AACA,aAAK,QAAL,GAAgB,CAAhB;AACA,aAAK,UAAL,GAAkB,MAAM,UAAxB,CA/DgC,CA+DI;AACpC,aAAK,wBAAL,GAAgC,MAAM,UAAtC,CAhEgC,CAgEkB;AAClD,aAAK,UAAL;;AAEA,aAAK,SAAL,GAAiB,QAAQ,QAAR,IAAoB,MAArC;AACA,sBAAI,QAAJ,CAAa,KAAK,SAAlB;AACA,sBAAI,KAAJ;AACH;;;;;;AAMD;AACA;AACA;AACA;+BACyC;AAAA;;AAAA,gBAApC,aAAoC,uEAApB,IAAoB;AAAA,gBAAd,OAAc,uEAAJ,EAAI;;AACrC,gBAAI,KAAK,YAAT,EAAuB;AACnB,uBAAO,KAAK,YAAZ;AACH;AACD,0BAAI,KAAJ;;AAEA,iBAAK,QAAL;AACA,iBAAK,WAAL,GAAmB,KAAnB;AACA,iBAAK,kBAAL,GAA0B,IAA1B;;AAEA;AACA;AACA,sBAAW,OAAO,OAAP,KAAmB,QAApB,GAAgC,EAAE,WAAW,OAAb,EAAhC,GAAyD,OAAnE;;AAEA;AACA,oBAAQ,QAAR,GAAoB,QAAQ,QAAR,KAAqB,SAAtB,GAAmC,QAAQ,QAA3C,GAAsD,IAAzE;;AAEA,gBAAI,KAAK,WAAL,KAAqB,KAAzB,EAAgC;AAC5B,qBAAK,eAAL;AACH;;AAED;AACA,iBAAK,YAAL;AACA,iBAAK,YAAL,GAAoB,KAAK,SAAL,CAAe,aAAf,EAA8B,OAA9B,EACf,IADe,CACV;AAAA,uBAAM,MAAK,aAAL,EAAN;AAAA,aADU,EAEf,IAFe,CAEV,YAAM;AACR,sBAAK,qBAAL;;AAEA;AACA;AACA,oBAAM,kBAAoB,QAAO,MAAK,aAAZ,MAA8B,QAA/B,IAA4C,MAAK,iBAAL,CAAuB,MAAvB,CAArE;;AAEA,oBAAM,WAAW,MAAK,YAAL,CAAkB,EAAE,gCAAF,EAAmB,WAAW,KAA9B,EAAqC,YAAY,IAAjD,EAAuD,SAAS,IAAhE,EAAlB,CAAjB;AACA,oBAAI,QAAQ,QAAR,KAAqB,IAAzB,EAA+B;AAC3B,2BAAO,QAAP;AACH;AACJ,aAbe,EAab,IAba,CAaR,YAAM;AACV,sBAAK,QAAL;AACA,sBAAK,YAAL,GAAoB,IAApB;AACA,sBAAK,WAAL,GAAmB,IAAnB;AACA,sBAAK,wBAAL,GAAgC,MAAK,aAArC;AACA,sBAAK,kBAAL,GAA0B,EAAE,WAAW,QAAQ,SAArB,EAAgC,WAAW,QAAQ,SAAnD,EAA1B;;AAEA,sBAAK,aAAL;AACP,aArBmB,EAqBjB,KArBiB,CAqBX,iBAAS;AACd,sBAAK,YAAL,GAAoB,IAApB;AACA,sBAAK,QAAL,GAAgB,CAAhB;;AAEA;AACA,oBAAI,aAAJ;AAAA,oBAAU,gBAAV;AACA,oBAAI,MAAM,IAAN,KAAe,eAAnB,EAAoC;AAChC,2BAAO,MAAP;AACA,8BAAU,0BAAV;AACH,iBAHD,MAIK;AACD;AACA,8BAAU,0BAAV;AACH;AACD,sBAAK,OAAL,CAAa,OAAb,EAAsB,EAAE,UAAF,EAAQ,gBAAR,EAAiB,YAAjB,EAAwB,KAAK,MAAK,aAAlC,EAAtB;;AAEA,2DAAyC,MAAK,aAA9C,UAAgE,MAAM,OAAtE;AACA,oBAAI,MAAK,wBAAT,EAAmC;AAC/B,uCAAI,MAAJ,EAAY,OAAZ,EAAqB,KAArB;AACA,uCAAI,MAAJ;AACA,2BAAO,MAAK,IAAL,CAAU,MAAK,wBAAf,EAAyC,MAAK,oBAA9C,CAAP;AACH;AACD,mCAAI,OAAJ,EAAa,OAAb,EAAsB,KAAtB;AACA,sBAAM,KAAN;AACH,aA7CmB,CAApB;;AA+CA,mBAAO,KAAK,YAAZ;AACH;;;kCAES;AACN,iBAAK,WAAL,GAAmB,KAAnB;AACA,iBAAK,gBAAL,GAAwB,IAAxB,CAFM,CAEwB;;AAE9B,iBAAK,gBAAL;;AAEA,gBAAI,KAAK,MAAL,IAAe,KAAK,MAAL,CAAY,UAA/B,EAA2C;AACvC,qBAAK,MAAL,CAAY,UAAZ,CAAuB,WAAvB,CAAmC,KAAK,MAAxC;AACA,qBAAK,MAAL,GAAc,IAAd;AACH;AACD,iBAAK,SAAL,GAAiB,IAAjB;;AAEA,gBAAI,KAAK,SAAT,EAAoB;AAChB,qBAAK,SAAL,CAAe,OAAf;AACH;;AAED,gBAAI,KAAK,EAAT,EAAa;AACT,kCAAQ,OAAR,CAAgB,KAAK,EAArB;AACA,qBAAK,aAAL,CAAmB,OAAnB,CAA2B,KAAK,EAAhC;AACA,qBAAK,MAAL,GAAc,EAAd;;AAEA,yCAAc,KAAd;;AAEA;AACA,oBAAI,MAAM,KAAK,EAAL,CAAQ,YAAR,CAAqB,oBAArB,CAAV;AACA,oBAAI,GAAJ,EAAS;AACL,wBAAI,WAAJ;AACH;;AAED,qBAAK,EAAL,GAAU,IAAV;AACH;;AAED,iBAAK,OAAL,GAAe,EAAf;;AAEA,iBAAK,cAAL;AACA,iBAAK,YAAL,CAAkB,OAAlB;AACA,iBAAK,YAAL,GAAoB,IAApB;AACA,0BAAI,KAAJ;AACH;;;uCAEc;AACX,gBAAI,KAAK,MAAT,EAAiB;AACb;AACH;;AAED,iBAAK,SAAL,GAAiB,KAAK,SAAL,IAAkB,SAAS,IAA5C;AACA,iBAAK,MAAL,GAAc,SAAS,aAAT,CAAuB,QAAvB,CAAd;AACA,iBAAK,MAAL,CAAY,KAAZ,CAAkB,QAAlB,GAA6B,UAA7B;AACA,iBAAK,MAAL,CAAY,KAAZ,CAAkB,GAAlB,GAAwB,CAAxB;AACA,iBAAK,MAAL,CAAY,KAAZ,CAAkB,IAAlB,GAAyB,CAAzB;;AAEA;AACA,iBAAK,SAAL,CAAe,KAAf,CAAqB,eAArB,GAAuC,aAAvC;AACA,iBAAK,SAAL,CAAe,WAAf,CAA2B,KAAK,MAAhC;;AAEA,gBAAI;AACA,qBAAK,EAAL,GAAU,kBAAQ,UAAR,CAAmB,KAAK,MAAxB,EAAgC,OAAO,MAAP,CAAc;AACpD,2BAAO,IAD6C,EACvC,oBAAoB,IADmB;AAEpD,wCAAoB,gBAAM;AAF0B,iBAAd,EAGvC,KAAK,cAHkC,CAAhC,CAAV;AAIH,aALD,CAMA,OAAM,CAAN,EAAS;AACL,sBAAM,IAAI,KAAJ,CACF,oCACA,0DADA,GAEA,8CAHE,CAAN;AAKH;;AAED,iBAAK,SAAL,CAAe,KAAK,SAAL,CAAe,WAA9B,EAA2C,KAAK,SAAL,CAAe,YAA1D;AACA,0BAAkB,IAAlB,CAAuB,KAAK,EAA5B;AACA,iBAAK,aAAL,GAAqB,2BAAuB,KAAK,EAA5B,CAArB;AACA,iBAAK,aAAL,CAAmB,SAAnB,CAA6B,KAAK,MAAlC,EAA0C,KAAK,EAA/C;AACH;;AAED;;;;uCACe;AACX,gBAAI,mBAAJ;AACA;AACA;AACA,gBAAI,OAAO,cAAP,KAA0B,WAA9B,EAA0C;AACtC,oBAAI,SAAS,MAAM,cAAN,GAAuB,KAApC;AACA,oBAAI,yBAAyB,uBAAuB,EAApD,EAAwD;AACpD,wBAAI,SAAS,sBAAsB,KAAtB,CAA4B,CAA5B,EAA+B,sBAAsB,WAAtB,CAAkC,GAAlC,IAAuC,CAAtE,CAAb;AACA,8BAAU,UAAU,oBAAV,GAAiC,MAAjC,GAA0C,kBAApD;AACH;AACD,6BAAa,KAAK,eAAL,CAAqB,IAAI,IAAJ,CAAS,CAAC,MAAD,CAAT,EAAmB,EAAE,MAAM,wBAAR,EAAnB,CAArB,CAAb;AACH;AACD;;AAEA,gBAAI,CAAC,UAAL,EAAiB;AACb,sBAAM,IAAI,KAAJ,CAAU,mGAAV,CAAN;AACH;;AAED;AACA;AACA;AACA;AACA,gBAAI,oCAAW,KAAK,mBAAhB,EAAJ;AACA,iBAAK,IAAL,CAAU,UAAV,EAvBW,CAuBY;AACvB,gBAAI,0BAAwB,KAAK,GAAL,CAAS;AAAA,8BAAW,GAAX;AAAA,aAAT,EAA4B,IAA5B,CAAiC,GAAjC,CAAxB,OAAJ;AACA,mBAAO,KAAK,eAAL,CAAqB,IAAI,IAAJ,CAAS,CAAC,IAAD,CAAT,EAAiB,EAAE,MAAM,wBAAR,EAAjB,CAArB,CAAP;AACH;;AAED;;;;kDAC2B;AAAA;AAAA;;AACvB,gBAAI,4CAAoB,KAAK,mBAAL,IAA0B,EAA9C,EAAJ,CADuB,CACiC;AACxD,gBAAI,UAAU,OAAO,IAAP,CAAY,KAAK,MAAL,CAAY,OAAxB,EAAiC,GAAjC,CAAqC;AAAA,uBAAK,OAAK,MAAL,CAAY,OAAZ,CAAoB,CAApB,EAAuB,OAA5B;AAAA,aAArC,EAA0E,MAA1E,CAAiF;AAAA,uBAAK,CAAL;AAAA,aAAjF,CAAd;AACA,gBAAI,QAAQ,MAAR,GAAiB,CAArB,EAAwB;AACpB,mCAAI,OAAJ,EAAa,+CAAb,EAA8D,OAA9D;AACH;AACD,iBAAK,mBAAL,GAA2B,YAAG,MAAH,gCAAa,OAAb,GAAsB,IAAtB,EAA3B;;AAEA;AACA,mBAAO,EAAE,KAAK,mBAAL,CAAyB,MAAzB,KAAoC,aAAa,MAAjD,IACL,KAAK,mBAAL,CAAyB,KAAzB,CAA+B,UAAC,CAAD,EAAI,CAAJ;AAAA,uBAAU,MAAM,aAAa,CAAb,CAAhB;AAAA,aAA/B,CADG,CAAP;AAEH;;AAED;;;;wCACgB;AACZ;AACA,gBAAI,KAAK,uBAAL,EAAJ,EAAoC;AAChC,qBAAK,cAAL;AACH;;AAED,gBAAI,CAAC,KAAK,OAAV,EAAmB;AACf,uBAAO,KAAK,WAAL,CAAiB,KAAK,YAAL,EAAjB,CAAP;AACH;AACD,mBAAO,QAAQ,OAAR,EAAP;AACH;;AAED;;;;oCACY,G,EAAK;AAAA;;AAEb;AACA,gBAAI,yBAAyB,KAAK,EAAL,CAAQ,YAAR,CAAqB,wBAArB,IAAiD,IAAjD,GAAwD,KAArF;;AAEA,gBAAI,QAAQ,EAAZ;AACA,iBAAK,OAAL,GAAe,EAAf;;AANa;AAQL,yBAAS,IAAI,MAAJ,CAAW,GAAX,CARJ;;AAST,uBAAK,OAAL,CAAa,EAAb,IAAmB,MAAnB;;AAEA,wCAAa,SAAb,CAAuB,MAAvB;;AAEA,mCAAI,OAAJ,8CAAuD,EAAvD;AACA,oBAAI,MAAM,EAAV;AACA,sBAAM,IAAN,CAAW,wBAAa,WAAb,CAAyB,MAAzB,EAAiC,WAAjC,EAA8C,OAAK,EAAnD,EAAuD,EAAvD,EAA2D,OAAK,WAAhE,EAA6E,OAAK,SAAlF,EAA6F,gBAAM,kBAAnG,EAAuH,sBAAvH,EAA+I,IAA/I,CACP,UAAC,EAAD,EAAQ;AACJ,uCAAI,OAAJ,6CAAsD,EAAtD;AACA,2BAAO,EAAP;AACH,iBAJM,EAKP,UAAC,KAAD,EAAW;AACP,uCAAI,OAAJ,sDAA+D,GAA/D,QAAuE,KAAvE;AACA,2BAAO,QAAQ,MAAR,CAAe,KAAf,CAAP;AACH,iBARM,CAAX;AAfS;;AAOb,iBAAK,IAAI,KAAG,CAAZ,EAAe,KAAK,KAAK,WAAzB,EAAsC,IAAtC,EAA4C;AAAA,oBACpC,MADoC;;AAAA;AAkB3C;;AAED,iBAAK,WAAL,GAAmB,CAAnB;AACA,mBAAO,QAAQ,GAAR,CAAY,KAAZ,EAAmB,IAAnB,CAAwB,YAAM;AACjC,8BAAI,UAAJ,CAAe,OAAK,OAApB;;AAEA;AACA,qBAAK,eAAL,CAAqB,GAArB;AACH,aALM,CAAP;AAMH;;;yCAEgB;AACb,gBAAI,MAAM,OAAN,CAAc,KAAK,OAAnB,CAAJ,EAAiC;AAC7B,8BAAI,UAAJ,CAAe,IAAf;AACA,qBAAK,OAAL,CAAa,OAAb,CAAqB,UAAC,MAAD,EAAY;AAC7B,2BAAO,SAAP;AACH,iBAFD;AAGA,qBAAK,OAAL,GAAe,IAAf;AACH;AACJ;;AAED;;;;gCACQ;AACJ,gBAAI,CAAC,KAAK,IAAL,CAAU,KAAV,EAAD,IAAsB,OAAO,IAAP,CAAY,KAAK,OAAjB,EAA0B,MAA1B,KAAqC,CAA/D,EAAkE;AAC7D,uBAAO,KAAP;AACJ;AACD,mBAAO,IAAP;AACH;;AAED;;;;iDAC0B;AAAA;;AACtB,gBAAI,gBAAM,sBAAN,EAAJ,EAAoC;AAChC,wCAAa,WAAb,CAAyB,KAAK,OAA9B,EAAuC,6BAAvC,EAAsE,gBAAM,kBAA5E,EACK,IADL,CACU;AAAA,2BAAM,OAAK,OAAL,EAAN;AAAA,iBADV,EAEK,IAFL,CAEU;AAAA,2BAAM,OAAK,SAAL,CAAe,OAAK,IAAL,CAAU,IAAV,CAAe,GAAf,CAAmB,KAAlC,EAAyC,OAAK,IAAL,CAAU,IAAV,CAAe,GAAf,CAAmB,MAA5D,CAAN;AAAA,iBAFV;AAGH;AACJ;;;kCAES,K,EAAO,M,EAAQ;AACrB,gBAAI,UAAU,CAAV,IAAe,WAAW,CAA9B,EAAiC;AAC7B;AACH;;AAED,iBAAK,KAAL,GAAa,IAAb;AACA,iBAAK,IAAL,CAAU,eAAV,CAA0B,KAA1B,EAAiC,MAAjC;AACA,gBAAI,KAAK,EAAT,EAAa;AACT,kCAAQ,MAAR,CAAe,KAAK,EAApB,EAAwB,KAAxB,EAA+B,MAA/B,EAAuC,gBAAM,kBAA7C;AACH;AACJ;;AAED;;;;wCACgB;AACZ,iBAAK,KAAL,GAAa,IAAb;AACH;;AAED;AACA;AACA;;;;0CACkB;AACd,iBAAK,KAAL,GAAa,IAAb;AACA,iBAAK,MAAL;AACH;;;qCAEa;AACV,iBAAK,kBAAL,GAA0B,IAA1B,CADU,CACsB;;AAEhC,gBAAI,KAAK,WAAT,EAAsB;AAClB;AACA,qBAAK,MAAL;AACH;;AAED;AACA,2BAAK,QAAL,CAAc,EAAE,kBAAkB,KAAK,IAAL,CAAU,iBAA9B,EAAd;AACA,2BAAK,UAAL;;AAEA;AACA,gBAAI,CAAC,KAAK,gBAAV,EAA4B;AACxB,uBAAO,qBAAP,CAA6B,KAAK,UAAL,CAAgB,IAAhB,CAAqB,IAArB,CAA7B;AACH,aAFD,MAGK;AACD,qBAAK,gBAAL,GAAwB,KAAxB;AACA,qBAAK,kBAAL,GAA0B,KAA1B;AACH;AACJ;;AAED;;;;0CACkB;AAAA;;AACd,gBAAI,CAAC,KAAK,kBAAV,EAA8B;AAC1B,2BAAW,YAAM;AAAE,2BAAK,UAAL;AAAoB,iBAAvC,EAAyC,CAAzC,EAD0B,CACmB;AAChD;AACJ;;;iCAEQ;AACL;AACA,gBAAI,OAAO,KAAK,KAAhB;AACA,gBAAI,YAAY,KAAK,SAAL,GAAiB,KAAK,SAAL,CAAe,kBAAf,EAAjB,GAAuD,KAAvE;AACA,gBAAI,cAAc,EACb,SAAS,KAAT,IAAkB,cAAc,KAAjC,IACA,KAAK,WAAL,KAAqB,KADrB,IAEA,KAAK,QAAL,GAAgB,CAFhB,IAGA,KAAK,KAAL,OAAiB,KAJH,CAAlB;;AAOA;AACA,iBAAK,OAAL,CAAa,WAAb,EAA0B,WAA1B;;AAEA;AACA,iBAAK,IAAL,CAAU,MAAV;;AAEA;AACA,gBAAI,CAAC,WAAL,EAAkB;AACd,uBAAO,KAAP;AACH;AACD,iBAAK,KAAL,GAAa,KAAb,CArBK,CAqBe;;AAEpB;AACA,iBAAK,sBAAL;AACA,iBAAK,MAAL,CAAY,EAAE,UAAF,EAAQ,oBAAR,EAAZ;AACA,iBAAK,kBAAL,GA1BK,CA0BsB;AAC3B,iBAAK,aAAL,CAAmB,kBAAnB,GA3BK,CA2BoC;;AAEzC;AACA,iBAAK,OAAL,CAAa,YAAb,EAA2B,WAA3B;;AAEA;AACA,gBAAI,KAAK,QAAL,KAAkB,IAAlB,IAA0B,KAAK,IAAL,CAAU,WAAV,EAA9B,EAAuD;AACnD,qBAAK,KAAL,GAAa,IAAb;AACH;;AAED,iBAAK,KAAL;AACA,+BAAI,OAAJ,EAAa,gBAAb;AACA,mBAAO,IAAP;AACH;;AAED;;;;sCAC4B;AAAA;;AAAA,gBAAnB,IAAmB,SAAnB,IAAmB;AAAA,gBAAb,SAAa,SAAb,SAAa;;AACxB,gBAAI,KAAK,KAAK,EAAd;;AAEA;AACA,mBAAO,IAAP,CAAY,KAAK,MAAjB,EAAyB,OAAzB,CAAiC;AAAA,uBAAK,OAAK,MAAL,CAAY,CAAZ,EAAe,MAAf,EAAL;AAAA,aAAjC;;AAEA;AACA,gBAAI,IAAJ,EAAU;AACN,qBAAK,YAAL,GAAoB,KAAK,UAAL,EAApB;AACA,qBAAK,gBAAL,GAAwB,KAAK,KAA7B;AACH;;AAED;AACA,gBAAI,SAAJ,EAAe;AACX,oBAAI,KAAK,IAAL,CAAU,OAAV,IAAqB,KAAK,IAAL,CAAU,iBAAnC,EAAsD;AAClD,yBAAK,SAAL,CAAe,oBAAf;AACA;AACH;;AAED;AACA;AACA,oBAAI,CAAC,KAAK,SAAL,CAAe,MAAhB,IAA0B,KAAK,qBAAL,GAA6B,KAAK,gBAAhE,EAAkF;AAC9E,yBAAK,SAAL,CAAe,IAAf,GAD8E,CAC9C;AAChC,yBAAK,UAAL,CACI,mBADJ,EACgC;AAC5B,sBAAE,aAAa,KAAf,EAFJ;;AAIA;AACA,uBAAG,eAAH,CAAmB,GAAG,WAAtB,EAAmC,IAAnC;AACA,uBAAG,QAAH,CAAY,CAAZ,EAAe,CAAf,EAAkB,KAAK,MAAL,CAAY,KAA9B,EAAqC,KAAK,MAAL,CAAY,MAAjD;AACA,uBAAG,UAAH,8BAAiB,KAAK,UAAL,CAAgB,KAAjC,GAT8E,CASrC;AACzC,yBAAK,qBAAL,GAA6B,KAAK,KAAlC;AACH;;AAED,qBAAK,SAAL,CAAe,IAAf,GArBW,CAqBY;AAC1B;;AAED,iBAAK,oBAAL,GAA4B,KAA5B;AACA,gBAAI,KAAK,YAAL,KAAsB,KAAK,iBAA/B,EAAkD;AAC9C,qBAAK,oBAAL,GAA4B,IAA5B;;AAEA,qBAAK,0BAAL,GAAkC,IAAlC,CAAuC,gBAAQ;AAC3C,wBAAI,IAAJ,EAAU;AAAE;AACR,2CAAI,MAAJ,uBAA+B,OAAK,YAApC,qBAAgE,IAAhE;AACH;AACJ,iBAJD;AAKH;AACD,iBAAK,iBAAL,GAAyB,KAAK,YAA9B;;AAEA,mBAAO,IAAP;AACH;;AAED;AACA;;;;qCAC0D;AAAA;;AAAA,gBAA/C,WAA+C,uEAAjC,SAAiC;;AAAA,4FAAJ,EAAI;AAAA,gBAApB,WAAoB,SAApB,WAAoB;;AACtD;AACA,0BAAe,eAAe,IAAhB,GAAwB,IAAxB,GAA+B,WAA7C;;AAEA,iBAAK,UAAL,CAAgB,EAAE,aAAa,IAAf,EAAqB,aAAa,IAAlC,EAAhB;;AAEA;AACA,gBAAI,SAAS,KAAK,YAAL,CAAkB,eAAlB,GACT,GADS,CACL;AAAA,uBAAK,OAAK,MAAL,CAAY,CAAZ,CAAL;AAAA,aADK,EAET,MAFS,CAEF;AAAA,uBAAK,CAAL;AAAA,aAFE,GAEO;AAChB,gBAHS,CAGJ,aAAM,cAHF,CAAb;;AAKA;AACA,gBAAI,QAAQ,CAAZ,CAbsD,CAavC;AACf,gBAAI,mBAAJ;AACA,iBAAK,IAAI,IAAE,CAAX,EAAc,IAAI,OAAO,MAAzB,EAAiC,GAAjC,EAAsC;AAClC,oBAAI,QAAQ,OAAO,CAAP,CAAZ;;AAEA;AACA,oBAAI,MAAM,KAAN,KAAgB,UAApB,EAAgC;AAC5B,wBAAI,QAAQ,OAAO,MAAP,CAAc,EAAd,EACR,aAAM,aAAN,CAAoB,MAAM,KAA1B,CADQ,EACgC;AACxC,sBAAE,OAAQ,eAAe,MAAM,KAA/B,CAAwC;AAAxC,qBAFQ,CAAZ;AAIA,yBAAK,cAAL,CAAoB,KAApB;AACH;AACD,yBAAS,KAAK,WAAL,CAAiB,MAAM,IAAvB,EAA6B,WAA7B,CAAT;AACA,6BAAa,MAAM,KAAnB;AACH;;AAED,mBAAO,KAAP;AACH;;;oCAEW,U,EAAY,W,EAAa;AAAA;;AACjC,gBAAI,QAAQ,KAAK,MAAL,CAAY,UAAZ,CAAZ;AACA,gBAAI,kBAAkB,IAAtB;AACA,gBAAI,eAAe,CAAnB;AACA,gBAAI,gBAAJ;;AAEA;AACA,gBAAI,mBAAmB,KAAK,YAAL,CAAkB,kBAAlB,EAAvB;AACA,iBAAK,IAAI,IAAE,CAAX,EAAc,IAAI,iBAAiB,MAAnC,EAA2C,GAA3C,EAAgD;AAC5C,oBAAI,OAAO,iBAAiB,CAAjB,CAAX;;AAEA,oBAAI,KAAK,MAAL,CAAY,UAAZ,KAA2B,IAA/B,EAAqC;AACjC;AACH;;AAED;AACA;AACA;AACA,oBAAI,oBAAoB,IAAxB,EAA8B;AAC1B,sCAAkB,KAAlB;AACA,8BAAU,KAAK,UAAL,CAAgB,KAAhB,EAAuB,WAAvB,CAAV;AACA,wBAAI,CAAC,OAAL,EAAc;AACV,+BAAO,CAAP;AACH;AACJ;;AAED;AACA,oBAAI,CAAC,KAAK,mBAAL,CAAyB,UAAzB,CAAL,EAA2C;AACvC;AACA;AACH;;AAED;AACA,qBAAK,IAAL,CAAU,SAAV,CAAoB,IAApB,EAA0B,OAA1B;;AAEA;AACA,qBAAK,MAAL,CAAY,UAAZ,EAAwB,OAAxB,CAAgC,gBAAQ;AACpC,wBAAI,MAAM,MAAN,CAAa,IAAb,CAAJ,EAAwB;AACpB,+BAAK,aAAL;AACH;AACD,oCAAgB,KAAK,cAArB;AACH,iBALD;AAMH;;AAED,mBAAO,YAAP;AACH;;;mCAEU,K,EAAO,W,EAAa;AAC3B;AACA,gBAAI,gBAAJ;AACA,gBAAI;AACA,0BAAU,MAAM,UAAN,CAAiB,WAAjB,CAAV;AACA,oBAAI,CAAC,OAAL,EAAc;AACV;AACH;AACJ,aALD,CAMA,OAAM,KAAN,EAAa;AACT,qBAAK,OAAL,CAAa,SAAb,EAAwB;AACpB,0BAAM,QADc;AAEpB,wDAAkC,MAAM,IAFpB;AAGpB,gCAHoB;AAIpB,mCAAe,MAAM,OAAN,IAAiB,MAAM,OAAN,CAAc;AAJ1B,iBAAxB;AAMA;AACH;;AAED,oBAAQ,GAAR;AACA,kBAAM,KAAN;;AAEA,oBAAQ,OAAR,CAAgB,IAAhB,EAAsB,QAAtB,EAAgC,KAAK,QAAL,GAAiB,CAAE,CAAC,IAAI,IAAJ,EAAF,GAAgB,KAAK,UAAtB,IAAoC,IAArD,GAA6D,CAA7F;AACA,iBAAK,IAAL,CAAU,YAAV,CAAuB,OAAvB;AACA,iBAAK,IAAI,CAAT,IAAc,KAAK,MAAnB,EAA2B;AACvB,qBAAK,MAAL,CAAY,CAAZ,EAAe,YAAf,CAA4B,OAA5B;AACH;;AAED,mBAAO,OAAP;AACH;;;qCAE6C;AAAA,4FAAJ,EAAI;AAAA,gBAAjC,WAAiC,SAAjC,WAAiC;AAAA,gBAApB,WAAoB,SAApB,WAAoB;;AAC1C,gBAAI,CAAC,KAAK,WAAV,EAAuB;AACnB;AACH;;AAED;AACA,0BAAe,gBAAgB,KAAjB,GAA0B,KAA1B,GAAkC,IAAhD,CAN0C,CAMY;AACtD,0BAAe,gBAAgB,KAAjB,GAA0B,KAA1B,GAAkC,IAAhD,CAP0C,CAOY;;AAEtD;AACA,iBAAK,aAAL,CAAmB,WAAnB,CAA+B,GAA/B,CAAmC,EAAE,aAAa,WAAf,EAAnC;;AAEA,gBAAI,KAAK,KAAK,EAAd;AACA,gBAAI,eAAe,WAAnB,EAAgC;AAC5B,oBAAI,OAAO,CAAC,eAAe,GAAG,gBAAnB,KAAwC,eAAe,GAAG,gBAA1D,CAAX;AACA,mBAAG,KAAH,CAAS,IAAT;AACH;AACJ;;;yCAEkE;AAAA,4FAAJ,EAAI;AAAA,gBAAlD,UAAkD,SAAlD,UAAkD;AAAA,gBAAtC,WAAsC,SAAtC,WAAsC;AAAA,gBAAzB,SAAyB,SAAzB,SAAyB;AAAA,gBAAd,KAAc,SAAd,KAAc;;AAC/D,gBAAI,CAAC,KAAK,WAAV,EAAuB;AACnB;AACH;;AAED;AACA;AACA,gBAAI,gBAAgB,KAAK,aAAzB;AACA,yBAAc,eAAe,KAAhB,GAAyB,KAAzB,GAAiC,cAAc,QAAd,CAAuB,UAArE,CAR+D,CAQuB;AACtF,0BAAe,gBAAgB,KAAjB,GAA0B,KAA1B,GAAkC,cAAc,QAAd,CAAuB,WAAvE,CAT+D,CASuB;AACtF,wBAAa,cAAc,KAAf,GAAwB,KAAxB,GAAgC,cAAc,QAAd,CAAuB,OAAnE,CAV+D,CAUuB;AACtF,oBAAS,SAAS,IAAV,GAAkB,KAAlB,GAA0B,cAAc,QAAd,CAAuB,QAAzD,CAX+D,CAWuB;;AAEtF;AACA,gBAAI,KAAK,KAAK,EAAd;;AAEA,0BAAc,UAAd,CAAyB,GAAzB,CAA6B,EAAE,YAAY,UAAd,EAA7B;AACA,0BAAc,WAAd,CAA0B,GAA1B,CAA8B,EAAE,aAAa,WAAf,EAA9B;AACA,0BAAc,OAAd,CAAsB,GAAtB,CAA0B,EAAE,MAAM,SAAR,EAAmB,MAAM,cAAc,QAAd,CAAuB,YAAhD,EAA1B;;AAEA;AACA;AACA;AACA,gBAAI,KAAJ,EAAW;AACP;AACA,oBAAI,UAAU,QAAd,EAAwB;AACpB,kCAAc,QAAd,CAAuB,GAAvB,CAA2B;AACvB,+BAAO;AADgB,qBAA3B;AAGH;AACD;AALA,qBAMK,IAAI,UAAU,SAAV,IAAuB,UAAU,OAArC,EAA8C;AAC/C,sCAAc,QAAd,CAAuB,GAAvB,CAA2B;AACvB,mCAAO,IADgB;AAEvB,iCAAK,GAAG,SAFe,EAEJ,KAAK,GAAG,mBAFJ;AAGvB,uCAAW,GAAG,GAHS,EAGJ,WAAW,GAAG;AAHV,yBAA3B;AAKH;AACD;AAPK,yBAQA,IAAI,UAAU,KAAd,EAAqB;AACtB,0CAAc,QAAd,CAAuB,GAAvB,CAA2B;AACvB,uCAAO,IADgB;AAEvB,qCAAK,GAAG,GAFe,EAEV,KAAK,GAAG;AAFE,6BAA3B;AAIH;AACD;AANK,6BAOA,IAAI,UAAU,UAAd,EAA0B;AAC3B,8CAAc,QAAd,CAAuB,GAAvB,CAA2B;AACvB,2CAAO,IADgB;AAEvB,yCAAK,GAAG,IAFe,EAET,KAAK,GAAG;AAFC,iCAA3B;AAIH;AACJ,aA7BD,MA8BK;AACD,8BAAc,QAAd,CAAuB,GAAvB,CAA2B,EAAE,OAAO,KAAT,EAA3B;AACH;AACJ;;AAED;;;;qCACa,K,EAAwB;AAAA,4FAAJ,EAAI;AAAA,gBAAf,MAAe,SAAf,MAAe;;AACjC,gBAAI,CAAC,KAAK,WAAV,EAAuB;AACnB,mCAAI,OAAJ,EAAa,0DAAb;AACA,uBAAO,QAAQ,OAAR,EAAP;AACH;;AAED;AACA,gBAAI,QAAQ;AACR,mBAAG,MAAM,CAAN,GAAU,KAAK,IAAL,CAAU,IAAV,CAAe,GAAf,CAAmB,KADxB;AAER,mBAAG,MAAM,CAAN,GAAU,KAAK,IAAL,CAAU,IAAV,CAAe,GAAf,CAAmB;AAFxB,aAAZ;;AAKA,gBAAI,SAAS,CAAb,EAAgB;AACZ,yBAAU;AACN,uBAAG,SAAS,KAAK,IAAL,CAAU,IAAV,CAAe,GAAf,CAAmB,KADzB;AAEN,uBAAG,SAAS,KAAK,IAAL,CAAU,IAAV,CAAe,GAAf,CAAmB;AAFzB,iBAAV;AAIH,aALD,MAMK;AACD,yBAAS,IAAT;AACH;;AAED,mBAAO,KAAK,SAAL,CAAe,YAAf,CAA4B,KAA5B,EAAmC,EAAE,cAAF,EAAnC,EACH,IADG,CACE;AAAA,uBAAa,OAAO,MAAP,CAAc,SAAd,EAAyB,EAAE,YAAF,EAAzB,CAAb;AAAA,aADF,EAEH,KAFG,CAEG;AAAA,uBAAS,QAAQ,OAAR,CAAgB,EAAE,YAAF,EAAhB,CAAT;AAAA,aAFH,CAAP;AAGH;;AAED;;;;wCACiG;AAAA,4FAAJ,EAAI;AAAA,gBAAjF,MAAiF,SAAjF,MAAiF;AAAA,qCAAzE,MAAyE;AAAA,gBAAzE,MAAyE,gCAAhE,IAAgE;AAAA,uCAA1D,QAA0D;AAAA,gBAA1D,QAA0D,kCAA/C,IAA+C;AAAA,sCAAzC,OAAyC;AAAA,gBAAzC,OAAyC,iCAA/B,IAA+B;AAAA,uCAAzB,QAAyB;AAAA,gBAAzB,QAAyB,kCAAd,KAAc;;AAC7F,qBAAS,gBAAM,sBAAN,CAA6B,MAA7B,CAAT;AACA,gBAAI,YAAY,KAAK,YAAL,CAAkB,kBAAlB,GAAuC,GAAvC,CAA2C;AAAA,uBAAK,EAAE,GAAP;AAAA,aAA3C,CAAhB;AACA,mBAAO,wBAAa,WAAb,CAAyB,KAAK,OAA9B,EAAuC,oBAAvC,EAA6D,EAAE,cAAF,EAAU,gBAAV,EAAmB,kBAAnB,EAA6B,oBAA7B,EAA7D,EAAuG,IAAvG,CAA4G,mBAAW;AAC1H,oBAAI,WAAW,EAAf;AACA,oBAAI,OAAO,EAAX;AACA,oBAAI,SAAS,EAAb;;AAEA;AACA;AACA,yBAAU,OAAO,MAAP,KAAkB,QAAnB,GAA+B,CAAC,MAAD,CAA/B,GAA0C,MAAnD;AACA,oBAAM,YAAY,UAAW;AAAA,2BAAO,KAAK,SAAL,CAAe,MAAM,OAAN,CAAc,MAAd,IAAwB,qBAAY,GAAZ,EAAiB,MAAjB,CAAxB,GAAmD,GAAlE,CAAP;AAAA,iBAA7B;;AAEA;AACA;AACA,2BAAW,CAAC,OAAO,QAAP,KAAoB,QAApB,IAAgC,MAAM,OAAN,CAAc,QAAd,CAAjC,KAA6D,QAAxE;AACA,oBAAM,QAAQ,YAAa,eAAO;AAC9B,2BAAO,MAAM,OAAN,CAAc,QAAd,IAA0B,KAAK,SAAL,CAAe,qBAAY,GAAZ,EAAiB,QAAjB,CAAf,CAA1B,GAAuE,IAAI,QAAJ,CAA9E;AACH,iBAFD;;AAIA,wBAAQ,OAAR,CAAgB;AAAA,2BAAK,EAAE,OAAF,CAAU,mBAAW;AACtC,4BAAI,SAAJ,EAAe;AACX,gCAAI,MAAM,UAAU,OAAV,CAAV;AACA,gCAAI,KAAK,GAAL,CAAJ,EAAe;AACX;AACH;AACD,iCAAK,GAAL,IAAY,IAAZ;AACH;;AAED,4BAAI,KAAJ,EAAW;AACP,gCAAI,OAAM,MAAM,QAAQ,UAAd,CAAV;AACA,mCAAO,IAAP,IAAc,OAAO,IAAP,KAAe,EAA7B;AACA,mCAAO,IAAP,EAAY,IAAZ,CAAiB,OAAjB;AACH,yBAJD,MAKK;AACD,qCAAS,IAAT,CAAc,OAAd;AACH;AACJ,qBAjBoB,CAAL;AAAA,iBAAhB;AAkBA,uBAAO,QAAQ,MAAR,GAAiB,QAAxB,CAnC0H,CAmCxF;AACrC,aApCM,CAAP;AAqCH;;AAED;AACA;AACA;;;;kCAC2G;AAAA;;AAAA,4FAAJ,EAAI;AAAA,6CAAjG,cAAiG;AAAA,gBAAjG,cAAiG,wCAAhF,IAAgF;AAAA,sCAA1E,OAA0E;AAAA,gBAA1E,OAA0E,iCAAhE,IAAgE;AAAA,gBAA1D,eAA0D,SAA1D,eAA0D;AAAA,sCAAzC,OAAyC;AAAA,gBAAzC,OAAyC,iCAA/B,KAA+B;AAAA,sCAAxB,OAAwB;AAAA,gBAAxB,OAAwB,iCAAd,KAAc;;AACvG,mBAAO,IAAI,OAAJ,CAAY,UAAC,OAAD,EAAU,MAAV,EAAqB;AACpC;AACA,oBAAI,OAAK,QAAT,EAAmB;AACf;AACA,wBAAI,OAAK,QAAL,CAAc,MAAd,IAAwB,OAAK,QAAL,CAAc,MAAd,CAAqB,MAAjD,EAAyD;AACrD;AACA,2CAAI,OAAJ,EAAa,mDAAb;AACA,+BAAK,QAAL,CAAc,MAAd,CAAqB,OAArB,CAA6B,KAA7B,EAHqD,CAGhB;AACxC;;AAED;AACA,wBAAI,UAAU,EAAE,8BAAF,EAAkB,gBAAlB,EAA2B,gCAA3B,EAA4C,gBAA5C,EAAqD,gBAArD,EAAd;AACA,2BAAK,QAAL,CAAc,MAAd,GAAuB,EAAE,gBAAF,EAAW,cAAX,EAAmB,gBAAnB,EAAvB;AACA,uCAAI,OAAJ;AACA;AACH;;AAED;AACA,uBAAK,QAAL,GAAgB,EAAE,gBAAF,EAAW,cAAX,EAAhB;;AAEA;AACA,oBAAI,OAAJ,EAAa;AACT,2BAAK,QAAL,CAAc,eAAd;AACH;;AAED;AACA;AACA,oBAAI,cAAJ,EAAoB;AAChB,2BAAK,UAAL,GAAkB,EAAE,MAAM,UAA1B;AACA,yBAAK,IAAI,KAAT,IAAkB,OAAK,MAAvB,EAA+B;AAC3B,+BAAK,MAAL,CAAY,KAAZ,EAAmB,aAAnB,CAAiC,OAAK,UAAtC;AACH;AACJ;;AAED;AACA,uBAAK,kBAAL,CAAwB,EAAE,gCAAF,EAAxB;AACA,uBAAK,qBAAL,CAA2B,OAA3B;AACA,uBAAK,SAAL;;AAEA;AACA,uBAAK,YAAL,CAAkB,mBAAlB;AACA,uBAAK,YAAL,CAAkB,WAAlB,CAA8B,gBAAQ;AAClC,wBAAI,CAAC,OAAD,IAAY,QAAQ,OAAR,CAAgB,KAAK,MAAL,CAAY,IAA5B,IAAoC,CAAC,CAArD,EAAwD;AACpD,+BAAK,YAAL,CAAkB,SAAlB,CAA4B,IAA5B,EAAkC,EAAE,gBAAF,EAAlC;AACH;AACJ,iBAJD;AAKA,uBAAK,YAAL,CAAkB,kBAAlB,GA9CoC,CA8CI;AACxC,uBAAK,YAAL,CAAkB,eAAlB,GA/CoC,CA+CI;AAC3C,aAhDM,EAgDJ,IAhDI,CAgDC,YAAM;AACV;AACA,oBAAI,OAAJ,EAAa;AACT,2BAAK,WAAL,CAAiB,eAAjB;AACH;AACJ,aArDM,CAAP;AAsDH;;AAED;AACA;;;;+CACuB;AACnB,kCAAW,cAAX;;AAEA,gBAAI,KAAK,QAAT,EAAmB;AACf,mCAAI,MAAJ;AACA,oBAAI,KAAK,QAAL,CAAc,OAAlB,EAA2B;AACvB,wBAAI,KAAK,kBAAL,IAA2B,IAA/B,EAAqC;AACjC,6BAAK,kBAAL,GAA2B,CAAC,IAAI,IAAJ,EAAF,GAAgB,KAAK,UAA/C;AACA,2CAAI,OAAJ,kCAA2C,KAAK,kBAAhD;AACH;AACD,yBAAK,QAAL,CAAc,OAAd,CAAsB,IAAtB;AACH;;AAED;AACA,oBAAI,SAAS,KAAK,QAAL,CAAc,MAA3B;AACA,qBAAK,QAAL,GAAgB,IAAhB;AACA,oBAAI,MAAJ,EAAY;AACR,uCAAI,OAAJ;AACA,yBAAK,OAAL,CAAa,OAAO,OAApB,EAA6B,IAA7B,CAAkC,OAAO,OAAzC,EAAkD,OAAO,MAAzD;AACH;AACJ;AACJ;;AAED;;;;;;;oCAI+D;AAAA;;AAAA,gBAArD,aAAqD,uEAArC,IAAqC;;AAAA,4FAAJ,EAAI;AAAA,gBAA7B,SAA6B,SAA7B,SAA6B;AAAA,gBAAlB,SAAkB,SAAlB,SAAkB;;AAC3D,iBAAK,aAAL,GAAqB,iBAAiB,KAAK,aAA3C;AACA,iBAAK,sBAAL,GAA8B,EAA9B;;AAEA,gBAAI,OAAO,KAAK,aAAZ,KAA8B,QAAlC,EAA4C;AACxC,qBAAK,SAAL,GAAiB,KAAK,UAAL,CAAgB,aAAa,KAAK,aAAlC,CAAjB;AACH,aAFD,MAGK;AACD,qBAAK,SAAL,GAAiB,KAAK,UAAL,CAAgB,SAAhB,CAAjB;AACH;;AAED;AACA;AACA,iBAAK,WAAL,GAAmB,KAAK,SAAxB;;AAEA,mBAAO,uBAAY,SAAZ,CAAsB,KAAK,aAA3B,EAA0C,EAAE,MAAM,KAAK,SAAb,EAAwB,MAAM,SAA9B,EAA1C,EAAqF,IAArF,CAA0F,kBAAsB;AAAA,oBAApB,MAAoB,UAApB,MAAoB;AAAA,oBAAZ,MAAY,UAAZ,MAAY;;AACnH,wBAAK,MAAL,GAAc,MAAd;AACA,wBAAK,aAAL,GAAqB,MAArB;AACA,uBAAO,QAAK,MAAZ;AACH,aAJM,CAAP;AAKH;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;sCACe,I,EAAM,M,EAAQ;AACzB,gBAAI,CAAC,IAAD,IAAS,CAAC,MAAV,IAAoB,CAAC,OAAO,IAA5B,IAAqC,CAAC,OAAO,GAAR,IAAe,CAAC,OAAO,IAAhE,EAAuE;AACnE,mCAAI,OAAJ,EAAa,yCAAb,EAAwD,IAAxD,EAA8D,MAA9D;AACA;AACH;;AAED,gBAAI,OAAQ,KAAK,MAAL,CAAY,OAAZ,CAAoB,IAApB,KAA6B,IAAzC;AACA,gBAAI,SAAS,KAAK,MAAL,CAAY,OAAZ,CAAoB,IAApB,IAA4B,OAAO,MAAP,CAAc,EAAd,EAAkB,MAAlB,CAAzC;;AAEA;AACA,gBAAI,OAAO,IAAP,IAAe,QAAO,OAAO,IAAd,MAAuB,QAA1C,EAAoD;AAChD,uBAAO,GAAP,GAAa,KAAK,eAAL,CAAqB,IAAI,IAAJ,CAAS,CAAC,KAAK,SAAL,CAAe,OAAO,IAAtB,CAAD,CAAT,CAArB,CAAb;AACA,uBAAO,OAAO,IAAd;AACH;;AAED,gBAAI,IAAJ,EAAU;AACN,uBAAO,KAAK,YAAL,CAAkB,EAAE,SAAS,EAAE,SAAS,CAAC,IAAD,CAAX,EAAX,EAAlB,CAAP;AACH,aAFD,MAEO;AACH,uBAAO,KAAK,OAAL,CAAa,EAAE,SAAS,CAAC,IAAD,CAAX,EAAb,CAAP;AACH;AACJ;;;4CAEmB;AAAA;;AAChB,gBAAI,QAAQ,EAAZ,CADgB,CACA;AAChB,gBAAI,oBAAoB,OAAO,IAAP,CAAY,KAAK,OAAjB,CAAxB;AACA,gBAAI,YAAY,CAAhB;;AAEA,iBAAK,IAAI,IAAT,IAAiB,KAAK,MAAL,CAAY,OAA7B,EAAsC;AAClC,oBAAI,SAAS,KAAK,MAAL,CAAY,OAAZ,CAAoB,IAApB,CAAb;AACA,oBAAI,cAAc,KAAK,OAAL,CAAa,IAAb,CAAlB;;AAEA,oBAAI;AACA,wBAAI,SAAS,OAAO,MAAP,CAAc,EAAd,EAAkB,MAAlB,EAA0B,EAAE,UAAF,EAAQ,IAAI,WAAZ,EAA1B,CAAb;AACA,yBAAK,OAAL,CAAa,IAAb,IAAqB,sBAAW,MAAX,CAAkB,MAAlB,EAA0B,KAAK,OAA/B,CAArB;AACA,wBAAI,CAAC,KAAK,OAAL,CAAa,IAAb,CAAL,EAAyB;AACrB,8BAAM,EAAN;AACH;AACJ,iBAND,CAOA,OAAM,CAAN,EAAS;AACL,2BAAO,KAAK,OAAL,CAAa,IAAb,CAAP;AACA,wBAAI,6CAA2C,EAAE,OAAjD;AACA,uCAAI,MAAJ,cAAsB,OAAtB,EAAiC,MAAjC;AACA,yBAAK,OAAL,CAAa,SAAb,EAAwB,EAAE,MAAM,SAAR,EAAmB,cAAnB,EAA2B,gBAA3B,EAAxB;AACH;;AAED;AACA,oBAAI,sBAAW,OAAX,CAAmB,KAAK,OAAL,CAAa,IAAb,CAAnB,EAAuC,WAAvC,CAAJ,EAAyD;AACrD,0BAAM,IAAN,CAAW,IAAX;AACH;AACJ;;AAED;AACA,8BAAkB,OAAlB,CAA0B,aAAK;AAC3B,oBAAI,CAAC,QAAK,MAAL,CAAY,OAAZ,CAAoB,CAApB,CAAL,EAA6B;AACzB,2BAAO,QAAK,OAAL,CAAa,CAAb,CAAP,CADyB,CACD;AACxB,0BAAM,IAAN,CAAW,CAAX;AACH;AACJ,aALD;;AAOA;AACA,gBAAI,MAAM,MAAN,GAAe,CAAnB,EAAsB;AAClB,qBAAK,YAAL,CAAkB,WAAlB,CAA8B,gBAAQ;AAClC,2BAAQ,MAAM,OAAN,CAAc,KAAK,MAAL,CAAY,IAA1B,IAAkC,CAAC,CAA3C;AACH,iBAFD;AAGH;;AAED;AACA;AACA,iBAAK,IAAI,EAAT,IAAe,KAAK,MAAL,CAAY,MAA3B,EAAmC;AAC/B,oBAAI,QAAQ,KAAK,MAAL,CAAY,MAAZ,CAAmB,EAAnB,CAAZ;AACA,oBAAI,MAAM,OAAN,KAAkB,KAAlB,IAA2B,MAAM,IAAjC,IAAyC,KAAK,OAAL,CAAa,MAAM,IAAN,CAAW,MAAxB,CAA7C,EAA8E;AAC1E,yBAAK,OAAL,CAAa,MAAM,IAAN,CAAW,MAAxB,EAAgC,qBAAhC,GAAwD,IAAxD;AACH;AACJ;AACJ;;AAED;;;;uCACe;AAAA;;AACX,mBAAO,kBAAQ,gBAAR,CAAyB,KAAK,EAA9B,EAAkC,KAAK,MAAL,CAAY,QAA9C,EACH,IADG,CACE;AAAA,uBAAM,kBAAQ,aAAR,CAAsB,QAAK,EAA3B,CAAN;AAAA,aADF,CAAP,CADW,CAEqC;AACnD;;AAED;;;;uCACe;AACX,gBAAI,CAAC,KAAK,WAAN,IAAqB,CAAC,KAAK,YAA/B,EAA6C;AACzC,sBAAM,IAAI,KAAJ,CAAU,0DAAV,CAAN;AACH;;AAED;AACA,iBAAK,MAAL,GAAc,KAAK,aAAL,CAAmB,KAAnB,CAAyB,KAAK,MAAL,CAAY,MAArC,CAAd;AACA,iBAAK,aAAL,CAAmB,UAAnB,CAA8B,IAA9B;;AAEA;AACA,iBAAK,IAAI,KAAT,IAAkB,KAAK,MAAvB,EAA+B;AAC3B,qBAAK,MAAL,CAAY,KAAZ,EAAmB,KAAnB,CAAyB,KAAK,EAA9B;AACH;;AAED,iBAAK,KAAL,GAAa,IAAb;AACH;;AAED;;;;;;AAQA;0CACkB;AACd,mBAAO,KAAK,IAAL,CAAU,eAAV,EAAP;AACH;;AAED;;;;wCACgB,I,EAAM;AAClB,mBAAO,KAAK,IAAL,CAAU,eAAV,CAA0B,IAA1B,CAAP;AACH;;AAED;;;;uCACe;AACX,iBAAK,MAAL,GAAc,EAAd;AACA,iBAAK,IAAI,CAAT,IAAc,KAAK,MAAL,CAAY,MAA1B,EAAkC;AAC9B,oBAAI,CAAC,KAAK,MAAL,CAAY,MAAZ,CAAmB,CAAnB,CAAD,IAA0B,QAAO,KAAK,MAAL,CAAY,MAAZ,CAAmB,CAAnB,CAAP,MAAiC,QAA/D,EAAyE;AACrE;AACH;AACD,oBAAI,QAAQ,KAAK,MAAL,CAAY,MAAZ,CAAmB,CAAnB,CAAZ;AACA,sBAAM,IAAN,GAAa,EAAE,OAAF,CAAU,GAAV,EAAe,GAAf,CAAb,CAL8B,CAKI;AAClC,sBAAM,OAAN,GAAiB,MAAM,OAAN,KAAkB,KAAnB,GAA4B,KAA5B,GAAoC,IAApD;AACA,oBAAI,MAAM,OAAV,EAAmB;AACf,yBAAK,MAAL,CAAY,MAAM,IAAlB,IAA0B,gBAAM,MAAN,CAAa,KAAK,IAAlB,EAAwB,KAAxB,CAA1B;AACH;AACJ;AACD,4BAAM,MAAN,CAAa,KAAK,MAAlB;AACH;;AAED;;;;wCACgB;AAAA;;AACZ,gBAAI,KAAK,KAAK,MAAL,CAAY,KAAZ,CAAkB,UAA3B;AACA,iBAAK,UAAL,GAAkB,EAAlB;AACA,gBAAI,MAAM,GAAG,KAAb,EAAoB;AAChB,qBAAK,UAAL,CAAgB,KAAhB,GAAwB,0BAAY,UAAZ,CAAuB,GAAG,KAA1B,CAAxB;AACH;AACD,gBAAI,CAAC,KAAK,UAAL,CAAgB,KAArB,EAA4B;AACxB,qBAAK,UAAL,CAAgB,KAAhB,GAAwB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAxB,CADwB,CACc;AACzC;;AAED;AACA,gBAAI,KAAK,UAAL,CAAgB,KAAhB,CAAsB,CAAtB,MAA6B,CAAjC,EAAoC;AAChC,qBAAK,MAAL,CAAY,KAAZ,CAAkB,eAAlB,aACY,KAAK,UAAL,CAAgB,KAAhB,CAAsB,GAAtB,CAA0B;AAAA,2BAAK,KAAK,KAAL,CAAW,IAAI,GAAf,CAAL;AAAA,iBAA1B,EAAoD,IAApD,CAAyD,IAAzD,CADZ;AAEH,aAHD,MAIK;AACD,qBAAK,MAAL,CAAY,KAAZ,CAAkB,eAAlB,GAAoC,aAApC;AACH;;AAED,wBAAK,EAAL,EAAQ,UAAR,+BAAsB,KAAK,UAAL,CAAgB,KAAtC;AACH;;AAED;;;;yCACkB,G,EAAK;AAAA;;AACnB,iBAAK,aAAL,GAAqB,OAAO,KAA5B;AACA,iBAAK,QAAL;AACA,mBAAO,KAAK,YAAL,CAAkB,EAAE,WAAW,KAAb,EAAlB,EAAwC,IAAxC,CAA6C;AAAA,uBAAM,QAAK,QAAL,EAAN;AAAA,aAA7C,CAAP;AACH;;AAED;AACA;;;;uCAC8G;AAAA,6FAAJ,EAAI;AAAA,2CAA/F,UAA+F;AAAA,gBAA/F,UAA+F,qCAAlF,KAAkF;AAAA,wCAA3E,OAA2E;AAAA,gBAA3E,OAA2E,kCAAjE,IAAiE;AAAA,gBAA3D,eAA2D,UAA3D,eAA2D;AAAA,0CAA1C,SAA0C;AAAA,gBAA1C,SAA0C,oCAA9B,IAA8B;AAAA,wCAAxB,OAAwB;AAAA,gBAAxB,OAAwB,kCAAd,KAAc;;AAC1G,iBAAK,UAAL,GAAkB,EAAE,MAAM,UAA1B;AACA,iBAAK,QAAL;;AAEA,iBAAK,MAAL,GAAc,uBAAY,qBAAZ,CAAkC,KAAK,MAAvC,EAA+C,KAAK,sBAApD,CAAd;AACA,gBAAI,SAAJ,EAAe;AACX,uCAAY,SAAZ,CAAsB,KAAK,MAA3B,EAAmC,KAAK,aAAxC;AACH;AACD,iBAAK,OAAL,CAAa,aAAa,MAAb,GAAsB,QAAnC,EAA6C,EAAE,QAAQ,KAAK,MAAf,EAA7C;;AAEA,mCAAY,aAAZ,CAA0B,KAAK,MAA/B,EAV0G,CAUlE;AACxC,iBAAK,aAAL,CAAmB,IAAnB;AACA,iBAAK,IAAL,CAAU,KAAV;AACA,iBAAK,YAAL;AACA,iBAAK,iBAAL;AACA,iBAAK,YAAL;AACA,iBAAK,aAAL;AACA,mCAAY,SAAZ,CAAsB,KAAK,MAAL,CAAY,KAAlC;;AAEA;AACA,iBAAK,YAAL;;AAEA;AACA,gBAAI,OAAO,UACP,KAAK,OAAL,CAAa,OAAO,MAAP,CAAc,EAAE,gBAAgB,KAAlB,EAAyB,gCAAzB,EAA0C,gBAA1C,EAAd,EAAmE,QAAO,OAAP,yCAAO,OAAP,OAAmB,QAAnB,IAA+B,OAAlG,CAAb,CADO,GAEP,KAAK,kBAAL,CAAwB,EAAE,gCAAF,EAAxB,CAFJ,CAvB0G,CAyBxD;;AAElD;AACA,iBAAK,QAAL;AACA,iBAAK,IAAL,CAAU,YAAV;AACA,iBAAK,aAAL;;AAEA,mBAAO,IAAP;AACH;;AAED;;;;6CACoD;AAAA,6FAAJ,EAAI;AAAA,+CAA/B,eAA+B;AAAA,gBAA/B,eAA+B,yCAAb,IAAa;;AAChD;AACA,gBAAI,oBACA,kBAAkB,gBAAM,sBAAN,CAA6B,KAAK,MAAlC,CAAlB,GAA8D,KAAK,SAAL,CAAe,KAAK,MAApB,CADlE;AAEA,mBAAO,wBAAa,WAAb,CAAyB,KAAK,OAA9B,EAAuC,mBAAvC,EAA4D;AAC/D,wBAAQ,iBADuD;AAE/D,4BAAY,KAAK,UAF8C;AAG/D,+BAAe,KAAK;AAH2C,aAA5D,2BAAP;AAKH;;AAED;;;;0CACmB;AAAA;;AACf,iBAAK,SAAL,GAAiB,EAAjB;;AAEA,iBAAK,SAAL,CAAe,IAAf,GAAsB;AAClB,sBAAM;AAAA,2BAAM,QAAK,OAAL,CAAa,MAAb,CAAN;AAAA;AADY,aAAtB;AAGA,iBAAK,IAAL,CAAU,SAAV,CAAoB,KAAK,SAAL,CAAe,IAAnC;;AAEA,iBAAK,SAAL,CAAe,OAAf,GAAyB;AACrB,wBAAQ;AAAA,2BAAM,QAAK,KAAL,GAAa,IAAnB;AAAA,iBADa;AAErB,yBAAS,iBAAC,IAAD;AAAA,2BAAU,QAAK,OAAL,CAAa,SAAb,EAAwB,OAAO,MAAP,CAAc,EAAE,MAAM,UAAR,EAAd,EAAoC,IAApC,CAAxB,CAAV;AAAA;AAFY,aAAzB;AAIA,8BAAQ,SAAR,CAAkB,KAAK,SAAL,CAAe,OAAjC;;AAEA,iBAAK,SAAL,CAAe,YAAf,GAA8B;AAC1B,uBAAO,eAAC,IAAD;AAAA,2BAAU,QAAK,OAAL,CAAa,OAAb,EAAsB,OAAO,MAAP,CAAc,EAAE,MAAM,OAAR,EAAd,EAAiC,IAAjC,CAAtB,CAAV;AAAA;AADmB,aAA9B;AAGA,mCAAY,SAAZ,CAAsB,KAAK,SAAL,CAAe,YAArC;AACH;;;2CAEmB;AAChB,iBAAK,cAAL;AACA,iBAAK,IAAL,CAAU,WAAV,CAAsB,KAAK,SAAL,CAAe,IAArC;AACA,8BAAQ,WAAR,CAAoB,KAAK,SAAL,CAAe,OAAnC;AACA,mCAAY,WAAZ,CAAwB,KAAK,SAAL,CAAe,YAAvC;AACA,iBAAK,SAAL,GAAiB,IAAjB;AACH;;;gDAEqC;AAAA;;AAAA,gBAAhB,OAAgB,uEAAN,IAAM;;AAClC,gBAAI,CAAC,KAAK,SAAV,EAAqB;AACjB,qBAAK,SAAL,GAAiB,wBAAqB,KAAK,EAA1B,EAA8B,KAAK,OAAnC,EAA4C;AAAA,2BAAM,QAAK,QAAX;AAAA,iBAA5C,CAAjB;AACH,aAFD,MAGK,IAAI,KAAK,OAAT,EAAkB;AACnB,wCAAa,WAAb,CAAyB,KAAK,OAA9B,EAAuC,4BAAvC,EAAqE,OAArE;AACH;AACJ;;AAED;;;;qDAC6B;AAAA;;AACzB,gBAAI,KAAK,sBAAT,EAAiC;AAC7B,uBAAO,QAAQ,OAAR,EAAP,CAD6B,CACH;AAC7B;AACD,iBAAK,sBAAL,GAA8B,IAA9B;;AAEA,mBAAO,wBAAa,WAAb,CAAyB,KAAK,OAA9B,EAAuC,iCAAvC,EACF,IADE,CACG,iBAAS;AACX,wBAAK,sBAAL,GAA8B,KAA9B;AACA,uBAAO,MAAM,MAAN,CAAa,UAAC,CAAD,EAAI,CAAJ;AAAA,2BAAU,IAAI,CAAd;AAAA,iBAAb,CAAP;AACH,aAJE,CAAP;AAKH;;AAED;;;;oCACY;AACR,iBAAK,UAAL,GAAkB,CAAC,IAAI,IAAJ,EAAnB;AACH;;AAED;;;;6CACsB;AAClB,gBAAI,CAAC,KAAK,oBAAL,IAA6B,KAAK,UAAL,KAAoB,KAAK,wBAAvD,KACA,CAAC,KAAK,YAAL,CAAkB,qBAAlB,EADL,EACgD;AAC5C,qBAAK,wBAAL,GAAgC,KAAK,UAArC;AACA,qBAAK,OAAL,CAAa,eAAb;AACH;AACJ;;;4CAEoB;AACjB,iBAAK,wBAAL,GAAgC,IAAhC;AACH;;AAED;AACA;AACA;;;;qCAC2C;AAAA,6FAAJ,EAAI;AAAA,2CAA7B,UAA6B;AAAA,gBAA7B,UAA6B,qCAAhB,OAAgB;;AACvC,iBAAK,aAAL;AACA,mBAAO,KAAK,aAAL,CAAmB,UAAnB,CAA8B,EAAC,sBAAD,EAA9B,CAAP;AACH;;;4CAEoB;AACjB,iBAAK,aAAL;AACA,mBAAO,KAAK,aAAL,CAAmB,iBAAnB,EAAP;AACH;;;2CAEmB;AAChB,mBAAO,KAAK,aAAL,CAAmB,gBAAnB,EAAP;AACH;;AAGD;;AAEA;;;;iCACS,I,EAAM;AACX,oBAAQ,OAAR,mBAAgC,IAAhC;AACA,oCAAa,WAAb,CAAyB,KAAK,OAA9B,EAAuC,cAAvC,EAAuD,IAAvD;AACH;;;oCAEW,I,EAAM;AACd,oBAAQ,UAAR,mBAAmC,IAAnC;AACA,oCAAa,WAAb,CAAyB,KAAK,OAA9B,EAAuC,iBAAvC,EAA0D,IAA1D;AACH;;AAED;;;;qCACc;AACV,gBAAI,QAAQ,IAAZ;AACA,iBAAK,KAAL,GAAa;AACT;AACA,2BAFS,yBAE2B;AAAA,wBAAvB,GAAuB,uEAAjB,CAAiB;AAAA,wBAAd,OAAc,uEAAJ,EAAI;;AAChC,wBAAI,QAAQ,EAAZ;AACA,wBAAI,QAAQ,SAAR,KAAQ,GAAM;AACd,4BAAI,QAAQ,CAAC,IAAI,IAAJ,EAAb;AACA,8BAAM,OAAN,CAAc,OAAd,EAAuB,IAAvB,CAA4B,YAAM;AAC9B,kCAAM,IAAN,CAAW,CAAC,IAAI,IAAJ,EAAD,GAAc,KAAzB;;AAEA,gCAAI,MAAM,MAAN,GAAe,GAAnB,EAAwB;AACpB;AACH,6BAFD,MAGK;AACD,oCAAI,MAAM,CAAC,EAAE,MAAM,MAAN,CAAa,UAAC,CAAD,EAAI,CAAJ;AAAA,2CAAU,IAAI,CAAd;AAAA,iCAAb,IAAgC,MAAM,MAAxC,CAAX;AACA,mDAAI,MAAJ,wBAAgC,GAAhC,gBAA8C,GAA9C,cAA0D,KAAK,GAAL,aAAY,KAAZ,CAA1D,cAAqF,KAAK,GAAL,aAAY,KAAZ,CAArF;AACH;AACJ,yBAVD;AAWH,qBAbD;AAcA;AACH,iBAnBQ;;;AAqBT;AACA,oCAtBS,kCAsBe;AACpB,wBAAI,SAAS,EAAb;AACA,0BAAM,YAAN,CAAmB,kBAAnB,GAAwC,OAAxC,CAAgD,gBAAQ;AAAA,qDAC3C,KAD2C;AAEhD,mCAAO,KAAP,IAAgB,OAAO,KAAP,KAAiB,CAAjC;AACA,iCAAK,MAAL,CAAY,KAAZ,EAAmB,OAAnB,CAA2B,gBAAQ;AAC/B,uCAAO,KAAP,KAAiB,KAAK,cAAtB;AACH,6BAFD;AAHgD;;AACpD,6BAAK,IAAI,KAAT,IAAkB,KAAK,MAAvB,EAA+B;AAAA,mCAAtB,KAAsB;AAK9B;AACJ,qBAPD;AAQA,2BAAO,MAAP;AACH,iBAjCQ;AAmCT,wCAnCS,sCAmCmB;AACxB,wBAAI,eAAe,MAAM,KAAN,CAAY,oBAAZ,EAAnB;AACA,wBAAI,SAAS,EAAb;AACA,yBAAK,IAAI,KAAT,IAAkB,YAAlB,EAAgC;AAC5B,4BAAI,OAAO,MAAM,MAAN,CAAa,KAAb,EAAoB,SAApB,EAAX;AACA,+BAAO,IAAP,IAAe,OAAO,IAAP,KAAgB,CAA/B;AACA,+BAAO,IAAP,KAAgB,aAAa,KAAb,CAAhB;AACH;AACD,2BAAO,MAAP;AACH,iBA5CQ;AA8CT,mCA9CS,iCA8Cc;AACnB,wBAAI,QAAQ,EAAZ;AACA,0BAAM,YAAN,CAAmB,kBAAnB,GAAwC,OAAxC,CAAgD,gBAAQ;AAAA,qDAC3C,KAD2C;AAEhD,kCAAM,KAAN,IAAe,MAAM,KAAN,KAAgB,CAA/B;AACA,iCAAK,MAAL,CAAY,KAAZ,EAAmB,OAAnB,CAA2B,gBAAQ;AAC/B,sCAAM,KAAN,KAAgB,KAAK,WAArB;AACH,6BAFD;AAHgD;;AACpD,6BAAK,IAAI,KAAT,IAAkB,KAAK,MAAvB,EAA+B;AAAA,mCAAtB,KAAsB;AAK9B;AACJ,qBAPD;AAQA,2BAAO,KAAP;AACH,iBAzDQ;AA2DT,uCA3DS,qCA2DkB;AACvB,wBAAI,cAAc,MAAM,KAAN,CAAY,mBAAZ,EAAlB;AACA,wBAAI,QAAQ,EAAZ;AACA,yBAAK,IAAI,KAAT,IAAkB,WAAlB,EAA+B;AAC3B,4BAAI,OAAO,MAAM,MAAN,CAAa,KAAb,EAAoB,SAApB,EAAX;AACA,8BAAM,IAAN,IAAc,MAAM,IAAN,KAAe,CAA7B;AACA,8BAAM,IAAN,KAAe,YAAY,KAAZ,CAAf;AACH;AACD,2BAAO,KAAP;AACH,iBApEQ;AAsET,0BAtES,wBAsEK;AACV,wBAAI,yBAAc,WAAlB,EAA+B;AAC3B,+BAAO,eAAK,kBAAL,CAAwB,MAAM,YAAN,CAAmB,kBAAnB,EAAxB,CAAP;AACH,qBAFD,MAGK;AACD,2CAAI,MAAJ;AACA,+BAAO,EAAP;AACH;AACJ,iBA9EQ;AAgFT,oCAhFS,kCAgFe;AACpB,2BAAO,MAAM,YAAN,CAAmB,kBAAnB,GAAwC,MAA/C;AACH;AAlFQ,aAAb;AAoFH;;;4BA7Se;AAAA;;AACZ;AACA,mBAAQ,KAAK,MAAL,CAAY,KAAZ,CAAkB,QAAlB,KAA+B,SAA/B,GACA,KAAK,MAAL,CAAY,KAAZ,CAAkB,QADlB,GAEA,KAAK,YAAL,CAAkB,eAAlB,GAAoC,IAApC,CAAyC;AAAA,uBAAK,QAAK,MAAL,CAAY,CAAZ,EAAe,QAApB;AAAA,aAAzC,CAFR;AAGH;;;+BAp5Bc,M,EAAsB;AAAA,gBAAd,OAAc,uEAAJ,EAAI;;AACjC,mBAAO,IAAI,KAAJ,CAAU,MAAV,EAAkB,OAAlB,CAAP;AACH;;;;;;kBA5EgB,K;;;AA0wCrB,MAAM,EAAN,GAAW,CAAX,C,CAAsB;AACtB,MAAM,UAAN,GAAmB,CAAnB,C,CAAsB;;;;;;;;;;;;;;QCtmCN,iB,GAAA,iB;QASA,Q,GAAA,Q;;AA1MhB;;;;AACA;;IAAY,I;;AAEZ;;;;AACA;;;;;;;;;;;;;;IAEa,W,WAAA,W;AAET,yBAAY,GAAZ,EAAiB,IAAjB,EAAsC;AAAA,YAAf,MAAe,uEAAN,IAAM;;AAAA;;AAClC,aAAK,GAAL,GAAW,GAAX;;AAEA;AACA;AACA,YAAI,SAAS,CAAC,KAAK,aAAL,CAAmB,IAAnB,CAAD,IAA6B,KAAK,aAAL,CAAmB,KAAK,GAAxB,CAAtC,CAAJ,EAAyE;AACrE,iBAAK,IAAL,GAAY,IAAZ;AACH,SAFD,MAGK;AACD,iBAAK,IAAL,GAAY,KAAK,UAAL,CAAgB,KAAK,GAArB,CAAZ;AACH;;AAED,aAAK,eAAL,GAAuB,QAAQ,KAAK,IAApC,CAZkC,CAYQ;AAC1C,aAAK,MAAL,GAAc,MAAd;;AAEA;AACA;AACA;AACA,aAAK,SAAL,GAAiB,IAAjB;AACA,YAAI,KAAK,MAAT,EAAiB;AACb,gBAAI,KAAK,MAAL,CAAY,SAAhB,EAA2B;AACvB,qBAAK,SAAL,GAAiB,KAAK,MAAL,CAAY,SAA7B;AACH,aAFD,MAGK,IAAI,KAAK,MAAL,CAAY,WAAZ,EAAJ,EAA+B;AAChC,qBAAK,SAAL,GAAiB,KAAK,MAAtB;AACH;AACJ;AACJ;;;;+BAEM;AACH,mBAAO,aAAa,KAAK,GAAlB,CAAP;AACH;;AAED;AACA;AACA;AACA;;;;oCACY,G,EAAK;AACb,mBAAO;AACH,qBAAK,KAAK,MAAL,CAAY,GAAZ,CADF;AAEH,sBAAM,KAAK,OAAL,CAAa,GAAb,CAFH;AAGH,sBAAM,KAAK,OAAL,CAAa,GAAb;AAHH,aAAP;AAKH;;;+BAEM,G,EAAK;AACR,gBAAI,SAAS,GAAT,CAAJ,EAAmB;AACf,uBAAO,GAAP;AACH;;AAED,gBAAI,KAAK,aAAL,CAAmB,GAAnB,KAA2B,KAAK,SAApC,EAA+C;AAC3C,uBAAO,KAAK,MAAL,CAAY,MAAZ,CAAmB,KAAK,eAAL,GAAuB,GAA1C,CAAP;AACH;AACD,mBAAO,KAAK,UAAL,CAAgB,GAAhB,EAAqB,KAAK,IAA1B,CAAP;AACH;;;gCAEO,G,EAAK;AACT,mBAAO,KAAK,UAAL,CAAgB,GAAhB,CAAP;AACH;;;gCAEO,G,EAAK;AACT,mBAAO,KAAK,eAAL,CAAqB,GAArB,CAAP;AACH;;;sCAEa;AACV,mBAAO,KAAP;AACH;;;;;;IAIQ,c,WAAA,c;;;AAET,4BAAY,GAAZ,EAAiB,IAAjB,EAAuB,MAAvB,EAA+B;AAAA;;AAAA,oIACrB,GADqB,EAChB,IADgB,EACV,MADU;;AAE3B,cAAK,GAAL,GAAW,IAAX;AACA,cAAK,KAAL,GAAa,EAAb;AACA,cAAK,IAAL,GAAY,IAAZ;AACA,cAAK,IAAL,GAAY,EAAZ;AAL2B;AAM9B;;;;sCAEa;AACV,mBAAO,IAAP;AACH;;;+BAEM;AAAA;;AACH,iBAAK,GAAL,GAAW,qBAAX;;AAEA,gBAAI,OAAO,KAAK,GAAZ,KAAoB,QAAxB,EAAkC;AAC9B,uBAAO,gBAAM,EAAN,CAAS,KAAK,GAAd,EAAmB,KAAnB,EAA0B,aAA1B,EACF,IADE,CACG;AAAA,2BAAQ,OAAK,GAAL,CAAS,SAAT,CAAmB,IAAnB,CAAR;AAAA,iBADH,EAEF,IAFE,CAEG;AAAA,2BAAM,OAAK,aAAL,EAAN;AAAA,iBAFH,EAGF,IAHE,CAGG;AAAA,2BAAM,OAAK,QAAL,EAAN;AAAA,iBAHH,EAIF,KAJE,CAII;AAAA,2BAAK,QAAQ,MAAR,CAAe,CAAf,CAAL;AAAA,iBAJJ,CAAP;AAKH,aAND,MAMO;AACH,uBAAO,QAAQ,OAAR,CAAgB,IAAhB,CAAP;AACH;AACJ;;;+BAEM,G,EAAK;AACR,gBAAI,SAAS,GAAT,CAAJ,EAAmB;AACf,uBAAO,GAAP;AACH;;AAED,gBAAI,KAAK,aAAL,CAAmB,GAAnB,CAAJ,EAA6B;AACzB,uBAAO,KAAK,aAAL,CAAmB,KAAK,kBAAL,CAAwB,GAAxB,CAAnB,CAAP;AACH;AACD,0IAAoB,GAApB;AACH;;;gCAEO,G,EAAK;AACT,gBAAI,KAAK,aAAL,CAAmB,GAAnB,CAAJ,EAA6B;AACzB,uBAAO,KAAK,cAAL,CAAoB,GAApB,CAAP;AACH;AACD,2IAAqB,GAArB;AACH;;;mCAEU;AAAA;;AACP,mBAAO,KAAK,QAAL,GACF,IADE,CACG;AAAA,uBAAM,aAAa,OAAK,aAAL,CAAmB,OAAK,IAAxB,CAAb,CAAN;AAAA,aADH,CAAP;AAEH;;;mCAEU;AAAA;;AACP;AACA,gBAAM,QAAQ,OAAO,IAAP,CAAY,KAAK,KAAjB,EACT,MADS,CACF;AAAA,uBAAQ,OAAK,KAAL,CAAW,IAAX,EAAiB,KAAjB,KAA2B,CAAnC;AAAA,aADE,EAET,MAFS,CAEF;AAAA,uBAAQ,KAAK,eAAL,CAAqB,IAArB,MAA+B,MAAvC;AAAA,aAFE,CAAd;;AAIA,gBAAI,MAAM,MAAN,KAAiB,CAArB,EAAwB;AACpB,qBAAK,IAAL,GAAY,MAAM,CAAN,CAAZ;AACH;;AAED;AACA,gBAAI,CAAC,KAAK,IAAV,EAAgB;AACZ,oBAAI,kDAA+C,KAAK,GAApD,SAAJ;AACA;AACA,oBAAI,MAAM,MAAN,GAAe,CAAnB,EAAsB;AAClB,6EAAuD,MAAM,GAAN,CAAU;AAAA,+BAAK,OAAO,CAAP,GAAW,IAAhB;AAAA,qBAAV,EAAiC,IAAjC,CAAsC,IAAtC,CAAvD;AACH,iBAFD,MAGK;AACD;AACH;AACD,uBAAO,QAAQ,MAAR,CAAe,MAAM,GAAN,CAAf,CAAP;AACH;AACD,mBAAO,QAAQ,OAAR,EAAP;AACH;;;wCAEe;AAAA;;AACZ,gBAAI,QAAQ,EAAZ;AACA,gBAAI,QAAQ,EAAZ;AACA,iBAAK,GAAL,CAAS,OAAT,CAAiB,UAAC,IAAD,EAAO,IAAP,EAAgB;AAC7B,oBAAI,CAAC,KAAK,GAAV,EAAe;AACX,0BAAM,IAAN,CAAW,IAAX;AACA,0BAAM,IAAN,CAAW,KAAK,KAAL,CAAW,aAAX,CAAX;AACH;AACJ,aALD;;AAOA,mBAAO,QAAQ,GAAR,CAAY,KAAZ,EAAmB,IAAnB,CAAwB,gBAAQ;AACnC,qBAAK,IAAI,IAAE,CAAX,EAAc,IAAI,KAAK,MAAvB,EAA+B,GAA/B,EAAoC;AAChC,wBAAI,OAAO,MAAM,CAAN,CAAX;AACA,wBAAI,QAAQ,KAAK,KAAL,CAAW,GAAX,EAAgB,MAAhB,GAAyB,CAArC;AACA,2BAAK,KAAL,CAAW,IAAX,IAAmB;AACf,8BAAM,KAAK,CAAL,CADS;AAEf,8BAAM,KAAK,eAAL,CAAqB,IAArB,CAFS;AAGf;AAHe,qBAAnB;AAKH;AACJ,aAVM,CAAP;AAWH;;;sCAEa,I,EAAM;AAChB,gBAAI,KAAK,KAAL,CAAW,IAAX,CAAJ,EAAsB;AAClB,oBAAI,CAAC,KAAK,KAAL,CAAW,IAAX,EAAiB,GAAtB,EAA2B;AACvB,yBAAK,KAAL,CAAW,IAAX,EAAiB,GAAjB,GAAuB,KAAK,eAAL,CAAqB,IAAI,IAAJ,CAAS,CAAC,KAAK,KAAL,CAAW,IAAX,EAAiB,IAAlB,CAAT,CAArB,CAAvB;AACH;;AAED,uBAAO,KAAK,KAAL,CAAW,IAAX,EAAiB,GAAxB;AACH;AACJ;;;uCAEc,I,EAAM;AACjB,mBAAO,KAAK,KAAL,CAAW,IAAX,KAAoB,KAAK,KAAL,CAAW,IAAX,EAAiB,IAA5C;AACH;;;;EA/G+B,W;;AAmH7B,SAAS,iBAAT,CAA2B,GAA3B,EAAgC,IAAhC,EAAsC,MAAtC,EAA2D;AAAA,QAAb,IAAa,uEAAN,IAAM;;AAC9D,QAAK,QAAQ,IAAR,IAAgB,SAAS,KAA1B,IACC,OAAO,GAAP,KAAe,QAAf,IAA2B,CAAC,KAAK,UAAL,CAAgB,GAAhB,CAA5B,IAAoD,KAAK,eAAL,CAAqB,GAArB,MAA8B,KADvF,EAC+F;AAC3F,eAAO,IAAI,cAAJ,CAAmB,GAAnB,EAAwB,IAAxB,EAA8B,MAA9B,CAAP;AACH;AACD,WAAO,IAAI,WAAJ,CAAgB,GAAhB,EAAqB,IAArB,EAA2B,MAA3B,CAAP;AACH;;AAED;AACO,SAAS,QAAT,CAAmB,GAAnB,EAAwB;AAC3B,QAAI,OAAO,IAAI,KAAJ,CAAU,CAAV,EAAa,CAAb,MAAoB,SAA/B,EAA0C;AACtC,eAAO,IAAP;AACH;AACD,WAAO,KAAP;AACH;;AAED,SAAS,aAAT,CAAwB,IAAxB,EAA8B;AAC1B,QAAI,IAAJ;AACA,QAAI;AACA;AACA;AACA;AACA;AACA,eAAO,iBAAK,QAAL,CAAc,IAAd,EAAoB,EAAE,MAAM,IAAR,EAApB,CAAP;AACH,KAND,CAME,OAAO,CAAP,EAAU;AACR,cAAM,CAAN;AACH;AACD,WAAO,IAAP;AACH;;AAED,SAAS,YAAT,CAAuB,MAAvB,EAA+B;AAC3B,WAAO,IAAI,OAAJ,CAAY,UAAC,OAAD,EAAU,MAAV,EAAqB;AACpC,YAAI,OAAO,MAAP,KAAkB,QAAtB,EAAgC;AAC5B,4BAAM,EAAN,CAAS,MAAT,EAAiB,IAAjB,CAAsB,UAAC,IAAD,EAAU;AAC5B,oBAAI;AACA,wBAAI,OAAO,cAAc,IAAd,CAAX;AACA,4BAAQ,IAAR;AACH,iBAHD,CAIA,OAAM,CAAN,EAAS;AACL,2BAAO,CAAP;AACH;AACJ,aARD,EAQG,MARH;AASH,SAVD,MAUO;AACH;AACA;AACA,qBAAS,OAAO,MAAP,CAAc,EAAd,EAAkB,MAAlB,CAAT;AACA,oBAAQ,MAAR;AACH;AACJ,KAjBM,CAAP;AAkBH;;;;;;;;;;;AClPD;;;;AACA;;;;AACA;;IAAY,I;;AACZ;;;;AACA;;;;AACA;;;;;;;;AAEA,IAAI,WAAJ;;kBAEe,cAAc;;AAEzB;AACA,aAHyB,qBAGf,GAHe,EAGW;AAAA;;AAAA,uFAAJ,EAAI;AAAA,YAAnB,IAAmB,QAAnB,IAAmB;AAAA,YAAb,IAAa,QAAb,IAAa;;AAChC,YAAI,SAAS,EAAb;AACA,eAAO,KAAK,kBAAL,CAAwB,EAAE,QAAF,EAAO,UAAP,EAAa,UAAb,EAAxB,EAA6C,IAA7C,EAAmD,MAAnD,EACH,IADG,CACE;AAAA,mBAAU,MAAK,QAAL,CAAc,MAAd,CAAV;AAAA,SADF,EAEH,IAFG,CAEE,iBAAwB;AAAA,gBAArB,MAAqB,SAArB,MAAqB;AAAA,gBAAb,MAAa,SAAb,MAAa;;AACzB,gBAAI,CAAC,MAAL,EAAa;AACT;AACA,uBAAO,QAAQ,MAAR,CAAe,OAAO,CAAP,CAAf,CAAP;AACH,aAHD,MAIK,IAAI,OAAO,MAAP,GAAgB,CAApB,EAAuB;AACxB;AACA,uBAAO,OAAP,CAAe,iBAAS;AACpB,wBAAI,uCAAqC,MAAM,GAA/C;AACA,uCAAI,OAAJ,EAAa,OAAb,EAAsB,KAAtB;AACA,0BAAK,OAAL,CAAa,OAAb,EAAsB,EAAE,MAAM,cAAR,EAAwB,gBAAxB,EAAiC,YAAjC,EAAwC,KAAK,MAAM,GAAnD,EAAtB;AACH,iBAJD;AAKH;AACD,mBAAO,EAAE,cAAF,EAAU,cAAV,EAAP;AACH,SAhBE,CAAP;AAiBH,KAtBwB;;;AAwBzB;AACA;AACA;AACA;AACA,sBA5ByB,qCA4Be,MA5Bf,EA4BoC;AAAA,YAAxC,GAAwC,SAAxC,GAAwC;AAAA,YAAnC,IAAmC,SAAnC,IAAmC;AAAA,YAA7B,IAA6B,SAA7B,IAA6B;;AAAA;;AAAA,YAAb,MAAa,uEAAJ,EAAI;;AACzD,YAAI,CAAC,GAAL,EAAU;AACN,mBAAO,QAAQ,OAAR,CAAgB,EAAhB,CAAP;AACH;;AAED,YAAI,SAAS,qCAAkB,GAAlB,EAAuB,IAAvB,EAA6B,MAA7B,EAAqC,IAArC,CAAb;;AAEA,eAAO,OAAO,IAAP,GAAc,IAAd,CAAmB,kBAAU;AAChC,gBAAI,OAAO,MAAP,IAAiB,IAArB,EAA2B;AACvB,uBAAO,OAAK,SAAL,CAAe,MAAf,EAAuB,MAAvB,CAAP;AACH;;AAED;AACA,gBAAI,CAAC,MAAM,OAAN,CAAc,OAAO,MAArB,CAAL,EAAmC;AAC/B,uBAAO,MAAP,GAAgB,CAAC,OAAO,MAAR,CAAhB,CAD+B,CACE;AACpC;;AAED;AACA,gBAAI,UAAU,EAAd;AACA,mBAAO,MAAP,CAAc,OAAd,CAAsB,eAAO;AACzB;AACA,oBAAI,QAAO,GAAP,yCAAO,GAAP,OAAe,QAAnB,EAA6B;AACzB,0BAAM,KAAK,eAAL,CAAqB,IAAI,IAAJ,CAAS,CAAC,KAAK,SAAL,CAAe,GAAf,CAAD,CAAT,CAArB,CAAN;AACH;;AAED,wBAAQ,IAAR,CAAa,OAAO,WAAP,CAAmB,GAAnB,CAAb;AACH,aAPD;AAQA,mBAAO,OAAO,MAAd,CApBgC,CAoBV;;AAEtB,mBAAO,QACH,GADG,CACC,QAAQ,GAAR,CAAY;AAAA,uBAAY,OAAK,kBAAL,CAAwB,QAAxB,EAAkC,MAAlC,EAA0C,MAA1C,CAAZ;AAAA,aAAZ,CADD,EAEC,IAFD,CAEM,mBAAW;AACZ,oBAAI,UAAU,QAAQ,GAAR,CAAY;AAAA,2BAAK,EAAE,MAAP;AAAA,iBAAZ,CAAd;AACA,yBAAS,kCAAa,EAAb,4BAAoB,OAApB,IAA6B,MAA7B,GAAT;AACA,uBAAO,OAAK,SAAL,CAAe,MAAf,EAAuB,MAAvB,CAAP;AACH,aANF,CAAP;AAOH,SA7BM,EA6BJ,KA7BI,CA6BE,iBAAS;AACd;AACA,kBAAM,GAAN,GAAY,GAAZ;AACA,mBAAO,IAAP,CAAY,KAAZ;AACA,mBAAO,EAAP;AACH,SAlCM,CAAP;AAmCH,KAtEwB;;;AAwEzB;AACA,aAzEyB,qBAyEf,MAzEe,EAyEP,MAzEO,EAyEC;AACtB,aAAK,oBAAL,CAA0B,MAA1B,EAAkC,MAAlC;AACA,aAAK,cAAL,CAAoB,MAApB,EAA4B,MAA5B;AACA,aAAK,iBAAL,CAAuB,MAAvB,EAA+B,MAA/B;AACA,eAAO,EAAE,cAAF,EAAU,cAAV,EAAP;AACH,KA9EwB;;;AAgFzB;AACA,wBAjFyB,gCAiFJ,MAjFI,EAiFI,MAjFJ,EAiFY;AACjC,eAAO,OAAP,GAAiB,OAAO,OAAP,IAAkB,EAAnC;;AAEA,aAAK,IAAI,EAAT,IAAe,OAAO,OAAtB,EAA+B;AAC3B,iBAAK,mBAAL,CAAyB,OAAO,OAAP,CAAe,EAAf,CAAzB,EAA6C,MAA7C;AACH;;AAED,eAAO,MAAP;AACH,KAzFwB;AA2FzB,uBA3FyB,+BA2FL,MA3FK,EA2FG,MA3FH,EA2FW;AAChC,eAAO,GAAP,GAAa,OAAO,MAAP,CAAc,OAAO,GAArB,CAAb;;AAEA,YAAI,MAAM,OAAN,CAAc,OAAO,OAArB,CAAJ,EAAmC;AAC/B,mBAAO,OAAP,GAAiB,OAAO,OAAP,CAAe,GAAf,CAAmB;AAAA,uBAAO,OAAO,MAAP,CAAc,GAAd,CAAP;AAAA,aAAnB,CAAjB;AACH;;AAED,eAAO,MAAP;AACH,KAnGwB;;;AAqGzB;AACA,kBAtGyB,0BAsGV,MAtGU,EAsGF,MAtGE,EAsGM;AAC3B,eAAO,KAAP,GAAe,OAAO,KAAP,IAAgB,EAA/B;;AAEA,aAAK,IAAI,MAAT,IAAmB,OAAO,KAA1B,EAAiC;AAC7B,gBAAI,MAAM,OAAN,CAAc,OAAO,KAAP,CAAa,MAAb,CAAd,CAAJ,EAAyC;AACrC,uBAAO,KAAP,CAAa,MAAb,EAAqB,OAArB,CAA6B,gBAAQ;AACjC,yBAAK,GAAL,GAAW,KAAK,GAAL,IAAY,OAAO,MAAP,CAAc,KAAK,GAAnB,CAAvB;AACH,iBAFD;AAGH,aAJD,MAKK;AACD,oBAAI,OAAO,OAAO,KAAP,CAAa,MAAb,CAAX;AACA,qBAAK,GAAL,GAAW,KAAK,GAAL,IAAY,OAAO,MAAP,CAAc,KAAK,GAAnB,CAAvB;AACH;AACJ;;AAED,eAAO,MAAP;AACH,KAtHwB;;;AAwHzB;AACA,qBAzHyB,6BAyHP,MAzHO,EAyHC,MAzHD,EAyHS;AAC9B,eAAO,QAAP,GAAkB,OAAO,QAAP,IAAmB,EAArC;;AAEA;AACA;AACA;AACA,YAAI,OAAO,QAAX,EAAqB;AACjB,iBAAK,IAAI,EAAT,IAAe,OAAO,QAAtB,EAAgC;AAC5B,oBAAI,UAAU,OAAO,QAAP,CAAgB,EAAhB,CAAd;AACA,oBAAI,QAAQ,GAAZ,EAAiB;AACb,4BAAQ,GAAR,GAAc,OAAO,MAAP,CAAc,QAAQ,GAAtB,CAAd;AACH;AACJ;AACJ;;AAED;AACA,YAAI,OAAO,MAAX,EAAmB;AAAA,uCACN,EADM;AAEX,oBAAI,QAAQ,OAAO,MAAP,CAAc,EAAd,CAAZ;;AAEA;AACA,oBAAI,MAAM,MAAM,OAAhB;AACA,oBAAI,OAAO,GAAP,KAAe,QAAf,IAA2B,CAAC,OAAO,QAAP,CAAgB,GAAhB,CAA5B,IAAoD,CAAC,4BAAS,GAAT,CAAzD,EAAwE;AACpE,0BAAM,OAAN,GAAgB,OAAO,MAAP,CAAc,GAAd,CAAhB;AACH;;AAED;AACA,oBAAI,MAAM,QAAV,EAAoB;AAChB,qBAAC,UAAD,EAAa,SAAb,EAAwB,SAAxB,EAAmC,UAAnC,EAA+C,QAA/C,EAAyD,OAAzD,CAAiE,gBAAQ;AACrE;AACA,4BAAI,MAAM,MAAM,QAAN,CAAe,IAAf,KAAwB,IAAxB,IAAgC,MAAM,QAAN,CAAe,IAAf,EAAqB,OAA/D;AACA,4BAAI,OAAO,GAAP,KAAe,QAAf,IAA2B,CAAC,OAAO,QAAP,CAAgB,GAAhB,CAA5B,IAAoD,CAAC,4BAAS,GAAT,CAAzD,EAAwE;AACpE,kCAAM,QAAN,CAAe,IAAf,EAAqB,OAArB,GAA+B,OAAO,MAAP,CAAc,GAAd,CAA/B;AACH;AACJ,qBAND;AAOH;;AAED;AACA,oBAAI,MAAM,OAAN,IAAiB,MAAM,OAAN,CAAc,QAAnC,EAA6C;AACzC,mCAAK,aAAL,CAAmB,MAAM,OAAN,CAAc,QAAjC,EAA2C,OAA3C,CAAmD,iBAAkC;AAAA,4BAAhC,IAAgC,SAAhC,IAAgC;AAAA,4BAA1B,KAA0B,SAA1B,KAA0B;AAAA,4BAAnB,GAAmB,SAAnB,GAAmB;AAAA,4BAAd,QAAc,SAAd,QAAc;;AACjF;AACA,4BAAI,SAAS,WAAT,IAAwB,OAAO,KAAP,KAAiB,QAAzC,IAAqD,CAAC,OAAO,QAAP,CAAgB,KAAhB,CAAtD,IAAgF,CAAC,4BAAS,KAAT,CAArF,EAAsG;AAClG,qCAAS,GAAT,IAAgB,OAAO,MAAP,CAAc,KAAd,CAAhB;AACH;AACJ,qBALD;AAMH;AA7BU;;AACf,iBAAK,IAAI,EAAT,IAAe,OAAO,MAAtB,EAA8B;AAAA,sBAArB,EAAqB;AA6B7B;AACJ;;AAED,eAAO,MAAP;AACH,KA3KwB;;;AA6KzB;AACA;AACA;AACA,yBAhLyB,iCAgLH,MAhLG,EAgLK,OAhLL,EAgLc;AACnC,YAAI,CAAC,OAAO,MAAR,IAAkB,OAAO,IAAP,CAAY,OAAO,MAAnB,EAA2B,MAA3B,KAAsC,CAA5D,EAA+D;AAC3D,mBAAO,MAAP,CAD2D,CAC5C;AAClB;;AAED;AACA,YAAM,YAAY,GAAlB;AACA,YAAM,QAAQ,kBAAkB,OAAO,MAAzB,EAAiC,SAAjC,CAAd;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAQ,OAAR,CAAgB,iBAA2B;AAAA,gBAAxB,IAAwB,SAAxB,IAAwB;AAAA,gBAAlB,MAAkB,SAAlB,MAAkB;AAAA,gBAAV,GAAU,SAAV,GAAU;;AACvC,gBAAI,MAAJ,EAAY;AACR,uBAAO,GAAP,IAAc,MAAM,IAAN,CAAd;AACA;AACH;AACJ,SALD;;AAOA;AACA;AACA;AACA;AACA,iBAAS,gBAAT,CAA2B,GAA3B,EAAgC,KAAhC,EAAmD;AAAA,gBAAZ,KAAY,uEAAJ,EAAI;;AAC/C,gBAAI,MAAM,OAAN,CAAc,GAAd,IAAqB,CAAC,CAA1B,EAA6B;AACzB,mCAAI,EAAE,OAAO,MAAT,EAAiB,MAAM,IAAvB,EAAJ,oDAAqF,KAArF;AACA;AACH;AACD,kBAAM,IAAN,CAAW,GAAX;;AAEA,gBAAM,OAAQ,IAAI,KAAJ,CAAU,CAAV,EAAa,CAAb,MAAoB,SAArB,IAAoC,IAAI,KAAJ,CAAU,CAAV,EAAa,OAAb,CAAqB,KAArB,EAA4B,SAA5B,CAAjD;AACA,gBAAI,QAAQ,MAAM,IAAN,MAAgB,SAA5B,EAAuC;AACnC,oBAAI,OAAO,MAAM,IAAN,CAAP,KAAuB,QAAvB,IAAmC,MAAM,IAAN,EAAY,KAAZ,CAAkB,CAAlB,EAAqB,CAArB,MAA4B,SAAnE,EAA8E;AAC1E,2BAAO,iBAAiB,MAAM,IAAN,CAAjB,EAA8B,KAA9B,EAAqC,KAArC,CAAP;AACH;AACD,uBAAO,IAAP;AACH;AACJ;;AAED;AACA,iBAAS,YAAT,CAAuB,GAAvB,EAA4B,MAA5B,EAAoC,GAApC,EAAyC;AACrC;AACA,gBAAI,OAAO,GAAP,KAAe,QAAnB,EAA6B;AACzB,oBAAM,OAAO,iBAAiB,GAAjB,EAAsB,KAAtB,CAAb;AACA,oBAAM,MAAM,MAAM,IAAN,CAAZ;AACA,oBAAI,QAAQ,SAAZ,EAAuB;AACnB;AACA,4BAAQ,IAAR,CAAa,EAAE,UAAF,EAAQ,cAAR,EAAgB,QAAhB,EAAb;;AAEA;AACA,0BAAM,GAAN;AACH;AACJ;AACD;AAXA,iBAYK,IAAI,MAAM,OAAN,CAAc,GAAd,CAAJ,EAAwB;AACzB,yBAAK,IAAI,IAAE,CAAX,EAAc,IAAI,IAAI,MAAtB,EAA8B,GAA9B,EAAmC;AAC/B,4BAAI,CAAJ,IAAS,aAAa,IAAI,CAAJ,CAAb,EAAqB,GAArB,EAA0B,CAA1B,CAAT;AACH;AACJ,iBAJI,MAKA,IAAI,QAAO,GAAP,yCAAO,GAAP,OAAe,QAAnB,EAA6B;AAC9B,yBAAK,IAAI,EAAT,IAAc,GAAd,EAAmB;AACf,4BAAI,EAAJ,IAAS,aAAa,IAAI,EAAJ,CAAb,EAAqB,GAArB,EAA0B,EAA1B,CAAT;AACH;AACJ;AACD,mBAAO,GAAP;AACH;;AAED,eAAO,aAAa,MAAb,CAAP;AACH,KAtPwB;;;AAwPzB;AACA;AACA;AACA;AACA;AACA,iBA7PyB,yBA6PV,MA7PU,EA6PF;AACnB,YAAI,OAAO,MAAX,EAAmB;AAAA,yCACN,EADM;AAEX,oBAAI,QAAQ,OAAO,MAAP,CAAc,EAAd,CAAZ;;AAEA;AACA,oBAAI,MAAM,MAAM,OAAhB;AACA,oBAAI,OAAO,GAAP,KAAe,QAAf,IAA2B,CAAC,OAAO,QAAP,CAAgB,GAAhB,CAAhC,EAAsD;AAClD,wBAAI,MAAM,GAAV;AACA,wBAAI,OAAO,4BAAS,GAAT,iBAA2B,GAA3B,GAAmC,GAA9C;AACA,2BAAO,QAAP,CAAgB,IAAhB,IAAwB,EAAE,QAAF,EAAxB;AACA,0BAAM,OAAN,GAAgB,IAAhB;AACH;;AAED;AACA,oBAAI,MAAM,QAAV,EAAoB;AAChB,qBAAC,UAAD,EAAa,SAAb,EAAwB,SAAxB,EAAmC,UAAnC,EAA+C,QAA/C,EAAyD,OAAzD,CAAiE,gBAAQ;AACrE;AACA,4BAAI,MAAM,MAAM,QAAN,CAAe,IAAf,KAAwB,IAAxB,IAAgC,MAAM,QAAN,CAAe,IAAf,EAAqB,OAA/D;AACA,4BAAI,OAAO,GAAP,KAAe,QAAf,IAA2B,CAAC,OAAO,QAAP,CAAgB,GAAhB,CAAhC,EAAsD;AAClD,gCAAI,OAAM,GAAV;AACA,gCAAI,QAAO,4BAAS,IAAT,iBAA2B,IAA3B,GAAmC,IAA9C;AACA,mCAAO,QAAP,CAAgB,KAAhB,IAAwB,EAAE,SAAF,EAAxB;AACA,kCAAM,QAAN,CAAe,IAAf,EAAqB,OAArB,GAA+B,KAA/B;AACH;AACJ,qBATD;AAUH;;AAED;AACA,oBAAI,MAAM,OAAN,IAAiB,MAAM,OAAN,CAAc,QAAnC,EAA6C;AACzC,mCAAK,aAAL,CAAmB,MAAM,OAAN,CAAc,QAAjC,EAA2C,OAA3C,CAAmD,iBAAkC;AAAA,4BAAhC,IAAgC,SAAhC,IAAgC;AAAA,4BAA1B,KAA0B,SAA1B,KAA0B;AAAA,4BAAnB,GAAmB,SAAnB,GAAmB;AAAA,4BAAd,QAAc,SAAd,QAAc;;AACjF;AACA,4BAAI,SAAS,WAAT,IAAwB,OAAO,KAAP,KAAiB,QAAzC,IAAqD,CAAC,OAAO,QAAP,CAAgB,KAAhB,CAA1D,EAAkF;AAC9E,gCAAI,QAAM,KAAV;AACA,gCAAI,SAAO,4BAAS,KAAT,iBAA2B,KAA3B,GAAmC,KAA9C;AACA,mCAAO,QAAP,CAAgB,MAAhB,IAAwB,EAAE,UAAF,EAAxB;AACA,qCAAS,GAAT,IAAgB,MAAhB;AACH;AACJ,qBARD;AASH;AAtCU;;AACf,iBAAK,IAAI,EAAT,IAAe,OAAO,MAAtB,EAA8B;AAAA,uBAArB,EAAqB;AAsC7B;AACJ;AACJ,KAvSwB;;;AAySzB;AACA,YA1SyB,2BA0SI;AAAA,YAAlB,MAAkB,SAAlB,MAAkB;AAAA,YAAV,MAAU,SAAV,MAAU;;AACzB,YAAI,CAAC,MAAL,EAAa;AACT,mBAAO,EAAP;AACH;;AAED;AACA,eAAO,KAAP,GAAe,OAAO,KAAP,IAAgB,EAA/B;AACA,eAAO,OAAP,GAAiB,OAAO,OAAP,IAAkB,EAAnC;AACA,eAAO,MAAP,GAAgB,OAAO,MAAP,IAAiB,EAAjC;AACA,eAAO,MAAP,GAAgB,OAAO,MAAP,IAAiB,EAAjC;AACA,eAAO,MAAP,GAAgB,OAAO,MAAP,IAAiB,EAAjC;;AAEA;AACA,YAAI,OAAO,MAAX,EAAmB;AACf,mBAAO,OAAP,CAAe,OAAf,GAAyB,OAAO,MAAhC;AACH;;AAED;AACA,YAAI,OAAO,IAAP,CAAY,OAAO,OAAnB,EAA4B,MAA5B,KAAuC,CAA3C,EAA8C;AAC1C,mBAAO,OAAP,CAAe,OAAf,GAAyB,EAAzB;AACH;;AAED;AACA,YAAI,OAAO,IAAP,CAAY,OAAO,MAAnB,EAA2B,MAA3B,KAAsC,CAAtC,IACA,OAAO,IAAP,CAAY,OAAO,MAAnB,EAA2B,KAA3B,CAAiC;AAAA,mBAAK,OAAO,MAAP,CAAc,CAAd,EAAiB,OAAjB,KAA6B,KAAlC;AAAA,SAAjC,CADJ,EAC+E;AAC3E,mBAAO,MAAP,CAAc,aAAd,GAA8B;AAC1B,sBAAM;AADoB,aAA9B;AAGH;;AAED,eAAO,EAAE,cAAF,EAAU,cAAV,EAAP;AACH;AAzUwB,C;;AA6U7B;AACA;;AACA,SAAS,iBAAT,CAA4B,GAA5B,EAA6E;AAAA,QAA5C,SAA4C,uEAAhC,GAAgC;AAAA,QAA3B,MAA2B,uEAAlB,IAAkB;AAAA,QAAZ,KAAY,uEAAJ,EAAI;;AACzE,aAAS,SAAU,SAAS,SAAnB,GAAgC,EAAzC;;AAEA,SAAK,IAAI,CAAT,IAAc,GAAd,EAAmB;AACf,YAAI,MAAM,SAAS,CAAnB;AACA,YAAI,MAAM,IAAI,CAAJ,CAAV;AACA,cAAM,GAAN,IAAa,GAAb;;AAEA,YAAI,QAAO,GAAP,yCAAO,GAAP,OAAe,QAAf,IAA2B,CAAC,MAAM,OAAN,CAAc,GAAd,CAAhC,EAAoD;AAChD,8BAAkB,GAAlB,EAAuB,SAAvB,EAAkC,GAAlC,EAAuC,KAAvC;AACH;AACJ;AACD,WAAO,KAAP;AACH;;AAED,yBAAe,WAAf;;;;;;;;;;ACtWA;;;;AACA;;;;AACA;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;AACA;;AACA;;AACA;;AACA;;;;AACA;;;;;;oMAfA;AAKkD;;;AAY3C,IAAI,oCAAc,IAAlB;;AAEP;AACA,IAAI,iBAAO,SAAX,EAAsB;;AAEtB,WAAO,MAAP,CAAc,IAAd,EAAoB;;AAEhB,6CAFgB;;AAIhB,iBAAS,EAJO;AAKhB,gBAAQ,EALQ;AAMhB,gBAAQ,EANQ;AAOhB,eAAO,EAPS;;AAShB;AACA,YAVgB,gBAUV,QAVU,EAUA,SAVA,EAUW,WAVX,EAUwB,SAVxB,EAUmC,kBAVnC,EAUuD,sBAVvD,EAU+E;AAC3F,iBAAK,QAAL,GAAgB,QAAhB;AACA,iBAAK,UAAL,GAAkB,SAAlB;AACA,iBAAK,WAAL,GAAmB,WAAnB;AACA,0BAAI,QAAJ,CAAa,SAAb;AACA,4BAAM,kBAAN,GAA2B,kBAA3B;AACA,sCAAe,mBAAf,CAAmC,sBAAnC;AACA,gCAAiB,SAAjB,CAA2B,KAAK,UAAhC;AACA,iBAAK,aAAL,GAAqB,iCAArB;AACA,mBAAO,SAAP;AACH,SApBe;;;AAsBhB;AACA,oBAvBgB,8BAuBqC,KAvBrC,EAuB4C;AAAA,gBAA5C,MAA4C,QAA5C,MAA4C;AAAA,gBAApC,UAAoC,QAApC,UAAoC;AAAA,gBAAxB,aAAwB,QAAxB,aAAwB;;AACxD,qBAAS,KAAK,KAAL,CAAW,MAAX,CAAT;AACA,oDAAmB,KAAnB;;AAEA,iBAAK,UAAL,GAAkB,UAAlB;AACA,iBAAK,aAAL,GAAqB,aAArB;;AAEA;AACA;AACA,iBAAK,IAAI,KAAT,IAAkB,OAAO,MAAzB,EAAiC;AAC7B,oBAAI,OAAO,MAAP,CAAc,KAAd,CAAJ,EAA0B;AACtB,2BAAO,MAAP,CAAc,KAAd,EAAqB,IAArB,GAA4B,gBAAM,kBAAN,CAAyB,OAAO,MAAP,CAAc,KAAd,EAAqB,IAA9C,CAA5B;AACH;AACJ;;AAED;AACA,iBAAK,MAAL,GAAc,gBAAM,kBAAN,CAAyB,OAAO,MAAhC,CAAd;;AAEA;AACA,iBAAK,iBAAL,CAAuB,MAAvB;;AAEA;AACA,mBAAO,MAAP,GAAgB,gBAAM,kBAAN,CAAyB,OAAO,MAAhC,EAAwC,0BAAY,YAApD,CAAhB;AACA,iBAAK,MAAL,GAAc,KAAK,aAAL,CAAmB,KAAnB,CAAyB,OAAO,MAAhC,CAAd;AACA,iBAAK,aAAL,CAAmB,UAAnB,CAA8B;AAC1B,4BAAY,KAAK,UADS;AAE1B,wBAAQ,KAAK,MAFa;AAG1B,yBAAS,KAAK,OAHY;AAI1B,+BAAe,KAAK;AAJM,aAA9B;;AAOA;AACA,iBAAK,MAAL,GAAc,wBAAY,OAAO,MAAnB,EAA2B,KAAK,aAAL,CAAmB,MAA9C,CAAd;;AAEA;AACA,iBAAK,gBAAL,GAAwB,KAAK,YAAL,CAAkB,OAAO,QAAzB,CAAxB;;AAEA;AACA,iBAAK,WAAL,GAAmB,KAAK,gBAAL,CAAsB,IAAtB,CAA2B,YAAM;AAChD,mCAAI,OAAJ;AACH,aAFkB,CAAnB;AAGH,SAhEe;;;AAkEhB;AACA,yBAnEgB,6BAmEG,MAnEH,EAmEW;AACvB;AACA,iBAAK,mBAAL,GAA2B,KAAK,cAAL,IAAuB,EAAlD;AACA,iBAAK,cAAL,GAAsB,OAAO,OAA7B;AACA,gBAAI,eAAe,KAAK,OAAxB;AACA,gBAAI,UAAU,KAAd;;AAEA;AACA,mBAAO,OAAP,GAAiB,gBAAM,kBAAN,CAAyB,OAAO,OAAhC,CAAjB;AACA,iBAAK,OAAL,GAAe,EAAf,CATuB,CASJ;AACnB,iBAAK,IAAI,IAAT,IAAiB,OAAO,OAAxB,EAAiC;AAC7B,oBAAI,KAAK,SAAL,CAAe,KAAK,mBAAL,CAAyB,IAAzB,CAAf,MAAmD,KAAK,SAAL,CAAe,OAAO,OAAP,CAAe,IAAf,CAAf,CAAvD,EAA6F;AACzF,yBAAK,OAAL,CAAa,IAAb,IAAqB,aAAa,IAAb,CAArB;AACA;AACH;;AAED,oBAAI,eAAJ;AACA,oBAAI;AACA,6BAAS,sBAAW,MAAX,CAAkB,OAAO,MAAP,CAAc,EAAd,EAAkB,OAAO,OAAP,CAAe,IAAf,CAAlB,EAAwC,EAAC,UAAD,EAAxC,CAAlB,EAAmE,KAAK,OAAxE,CAAT;AACH,iBAFD,CAGA,OAAM,CAAN,EAAS;AACL;AACH;;AAED,oBAAI,CAAC,MAAL,EAAa;AACT;AACH;AACD,qBAAK,OAAL,CAAa,IAAb,IAAqB,MAArB;AACA,0BAAU,IAAV;AACH;;AAED;AACA,gBAAI,OAAJ,EAAa;AACT,qBAAK,KAAL,GAAa,EAAb;AACH;AACJ,SAtGe;;;AAwGhB;AACA,0BAzGgB,gCAyGM;AAClB,mBAAO,KAAK,WAAZ;AACH,SA3Ge;;;AA6GhB;AACA,iBA9GgB,4BA8GK;AAAA,gBAAR,IAAQ,SAAR,IAAQ;;AACjB;AACA,gBAAI,KAAK,OAAL,CAAa,KAAK,GAAlB,KAA0B,IAA9B,EAAoC;AAChC;AACA,oBAAI,KAAK,OAAL,CAAa,KAAK,GAAlB,EAAuB,OAAvB,KAAmC,IAAvC,EAA6C;AACzC;AACH;AACJ;;AAED;AACA,mBAAO,KAAK,KAAL,CAAW,KAAK,GAAhB,IAAuB,OAAO,MAAP,CAAc,KAAK,OAAL,CAAa,KAAK,GAAlB,KAA0B,EAAxC,EAA4C,IAA5C,CAA9B;;AAEA;AACA,mBAAO,KAAK,kBAAL,GAA0B,IAA1B,CAA+B,YAAM;AACxC;AACA,oBAAI,KAAK,MAAL,KAAgB,IAApB,EAA0B;;AAEtB,yBAAK,OAAL,GAAe,IAAf;AACA,yBAAK,MAAL,GAAc,KAAd;AACA,yBAAK,KAAL,GAAa,IAAb;;AAEA,yBAAK,kBAAL,CAAwB,IAAxB,EAA8B,IAA9B,CAAmC,YAAM;AACrC,4BAAI,CAAC,KAAK,OAAL,CAAa,KAAK,GAAlB,CAAL,EAA6B;AACzB,+CAAI,OAAJ,wEAAiF,KAAK,GAAtF;AACA;AACH;;AAED;AACA,4BAAI,KAAK,WAAL,CAAiB,KAArB,EAA4B;AACxB,+CAAI,MAAJ,8BAAsC,KAAK,GAA3C,UAAmD,KAAK,WAAL,CAAiB,KAApE;AACH;;AAED,6BAAK,OAAL,GAAe,KAAf;AACA,6BAAK,MAAL,GAAc,IAAd;AACA,uCAAK,aAAL,CAAmB,IAAnB,EAAyB,IAAzB;AACH,qBAdD,EAcG,KAdH,CAcS,UAAC,KAAD,EAAW;AAChB,6BAAK,OAAL,GAAe,KAAf;AACA,6BAAK,MAAL,GAAc,KAAd;AACA,6BAAK,KAAL,GAAa,MAAM,KAAnB;AACA,2CAAI,OAAJ,2BAAoC,KAAK,GAAzC,UAAiD,KAAK,KAAtD;;AAEA;AACA,gDAAa,WAAb,kBAAwC,KAAK,QAA7C,sBAAwE,eAAK,KAAL,CAAW,IAAX,CAAxE;AACH,qBAtBD;AAuBH;AACD;AA9BA,qBA+BK;AACD,2CAAI,OAAJ,kCAA2C,KAAK,GAAhD;;AAEA;AACA,4BAAI;AACA,2CAAK,aAAL,CAAmB,IAAnB,EAAyB,IAAzB;AACH,yBAFD,CAGA,OAAM,KAAN,EAAa;AACT;AACA,iCAAK,KAAL,GAAa,MAAM,QAAN,EAAb;AACA,oDAAa,WAAb,kBAAwC,KAAK,QAA7C,sBAAwE,eAAK,KAAL,CAAW,IAAX,CAAxE;AACH;AACJ;AACJ,aA9CM,CAAP;AA+CH,SA1Ke;;;AA4KhB;AACA,0BA7KgB,8BA6KI,IA7KJ,EA6KU;AACtB,gBAAI,KAAK,OAAL,CAAa,KAAK,MAAlB,CAAJ,EAA+B;AAC3B,uBAAO,KAAK,OAAL,CAAa,KAAK,MAAlB,EAA0B,IAA1B,CAA+B,IAA/B,CAAP;AACH,aAFD,MAGK;AACD,qBAAK,WAAL,GAAmB,EAAnB;AACA,uBAAO,QAAQ,OAAR,CAAgB,IAAhB,CAAP;AACH;AACJ,SArLe;AAuLhB,eAvLgB,mBAuLR,GAvLQ,EAuLH;AACT,mBAAO,KAAK,KAAL,CAAW,GAAX,CAAP;AACH,SAzLe;;;AA2LhB;AACA,kBA5LgB,sBA4LJ,GA5LI,EA4LC;AACb,gBAAI,OAAO,KAAK,KAAL,CAAW,GAAX,CAAX;;AAEA,gBAAI,QAAQ,IAAZ,EAAkB;AACd;AACA,oBAAI,KAAK,OAAL,KAAiB,IAArB,EAA2B;AACvB,uCAAI,OAAJ,4BAAqC,GAArC;AACA,yBAAK,OAAL,GAAe,KAAf;AACA,mCAAK,MAAL,CAAY,IAAZ;AACH;;AAED;AACA,oCAAiB,SAAjB,CAA2B,GAA3B;AACA,uBAAO,KAAK,KAAL,CAAW,GAAX,CAAP;AACA,mCAAI,OAAJ,kCAA2C,GAA3C;AACH;AACJ,SA5Me;;;AA8MhB;AACA,qBA/MgB,gCA+MyC;AAAA,gBAAxC,MAAwC,SAAxC,MAAwC;AAAA,gBAAhC,OAAgC,SAAhC,OAAgC;AAAA,gBAAvB,QAAuB,SAAvB,QAAuB;AAAA,gBAAb,SAAa,SAAb,SAAa;;AACrD,gBAAI,WAAW,EAAf;AACA,gBAAI,QAAQ,UAAU,GAAV,CAAc;AAAA,uBAAK,KAAK,KAAL,CAAW,CAAX,CAAL;AAAA,aAAd,EAAkC,MAAlC,CAAyC;AAAA,uBAAK,CAAL;AAAA,aAAzC,CAAZ;;AAEA;AACA,gBAAI,UAAU,IAAd,EAAoB;AAChB,yBAAS,CAAC,GAAD,EAAM,GAAN,EAAW,OAAX,CAAmB,OAAO,CAAP,CAAnB,IAAgC,CAAC,CAAjC,GAAqC,KAAK,KAAL,CAAW,MAAX,CAArC,GAA0D,MAAnE,CADgB,CAC2D;AAC3E,yBAAS,gBAAM,kBAAN,CAAyB,MAAzB,EAAiC,0BAAY,YAA7C,CAAT;AACH;AACD,qBAAS,yBAAY,MAAZ,uBAAT;;AAEA,kBAAM,OAAN,CAAc,gBAAQ;AAAA,2CACT,KADS;AAEd,wBAAI,OAAO,KAAK,WAAL,CAAiB,MAAjB,CAAwB,KAAxB,CAAX;AACA,yBAAK,QAAL,CAAc,OAAd,CAAsB,mBAAW;AAC7B;AACA,4BAAK,YAAY,IAAZ,IAAoB,QAAQ,UAAR,KAAuB,KAAK,UAAjD,IACC,YAAY,KAAZ,IAAqB,QAAQ,UAAR,KAAuB,KAAK,UADtD,EACmE;AAC/D;AACH;;AAED;AACA,4BAAI,UAAU,0BAAY,sBAAZ,CAAmC,OAAnC,EAA4C,IAA5C,EAAkD,KAAK,MAAvD,CAAd;AACA,gCAAQ,MAAR,GAAiB,KAAK,MAAtB,CAT6B,CASE;AAC/B,gCAAQ,KAAR,GAAgB,KAAhB,CAV6B,CAUE;;AAE/B,4BAAI,CAAC,OAAO,OAAP,CAAL,EAAsB;AACnB;AACF;;AAED;AACA,4BAAI,SAAS;AACT,kCAAM,QAAQ,IADL;AAET,wCAAY,QAAQ;AAFX,yBAAb;;AAKA;AACA,4BAAI,aAAa,IAAjB,EAAuB;AACnB;AACA,mCAAO,QAAP,GAAkB,cAAI,YAAJ,CAAiB,QAAQ,QAAzB,CAAlB;AACA,0CAAI,iBAAJ,CAAsB,OAAO,QAA7B,EAAuC,KAAK,MAAL,CAAY,CAAnD,EAAsD,KAAK,GAA3D,EAAgE,KAAK,GAArE;AACH;;AAED,iCAAS,IAAT,CAAc,MAAd;AACH,qBA9BD;AAHc;;AAClB,qBAAK,IAAI,KAAT,IAAkB,KAAK,WAAL,CAAiB,MAAnC,EAA2C;AAAA,0BAAlC,KAAkC;AAiC1C;AACJ,aAnCD;AAoCA,mBAAO,QAAP;AACH,SA/Pe;;;AAiQhB;AACA,2BAlQgB,iCAkQuB;AAAA,4FAAJ,EAAI;AAAA,gBAAhB,EAAgB,SAAhB,EAAgB;AAAA,gBAAZ,GAAY,SAAZ,GAAY;;AACnC,gBAAI,YAAY,oBAAiB,GAAjB,CAAqB,GAArB,CAAhB;;AAEA,mBAAO;AACH,oBAAI,EADD;AAEH,yBAAU,aAAa,UAAU;AAF9B,aAAP;AAIH,SAzQe;;;AA2QhB;AACA,6BA5QgB,mCA4QuB;AAAA,gBAAhB,OAAgB,uEAAN,IAAM;;AACnC,gCAAiB,KAAjB,CAAuB,OAAvB;AACH,SA9Qe;;;AAgRhB;AACA,kCAjRgB,wCAiRc;AAC1B,mBAAO,oBAAiB,UAAjB,EAAP;AACH,SAnRe;;;AAqRhB;AACA,oBAtRgB,wBAsRF,UAtRE,EAsRU;AACtB,gBAAI,WAAW,EAAf;AACA,gBAAI,UAAJ,EAAgB;AACZ,yBAAS,IAAT,oCAAiB,OAAO,IAAP,CAAY,UAAZ,CAAjB;AACH;;AAED,+BAAI,OAAJ,EAAa,0BAAb,EAAyC,QAAzC;AACA,gBAAI,SAAS,MAAT,GAAkB,CAAtB,EAAyB;AACrB,uBAAO,kBAAQ,oBAAR,CAA6B,QAA7B,CAAP;AACH;AACD,mBAAO,QAAQ,OAAR,EAAP;AACH,SAjSe;;;AAmShB;AACA,8BApSgB,kCAoSQ,kBApSR,EAoS4B;AACxC,4BAAM,kBAAN,GAA2B,kBAA3B;AACH,SAtSe;;;AAwShB;AACA,eAzSgB,mBAySP,IAzSO,EAySD;AACX,oBAAQ,OAAR,aAA0B,KAAK,UAA/B,UAA8C,IAA9C;AACH,SA3Se;AA6ShB,kBA7SgB,sBA6SJ,IA7SI,EA6SE;AACd,oBAAQ,UAAR,aAA6B,KAAK,UAAlC,UAAiD,IAAjD;AACH;AA/Se,KAApB;;AAmTA,4BAAa,SAAb,CAAuB,MAAvB,EAA+B,IAA/B;AAEC;;;;;;;;;;;AC3UD;;;;AACA;;;;AACA;;;;;;;;;;IAEqB,gB;AAEjB,8BAAY,EAAZ,EAAgB,OAAhB,EAAyB,OAAzB,EAAkC;AAAA;;AAC9B,aAAK,EAAL,GAAU,EAAV;AACA,aAAK,OAAL,GAAe,OAAf,CAF8B,CAEN;AACxB,aAAK,QAAL,GAAiB,OAAO,OAAP,KAAmB,UAApB,IAAmC,OAAnD,CAH8B,CAG8B;AAC5D,aAAK,IAAL;AACH;;;;+BAEM;AACH;AACA,iBAAK,QAAL,GAAgB,EAAhB,CAFG,CAEiB;AACpB,iBAAK,OAAL,GAAe,IAAf,CAHG,CAGkB;AACrB,iBAAK,UAAL,GAAkB,CAAlB,CAJG,CAIkB;AACrB,iBAAK,gBAAL,GAAwB,IAAxB,CALG,CAK2B;AAC9B,iBAAK,MAAL,GAAc,IAAd,CANG,CAMiB;;AAEpB;AACA;AACA,iBAAK,GAAL,GAAW,KAAK,EAAL,CAAQ,iBAAR,EAAX;AACA,iBAAK,EAAL,CAAQ,eAAR,CAAwB,KAAK,EAAL,CAAQ,WAAhC,EAA6C,KAAK,GAAlD;AACA,iBAAK,QAAL,GAAgB,EAAE,OAAO,GAAT,EAAc,QAAQ,GAAtB,EAAhB,CAZG,CAY0C;;AAE7C;AACA,gBAAI,cAAc,kBAAQ,MAAR,CAAgB,KAAK,EAArB,EAAyB,eAAzB,EAA0C,EAAE,WAAW,SAAb,EAA1C,CAAlB;AACA,wBAAY,OAAZ,CAAoB,KAAK,QAAL,CAAc,KAAlC,EAAyC,KAAK,QAAL,CAAc,MAAvD,EAA+D,IAA/D,EAAqE,EAAE,WAAW,SAAb,EAArE;AACA,iBAAK,EAAL,CAAQ,oBAAR,CAA6B,KAAK,EAAL,CAAQ,WAArC,EAAkD,KAAK,EAAL,CAAQ,iBAA1D,EAA6E,KAAK,EAAL,CAAQ,UAArF,EAAiG,YAAY,OAA7G,EAAsH,CAAtH;;AAEA;AACA,gBAAI,eAAe,KAAK,EAAL,CAAQ,kBAAR,EAAnB;AACA,iBAAK,EAAL,CAAQ,gBAAR,CAAyB,KAAK,EAAL,CAAQ,YAAjC,EAA+C,YAA/C;AACA,iBAAK,EAAL,CAAQ,mBAAR,CAA4B,KAAK,EAAL,CAAQ,YAApC,EAAkD,KAAK,EAAL,CAAQ,iBAA1D,EAA6E,KAAK,QAAL,CAAc,KAA3F,EAAkG,KAAK,QAAL,CAAc,MAAhH;AACA,iBAAK,EAAL,CAAQ,uBAAR,CAAgC,KAAK,EAAL,CAAQ,WAAxC,EAAqD,KAAK,EAAL,CAAQ,gBAA7D,EAA+E,KAAK,EAAL,CAAQ,YAAvF,EAAqG,YAArG;;AAEA,iBAAK,EAAL,CAAQ,eAAR,CAAwB,KAAK,EAAL,CAAQ,WAAhC,EAA6C,IAA7C;AACH;;;kCAES;AACN,gBAAI,KAAK,EAAL,IAAW,KAAK,GAApB,EAAyB;AACrB,qBAAK,EAAL,CAAQ,iBAAR,CAA0B,KAAK,GAA/B;AACA,qBAAK,GAAL,GAAW,IAAX;AACA,qBAAK,EAAL,CAAQ,eAAR,CAAwB,KAAK,EAAL,CAAQ,WAAhC,EAA6C,IAA7C;AACH;;AAED;AACH;;AAED;;;;+BAKO;AAAA;;AACH;AACA,iBAAK,EAAL,CAAQ,eAAR,CAAwB,KAAK,EAAL,CAAQ,WAAhC,EAA6C,KAAK,GAAlD;AACA,iBAAK,EAAL,CAAQ,QAAR,CAAiB,CAAjB,EAAoB,CAApB,EAAuB,KAAK,QAAL,CAAc,KAArC,EAA4C,KAAK,QAAL,CAAc,MAA1D;AACA,wBAAK,EAAL,EAAQ,UAAR,+BAAsB,iBAAiB,YAAvC;AACH;;AAED;AACA;;;;qCACa,K,QAAmB;AAAA;;AAAA,gBAAV,MAAU,QAAV,MAAU;;AAC5B;AACA,gBAAI,CAAC,KAAD,IAAU,MAAM,CAAN,GAAU,CAApB,IAAyB,MAAM,CAAN,GAAU,CAAnC,IAAwC,MAAM,CAAN,GAAU,CAAlD,IAAuD,MAAM,CAAN,GAAU,CAArE,EAAwE;AACpE,uBAAO,QAAQ,OAAR,CAAgB,EAAE,SAAS,IAAX,EAAiB,SAAS,KAA1B,EAAhB,CAAP;AACH;;AAED,mBAAO,IAAI,OAAJ,CAAY,UAAC,OAAD,EAAU,MAAV,EAAqB;AACpC;AACA,sBAAK,oBAAL,GAA6B,MAAK,oBAAL,GAA4B,CAA7B,IAAmC,CAA/D;AACA,sBAAK,QAAL,CAAc,MAAK,oBAAnB,IAA2C;AACvC,wBAAI,MAAK,oBAD8B;AAEvC,gCAFuC;AAGvC,kCAHuC;AAIvC,oCAJuC;AAKvC;AALuC,iBAA3C;AAOH,aAVM,CAAP;AAWH;;AAED;;;;0CACkB;AACd,mBAAO,OAAO,IAAP,CAAY,KAAK,QAAjB,EAA2B,MAA3B,GAAoC,KAAK,QAAzC,GAAoD,IAA3D;AACH;;;6CAEoB;AACjB,mBAAO,KAAK,eAAL,MAA0B,IAAjC;AACH;;;+CAEsB;AACnB,iBAAK,IAAI,CAAT,IAAc,KAAK,QAAnB,EAA6B;AACzB,oBAAI,UAAU,KAAK,QAAL,CAAc,CAAd,CAAd;;AAEA;AACA,oBAAI,QAAQ,IAAZ,EAAkB;AACd;AACH;;AAED;AACA;AACA,wBAAQ,MAAR,CAAe,EAAE,gBAAF,EAAf;AACA,uBAAO,KAAK,QAAL,CAAc,CAAd,CAAP;AACH;AACJ;;AAED;;;;+BACO;AAAA;;AACH;AACA;AACA;AACA,gBAAI,KAAK,gBAAL,IAAyB,IAA7B,EAAmC;AAC/B,6BAAa,KAAK,gBAAlB;AACH;AACD,iBAAK,gBAAL,GAAwB,WAAW,YAAM;AACrC,oBAAI,OAAK,MAAT,EAAiB;AACb;AACH;;AAED,oBAAI,KAAK,OAAK,EAAd;;AAEA,mBAAG,eAAH,CAAmB,GAAG,WAAtB,EAAmC,OAAK,GAAxC;;AAEA,qBAAK,IAAI,CAAT,IAAc,OAAK,QAAnB,EAA6B;AACzB,wBAAI,UAAU,OAAK,QAAL,CAAc,CAAd,CAAd;;AAEA;AACA,wBAAI,QAAQ,IAAZ,EAAkB;AACd;AACH;;AAED;AACA,wBAAI,oBAAJ;AAAA,wBAAiB,YAAY,GAA7B;AATyB,wBAUpB,KAVoB,GAUH,OAVG,CAUpB,KAVoB;AAAA,wBAUb,MAVa,GAUH,OAVG,CAUb,MAVa;;AAWzB,wBAAI,gBAAJ;;AAEA,wBAAI,CAAC,MAAL,EAAa;AACT,iCAAS,EAAE,GAAG,CAAL,EAAQ,GAAG,CAAX,EAAT;AACA,kCAAU,EAAE,GAAG,CAAL,EAAQ,GAAG,CAAX,EAAV;AACH,qBAHD,MAIK;AACD;AACA,4BAAI,aAAa,KAAK,GAAL,CAAS,OAAK,QAAL,CAAc,KAAvB,EAA8B,OAAK,QAAL,CAAc,MAA5C,CAAjB;AACA,kCAAU;AACN,+BAAG,KAAK,GAAL,CAAS,KAAK,IAAL,CAAU,OAAO,CAAP,GAAW,CAAX,GAAe,OAAK,QAAL,CAAc,KAAvC,CAAT,EAAwD,UAAxD,CADG;AAEN,+BAAG,KAAK,GAAL,CAAS,KAAK,IAAL,CAAU,OAAO,CAAP,GAAW,CAAX,GAAe,OAAK,QAAL,CAAc,MAAvC,CAAT,EAAyD,UAAzD;AAFG,yBAAV;AAIH;;AAED;AACA,wBAAI,OAAK,MAAL,IAAe,IAAf,IAAuB,OAAK,MAAL,CAAY,UAAZ,GAAyB,QAAQ,CAAR,GAAY,QAAQ,CAApB,GAAwB,CAA5E,EAA+E;AAC3E,+BAAK,MAAL,GAAc,IAAI,UAAJ,CAAe,QAAQ,CAAR,GAAY,QAAQ,CAApB,GAAwB,CAAvC,CAAd;AACH;;AAED;AACA,wBAAI,OAAK,MAAL,CAAY,IAAZ,YAA4B,QAAhC,EAA0C;AACtC,+BAAK,MAAL,CAAY,IAAZ,CAAiB,CAAjB,EADsC,CACjB;AACxB,qBAFD,MAGK;AACD,6BAAK,IAAI,KAAE,CAAX,EAAc,KAAI,OAAK,MAAL,CAAY,MAA9B,EAAsC,IAAtC,EAA2C;AACvC,mCAAK,MAAL,CAAY,EAAZ,IAAiB,CAAjB;AACH;AACJ;;AAED;AACA,uBAAG,UAAH,CACI,KAAK,KAAL,CAAY,CAAC,MAAM,CAAN,GAAU,OAAO,CAAlB,IAAuB,OAAK,QAAL,CAAc,KAAjD,CADJ,EAEI,KAAK,KAAL,CAAW,CAAC,IAAI,MAAM,CAAV,GAAc,OAAO,CAAtB,IAA2B,OAAK,QAAL,CAAc,MAApD,CAFJ,EAGI,QAAQ,CAHZ,EAGe,QAAQ,CAHvB,EAG0B,GAAG,IAH7B,EAGmC,GAAG,aAHtC,EAGqD,OAAK,MAH1D;;AAKA;AACA,wBAAI,IAAI,CAAC,KAAK,KAAL,CAAW,QAAQ,CAAR,GAAY,CAAvB,IAA4B,QAAQ,CAApC,GAAwC,KAAK,KAAL,CAAW,QAAQ,CAAR,GAAY,CAAvB,CAAzC,IAAsE,CAA9E;AACA,wBAAI,IAAI,OAAK,MAAL,CAAY,CAAZ,KAAkB,OAAK,MAAL,CAAY,IAAE,CAAd,KAAoB,CAAtC,KAA4C,OAAK,MAAL,CAAY,IAAE,CAAd,KAAoB,EAAhE,CAAR,CAjDyB,CAiDoD;AAC7E,wBAAI,IAAI,CAAR,EAAW;AACP,sCAAe,KAAK,OAAK,MAAL,CAAY,IAAE,CAAd,KAAoB,EAAzB,CAAD,KAAmC,CAAjD,CADO,CAC6C;AACpD,oCAAY,OAAK,MAAL,CAAY,IAAE,CAAd,CAAZ;AACH,qBAHD,MAIK;AACD;AACA,4BAAI,WAAW,CAAC,CAAD,KAAO,CAAtB;AACA,4BAAI,CAAJ;AACA,6BAAK,IAAI,IAAE,CAAX,EAAc,IAAI,QAAQ,CAA1B,EAA6B,GAA7B,EAAkC;AAC9B,iCAAK,IAAI,IAAE,CAAX,EAAc,IAAI,QAAQ,CAA1B,EAA6B,KAAK,KAAK,CAAvC,EAA0C;AACtC,oCAAI,OAAK,MAAL,CAAY,CAAZ,KAAkB,OAAK,MAAL,CAAY,IAAE,CAAd,KAAoB,CAAtC,KAA4C,OAAK,MAAL,CAAY,IAAE,CAAd,KAAoB,EAAhE,CAAJ,CADsC,CACmC;AACzE,oCAAI,IAAI,CAAR,EAAW;AAAE;AACT;AACA,wCAAI,OAAO,CAAC,IAAI,QAAQ,CAAR,GAAU,CAAf,KAAqB,IAAI,QAAQ,CAAR,GAAU,CAAnC,IAAwC,CAAC,IAAI,QAAQ,CAAR,GAAU,CAAf,KAAqB,IAAI,QAAQ,CAAR,GAAU,CAAnC,CAAnD;AACA,wCAAI,QAAQ,QAAZ,EAAsB;AAClB;AACA,sDAAe,KAAK,OAAK,MAAL,CAAY,IAAE,CAAd,KAAoB,EAAzB,CAAD,KAAmC,CAAjD;AACA,oDAAY,OAAK,MAAL,CAAY,IAAE,CAAd,CAAZ;AACA,mDAAW,IAAX;AACH;AACJ;AACJ;AACJ;AACJ;;AAED;AACA,wBAAI,cAAc,GAAlB,EAAuB;AAAE;AACrB,4BAAI,OAAK,OAAL,CAAa,SAAb,KAA2B,IAA/B,EAAqC;AACjC,oDAAa,WAAb,CACI,OAAK,OAAL,CAAa,SAAb,CADJ,EAEI,0BAFJ,EAGI,EAAE,IAAI,QAAQ,EAAd,EAAkB,KAAK,WAAvB,EAHJ,EAIC,IAJD,CAIM,mBAAW;AACb,uCAAK,UAAL,CAAgB,OAAhB;AACH,6BAND;AAOH;AACJ;AACD;AAXA,yBAYK;AACD,mCAAK,UAAL,CAAgB,EAAE,IAAI,QAAQ,EAAd,EAAhB;AACH;;AAED,4BAAQ,IAAR,GAAe,IAAf;AACH;;AAED,mBAAG,eAAH,CAAmB,GAAG,WAAtB,EAAmC,IAAnC;AAEH,aA1GuB,EA0GrB,KAAK,UA1GgB,CAAxB;AA2GH;;AAED;;;;mCACY,O,EAAS;AACjB,gBAAI,UAAU,KAAK,QAAL,CAAc,QAAQ,EAAtB,CAAd;AACA,gBAAI,CAAC,OAAL,EAAc;AACV,mCAAI,OAAJ,EAAa,uDAAb,EAAsE,OAAtE;AACA,uBAFU,CAEF;AACX;;AAED,gBAAI,UAAU,QAAQ,OAAtB;AACA,gBAAI,UAAU,KAAd;AACA,gBAAK,WAAW,IAAX,IAAmB,KAAK,OAAL,IAAgB,IAApC,IACC,WAAW,IAAX,IAAmB,KAAK,OAAL,IAAgB,IADpC,IAEC,WAAW,IAAX,IAAmB,KAAK,OAAL,IAAgB,IAAnC,IACG,KAAK,SAAL,CAAe,OAAf,MAA4B,KAAK,SAAL,CAAe,KAAK,OAApB,CAHpC,EAGmE;AAC/D,0BAAU,IAAV;AACH;;AAED,iBAAK,OAAL,GAAe,OAAf,CAhBiB,CAgBO;;AAExB;AACA,oBAAQ,OAAR,CAAgB,EAAE,gBAAF,EAAW,gBAAX,EAAoB,gBAApB,EAAhB;AACA,mBAAO,KAAK,QAAL,CAAc,QAAQ,EAAtB,CAAP,CApBiB,CAoBiB;AACrC;;AAGD;AACA;;AAEA;AACA;AACA;AACA;;;;4BA7Mc;AACV,mBAAQ,KAAK,QAAL,IAAiB,KAAK,QAAL,EAAlB,IAAsC,KAA7C;AACH;;;kCA4MgB,I,EAAM;AACnB;AACA,iBAAK,SAAL;AACA,gBAAI,KAAK,KAAK,SAAL,GAAiB,GAA1B;AACA,gBAAI,KAAM,KAAK,SAAL,IAAkB,CAAnB,GAAwB,GAAjC;AACA,gBAAI,KAAM,KAAK,SAAL,IAAkB,EAAnB,GAAyB,GAAlC;AACA,gBAAI,KAAK,KAAK,UAAd;AACA,gBAAI,IAAI,KAAK,GAAb;AACA,gBAAI,IAAI,KAAK,GAAb;AACA,gBAAI,IAAI,KAAK,GAAb;AACA,gBAAI,IAAI,KAAK,GAAb;AACA,gBAAI,MAAO,MAAM,MAAM,CAAZ,KAAkB,MAAM,EAAxB,KAA+B,MAAM,EAArC,CAAD,KAA+C,CAAzD,CAXmB,CAWyC;;AAE5D,iBAAK,GAAL,CAAS,GAAT,IAAgB;AACZ,uBAAO,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV;AADK,aAAhB;AAGA,iBAAK,QAAL;;AAEA;AACA,gBAAI,CAAC,KAAK,KAAL,CAAW,KAAK,GAAhB,CAAL,EAA2B;AACvB,qBAAK,KAAL,CAAW,KAAK,GAAhB,IAAuB;AACnB,6BAAS,EADU,EACiB;AACpC,0BAAM,EAA8B;AAChC,6BAAK,KAAK,GADR;AAEF,gCAAQ,KAAK,MAFX;AAGF,oCAAY,KAAK,UAHf;AAIF,gCAAQ,KAAK,MAJX;AAKF,oCAAY,KAAK;AALf;AAFa,iBAAvB;AAUH;;AAED,iBAAK,KAAL,CAAW,KAAK,GAAhB,EAAqB,OAArB,CAA6B,IAA7B,CAAkC,GAAlC;;AAEA,mBAAO,KAAK,GAAL,CAAS,GAAT,CAAP;AACH;;;kCAEgB,O,EAAS,I,EAAM,O,EAAS;AACrC,gBAAI,WAAW,KAAK,SAAL,CAAe,IAAf,CAAf;AACA,qBAAS,OAAT,GAAmB;AACf,oBAAI,QAAQ,EADG;AAEf,4BAAY,QAAQ,UAFL;AAGf,6BAAa,QAAQ,MAHN;AAIf,8BAAc,QAAQ,KAJP;AAKf,wBAAQ,QAAQ,MALD;AAMf,sBAAM,KAAK,KAAL,CAAW,KAAK,GAAhB,EAAqB;AANZ,aAAnB;;AASA,mBAAO,SAAS,KAAhB;AACH;;;8BAEY,O,EAAS;AAAA;;AAClB;AACA,gBAAI,MAAM,OAAN,CAAc,OAAd,CAAJ,EAA4B;AACxB,wBAAQ,OAAR,CAAgB;AAAA,2BAAU,OAAK,WAAL,CAAiB,MAAjB,CAAV;AAAA,iBAAhB;AACH;AACD;AAHA,iBAIK;AACD,yBAAK,KAAL,GAAa,EAAb;AACA,yBAAK,GAAL,GAAW,EAAX;AACA,yBAAK,QAAL,GAAgB,CAAhB;AACA,yBAAK,SAAL,GAAiB,CAAjB;AACH;AACJ;;;oCAEkB,M,EAAQ;AACvB,iBAAK,IAAI,GAAT,IAAgB,KAAK,KAArB,EAA4B;AACxB,oBAAI,KAAK,KAAL,CAAW,GAAX,EAAgB,IAAhB,CAAqB,MAArB,KAAgC,MAApC,EAA4C;AACxC,yBAAK,SAAL,CAAe,GAAf;AACH;AACJ;AACJ;;;kCAEgB,G,EAAK;AAAA;;AAClB,gBAAI,KAAK,KAAL,CAAW,GAAX,CAAJ,EAAqB;AACjB,qBAAK,KAAL,CAAW,GAAX,EAAgB,OAAhB,CAAwB,OAAxB,CAAgC;AAAA,2BAAK,OAAO,OAAK,GAAL,CAAS,CAAT,CAAZ;AAAA,iBAAhC;AACA,qBAAK,QAAL,IAAiB,KAAK,KAAL,CAAW,GAAX,EAAgB,OAAhB,CAAwB,MAAzC;AACA,uBAAO,KAAK,KAAL,CAAW,GAAX,CAAP;AACH;AACJ;;;qCAEmB;AAChB,mBAAO,KAAK,QAAZ;AACH;;;kCAEgB,M,EAAQ;AACrB,iBAAK,UAAL,GAAkB,MAAlB;AACH;;;;;;AAIL;;;kBAzVqB,gB;AA0VrB,iBAAiB,GAAjB,GAAuB,EAAvB,C,CAA6B;AAC7B,iBAAiB,KAAjB,GAAyB,EAAzB,C,CAA6B;AAC7B,iBAAiB,QAAjB,GAA4B,CAA5B;AACA,iBAAiB,SAAjB,GAA6B,CAA7B;AACA,iBAAiB,UAAjB,GAA8B,CAA9B,C,CAAiC;AACjC,iBAAiB,YAAjB,GAAgC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAhC;;;;;;;;;;;;;;qjBCnWA;;;AACA;;;;AACA;;AACA;;;;AACA;;IAAY,I;;AACZ;;;;;;;;;;;;;;;;IAEqB,U;AAEjB,wBAAa,MAAb,EAAqB,OAArB,EAA8B;AAAA;;AAAA;;AAC1B,aAAK,MAAL,GAAc,MAAd,CAD0B,CACJ;AACtB,aAAK,OAAL,GAAe,OAAf,CAF0B,CAEF;AACxB,aAAK,EAAL,GAAU,OAAO,EAAjB;AACA,aAAK,IAAL,GAAY,OAAO,IAAnB;AACA,aAAK,SAAL,GAAiB,OAAO,SAAP,IAAoB,MAArC,CAL0B,CAKmB;AAC7C,aAAK,eAAL,GAAuB,IAAvB,CAN0B,CAMG;AAC7B,aAAK,OAAL,GAAe,EAAf,CAP0B,CAOP;AACnB,YAAI,MAAM,OAAN,CAAc,OAAO,OAArB,CAAJ,EAAmC;AAAE;AACjC,mBAAO,OAAP,CAAe,OAAf,CAAuB,aAAK;AACxB,oBAAI,MAAK,OAAL,CAAa,OAAb,CAAqB,CAArB,MAA4B,CAAC,CAAjC,EAAoC;AAChC,0BAAK,OAAL,CAAa,IAAb,CAAkB,CAAlB;AACH;AACJ,aAJD;AAKH;;AAED;AACA,aAAK,SAAL,GAAiB,OAAO,SAAxB;AACA,YAAI,OAAO,KAAK,SAAZ,KAA0B,UAA9B,EAA0C;AACtC,iBAAK,SAAL,CAAe,IAAf,CAAoB,IAApB;AACH;;AAED;AACA,aAAK,UAAL,GAAkB,OAAO,UAAzB;;AAEA;AACA;AACA,aAAK,OAAL,GAAe,OAAO,OAAtB;;AAEA;AACA,aAAK,QAAL,GAAiB,OAAO,QAAP,IAAmB,IAApB,GAA4B,OAAO,QAAnC,GAA8C,cAAI,uBAAlE;;AAEA,aAAK,WAAL,CAAiB,OAAO,SAAxB;AACA,aAAK,cAAL,GAAsB,KAAK,QAAL,GAAgB,KAAK,SAA3C;;AAEA;AACA,aAAK,gBAAL,GAAyB,OAAO,gBAAP,IAA2B,IAA5B,GAAoC,OAAO,gBAA3C,GAA8D,CAAtF;AACA,aAAK,gBAAL,GAAyB,OAAO,gBAAP,IAA2B,IAA5B,GAAoC,OAAO,gBAA3C,GAA8D,IAAtF;AACH;;AAED;;;;;6BAwDK,I,EAAM;AAAA;;AACP,iBAAK,WAAL,GAAmB,EAAnB;AACA,iBAAK,WAAL,CAAiB,MAAjB,GAA0B,EAA1B;AACA,iBAAK,SAAL,GAAiB,KAAK,SAAtB;AACA,iBAAK,OAAL,gCAAmB,KAAK,OAAxB,GAJO,CAI2B;;AAElC,mBAAO,KAAK,KAAL,CAAW,IAAX,EAAiB,IAAjB,CAAsB,UAAC,IAAD,EAAU;AACnC;AACA,qBAAK,IAAI,KAAT,IAAkB,KAAK,WAAL,CAAiB,MAAnC,EAA2C;AACvC,wBAAI,OAAO,KAAK,WAAL,CAAiB,MAAjB,CAAwB,KAAxB,CAAX;AACA,wBAAI,QAAQ,KAAK,QAAjB,EAA2B;AACvB,6BAAK,QAAL,CAAc,OAAd,CAAsB,mBAAW;AAC7B,0CAAI,iBAAJ,CAAsB,QAAQ,QAA9B,EAAwC,iBAAS;AAC7C;AACA,sCAAM,CAAN,IAAW,CAAC,MAAM,CAAN,CAAZ;;AAEA;AACA,oCAAI,OAAK,SAAT,EAAoB;AAChB,0CAAM,CAAN,IAAW,KAAK,KAAL,CAAW,MAAM,CAAN,KAAY,IAAI,OAAK,SAArB,IAAmC,cAAI,UAAJ,GAAiB,OAAK,SAAtB,GAAgC,CAA9E,CAAX;AACA,0CAAM,CAAN,IAAW,KAAK,KAAL,CAAW,MAAM,CAAN,KAAY,IAAI,OAAK,SAArB,IAAmC,cAAI,UAAJ,GAAiB,OAAK,SAAtB,GAAgC,CAA9E,CAAX;AACH;AACJ,6BATD;;AAWA;AACA,mCAAK,oBAAL,CAA0B,QAAQ,QAAlC;AACH,yBAdD;AAeH;AACJ;;AAED,qBAAK,eAAL,GAAuB,OAAK,eAAL,IAAwB,KAA/C;AACA,uBAAO,IAAP;AACH,aAzBM,CAAP;AA0BH;;AAED;;;;8BACM,I,EAAM;AACR,kBAAM,iCAAyB,OAAzB,CAAN;AACH;;AAED;AACA;;;;oCACa,S,EAAW;AACpB,iBAAK,SAAL,GAAiB,aAAa,GAA9B;AACA,gBAAI,OAAO,KAAK,SAAZ,KAA0B,QAA1B,IAAsC,KAAK,SAAL,GAAiB,GAAvD,IAA8D,CAAC,gBAAM,UAAN,CAAiB,KAAK,SAAtB,CAAnE,EAAqG;AACjG,mCAAI,EAAE,OAAO,MAAT,EAAiB,MAAM,IAAvB,EAAJ,qBACoB,KAAK,IADzB,kHACsI,SADtI;AAEA,qBAAK,SAAL,GAAiB,GAAjB;AACH;;AAED;AACA,iBAAK,SAAL,GAAiB,KAAK,IAAL,CAAU,KAAK,SAAf,IAA4B,CAA7C;AACH;;AAED;;;;6CACsB,I,EAAM;AACxB,gBAAI,KAAK,eAAL,IAAwB,IAA5B,EAAkC;AAC9B,oBAAI,KAAK,IAAL,KAAc,SAAlB,EAA6B;AACzB,yBAAK,eAAL,GAAuB,cAAI,WAAJ,CAAgB,KAAK,WAAL,CAAiB,CAAjB,CAAhB,CAAvB;AACH,iBAFD,MAGK,IAAI,KAAK,IAAL,KAAc,cAAlB,EAAkC;AACnC,yBAAK,eAAL,GAAuB,cAAI,WAAJ,CAAgB,KAAK,WAAL,CAAiB,CAAjB,EAAoB,CAApB,CAAhB,CAAvB;AACH;AACJ;AACD,mBAAO,KAAK,eAAZ;AACH;;AAED;;;;qCACc,M,EAAQ,U,EAAY;AAC9B;AACA,gBAAI,OAAO,CAAP,GAAW,KAAK,gBAAhB,IAAqC,KAAK,gBAAL,IAAyB,IAAzB,IAAiC,aAAa,KAAK,gBAA5F,EAA+G;AAC3G,uBAAO,KAAP;AACH;;AAED;AACA,iBAAK,IAAI,IAAE,CAAX,EAAc,IAAI,KAAK,OAAL,CAAa,MAA/B,EAAuC,GAAvC,EAA4C;AACxC,oBAAM,cAAc,KAAK,OAAL,CAAa,CAAb,CAApB;AACA,oBAAI,KAAK,OAAL,CAAa,WAAb,KACA,KAAK,OAAL,CAAa,WAAb,MAA8B,IAD9B,IAEA,CAAC,KAAK,OAAL,CAAa,WAAb,EAA0B,YAA1B,CAAuC,MAAvC,EAA+C,OAAO,CAAtD,CAFL,EAE+D;AAC3D,2BAAO,KAAP;AACH;AACJ;;AAED,mBAAO,IAAP;AACH;;AAED;;;;+BA7Ie,M,EAAQ,O,EAAS;AAC5B,gBAAI,WAAW,KAAX,CAAiB,OAAO,IAAxB,CAAJ,EAAmC;AAC/B,uBAAO,IAAI,WAAW,KAAX,CAAiB,OAAO,IAAxB,CAAJ,CAAkC,MAAlC,EAA0C,OAA1C,CAAP;AACH;AACJ;;AAED;;;;gCACgB,M,EAAQ,W,EAAa;AACjC,gBAAI,CAAC,MAAD,IAAW,CAAC,WAAhB,EAA6B;AACzB,uBAAO,IAAP;AACH;;AAED,gBAAI,MAAM,OAAO,MAAP,CAAc,EAAd,EAAkB,OAAO,MAAzB,EAAiC,EAAE,IAAI,IAAN,EAAjC,CAAV,CALiC,CAKyB;AAC1D,gBAAI,OAAO,OAAO,MAAP,CAAc,EAAd,EAAkB,YAAY,MAA9B,EAAsC,EAAE,IAAI,IAAN,EAAtC,CAAX;;AAEA,mBAAO,KAAK,SAAL,CAAe,GAAf,MAAwB,KAAK,SAAL,CAAe,IAAf,CAA/B;AACH;;AAED;;;;oCACoB,M,EAAQ;AACxB,gBAAI,QAAQ,CAAC,IAAI,IAAJ,EAAb;AACA,iBAAK,IAAI,CAAT,IAAc,OAAO,MAArB,EAA6B;AACzB,oBAAI,eAAe,OAAO,MAAP,CAAc,CAAd,EAAiB,QAAjB,CAA0B,MAA7C;AACA,qBAAK,IAAI,IAAE,CAAX,EAAc,IAAI,YAAlB,EAAgC,GAAhC,EAAqC;AACjC,wBAAI,UAAU,OAAO,MAAP,CAAc,CAAd,EAAiB,QAAjB,CAA0B,CAA1B,CAAd;AACA,kCAAI,iBAAJ,CAAsB,QAAQ,QAA9B,EAAwC,iBAAS;AAAA,kDAChC,cAAI,cAAJ,CAAmB,KAAnB,CADgC;AAAA;AAAA,4BACxC,CADwC;AAAA,4BACrC,CADqC;;AAE7C,8BAAM,CAAN,IAAW,CAAX;AACA,8BAAM,CAAN,IAAW,CAAX;AACH,qBAJD;AAKH;AACJ;;AAED,gBAAI,OAAO,KAAP,KAAiB,SAArB,EAAgC;AAC5B,uBAAO,KAAP,CAAa,UAAb,GAA0B,CAAC,IAAI,IAAJ,EAAD,GAAc,KAAxC;AACH;AACJ;;AAED;;;;;;kCAGkB,M,QAAiC;AAAA,gBAAf,CAAe,QAAxB,MAAwB,CAAf,CAAe;AAAA,gBAAX,GAAW,QAAX,GAAW;AAAA,gBAAN,GAAM,QAAN,GAAM;;AAC/C,gBAAI,kBAAkB,cAAI,aAAJ,CAAkB,CAAlB,CAAtB;AACA,iBAAK,IAAI,CAAT,IAAc,OAAO,MAArB,EAA6B;AACzB,oBAAI,eAAe,OAAO,MAAP,CAAc,CAAd,EAAiB,QAAjB,CAA0B,MAA7C;AACA,qBAAK,IAAI,IAAE,CAAX,EAAc,IAAI,YAAlB,EAAgC,GAAhC,EAAqC;AACjC,wBAAI,UAAU,OAAO,MAAP,CAAc,CAAd,EAAiB,QAAjB,CAA0B,CAA1B,CAAd;AACA,kCAAI,iBAAJ,CAAsB,QAAQ,QAA9B,EAAwC,iBAAS;AAC7C,8BAAM,CAAN,IAAW,CAAC,MAAM,CAAN,IAAW,IAAI,CAAhB,IAAqB,eAAhC;AACA,8BAAM,CAAN,IAAW,CAAC,MAAM,CAAN,IAAW,IAAI,CAAhB,IAAqB,eAArB,GAAuC,CAAC,CAAnD,CAF6C,CAES;AACzD,qBAHD;AAIH;AACJ;AACJ;;;iCAyFe,U,EAAY,S,EAAW;AACnC,gBAAI,CAAC,UAAD,IAAe,CAAC,SAApB,EAA+B;AAC3B;AACH;;AAED,uBAAW,KAAX,CAAiB,SAAjB,IAA8B,UAA9B;AACH;;;;;;kBA/LgB,U;;;AAmMrB,WAAW,KAAX,GAAmB,EAAnB,C,CAAuB;;;AAGvB;;AAEA,IAAI,qBAAqB,CAAzB,C,CAA4B;;IAEf,a,WAAA,a;;;AAET,2BAAa,MAAb,EAAqB,OAArB,EAA8B;AAAA;;AAAA,mIACpB,MADoB,EACZ,OADY;;AAE1B,eAAK,aAAL,GAAqB,EAArB,CAF0B,CAED;;AAEzB;;AAJ0B,mCAKP,KAAK,cAAL,CAAoB,OAAO,GAA3B,EAAgC,OAAO,UAAvC,CALO;AAAA;AAAA,YAKrB,GALqB;AAAA,YAKhB,KALgB;;AAM1B,eAAK,GAAL,GAAW,GAAX;AACA,cAAM,OAAN,CAAc,iBAAoB;AAAA;AAAA,gBAAlB,KAAkB;AAAA,gBAAX,KAAW;;AAC9B,+BAAI,EAAE,OAAO,MAAT,EAAiB,MAAM,IAAvB,EAAJ,EACI,mBAAgB,OAAK,IAArB,wBAA0C,KAA1C,oCAA4E,OAAO,GAAnF,mCACmB,KADnB,SAC4B,KAD5B,oCADJ;AAGH,SAJD;;AAMA,YAAI,OAAO,OAAK,GAAZ,KAAoB,QAAxB,EAAkC;AAC9B,kBAAM,MAAM,0DAAN,CAAN;AACH;AAfyB;AAgB7B;;;;8BAEM,I,EAAM;AAAA;;AACT,gBAAI,MAAM,KAAK,SAAL,CAAe,KAAK,GAApB,EAAyB,IAAzB,CAAV;;AAEA,gBAAI,cAAc,KAAK,WAAvB;AACA,wBAAY,GAAZ,GAAkB,GAAlB;AACA,iBAAK,KAAL,GAAa,KAAK,KAAL,IAAc,EAA3B;AACA,iBAAK,KAAL,CAAW,OAAX,GAAqB,CAAC,IAAI,IAAJ,EAAtB;;AAEA,mBAAO,IAAI,OAAJ,CAAY,UAAC,OAAD,EAAU,MAAV,EAAqB;AACpC,4BAAY,KAAZ,GAAoB,IAApB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAI,aAAc,oBAAD,GAAyB,GAAzB,GAA+B,GAAhD;AACA,oBAAI,UAAU,gBAAM,EAAN,CAAS,GAAT,EAAc,KAAK,IAAnB,EAAyB,OAAK,aAA9B,EAA6C,KAA7C,EAAoD,EAApD,EAAwD,UAAxD,CAAd;AACA,4BAAY,UAAZ,GAAyB,UAAzB;;AAEA,wBAAQ,IAAR,CAAa,UAAC,IAAD,EAAU;AACnB,yBAAK,KAAL,CAAW,aAAX,GAA2B,KAAK,MAAL,IAAe,KAAK,UAA/C;AACA,yBAAK,KAAL,CAAW,OAAX,GAAqB,CAAC,IAAI,IAAJ,EAAD,GAAc,KAAK,KAAL,CAAW,OAA9C;AACA,yBAAK,KAAL,CAAW,OAAX,GAAqB,CAAC,IAAI,IAAJ,EAAtB;AACA,2BAAK,eAAL,CAAqB,IAArB,EAA2B,WAA3B,EAAwC,IAAxC;AACA,yBAAK,KAAL,CAAW,OAAX,GAAqB,CAAC,IAAI,IAAJ,EAAD,GAAc,KAAK,KAAL,CAAW,OAA9C;AACA,4BAAQ,IAAR;AACH,iBAPD,EAOG,KAPH,CAOS,UAAC,KAAD,EAAW;AAChB,gCAAY,KAAZ,GAAoB,MAAM,KAA1B;AACA,4BAAQ,IAAR,EAFgB,CAED;AAClB,iBAVD;AAWH,aAxBM,CAAP;AAyBH;;AAED;;;;kCAEW,Y,EAAc,I,EAAM;AAC3B,kBAAM,iCAAyB,WAAzB,CAAN;AACH;;;wCAEgB,I,EAAM,M,EAAQ,O,EAAS;AACpC,kBAAM,iCAAyB,iBAAzB,CAAN;AACH;;;;EA/D8B,U;;AAmEnC;;IAEa,iB,WAAA,iB;;;AAET,+BAAa,MAAb,EAAqB,OAArB,EAA8B;AAAA;;AAAA,2IACpB,MADoB,EACZ,OADY;;AAG1B,eAAK,KAAL,GAAa,IAAb;AACA,eAAK,WAAL,CAAiB,MAAjB;;AAEA;AACA;AACA,eAAK,qBAAL,GAA6B,KAA7B;;AAEA,eAAK,GAAL,GAAY,OAAO,GAAP,KAAe,IAA3B,CAV0B,CAUQ;;AAElC;AACA,YAAI,OAAK,GAAL,CAAS,MAAT,CAAgB,KAAhB,IAAyB,CAAC,CAA9B,EAAiC;AAC7B,gBAAI,MAAM,OAAN,CAAc,OAAO,cAArB,KAAwC,OAAO,cAAP,CAAsB,MAAtB,GAA+B,CAA3E,EAA8E;AAC1E,uBAAK,cAAL,GAAsB,OAAO,cAA7B;AACA,uBAAK,kBAAL,GAA0B,CAA1B;AACH,aAHD,MAIK;AACD,mCAAI,EAAE,OAAO,MAAT,EAAiB,MAAM,IAAvB,EAAJ,EACI,mBAAgB,OAAK,IAArB,4DAA8E,OAAK,GAAnF,+EADJ;AAGH;AACJ;AAvByB;AAwB7B;;AAED;;;;;oCACa,M,EAAQ;AACjB,gBAAI,MAAM,OAAN,CAAc,OAAO,MAArB,KAAgC,OAAO,MAAP,CAAc,MAAd,KAAyB,CAA7D,EAAgE;AAC5D,qBAAK,MAAL,GAAc,OAAO,MAArB;;AAD4D,6CAEzC,KAAK,MAFoC;AAAA,oBAEvD,CAFuD;AAAA,oBAEpD,CAFoD;AAAA,oBAEjD,CAFiD;AAAA,oBAE9C,CAF8C;;AAG5D,qBAAK,aAAL,GAAqB;AACjB,yBAAK,cAAI,cAAJ,CAAmB,CAAC,CAAD,EAAI,CAAJ,CAAnB,CADY;AAEjB,yBAAK,cAAI,cAAJ,CAAmB,CAAC,CAAD,EAAI,CAAJ,CAAnB;AAFY,iBAArB;AAIA,qBAAK,YAAL,GAAoB,EAAE,KAAK,EAAP,EAAW,KAAK,EAAhB,EAApB,CAP4D,CAOlB;AAC7C;AACJ;;AAED;;;;oCACa,M,EAAQ;AACjB;AACA,gBAAI,KAAK,MAAT,EAAiB;AACb,yBAAS,cAAI,QAAJ,CAAa,MAAb,EAAqB,EAAE,GAAG,IAAL,EAArB,CAAT;;AAEA,oBAAI,MAAM,KAAK,YAAL,CAAkB,GAAlB,CAAsB,OAAO,CAA7B,CAAV;AACA,oBAAI,CAAC,GAAL,EAAU;AACN,0BAAM,KAAK,YAAL,CAAkB,GAAlB,CAAsB,OAAO,CAA7B,IAAkC,cAAI,aAAJ,CAAkB,KAAK,aAAL,CAAmB,GAArC,EAA0C,OAAO,CAAjD,CAAxC;AACH;;AAED,oBAAI,MAAM,KAAK,YAAL,CAAkB,GAAlB,CAAsB,OAAO,CAA7B,CAAV;AACA,oBAAI,CAAC,GAAL,EAAU;AACN,0BAAM,KAAK,YAAL,CAAkB,GAAlB,CAAsB,OAAO,CAA7B,IAAkC,cAAI,aAAJ,CAAkB,KAAK,aAAL,CAAmB,GAArC,EAA0C,OAAO,CAAjD,CAAxC;AACH;;AAED,oBAAI,OAAO,CAAP,GAAW,IAAI,CAAf,IAAoB,OAAO,CAAP,GAAW,IAAI,CAAnC,IACA,OAAO,CAAP,GAAW,IAAI,CADf,IACoB,OAAO,CAAP,GAAW,IAAI,CADvC,EAC0C;AACtC,2BAAO,KAAP;AACH;AACJ;AACD,mBAAO,IAAP;AACH;;;qCAEa,M,EAAQ,U,EAAY;AAC9B,gBAAI,oIAAoB,MAApB,EAA4B,UAA5B,CAAJ,EAA6C;AACzC,uBAAO,KAAP;AACH;;AAED;AACA,gBAAI,CAAC,KAAK,WAAL,CAAiB,MAAjB,CAAL,EAA+B;AAC3B,uBAAO,KAAP;AACH;AACD,mBAAO,IAAP;AACH;;;kCAES,Y,EAAc,I,EAAM;AAC1B,gBAAI,SAAS,cAAI,QAAJ,CAAa,KAAK,MAAlB,EAA0B,EAAE,GAAG,IAAL,EAA1B,CAAb;;AAEA,gBAAI,KAAK,GAAT,EAAc;AACV,uBAAO,CAAP,GAAW,KAAK,GAAL,CAAS,CAAT,EAAY,OAAO,CAAnB,IAAwB,CAAxB,GAA4B,OAAO,CAA9C,CADU,CACuC;AACpD;;AAED,gBAAI,MAAM,aAAa,OAAb,CAAqB,KAArB,EAA4B,OAAO,CAAnC,EAAsC,OAAtC,CAA8C,KAA9C,EAAqD,OAAO,CAA5D,EAA+D,OAA/D,CAAuE,KAAvE,EAA8E,OAAO,CAArF,CAAV;;AAEA,gBAAI,KAAK,cAAL,IAAuB,IAA3B,EAAiC;AAC7B,sBAAM,IAAI,OAAJ,CAAY,KAAZ,EAAmB,KAAK,cAAL,CAAoB,KAAK,kBAAzB,CAAnB,CAAN;AACA,qBAAK,kBAAL,GAA0B,CAAC,KAAK,kBAAL,GAA0B,CAA3B,IAAgC,KAAK,cAAL,CAAoB,MAA9E;AACH;AACD,mBAAO,GAAP;AACH;;AAED;;;;0CACkB,G,EAAK;AACnB,mBAAO,OACH,IAAI,MAAJ,CAAW,KAAX,IAAoB,CAAC,CADlB,IAEH,IAAI,MAAJ,CAAW,KAAX,IAAoB,CAAC,CAFlB,IAGH,IAAI,MAAJ,CAAW,KAAX,IAAoB,CAAC,CAHzB;AAIH;;;;EAnGkC,a;;;;;;;;;;;;;;ACtRvC;;;;AACA;;;;AACA;;AACA;;;;AAGA;;;;;;;;;;;;AADA;;;AAGA;;;;;IAKa,a,WAAA,a;;;AAET,2BAAY,MAAZ,EAAoB,OAApB,EAA6B;AAAA;;AAAA,kIACnB,MADmB,EACX,OADW;;AAEzB,cAAK,SAAL,GAAiB,IAAjB;AACA,cAAK,YAAL,GAAoB,EAApB,CAHyB,CAGD;AACxB,cAAK,QAAL,GAAgB,KAAK,GAAL,CAAS,MAAK,QAAL,IAAiB,CAA1B,EAA6B,EAA7B,CAAhB,CAJyB,CAIyB;AAClD,cAAK,WAAL,CAAiB,GAAjB,EALyB,CAKF;AACvB,cAAK,SAAL,GAAiB,CAAjB,CANyB,CAML;AANK;AAO5B;;;;8BAEK,I,EAAM;AAAA;;AACR,gBAAI,CAAC,KAAK,SAAV,EAAqB;AACjB,qBAAK,SAAL,GAAiB,oHAAY,EAAE,aAAa,EAAE,QAAQ,EAAV,EAAf,EAAZ,EAA6C,IAA7C,CAAkD,gBAAQ;AACvE;AACA,wBAAI,KAAK,WAAL,CAAiB,KAArB,EAA4B;AACxB,2CAAI,MAAJ,8CAAqD,OAAK,IAA1D,kBAAyE,OAAK,GAA9E,YAAuF,KAAK,WAAL,CAAiB,KAAxG;AACH;;AAED,wBAAI,SAAS,KAAK,WAAL,CAAiB,MAA9B;AACA,yBAAK,IAAI,UAAT,IAAuB,MAAvB,EAA+B;AAC3B,+BAAK,YAAL,CAAkB,UAAlB,IAAgC,yBAAU,OAAO,UAAP,CAAV,EAA8B;AAC1D,qCAAS,OAAK,QAD4C,EACjC;AACzB,uCAAW,GAF+C,EAE1C;AAChB,oCAAQ,cAAI,UAH8C,EAGlC;AACxB,oCAAQ,MAJkD,CAIvC;AAJuC,yBAA9B,CAAhC;AAMH;;AAED,2BAAK,MAAL,GAAc,IAAd;AACA,2BAAO,IAAP;AACH,iBAlBgB,CAAjB;AAmBH;;AAED,mBAAO,KAAK,SAAL,CAAe,IAAf,CAAoB,YAAM;AAC7B,qBAAK,IAAI,UAAT,IAAuB,OAAK,YAA5B,EAA0C;AACtC,yBAAK,WAAL,CAAiB,MAAjB,CAAwB,UAAxB,IAAsC,OAAK,eAAL,CAAqB,IAArB,EAA2B,UAA3B,CAAtC;AACH;AACD,uBAAO,IAAP;AACH,aALM,CAAP;AAMH;;;wCAEe,I,EAAM,U,EAAY;AAC9B,gBAAI,SAAS,cAAI,QAAJ,CAAa,KAAK,MAAlB,EAA0B,EAAE,GAAG,IAAL,EAA1B,CAAb;;AAEA;AACA,gBAAI,IAAI,KAAK,YAAL,CAAkB,UAAlB,EAA8B,OAA9B,CAAsC,OAAO,CAA7C,EAAgD,OAAO,CAAvD,EAA0D,OAAO,CAAjE,CAAR;;AAEA;AACA,gBAAI,mBAAJ;AACA,gBAAI,KAAK,EAAE,QAAX,EAAqB;AACjB,6BAAa;AACT,0BAAM,mBADG;AAET,8BAAU;AAFD,iBAAb;;AAKA,qBAAK,IAAI,IAAE,CAAX,EAAc,IAAI,EAAE,QAAF,CAAW,MAA7B,EAAqC,GAArC,EAA0C;AACtC,wBAAM,UAAU,EAAE,QAAF,CAAW,CAAX,CAAhB;;AAEA;AACA,wBAAI,IAAI;AACJ,8BAAM,SADF;AAEJ,kCAAU,EAFN;AAGJ,oCAAY,QAAQ;AAHhB,qBAAR;;AAMA,wBAAI,QAAQ,IAAR,KAAiB,CAArB,EAAwB;AACpB,0BAAE,QAAF,CAAW,WAAX,GAAyB,QAAQ,QAAR,CAAiB,GAAjB,CAAqB;AAAA,mCAAS,CAAC,MAAM,CAAN,CAAD,EAAW,MAAM,CAAN,CAAX,CAAT;AAAA,yBAArB,CAAzB;AACA,0BAAE,QAAF,CAAW,IAAX,GAAkB,YAAlB;AACH,qBAHD,MAIK,IAAI,QAAQ,IAAR,KAAiB,CAAjB,IAAsB,QAAQ,IAAR,KAAiB,CAA3C,EAA8C;AAC/C,0BAAE,QAAF,CAAW,WAAX,GAAyB,QAAQ,QAAR,CAAiB,GAAjB,CAAqB;AAAA,mCAC1C,KAAK,GAAL,CAAS;AAAA,uCAAS,CAAC,MAAM,CAAN,CAAD,EAAW,MAAM,CAAN,CAAX,CAAT;AAAA,6BAAT,CAD0C;AAAA,yBAArB,CAAzB;;AAIA,4BAAI,QAAQ,IAAR,KAAiB,CAArB,EAAwB;AACpB,8BAAE,QAAF,CAAW,IAAX,GAAkB,iBAAlB;AACH,yBAFD,MAGM;AACF,8BAAE,QAAF,GAAa,6BAAmB,EAAE,QAArB,CAAb,CADE,CAC2C;AAC7C,gCAAI,EAAE,QAAF,IAAc,IAAlB,EAAwB;AAAE;AACtB;AACH;AACJ;AACJ,qBAdI,MAeA;AACD;AACH;;AAED,+BAAW,QAAX,CAAoB,IAApB,CAAyB,CAAzB;AACH;AACJ;;AAED,mBAAO,UAAP;AACH;;;kCAEU,I,EAAM;AACb,mBAAO,KAAK,GAAZ;AACH;;;wCAEgB,I,EAAM,M,EAAQ,Q,EAAU;AACrC,gBAAI,kBAAkB,KAAK,KAAL,CAAW,QAAX,CAAtB;AACA,gBAAI,SAAS,KAAK,SAAL,CAAe,eAAf,CAAb;AACA,mBAAO,MAAP,GAAgB,KAAK,gBAAL,CAAsB,MAAtB,CAAhB;AACH;;;yCAEiB,M,EAAO;AACrB,iBAAK,IAAI,GAAT,IAAgB,MAAhB,EAAwB;AACpB,oBAAI,QAAQ,OAAO,GAAP,CAAZ;AACA,qBAAK,kBAAL,CAAwB,MAAM,QAA9B;AACH;;AAED;AACA,gBAAI,OAAO,KAAK,SAAZ,KAA0B,UAA9B,EAA0C;AACtC,oBAAI,OAAO,IAAP,CAAY,MAAZ,EAAoB,MAApB,KAA+B,CAA/B,IAAoC,OAAO,QAA/C,EAAyD;AACrD,2BAAO,QAAP,GAAkB,KAAK,SAAL,CAAe,OAAO,QAAtB,EAAgC,KAAK,UAArC,CAAlB,CADqD,CACe;AACvE,iBAFD,MAGK;AACD,6BAAS,KAAK,SAAL,CAAe,MAAf,EAAuB,KAAK,UAA5B,CAAT,CADC,CACiD;AACrD;AACJ;;AAED,mBAAO,MAAP;AACH;;AAED;;;;2CACoB,Q,EAAU;AAC1B;AACA;AACA,gBAAI,KAAK,MAAL,CAAY,wBAAhB,EAAyC;AACrC,oBAAI,oBAAoB,EAAxB;AACA,oBAAI,sBAAsB,EAAC,mBAAoB,IAArB,EAA1B;;AAEA,yBAAS,OAAT,CAAiB,mBAAW;AACxB,wBAAI,QAAQ,QAAR,IAAoB,IAAxB,EAA8B;AAC1B,+BAD0B,CAClB;AACX;;AAED,wBAAI,oBAAJ;AAAA,wBAAiB,yBAAjB;AACA,4BAAQ,QAAQ,QAAR,CAAiB,IAAzB;AACI,6BAAK,SAAL;AACI,0CAAc,QAAQ,QAAR,CAAiB,WAA/B;AACA,+CAAmB,6BAA6B,WAA7B,EAA0C,QAAQ,UAAlD,EAA8D,mBAA9D,CAAnB;AACA,8CAAkB,IAAlB,CAAuB,gBAAvB;AACA;AACJ,6BAAK,cAAL;AACI;AACA,0CAAc,QAAQ,QAAR,CAAiB,WAA/B;AACA,gCAAI,WAAW,CAAC,QAAhB;AACA,gCAAI,iBAAiB,CAArB;AACA,iCAAK,IAAI,QAAQ,CAAjB,EAAoB,QAAQ,YAAY,MAAxC,EAAgD,OAAhD,EAAyD;AACrD,oCAAI,OAAO,cAAI,WAAJ,CAAgB,YAAY,KAAZ,CAAhB,CAAX;AACA,oCAAI,OAAO,QAAX,EAAqB;AACjB,+CAAW,IAAX;AACA,qDAAiB,KAAjB;AACH;AACJ;AACD,+CAAmB,6BAA6B,YAAY,cAAZ,CAA7B,EAA0D,QAAQ,UAAlE,EAA8E,mBAA9E,CAAnB;AACA,8CAAkB,IAAlB,CAAuB,gBAAvB;AACA;AApBR;AAsBH,iBA5BD;;AA8BA;AACA,oCAAoB,kBAAkB,MAAlB,CAAyB;AAAA,2BAAK,CAAL;AAAA,iBAAzB,CAApB,CAnCqC,CAmCiB;AACtD,sBAAM,SAAN,CAAgB,IAAhB,CAAqB,KAArB,CAA2B,QAA3B,EAAqC,iBAArC;AACH;;AAED,mBAAO,QAAP;AACH;;AAED;;;;kCACW,I,EAAM;AACb,gBAAI,KAAK,IAAL,KAAc,SAAlB,EAA6B;AACzB,uBAAO;AACH,8BAAU;AACN,8BAAM,mBADA;AAEN,kCAAU,CAAC,IAAD;AAFJ;AADP,iBAAP;AAMH,aAPD,MAQK,IAAI,KAAK,IAAL,KAAc,mBAAlB,EAAuC;AACxC,uBAAO;AACH,8BAAU;AADP,iBAAP;AAGH,aAJI,MAKA;AACD,uBAAO,IAAP;AACH;AACJ;;;;;;AAIL;;;;;;IAIa,iB,WAAA,iB;;;AAET,+BAAY,MAAZ,EAAoB,OAApB,EAA6B;AAAA;;AAAA;;AAGzB;AAHyB,2IACnB,MADmB,EACX,OADW;;AAIzB,YAAI,CAAC,OAAK,iBAAL,CAAuB,OAAK,GAA5B,CAAL,EAAuC;AACnC;AACA,gBAAI,OAAO,IAAP,KAAgB,SAApB,EAA+B;AAAA;;AAC3B;AACA,8BAAO,IAAI,aAAJ,CAAkB,MAAlB,CAAP;AACH,aAHD,MAIK;AAAA;;AACD;AACA,+BAAO,IAAP;AACH;AACJ;AACD;AACH;;;;wCAEgB,I,EAAM,M,EAAQ,Q,EAAU;AACrC,gBAAI,OAAO,KAAK,KAAL,CAAW,QAAX,CAAX;AACA,iBAAK,cAAL,CAAoB,IAApB,EAA0B,IAA1B,EAAgC,MAAhC;AACH;;;uCAEe,I,EAAM,I,EAAM,M,EAAQ;AAChC;AACA,gBAAI,OAAO,KAAK,SAAZ,KAA0B,UAA9B,EAA0C;AACtC,uBAAO,KAAK,SAAL,CAAe,IAAf,EAAqB,KAAK,UAA1B,CAAP;AACH;;AAED,mBAAO,MAAP,GAAgB,cAAc,SAAd,CAAwB,SAAxB,CAAkC,IAAlC,CAAhB;;AAEA;AACA,gBAAI,SAAS;AACT,wBAAQ,KAAK,MADJ;AAET,qBAAK,cAAI,aAAJ,CAAkB,cAAI,QAAJ,CAAa,KAAK,MAAlB,EAA0B,EAAE,GAAG,IAAL,EAA1B,CAAlB;AAFI,aAAb;;AAKA,kCAAW,WAAX,CAAuB,MAAvB,EAdgC,CAcA;AAChC,kCAAW,SAAX,CAAqB,MAArB,EAA6B,MAA7B,EAfgC,CAeM;AACzC;;;;;;AAIL,sBAAW,QAAX,CAAoB,iBAApB,EAAuC,SAAvC,E,CAAwD;;AAExD;AACA,SAAS,4BAAT,CAAuC,WAAvC,EAAoD,UAApD,EAAgE,aAAhE,EAA+E;AAC3E,QAAI,WAAW,cAAI,QAAJ,CAAa,WAAb,CAAf;AACA,QAAI,CAAC,QAAL,EAAe;AACX;AACH;;AAED;AACA,QAAI,sBAAsB,EAA1B;AACA,WAAO,MAAP,CAAc,mBAAd,EAAmC,UAAnC,EAA+C,aAA/C;;AAEA,WAAO;AACH,cAAM,SADH;AAEH,oBAAY,mBAFT;AAGH,kBAAU;AACN,kBAAM,OADA;AAEN,yBAAa;AAFP;AAHP,KAAP;AAQH;;;;;;;;;;;;QCtLe,kB,GAAA,kB;;AA9FhB;;;;AACA;;;;AAEA;;;;AACA;;;;;;;;;;AAEA;;;;IAIa,S,WAAA,S;;;AAET,uBAAa,MAAb,EAAqB,OAArB,EAA8B;AAAA;;AAAA,0HACpB,MADoB,EACZ,OADY;;AAE1B,cAAK,aAAL,GAAqB,aAArB,CAF0B,CAEU;AAFV;AAG7B;;;;wCAEgB,I,EAAM,M,EAAQ,Q,EAAU;AACrC;AACA,gBAAI,OAAO,IAAI,UAAJ,CAAe,QAAf,CAAX;AACA,gBAAI,SAAS,kBAAQ,IAAR,CAAb;AACA,mBAAO,IAAP,GAAc,2BAAe,MAAf,CAAd;AACA,mBAAO,MAAP,GAAgB,KAAK,SAAL,CAAe,OAAO,IAAtB,CAAhB;;AAEA;AACA,gBAAI,OAAO,KAAK,SAAZ,KAA0B,UAA9B,EAA0C;AACtC,uBAAO,MAAP,GAAgB,KAAK,SAAL,CAAe,OAAO,MAAtB,EAA8B,KAAK,UAAnC,CAAhB;AACH;;AAED,mBAAO,OAAO,IAAd,CAZqC,CAYjB;AACvB;;AAED;AACA;;;;kCACW,I,EAAM;AACb,gBAAI,SAAS,EAAb;AACA,iBAAK,IAAI,CAAT,IAAc,KAAK,MAAnB,EAA2B;AACvB,oBAAI,QAAQ,KAAK,MAAL,CAAY,CAAZ,CAAZ;AACA,oBAAI,QAAQ,cAAI,UAAJ,GAAiB,MAAM,MAAnC;AACA,oBAAI,gBAAgB;AAChB,0BAAM,mBADU;AAEhB,8BAAU;AAFM,iBAApB;;AAKA,qBAAK,IAAI,IAAE,CAAX,EAAc,IAAI,MAAM,MAAxB,EAAgC,GAAhC,EAAqC;AACjC,wBAAI,UAAU,MAAM,OAAN,CAAc,CAAd,CAAd;AACA,wBAAI,kBAAkB;AAClB,8BAAM,SADY;AAElB,kCAAU,EAFQ;AAGlB,oCAAY,QAAQ;AAHF,qBAAtB;;AAMA,wBAAI,WAAW,gBAAgB,QAA/B;AACA,wBAAI,cAAc,QAAQ,YAAR,EAAlB;AACA,yBAAK,IAAI,IAAE,CAAX,EAAc,IAAI,YAAY,MAA9B,EAAsC,GAAtC,EAA2C;AACvC,4BAAI,OAAO,YAAY,CAAZ,CAAX;AACA,6BAAK,IAAI,IAAE,CAAX,EAAc,IAAI,KAAK,MAAvB,EAA+B,GAA/B,EAAoC;AAChC,iCAAK,CAAL,IAAU,CACN,KAAK,CAAL,EAAQ,CAAR,GAAY,KADN,EAEN,KAAK,CAAL,EAAQ,CAAR,GAAY,KAFN,CAAV;AAIH;AACJ;AACD,6BAAS,WAAT,GAAuB,WAAvB;;AAEA,wBAAI,8BAAkB,KAAlB,CAAwB,QAAQ,IAAhC,MAA0C,OAA9C,EAAuD;AACnD,iCAAS,IAAT,GAAgB,OAAhB;AACA,iCAAS,WAAT,GAAuB,SAAS,WAAT,CAAqB,CAArB,EAAwB,CAAxB,CAAvB;AACH,qBAHD,MAIK,IAAI,8BAAkB,KAAlB,CAAwB,QAAQ,IAAhC,MAA0C,YAA9C,EAA4D;AAC7D,4BAAI,YAAY,MAAZ,KAAuB,CAA3B,EAA8B;AAC1B,qCAAS,IAAT,GAAgB,YAAhB;AACA,qCAAS,WAAT,GAAuB,SAAS,WAAT,CAAqB,CAArB,CAAvB;AACH,yBAHD,MAIK;AACD,qCAAS,IAAT,GAAgB,iBAAhB;AACH;AACJ,qBARI,MASA,IAAI,8BAAkB,KAAlB,CAAwB,QAAQ,IAAhC,MAA0C,SAA9C,EAAyD;AAC1D,mCAAW,mBAAmB,QAAnB,CAAX,CAD0D,CACjB;AAC5C;;AAED,kCAAc,QAAd,CAAuB,IAAvB,CAA4B,eAA5B;AACH;AACD,uBAAO,CAAP,IAAY,aAAZ;AACH;AACD,mBAAO,MAAP;AACH;;;;;;AAIL;AACA;AACA;;;AACO,SAAS,kBAAT,CAA6B,IAA7B,EAAmC;AACtC,QAAI,QAAQ,EAAZ;AACA,QAAI,OAAO,EAAX;AACA,QAAI,sBAAJ;AACA,SAAK,IAAI,IAAE,CAAX,EAAc,IAAI,KAAK,WAAL,CAAiB,MAAnC,EAA2C,GAA3C,EAAgD;AAC5C,YAAI,OAAO,KAAK,WAAL,CAAiB,CAAjB,CAAX;AACA,YAAI,UAAU,cAAI,WAAJ,CAAgB,IAAhB,CAAd;AACA,YAAI,WAAW,IAAf,EAAqB;AACjB,qBADiB,CACP;AACb;;AAED,wBAAgB,iBAAiB,OAAjC,CAP4C,CAOF;;AAE1C,YAAI,YAAY,aAAZ,IAA6B,KAAK,MAAL,GAAc,CAA/C,EAAkD;AAC9C,kBAAM,IAAN,CAAW,IAAX;AACA,mBAAO,EAAP;AACH;AACD,aAAK,IAAL,CAAU,IAAV;AACH;AACD,QAAI,KAAK,MAAL,GAAc,CAAlB,EAAqB;AACjB,cAAM,IAAN,CAAW,IAAX;AACH;;AAED;AACA,QAAI,MAAM,MAAN,KAAiB,CAArB,EAAwB;AACpB,aAAK,IAAL,GAAY,SAAZ;AACA,aAAK,WAAL,GAAmB,MAAM,CAAN,CAAnB;AACH,KAHD,MAIK,IAAI,MAAM,MAAN,GAAe,CAAnB,EAAsB;AACvB,aAAK,IAAL,GAAY,cAAZ;AACA,aAAK,WAAL,GAAmB,KAAnB;AACH,KAHI,MAIA;AACD,eAAO,IAAP;AACH;;AAED,WAAO,IAAP;AACH;;AAED,sBAAW,QAAX,CAAoB,SAApB,EAA+B,KAA/B;;;;;;;;;;;;ACrIA;;;;AACA;;;;AACA;;;;;;;;;;;;;;IAEa,gB,WAAA,gB;;;AAET,8BAAY,MAAZ,EAAoB,OAApB,EAA6B;AAAA;;AAAA,wIACnB,MADmB,EACX,OADW;;AAGzB,YAAI,MAAK,OAAL,CAAa,OAAb,CAAqB,MAAK,IAA1B,MAAoC,CAAC,CAAzC,EAA4C;AACxC,kBAAK,OAAL,CAAa,OAAb,CAAqB,MAAK,IAA1B,EADwC,CACP;AACpC;AACD,cAAK,SAAL,GAAiB,OAAO,SAAxB,CANyB,CAMU;;AAEnC;AACA;AACA,cAAK,QAAL,GAAgB,EAAhB;AAVyB;AAW5B;;;;6BAEI,I,EAAM;AACP,iBAAK,WAAL,GAAmB,EAAnB;AACA,iBAAK,WAAL,CAAiB,MAAjB,GAA0B,EAA1B;AACA,iBAAK,SAAL,GAAiB,KAAK,SAAtB;AACA,iBAAK,OAAL,gCAAmB,KAAK,OAAxB,GAJO,CAI2B;;AAElC;AACA,gBAAI,QAAQ,cAAI,UAAhB;AACA,iBAAK,WAAL,CAAiB,MAAjB,GAA0B;AACtB,0BAAU;AACN,0BAAM,mBADA;AAEN,8BAAU,CAAC;AACP,kCAAU;AACN,kCAAM,SADA;AAEN,yCAAa,CAAC,CACV,CAAC,CAAD,EAAI,CAAJ,CADU,EACF,CAAC,KAAD,EAAQ,CAAR,CADE,EAEV,CAAC,KAAD,EAAQ,CAAC,KAAT,CAFU,EAEO,CAAC,CAAD,EAAI,CAAC,KAAL,CAFP,EAEoB,CAAC,CAAD,EAAI,CAAJ,CAFpB,CAAD;AAFP,yBADH;AAQP,oCAAY;AARL,qBAAD;AAFJ;AADY,aAA1B;;AAgBA,iBAAK,eAAL,GAAuB,IAAvB;AACA,mBAAO,QAAQ,OAAR,CAAgB,IAAhB,CAAP;AACH;;AAED;;;;oCACa,I,EAAM;AACf,gBAAI,MAAM,KAAK,MAAL,CAAY,GAAtB;AACA,gBAAI,CAAC,KAAK,QAAL,CAAc,GAAd,CAAL,EAAyB;AACrB,oBAAI,SAAS,eAAK,qBAAL,CAA2B,KAAK,MAAhC,EAAwC,KAAK,QAA7C,CAAb;AACA,oBAAI,MAAM,KAAK,SAAL,CAAe,KAAK,GAApB,EAAyB,EAAE,cAAF,EAAzB,CAAV;AACA,qBAAK,QAAL,CAAc,GAAd,IAAqB,EAAE,QAAF,EAAO,WAAW,KAAK,SAAvB,EAAkC,cAAlC,EAArB;AACH;AACD,mBAAO,KAAK,QAAL,CAAc,GAAd,CAAP;AACH;;;;;;AAIL,sBAAW,QAAX,CAAoB,gBAApB,EAAsC,QAAtC;;;;;;;;;;;;;;AC5DA;;;;AACA;;AAEA;;IAAY,Q;;;;;;;;;;;;AAEZ;;;;;IAKa,c,WAAA,c;;;;;;;;;;;wCAEQ,I,EAAM,M,EAAQ,Q,EAAU;AACrC,gBAAI,OAAO,KAAK,KAAL,CAAW,QAAX,CAAX;AACA,mBAAO,KAAK,SAAL,CAAe,IAAf,CAAP;;AAEA,gBAAI,SAAS,KAAK,SAAL,CAAe,IAAf,CAAb;AACA,6IAAuB,MAAvB;AACA,mBAAO,MAAP,GAAgB,MAAhB;AACH;;;kCAEU,I,EAAM;AACb;AACA,gBAAI,KAAK,OAAL,IACA,OAAO,IAAP,CAAY,KAAK,OAAjB,EAA0B,MAA1B,KAAqC,CADzC,EAC4C;AACxC,oBAAI,QAAQ,OAAO,IAAP,CAAY,KAAK,OAAjB,EAA0B,CAA1B,CAAZ;AACA,uBAAO,mBAAmB,IAAnB,EAAyB,KAAK,OAAL,CAAa,KAAb,CAAzB,CAAP;AACH;AACD;AALA,iBAMK;AACD,wBAAI,SAAS,EAAb;AACA,yBAAK,IAAI,GAAT,IAAgB,KAAK,OAArB,EAA8B;AAC1B,+BAAO,GAAP,IAAc,mBAAmB,IAAnB,EAAyB,KAAK,OAAL,CAAa,GAAb,CAAzB,CAAd;AACH;AACD,2BAAO,MAAP;AACH;AACD,mBAAO,IAAP;AACH;;;;;;AAIL,SAAS,kBAAT,CAA6B,QAA7B,EAAuC,MAAvC,EAA+C;AAC3C,QAAI,UAAU,SAAS,OAAT,CAAiB,QAAjB,EAA2B,MAA3B,CAAd;;AAEA;AACA,QAAI,QAAQ,IAAR,KAAiB,SAArB,EAAgC;AAC5B,kBAAU;AACN,kBAAM,mBADA;AAEN,sBAAU,CAAC,OAAD;AAFJ,SAAV;AAIH;AACD,WAAO,OAAP;AACH;;AAGD;;;;;IAIa,kB,WAAA,kB;;;AAET,gCAAY,MAAZ,EAAoB,OAApB,EAA6B;AAAA;;AAGzB;AAHyB,6IACnB,MADmB,EACX,OADW;;AAIzB,YAAI,CAAC,OAAK,iBAAL,CAAuB,OAAK,GAA5B,CAAL,EAAuC;AAAA;;AACnC,0BAAO,IAAI,cAAJ,CAAmB,MAAnB,CAAP;AACH;AANwB;AAO5B;;;;wCAEgB,I,EAAM,M,EAAQ,Q,EAAU;AACrC,gBAAI,OAAO,KAAK,KAAL,CAAW,QAAX,CAAX;AACA,mBAAO,eAAe,SAAf,CAAyB,SAAzB,CAAmC,IAAnC,CAAP;AACA,iBAAK,cAAL,CAAoB,IAApB,EAA0B,IAA1B,EAAgC,MAAhC;AACH;;;;;;AAIL,sBAAW,QAAX,CAAoB,kBAApB,EAAwC,UAAxC,E,CAA4D;;;;;;;;;;;QCiD5C,W,GAAA,W;AA/HhB,SAAS,OAAT,CAAiB,CAAjB,EAAqB;AAAE,WAAO,KAAK,IAAZ;AAAmB;AAC1C,SAAS,IAAT,CAAc,CAAd,EAAqB;AAAE,WAAO,MAAM,CAAN,GAAU,GAAjB;AAAsB;;AAE7C,SAAS,UAAT,CAAoB,KAApB,EAA2B;AACvB,QAAI,OAAO,KAAP,KAAiB,QAArB,EAA+B;AAC3B,eAAO,MAAM,KAAN,GAAc,GAArB;AACH;AACD,WAAO,KAAP;AACH;;AAED,SAAS,MAAT,CAAgB,GAAhB,EAAqB;AACjB,QAAI,IAAI,CAAJ,MAAW,GAAf,EAAoB;AAChB,eAAO,eAAe,IAAI,SAAJ,CAAc,CAAd,CAAf,GAAkC,KAAzC;AACH;AACD,WAAO,kCAAkC,GAAlC,GAAwC,KAA/C;AACH;;AAED,SAAS,SAAT,CAAmB,GAAnB,EAAwB,KAAxB,EAA+B;AAC3B,WAAO,QAAP;AACH;;AAED,SAAS,aAAT,CAAuB,GAAvB,EAA4B,KAA5B,EAAmC;AAC/B,WAAO,KAAK,WAAW,KAAX,IAAoB,OAApB,GAA8B,OAAO,GAAP,CAAnC,CAAP;AACH;;AAED,SAAS,UAAT,CAAoB,GAApB,EAAyB,MAAzB,EAAiC;AAC7B,WAAO,KAAK,OAAO,GAAP,CAAW,UAAU,CAAV,EAAa;AAAE,eAAO,cAAc,GAAd,EAAmB,CAAnB,CAAP;AAA+B,KAAzD,EAA2D,IAA3D,CAAgE,MAAhE,CAAL,CAAP;AACH;;AAED,SAAS,WAAT,CAAqB,MAArB,EAA6B,MAA7B,EAAqC;AACjC,WAAO,KAAK,OAAO,MAAP,CAAc,OAAd,EAAuB,GAAvB,CAA2B,UAAU,CAAV,EAAa;AAChD,eAAO,KAAK,EAAE,IAAF,CAAO,MAAP,CAAL,CAAP;AACH,KAFW,EAET,IAFS,CAEJ,MAAM,MAAN,GAAe,GAFX,CAAL,CAAP;AAGH;;AAED,SAAS,GAAT,CAAa,CAAb,EAAgB,MAAhB,EAAwB,OAAxB,EAAiC;AAC7B,WAAQ,UAAU,OAAO,MAAP,GAAgB,CAA3B,GAAgC,YAAY,OAAO,GAAP,CAAW,UAAS,CAAT,EAAY;AAAE,eAAO,YAAY,CAAZ,EAAe,OAAf,CAAP;AAAiC,KAA1D,CAAZ,EAAyE,IAAzE,CAAhC,GAAiH,MAAxH;AACH;;AAED,SAAS,GAAT,CAAa,CAAb,EAAgB,MAAhB,EAAwB,OAAxB,EAAiC;AAC7B,WAAQ,UAAU,OAAO,MAAP,GAAgB,CAA3B,GAAgC,YAAY,OAAO,GAAP,CAAW,UAAS,CAAT,EAAY;AAAE,eAAO,YAAY,CAAZ,EAAe,OAAf,CAAP;AAAiC,KAA1D,CAAZ,EAAyE,IAAzE,CAAhC,GAAiH,MAAxH;AACH;;AAED,SAAS,GAAT,CAAa,GAAb,EAAkB,KAAlB,EAAyB,OAAzB,EAAkC;AAC9B,WAAO,MAAM,KAAK,YAAY,KAAZ,EAAmB,OAAnB,EAA4B,IAA5B,CAAiC,MAAjC,CAAL,CAAb;AACH;;AAED,SAAS,IAAT,CAAc,GAAd,EAAmB,MAAnB,EAA2B,OAA3B,EAAoC;AAChC,WAAO,MAAM,KAAK,IAAI,IAAJ,EAAU,MAAV,EAAkB,OAAlB,CAAL,CAAb;AACH;;AAED,SAAS,sBAAT,CAAgC,GAAhC,EAAqC,KAArC,EAA4C;AACxC,WAAO,KAAK,OAAO,GAAP,KAAe,QAAQ,MAAR,GAAiB,MAAhC,IAA2C,MAAhD,CAAP;AACH;;AAED,SAAS,UAAT,CAAoB,GAApB,EAAyB,MAAzB,EAAiC,OAAjC,EAA0C;AACtC,QAAI,cAAc,EAAlB;AACA,QAAI,YAAY,WAAY,OAAO,QAAQ,cAAf,KAAkC,UAA9C,IAA6D,QAAQ,cAArF;;AAEA,QAAI,OAAO,GAAX,EAAgB;AACZ,YAAI,MAAM,YAAY,UAAU,OAAO,GAAjB,CAAZ,GAAoC,OAAO,GAArD;AACA,oBAAY,IAAZ,CAAiB,KAAK,OAAO,GAAP,CAAL,GAAmB,KAAnB,GAA2B,GAA5C;AACH;;AAED,QAAI,OAAO,GAAX,EAAgB;AACZ,YAAI,MAAM,YAAY,MAAM,UAAU,OAAO,GAAjB,CAAlB,GAA0C,OAAO,GAA3D;AACA,oBAAY,IAAZ,CAAiB,KAAK,OAAO,GAAP,CAAL,GAAmB,MAAnB,GAA4B,GAA7C;AACH;;AAED,WAAO,KAAK,YAAY,IAAZ,CAAiB,MAAjB,CAAL,CAAP;AACH;;AAED,SAAS,WAAT,CAAqB,MAArB,EAA6B,OAA7B,EAAsC;AAClC,QAAI,YAAY,EAAhB;;AAEA;AACA,QAAI,OAAO,MAAP,KAAkB,UAAtB,EAAkC;AAC9B,eAAO,CAAC,KAAK,OAAO,QAAP,KAAoB,WAAzB,CAAD,CAAP;AACH;AACD;AAHA,SAIK,IAAI,MAAM,OAAN,CAAc,MAAd,CAAJ,EAA2B;AAC5B,mBAAO,CAAC,IAAI,IAAJ,EAAU,MAAV,EAAkB,OAAlB,CAAD,CAAP;AACH;AACD;AAHK,aAIA,IAAI,UAAU,IAAd,EAAoB;AACrB,uBAAO,CAAC,MAAD,CAAP;AACH;;AAED;AACA,QAAI,OAAO,OAAO,IAAP,CAAY,MAAZ,CAAX;AACA,SAAK,IAAI,IAAE,CAAX,EAAc,IAAI,KAAK,MAAvB,EAA+B,GAA/B,EAAoC;AAChC,YAAI,MAAM,KAAK,CAAL,CAAV;;AAEA,YAAI,QAAQ,OAAO,GAAP,CAAZ;AAAA,YACI,cAAe,KAAf,yCAAe,KAAf,CADJ;AAEA,YAAI,SAAS,QAAT,IAAqB,SAAS,QAAlC,EAA4C;AACxC,sBAAU,IAAV,CAAe,cAAc,GAAd,EAAmB,KAAnB,CAAf;AACH,SAFD,MAEO,IAAI,SAAS,SAAb,EAAwB;AAC3B,sBAAU,IAAV,CAAe,uBAAuB,GAAvB,EAA4B,KAA5B,CAAf;AACH,SAFM,MAEA,IAAI,QAAQ,KAAZ,EAAmB;AACtB,sBAAU,IAAV,CAAe,IAAI,GAAJ,EAAS,KAAT,EAAgB,OAAhB,CAAf;AACH,SAFM,MAEA,IAAI,QAAQ,KAAZ,EAAmB;AACtB,sBAAU,IAAV,CAAe,IAAI,GAAJ,EAAS,KAAT,EAAgB,OAAhB,CAAf;AACH,SAFM,MAEA,IAAI,QAAQ,KAAZ,EAAmB;AACtB,sBAAU,IAAV,CAAe,IAAI,GAAJ,EAAS,KAAT,EAAgB,OAAhB,CAAf;AACH,SAFM,MAEA,IAAI,QAAQ,MAAZ,EAAoB;AACvB,sBAAU,IAAV,CAAe,KAAK,GAAL,EAAU,KAAV,EAAiB,OAAjB,CAAf;AACH,SAFM,MAEA,IAAI,MAAM,OAAN,CAAc,KAAd,CAAJ,EAA0B;AAC7B,sBAAU,IAAV,CAAe,WAAW,GAAX,EAAgB,KAAhB,CAAf;AACH,SAFM,MAEA,IAAI,SAAS,QAAT,IAAqB,SAAS,IAAlC,EAAwC;AAC3C,gBAAI,MAAM,GAAN,IAAa,MAAM,GAAvB,EAA4B;AACxB,0BAAU,IAAV,CAAe,WAAW,GAAX,EAAgB,KAAhB,EAAuB,OAAvB,CAAf;AACH;AACJ,SAJM,MAIA,IAAI,SAAS,IAAb,EAAmB;AACtB,sBAAU,IAAV,CAAe,UAAU,GAAV,EAAe,KAAf,CAAf;AACH,SAFM,MAEA;AACH,kBAAM,IAAI,KAAJ,CAAU,2BAA2B,KAArC,CAAN;AACH;AACJ;;AAED,WAAO,KAAK,MAAL,KAAgB,CAAhB,GAAoB,CAAC,MAAD,CAApB,GAA+B,SAAtC;AACH;;AAED,SAAS,cAAT,CAAwB,SAAxB,EAAmC;AAC/B,WAAO,KAAK,UAAU,IAAV,CAAe,MAAf,CAAL,CAAP;AACH;;AAEM,SAAS,WAAT,CAAqB,MAArB,EAA6B,OAA7B,EAAsC;AACzC,QAAI,UAAU,IAAd,EAAoB;AAAE,eAAO,YAAY;AAAE,mBAAO,IAAP;AAAc,SAAnC;AAAsC;AAC5D;AACA,WAAO,IAAI,QAAJ,CAAa,SAAb,EAAwB,YAAY,eAAe,YAAY,MAAZ,EAAoB,OAApB,CAAf,CAAZ,GAA2D,GAAnF,CAAP;AACH;;;;;;;;;;;;;;;;QCzHe,U,GAAA,U;QAiBA,U,GAAA,U;QAsWA,U,GAAA,U;QAaA,a,GAAA,a;QAaA,c,GAAA,c;QAoDA,W,GAAA,W;QAcA,Y,GAAA,Y;;AA7dhB;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;;;;;;;;;AAEA;AACO,IAAM,8BAAW,CAAC,QAAD,EAAW,MAAX,EAAmB,SAAnB,EAA8B,SAA9B,EAAyC,MAAzC,CAAjB;;AAEP,IAAI,cAAc,EAAlB;AACO,SAAS,UAAT,GAAuB;AAC1B,WAAO,WAAP;AACH;;AAED,SAAS,QAAT,CAAmB,MAAnB,EAA2B;AACvB,QAAI,OAAO,MAAP,GAAgB,CAApB,EAAuB;AACnB,YAAI,IAAI,OAAO,CAAP,CAAR;AACA,aAAK,IAAI,IAAE,CAAX,EAAc,IAAI,OAAO,MAAzB,EAAiC,GAAjC,EAAsC;AAClC,iBAAK,MAAM,OAAO,CAAP,CAAX;AACH;;AAED,eAAO,CAAP;AACH;AACD,WAAO,OAAO,CAAP,CAAP;AACH;;AAED;AACO,SAAS,UAAT,CAAoB,aAApB,EAAmC,KAAnC,EAA0C;AAC7C,QAAI,cAAJ;AAAA,QAAW,YAAY,CAAvB;;AAEA;AACA,SAAK,IAAI,IAAE,CAAX,EAAc,IAAI,cAAc,MAAhC,EAAwC,GAAxC,EAA6C;AACzC,YAAI,cAAc,CAAd,EAAiB,MAAjB,GAA0B,SAA9B,EAAyC;AACrC,wBAAY,cAAc,CAAd,EAAiB,MAA7B;AACH;AACJ;;AAED;AACA,QAAI,cAAc,CAAlB,EAAqB;AACjB,eAAO,IAAP;AACH;;AAED;AACA,QAAI,OAAO;AACP,iBAAS,IADF,CACQ;AADR,KAAX;;AAIA;;AApB6C,+BAqBpC,CArBoC;AAsBzC;AACA,gBAAQ,cAAc,GAAd,CAAkB;AAAA,mBAAQ,KAAK,CAAL,KAAW,KAAK,CAAL,EAAQ,KAAR,CAAnB;AAAA,SAAlB,CAAR;AACA,YAAI,MAAM,MAAN,KAAiB,CAArB,EAAwB;AACpB;AACH;;AAED;AACA;AACA,cAAM,IAAN,CAAW,UAAC,CAAD,EAAI,CAAJ;AAAA,mBAAU,CAAC,KAAK,EAAE,UAAR,KAAuB,KAAK,EAAE,UAA9B,IAA4C,CAA5C,GAAgD,CAAC,CAA3D;AAAA,SAAX;;AAEA;AACA,0CAAa,IAAb,4BAAsB,KAAtB;;AAEA;AACA;AACA,eAAO,KAAK,UAAZ;AArCyC;;AAqB7C,SAAK,IAAI,IAAE,CAAX,EAAc,IAAI,SAAlB,EAA6B,GAA7B,EAAkC;AAAA,yBAAzB,CAAyB;;AAAA,iCAI1B;AAaP;;AAED;AACA,QAAI,KAAK,OAAL,KAAiB,KAArB,EAA4B;AACxB,eAAO,IAAP;AACH;;AAED,WAAO,IAAP;AACH;;AAED,IAAM,YAAY,CAAC,KAAD,EAAQ,KAAR,EAAe,KAAf,EAAsB,MAAtB,CAAlB;;IAEM,K;AAEF,yBAA6E;AAAA,YAA/D,KAA+D,QAA/D,KAA+D;AAAA,YAAxD,IAAwD,QAAxD,IAAwD;AAAA,YAAlD,MAAkD,QAAlD,MAAkD;AAAA,YAA1C,IAA0C,QAA1C,IAA0C;AAAA,YAApC,OAAoC,QAApC,OAAoC;AAAA,YAA3B,OAA2B,QAA3B,OAA2B;AAAA,YAAlB,MAAkB,QAAlB,MAAkB;AAAA,YAAV,MAAU,QAAV,MAAU;;AAAA;;AACzE,aAAK,EAAL,GAAU,MAAM,EAAN,EAAV;AACA,aAAK,WAAL,GAAmB,MAAM,IAAzB;AACA,aAAK,MAAL,GAAc,MAAd;AACA,aAAK,IAAL,GAAY,IAAZ;AACA,aAAK,SAAL,GAAiB,KAAK,MAAL,GAAe,KAAK,MAAL,CAAY,SAAZ,GAAwB,GAAxB,GAA8B,KAAK,IAAlD,GAA0D,KAAK,IAAhF;AACA,aAAK,IAAL,GAAY,IAAZ;AACA,aAAK,MAAL,GAAc,MAAd;AACA,aAAK,MAAL,GAAc,MAAd;AACA,aAAK,QAAL,GAAgB,KAAhB;;AAEA,kBAAW,YAAY,SAAb,GAA0B,OAA1B,GAAoC,OAA9C,CAXyE,CAWlB;AACvD,YAAI,KAAK,MAAL,IAAe,KAAK,MAAL,CAAY,OAAZ,KAAwB,KAA3C,EAAkD;AAC9C,iBAAK,OAAL,GAAe,KAAf,CAD8C,CACxB;AACzB,SAFD,MAGK;AACD,iBAAK,OAAL,GAAgB,YAAY,KAA5B,CADC,CACmC;AACvC;;AAED;AACA,YAAI,KAAK,IAAT,EAAe;AACX,iBAAK,IAAI,KAAT,IAAkB,KAAK,IAAvB,EAA6B;AACzB,qBAAK,IAAL,CAAU,KAAV,IAAoB,KAAK,IAAL,CAAU,KAAV,KAAoB,IAArB,GAA6B,EAA7B,GAAkC,KAAK,IAAL,CAAU,KAAV,CAArD;AACA,oBAAI,QAAO,KAAK,IAAL,CAAU,KAAV,CAAP,MAA4B,QAAhC,EAA0C;AACtC;AACA,wBAAI,wBAAqB,KAArB,qBAAyC,KAAK,SAA9C,qCAAJ;AACA,gDAA2B,KAA3B,UAAqC,KAAK,IAAL,CAAU,KAAV,CAArC;AACA,uCAAI,MAAJ,EAAY,GAAZ,EAJsC,CAIpB;;AAElB,2BAAO,KAAK,IAAL,CAAU,KAAV,CAAP;AACH,iBAPD,MAQK;AACD,yBAAK,IAAL,CAAU,KAAV,EAAiB,UAAjB,GAA8B,KAAK,SAAnC;AACH;AACJ;AACJ;AACJ;;;;gCAEQ;AACL,+BAAI,OAAJ,wBAAgC,KAAK,SAArC;AACA,iBAAK,WAAL;AACA,iBAAK,SAAL;AACA,iBAAK,QAAL,GAAgB,IAAhB;AACH;;;oCAEW;AACR,iBAAK,IAAL,GAAY,gBAAM,kBAAN,CAAyB,KAAK,IAA9B,EAAoC,0BAAY,YAAhD,CAAZ;AACA,iBAAK,cAAL,GAAsB,cAAc,IAAd,CAAtB;AACH;;;sCAEa;AACV,iBAAK,eAAL,GAAuB,KAAK,MAA5B;AACA,iBAAK,MAAL,GAAc,gBAAM,kBAAN,CAAyB,KAAK,MAA9B,EAAsC,0BAAY,YAAlD,CAAd;;AAEA,gBAAI,eAAc,KAAK,MAAnB,CAAJ;AACA,gBAAI,KAAK,MAAL,IAAe,IAAf,IAAuB,SAAS,QAAhC,IAA4C,SAAS,UAAzD,EAAqE;AACjE;AACA,oBAAI,4BAA0B,KAAK,SAA/B,8DAAJ;AACA,oDAAmC,KAAK,MAAxC;AACA,mCAAI,MAAJ,EAAY,GAAZ,EAJiE,CAI/C;AAClB;AACH;;AAED,gBAAI;AACA,qBAAK,UAAL;AACA,qBAAK,gBAAL;AACA,oBAAI,KAAK,MAAL,IAAe,IAAf,KAAwB,OAAO,KAAK,MAAZ,KAAuB,UAAvB,IAAqC,OAAO,IAAP,CAAY,KAAK,MAAjB,EAAyB,MAAzB,GAAkC,CAA/F,CAAJ,EAAuG;AACnG,yBAAK,MAAL,GAAc,yBAAY,KAAK,MAAjB,EAAyB,aAAzB,CAAd;AACH,iBAFD,MAGK;AACD,yBAAK,MAAL,GAAc,IAAd;AACH;AACJ,aATD,CAUA,OAAM,CAAN,EAAS;AACL;AACA,oBAAI,6BAA0B,KAAK,SAA/B,8BAAkE,KAAK,SAAL,CAAe,KAAK,MAApB,CAAlE,OAAJ;AACA,iDAA6B,EAAE,OAA/B,yBAAyD,EAAE,KAA3D;AACA,mCAAI,MAAJ,EAAY,IAAZ,EAJK,CAIa;AACrB;AACJ;;AAED;;;;qCACa;AACT,gBAAI,OAAO,KAAK,MAAL,IAAe,KAAK,MAAL,CAAY,KAAtC;AACA,gBAAI,eAAe,IAAf,yCAAe,IAAf,CAAJ;AACA,gBAAI,QAAQ,IAAR,IAAgB,UAAU,UAA9B,EAA0C;AAAE;AACxC,qBAAK,KAAL,GAAa,EAAb;;AAEA,oBAAI,UAAU,QAAd,EAAwB;AACpB,yBAAK,KAAL,CAAW,IAAX,IAAmB,IAAnB;AACH,iBAFD,MAGK,IAAI,MAAM,OAAN,CAAc,IAAd,CAAJ,EAAyB;AAC1B,yBAAK,IAAI,IAAE,CAAX,EAAc,IAAI,KAAK,MAAvB,EAA+B,GAA/B,EAAoC;AAChC,6BAAK,KAAL,CAAW,KAAK,CAAL,CAAX,IAAsB,IAAtB;AACH;AACJ,iBAJI,MAKA,IAAI,UAAU,QAAV,KAAuB,KAAK,GAAL,IAAY,IAAZ,IAAoB,KAAK,GAAL,IAAY,IAAvD,CAAJ,EAAkE;AACnE,wBAAI,OAAO,KAAK,GAAL,IAAY,CAAvB;AACA,wBAAI,OAAO,KAAK,GAAL,IAAY,EAAvB,CAFmE,CAExC;AAC3B,yBAAK,IAAI,KAAE,IAAX,EAAiB,KAAI,IAArB,EAA2B,IAA3B,EAAgC;AAC5B,6BAAK,KAAL,CAAW,EAAX,IAAgB,IAAhB;AACH;AACJ;;AAED,uBAAO,KAAK,MAAL,CAAY,KAAnB,CAnBsC,CAmBZ;AAC7B;AACJ;;;2CAEkB;AAAA;;AACf,gBAAI,CAAC,KAAK,MAAN,IAAgB,MAAM,OAAN,CAAc,KAAK,MAAnB,CAAhB,IAA8C,OAAO,KAAK,MAAZ,KAAuB,UAAzE,EAAqF;AACjF;AACH;;AAED,mBAAO,IAAP,CAAY,KAAK,MAAjB,EAAyB,OAAzB,CAAiC,eAAO;AACpC,oBAAI,UAAU,OAAV,CAAkB,GAAlB,MAA2B,CAAC,CAAhC,EAAmC;AAC/B,wBAAI,MAAM,MAAK,MAAL,CAAY,GAAZ,CAAV;AACA,wBAAI,cAAc,GAAd,yCAAc,GAAd,CAAJ;AACA,wBAAI,QAAQ,MAAM,OAAN,CAAc,GAAd,CAAZ;;AAEA,wBAAI,EAAE,SAAS,SAAS,QAAlB,IAA8B,SAAS,QAAzC,CAAJ,EAAwD;AACpD;AACH;;AAED,wBAAI,IAAI,CAAJ,MAAW,GAAf,EAAoB;AAChB;AACA,8BAAK,oBAAL,GAA4B,MAAK,oBAAL,IAA6B,EAAzD;AACA,8BAAK,oBAAL,CAA0B,IAA1B,CAA+B,CAAC,IAAI,SAAJ,CAAc,CAAd,CAAD,EAAmB,QAAQ,GAAR,GAAc,CAAC,GAAD,CAAjC,CAA/B;AACH,qBAJD,MAKK;AACD;AACA,8BAAK,oBAAL,GAA4B,MAAK,oBAAL,IAA6B,EAAzD;AACA,8BAAK,oBAAL,CAA0B,IAA1B,CAA+B,CAAC,GAAD,EAAM,QAAQ,GAAR,GAAc,CAAC,GAAD,CAApB,CAA/B;AACH;;AAED,2BAAO,MAAK,MAAL,CAAY,GAAZ,CAAP;AACH;AACJ,aAvBD;AAwBH;;;sCAEc,O,EAAS;AACpB,gBAAI,KAAK,oBAAT,EAA+B;AAC3B,qBAAK,IAAI,IAAE,CAAX,EAAc,IAAI,KAAK,oBAAL,CAA0B,MAA5C,EAAoD,GAApD,EAAyD;AACrD,wBAAI,QAAQ,KAAK,oBAAL,CAA0B,CAA1B,CAAZ;AACA,wBAAI,MAAM,QAAQ,OAAR,CAAgB,UAAhB,CAA2B,MAAM,CAAN,CAA3B,CAAV;AACA,wBAAI,OAAO,IAAP,IAAe,MAAM,CAAN,EAAS,OAAT,CAAiB,GAAjB,MAA0B,CAAC,CAA9C,EAAiD;AAC7C,+BAAO,KAAP;AACH;AACJ;AACJ;;AAED,gBAAI,KAAK,oBAAT,EAA+B;AAC3B,qBAAK,IAAI,KAAE,CAAX,EAAc,KAAI,KAAK,oBAAL,CAA0B,MAA5C,EAAoD,IAApD,EAAyD;AACrD,wBAAI,SAAQ,KAAK,oBAAL,CAA0B,EAA1B,CAAZ;AACA,wBAAI,OAAM,QAAQ,OAAM,CAAN,CAAR,CAAV;AACA,wBAAI,QAAO,IAAP,IAAe,OAAM,CAAN,EAAS,OAAT,CAAiB,IAAjB,MAA0B,CAAC,CAA9C,EAAiD;AAC7C,+BAAO,KAAP;AACH;AACJ;AACJ;;AAED,mBAAO,IAAP;AACH;;;kCAEU,O,EAAS;AAChB,gBAAI,CAAC,KAAK,OAAV,EAAmB;AACf,uBAAO,KAAP;AACH;;AAED,gBAAI,CAAC,KAAK,QAAV,EAAoB;AAChB,qBAAK,KAAL;AACH;;AAED;AACA,gBAAI,KAAK,KAAL,IAAc,IAAd,IAAsB,CAAC,KAAK,KAAL,CAAW,QAAQ,IAAnB,CAA3B,EAAqD;AACjD,uBAAO,KAAP;AACH;;AAED;AACA,gBAAI,CAAC,KAAK,aAAL,CAAmB,OAAnB,CAAL,EAAkC;AAC9B,uBAAO,KAAP;AACH;;AAED;AACA,gBAAI,cAAJ;AACA,gBAAI,KAAK,MAAL,YAAuB,QAA3B,EAAoC;AAChC,oBAAI;AACA,4BAAQ,KAAK,MAAL,CAAY,OAAZ,CAAR;AACH,iBAFD,CAGA,OAAO,KAAP,EAAc;AACV;AACA,wBAAI,2BAAyB,KAAK,SAA9B,mBAAsD,KAAK,eAA3D,OAAJ;AACA,oDAA6B,MAAM,OAAnC,yBAA6D,MAAM,KAAnE;AACA,uCAAI,OAAJ,EAAa,GAAb,EAAkB,QAAQ,OAA1B;AACH;AACJ,aAVD,MAWK;AACD,wBAAQ,KAAK,MAAL,IAAe,IAAvB;AACH;;AAED,gBAAI,KAAJ,EAAW;AACP,oBAAI,KAAK,iBAAT,EAA4B;AACxB,uCAAmB,IAAnB,EAAyB,KAAK,iBAA9B,EAAiD,KAAK,MAAtD;AACA,2BAAO,KAAK,iBAAZ;AACH;;AAED,uBAAO,IAAP;AACH;AACD,mBAAO,KAAP;AACH;;;;;;AAIL,MAAM,EAAN,GAAW,CAAX;;IAGa,S,WAAA,S;;;AACT,uBAAa,MAAb,EAAqB;AAAA;;AAAA,2HACX,MADW;;AAEjB,eAAK,OAAL,GAAe,IAAf;AAFiB;AAGpB;;;EAJ0B,K;;IAQlB,S,WAAA,S;;;AACT,uBAAa,MAAb,EAAqB;AAAA;;AAAA,2HACX,MADW;;AAEjB,eAAK,OAAL,GAAe,IAAf;AACA,eAAK,MAAL,GAAc,OAAO,MAAP,IAAiB,EAA/B;AAHiB;AAIpB;;;;iCAES,K,EAAO;AACb,iBAAK,MAAL,CAAY,IAAZ,CAAiB,KAAjB;AACH;;;wCAEgB,O,EAAS;AACtB,gBAAI,SAAS,EAAb;AAAA,gBAAiB,YAAY,EAA7B;AACA,yBAAa,OAAb,EAAsB,CAAC,IAAD,CAAtB,EAA8B,MAA9B,EAAsC,SAAtC;;AAEA,gBAAI,OAAO,MAAP,GAAgB,CAApB,EAAuB;AACnB,oBAAI,YAAY,SAAS,SAAT,CAAhB;;AAEA;AACA;AACA,oBAAI,YAAY,SAAZ,MAA2B,SAA/B,EAA0C;AACtC;AACA,wBAAI,cAAc,OAAO,GAAP,CAAW;AAAA,+BAAK,KAAK,EAAE,OAAF,KAAc,KAAnB,IAA4B,EAAE,cAAnC;AAAA,qBAAX,CAAlB;AACA,wBAAI,YAAY,EAAhB;;AAEA,yBAAK,IAAI,IAAE,CAAX,EAAc,IAAI,YAAY,MAA9B,EAAsC,GAAtC,EAA2C;AACvC,4BAAI,QAAQ,YAAY,CAAZ,CAAZ;AACA,4BAAI,CAAC,KAAL,EAAY;AACR;AACH;AACD,6BAAK,IAAI,IAAE,CAAX,EAAc,IAAI,MAAM,MAAxB,EAAgC,GAAhC,EAAqC;AACjC,gCAAI,QAAQ,MAAM,CAAN,CAAZ;AACA,iCAAK,IAAI,GAAT,IAAgB,KAAhB,EAAuB;AACnB,0CAAU,GAAV,IAAiB,IAAjB;AACH;AACJ;AACJ;;AAED;AACA,yBAAK,IAAI,QAAT,IAAqB,SAArB,EAAgC;AAC5B,oCAAY,SAAZ,IAAyB,YAAY,SAAZ,KAA0B,EAAnD;AACA,oCAAY,SAAZ,EAAuB,QAAvB,IAAmC,WAAW,WAAX,EAAwB,QAAxB,CAAnC;;AAEA;AACA,4BAAI,CAAC,YAAY,SAAZ,EAAuB,QAAvB,CAAL,EAAuC;AACnC,mCAAO,YAAY,SAAZ,EAAuB,QAAvB,CAAP;AACH,yBAFD,MAGK;AACD,wCAAY,SAAZ,EAAuB,QAAvB,EAAiC,GAAjC,GAAuC,YAAY,GAAZ,GAAkB,QAAzD;AACA,wCAAY,SAAZ,EAAuB,QAAvB,EAAiC,MAAjC,GAA0C,OAAO,GAAP,CAAW;AAAA,uCAAK,KAAK,EAAE,SAAZ;AAAA,6BAAX,CAA1C;AACA,wCAAY,SAAZ,EAAuB,QAAvB,EAAiC,KAAjC,GAAyC,QAAzC;AACH;AACJ;;AAED;AACA,wBAAI,YAAY,SAAZ,KAA0B,OAAO,IAAP,CAAY,YAAY,SAAZ,CAAZ,EAAoC,MAApC,KAA+C,CAA7E,EAAgF;AAC5E,oCAAY,SAAZ,IAAyB,IAAzB;AACH;AACJ;AACD,uBAAO,YAAY,SAAZ,CAAP;AACH;AACJ;;;;EA7D0B,K;;AAiExB,IAAM,wCAAgB;AACzB;AACA,kBAFyB,0BAEV,GAFU,EAEL;AAChB,YAAI,OAAO,GAAP,KAAe,QAAf,IAA2B,IAAI,IAAJ,GAAW,KAAX,CAAiB,CAAC,CAAlB,MAAyB,KAAxD,EAA+D;AAC3D,mBAAU,WAAW,GAAX,CAAV;AACH;AACD,eAAO,GAAP;AACH;AAPwB,CAAtB;;AAUP,SAAS,UAAT,CAAoB,GAApB,EAAyB;AACrB,WAAO,SAAS,OAAT,CAAiB,GAAjB,IAAwB,CAAC,CAAhC;AACH;;AAED,SAAS,OAAT,CAAiB,GAAjB,EAAsB;AAClB,WAAO,OAAO,IAAP,CAAY,GAAZ,EAAiB,MAAjB,KAA4B,CAAnC;AACH;;AAEM,SAAS,UAAT,CAAoB,GAApB,EAAyB;AAC5B,QAAI,WAAW,EAAf;AAAA,QAAmB,WAAW,EAA9B;;AAEA,SAAK,IAAI,GAAT,IAAgB,GAAhB,EAAqB;AACjB,YAAI,WAAW,GAAX,CAAJ,EAAqB;AACjB,qBAAS,GAAT,IAAgB,IAAI,GAAJ,CAAhB;AACH,SAFD,MAEO;AACH,qBAAS,GAAT,IAAgB,IAAI,GAAJ,CAAhB;AACH;AACJ;AACD,WAAO,CAAC,QAAD,EAAW,QAAX,CAAP;AACH;;AAEM,SAAS,aAAT,CAAuB,KAAvB,EAA8B;;AAEjC,QAAI,OAAQ,EAAZ;;AAEA,QAAI,MAAM,MAAV,EAAkB;AACd,YAAI,KAAK,MAAM,MAAN,CAAa,cAAb,IAA+B,EAAxC;AACA,aAAK,IAAL,gCAAa,EAAb;AACH;;AAED,SAAK,IAAL,CAAU,MAAM,IAAhB;AACA,WAAO,IAAP;AACH;;AAEM,SAAS,cAAT,CAAwB,IAAxB,EAA8B,KAA9B,EAAqC,MAArC,EAA6C,MAA7C,EAAqD;;AAExD,YAAS,SAAS,IAAV,GAAkB,EAAlB,GAAuB,KAA/B;;AAEA,QAAI,aAAa,EAAE,UAAF,EAAQ,YAAR,EAAe,cAAf,EAAuB,cAAvB,EAAjB;;AAJwD,sBAK7B,WAAW,KAAX,CAL6B;AAAA;AAAA,QAKnD,QALmD;AAAA,QAKzC,QALyC;;AAMxD,QAAI,QAAQ,QAAQ,QAAR,CAAZ;AACA,QAAI,eAAJ;;AAEA,QAAI,SAAS,UAAU,IAAvB,EAA6B;AACzB,iBAAS,SAAT;AACH,KAFD,MAEO;AACH,iBAAS,SAAT;AACH;;AAED,QAAI,IAAI,IAAI,MAAJ,CAAW,OAAO,MAAP,CAAc,UAAd,EAA0B,QAA1B,CAAX,CAAR;;AAEA;AACA,QAAI,EAAE,OAAN,EAAe;AACX,YAAI,MAAJ,EAAY;AACR,mBAAO,QAAP,CAAgB,CAAhB;AACH;AACD,UAAE,iBAAF,GAAsB,QAAQ,IAAR,GAAe,QAArC;AACH;;AAED,WAAO,CAAP;AACH;;AAED,SAAS,kBAAT,CAA6B,MAA7B,EAAqC,QAArC,EAA+C,MAA/C,EAAuD;AACnD,SAAK,IAAI,GAAT,IAAgB,QAAhB,EAA0B;AACtB,YAAI,QAAQ,SAAS,GAAT,CAAZ;AACA,YAAI,QAAO,KAAP,yCAAO,KAAP,OAAiB,QAAjB,IAA6B,CAAC,MAAM,OAAN,CAAc,KAAd,CAAlC,EAAwD;AACpD,2BAAe,GAAf,EAAoB,KAApB,EAA2B,MAA3B,EAAmC,MAAnC;AACH,SAFD,MAEO;AACH;AACA,gBAAI,gEAA6D,GAA7D,UAAqE,KAAK,SAAL,CAAe,KAAf,CAArE,OAAJ;AACA,+CAAgC,OAAO,SAAvC;;AAEA;AACA,gBAAI,OAAO,OAAO,IAAd,CAAJ,EAAyB;AACrB,+CAA4B,OAAO,IAAnC;AACA,oBAAI,OAAO,MAAX,EAAmB;AACf,yCAAkB,OAAO,MAAP,CAAc,IAAhC;AACH;AACD;AACH;AACD,+BAAI,MAAJ,EAAY,GAAZ,EAbG,CAae;AACrB;AACJ;AACJ;;AAGM,SAAS,WAAT,CAAsB,MAAtB,EAA8B,MAA9B,EAAsC;AACzC,kBAAc,EAAd,CADyC,CACvB;AAClB,QAAI,cAAc,EAAlB;;AAEA,SAAK,IAAI,GAAT,IAAgB,MAAhB,EAAwB;AACpB,YAAI,QAAQ,OAAO,GAAP,CAAZ;AACA,YAAI,KAAJ,EAAW;AACP,wBAAY,GAAZ,IAAmB,eAAe,GAAf,EAAoB,KAApB,EAA2B,IAA3B,EAAiC,MAAjC,CAAnB;AACH;AACJ;;AAED,WAAO,WAAP;AACH;;AAEM,SAAS,YAAT,CAAsB,OAAtB,EAA+B,MAA/B,EAAuC,gBAAvC,EAAyD,oBAAzD,EAA+E;AAClF,QAAI,UAAU,KAAd;AACA,QAAI,eAAe,KAAnB;;AAEA,QAAI,OAAO,MAAP,KAAkB,CAAtB,EAAyB;AAAE;AAAS;;AAEpC,SAAK,IAAI,IAAE,CAAX,EAAc,IAAI,OAAO,MAAzB,EAAiC,GAAjC,EAAsC;AAClC,YAAI,UAAU,OAAO,CAAP,CAAd;;AAEA,YAAI,QAAQ,OAAZ,EAAqB;AACjB,gBAAI,QAAQ,SAAR,CAAkB,OAAlB,CAAJ,EAAgC;AAC5B,0BAAU,IAAV;AACA,iCAAiB,IAAjB,CAAsB,OAAtB;AACA,qCAAqB,IAArB,CAA0B,QAAQ,EAAlC;AACH;AAEJ,SAPD,MAOO,IAAI,QAAQ,OAAZ,EAAqB;AACxB,gBAAI,QAAQ,SAAR,CAAkB,OAAlB,CAAJ,EAAgC;AAC5B,0BAAU,IAAV;;AAEA,+BAAe,aACX,OADW,EAEX,QAAQ,MAFG,EAGX,gBAHW,EAIX,oBAJW,CAAf;;AAOA,oBAAI,CAAC,YAAL,EAAmB;AACf,qCAAiB,IAAjB,CAAsB,OAAtB;AACA,yCAAqB,IAArB,CAA0B,QAAQ,EAAlC;AACH;AACJ;AACJ;AACJ;;AAED,WAAO,OAAP;AACH;;;;;;;;kBClfuB,e;AAfxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAM,qBAAqB,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,EAAgB,GAAhB,CAA3B;AACA,IAAM,2BAA2B,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAjC;;AAEe,SAAS,eAAT,CAA0B,OAA1B,EAAiD;AAAA,QAAd,OAAc,uEAAJ,EAAI;;AAC5D,QAAM,aAAa,QAAQ,UAAR,IAAsB,kBAAzC;AACA,QAAM,mBAAmB,QAAQ,gBAAR,IAA4B,wBAArD;AACA,QAAM,SAAS,OAAf;AACA,QAAM,QAAQ,QAAQ,KAAR,IAAiB,CAA/B;;AAEA;AACA,QAAI,OAAO,MAAP,GAAgB,CAAhB,KAAsB,CAA1B,EAA6B;AACzB,cAAM,SAAN,CAAgB,IAAhB,CAAqB,KAArB,CAA2B,MAA3B,EAAmC,MAAnC;AACH;;AAED,QAAI,OAAO,IAAX;AACA,QAAI,SAAS,EAAb;AACA,SAAK,IAAI,IAAE,CAAX,EAAc,IAAI,OAAO,MAAzB,EAAiC,GAAjC,EAAsC;AAClC,YAAI,UAAU,KAAK,KAAL,CAAW,OAAO,CAAP,IAAY,KAAvB,CAAd;AACA,aAAK,IAAI,IAAE,CAAX,EAAc,IAAI,OAAlB,EAA2B,GAA3B,EAAgC;AAC5B,kBAAM,SAAN,CAAgB,IAAhB,CAAqB,KAArB,CAA2B,MAA3B,EAAmC,OAAO,UAAP,GAAoB,gBAAvD;AACH;AACD,eAAO,CAAC,IAAR,CALkC,CAKpB;AACjB;;AAED,aAAS,IAAI,UAAJ,CAAe,MAAf,CAAT,CArB4D,CAqB3B;AACjC,QAAM,SAAS,OAAO,MAAP,GAAgB,CAA/B,CAtB4D,CAsB1B;;AAElC,WAAO,EAAE,cAAF,EAAU,cAAV,EAAP;AACH;;;;;;;;;;ACtCD;;AACA;;AACA;;;;AACA;;;;AACA;;;;AACA;;AACA;;;;AACA;;;;AACA;;;;AANqC;AAQ9B,IAAI,wBAAQ,OAAO,MAAP,cAAZ,C,CAZP;;AAcA,OAAO,MAAP,CAAc,KAAd,EAAqB;AACjB,UAAM,OADW;AAEjB,cAAU,IAFO;AAGjB,yDAHiB;AAIjB,6DAJiB;AAKjB,eAAW,IALM,EAKA;;AAEjB,QAPiB,kBAOV;AACH,qBAAM,IAAN,CAAW,KAAX,CAAiB,IAAjB,EAAuB,SAAvB;;AAEA;AACA,YAAI,UAAU,CACV,EAAE,MAAM,YAAR,EAAsB,MAAM,CAA5B,EAA+B,MAAM,oBAAG,KAAxC,EAA+C,YAAY,KAA3D,EADU,EAEV,EAAE,MAAM,WAAR,EAAqB,MAAM,CAA3B,EAA8B,MAAM,oBAAG,KAAvC,EAA8C,YAAY,KAA1D,EAFU,EAGV,EAAE,MAAM,SAAR,EAAmB,MAAM,CAAzB,EAA4B,MAAM,oBAAG,aAArC,EAAoD,YAAY,IAAhE,EAHU,CAAd;;AAMA;AACA,aAAK,OAAL,CAAa,mBAAb,GAAmC,IAAnC;AACA,aAAK,OAAL,CAAa,qBAAb,GAAqC,IAArC;;AAEA;AACA,YAAI,KAAK,SAAT,EAAoB;AAChB,oBAAQ,IAAR,CAAa,EAAE,MAAM,mBAAR,EAA6B,MAAM,CAAnC,EAAsC,MAAM,oBAAG,aAA/C,EAA8D,YAAY,IAA1E,EAAb;AACH;;AAED;AACA;AACA,YAAI,KAAK,OAAL,IAAgB,KAAK,IAAzB,EAA+B;AAC3B,iBAAK,SAAL,GAAiB,IAAjB;AACH;;AAED;AACA,YAAI,KAAK,SAAT,EAAoB;AAChB,iBAAK,OAAL,CAAa,sBAAb,GAAsC,IAAtC;;AAEA;AACA,iBAAK,OAAL,CAAa,kBAAb,GAAkC,CAAlC;AACA,iBAAK,OAAL,CAAa,sBAAb,GAAsC,cAAI,UAAJ,GAAiB,KAAK,OAAL,CAAa,kBAApE;;AAEA;AACA,oBAAQ,IAAR,CAAa,EAAE,MAAM,YAAR,EAAsB,MAAM,CAA5B,EAA+B,MAAM,oBAAG,cAAxC,EAAwD,YAAY,IAApE,EAAb;AACH;;AAED,aAAK,aAAL,GAAqB,4BAAiB,OAAjB,CAArB;;AAEA;AACA;AACA;AACA,aAAK,qBAAL,GAA6B,EAA7B;AACA,aAAK,oBAAL,GAA4B,KAAK,aAAjC,CA3CG,CA2C6C;AACnD,KAnDgB;;;AAqDjB;AACA,gBAtDiB,0BAsDD;AACZ,YAAI,CAAC,KAAK,aAAV,EAAyB;AACrB,iBAAK,gBAAL;AACH;AACD,eAAO,aAAM,YAAN,CAAmB,KAAnB,CAAyB,IAAzB,EAA+B,SAA/B,CAAP;AACH,KA3DgB;;;AA6DjB;AACA,oBA9DiB,8BA8DG;AAAA;;AAChB;AACA,YAAI,KAAK,IAAT,EAAe;AACX;AACA,gBAAI,KAAK,qBAAT,EAAgC;AAC5B,qBAAK,qBAAL,GAA6B,0BAAY,UAAZ,CAAuB,KAAK,qBAA5B,CAA7B;AACA,qBAAK,OAAL,CAAa,6BAAb,aACY,KAAK,qBAAL,CAA2B,KAA3B,CAAiC,CAAjC,EAAoC,CAApC,EAAuC,IAAvC,CAA4C,IAA5C,CADZ;AAEH;;AAED;AACA,iBAAK,OAAL,CAAa,kBAAb,GAAkC,EAAlC;AACA,iBAAK,OAAL,CAAa,sBAAb,GAAsC,cAAI,UAAJ,GAAiB,KAAK,OAAL,CAAa,kBAApE;;AAEA;AACA,gBAAM,OAAO,yBAAgB,KAAK,IAArB,EAA2B,EAAE,OAAO,KAAK,OAAL,CAAa,kBAAtB,EAA3B,CAAb;AACA,iBAAK,OAAL,GAAe,MAAM,KAAK,IAAX,GAAkB,YAAjC;AACA,8BAAQ,MAAR,CAAe,KAAK,EAApB,EAAwB,KAAK,OAA7B,EAAsC;AAClC,sBAAM,KAAK,MADuB;AAElC,wBAAQ,KAAK,MAFqB;AAGlC,uBAAO,CAH2B;AAIlC,2BAAW;AAJuB,aAAtC;AAMH;;AAED;AACA,YAAI,KAAK,OAAT,EAAkB;AACd,iBAAK,OAAL,CAAa,oBAAb,GAAoC,IAApC;AACA,iBAAK,OAAL,CAAa,QAAb,GAAwB,KAAK,OAAL,CAAa,QAAb,IAAyB,EAAjD;AACA,iBAAK,OAAL,CAAa,QAAb,CAAsB,SAAtB,GAAkC,KAAK,OAAvC;AACA,iBAAK,OAAL,CAAa,QAAb,CAAsB,eAAtB,GAAwC,CAAxC;;AAEA;AACA,8BAAQ,OAAR,CAAgB,KAAK,OAArB,EAA8B,IAA9B,CAAmC,mBAAW;AAC1C,oBAAI,OAAJ,EAAa;AACT,0BAAK,OAAL,CAAa,QAAb,CAAsB,eAAtB,GAAwC,QAAQ,MAAR,GAAiB,QAAQ,KAAjE;AACH;AACJ,aAJD;AAKH;AACJ,KArGgB;;;AAuGjB;AACA,aAxGiB,qBAwGN,KAxGM,EAwGC,OAxGD,EAwGU;AACvB,eAAQ,SAAS,0BAAY,0BAAZ,CAAuC,KAAvC,EAA8C,OAA9C,CAAV,IAAqE,CAA5E;AACH,KA1GgB;;;AA4GjB;AACA,qBA7GiB,6BA6GE,KA7GF,EA6GS,OA7GT,EA6GkB;AAC/B,gBAAQ,IAAR;AACA,YAAI,MAAM,KAAK,SAAL,CAAe,KAAf,EAAsB,OAAtB,CAAV;AACA,gBAAQ,IAAR;AACA,eAAO,GAAP;AACH,KAlHgB;AAoHjB,iBApHiB,yBAoHF,OApHE,EAoHO,IApHP,EAoHa,OApHb,EAoHsB;AACnC,YAAI,QAAQ,KAAK,aAAjB;;AAEA;AACA,YAAI,QAAQ,KAAK,SAAL,CAAe,KAAK,KAApB,EAA2B,OAA3B,CAAZ;AACA,YAAI,QAAQ,CAAZ,EAAe;AACX,mBADW,CACH;AACX;AACD,YAAI,aAAa,KAAK,iBAAL,CAAuB,KAAK,UAA5B,EAAwC,OAAxC,CAAjB;;AAEA,YAAK,UAAU,CAAV,IAAe,eAAe,CAA/B,IAAqC,aAAa,CAAtD,EAAyD;AACrD,mBADqD,CAC7C;AACX;;AAED;AACA;AACA,cAAM,KAAN,GAAc,QAAQ,QAAQ,wBAA9B;AACA,cAAM,UAAN,GAAoB,aAAa,CAAd,GAAmB,KAAtC;AACA,cAAM,UAAN,IAAoB,QAAQ,wBAA5B;AACA,cAAM,UAAN,IAAoB,CAApB,CAnBmC,CAmBZ;;AAEvB,cAAM,KAAN,GAAc,KAAK,UAAL,CAAgB,KAAK,KAArB,EAA4B,OAA5B,CAAd;AACA,YAAI,CAAC,MAAM,KAAX,EAAkB;AACd;AACH;;AAED;AACA,cAAM,CAAN,GAAW,KAAK,CAAL,IAAU,0BAAY,0BAAZ,CAAuC,KAAK,CAAL,IAAU,CAAjD,EAAoD,OAApD,CAAX,IAA4E,0BAAY,QAAZ,CAAqB,CAA3G;AACA,cAAM,MAAN,GAAe,QAAQ,UAAR,CAAmB,MAAnB,IAA6B,0BAAY,QAAZ,CAAqB,MAAjE;AACA,cAAM,OAAN,GAAgB,0BAAY,YAAZ,CAAyB,KAAK,OAA9B,EAAuC,OAAvC,CAAhB;AACA,YAAI,MAAM,OAAV,EAAmB;AACf,gBAAI,OAAO,MAAM,OAAb,KAAyB,QAA7B,EAAuC;AACnC,sBAAM,MAAN,GAAe,MAAM,OAArB;AACH,aAFD,MAGK,IAAI,MAAM,OAAN,CAAc,MAAM,OAApB,CAAJ,EAAkC;AACnC,sBAAM,MAAN,GAAe,MAAM,OAAN,CAAc,CAAd,CAAf;AACH;AACJ;;AAED;AACA,YAAI,MAAM,OAAN,IAAiB,MAAM,MAA3B,EAAmC;AAC/B,kBAAM,CAAN,IAAW,MAAM,MAAjB;AACH;;AAED,cAAM,CAAN,IAAW,cAAI,YAAf,CA5CmC,CA4CC;AACpC,cAAM,MAAN,IAAgB,cAAI,YAApB;;AAEA,cAAM,GAAN,GAAY,KAAK,GAAjB;AACA,cAAM,IAAN,GAAa,KAAK,IAAlB;AACA,cAAM,WAAN,GAAoB,KAAK,WAAzB;AACA,cAAM,UAAN,GAAmB,KAAK,UAAxB,CAlDmC,CAkDC;;AAEpC;AACA;AACA,cAAM,OAAN,GAAgB,MAAM,OAAN,IAAiB,EAAE,OAAO,EAAT,EAAa,YAAY,EAAzB,EAA6B,cAAc,IAA3C,EAAjC;;AAEA,YAAI,KAAK,OAAL,IAAgB,KAAK,OAAL,CAAa,OAAb,KAAyB,KAAzC,IAAkD,KAAK,OAAL,CAAa,KAA/D,IAAwE,KAAK,OAAL,CAAa,KAAzF,EAAgG;AAC5F;AACA;AACA,gBAAI,gBAAgB,KAAK,SAAL,CAAe,KAAK,OAAL,CAAa,KAA5B,EAAmC,OAAnC,IAA8C,CAAlE;AACA,gBAAI,qBAAqB,KAAK,iBAAL,CAAuB,KAAK,OAAL,CAAa,UAApC,EAAgD,OAAhD,IAA2D,CAApF;;AAEA,gBAAK,kBAAkB,CAAlB,IAAuB,uBAAuB,CAA/C,IAAqD,gBAAgB,CAArE,IAA0E,qBAAqB,CAAnG,EAAsG;AAClG;AACA,sBAAM,OAAN,CAAc,KAAd,CAAoB,KAApB,GAA4B,IAA5B;AACA,sBAAM,OAAN,CAAc,UAAd,CAAyB,KAAzB,GAAiC,IAAjC;AACA,sBAAM,OAAN,CAAc,KAAd,GAAsB,IAAtB;AACH,aALD,MAMK;AACD;AACA,sBAAM,OAAN,CAAc,KAAd,CAAoB,KAApB,GAA4B,gBAAgB,KAA5C;AACA,sBAAM,OAAN,CAAc,UAAd,CAAyB,KAAzB,GAAiC,qBAAqB,UAAtD;;AAEA,sBAAM,OAAN,CAAc,KAAd,GAAsB,KAAK,OAAL,CAAa,KAAnC;AACA,sBAAM,OAAN,CAAc,GAAd,GAAoB,KAAK,OAAL,CAAa,GAAb,IAAoB,KAAK,GAA7C;AACA,sBAAM,OAAN,CAAc,IAAd,GAAqB,KAAK,OAAL,CAAa,IAAb,IAAqB,KAAK,IAA/C;AACA,sBAAM,OAAN,CAAc,WAAd,GAA4B,KAAK,OAAL,CAAa,WAAb,IAA4B,KAAK,WAA7D;AACA,sBAAM,OAAN,CAAc,KAAd,GAAsB,KAAK,OAAL,CAAa,KAAb,IAAsB,KAAK,IAAjD;;AAEA;AACA,oBAAI,KAAK,OAAL,CAAa,KAAjB,EAAwB;AACpB,0BAAM,OAAN,CAAc,KAAd,GAAsB,KAAK,UAAL,CAAgB,KAAK,OAAL,CAAa,KAA7B,EAAoC,OAApC,CAAtB;AACH,iBAFD,MAGK;AACD,0BAAM,OAAN,CAAc,KAAd,GAAsB,MAAM,KAA5B;AACH;;AAED;AACA,oBAAI,MAAM,OAAN,CAAc,KAAd,GAAsB,MAAM,KAAhC,EAAuC;AACnC,0BAAM,OAAN,CAAc,KAAd,GAAsB,MAAM,KAA5B;AACH;;AAED;AACA,sBAAM,OAAN,CAAc,KAAd,IAAuB,GAAvB;AACH;AACJ,SAvCD,MAwCK;AACD,kBAAM,OAAN,CAAc,KAAd,CAAoB,KAApB,GAA4B,IAA5B;AACA,kBAAM,OAAN,CAAc,UAAd,CAAyB,KAAzB,GAAiC,IAAjC;AACA,kBAAM,OAAN,CAAc,KAAd,GAAsB,IAAtB;AACH;;AAED,eAAO,KAAP;AACH,KA3NgB;AA6NjB,eA7NiB,uBA6NJ,IA7NI,EA6NE;AACf,aAAK,KAAL,GAAa,0BAAY,wBAAZ,CAAqC,KAAK,KAA1C,CAAb;AACA,aAAK,KAAL,GAAa,0BAAY,mBAAZ,CAAgC,KAAK,KAArC,EAA4C,0BAAY,UAAxD,CAAb;AACA,aAAK,UAAL,GAAkB,0BAAY,mBAAZ,CAAgC,KAAK,KAArC,EAA4C,0BAAY,UAAxD,CAAlB,CAHe,CAGwE;AACvF,aAAK,CAAL,GAAS,0BAAY,mBAAZ,CAAgC,KAAK,CAArC,EAAwC,0BAAY,UAApD,CAAT;;AAEA,YAAI,KAAK,OAAT,EAAkB;AACd,iBAAK,OAAL,CAAa,KAAb,GAAqB,0BAAY,wBAAZ,CAAqC,KAAK,OAAL,CAAa,KAAlD,CAArB;AACA,iBAAK,OAAL,CAAa,KAAb,GAAqB,0BAAY,mBAAZ,CAAgC,KAAK,OAAL,CAAa,KAA7C,EAAoD,0BAAY,UAAhE,CAArB;AACA,iBAAK,OAAL,CAAa,UAAb,GAA0B,0BAAY,mBAAZ,CAAgC,KAAK,OAAL,CAAa,KAA7C,EAAoD,0BAAY,UAAhE,CAA1B,CAHc,CAGyF;AAC1G;AACD,eAAO,IAAP;AACH,KAzOgB;;;AA2OjB;;;;AAIA,sBA/OiB,8BA+OE,KA/OF,EA+OS;AACtB,YAAI,IAAI,CAAR;;AAEA;AACA,aAAK,eAAL,CAAqB,GAArB,IAA4B,CAA5B;AACA,aAAK,eAAL,CAAqB,GAArB,IAA4B,CAA5B;AACA,aAAK,eAAL,CAAqB,GAArB,IAA4B,MAAM,CAAN,IAAW,CAAvC;;AAEA;AACA,aAAK,eAAL,CAAqB,GAArB,IAA4B,KAAK,UAAL,CAAgB,MAAM,KAAtB,CAA5B;;AAEA;AACA,aAAK,eAAL,CAAqB,GAArB,IAA4B,CAA5B;AACA,aAAK,eAAL,CAAqB,GAArB,IAA4B,CAA5B;AACA,aAAK,eAAL,CAAqB,GAArB,IAA4B,CAA5B;;AAEA;AACA,aAAK,eAAL,CAAqB,GAArB,IAA4B,MAAM,UAAlC;;AAEA;AACA,aAAK,eAAL,CAAqB,GAArB,IAA4B,MAAM,KAAN,CAAY,CAAZ,IAAiB,GAA7C;AACA,aAAK,eAAL,CAAqB,GAArB,IAA4B,MAAM,KAAN,CAAY,CAAZ,IAAiB,GAA7C;AACA,aAAK,eAAL,CAAqB,GAArB,IAA4B,MAAM,KAAN,CAAY,CAAZ,IAAiB,GAA7C;AACA,aAAK,eAAL,CAAqB,GAArB,IAA4B,MAAM,KAAN,CAAY,CAAZ,IAAiB,GAA7C;;AAEA;AACA,YAAI,KAAK,SAAT,EAAoB;AAChB,iBAAK,eAAL,CAAqB,GAArB,IAA4B,MAAM,eAAN,CAAsB,CAAtB,IAA2B,GAAvD;AACA,iBAAK,eAAL,CAAqB,GAArB,IAA4B,MAAM,eAAN,CAAsB,CAAtB,IAA2B,GAAvD;AACA,iBAAK,eAAL,CAAqB,GAArB,IAA4B,MAAM,eAAN,CAAsB,CAAtB,IAA2B,GAAvD;AACA,iBAAK,eAAL,CAAqB,GAArB,IAA4B,MAAM,eAAN,CAAsB,CAAtB,IAA2B,GAAvD;AACH;;AAED;AACA,YAAI,KAAK,SAAT,EAAoB;AAChB,iBAAK,eAAL,CAAqB,GAArB,IAA4B,CAA5B;AACA,iBAAK,eAAL,CAAqB,GAArB,IAA4B,CAA5B;AACH;;AAED,eAAO,KAAK,eAAZ;AACH,KAvRgB;AAyRjB,cAzRiB,sBAyRN,KAzRM,EAyRC,KAzRD,EAyRQ,WAzRR,EAyRqB,OAzRrB,EAyR8B,OAzR9B,EAyRuC;AACpD;AACA,aAAK,aAAL,GAAqB,KAAK,qBAA1B,CAFoD,CAEH;AACjD,YAAI,MAAM,OAAN,IAAiB,MAAM,OAAN,CAAc,KAAd,IAAuB,IAAxC,IAAgD,MAAM,OAAN,CAAc,KAAd,CAAoB,KAApB,IAA6B,IAAjF,EAAuF;AACnF,gBAAI,gBAAgB,KAAK,MAAL,CAAY,MAAM,OAAN,CAAc,KAA1B,CAApB;AACA,gBAAI,aAAJ,EAAmB;AACf,8BAAc,UAAd,CAAyB,QAAQ,OAAjC,EAA0C,MAAM,OAAhD,EAAyD,OAAzD;AACH;AACJ;;AAED;AACA,aAAK,aAAL,GAAqB,KAAK,oBAA1B,CAXoD,CAWJ;AAChD,YAAI,kBAAkB,KAAK,kBAAL,CAAwB,KAAxB,CAAtB;AACA,eAAO,+BACH,KADG,EAEH,MAAM,KAFH,EAGH,WAHG,EAIH,eAJG,EAKH;AACI,iBAAK,MAAM,GADf;AAEI,kBAAM,MAAM,IAFhB;AAGI,yBAAa,MAAM,WAHvB;AAII,2BAAe,KAAK,aAAL,CAAmB,KAAnB,CAAyB,SAJ5C;AAKI,+BAAmB,GALvB,EAK4B;AACxB,4BAAgB,KAAK,aAAL,CAAmB,KAAnB,CAAyB,UAN7C;AAOI,4BAAgB,CAAC,MAAM,KAAN,IAAe,MAAM,UAAtB,IAAoC,QAAQ,IAAR,CAAa,SAPrE,EAOgF;AAC5E,gCAAoB,KARxB,EAQ+B;AAC3B,4BAAgB,WAAW,QAAQ,cATvC;AAUI,+BAAmB,CAAC,MAAM,UAAP,IAAqB,OAArB,IAAgC,QAAQ,iBAV/D;AAWI,iCAAqB,cAAI,UAAJ,GAAiB,QAAQ,IAAR,CAAa,SAA9B,GAA0C;AAXnE,SALG,CAAP;AAmBH,KAzTgB;AA2TjB,iBA3TiB,yBA2TH,QA3TG,EA2TO,KA3TP,EA2Tc,WA3Td,EA2T2B,OA3T3B,EA2ToC;AAChD;AACD,YAAI,aAAa,CAAjB;AACC,aAAK,IAAI,IAAE,CAAX,EAAc,IAAI,SAAS,MAA3B,EAAmC,GAAnC,EAAwC;AACrC,0BAAc,KAAK,UAAL,CAAgB,SAAS,CAAT,CAAhB,EAA6B,KAA7B,EAAoC,WAApC,EAAiD,OAAjD,EAA0D,EAAE,gBAAgB,IAAlB,EAAwB,mBAAmB,IAA3C,EAA1D,CAAd;AACF;AACF,eAAO,UAAP;AACH;AAlUgB,CAArB;;;;;;;;;;ypBCdA;;AAKqC;;;AAHrC;;;;AACA;;AACA;;AACA;;;;AACA;;;;AACA;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;AACA;;AACA;;;;;;;;AAEA,IAAI,KAAK,QAAQ,IAAR,CAAT;AACA,IAAM,yBAAyB,GAAG,YAAH,CAAgB,YAAY,qBAA5B,EAAmD,MAAnD,CAA/B;AACA,IAAM,2BAA2B,GAAG,YAAH,CAAgB,YAAY,uBAA5B,EAAqD,MAArD,CAAjC;;AAEA,IAAM,YAAY,sBAAW,SAA7B;;AAEA,IAAM,uBAAuB,MAAM,KAAK,EAAxC;AACA,IAAM,mBAAmB,QAAQ,KAAK,EAAtC;AACA,IAAM,oBAAoB,EAA1B;AACA,IAAM,qBAAqB,KAA3B;;AAEO,IAAI,0BAAS,OAAO,MAAP,cAAb;;AAEP;AACA,IAAM,6BAA6B,CAAnC,C,CAAsC;AACtC,IAAM,2BAA2B,CAAjC,C,CAAsC;AACtC,IAAM,4BAA4B,CAAlC,C,CAAsC;;AAEtC;AACA,OAAO,MAAP,CAAc,MAAd;;AAEA,OAAO,MAAP,CAAc,MAAd,EAAsB;AAClB,UAAM,QADY;AAElB,cAAU,IAFQ;AAGlB,uBAAmB,sBAHD;AAIlB,yBAAqB,wBAJH;AAKlB,eAAW,IALO,EAKA;AAClB,WAAO,SANW,EAMA;;AAElB,QARkB,kBAQwB;AAAA,YAArC,OAAqC,uEAA3B,EAA2B;AAAA,YAAvB,gBAAuB,uEAAJ,EAAI;;AACtC,qBAAM,IAAN,CAAW,IAAX,CAAgB,IAAhB,EAAsB,OAAtB;;AAEA,YAAI,UAAU,CACV,EAAE,MAAM,YAAR,EAAsB,MAAM,CAA5B,EAA+B,MAAM,oBAAG,KAAxC,EAA+C,YAAY,KAA3D,EADU,EAEV,EAAE,MAAM,SAAR,EAAmB,MAAM,CAAzB,EAA4B,MAAM,oBAAG,KAArC,EAA4C,YAAY,KAAxD,EAFU,EAGV,EAAE,MAAM,YAAR,EAAsB,MAAM,CAA5B,EAA+B,MAAM,oBAAG,cAAxC,EAAwD,YAAY,IAApE,EAHU,EAIV,EAAE,MAAM,UAAR,EAAoB,MAAM,CAA1B,EAA6B,MAAM,oBAAG,KAAtC,EAA6C,YAAY,KAAzD,EAJU,EAKV,EAAE,MAAM,SAAR,EAAmB,MAAM,CAAzB,EAA4B,MAAM,oBAAG,aAArC,EAAoD,YAAY,IAAhE,EALU,CAAd;;AAQA,YAAI,iBAAiB,MAArB,EAA4B;AACxB,kBAAM,SAAN,CAAgB,IAAhB,CAAqB,KAArB,CAA2B,OAA3B,EAAoC,gBAApC;AACH;;AAED;AACA,aAAK,SAAL,GAAiB,IAAjB;AACA,gBAAQ,IAAR,CAAa,EAAE,MAAM,mBAAR,EAA6B,MAAM,CAAnC,EAAsC,MAAM,oBAAG,aAA/C,EAA8D,YAAY,IAA1E,EAAb;;AAEA;AACA,YAAI,KAAK,KAAL,KAAe,SAAnB,EAA8B;AAC1B,iBAAK,OAAL,CAAa,mBAAb,GAAmC,IAAnC;AACH;;AAED;AACA,aAAK,OAAL,CAAa,0BAAb,GAA0C,0BAA1C;AACA,aAAK,OAAL,CAAa,wBAAb,GAAwC,wBAAxC;AACA,aAAK,OAAL,CAAa,yBAAb,GAAyC,yBAAzC;;AAEA;AACA,YAAI,CAAC,KAAK,OAAV,EAAmB;AACf,iBAAK,OAAL,CAAa,oBAAb,GAAoC,IAApC;AACA,oBAAQ,IAAR,CAAa,EAAE,MAAM,iBAAR,EAA2B,MAAM,CAAjC,EAAoC,MAAM,oBAAG,aAA7C,EAA4D,YAAY,IAAxE,EAAb;AACA,oBAAQ,IAAR,CAAa,EAAE,MAAM,gBAAR,EAA0B,MAAM,CAAhC,EAAmC,MAAM,oBAAG,KAA5C,EAAmD,YAAY,KAA/D,EAAb;AACH;;AAED,aAAK,aAAL,GAAqB,4BAAiB,OAAjB,CAArB;;AAEA;AACA,aAAK,OAAL,CAAa,wBAAb,GAAwC,IAAxC;AACA,aAAK,OAAL,CAAa,6BAAb,GAA6C,CAA7C,CAxCsC,CAwCU;;AAEhD;AACA,YAAI,yBAAc,sBAAd,KAAyC,IAA7C,EAAmD;AAC/C,iBAAK,YAAL,GAAoB,CAApB;AACA,iBAAK,OAAL,CAAa,oBAAb,GAAoC,IAApC;AACH,SAHD,MAIK;AACD,iBAAK,YAAL,GAAoB,IAApB,CADC,CACyB;AAC1B,iBAAK,OAAL,CAAa,oBAAb,GAAoC,IAAI,KAAK,YAA7C;AACH;;AAED;AACA,YAAI,yBAAc,6BAAd,KAAgD,IAApD,EAA0D;AACtD,iBAAK,OAAL,CAAa,0BAAb,GAA0C,4BAA1C,CADsD,CACY;AACrE;;AAED,aAAK,sBAAL,GAA8B,KAAK,IAAL,GAAU,SAAxC;AACA,aAAK,oBAAL,GAA4B,KAAK,IAAL,GAAU,OAAtC;;AAEA,aAAK,KAAL;AACH,KArEiB;AAuElB,SAvEkB,mBAuET;AACL,aAAK,MAAL,GAAc,EAAd;AACA,aAAK,SAAL;AACA,aAAK,uBAAL,GAA+B,EAA/B,CAHK,CAG8B;AACtC,KA3EiB;;;AA6ElB;AACA,cA9EkB,sBA8EN,OA9EM,EA8EG,IA9EH,EA8ES,OA9ET,EA8EkB;AAChC,YAAI,OAAO,QAAQ,IAAnB;AACA,YAAI,KAAK,UAAL,KAAoB,KAAK,UAA7B,EAAyC;AACrC;AACH;;AAED;AACA,YAAI,QAAQ,EAAZ;AACA,cAAM,KAAN,GAAc,KAAK,UAAL,CAAgB,KAAK,KAArB,EAA4B,OAA5B,CAAd;;AAEA;AACA,YAAI,CAAC,MAAM,KAAP,IAAgB,CAAC,KAAK,OAA1B,EAAmC;AAC/B;AACH;;AAED;AACA,YAAI,oBAAJ;AACA,YAAI,KAAK,UAAL,EAAJ,EAAuB;AACnB,0BAAc,KAAK,WAAL,CAAiB,IAAjB,EAAuB,OAAvB,CAAd;AACA,gBAAI,WAAJ,EAAiB;AACb,sBAAM,SAAN,GAAkB,YAAY,SAA9B;AACH,aAFD,MAGK;AACD;AACH;AACJ;;AAED;AACA,cAAM,IAAN,GAAa,KAAK,IAAlB;AACA,YAAI,CAAC,MAAM,IAAX,EAAiB;AACb,gBAAI,WAAJ,EAAiB;AACb,sBAAM,IAAN,GAAa,YAAY,IAAzB;AACH,aAFD,MAGK;AACD,sBAAM,IAAN,GAAa,CAAC,EAAD,EAAK,EAAL,CAAb;AACH;AACJ,SAPD,MAQK;AACD,kBAAM,IAAN,GAAa,0BAAY,kBAAZ,CAA+B,MAAM,IAArC,EAA2C,OAA3C,CAAb;AACA,gBAAI,OAAO,MAAM,IAAb,KAAsB,QAA1B,EAAoC;AAChC,sBAAM,IAAN,GAAa,CAAC,MAAM,IAAP,EAAa,MAAM,IAAnB,CAAb,CADgC,CACO;AAC1C;AACJ;;AAED;AACA,YAAI,KAAK,OAAT,EAAkB;AACd,kBAAM,aAAN,GAAsB,0BAAY,kBAAZ,CAA+B,KAAK,OAAL,CAAa,KAA5C,EAAmD,OAAnD,KAA+D,0BAAY,QAAZ,CAAqB,OAArB,CAA6B,KAAlH;AACA,kBAAM,aAAN,GAAsB,KAAK,UAAL,CAAgB,KAAK,OAAL,CAAa,KAA7B,EAAoC,OAApC,CAAtB;AACH;;AAED,cAAM,gBAAN,GAAyB,CAAzB;AACA,YAAI,MAAM,aAAN,IAAuB,MAAM,aAAjC,EAAgD;AAC5C,gBAAI,gBAAgB,MAAM,aAAN,GAAsB,CAA1C;AACA,kBAAM,IAAN,CAAW,CAAX,KAAiB,aAAjB,CAF4C,CAEZ;AAChC,kBAAM,IAAN,CAAW,CAAX,KAAiB,aAAjB;AACA,kBAAM,gBAAN,GAAyB,gBAAgB,KAAK,GAAL,CAAS,MAAM,IAAN,CAAW,CAAX,CAAT,EAAwB,MAAM,IAAN,CAAW,CAAX,CAAxB,CAAhB,GAAyD,CAAlF,CAJ4C,CAIyC;AACxF;;AAED;AACA,cAAM,IAAN,GAAa,CACT,KAAK,GAAL,CAAS,MAAM,IAAN,CAAW,CAAX,CAAT,EAAwB,GAAxB,CADS,EAET,KAAK,GAAL,CAAS,MAAM,IAAN,CAAW,CAAX,CAAT,EAAwB,GAAxB,CAFS,CAAb;;AAKA;AACA,cAAM,SAAN,GAAkB,KAAK,SAAvB;AACA,cAAM,0BAAN,GAAmC,0BAAY,kBAAZ,CAA+B,KAAK,0BAApC,EAAgE,OAAhE,CAAnC;;AAEA;AACA,YAAI,MAAM,SAAN,KAAoB,UAAU,MAA9B,IAAwC,KAAK,iBAAjD,EAAoE;AAChE,kBAAM,iBAAN,GAA0B,0BAAY,kBAAZ,CAA+B,KAAK,iBAApC,EAAuD,OAAvD,CAA1B;AACH;;AAED;AACA,cAAM,KAAN,GAAc,0BAAY,YAAZ,CAAyB,KAAK,KAA9B,EAAqC,OAArC,KAAiD,CAA/D;;AAEA;AACA,cAAM,CAAN,GAAW,KAAK,CAAL,IAAU,0BAAY,0BAAZ,CAAuC,KAAK,CAA5C,EAA+C,OAA/C,CAAX,IAAuE,0BAAY,QAAZ,CAAqB,CAAtG;;AAEA,cAAM,UAAN,GAAmB,KAAK,UAAxB,CA/EgC,CA+EI;;AAEpC,cAAM,aAAN,GAAsB,IAAtB,CAjFgC,CAiFJ;;AAE5B,aAAK,aAAL,CAAmB,KAAnB,EAA0B,OAA1B,EAAmC,IAAnC,EAAyC,OAAzC,EAAkD,IAAlD;;AAEA;AACA,YAAI,KACA,KAAK,IAAL,IACA,KAAK,IAAL,CAAU,OAAV,KAAsB,KADtB,IAC+B;AAC/B,aAAK,gBAAL,CAAsB,OAAtB,EAA+B,KAAK,IAApC,EAA0C,OAA1C,EAAmD,IAAnD,CAHJ;;AAKA,YAAI,MAAM,OAAN,CAAc,EAAd,CAAJ,EAAuB;AACnB,iBAAK,IAAL,CADmB,CACR;AACX,+BAAI,EAAE,OAAO,MAAT,EAAiB,MAAM,IAAvB,EAAJ,EAAmC,aAAU,KAAK,MAAL,CAAY,KAAK,MAAL,CAAY,MAAZ,GAAmB,CAA/B,CAAV,qLAEM,KAAK,SAAL,CAAe,KAAK,IAAL,CAAU,WAAzB,CAFN,QAAnC;AAGH;;AAED,YAAI,EAAJ,EAAQ;AACJ,eAAG,MAAH,CAAU,MAAV,GAAmB,KAAnB,CADI,CACsB;;AAE1B;AACA;AACA,eAAG,MAAH,CAAU,QAAV,GAAqB,KAAK,IAAL,CAAU,QAAV,GAAqB,KAAK,GAAL,CAAS,GAAG,MAAH,CAAU,QAAnB,EAA6B,MAAM,QAAN,GAAiB,GAA9C,CAArB,GAA2E,MAAM,QAAN,GAAiB,GAAjH;;AAEA;AACA;AACA,eAAG,MAAH,CAAU,cAAV,GAA2B,KAA3B;;AAEA,gCAAU,QAAV,CAAmB,KAAK,oBAAxB,EAA8C,KAAK,EAAnD;AACH;;AAED,aAAK,YAAL,CAAkB,EAAE,gBAAF,EAAW,UAAX,EAAiB,gBAAjB,EAA0B,YAA1B,EAAiC,cAAc,EAA/C,EAAlB,EAAuE,IAAvE,EAhHgC,CAgH8C;;AAE9E;AACA,4BAAU,QAAV,CAAmB,KAAK,sBAAxB,EAAgD,KAAK,EAArD;AACH,KAlMiB;AAoMlB,cApMkB,wBAoML;AACT,eAAO,KAAK,OAAL,IAAgB,kBAAQ,QAAR,CAAiB,KAAK,OAAtB,CAAhB,IAAkD,kBAAQ,QAAR,CAAiB,KAAK,OAAtB,EAA+B,OAAxF;AACH,KAtMiB;AAwMlB,iBAxMkB,yBAwMH,MAxMG,EAwMK;AACnB,YAAI,OAAO,kBAAQ,QAAR,CAAiB,KAAK,OAAtB,EAA+B,OAA/B,CAAuC,MAAvC,KAAkD,kBAAQ,aAAR,CAAsB,KAAK,OAA3B,EAAoC,MAApC,CAA7D;AACA,YAAI,UAAU,CAAC,IAAf,EAAqB;AACjB,gBAAI,CAAC,KAAK,uBAAL,CAA6B,MAA7B,CAAL,EAA2C;AAAE;AACzC,mCAAI,OAAJ,yBAAiC,KAAK,IAAtC,oCAAuE,MAAvE,yBAA+F,KAAK,OAApG;AACA,qBAAK,uBAAL,CAA6B,MAA7B,IAAuC,IAAvC;AACH;AACJ;AACD,eAAO,IAAP;AACH,KAjNiB;AAmNlB,eAnNkB,uBAmNL,IAnNK,EAmNC,OAnND,EAmNU;AACxB,YAAI,SAAS,0BAAY,YAAZ,CAAyB,KAAK,MAA9B,EAAsC,OAAtC,CAAb;AACA,YAAI,cAAc,KAAK,aAAL,CAAmB,MAAnB,KAA8B,KAAK,aAAL,CAAmB,KAAK,cAAxB,CAAhD;AACA,eAAO,WAAP;AACH,KAvNiB;;;AAyNlB;AACA,gBA1NkB,wBA0NJ,CA1NI,EA0ND,IA1NC,EA0NK;AACnB,YAAI,CAAC,KAAK,SAAL,CAAe,KAAK,EAApB,CAAD,IAA4B,CAAC,KAAK,MAAL,CAAY,KAAK,EAAjB,CAAjC,EAAuD;AACnD,iBAAK,SAAL,CAAe,IAAf;AACH;AACD,aAAK,MAAL,CAAY,KAAK,EAAjB,IAAuB,KAAK,MAAL,CAAY,KAAK,EAAjB,KAAwB,EAA/C;AACA,aAAK,MAAL,CAAY,KAAK,EAAjB,EAAqB,IAArB,CAA0B,CAA1B;AACH,KAhOiB;;;AAkOlB;AACA,WAnOkB,mBAmOT,IAnOS,EAmOH;AAAA;;AACX,YAAI,KAAK,QAAT,EAAmB;AACf,+BAAI,OAAJ,aAAsB,KAAK,IAA3B,qDAA+E,KAAK,GAApF;AACA,mBAAO,QAAQ,OAAR,EAAP;AACH;;AAED,YAAI,QAAQ,KAAK,MAAL,CAAY,KAAK,EAAjB,CAAZ;AACA,eAAO,KAAK,MAAL,CAAY,KAAK,EAAjB,CAAP;;AAEA;AACA,YAAI,YAAY,EAAhB;AACA,YAAI,aAAa,EAAjB;;AAEA,cAAM,OAAN,CAAc,aAAK;AACf,gBAAI,QAAQ,EAAE,KAAd;AACA,gBAAI,UAAU,EAAE,OAAhB;AACA,gBAAI,WAAW,QAAQ,QAAvB;;AAEA,gBAAI,iBAAiB,MAAK,WAAL,CAAiB,MAAM,IAAvB,EAA6B,QAA7B,EAAuC,KAAvC,CAArB;AACA,iBAAK,IAAI,IAAI,CAAb,EAAgB,IAAI,eAAe,MAAnC,EAA2C,GAA3C,EAAgD;AAC5C,oBAAI,QAAQ,eAAe,CAAf,CAAZ;AACA,oBAAI,YAAY;AACZ,oCADY;AAEZ,0BAAM,EAAE,IAFI;AAGZ,6BAAS,EAAE,OAHC;AAIZ,gCAJY;AAKZ;AALY,iBAAhB;AAOA,2BAAW,IAAX,CAAgB,SAAhB;;AAEA,oBAAI,EAAE,YAAN,EAAoB;AAChB,wBAAI,WAAW;AACX,wCADW;AAEX,8BAAM,EAAE,YAAF,CAAe,IAFV;AAGX,iCAAS,EAAE,OAHA;AAIX,8BAAM,EAAE,YAAF,CAAe,IAJV;AAKX,2CAAmB,EAAE,YAAF,CAAe,iBALvB;AAMX,gCAAQ,EAAE,YAAF,CAAe,MANZ;AAOX,qCAAa,KAPF;AAQX,gCAAQ,SARG,CAQS;AART,qBAAf;AAUA,8BAAU,IAAV,CAAe,QAAf;;AAEA;AACA;AACA,wBAAI,CAAC,EAAE,IAAF,CAAO,IAAP,CAAY,QAAjB,EAA2B;AACvB,kCAAU,MAAV,GAAmB,QAAnB,CADuB,CACM;AAChC;AACJ;AACJ;AACJ,SArCD;;AAuCA;AACA,eAAO,QACH,GADG,CACC;AACA;AACA,4BAAU,OAAV,CAAkB,UAAlB,EAA8B,KAAK,sBAAnC,EAA2D,KAAK,EAAhE,EAAoE,IAApE,CAAyE,sBAAc;AACnF,uBAAW,OAAX,CAAmB,aAAK;AACpB,sBAAK,aAAL,GAAqB,EAAE,KAAvB;AACA,sBAAK,aAAL,CAAmB,KAAnB,GAA2B,EAAE,KAA7B;AACA,6BAAM,UAAN,CAAiB,IAAjB,QAA4B,EAAE,OAA9B,EAAuC,EAAE,IAAzC,EAA+C,EAAE,OAAjD;AACH,aAJD;AAKH,SAND,CAFA;AASA;AACA,aAAK,0BAAL,CAAgC,IAAhC,EAAsC,KAAK,oBAA3C,EAAiE,SAAjE,CAVA,CADD,EAYA,IAZA,CAYK,gBAAqC;AAAA;AAAA;AAAA,gBAA/B,MAA+B,UAA/B,MAA+B;AAAA,gBAAvB,KAAuB,UAAvB,KAAuB;AAAA,gBAAhB,QAAgB,UAAhB,QAAgB;;AACzC;AACA,gBAAI,UAAU,KAAd,EAAqB;AACjB;AACA,uBAAO,OAAP,CAAe,aAAK;AAChB,wBAAI,oBAAoB,EAAE,iBAA1B;AACA,wBAAI,YAAY,MAAM,iBAAN,KAA4B,MAAM,iBAAN,EAAyB,EAAE,IAA3B,CAA5C;;AAEA;AACA,wBAAI,QAAQ,MAAK,aAAjB;AACA,0BAAM,KAAN,GAAc,EAAE,KAAhB;AACA,0BAAM,IAAN,GAAa,UAAU,IAAV,CAAe,YAA5B;AACA,0BAAM,KAAN,GAAc,CAAd,CARgB,CAQC;AACjB,0BAAM,SAAN,GAAkB,UAAU,KAAV,CAAgB,EAAE,KAAF,CAAQ,KAAxB,EAA+B,SAAjD;AACA,0BAAM,aAAN,GAAsB,SAAS,UAAU,KAAV,CAAgB,EAAE,KAAF,CAAQ,KAAxB,EAA+B,UAAxC,CAAtB;;AAEA,iCAAM,UAAN,CAAiB,IAAjB,QAA4B,EAAE,OAA9B,EAAuC,EAAE,IAAzC,EAA+C,EAAE,OAAjD;AACH,iBAbD;AAcH;AACD,kBAAK,QAAL,CAAc,IAAd;;AAEA;AACA,mBAAO,aAAM,OAAN,CAAc,IAAd,QAAyB,IAAzB,EAA+B,IAA/B,CAAoC,qBAAa;AACpD;AACA,oBAAI,YAAY,SAAS,MAAzB,EAAiC;AAAA;;AAC7B,8BAAU,QAAV,GAAqB,UAAU,QAAV,IAAsB,EAA3C;AACA,qDAAU,QAAV,EAAmB,IAAnB,+CAA2B,QAA3B,GAF6B,CAES;AACzC;AACD,uBAAO,SAAP;AACH,aAPM,CAAP;AAQH,SA1CE,CAAP;AA2CH,KAnUiB;AAqUlB,eArUkB,uBAqUL,IArUK,EAqUC;AACf,aAAK,KAAL,GAAa,0BAAY,wBAAZ,CAAqC,KAAK,KAA1C,CAAb;;AAEA,YAAI,KAAK,OAAT,EAAkB;AACd,iBAAK,OAAL,CAAa,KAAb,GAAqB,0BAAY,wBAAZ,CAAqC,KAAK,OAAL,CAAa,KAAlD,CAArB;AACA,iBAAK,OAAL,CAAa,KAAb,GAAqB,0BAAY,mBAAZ,CAAgC,KAAK,OAAL,CAAa,KAA7C,EAAoD;AAAA,uBAAK,MAAM,OAAN,CAAc,CAAd,IAAmB,EAAE,GAAF,CAAM,UAAN,CAAnB,GAAuC,WAAW,CAAX,CAA5C;AAAA,aAApD,CAArB;AACH;;AAED,aAAK,CAAL,GAAS,0BAAY,mBAAZ,CAAgC,KAAK,CAArC,EAAwC,0BAAY,UAApD,CAAT;;AAEA;AACA,aAAK,IAAL,GAAY,0BAAY,mBAAZ,CAAgC,KAAK,IAArC,EAA2C;AAAA,mBAAK,MAAM,OAAN,CAAc,CAAd,IAAmB,EAAE,GAAF,CAAM,UAAN,CAAnB,GAAuC,WAAW,CAAX,CAA5C;AAAA,SAA3C,CAAZ;;AAEA;AACA,aAAK,MAAL,GAAc,0BAAY,mBAAZ,CAAgC,KAAK,MAArC,EAA6C;AAAA,mBAAM,MAAM,OAAN,CAAc,CAAd,KAAoB,EAAE,GAAF,CAAM,UAAN,CAArB,IAA2C,CAAhD;AAAA,SAA7C,CAAd;;AAEA;AACA,aAAK,MAAL,GAAc,0BAAY,mBAAZ,CAAgC,KAAK,MAArC,EAA6C;AAAA,mBAAK,CAAC,MAAM,OAAN,CAAc,CAAd,IAAmB,CAAnB,GAAuB,CAAC,CAAD,EAAI,CAAJ,CAAxB,EAAgC,GAAhC,CAAoC,UAApC,KAAmD,CAAxD;AAAA,SAA7C,CAAd;;AAEA;AACA,aAAK,eAAL,GAAuB,0BAAY,mBAAZ,CAAgC,KAAK,eAArC,EAAsD,UAAtD,CAAvB;;AAEA;AACA,aAAK,SAAL,GAAiB,UAAU,KAAK,SAAL,IAAkB,KAAK,SAAL,CAAe,WAAf,EAA5B,CAAjB;AACA,YAAI,KAAK,SAAL,IAAkB,IAAtB,EAA4B;AACxB,iBAAK,SAAL,GAAiB,UAAU,MAA3B;AACH;;AAED,aAAK,iBAAL,GAAyB,KAAK,iBAAL,IAA0B,IAA1B,GAAiC,KAAK,iBAAtC,GAA0D,EAAnF,CA5Be,CA4BwE;AACvF,aAAK,iBAAL,GAAyB,0BAAY,mBAAZ,CAAgC,KAAK,iBAArC,EAAwD,UAAxD,CAAzB;;AAEA,aAAK,0BAAL,GAAkC,KAAK,0BAAL,IAAmC,IAAnC,GAA0C,KAAK,0BAA/C,GAA4E,CAA9G;AACA,aAAK,0BAAL,GAAkC,0BAAY,mBAAZ,CAAgC,KAAK,0BAArC,EAAiE,UAAjE,CAAlC;;AAEA,YAAI,OAAO,KAAK,KAAZ,KAAsB,QAA1B,EAAoC;AAChC,iBAAK,KAAL,GAAa,KAAK,KAAL,GAAa,KAAK,EAAlB,GAAuB,GAApC;AACH,SAFD,MAGK;AACD,iBAAK,KAAL,GAAa,KAAK,KAAL,IAAc,CAA3B,CADC,CAC6B;AACjC;;AAED;AACA,aAAK,IAAL,GAAY,KAAK,cAAL,CAAoB,KAAK,IAAzB,CAAZ,CA1Ce,CA0C6B;AAC5C,YAAI,KAAK,IAAT,EAAe;AACX,iBAAK,IAAL,CAAU,GAAV,GAAgB,KAAK,GAArB,CADW,CACe;AAC1B,iBAAK,IAAL,CAAU,YAAV,GAAyB,KAAK,IAAL,CAAU,YAAV,IAA0B,KAAK,YAAxD,CAFW,CAE2D;AACtE,iBAAK,IAAL,CAAU,MAAV,GAAmB,KAAK,IAAL,CAAU,MAAV,IAAoB,KAAK,cAA5C;AACA,iBAAK,IAAL,CAAU,QAAV,GAAsB,OAAO,KAAK,IAAL,CAAU,QAAjB,KAA8B,SAA/B,GAA4C,KAAK,IAAL,CAAU,QAAtD,GAAiE,KAAtF,CAJW,CAIkF;AAC7F,iBAAK,IAAL,CAAU,WAAV,GAAwB,KAAK,IAAL,CAAU,WAAV,IAAyB,KAAK,WAAtD,CALW,CAKwD;AACtE;;AAED,eAAO,IAAP;AACH,KAzXiB;;;AA2XlB;AACA,oBAAgB,CAAC,QAAD,EAAW,KAAX,EAAkB,OAAlB,EAA2B,MAA3B,CA5XE;;AA8XlB;AACA,iBA/XkB,yBA+XH,MA/XG,EA+XK,OA/XL,EA+Xc,IA/Xd,EA+XoB,OA/XpB,EA+X6B,IA/X7B,EA+XmC;AACjD,YAAI,SAAS,UAAU,EAAvB;AACA,eAAO,EAAP,GAAY,OAAZ;AACA,eAAO,eAAP,GAAyB,KAAK,eAAL,IAAwB,CAAjD;;AAEA;AACA,eAAO,OAAP,GAAkB,KAAK,OAAL,KAAiB,KAAlB,GAA2B,KAA3B,GAAmC,IAApD;;AAEA;AACA,eAAO,cAAP,GAAyB,KAAK,cAAL,IAAuB,IAAxB,GAAgC,KAAK,cAArC,GAAsD,KAA9E;;AAEA;AACA,eAAO,cAAP,GAAwB,KAAxB;;AAEA;AACA;AACA;AACA,eAAO,MAAP,GAAgB,KAAK,MAArB;;AAEA;AACA,eAAO,MAAP,GAAgB,0BAAY,kBAAZ,CAA+B,KAAK,MAApC,EAA4C,OAA5C,KAAwD,0BAAY,QAApF;AACA,eAAO,MAAP,GAAgB,0BAAY,kBAAZ,CAA+B,KAAK,MAApC,EAA4C,OAA5C,KAAwD,0BAAY,QAApF;;AAEA;AACA,eAAO,eAAP,GAAyB,0BAAY,kBAAZ,CAA+B,KAAK,eAApC,EAAqD,OAArD,CAAzB;AACA,YAAI,OAAO,eAAX,EAA4B;AACxB,mBAAO,eAAP,IAA0B,OAAO,eAAjC;;AAEA,gBAAI,OAAO,KAAK,YAAZ,KAA6B,UAAjC,EAA6C;AACzC,uBAAO,YAAP,GAAsB,KAAK,YAAL,CAAkB,OAAlB,CAAtB;AACH,aAFD,MAGK,IAAI,OAAO,KAAK,YAAZ,KAA6B,QAAjC,EAA2C;AAC5C,uBAAO,YAAP,GAAsB,KAAK,YAA3B;AACH,aAFI,MAGA;AACD,uBAAO,YAAP,GAAsB,KAAK,GAA3B,CADC,CAC+B;AACnC;AACJ;;AAED;AACA,YAAI,WAAW,KAAK,QAApB;AACA,YAAI,YAAY,IAAhB,EAAsB;AAClB,gBAAI,OAAO,QAAP,KAAoB,UAAxB,EAAoC;AAChC,2BAAW,SAAS,OAAT,CAAX;AACH;AACJ,SAJD,MAKK;AACD,uBAAW,CAAC,CAAD,KAAO,CAAlB,CADC,CACoB;AACxB;AACD,eAAO,QAAP,GAAkB,QAAlB;;AAEA,eAAO,MAAP;AACH,KAnbiB;;;AAqblB;AACA,mBAtbkB,2BAsbD,IAtbC,EAsbK,aAtbL,EAsboB;AAClC,YAAI,SAAS,EAAb;AACA,aAAK,IAAI,IAAE,CAAX,EAAc,IAAI,cAAc,MAAhC,EAAwC,GAAxC,EAA6C;AACzC,gBAAI,KAAK,cAAc,CAAd,CAAT;AACA,gBAAI,YAAY,KAAK,KAAL,CAAW,KAAK,EAAhB,EAAoB,GAAG,iBAAvB,EAA0C,GAAG,IAA7C,CAAhB;AACA,gBAAI,OAAO,UAAU,IAAV,CAAe,cAA1B;AACA,eAAG,KAAH,GAAW,0BAAe,GAAG,WAAH,CAAe,QAA9B,EAAwC,IAAxC,EAA8C,GAAG,MAAjD,CAAX;AACA,mBAAO,IAAP,CAAY,EAAZ;AACH;AACD,eAAO,MAAP;AACH,KAhciB;;;AAkclB;AACA,eAnckB,uBAmcL,IAncK,EAmcC,QAncD,EAmcW,OAncX,EAmcoB;AAClC,YAAI,SAAS,EAAb;;AAEA,YAAI,SAAS,IAAT,KAAkB,OAAtB,EAA+B;AAC3B,mBAAO,IAAP,CAAY,0BAAe,SAAS,WAAxB,EAAqC,IAArC,EAA2C,OAA3C,CAAZ;AACH,SAFD,MAGK,IAAI,SAAS,IAAT,KAAkB,YAAtB,EAAoC;AACrC,gBAAI,SAAS,SAAS,WAAtB;AACA,iBAAK,IAAI,IAAI,CAAb,EAAgB,IAAI,OAAO,MAA3B,EAAmC,EAAE,CAArC,EAAwC;AACpC,oBAAI,QAAQ,OAAO,CAAP,CAAZ;AACA,uBAAO,IAAP,CAAY,0BAAe,KAAf,EAAsB,IAAtB,EAA4B,OAA5B,CAAZ;AACH;AACJ,SANI,MAOA,IAAI,SAAS,IAAT,KAAkB,YAAtB,EAAoC;AACrC,gBAAI,OAAO,SAAS,WAApB;AACA,gBAAI,eAAe,+BAAkB,IAAlB,EAAwB,IAAxB,EAA8B,OAA9B,CAAnB;AACA,iBAAK,IAAI,KAAI,CAAb,EAAgB,KAAI,aAAa,MAAjC,EAAyC,EAAE,EAA3C,EAA8C;AAC1C,uBAAO,IAAP,CAAY,aAAa,EAAb,CAAZ;AACH;AACJ,SANI,MAOA,IAAI,SAAS,IAAT,KAAkB,iBAAtB,EAAyC;AAC1C,gBAAI,QAAQ,SAAS,WAArB;AACA,iBAAK,IAAI,KAAK,CAAd,EAAiB,KAAK,MAAM,MAA5B,EAAoC,IAApC,EAA0C;AACtC,oBAAI,QAAO,MAAM,EAAN,CAAX;AACA,oBAAI,gBAAe,+BAAkB,KAAlB,EAAwB,IAAxB,EAA8B,OAA9B,CAAnB;AACA,qBAAK,IAAI,MAAI,CAAb,EAAgB,MAAI,cAAa,MAAjC,EAAyC,EAAE,GAA3C,EAA8C;AAC1C,2BAAO,IAAP,CAAY,cAAa,GAAb,CAAZ;AACH;AACJ;AACJ,SATI,MAUA,IAAI,SAAS,IAAT,KAAkB,SAAtB,EAAiC;AAClC;AACA,gBAAI,QAAQ,SAAR,KAAsB,UAAU,QAApC,EAA8C;AAC1C,oBAAI,WAAW,cAAI,QAAJ,CAAa,SAAS,WAAtB,CAAf;AACA,uBAAO,IAAP,CAAY,0BAAe,QAAf,EAAyB,IAAzB,EAA+B,OAA/B,CAAZ;AACH;AACD;AAJA,iBAKK;AACD,wBAAI,QAAQ,SAAS,WAArB;AACA,yBAAK,IAAI,MAAK,CAAd,EAAiB,MAAK,MAAM,MAA5B,EAAoC,KAApC,EAA0C;AACtC,4BAAI,iBAAe,+BAAkB,MAAM,GAAN,CAAlB,EAA6B,IAA7B,EAAmC,OAAnC,CAAnB;AACA,6BAAK,IAAI,MAAI,CAAb,EAAgB,MAAI,eAAa,MAAjC,EAAyC,EAAE,GAA3C,EAA8C;AAC1C,mCAAO,IAAP,CAAY,eAAa,GAAb,CAAZ;AACH;AACJ;AACJ;AACJ,SAhBI,MAiBA,IAAI,SAAS,IAAT,KAAkB,cAAtB,EAAsC;AACvC,gBAAI,QAAQ,SAAR,KAAsB,UAAU,QAApC,EAA8C;AAC1C,oBAAI,YAAW,cAAI,aAAJ,CAAkB,SAAS,WAA3B,CAAf;AACA,uBAAO,IAAP,CAAY,0BAAe,SAAf,EAAyB,IAAzB,EAA+B,OAA/B,CAAZ;AACH,aAHD,MAIK;AACD,oBAAI,QAAQ,SAAS,WAArB;AACA,qBAAK,IAAI,IAAI,CAAb,EAAgB,IAAI,MAAM,MAA1B,EAAkC,GAAlC,EAAuC;AACnC,wBAAI,SAAQ,MAAM,CAAN,CAAZ;AACA,yBAAK,IAAI,OAAK,CAAd,EAAiB,OAAK,OAAM,MAA5B,EAAoC,MAApC,EAA0C;AACtC,4BAAI,iBAAe,+BAAkB,OAAM,IAAN,CAAlB,EAA6B,IAA7B,EAAmC,OAAnC,CAAnB;AACA,6BAAK,IAAI,MAAI,CAAb,EAAgB,MAAI,eAAa,MAAjC,EAAyC,EAAE,GAA3C,EAA8C;AAC1C,mCAAO,IAAP,CAAY,eAAa,GAAb,CAAZ;AACH;AACJ;AACJ;AACJ;AACJ;;AAED,eAAO,MAAP;AACH,KAtgBiB;;;AAwgBlB;;;;AAIA,sBA5gBkB,8BA4gBC,KA5gBD,EA4gBQ;AACtB,YAAI,QAAQ,MAAM,KAAN,IAAe,0BAAY,QAAZ,CAAqB,KAAhD;;AAEA;AACA,aAAK,kBAAL,CAAwB,YAAxB,EAAsC,CAAtC,EAAyC,EAAE,MAAM,CAAR,EAAzC;AACA,aAAK,kBAAL,CAAwB,YAAxB,EAAsC,MAAM,CAAN,IAAW,CAAjD,EAAoD,EAAE,MAAM,CAAR,EAAW,QAAQ,CAAnB,EAApD;AACA;AACA,aAAK,kBAAL,CAAwB,YAAxB,EAAsC,KAAK,UAAL,CAAgB,MAAM,KAAtB,CAAtC,EAAoE,EAAE,MAAM,CAAR,EAAW,QAAQ,CAAnB,EAApE;;AAEA;AACA,aAAK,kBAAL,CAAwB,SAAxB,EAAmC,CAAnC,EAAsC,EAAE,MAAM,CAAR,EAAtC,EAVsB,CAU8B;;AAEpD;AACA,aAAK,kBAAL,CAAwB,YAAxB,EAAsC,CAAtC,EAAyC,EAAE,MAAM,CAAR,EAAzC;;AAEA;AACA,aAAK,kBAAL,CAAwB,UAAxB,EAAoC,CAApC,EAAuC,EAAE,MAAM,CAAR,EAAvC;;AAEA;AACA,aAAK,kBAAL,CAAwB,SAAxB,EAAmC,iBAAO,IAAP,CAAY,KAAZ,EAAmB,GAAnB,CAAnC,EAA4D,EAAE,MAAM,CAAR,EAA5D;;AAEA;AACA,YAAI,KAAK,OAAL,CAAa,oBAAjB,EAAuC;AACnC,gBAAI,gBAAgB,MAAM,aAAN,IAAuB,0BAAY,QAAZ,CAAqB,OAArB,CAA6B,KAAxE;AACA,iBAAK,kBAAL,CAAwB,iBAAxB,EAA2C,iBAAO,IAAP,CAAY,aAAZ,EAA2B,GAA3B,CAA3C,EAA4E,EAAE,MAAM,CAAR,EAA5E;AACA,iBAAK,kBAAL,CAAwB,gBAAxB,EAA0C,MAAM,gBAAN,IAA0B,0BAAY,QAAZ,CAAqB,OAArB,CAA6B,KAAjG,EAAwG,EAAE,MAAM,CAAR,EAAxG;AACH;;AAED;AACA,YAAI,KAAK,SAAT,EAAoB;AAChB,iBAAK,kBAAL,CAAwB,mBAAxB,EAA6C,iBAAO,IAAP,CAAY,MAAM,eAAlB,EAAmC,GAAnC,CAA7C,EAAsF,EAAE,MAAM,CAAR,EAAtF;AACH;;AAED,eAAO,KAAK,eAAZ;AACH,KA9iBiB;AAgjBlB,aAhjBkB,qBAgjBR,MAhjBQ,EAgjBA,IAhjBA,EAgjBM,KAhjBN,EAgjBa,MAhjBb,EAgjBqB,UAhjBrB,EAgjBiC,MAhjBjC,EAgjByC,OAhjBzC,EAgjBkD,cAhjBlD,EAgjBkE,KAhjBlE,EAgjByE,WAhjBzE,EAgjBsF,eAhjBtF,EAgjBuG;AACrH,eAAO,iCACH,MADG,EAEH,WAFG,EAGH,eAHG,EAIH;AACI,4BAAgB,KAAK,aAAL,CAAmB,KAAnB,CAAyB,UAD7C;AAEI,4BAAgB,KAAK,aAAL,CAAmB,KAAnB,CAAyB,UAF7C;AAGI,yBAAa,KAAK,aAAL,CAAmB,KAAnB,CAAyB,OAH1C;AAII,0BAAc,KAAK,aAAL,CAAmB,KAAnB,CAAyB,QAJ3C;AAKI,2BAAe,KAAK,aAAL,CAAmB,KAAnB,CAAyB,SAL5C;AAMI,8BAAkB,KAAK,aAAL,CAAmB,KAAnB,CAAyB,YAN/C;AAOI,0BAAc,KAAK,aAAL,CAAmB,KAAnB,CAAyB;AAP3C,SAJG,EAaH;AACI,kBAAM,IADV;AAEI,4BAAgB,GAFpB,EAE4B;AACxB,0BAHJ;AAII,4BAJJ;AAKI,wBAAY,UALhB;AAMI,mBAAO,QAAQ,IANnB,EAM4B;AACxB,oBAAQ,MAPZ;AAQI,wBARJ;AASI,0CATJ;AAUI,kDAVJ;AAWI,sDAXJ;AAYI,8CAZJ;AAaI;AAbJ,SAbG,CAAP;AA6BH,KA9kBiB;;;AAglBlB;AACA,SAjlBkB,iBAilBX,KAjlBW,EAilBJ,WAjlBI,EAilBS,OAjlBT,EAilBkB;AAChC,YAAI,QAAQ,MAAM,KAAlB;AACA,YAAI,MAAM,IAAN,KAAe,QAAnB,EAA6B;AACzB,mBAAO,KAAK,qBAAL,CAA2B,KAA3B,EAAkC,KAAlC,EAAyC,WAAzC,EAAsD,OAAtD,CAAP;AACH,SAFD,MAGK;AACD,mBAAO,KAAK,UAAL,CAAgB,KAAhB,EAAuB,KAAvB,EAA8B,WAA9B,EAA2C,OAA3C,CAAP;AACH;AACJ,KAzlBiB;AA2lBlB,cA3lBkB,sBA2lBN,KA3lBM,EA2lBC,KA3lBD,EA2lBQ,WA3lBR,EA2lBqB,OA3lBrB,EA2lB8B;AAC5C,YAAI,kBAAkB,KAAK,kBAAL,CAAwB,KAAxB,CAAtB;AACA,YAAI,QAAQ,MAAM,KAAN,IAAe,MAAM,KAAjC;;AAEA,YAAI,aAAJ;AAAA,YAAU,kBAAV;AACA,YAAI,MAAM,IAAV,EAAe;AACX,mBAAO,MAAM,IAAN,CAAW,MAAM,IAAjB,CAAP;AACA,wBAAY,MAAM,SAAN,CAAgB,MAAM,IAAtB,EAA4B,QAAxC;AACH,SAHD,MAIK;AACD,mBAAO,MAAM,IAAb;AACA,wBAAY,MAAM,SAAlB;AACH;;AAED;AACA,YAAI,YAAY,KAAK,WAAL,CAAiB,QAAQ,IAAzB,EAA+B,KAAK,sBAAL,CAA4B,KAA5B,CAA/B,CAAhB;AACA,sBAAc,UAAU,WAAxB;;AAEA;AACA,kBAAU,QAAV,GAAqB,UAAU,QAAV,IAAsB,EAA3C;AACA,YAAI,MAAM,aAAV,EAAyB;AACrB,sBAAU,QAAV,CAAmB,SAAnB,GAA+B,MAAM,aAArC;AACA,sBAAU,QAAV,CAAmB,YAAnB,GAAkC,wBAAlC;AACA,sBAAU,QAAV,CAAmB,oBAAnB,GAA0C,KAA1C;AACH,SAJD,MAKK,IAAI,KAAK,OAAT,EAAkB;AACnB,sBAAU,QAAV,CAAmB,SAAnB,GAA+B,KAAK,OAApC;AACA,sBAAU,QAAV,CAAmB,YAAnB,GAAkC,0BAAlC;AACA,sBAAU,QAAV,CAAmB,oBAAnB,GAA0C,IAA1C;AACH,SAJI,MAKA;AACD,sBAAU,QAAV,CAAmB,SAAnB,GAA+B,kBAAQ,OAAvC,CADC,CAC+C;AAChD,sBAAU,QAAV,CAAmB,YAAnB,GAAkC,yBAAlC;AACA,sBAAU,QAAV,CAAmB,oBAAnB,GAA0C,IAA1C;AACH;;AAED,YAAI,SAAS,MAAM,MAAnB;;AAEA;AACA;AACA,eAAO,KAAK,SAAL,CACH,CAAC,MAAM,QAAP,CADG,EAC6B;AAChC,YAFG,EAE6B;AAChC,aAHG,EAG6B;AAChC,YAJG,EAI6B;AAChC,YALG,EAK6B;AAChC,cANG,EAM6B;AAChC,YAPG,EAO6B;AAChC,iBARG,EAQ6B;AAChC,aATG,EAS6B;AAChC,mBAVG,EAUU,eAVV,CAU6B;AAV7B,SAAP;AAYH,KA/oBiB;AAipBlB,yBAjpBkB,iCAipBK,KAjpBL,EAipBY,KAjpBZ,EAipBmB,WAjpBnB,EAipBgC,OAjpBhC,EAipByC;AACvD,YAAI,kBAAkB,KAAK,kBAAL,CAAwB,KAAxB,CAAtB;AACA,YAAI,QAAQ,MAAM,KAAlB;AACA,YAAI,aAAa,CAAjB;;AAEA;AACA;;AAEA;AACA,aAAK,IAAI,IAAI,CAAb,EAAgB,IAAI,MAAM,YAA1B,EAAwC,GAAxC,EAA4C;AACxC,gBAAI,OAAO,MAAM,IAAN,CAAW,MAAM,IAAjB,EAAuB,CAAvB,CAAX;AACA,gBAAI,kBAAkB,MAAM,gBAAN,CAAuB,CAAvB,CAAtB;;AAEA;AACA,kBAAM,aAAN,GAAsB,MAAM,cAAN,CAAqB,CAArB,CAAtB;AACA,gBAAI,YAAY,KAAK,WAAL,CAAiB,QAAQ,IAAzB,EAA+B,KAAK,sBAAL,CAA4B,KAA5B,CAA/B,CAAhB;AACA,0BAAc,UAAU,WAAxB;;AAEA;AACA,sBAAU,QAAV,GAAqB,UAAU,QAAV,IAAsB,EAA3C;AACA,sBAAU,QAAV,CAAmB,SAAnB,GAA+B,MAAM,aAArC;AACA,sBAAU,QAAV,CAAmB,YAAnB,GAAkC,wBAAlC;AACA,sBAAU,QAAV,CAAmB,oBAAnB,GAA0C,KAA1C;;AAEA,gBAAI,SAAS,MAAM,MAAN,IAAgB,CAAC,CAAD,EAAG,CAAH,CAA7B;AACA,gBAAI,WAAW,MAAM,QAArB;;AAEA,gBAAI,SAAS,MAAM,MAAN,CAAa,CAAb,CAAb;AACA,gBAAI,UAAU,MAAM,OAAN,CAAc,CAAd,CAAd;AACA,gBAAI,aAAa,MAAM,UAAN,CAAiB,CAAjB,CAAjB;;AAEA,0BAAc,KAAK,SAAL,CACV,CAAC,QAAD,CADU,EACsB;AAChC,gBAFU,EAEsB;AAChC,iBAHU,EAGsB;AAChC,kBAJU,EAIsB;AAChC,sBALU,EAKsB;AAChC,kBANU,EAMsB;AAChC,mBAPU,EAOsB;AAChC,2BARU,EAQsB;AAChC,gBATU,EASsB;AAChC,uBAVU,EAUG,eAVH,CAUsB;AAVtB,aAAd;AAYH;;AAED;AACA,aAAK,IAAI,MAAI,CAAb,EAAgB,MAAI,MAAM,YAA1B,EAAwC,KAAxC,EAA4C;AACxC,gBAAI,QAAO,MAAM,IAAN,CAAW,MAAM,IAAjB,EAAuB,GAAvB,CAAX;AACA,gBAAI,WAAW,MAAM,SAAN,CAAgB,MAAM,IAAtB,EAA4B,GAA5B,EAA+B,QAA9C;;AAEA;AACA,kBAAM,aAAN,GAAsB,MAAM,cAAN,CAAqB,GAArB,CAAtB;AACA,gBAAI,aAAY,KAAK,WAAL,CAAiB,QAAQ,IAAzB,EAA+B,KAAK,sBAAL,CAA4B,KAA5B,CAA/B,CAAhB;AACA,0BAAc,WAAU,WAAxB;;AAEA;AACA,uBAAU,QAAV,GAAqB,WAAU,QAAV,IAAsB,EAA3C;AACA,uBAAU,QAAV,CAAmB,SAAnB,GAA+B,MAAM,aAArC;AACA,uBAAU,QAAV,CAAmB,YAAnB,GAAkC,wBAAlC;AACA,uBAAU,QAAV,CAAmB,oBAAnB,GAA0C,KAA1C;;AAEA,gBAAI,UAAS,MAAM,MAAN,IAAgB,CAAC,CAAD,EAAG,CAAH,CAA7B;AACA,gBAAI,YAAW,MAAM,QAArB;;AAEA,gBAAI,UAAS,MAAM,MAAN,CAAa,GAAb,CAAb;AACA,gBAAI,WAAU,MAAM,OAAN,CAAc,GAAd,CAAd;AACA,gBAAI,cAAa,MAAM,UAAN,CAAiB,GAAjB,CAAjB;;AAEA,0BAAc,KAAK,SAAL,CACV,CAAC,SAAD,CADU,EACsB;AAChC,iBAFU,EAEsB;AAChC,iBAHU,EAGsB;AAChC,mBAJU,EAIsB;AAChC,uBALU,EAKsB;AAChC,mBANU,EAMsB;AAChC,oBAPU,EAOsB;AAChC,oBARU,EAQsB;AAChC,gBATU,EASsB;AAChC,uBAVU,EAUG,eAVH,CAUsB;AAVtB,aAAd;AAYH;;AAED,eAAO,UAAP;AACH,KApuBiB;;;AAsuBlB;AACA,cAvuBkB,sBAuuBN,KAvuBM,EAuuBC,KAvuBD,EAuuBQ,WAvuBR,EAuuBqB,OAvuBrB,EAuuB8B;AAC5C,eAAO,KAAK,KAAL,CAAW,KAAX,EAAkB,WAAlB,EAA+B,OAA/B,CAAP;AACH,KAzuBiB;AA2uBlB,eA3uBkB,uBA2uBL,MA3uBK,EA2uBG,KA3uBH,EA2uBU,WA3uBV,EA2uBuB,OA3uBvB,EA2uBgC;AAC9C,eAAO,KAAK,KAAL,CAAW,KAAX,EAAkB,WAAlB,EAA+B,OAA/B,CAAP;AACH,KA7uBiB;AA+uBlB,iBA/uBkB,yBA+uBH,MA/uBG,EA+uBK,KA/uBL,EA+uBY,WA/uBZ,EA+uByB,OA/uBzB,EA+uBkC;AAChD,eAAO,KAAK,KAAL,CAAW,KAAX,EAAkB,WAAlB,EAA+B,OAA/B,CAAP;AACH,KAjvBiB;;;AAmvBlB;AACA,0BApvBkB,kCAovBM,IApvBN,EAovBY;AAC1B;AACA,YAAI,KAAK,aAAT,EAAwB;AACpB,mBAAO,KAAK,aAAZ;AACH;AACD,eAAO,KAAK,oBAAZ;AACH,KA1vBiB;AA4vBlB,YA5vBkB,oBA4vBR,WA5vBQ,EA4vBK,eA5vBL,EA4vBoC;AAAA,YAAd,OAAc,uEAAJ,EAAI;;AAClD;AACA,kBAAU,OAAO,MAAP,CAAc,EAAd,EAAkB,OAAlB,EAA2B,EAAE,cAAc,KAAK,YAArB,EAA3B,CAAV;AACA,eAAO,aAAM,QAAN,CAAe,IAAf,CAAoB,IAApB,EAA0B,WAA1B,EAAuC,eAAvC,EAAwD,OAAxD,CAAP;AACH;AAhwBiB,CAAtB;;;;;;;;;;ACrCA;;AACA;;AACA;;;;AACA;;;;AACA;;AACA;;;;;;AAPA;;AASA,IAAI,KAAK,QAAQ,IAAR,CAAT,C,CALqC;AAM9B,IAAM,8DAA2B,GAAG,YAAH,CAAgB,YAAY,uBAA5B,EAAqD,MAArD,CAAjC;AACA,IAAM,kEAA6B,GAAG,YAAH,CAAgB,YAAY,yBAA5B,EAAuD,MAAvD,CAAnC;;AAEA,IAAI,8BAAW,OAAO,MAAP,cAAf;;AAEP,OAAO,MAAP,CAAc,QAAd,EAAwB;AACpB,UAAM,UADc;AAEpB,cAAU,IAFU;AAGpB,uBAAmB,wBAHC;AAIpB,yBAAqB,0BAJD;;AAMpB,QANoB,kBAMb;AACH,qBAAM,IAAN,CAAW,KAAX,CAAiB,IAAjB,EAAuB,SAAvB;;AAEA;AACA,YAAI,UAAU,CACV,EAAE,MAAM,YAAR,EAAsB,MAAM,CAA5B,EAA+B,MAAM,oBAAG,KAAxC,EAA+C,YAAY,KAA3D,EADU,EAEV,EAAE,MAAM,UAAR,EAAoB,MAAM,CAA1B,EAA6B,MAAM,oBAAG,IAAtC,EAA4C,YAAY,IAAxD,EAFU,EAEsD;AAChE,UAAE,MAAM,SAAR,EAAmB,MAAM,CAAzB,EAA4B,MAAM,oBAAG,aAArC,EAAoD,YAAY,IAAhE,EAHU,CAAd;;AAMA;AACA,aAAK,OAAL,CAAa,wBAAb,GAAwC,IAAxC;AACA,aAAK,OAAL,CAAa,mBAAb,GAAmC,IAAnC;;AAEA;AACA,aAAK,SAAL,GAAiB,IAAjB;AACA,gBAAQ,IAAR,CAAa,EAAE,MAAM,mBAAR,EAA6B,MAAM,CAAnC,EAAsC,MAAM,oBAAG,aAA/C,EAA8D,YAAY,IAA1E,EAAb;;AAEA;AACA,YAAI,KAAK,SAAT,EAAoB;AAChB,iBAAK,OAAL,CAAa,sBAAb,GAAsC,IAAtC;;AAEA;AACA,oBAAQ,IAAR,CAAa,EAAE,MAAM,YAAR,EAAsB,MAAM,CAA5B,EAA+B,MAAM,oBAAG,cAAxC,EAAwD,YAAY,IAApE,EAAb;AACH;;AAED,aAAK,aAAL,GAAqB,4BAAiB,OAAjB,CAArB;AACH,KAjCmB;AAmCpB,iBAnCoB,yBAmCL,OAnCK,EAmCI,IAnCJ,EAmCU,OAnCV,EAmCmB;AACnC,YAAI,QAAQ,KAAK,aAAjB;;AAEA,cAAM,KAAN,GAAc,KAAK,UAAL,CAAgB,KAAK,KAArB,EAA4B,OAA5B,CAAd;AACA,YAAI,CAAC,MAAM,KAAX,EAAkB;AACd,mBAAO,IAAP;AACH;;AAED,cAAM,CAAN,GAAW,KAAK,CAAL,IAAU,0BAAY,0BAAZ,CAAuC,KAAK,CAA5C,EAA+C,OAA/C,CAAX,IAAuE,0BAAY,QAAZ,CAAqB,CAAtG;AACA,cAAM,CAAN,IAAW,cAAI,YAAf,CATmC,CASN;;AAE7B,cAAM,OAAN,GAAgB,0BAAY,YAAZ,CAAyB,KAAK,OAA9B,EAAuC,OAAvC,CAAhB;AACA,YAAI,MAAM,OAAV,EAAmB;AACf;AACA,gBAAI,MAAM,OAAN,KAAkB,IAAtB,EAA4B;AACxB,sBAAM,MAAN,GAAe,QAAQ,UAAR,CAAmB,MAAnB,IAA6B,0BAAY,QAAZ,CAAqB,MAAjE;AACA,sBAAM,UAAN,GAAmB,QAAQ,UAAR,CAAmB,UAAnB,IAAiC,0BAAY,QAAZ,CAAqB,UAAzE;AAEH;AACD;AALA,iBAMK,IAAI,OAAO,MAAM,OAAb,KAAyB,QAA7B,EAAuC;AACxC,0BAAM,MAAN,GAAe,MAAM,OAArB;AACA,0BAAM,UAAN,GAAmB,CAAnB;AACH;AACD;AAJK,qBAKA,IAAI,MAAM,OAAN,CAAc,MAAM,OAApB,CAAJ,EAAkC;AACnC,8BAAM,UAAN,GAAmB,MAAM,OAAN,CAAc,CAAd,CAAnB;AACA,8BAAM,MAAN,GAAe,MAAM,OAAN,CAAc,CAAd,CAAf;AACH;;AAED,kBAAM,MAAN,IAAgB,cAAI,YAApB,CAlBe,CAkByB;AACxC,kBAAM,UAAN,IAAoB,cAAI,YAAxB;AACH;;AAED,cAAM,UAAN,GAAmB,KAAK,UAAxB,CAlCmC,CAkCC;;AAEpC,eAAO,KAAP;AACH,KAxEmB;AA0EpB,eA1EoB,uBA0EP,IA1EO,EA0ED;AACf,aAAK,KAAL,GAAa,0BAAY,wBAAZ,CAAqC,KAAK,KAA1C,CAAb;AACA,aAAK,CAAL,GAAS,0BAAY,mBAAZ,CAAgC,KAAK,CAArC,EAAwC,0BAAY,UAApD,CAAT;AACA,eAAO,IAAP;AACH,KA9EmB;;;AAgFpB;;;;AAIA,sBApFoB,8BAoFD,KApFC,EAoFM;AACtB,YAAI,IAAI,CAAR;;AAEA;AACA,aAAK,eAAL,CAAqB,GAArB,IAA4B,CAA5B;AACA,aAAK,eAAL,CAAqB,GAArB,IAA4B,CAA5B;AACA,aAAK,eAAL,CAAqB,GAArB,IAA4B,MAAM,CAAN,IAAW,CAAvC;;AAEA;AACA,aAAK,eAAL,CAAqB,GAArB,IAA4B,KAAK,UAAL,CAAgB,MAAM,KAAtB,CAA5B;;AAEA;AACA,aAAK,eAAL,CAAqB,GAArB,IAA4B,CAA5B;AACA,aAAK,eAAL,CAAqB,GAArB,IAA4B,CAA5B;AACA,aAAK,eAAL,CAAqB,GAArB,IAA4B,IAAI,GAAhC;;AAEA;AACA,aAAK,eAAL,CAAqB,GAArB,IAA4B,MAAM,KAAN,CAAY,CAAZ,IAAiB,GAA7C;AACA,aAAK,eAAL,CAAqB,GAArB,IAA4B,MAAM,KAAN,CAAY,CAAZ,IAAiB,GAA7C;AACA,aAAK,eAAL,CAAqB,GAArB,IAA4B,MAAM,KAAN,CAAY,CAAZ,IAAiB,GAA7C;AACA,aAAK,eAAL,CAAqB,GAArB,IAA4B,MAAM,KAAN,CAAY,CAAZ,IAAiB,GAA7C;;AAEA;AACA,YAAI,KAAK,SAAT,EAAoB;AAChB,iBAAK,eAAL,CAAqB,GAArB,IAA4B,MAAM,eAAN,CAAsB,CAAtB,IAA2B,GAAvD;AACA,iBAAK,eAAL,CAAqB,GAArB,IAA4B,MAAM,eAAN,CAAsB,CAAtB,IAA2B,GAAvD;AACA,iBAAK,eAAL,CAAqB,GAArB,IAA4B,MAAM,eAAN,CAAsB,CAAtB,IAA2B,GAAvD;AACA,iBAAK,eAAL,CAAqB,GAArB,IAA4B,MAAM,eAAN,CAAsB,CAAtB,IAA2B,GAAvD;AACH;;AAED;AACA,YAAI,KAAK,SAAT,EAAoB;AAChB,iBAAK,eAAL,CAAqB,GAArB,IAA4B,CAA5B;AACA,iBAAK,eAAL,CAAqB,GAArB,IAA4B,CAA5B;AACH;;AAED,eAAO,KAAK,eAAZ;AACH,KAzHmB;AA2HpB,iBA3HoB,yBA2HN,QA3HM,EA2HI,KA3HJ,EA2HW,WA3HX,EA2HwB,OA3HxB,EA2HiC;AACjD,YAAI,kBAAkB,KAAK,kBAAL,CAAwB,KAAxB,CAAtB;AACA,YAAI,UAAU;AACV,4BAAgB,KAAK,aAAL,CAAmB,KAAnB,CAAyB,UAD/B;AAEV,gCAAoB,KAFV,EAEiB;AAC3B,+BAAmB,CAAC,MAAM,UAHhB;AAIV,iCAAqB,cAAI,UAAJ,GAAiB,QAAQ,IAAR,CAAa,SAA9B,GAA0C,CAJrD;AAKV,qBAAS,QAAQ;AALP,SAAd;;AAQA;AACA,YAAI,MAAM,OAAN,IAAiB,MAAM,MAA3B,EAAmC;AAC/B,mBAAO,qCACH,QADG,EAEH,MAAM,CAFH,EAEM,MAAM,MAFZ,EAEoB,MAAM,UAF1B,EAGH,WAHG,EAGU,eAHV,EAIH,KAAK,aAAL,CAAmB,KAAnB,CAAyB,QAJtB,EAKH,GALG,EAKE;AACL,mBANG,CAAP;AAQH;AACD;AAVA,aAWK;AACD,uBAAO,6BACH,QADG,EAEH,WAFG,EAEU,eAFV,EAGH,OAHG,CAAP;AAKH;AACJ;AAxJmB,CAAxB;;;;;;;;;;ACbA;;AACA;;AAHA;;AAKO,IAAI,oCAAc,OAAO,MAAP,oBAAlB;;AAEP,OAAO,MAAP,CAAc,WAAd,EAA2B;AACvB,UAAM,QADiB;AAEvB,6BAFuB;AAGvB,cAAU,IAHa;;AAKvB,QALuB,kBAKhB;AACH;AACA,aAAK,MAAL,GAAc,KAAK,MAAL,IAAe,OAA7B;;AAEA,aAAK,KAAL,CAAW,IAAX,CAAgB,KAAhB,CAAsB,IAAtB,EAA4B,SAA5B;;AAEA,aAAK,SAAL,GAAiB,KAAjB,CANG,CAMqB;AAC3B,KAZsB;AAcvB,eAduB,uBAcV,IAdU,EAcJ;AACf;AACA,aAAK,KAAL,GAAa,KAAK,KAAL,IAAc,0BAAY,QAAZ,CAAqB,KAAhD;AACA,eAAO,KAAK,KAAL,CAAW,WAAX,CAAuB,KAAvB,CAA6B,IAA7B,EAAmC,SAAnC,CAAP;AACH;AAlBsB,CAA3B;;;;;;;;;;;;;;QCysBgB,kB,GAAA,kB;;AA9sBhB;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;;;kNAdA;;AAgBA,IAAI,KAAK,QAAQ,IAAR,CAAT;AACA,IAAM,8BAA8B,GAAG,YAAH,CAAgB,YAAY,wCAA5B,EAAsE,MAAtE,CAApC;AACA,IAAM,oBAAoB,GAAG,YAAH,CAAgB,YAAY,6BAA5B,EAA2D,MAA3D,CAA1B;;AAEA;;AAEO,IAAI,wBAAQ;AACf,QADe,kBACiD;AAAA,uFAAJ,EAAI;AAAA,YAAxD,UAAwD,QAAxD,UAAwD;AAAA,YAA5C,MAA4C,QAA5C,MAA4C;AAAA,gCAApC,OAAoC;AAAA,YAApC,OAAoC,gCAA1B,EAA0B;AAAA,YAAtB,aAAsB,QAAtB,aAAsB;;AAC5D,aAAK,aAAL,CAAmB,UAAnB;AACA,aAAK,MAAL,GAAc,MAAd,CAF4D,CAEhB;AAC5C,aAAK,OAAL,GAAe,OAAf,CAH4D,CAGhB;AAC5C,aAAK,OAAL,GAAgB,KAAK,cAAL,CAAoB,SAApB,KAAkC,KAAK,OAAxC,IAAoD,EAAnE,CAJ4D,CAIW;AACvE,aAAK,OAAL,GAAgB,KAAK,cAAL,CAAoB,SAApB,KAAkC,KAAK,OAAxC,IAAoD,EAAnE,CAL4D,CAKW;AACvE,aAAK,aAAL,GAAqB,iBAAiB,KAAtC;AACA,aAAK,SAAL,GAAiB,KAAK,SAAL,IAAkB,KAAK,aAAvB,IAAwC,KAAzD,CAP4D,CAOM;AAClE,aAAK,aAAL,GAAqB,KAArB,CAR4D,CAQhB;AAC5C,aAAK,OAAL,GAAe,IAAf,CAT4D,CAShB;AAC5C,aAAK,iBAAL,GAAyB,IAAzB,CAV4D,CAUhB;AAC5C,aAAK,aAAL,GAAqB,EAArB,CAX4D,CAWhB;AAC5C,aAAK,eAAL,GAAuB,EAAvB,CAZ4D,CAYhB;AAC5C,aAAK,SAAL,GAAiB,EAAjB;;AAEA;AACA,aAAK,OAAL,CAAa,2BAAb,GAA2C,MAA3C;;AAEA;AACA,aAAK,KAAL,GAAa,KAAK,KAAL,IAAc,QAA3B,CAnB4D,CAmBhB;AAC5C,aAAK,OAAL,oBAA8B,KAAK,KAAL,CAAW,WAAX,EAA9B,IAA4D,IAA5D;AACA,YAAI,KAAK,WAAL,IAAoB,IAAxB,EAA8B;AAAE;AAC5B,iBAAK,WAAL,GAAmB,CAAC,CAApB,CAD0B,CACH;AAC1B;;AAED,aAAK,iBAAL,CAAuB,OAAvB,EAzB4D,CAyB3B;;AAEjC;AACA,YAAI,EAAE,KAAK,QAAL,8BAAF,CAAJ,EAA0C;AACtC,gBAAI,CAAC,mBAAS,OAAT,CAAiB,KAAK,QAAtB,CAAL,EAAsC;AAClC,qBAAK,QAAL,GAAgB,0BAAY,QAAZ,CAAqB,QAArC;AACH;AACD,iBAAK,QAAL,GAAgB,uBAAa,KAAK,QAAlB,CAAhB;AACH;AACD,aAAK,QAAL,CAAc,MAAd,CAAqB,IAArB;;AAEA;AACA,wBAAM,OAAN,CAAc,KAAK,QAAnB,EAA6B,IAA7B;;AAEA;AACA,aAAK,YAAL;;AAEA,aAAK,WAAL,GAAmB,IAAnB;AACH,KA5Cc;AA8Cf,WA9Ce,qBA8CJ;AACP,YAAI,KAAK,OAAT,EAAkB;AACd,iBAAK,OAAL,CAAa,OAAb;AACA,iBAAK,OAAL,GAAe,IAAf;AACH;;AAED,YAAI,KAAK,iBAAT,EAA4B;AACxB,iBAAK,iBAAL,CAAuB,OAAvB;AACA,iBAAK,iBAAL,GAAyB,IAAzB;AACH;;AAED,gCAAa,YAAb,CAA0B,KAAK,kBAA/B;AACA,aAAK,EAAL,GAAU,IAAV;AACA,aAAK,WAAL,GAAmB,KAAnB;AACH,KA5Dc;AA8Df,SA9De,mBA8DN,CACR,CA/Dc;AAiEf,aAjEe,uBAiEF;AACT,eAAO,KAAK,IAAL,IAAa,KAAK,IAAzB;AACH,KAnEc;AAqEf,iBArEe,yBAqEA,UArEA,EAqEY;AACvB;AACA,aAAK,UAAL,GAAkB,UAAlB;;AAEA;AACA,aAAK,kBAAL,GAA0B,CAAC,OAAD,EAAU,KAAK,IAAf,EAAqB,KAAK,UAA1B,EAAsC,IAAtC,CAA2C,GAA3C,CAA1B;AACA,YAAI,iBAAO,OAAX,EAAoB;AAChB,oCAAa,SAAb,CAAuB,KAAK,kBAA5B,EAAgD,IAAhD;AACH;AACJ,KA9Ec;AAgFf,sBAhFe,8BAgFI,SAhFJ,EAgFe,KAhFf,SAgFwC;AAAA,YAAhB,IAAgB,SAAhB,IAAgB;AAAA,YAAV,MAAU,SAAV,MAAU;;AACnD,iBAAU,WAAW,SAAZ,GAAyB,CAAzB,GAA6B,MAAtC;;AAEA,YAAI,QAAQ,KAAK,aAAL,CAAmB,KAAnB,CAAyB,SAAzB,CAAZ;AACA,YAAI,UAAU,SAAd,EAAyB;AACrB,+BAAI,MAAJ,yBAAgC,KAAK,IAArC,4DAA8F,SAA9F;AACA;AACH;;AAED,aAAK,IAAI,IAAI,CAAb,EAAgB,IAAI,IAApB,EAA0B,EAAE,CAA5B,EAA+B;AAC3B,gBAAI,IAAI,MAAM,MAAN,GAAe,CAAf,GAAmB,MAAM,CAAN,CAAnB,GAA8B,KAAtC;AACA,iBAAK,eAAL,CAAqB,QAAQ,CAAR,GAAY,MAAjC,IAA2C,CAA3C;AACH;AACJ,KA7Fc;;;AA+Ff;;AAEA;AACA,aAlGe,qBAkGJ,IAlGI,EAkGE;AACb,aAAK,SAAL,CAAe,KAAK,EAApB,IAA0B,KAAK,SAAL,CAAe,KAAK,EAApB,KAA2B;AACjD,oBAAQ,EADyC;AAEjD,sBAAU,EAFuC;AAGjD,sBAAU;AAHuC,SAArD;AAKH,KAxGc;;;AA0Gf;AACA,WA3Ge,mBA2GN,IA3GM,EA2GA;AACX,YAAI,YAAY,KAAK,SAAL,CAAe,KAAK,EAApB,CAAhB;AACA,aAAK,SAAL,CAAe,KAAK,EAApB,IAA0B,IAA1B;;AAEA,YAAI,aAAa,OAAO,IAAP,CAAY,UAAU,MAAtB,EAA8B,MAA9B,GAAuC,CAAxD,EAA2D;AACvD,iBAAK,IAAI,OAAT,IAAoB,UAAU,MAA9B,EAAsC;AAClC,oBAAI,OAAO,UAAU,MAAV,CAAiB,OAAjB,CAAX;;AAEA;AACA,oBAAI,KAAK,WAAL,CAAiB,YAAjB,KAAkC,CAAtC,EAAyC;AACrC,2BAAO,UAAU,MAAV,CAAiB,OAAjB,CAAP;AACA;AACH;;AAED;AACA,qBAAK,WAAL,CAAiB,GAAjB;AACA,qBAAK,eAAL,GAAuB,KAAK,WAAL,CAAiB,cAAxC;AACA,qBAAK,WAAL,GAAmB,KAAK,WAAL,CAAiB,aAApC,CAZkC,CAYiB;AACtD;;AAED;AACA;AACA,mBAAO,KAAK,mBAAL,CAAyB,IAAzB,EAA+B,SAA/B,EAA0C,IAA1C,CAA+C;AAAA,uBAAM,SAAN;AAAA,aAA/C,CAAP;AACH,SAnBD,MAoBK;AACD,mBAAO,QAAQ,OAAR,CAAgB,IAAhB,CAAP,CADC,CAC6B;AACjC;AACJ,KAtIc;;;AAwIf;AACA,kBAzIe,0BAyIC,IAzID,EAyIO;AAClB,eAAO,KAAK,SAAL,CAAe,KAAK,EAApB,KAA2B,IAAlC;AACH,KA3Ic;AA6If,eA7Ie,uBA6IF,IA7IE,EA6II,OA7IJ,EA6Ia;AACxB,YAAI,SAAS,KAAK,SAAL,CAAe,KAAK,EAApB,EAAwB,MAArC;AACA,YAAI,OAAO,OAAP,KAAmB,IAAvB,EAA6B;AACzB,mBAAO,OAAP,IAAkB;AACd,gCADc;AAEd,6BAAa,KAAK,0BAAL,CAAgC,OAAhC,EAAyC,gBAAzC;AAFC,aAAlB;AAIH;AACD,eAAO,OAAO,OAAP,CAAP;AACH,KAtJc;AAwJf,8BAxJe,sCAwJa,OAxJb,EAwJsB;AACjC,eAAO,KAAK,aAAZ;AACH,KA1Jc;;;AA4Jf,0BAAsB,CA5JP;AA6Jf,0BA7Je,kCA6JS,IA7JT,EA6Je;AAC1B,eAAO,KAAK,oBAAZ;AACH,KA/Jc;AAiKf,cAjKe,sBAiKH,OAjKG,EAiKM,IAjKN,EAiKY,OAjKZ,EAiKqB;AAChC,YAAI,OAAO,QAAQ,IAAnB;AACA,YAAI,KAAK,UAAL,KAAoB,KAAK,UAA7B,EAAyC;AACrC;AACH;;AAED,YAAI,CAAC,KAAK,SAAL,CAAe,KAAK,EAApB,CAAL,EAA8B;AAC1B,iBAAK,SAAL,CAAe,IAAf;AACH;;AAED,YAAI,QAAQ,KAAK,YAAL,CAAkB,OAAlB,EAA2B,IAA3B,EAAiC,OAAjC,CAAZ;AACA,YAAI,CAAC,KAAL,EAAY;AACR,mBADQ,CACA;AACX;;AAED,YAAI,cAAc,KAAK,WAAL,CAAiB,IAAjB,EAAuB,KAAK,sBAAL,CAA4B,KAA5B,CAAvB,EAA2D,WAA7E;AACA,aAAK,aAAL,CAAmB,QAAQ,QAA3B,EAAqC,KAArC,EAA4C,WAA5C,EAAyD,OAAzD;AACH,KAlLc;AAoLf,iBApLe,yBAoLA,QApLA,EAoLU,KApLV,EAoLiB,WApLjB,EAoL8B,OApL9B,EAoLuC;AAAA;;AAClD,YAAI,mBAAJ;AACA,YAAI,SAAS,IAAT,KAAkB,SAAtB,EAAiC;AAC7B,yBAAa,KAAK,aAAL,CAAmB,CAAC,SAAS,WAAV,CAAnB,EAA2C,KAA3C,EAAkD,WAAlD,EAA+D,OAA/D,CAAb;AACH,SAFD,MAGK,IAAI,SAAS,IAAT,KAAkB,cAAtB,EAAsC;AACvC,yBAAa,KAAK,aAAL,CAAmB,SAAS,WAA5B,EAAyC,KAAzC,EAAgD,WAAhD,EAA6D,OAA7D,CAAb;AACH,SAFI,MAGA,IAAI,SAAS,IAAT,KAAkB,YAAtB,EAAoC;AACrC,yBAAa,KAAK,UAAL,CAAgB,CAAC,SAAS,WAAV,CAAhB,EAAwC,KAAxC,EAA+C,WAA/C,EAA4D,OAA5D,CAAb;AACH,SAFI,MAGA,IAAI,SAAS,IAAT,KAAkB,iBAAtB,EAAyC;AAC1C,yBAAa,KAAK,UAAL,CAAgB,SAAS,WAAzB,EAAsC,KAAtC,EAA6C,WAA7C,EAA0D,OAA1D,CAAb;AACH,SAFI,MAGA,IAAI,SAAS,IAAT,KAAkB,OAAtB,EAA+B;AAChC,yBAAa,KAAK,WAAL,CAAiB,CAAC,SAAS,WAAV,CAAjB,EAAyC,KAAzC,EAAgD,WAAhD,EAA6D,OAA7D,CAAb;AACH,SAFI,MAGA,IAAI,SAAS,IAAT,KAAkB,YAAtB,EAAoC;AACrC,yBAAa,KAAK,WAAL,CAAiB,SAAS,WAA1B,EAAuC,KAAvC,EAA8C,WAA9C,EAA2D,OAA3D,CAAb;AACH;;AAED;AACA,YAAI,aAAa,CAAb,IAAkB,yBAAc,WAApC,EAAiD;AAC7C,gBAAI,OAAO,QAAQ,IAAnB;AACA,iBAAK,KAAL,CAAW,MAAX,GAAoB,KAAK,KAAL,CAAW,MAAX,IAAqB,EAAE,MAAM,EAAR,EAAY,MAAM,EAAlB,EAAzC;AACA,gBAAI,OAAO,KAAK,KAAL,CAAW,MAAX,CAAkB,IAA7B;AACA,gBAAI,OAAO,KAAK,KAAL,CAAW,MAAX,CAAkB,IAA7B;AACA,gBAAI,QAAQ,EAAZ,CAL6C,CAK7B;AAChB,oBAAQ,MAAR,CAAe,OAAf,CAAuB,iBAAS;AAC5B,mCAAmB,IAAnB,EAAyB,KAAzB,EAAgC,CAAhC,EAAmC,UAAnC,sBAAiD,MAAK,IAAtD,EAA6D,UAA7D,uBAA4E,MAAK,SAAL,EAA5E,EAA+F,UAA/F;;AAEA,oBAAI,OAAO,IAAX;AACA,oBAAI,QAAQ,KAAZ;AACA,oBAAI,SAAS,MAAM,KAAN,CAAY,GAAZ,CAAb;AACA,qBAAK,IAAI,IAAE,CAAX,EAAc,IAAI,OAAO,MAAzB,EAAiC,GAAjC,EAAsC;AAClC,wBAAI,QAAQ,OAAO,CAAP,CAAZ;AACA,yBAAK,KAAL,IAAc,KAAK,KAAL,KAAe,EAAE,UAAU,CAAZ,EAAe,OAAO,CAAtB,EAAyB,QAAQ,EAAjC,EAAqC,MAAM,EAA3C,EAA7B;;AAEA,wBAAI,MAAM,KAAN,KAAgB,IAApB,EAA0B;AAAE;AACxB,8BAAM,KAAN,IAAe,EAAf;AACA,2CAAmB,IAAnB,EAAyB,KAAzB,EAAgC,CAAhC,EAAmC,UAAnC,sBAAiD,MAAK,IAAtD,EAA6D,UAA7D,uBAA4E,MAAK,SAAL,EAA5E,EAA+F,UAA/F;AACH;;AAED,wBAAI,IAAI,OAAO,MAAP,GAAgB,CAAxB,EAA2B;AACvB,6BAAK,KAAL,EAAY,MAAZ,GAAqB,KAAK,KAAL,EAAY,MAAZ,IAAsB,EAA3C;AACH;AACD,2BAAO,KAAK,KAAL,EAAY,MAAnB;AACA,4BAAQ,MAAM,KAAN,CAAR;AACH;AACJ,aArBD;AAsBH;;AAED,eAAO,UAAP;AACH,KAzOc;AA2Of,gBA3Oe,wBA2OD,OA3OC,EA2OQ,IA3OR,EA2Oc,OA3Od,EA2OuB;AAClC,YAAI;AACA,gBAAI,QAAQ,KAAK,aAAjB;;AAEA;AACA,kBAAM,KAAN,GAAc,KAAK,UAAL,CAAgB,KAAK,KAArB,EAA4B,OAA5B,CAAd;AACA,gBAAI,MAAM,KAAN,IAAe,IAAf,IAAuB,KAAK,KAAL,KAAe,SAA1C,EAAqD;AACjD,oBAAI,mBAAgB,KAAK,MAAL,CAAY,IAAZ,CAAiB,IAAjB,CAAhB,yBAAwD,KAAK,KAA7D,SAAJ;AACA;AACA,oBAAI,KAAK,KAAL,IAAc,IAAlB,EAAwB;AACpB;AACA;AACH;AACD,mCAAI,EAAE,OAAO,MAAT,EAAiB,MAAM,IAAvB,EAAJ,EAAmC,GAAnC;AACA;AACH;;AAED;AACA,oBAAQ,KAAK,aAAL,CAAmB,OAAnB,EAA4B,IAA5B,EAAkC,OAAlC,CAAR;AACA,gBAAI,CAAC,KAAL,EAAY;AACR,uBADQ,CACA;AACX;;AAED;AACA,gBAAI,KAAK,SAAT,EAAoB;AAChB,sBAAM,WAAN,GAAoB,0BAAY,YAAZ,CAAyB,KAAK,aAAL,IAAsB,KAAK,WAApD,EAAiE,OAAjE,CAApB;AACH,aAFD,MAGK;AACD,sBAAM,WAAN,GAAoB,KAApB;AACH;;AAED,gBAAI,MAAM,WAAN,KAAsB,IAA1B,EAAgC;AAC5B,sBAAM,eAAN,GAAwB,oBAAiB,SAAjB,CAA2B,OAA3B,EAAoC,QAAQ,IAA5C,EAAkD,OAAlD,CAAxB;AACH,aAFD,MAGK;AACD,sBAAM,eAAN,GAAwB,oBAAiB,YAAzC;AACH;;AAED,mBAAO,KAAP;AACH,SAtCD,CAuCA,OAAM,KAAN,EAAa;AACT,+BAAI,OAAJ,EAAa,yCAAb,EAAwD,OAAxD,EAAiE,KAAjE,EAAwE,MAAM,KAA9E;AACH;AACJ,KAtRc;AAwRf,iBAxRe,yBAwRA,OAxRA,EAwRS,IAxRT,EAwRe,OAxRf,EAwRwB;AACnC,eAAO,KAAK,aAAZ;AACH,KA1Rc;AA4Rf,cA5Re,sBA4RH,IA5RG,EA4RG;AACd;AACA,YAAI,CAAC,KAAK,YAAV,EAAwB;AACpB;AACA,gBAAI,KAAK,IAAT,EAAe;AACX;AACA,qBAAK,IAAI,KAAT,IAAkB,KAAK,IAAvB,EAA6B;AACzB,wBAAI,MAAM,KAAK,IAAL,CAAU,KAAV,CAAV;AACA,wBAAI,QAAO,GAAP,yCAAO,GAAP,OAAe,QAAf,IAA2B,CAAC,MAAM,OAAN,CAAc,GAAd,CAAhC,EAAoD;AAAG;AACnD,6BAAK,KAAL,IAAc,qBAAa,EAAb,EAAiB,GAAjB,EAAsB,KAAK,KAAL,CAAtB,CAAd;AACH,qBAFD,MAGK,IAAI,KAAK,KAAL,KAAe,IAAnB,EAAyB;AAAE;AAC5B,6BAAK,KAAL,IAAc,GAAd;AACH;AACJ;AACJ;;AAED,mBAAO,KAAK,WAAL,CAAiB,IAAjB,CAAP,CAfoB,CAeW;AAC/B,gBAAI,CAAC,IAAL,EAAW;AACP;AACH;AACD,iBAAK,YAAL,GAAoB,IAApB;AACH;AACD,eAAO,IAAP;AACH,KApTc;;;AAsTf;AACA,eAvTe,uBAuTF,IAvTE,EAuTI;AACf,eAAO,IAAP;AACH,KAzTc;;;AA2Tf;AACA,cA5Te,sBA4TH,KA5TG,EA4TI,OA5TJ,EA4Ta;AACxB;AACA,YAAI,OAAO,KAAP,KAAiB,QAArB,EAA+B;AAC3B,mBAAO,0BAAY,cAAZ,CAA2B,KAA3B,EAAkC,OAAlC,CAAP;AACH;AACD,eAAO,KAAP;AACH,KAlUc;;;AAoUf;AACA,cArUe,sBAqUH,KArUG,EAqUI;AACf,eAAO,QAAQ,CAAf;AACH,KAvUc;;;AAyUf;AACA,cA1Ue,sBA0UJ,KA1UI,EA0UG,OA1UH,EA0UY;AACvB;AACA,YAAI,KAAJ,EAAW;AACP,mBAAO,0BAAY,uBAAZ,CAAoC,KAApC,EAA2C,OAA3C,CAAP;AACH,SAFD,MAGK,IAAI,KAAK,OAAL,CAAa,MAAb,CAAoB,KAApB,IAA6B,KAAK,OAAL,CAAa,MAAb,CAAoB,MAArD,EAA6D;AAC9D,mBAAO,0BAAY,QAAZ,CAAqB,KAA5B;AACH;AACJ,KAlVc;;;AAoVf;AACA,iBArVe,2BAqVE;AAAE,eAAO,CAAP;AAAW,KArVf;AAsVf,cAtVe,wBAsVD;AAAE,eAAO,CAAP;AAAW,KAtVZ;AAuVf,eAvVe,yBAuVA;AAAE,eAAO,CAAP;AAAW,KAvVb;;;AA0Vf;;AAEA,SA5Ve,iBA4VR,EA5VQ,EA4VJ;AACP,aAAK,EAAL,GAAU,EAAV;AACA,aAAK,gBAAL,GAAwB,kBAAQ,iBAAR,CAA0B,KAAK,EAA/B,CAAxB;AACH,KA/Vc;AAiWf,YAjWe,oBAiWL,WAjWK,EAiWQ,eAjWR,EAiWuC;AAAA,YAAd,OAAc,uEAAJ,EAAI;;AAClD,YAAI,gBAAgB,KAAK,0BAAL,CAAgC,QAAQ,OAAxC,CAApB;AACA,eAAO,uBAAY,KAAK,EAAjB,EAAqB,WAArB,EAAkC,eAAlC,EAAmD,aAAnD,EAAkE,OAAlE,CAAP;AACH,KApWc;AAsWf,UAtWe,kBAsWP,IAtWO,EAsWD;AACV,eAAO,KAAK,MAAL,EAAP;AACH,KAxWc;;;AA0Wf;AACA,cA3We,wBA2Wc;AAAA,YAAjB,GAAiB,uEAAX,SAAW;;AACzB,aAAK,YAAL;;AAEA,YAAM,UAAU,KAAK,GAAL,CAAhB;AACA,YAAI,CAAC,OAAD,IAAY,QAAQ,KAAxB,EAA+B;AAC3B;AACH;;AAED,YAAI,CAAC,QAAQ,QAAb,EAAuB;AACnB,+BAAI,OAAJ,yBAAiC,KAAK,IAAtC,0BAA6D,GAA7D;AACA,gBAAI;AACA,wBAAQ,OAAR;AACH,aAFD,CAGA,OAAM,CAAN,EAAS;AACL,mCAAI,OAAJ,kDAA0D,KAAK,IAA/D,0BAAsF,GAAtF,UAA+F,IAA/F,EAAqG,EAAE,KAAvG;AACH;AACJ;AACD,eAAO,OAAP;AACH,KA7Xc;;;AA+Xf;AACA,gBAhYe,0BAgYC;AACZ,YAAI,KAAK,aAAT,EAAwB;AACpB;AACH;;AAED,YAAI,CAAC,KAAK,EAAV,EAAc;AACV,kBAAM,IAAI,KAAJ,oCAA2C,KAAK,IAAhD,4BAAN;AACH;;AAED;AACA,YAAI,UAAU,KAAK,eAAL,EAAd;AACA,YAAI,KAAK,SAAT,EAAoB;AAChB,gBAAI,oBAAoB,OAAO,MAAP,CAAc,EAAd,EAAkB,OAAlB,CAAxB;AACA,8BAAkB,yBAAlB,GAA8C,IAA9C;AACH;;AAED;AACA,YAAI,SAAU,KAAK,OAAL,IAAgB,KAAK,OAAL,CAAa,MAA3C;AACA,YAAI,eAAgB,KAAK,OAAL,IAAgB,KAAK,OAAL,CAAa,YAAjD;;AAEA;AACA,YAAI,WAAW,OAAO,MAAP,CAAc,EAAd,EAAkB,KAAK,OAAL,IAAgB,KAAK,OAAL,CAAa,QAA/C,CAAf;AACA,aAAK,IAAI,CAAT,IAAc,QAAd,EAAwB;AAAE;AACtB,gBAAI,SAAS,CAAT,KAAe,IAAnB,EAAyB;AACrB,mCAAI,EAAE,OAAO,MAAT,EAAiB,MAAM,IAAvB,EAAJ,eAA6C,KAAK,IAAlD,iCAAgF,CAAhF;AACH;AACJ;;AAED;AACA,YAAI,aAAc,KAAK,OAAL,IAAgB,KAAK,OAAL,CAAa,UAA/C;AACA,YAAI,OAAO,UAAP,KAAsB,QAA1B,EAAoC;AAChC,yBAAa,CAAC,UAAD,CAAb;AACH;;AAED;AACA,aAAK,OAAL,GAAe,6BACX,KAAK,EADM,EAEX,KAAK,iBAFM,EAGX,KAAK,mBAHM,EAIX;AACI,kBAAM,KAAK,IADf;AAEI,4BAFJ;AAGI,8BAHJ;AAII,0BAJJ;AAKI,sCALJ;AAMI;AANJ,SAJW,CAAf;;AAcA,YAAI,KAAK,SAAT,EAAoB;AAChB,iBAAK,iBAAL,GAAyB,6BACrB,KAAK,EADgB,EAErB,KAAK,iBAFgB,EAGrB,2BAHqB,EAIrB;AACI,sBAAO,KAAK,IAAL,GAAY,cADvB;AAEI,yBAAS,iBAFb;AAGI,kCAHJ;AAII,8BAJJ;AAKI,0CALJ;AAMI;AANJ,aAJqB,CAAzB;AAaH,SAdD,MAeK;AACD,iBAAK,iBAAL,GAAyB,IAAzB;AACH;;AAED,aAAK,aAAL,GAAqB,IAArB;AACH,KArcc;;;AAucf;AACA,kBAxce,0BAwcC,GAxcD,EAwcM,KAxcN,EAwc2B;AAAA,YAAd,KAAc,uEAAN,IAAM;;AACtC,aAAK,OAAL,CAAa,MAAb,GAAsB,KAAK,OAAL,CAAa,MAAb,IAAuB,EAA7C;AACA,aAAK,OAAL,CAAa,MAAb,CAAoB,GAApB,IAA2B,KAAK,OAAL,CAAa,MAAb,CAAoB,GAApB,KAA4B,EAAvD;AACA,aAAK,OAAL,CAAa,MAAb,CAAoB,GAApB,EAAyB,IAAzB,CAA8B,KAA9B;;AAEA,aAAK,OAAL,CAAa,YAAb,GAA4B,KAAK,OAAL,CAAa,YAAb,IAA6B,EAAzD;AACA,aAAK,OAAL,CAAa,YAAb,CAA0B,GAA1B,IAAiC,KAAK,OAAL,CAAa,YAAb,CAA0B,GAA1B,KAAkC,EAAnE;AACA,aAAK,OAAL,CAAa,YAAb,CAA0B,GAA1B,EAA+B,IAA/B,CAAoC,KAApC;AACH,KAhdc;;;AAkdf;AACA,qBAnde,6BAmdI,GAndJ,EAmdS;AACpB,YAAI,KAAK,OAAL,CAAa,MAAjB,EAAyB;AACrB,iBAAK,OAAL,CAAa,MAAb,CAAoB,GAApB,IAA2B,IAA3B;AACH;AACJ,KAvdc;AAydf,sBAzde,8BAydK,GAzdL,EAydU,KAzdV,EAyd+B;AAAA,YAAd,KAAc,uEAAN,IAAM;;AAC1C,aAAK,iBAAL,CAAuB,GAAvB;AACA,aAAK,cAAL,CAAoB,GAApB,EAAyB,KAAzB,EAAgC,KAAhC;AACH,KA5dc;;;AA8df;;;AAGA,mBAjee,6BAieI;AACf;AACA,YAAI,UAAU,EAAd,CAFe,CAEG;AAClB,YAAI,KAAK,OAAL,IAAgB,IAApB,EAA0B;AACtB,iBAAK,IAAI,CAAT,IAAc,KAAK,OAAnB,EAA4B;AACxB,wBAAQ,CAAR,IAAa,KAAK,OAAL,CAAa,CAAb,CAAb;AACH;AACJ;AACD,YAAI,KAAK,OAAL,IAAgB,IAAhB,IAAwB,KAAK,OAAL,CAAa,OAAb,IAAwB,IAApD,EAA0D;AACtD,iBAAK,CAAL,IAAU,KAAK,OAAL,CAAa,OAAvB,EAAgC;AAC5B,wBAAQ,CAAR,IAAa,KAAK,OAAL,CAAa,OAAb,CAAqB,CAArB,CAAb;AACH;AACJ;AACD,eAAO,OAAP;AAEH,KAhfc;;;AAkff;AACA,cAnfe,wBAmfD;AACV,eAAQ,CAAC,OAAD,EAAU,QAAV,EAAoB,QAApB,EAA8B,OAA9B,CAAsC,KAAK,MAA3C,IAAqD,CAAC,CAA9D;AACH,KArfc;;;AAuff;AACA,gBAxfe,0BAwfC;AAAA;;AACZ,YAAI,CAAC,KAAK,UAAL,EAAL,EAAwB;AACpB;AACH;;AAED;AACA,YAAI,KAAK,MAAL,KAAgB,OAApB,EAA6B;AACzB,iBAAK,OAAL,CAAa,4BAAb,GAA4C,IAA5C;AACH,SAFD,MAGK,IAAI,KAAK,MAAL,KAAgB,QAApB,EAA8B;AAC/B,iBAAK,OAAL,CAAa,6BAAb,GAA6C,IAA7C;AACH;AACD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAI,qBACA,OAAO,IAAP,CAAY,KAAK,OAAjB,EACC,MADD,CACQ;AAAA,mBAAK,OAAK,OAAL,CAAa,CAAb,qCAAL;AAAA,SADR,EAEC,MAHL;;AAKA,aAAK,OAAL,CAAa,0BAAb,QAA6C,kBAA7C,CA1BY,CA0BuD;AACnE,YAAI,qBAAqB,CAAzB,EAA4B;AACxB;AACA,iBAAK,OAAL,CAAa,wCAAb,GAAwD,IAAxD;;AAEA;AACA,iBAAK,kBAAL,CAAwB,QAAxB,EAAkC,iBAAlC,EAAqD,QAArD;AACH;AACJ,KA1hBc;;;AA4hBf;AACA,uBA7hBe,+BA6hBM,IA7hBN,EA6hBY,SA7hBZ,EA6hBuB;AAAA;;AAClC,YAAI,CAAC,KAAK,UAAL,EAAL,EAAwB;AACpB,mBAAO,QAAQ,OAAR,CAAgB,SAAhB,CAAP;AACH;;AAED,YAAI,UAAU,EAAd,CALkC,CAKhB;AAClB,YAAI,QAAQ,EAAZ,CANkC,CAMhB;;AAElB;AACA,aAAK,OAAL,CAAa,GAAb,CAAiB;AAAA,mBAAK,OAAK,OAAL,CAAa,CAAb,CAAL;AAAA,SAAjB,EAAuC,MAAvC,CAA8C;AAAA,mBAAK,CAAL;AAAA,SAA9C,EAAsD,OAAtD,CAA8D,UAAC,MAAD,EAAS,CAAT,EAAe;AACzE,gBAAI,0CAAJ,EAAwC;AACpC,oBAAI,SAAS,OAAO,WAAP,CAAmB,IAAnB,CAAb;AACA,wBAAQ,OAAO,GAAf,IAAsB,MAAtB;AACA,sBAAM,OAAO,GAAb,IAAoB,CAApB;AACH;AACJ,SAND;;AAQA,YAAI,OAAO,IAAP,CAAY,OAAZ,EAAqB,MAArB,KAAgC,CAApC,EAAuC;AACnC,mBAAO,QAAQ,OAAR,CAAgB,SAAhB,CAAP;AACH;;AAED;AACA;AACA;AACA,eAAO,wBAAa,WAAb,CAAyB,KAAK,kBAAL,GAAwB,eAAjD,EAAkE,OAAlE,EACF,IADE,CACG,oBAAY;AACd,gBAAI,CAAC,QAAD,IAAa,SAAS,MAAT,GAAkB,CAAnC,EAAsC;AAClC;AACA,uBAAO,SAAP;AACH;;AAED;AACA,sBAAU,QAAV,GAAqB,UAAU,QAAV,IAAsB,EAA3C;AACA,sBAAU,QAAV,GAAqB,UAAU,QAAV,IAAsB,EAA3C;;AAEA,gBAAI,aAAa,UAAU,QAAV,CAAmB,WAAnB,IAAkC,EAAnD;AACA,gBAAI,UAAU,UAAU,QAAV,CAAmB,gBAAnB,IAAuC,EAArD;AACA,gBAAI,YAAY,UAAU,QAAV,CAAmB,kBAAnB,IAAyC,EAAzD;;AAEA,qBAAS,OAAT,CAAiB,iBAA8B;AAAA;AAAA,oBAA5B,KAA4B;AAAA,oBAArB,MAAqB;AAAA,oBAAb,OAAa;;AAC3C,oBAAI,IAAI,MAAM,KAAN,CAAR;AACA,oBAAI,gBAAgB,QAAQ,KAAR,EAAe,MAAnC,CAF2C,CAEA;;AAE3C,2BAAW,CAAX,IAAgB,KAAhB;AACA,0BAAU,QAAV,CAAmB,IAAnB,CAAwB,KAAxB;;AAEA,wBAAQ,CAAR,IAAa,CAAC,MAAD,EAAS,OAAT,CAAb;;AAEA;AACA;AACA;AACA;AACA,oBAAI,KAAK,MAAL,CAAY,CAAZ,GAAgB,cAAc,CAAlC,EAAqC;AACjC,wBAAI,KAAK,KAAK,MAAL,CAAY,CAAZ,GAAgB,cAAc,CAAvC,CADiC,CACS;AAC1C,wBAAI,MAAM,KAAK,GAAL,CAAS,CAAT,EAAY,EAAZ,CAAV;AACA,8BAAU,CAAV,IAAe,CACV,CAAE,KAAK,MAAL,CAAY,CAAZ,GAAgB,GAAjB,GAAwB,GAAzB,IAAgC,GAAjC,GAAwC,GAD7B,EACkC;AAC7C,qBAAC,MAAM,CAAN,GAAW,KAAK,MAAL,CAAY,CAAZ,GAAgB,GAA5B,IAAoC,GAFzB,EAE8B;AACzC,wBAAI,GAHO,CAAf;AAKH,iBARD,MASK;AACD,8BAAU,CAAV,IAAe,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAAf;AACH;AACJ,aAzBD;;AA2BA,mBAAO,SAAP;AACH,SA3CE,CAAP;AA6CH,KAlmBc;;;AAomBf;AACA,gBArmBe,wBAqmBD,QArmBC,EAqmBS;AACpB;AACA,eAAO,kBAAQ,gBAAR,CAAyB,KAAK,EAA9B,EAAkC,QAAlC,EACF,IADE,CACG,YAAM;AACR,mBAAO,QAAQ,GAAR,CAAY,OAAO,IAAP,CAAY,QAAZ,EAAsB,GAAtB,CAA0B,aAAK;AAC9C,uBAAO,kBAAQ,QAAR,CAAiB,CAAjB,KAAuB,kBAAQ,QAAR,CAAiB,CAAjB,EAAoB,IAApB,EAA9B;AACH,aAFkB,EAEhB,MAFgB,CAET;AAAA,uBAAK,CAAL;AAAA,aAFS,CAAZ,CAAP;AAGH,SALE,EAMF,IANE,CAMG,oBAAY;AACd,qBAAS,OAAT,CAAiB;AAAA,uBAAK,EAAE,MAAF,EAAL;AAAA,aAAjB;AACA,mBAAO,SAAS,GAAT,CAAa;AAAA,uBAAK,CAAC,EAAE,IAAH,EAAS,EAAE,KAAX,EAAkB,EAAE,MAApB,CAAL;AAAA,aAAb,CAAP;AACH,SATE,CAAP;AAUH,KAjnBc;;;AAmnBf;AACA,SApnBe,mBAonBN;AACL,aAAK,WAAL;AACA,aAAK,QAAL,CAAc,YAAd,CAA2B,yBAAc,OAAzC;AACH,KAvnBc;;;AAynBf;AACA,eA1nBe,yBA0nBA;AACX,YAAI,UAAU,yBAAc,OAA5B;AACA,YAAI,CAAC,OAAL,EAAc;AACV;AACH;;AAED,gBAAQ,WAAR,CAAoB,KAAK,OAAL,IAAgB,KAAK,OAAL,CAAa,QAAjD,EAA2D,IAA3D,EANW,CAMuD;AACrE,KAjoBc;;;AAmoBf;AACA,mBAAe;AACX,gBAAQ,EAAE,YAAY,IAAd,EAAoB,aAAa,IAAjC,EADG;AAEX,aAAK,EAAE,YAAY,IAAd,EAAoB,aAAa,KAAjC,EAFM;AAGX,kBAAU,EAAE,YAAY,IAAd,EAAoB,aAAa,KAAjC,EAHC;AAIX,eAAO,EAAE,YAAY,IAAd,EAAoB,aAAa,KAAjC,EAJI;AAKX,iBAAS,EAAE,YAAY,KAAd,EAAqB,aAAa,KAAlC;AALE,KApoBA;;AA4oBf;AACA,0BAAsB;AAClB,gBAAQ,CADU;AAElB,aAAK,CAFa;AAGlB,kBAAU,CAHQ;AAIlB,eAAO,CAJW;AAKlB,iBAAS;AALS,KA7oBP;;AAqpBf;AACA,kBAtpBe,0BAspBC,CAtpBD,EAspBI,CAtpBJ,EAspBO;AAClB;AACA,YAAI,EAAE,KAAF,KAAY,QAAZ,IAAwB,EAAE,KAAF,KAAY,QAAxC,EAAkD;AAC9C,gBAAI,EAAE,KAAF,KAAY,QAAZ,IAAwB,EAAE,KAAF,KAAY,QAAxC,EAAkD;AAAE;AAChD,uBAAO,EAAE,IAAF,GAAS,EAAE,IAAX,GAAkB,CAAC,CAAnB,GAAuB,CAA9B,CAD8C,CACb;AACpC,aAFD,MAGK,IAAI,EAAE,KAAF,KAAY,QAAhB,EAA0B;AAC3B,uBAAO,CAAC,CAAR,CAD2B,CAChB;AACd,aAFI,MAGA;AACD,uBAAO,CAAP,CADC,CACS;AACb;AACJ;;AAED;AACA,YAAI,EAAE,WAAF,GAAgB,EAAE,WAAtB,EAAmC;AAC/B,mBAAO,CAAC,CAAR;AACH,SAFD,MAGK,IAAI,EAAE,WAAF,GAAgB,EAAE,WAAtB,EAAmC;AACpC,mBAAO,CAAP;AACH;;AAED;AACA,YAAI,MAAM,oBAAN,CAA2B,EAAE,KAA7B,IAAsC,MAAM,oBAAN,CAA2B,EAAE,KAA7B,CAA1C,EAA+E;AAC3E,mBAAO,CAAC,CAAR;AACH,SAFD,MAGK,IAAI,MAAM,oBAAN,CAA2B,EAAE,KAA7B,IAAsC,MAAM,oBAAN,CAA2B,EAAE,KAA7B,CAA1C,EAA+E;AAChF,mBAAO,CAAP;AACH;;AAED,eAAO,EAAE,IAAF,GAAS,EAAE,IAAX,GAAkB,CAAC,CAAnB,GAAuB,CAA9B,CA9BkB,CA8Be;AACpC;AArrBc,CAAZ;;AAyrBP;AACO,SAAS,kBAAT,CAA6B,MAA7B,EAAqC,KAArC,EAA4C,aAA5C,EAA2D,UAA3D,EAAuE,MAAvE,EAA+E,KAA/E,EAAsF;AACzF,WAAO,KAAP,IAAgB,OAAO,KAAP,KAAiB,EAAE,UAAU,CAAZ,EAAe,OAAO,CAAtB,EAAyB,QAAQ,EAAjC,EAAqC,MAAM,EAA3C,EAAjC;AACA,WAAO,KAAP,EAAc,QAAd,IAA0B,aAA1B,CAFyF,CAE7C;AAC5C,WAAO,KAAP,EAAc,KAAd,IAAuB,UAAvB,CAHyF,CAG7C;;AAE5C;AACA,SAAK,IAAI,KAAT,IAAkB,MAAlB,EAA0B;AACtB,eAAO,KAAP,EAAc,MAAd,CAAqB,KAArB,IAA8B,OAAO,KAAP,EAAc,MAAd,CAAqB,KAArB,KAA+B,CAA7D;AACA,eAAO,KAAP,EAAc,MAAd,CAAqB,KAArB,KAA+B,OAAO,KAAP,CAA/B;AACH;;AAED;AACA,SAAK,IAAI,MAAT,IAAkB,KAAlB,EAAyB;AACrB,eAAO,KAAP,EAAc,IAAd,CAAmB,MAAnB,IAA4B,OAAO,KAAP,EAAc,IAAd,CAAmB,MAAnB,KAA6B,CAAzD;AACA,eAAO,KAAP,EAAc,IAAd,CAAmB,MAAnB,KAA6B,MAAM,MAAN,CAA7B;AACH;AACJ;;;;;;;;;;qjBChuBD;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AAEA;;AACA;;AACA;;AACA;;AACA;;;;;;;;AAEA,IAAI,KAAK,QAAQ,IAAR,CAAT;AACA,IAAM,sBAAsB,GAAG,YAAH,CAAgB,YAAY,+BAA5B,EAA6D,MAA7D,CAA5B;AACA,IAAM,uBAAuB,GAAG,YAAH,CAAgB,YAAY,iCAA5B,EAA+D,MAA/D,CAA7B;AACA,IAAM,6BAA6B,GAAG,YAAH,CAAgB,YAAY,uCAA5B,EAAqE,MAArE,CAAnC;AACA,IAAM,4BAA4B,GAAG,YAAH,CAAgB,YAAY,sCAA5B,EAAoE,MAApE,CAAlC;;IAEa,Y,WAAA,Y;AAET,4BAAe;AAAA;;AACX,aAAK,MAAL,GAAc,EAAd;AACA,aAAK,WAAL,GAAmB,EAAnB;;AAEA;AACA,aAAK,QAAL,CAAc,OAAO,MAAP,oBAAd;AACA,aAAK,QAAL,CAAc,OAAO,MAAP,cAAd;AACA,aAAK,QAAL,CAAc,OAAO,MAAP,gBAAd;AACA,aAAK,QAAL,CAAc,OAAO,MAAP,iBAAd;AACA,aAAK,QAAL,CAAc,OAAO,MAAP,qBAAd;AACH;;AAED;;;;;+BACQ;AACJ,qCAAc,WAAd,CAA0B,QAA1B;AACA,qCAAc,WAAd,CAA0B,OAA1B;;AAEA;AACA,qCAAc,QAAd,CAAuB,QAAvB,EAAiC,mBAAjC;;AAEA;AACA,qCAAc,QAAd,CAAuB,QAAvB,EAAiC,oBAAjC;;AAEA;AACA,qCAAc,QAAd,CAAuB,QAAvB,EAAiC,0BAAjC;;AAEA;AACA,qCAAc,YAAd,CAA2B,OAA3B,EAAoC,yBAApC;;AAEA;AACA,qCAAc,OAAd,CAAsB,eAAtB,GAAwC,OAAxC;;AAEA;AACA;AACA;AACA,qCAAc,OAAd,CAAsB,mBAAtB,GAA4C,KAAK,KAAK,EAAV,CAA5C;;AAEA;AACA,qCAAc,OAAd,CAAsB,kBAAtB,aACY,cAAI,UADhB,WACgC,cAAI,UADpC,gCACyE,cAAI,SAD7E;;AAGA;AACA,qCAAc,OAAd,CAAsB,oBAAtB,GAA6C,cAAI,YAAjD;;AAEA;AACA,qCAAc,OAAd,CAAsB,kBAAtB,GAA2C,GAA3C;AACH;;AAED;;;;gCACS,E,EAAI;AAAA;;AACT,mBAAO,IAAP,CAAY,KAAK,MAAjB,EAAyB,OAAzB,CAAiC,UAAC,KAAD,EAAW;AACxC,oBAAI,QAAQ,MAAK,MAAL,CAAY,KAAZ,CAAZ;AACA,oBAAI,MAAM,EAAN,KAAa,EAAjB,EAAqB;AACjB,uCAAI,OAAJ,qDAA8D,MAAM,IAApE;;AAEA,wBAAI,MAAM,IAAV,EAAgB;AACZ,8BAAK,MAAL,CAAY,MAAM,IAAlB;AACH;AACD,0BAAM,OAAN;AACH;AACJ,aAVD;AAWH;;AAED;;;;iCACU,K,EAAO;AACb,iBAAK,MAAL,CAAY,MAAM,IAAlB,IAA0B,KAA1B;AACA,iBAAK,WAAL,CAAiB,MAAM,IAAvB,IAA+B,KAA/B;AACH;;AAED;;;;+BACQ,I,EAAM;AACV,mBAAO,KAAK,MAAL,CAAY,IAAZ,CAAP;AACH;;;4BAEI,K,EAAO,M,EAAQ;AAChB;AACA,gBAAI,MAAM,KAAV,EAAiB;AACb,uBAAO,KAAP;AACH;AACD,kBAAM,KAAN,GAAc,EAAd;;AAEA;AACA,gBAAI,UAAU,EAAd;AACA,gBAAI,MAAM,GAAV,EAAe;AACX,oBAAI,MAAM,OAAN,CAAc,MAAM,GAApB,CAAJ,EAA8B;AAAA;;AAC1B,yCAAQ,IAAR,oCAAgB,MAAM,GAAtB;AACH,iBAFD,MAGK;AACD,4BAAQ,IAAR,CAAa,MAAM,GAAnB;AACH;AACD,0BAAU,QAAQ,GAAR,CAAY;AAAA,2BAAK,OAAO,CAAP,CAAL;AAAA,iBAAZ,EAA4B,MAA5B,CAAmC;AAAA,2BAAK,KAAK,MAAM,KAAhB;AAAA,iBAAnC,CAAV,CAPW,CAO0D;;AAErE;AACA,wBAAQ,OAAR,CAAgB;AAAA,2BAAK,MAAM,KAAN,CAAY,EAAE,IAAd,IAAsB,IAA3B;AAAA,iBAAhB;AACH;AACD,oBAAQ,IAAR,CAAa,KAAb;;AAEA;AACA,kBAAM,QAAN,GAAiB,QAAQ,IAAR,CAAa;AAAA,uBAAK,KAAK,EAAE,QAAZ;AAAA,aAAb,CAAjB;AACA,kBAAM,SAAN,GAAkB,QAAQ,IAAR,CAAa;AAAA,uBAAK,KAAK,EAAE,SAAZ;AAAA,aAAb,CAAlB;;AAEA;AACA,kBAAM,IAAN,GAAa,QAAQ,GAAR,CAAY;AAAA,uBAAK,EAAE,IAAP;AAAA,aAAZ,EAAyB,MAAzB,CAAgC;AAAA,uBAAK,CAAL;AAAA,aAAhC,EAAwC,GAAxC,EAAb;AACA,kBAAM,QAAN,GAAiB,QAAQ,GAAR,CAAY;AAAA,uBAAK,EAAE,QAAP;AAAA,aAAZ,EAA6B,MAA7B,CAAoC;AAAA,uBAAK,KAAK,IAAV;AAAA,aAApC,EAAoD,GAApD,EAAjB;AACA,kBAAM,OAAN,GAAgB,QAAQ,GAAR,CAAY;AAAA,uBAAK,EAAE,OAAP;AAAA,aAAZ,EAA4B,MAA5B,CAAmC;AAAA,uBAAK,CAAL;AAAA,aAAnC,EAA2C,GAA3C,EAAhB;AACA,kBAAM,MAAN,GAAe,QAAQ,GAAR,CAAY;AAAA,uBAAK,EAAE,MAAP;AAAA,aAAZ,EAA2B,MAA3B,CAAkC;AAAA,uBAAK,KAAK,IAAV;AAAA,aAAlC,EAAkD,GAAlD,EAAf;AACA,kBAAM,IAAN,GAAa,QAAQ,GAAR,CAAY;AAAA,uBAAK,EAAE,IAAP;AAAA,aAAZ,EAAyB,MAAzB,CAAgC;AAAA,uBAAK,KAAK,IAAV;AAAA,aAAhC,EAAgD,GAAhD,EAAb;AACA,kBAAM,qBAAN,GAA8B,QAAQ,GAAR,CAAY;AAAA,uBAAK,EAAE,qBAAP;AAAA,aAAZ,EAA0C,MAA1C,CAAiD;AAAA,uBAAK,KAAK,IAAV;AAAA,aAAjD,EAAiE,GAAjE,EAA9B;AACA,gBAAI,QAAQ,IAAR,CAAa;AAAA,uBAAK,EAAE,cAAF,CAAiB,OAAjB,KAA6B,EAAE,KAApC;AAAA,aAAb,CAAJ,EAA6D;AACzD;AACA;AACA,sBAAM,KAAN,GAAc,QAAQ,GAAR,CAAY;AAAA,2BAAK,EAAE,cAAF,CAAiB,OAAjB,KAA6B,EAAE,KAApC;AAAA,iBAAZ,EAAuD,MAAvD,CAA8D;AAAA,2BAAK,CAAL;AAAA,iBAA9D,EAAsE,GAAtE,EAAd;AACH;AACD,kBAAM,WAAN,GAAoB,QAAQ,GAAR,CAAY;AAAA,uBAAK,EAAE,WAAP;AAAA,aAAZ,EAAgC,MAAhC,CAAuC;AAAA,uBAAK,KAAK,IAAV;AAAA,aAAvC,EAAuD,GAAvD,EAApB;;AAEA;AACA,kBAAM,OAAN,GAAgB,OAAO,MAAP,gBAAc,EAAd,4BAAqB,QAAQ,GAAR,CAAY;AAAA,uBAAK,EAAE,OAAP;AAAA,aAAZ,EAA4B,MAA5B,CAAmC;AAAA,uBAAK,CAAL;AAAA,aAAnC,CAArB,GAAhB,CA1CgB,CA0CkE;AAClF,kBAAM,QAAN,GAAiB,OAAO,MAAP,gBAAc,EAAd,4BAAqB,QAAQ,GAAR,CAAY;AAAA,uBAAK,EAAE,QAAP;AAAA,aAAZ,EAA6B,MAA7B,CAAoC;AAAA,uBAAK,CAAL;AAAA,aAApC,CAArB,GAAjB;;AAEA,gBAAI,QAAQ,QAAQ,GAAR,CAAY;AAAA,uBAAK,EAAE,IAAP;AAAA,aAAZ,EAAyB,MAAzB,CAAgC;AAAA,uBAAK,CAAL;AAAA,aAAhC,CAAZ,CA7CgB,CA6CqC;AACrD,gBAAI,MAAM,MAAN,GAAe,CAAnB,EAAsB;AAClB,sBAAM,IAAN,GAAa,kCAAa,EAAb,4BAAoB,KAApB,GAAb;AACH;;AAED;AACA,iBAAK,UAAL,CAAgB,KAAhB,EAAuB,MAAvB,EAA+B,OAA/B;AACA,mBAAO,KAAP;AACH;;AAED;;;;mCACY,K,EAAO,M,EAAQ,O,EAAS;AAChC,gBAAI,UAAU,EAAd,CADgC,CACd;AAClB,gBAAI,gBAAgB,QAAQ,GAAR,CAAY;AAAA,uBAAK,EAAE,OAAP;AAAA,aAAZ,EAA4B,MAA5B,CAAmC;AAAA,uBAAK,CAAL;AAAA,aAAnC,CAApB,CAFgC,CAEgC;;AAEhE;AACA,oBAAQ,OAAR,GAAkB,OAAO,MAAP,gBAAc,EAAd,4BAAqB,cAAc,GAAd,CAAkB;AAAA,uBAAK,EAAE,OAAP;AAAA,aAAlB,EAAkC,MAAlC,CAAyC;AAAA,uBAAK,CAAL;AAAA,aAAzC,CAArB,GAAlB;;AAEA;AACA,oBAAQ,QAAR,GAAmB,EAAnB,CARgC,CAQR;AACxB,oBAAQ,SAAR,GAAqB,MAAM,OAAN,IAAiB,MAAM,OAAN,CAAc,QAAhC,IAA6C,EAAjE,CATgC,CASqC;AACrE,oBAAQ,eAAR,GAA0B,EAA1B,CAVgC,CAUF;;AAE9B;AACA,oBACK,MADL,CACY;AAAA,uBAAK,EAAE,OAAF,IAAa,EAAE,OAAF,CAAU,QAA5B;AAAA,aADZ,EAEK,OAFL,CAEa,aAAK;AAAA,2CACD,CADC;AAEN,4BAAQ,eAAR,CAAwB,CAAxB,IAA6B,EAAE,IAA/B;;AAEA;AACA;AACA;AACA;AACA,2BAAO,cAAP,CAAsB,QAAQ,QAA9B,EAAwC,CAAxC,EAA2C;AACvC,oCAAY,IAD2B;AAEvC,sCAAc,IAFyB;AAGvC,6BAAK,eAAY;AACb;AACA,gCAAI,QAAQ,SAAR,CAAkB,CAAlB,MAAyB,SAA7B,EAAwC;AACpC,uCAAO,QAAQ,SAAR,CAAkB,CAAlB,CAAP;AACH;AACD;AACA;AACA;AALA,iCAMK,IAAI,OAAO,QAAQ,eAAR,CAAwB,CAAxB,CAAP,EAAmC,OAAnC,CAA2C,QAA3C,KAAwD,QAAQ,QAApE,EAA8E;AAC/E,2CAAO,OAAO,QAAQ,eAAR,CAAwB,CAAxB,CAAP,EAAmC,OAAnC,CAA2C,QAA3C,CAAoD,CAApD,CAAP;AACH;AACJ,yBAdsC;AAevC,6BAAK,aAAU,CAAV,EAAa;AACd,oCAAQ,SAAR,CAAkB,CAAlB,IAAuB,CAAvB;AACH;AAjBsC,qBAA3C;AARM;;AACV,qBAAK,IAAI,CAAT,IAAc,EAAE,OAAF,CAAU,QAAxB,EAAkC;AAAA,0BAAzB,CAAyB;AA0BjC;AACJ,aA9BL;;AAgCA;AACA,oBAAQ,UAAR,GAAqB,OAAO,IAAP,CAAY,cAC5B,GAD4B,CACxB;AAAA,uBAAK,EAAE,UAAP;AAAA,aADwB,EAE5B,MAF4B,CAErB;AAAA,uBAAK,CAAL;AAAA,aAFqB,EAG5B,MAH4B,CAGrB,UAAC,IAAD,EAAO,GAAP,EAAe;AACnB;AACA,oBAAI,OAAO,GAAP,KAAe,QAAnB,EAA6B;AACzB,yBAAK,GAAL,IAAY,IAAZ;AACH;AACD;AAHA,qBAIK;AACD,4BAAI,OAAJ,CAAY;AAAA,mCAAK,KAAK,CAAL,IAAU,IAAf;AAAA,yBAAZ;AACH;AACD,uBAAO,IAAP;AACH,aAb4B,EAa1B,EAb0B,KAanB,EAbO,CAArB;;AAgBA;AACA;AACA,gBAAI,MAAM,OAAN,IAAiB,MAAM,OAAN,CAAc,MAAnC,EAA2C;AACvC,sBAAM,OAAN,CAAc,YAAd,GAA6B,MAAM,OAAN,CAAc,YAAd,IAA8B,EAA3D;AACA,qBAAK,IAAI,CAAT,IAAc,MAAM,OAAN,CAAc,MAA5B,EAAoC;AAChC,wBAAI,QAAQ,MAAM,OAAN,CAAc,MAAd,CAAqB,CAArB,CAAZ;AACA,0BAAM,OAAN,CAAc,YAAd,CAA2B,CAA3B,IAAgC,MAAM,OAAN,CAAc,YAAd,CAA2B,CAA3B,KAAiC,EAAjE;AACA,wBAAI,MAAM,OAAN,CAAc,KAAd,CAAJ,EAA0B;AAAA;;AACtB,uDAAM,OAAN,CAAc,YAAd,CAA2B,CAA3B,GAA8B,IAA9B,iDAAsC,MAAM,GAAN,CAAU;AAAA,mCAAM,MAAM,IAAZ;AAAA,yBAAV,CAAtC;AACH,qBAFD,MAGK;AACD,8BAAM,OAAN,CAAc,YAAd,CAA2B,CAA3B,EAA8B,IAA9B,CAAmC,MAAM,IAAzC;AACH;AACJ;AACJ;;AAED;AACA,gBAAI,QAAQ,EAAZ,CA/EgC,CA+EhB;AAChB,0BAAc,OAAd,CAAsB,kBAAU;AAC5B,oBAAI,CAAC,OAAO,MAAZ,EAAoB;AAChB;AACH;;AAED,wBAAQ,MAAR,GAAiB,QAAQ,MAAR,IAAkB,EAAnC;AACA,wBAAQ,YAAR,GAAuB,QAAQ,YAAR,IAAwB,EAA/C;AACA,oBAAI,eAAe,EAAnB,CAP4B,CAOL;;AAEvB,qBAAK,IAAI,CAAT,IAAc,OAAO,MAArB,EAA6B;AACzB,wBAAI,SAAQ,OAAO,MAAP,CAAc,CAAd,CAAZ;AACA,wBAAI,cAAc,OAAO,YAAP,CAAoB,CAApB,CAAlB;;AAEA,4BAAQ,MAAR,CAAe,CAAf,IAAoB,QAAQ,MAAR,CAAe,CAAf,KAAqB,EAAzC;AACA,4BAAQ,YAAR,CAAqB,CAArB,IAA0B,QAAQ,YAAR,CAAqB,CAArB,KAA2B,EAArD;;AAEA;AACA,6BAAQ,MAAM,OAAN,CAAc,MAAd,IAAuB,MAAvB,GAA+B,CAAC,MAAD,CAAvC;AACA,kCAAc,MAAM,OAAN,CAAc,WAAd,IAA6B,WAA7B,GAA2C,CAAC,WAAD,CAAzD;;AAEA,yBAAK,IAAI,IAAE,CAAX,EAAc,IAAI,OAAM,MAAxB,EAAgC,GAAhC,EAAqC;AACjC;AACA;AACA,4BAAI,MAAM,YAAY,CAAZ,CAAN,CAAJ,EAA2B;AACvB;AACH;AACD,qCAAa,YAAY,CAAZ,CAAb,IAA+B,IAA/B;;AAEA,gCAAQ,MAAR,CAAe,CAAf,EAAkB,IAAlB,CAAuB,OAAM,CAAN,CAAvB;AACA,gCAAQ,YAAR,CAAqB,CAArB,EAAwB,IAAxB,CAA6B,YAAY,CAAZ,CAA7B;AACH;AACJ;;AAED;AACA;AACA,uBAAO,MAAP,CAAc,KAAd,EAAqB,YAArB;AACH,aApCD;;AAsCA,mBAAO,MAAP,CAAc,MAAM,KAApB,EAA2B,KAA3B,EAtHgC,CAsHG;;AAEnC,kBAAM,OAAN,GAAgB,OAAhB,CAxHgC,CAwHP;AACzB,mBAAO,KAAP;AACH;;AAED;AACA;AACA;AACA;;;;+BACQ,I,EAAM,M,EAAqB;AAAA,gBAAb,MAAa,uEAAJ,EAAI;;AAC/B,gBAAI,QAAQ,qBAAa,EAAb,EAAiB,MAAjB,CAAZ,CAD+B,CACO;AACtC,kBAAM,IAAN,GAAa,IAAb;;AAEA;AACA,oBAAQ,KAAK,GAAL,CAAS,KAAT,EAAgB,MAAhB,CAAR;;AAEA;AACA;AACA;AACA,gBAAI,MAAM,IAAN,IAAc,KAAK,WAAL,CAAiB,MAAM,IAAvB,CAAlB,EAAgD;AAC5C,qBAAK,MAAL,CAAY,IAAZ,IAAoB,QAAQ,OAAO,MAAP,CAAc,OAAO,MAAP,CAAc,KAAK,WAAL,CAAiB,MAAM,IAAvB,CAAd,CAAd,EAA2D,KAA3D,CAA5B;AACH,aAFD,MAGK;AACD,sBAAM,IAAN,GAAa,IAAb,CADC,CACkB;AACtB;;AAED,mBAAO,KAAP;AACH;;AAED;;;;8BACO,M,EAAQ;AAAA;;AACX;AACA,gBAAI,aAAa,OAAO,IAAP,CAAY,MAAZ,EAAoB,IAApB,CACb,UAAC,CAAD,EAAI,CAAJ;AAAA,uBAAU,OAAK,gBAAL,CAAsB,CAAtB,EAAyB,MAAzB,IAAmC,OAAK,gBAAL,CAAsB,CAAtB,EAAyB,MAAzB,CAA7C;AAAA,aADa,CAAjB;;AAIA;AACA,iBAAK,IAAI,KAAT,IAAkB,KAAK,MAAvB,EAA+B;AAC3B,oBAAI,CAAC,KAAK,WAAL,CAAiB,KAAjB,CAAL,EAA8B;AAC1B,2BAAO,KAAK,MAAL,CAAY,KAAZ,CAAP;AACH,iBAFD,MAGK;AACD,yBAAK,MAAL,CAAY,KAAZ,EAAmB,KAAnB;AACH;AACJ;;AAED;AACA,gBAAI,KAAK,EAAT;AACA,uBAAW,OAAX,CAAmB,iBAAS;AACxB,mBAAG,KAAH,IAAY,OAAK,MAAL,CAAY,KAAZ,EAAmB,OAAO,KAAP,CAAnB,EAAkC,EAAlC,CAAZ;AACH,aAFD;;AAIA,mBAAO,KAAK,MAAZ;AACH;;AAED;;;;qCACwB;AAAA,gBAAZ,KAAY,uEAAJ,EAAI;;AACpB;AACA,iBAAK,IAAI,KAAT,IAAkB,KAAK,MAAvB,EAA+B;AAC3B,qBAAK,MAAL,CAAY,KAAZ,EAAmB,IAAnB,CAAwB,KAAxB;AACH;AACJ;;AAED;;;;yCACkB,G,EAAK,M,EAAQ;AAAA;;AAC3B,gBAAI,UAAU,CAAd;;AAEA,mBAAM,IAAN,EAAY;AACR,oBAAI,QAAQ,OAAO,GAAP,CAAZ;AACA,oBAAI,CAAC,KAAL,EAAY;AACR;AACA;AACH;;AAED;AACA,oBAAI,CAAC,MAAM,GAAX,EAAgB;AACZ;AACH;;AAED;AACA;;AAEA,oBAAI,MAAM,OAAN,CAAc,MAAM,GAApB,CAAJ,EAA8B;AAC1B;AACA,+BAAW,KAAK,GAAL,gCAAY,MAAM,GAAN,CAAU,GAAV,CAAc,aAAK;AACtC;AACA,4BAAI,QAAQ,CAAZ,EAAe;AACX;AACH;;AAED,+BAAO,OAAK,gBAAL,CAAsB,CAAtB,EAAyB,MAAzB,CAAP;AACH,qBAPsB,CAAZ,EAAX;AAQA;AACH,iBAXD,MAYK;AACD;AACA,wBAAI,QAAQ,MAAM,GAAlB,EAAuB;AACnB;AACH;;AAED;AACA,0BAAM,MAAM,GAAZ;AACH;AACJ;AACD,mBAAO,OAAP;AACH;;;;;;;;;;;;;;ACtXL;;;;AACA;;;;AAEA;;;;;;AAEO,IAAI,oCAAc,EAAlB;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,YAAZ,GAA2B,UAAU,IAAV,EAAgB;AACvC,QAAI,0VASyB,IATzB,+JAAJ;AAiBA,WAAO,CAAP;AACH,CAnBD;;AAsBA;;AAEA,YAAY,QAAZ,GAAuB,OAAO,MAAP,CAAc,CAAC,CAAD,EAAI,CAAJ,CAAd,CAAvB,C,CAA8C;;AAE9C;AACA,YAAY,QAAZ,GAAuB;AACnB,WAAO,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CADY;AAEnB,WAAO,CAFY;AAGnB,UAAM,CAHa;AAInB,aAAS,KAJU;AAKnB,YAAQ,EALW;AAMnB,gBAAY,CANO;AAOnB,WAAO,CAPY;AAQnB,OAAG,CARgB;AASnB,aAAS;AACL,eAAO,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CADF;AAEL,eAAO;AAFF,KATU;AAanB,cAAU;AACN,iBAAS,CADH;AAEN,iBAAS;AAFH;AAbS,CAAvB;;AAmBA;AACA,YAAY,MAAZ,GAAqB;AACjB;AACA,qCAAiC,uCAAW;AACxC,eAAO,CACH,OAAO,SAAS,QAAQ,EAAjB,EAAqB,EAArB,IAA2B,GAA3B,GAAiC,CAAxC,CADG,EAC6C;AAChD,eAAO,SAAS,QAAQ,EAAjB,EAAqB,EAArB,IAA2B,KAA3B,GAAmC,CAA1C,CAFG,EAE6C;AAChD,eAAO,SAAS,QAAQ,EAAjB,EAAqB,EAArB,IAA2B,OAA3B,GAAqC,CAA5C,CAHG,EAG6C;AAChD,SAJG,CAAP;AAMH,KATgB;;AAWjB;AACA,+BAA2B,iCAAW;AAClC,eAAO,CAAC,MAAM,KAAK,MAAL,EAAP,EAAsB,MAAM,KAAK,MAAL,EAA5B,EAA2C,MAAM,KAAK,MAAL,EAAjD,EAAgE,CAAhE,CAAP;AACH;AAdgB,CAArB;;AAiBA;AACA,YAAY,sBAAZ,GAAqC,UAAU,OAAV,EAAmB,IAAnB,EAAyB,MAAzB,EAAiC;AAClE,WAAO;AACH,wBADG;AAEH,kBAFG;AAGH,sBAHG;AAIH,cAAM,KAAK,UAJR;AAKH,kBAAU,cAAI,YAAJ,CAAiB,QAAQ,QAAR,CAAiB,IAAlC,CALP;AAMH,0BAAkB,KAAK,gBANpB;AAOH,6BAAqB,KAAK,mBAPvB;AAQH,kCAA0B,KAAK;AAR5B,KAAP;AAUH,CAXD;;AAaA;AACA;AACA;AACA,YAAY,mBAAZ,GAAkC,UAAU,GAAV,EAAiC;AAAA,QAAlB,SAAkB,uEAAN,IAAM;;AAC/D,QAAI,OAAO,IAAX,EAAiB;AACb;AACH;;AAED,QAAI,IAAI,KAAR,EAAe;AACX,eAAO,EAAE,OAAO,IAAI,KAAb,EAAoB,MAAO,IAAI,IAAJ,GAAW,EAAX,GAAgB,IAA3C,EAAP,CADW,CACgD;AAC9D;;AAED,QAAI,IAAI,EAAE,OAAO,GAAT,EAAR;;AAEA;AACA,QAAI,MAAM,OAAN,CAAc,EAAE,KAAhB,KAA0B,MAAM,OAAN,CAAc,EAAE,KAAF,CAAQ,CAAR,CAAd,CAA9B,EAAyD;AACrD,UAAE,IAAF,GAAS,EAAT,CADqD,CACxC;AAChB;;AAED;AACA,QAAI,OAAO,SAAP,KAAqB,UAAzB,EAAqC;AACjC,YAAI,EAAE,IAAN,EAAY;AAAE;AACV,cAAE,KAAF,GAAU,EAAE,KAAF,CAAQ,GAAR,CAAY;AAAA,uBAAK,CAAC,EAAE,CAAF,CAAD,EAAO,UAAU,EAAE,CAAF,CAAV,CAAP,CAAL;AAAA,aAAZ,CAAV;AACH,SAFD,MAGK,IAAI,OAAO,EAAE,KAAT,KAAmB,UAAvB,EAAmC;AAAE;AACtC,cAAE,KAAF,GAAU,UAAU,EAAE,KAAZ,CAAV,CADoC,CACN;AACjC;AACJ;;AAED,WAAO,CAAP;AACH,CA3BD;;AA6BA;AACA;AACA,YAAY,wBAAZ,GAAuC,UAAU,GAAV,EAAe;AAClD,WAAO,YAAY,mBAAZ,CAAgC,GAAhC,EAAqC,aAAK;AAC7C,YAAI,MAAM,+BAAV,EAA2C;AACvC,mBAAO,gBAAM,gBAAN,CAAuB,YAAY,YAAZ,CAAyB,YAAY,MAAZ,CAAmB,+BAAnB,CAAzB,CAAvB,CAAP;AACH,SAFD,MAGK,IAAI,MAAM,yBAAV,EAAqC;AACtC,mBAAO,YAAY,MAAZ,CAAmB,yBAAnB,CAAP;AACH;;AAED,eAAO,CAAP;AACH,KATM,CAAP;AAUH,CAXD;;AAaA;AACA;AACA,YAAY,kBAAZ,GAAiC,UAAS,GAAT,EAAc,OAAd,EAAuB;AACpD,QAAI,OAAO,IAAX,EAAiB;AACb;AACH,KAFD,MAGK,IAAI,IAAI,OAAR,EAAiB;AAAE;AACpB,YAAI,IAAI,IAAI,OAAJ,CAAY,OAAZ,CAAR;AACA,eAAO,CAAP;AACH,KAHI,MAIA,IAAI,IAAI,MAAR,EAAgB;AAAE;AACnB,eAAO,IAAI,MAAX;AACH,KAFI,MAGA,IAAI,IAAI,IAAJ,IAAY,IAAI,IAAJ,CAAS,QAAQ,IAAjB,CAAhB,EAAwC;AAAE;AAC3C,eAAO,IAAI,IAAJ,CAAS,QAAQ,IAAjB,CAAP;AACH,KAFI,MAGA;AAAE;AACH;AACA,YAAI,OAAO,IAAI,KAAX,KAAqB,UAAzB,EAAqC;AACjC,gBAAI,OAAJ,GAAc,IAAI,KAAlB;AACA,gBAAI,KAAI,IAAI,OAAJ,CAAY,OAAZ,CAAR;AACA,mBAAO,EAAP;AACH;AACD;AALA,aAMK,IAAI,MAAM,OAAN,CAAc,IAAI,KAAlB,KAA4B,MAAM,OAAN,CAAc,IAAI,KAAJ,CAAU,CAAV,CAAd,CAAhC,EAA6D;AAC9D;AACA,oBAAI,IAAJ,GAAW,IAAI,IAAJ,IAAY,EAAvB;AACA,oBAAI,IAAJ,GAAW,EAAX;AACA,oBAAI,IAAJ,CAAS,QAAQ,IAAjB,IAAyB,gBAAM,WAAN,CAAkB,QAAQ,IAA1B,EAAgC,IAAI,KAApC,CAAzB;AACA,uBAAO,IAAI,IAAJ,CAAS,QAAQ,IAAjB,CAAP;AACH;AACD;AAPK,iBAQA;AACD,wBAAI,MAAJ,GAAa,IAAI,KAAjB;AACA,2BAAO,IAAI,MAAX;AACH;AACJ;AACJ,CAnCD;;AAqCA,YAAY,YAAZ,GAA2B,UAAS,GAAT,EAAc,OAAd,EAAuB;AAC9C;AACA,QAAI,IAAI,GAAJ,IAAW,IAAf,EAAqB;AACjB,YAAI,IAAI,KAAJ,KAAc,IAAlB,EAAwB;AAAE;AACtB,mBAAO,IAAI,GAAJ,GAAU,cAAI,cAAJ,CAAmB,QAAQ,IAA3B,CAAjB;AACH;AACD,eAAO,IAAI,GAAX;AACH;AACD;AANA,SAOK,IAAI,OAAO,GAAP,KAAe,QAAnB,EAA6B;AAC9B,gBAAI,IAAI,IAAJ,GAAW,KAAX,CAAiB,CAAC,CAAlB,MAAyB,IAA7B,EAAmC;AAC/B,sBAAM,WAAW,GAAX,CAAN;AACA,uBAAO,cAAI,cAAJ,CAAmB,QAAQ,IAA3B,CAAP,CAF+B,CAEU;AAC5C,aAHD,MAIK;AACD,sBAAM,WAAW,GAAX,CAAN;AACH;AACJ;AACD;AATK,aAUA,IAAI,MAAM,OAAN,CAAc,GAAd,CAAJ,EAAwB;AACzB;AACA,oBAAI,MAAM,OAAN,CAAc,IAAI,CAAJ,CAAd,CAAJ,EAA2B;AACvB,2BAAO,IAAI,GAAJ,CAAQ;AAAA,+BAAK,CAAC,EAAE,CAAF,CAAD,EAAO,YAAY,YAAZ,CAAyB,EAAE,CAAF,CAAzB,EAA+B,OAA/B,CAAP,CAAL;AAAA,qBAAR,CAAP;AACH;AACD;AAHA,qBAIK;AACD,+BAAO,IAAI,GAAJ,CAAQ;AAAA,mCAAK,YAAY,YAAZ,CAAyB,CAAzB,EAA4B,OAA5B,CAAL;AAAA,yBAAR,CAAP;AACH;AACJ;AACD,WAAO,GAAP;AACH,CA9BD;;AAgCA;AACA,YAAY,UAAZ,GAAyB,UAAU,GAAV,EAAe;AACpC,QAAI,MAAM,EAAE,KAAK,WAAW,GAAX,CAAP,EAAV;AACA,QAAI,IAAI,GAAJ,KAAY,CAAZ,IAAiB,OAAO,GAAP,KAAe,QAAhC,IAA4C,IAAI,IAAJ,GAAW,KAAX,CAAiB,CAAC,CAAlB,MAAyB,IAAzE,EAA+E;AAC3E,YAAI,KAAJ,GAAY,IAAZ;AACH;AACD,WAAO,GAAP;AACH,CAND;;AAQA;AACA;AACA;AACA,YAAY,0BAAZ,GAAyC,UAAS,GAAT,EAAc,OAAd,EAAuB;AAC5D,QAAI,IAAI,OAAR,EAAiB;AACb,YAAI,IAAI,IAAI,OAAJ,CAAY,OAAZ,CAAR;AACA,eAAO,CAAP;AACH,KAHD,MAIK,IAAI,IAAI,IAAJ,IAAY,IAAI,IAAJ,CAAS,QAAQ,IAAjB,CAAhB,EAAwC;AACzC,eAAO,IAAI,IAAJ,CAAS,QAAQ,IAAjB,CAAP;AACH,KAFI,MAGA;AACD;AACA,YAAI,OAAO,IAAI,KAAX,KAAqB,UAAzB,EAAqC;AACjC,gBAAI,OAAJ,GAAc,IAAI,KAAlB;AACA,gBAAI,MAAI,IAAI,OAAJ,CAAY,OAAZ,CAAR;AACA,mBAAO,GAAP;AACH;AACD;AALA,aAMK,IAAI,IAAI,IAAR,EAAc;AACf;AACA;AACA,oBAAI,IAAJ,CAAS,QAAQ,IAAjB,IAAyB,gBAAM,WAAN,CAAkB,QAAQ,IAA1B,EAAgC,IAAI,KAApC,EACrB;AAAA,2BAAK,YAAY,YAAZ,CAAyB,CAAzB,EAA4B,OAA5B,CAAL;AAAA,iBADqB,CAAzB;;AAGA,uBAAO,IAAI,IAAJ,CAAS,QAAQ,IAAjB,CAAP;AACH,aAPI,MAQA;AACD,uBAAO,YAAY,YAAZ,CAAyB,IAAI,KAA7B,EAAoC,OAApC,CAAP;AACH;AACJ;AACJ,CA5BD;;AA8BA;AACA,YAAY,aAAZ,GAA4B,EAA5B;AACA,YAAY,cAAZ,GAA6B,UAAS,MAAT,EAAiB;AAC1C;AACA,QAAI,YAAY,aAAZ,CAA0B,MAA1B,CAAJ,EAAuC;AACnC,eAAO,YAAY,aAAZ,CAA0B,MAA1B,CAAP;AACH;;AAED;AACA,QAAI,QAAQ,yBAAc,aAAd,CAA4B,MAA5B,CAAZ;AACA,QAAI,SAAS,MAAM,MAAN,KAAiB,CAA9B,EAAiC;AAC7B,cAAM,CAAN,KAAY,GAAZ;AACA,cAAM,CAAN,KAAY,GAAZ;AACA,cAAM,CAAN,KAAY,GAAZ;AACH,KAJD,MAKK;AACD,gBAAQ,YAAY,QAAZ,CAAqB,KAA7B;AACH;AACD,gBAAY,aAAZ,CAA0B,MAA1B,IAAoC,KAApC;AACA,WAAO,KAAP;AACH,CAlBD;;AAoBA;AACA;AACA;AACA,YAAY,uBAAZ,GAAsC,UAAS,GAAT,EAA4B;AAAA,QAAd,OAAc,uEAAJ,EAAI;;AAC9D,QAAI,IAAI,OAAR,EAAiB;AACb,YAAI,IAAI,IAAI,OAAJ,CAAY,OAAZ,CAAR;;AAEA,YAAI,OAAO,CAAP,KAAa,QAAjB,EAA2B;AACvB,gBAAI,YAAY,cAAZ,CAA2B,CAA3B,CAAJ;AACH;;AAED,YAAI,KAAK,EAAE,CAAF,KAAQ,IAAjB,EAAuB;AACnB,cAAE,CAAF,IAAO,CAAP,CADmB,CACT;AACb;AACD,eAAO,CAAP;AACH,KAXD,MAYK,IAAI,IAAI,MAAR,EAAgB;AACjB,eAAO,IAAI,MAAX;AACH,KAFI,MAGA,IAAI,IAAI,IAAJ,IAAY,IAAI,IAAJ,CAAS,QAAQ,IAAjB,CAAhB,EAAwC;AACzC,eAAO,IAAI,IAAJ,CAAS,QAAQ,IAAjB,CAAP;AACH,KAFI,MAGA;AACD;AACA,YAAI,OAAO,IAAI,KAAX,KAAqB,UAAzB,EAAqC;AACjC,gBAAI,OAAJ,GAAc,IAAI,KAAlB;AACA,gBAAI,MAAI,IAAI,OAAJ,CAAY,OAAZ,CAAR;;AAEA,gBAAI,OAAO,GAAP,KAAa,QAAjB,EAA2B;AACvB,sBAAI,YAAY,cAAZ,CAA2B,GAA3B,CAAJ;AACH;;AAED,gBAAI,OAAK,IAAE,CAAF,KAAQ,IAAjB,EAAuB;AACnB,oBAAE,CAAF,IAAO,CAAP,CADmB,CACT;AACb;AACD,mBAAO,GAAP;AACH;AACD;AAbA,aAcK,IAAI,OAAO,IAAI,KAAX,KAAqB,QAAzB,EAAmC;AACpC,oBAAI,MAAJ,GAAa,YAAY,cAAZ,CAA2B,IAAI,KAA/B,CAAb;AACA,uBAAO,IAAI,MAAX;AACH;AACD;AAJK,iBAKA,IAAI,IAAI,IAAR,EAAc;AACf;AACA,wBAAI,CAAC,IAAI,iBAAT,EAA4B;AACxB,6BAAK,IAAI,IAAE,CAAX,EAAc,IAAI,IAAI,KAAJ,CAAU,MAA5B,EAAoC,GAApC,EAAyC;AACrC,gCAAI,MAAI,IAAI,KAAJ,CAAU,CAAV,CAAR;AACA,gCAAI,OAAK,OAAO,IAAE,CAAF,CAAP,KAAgB,QAAzB,EAAmC;AAC/B,oCAAE,CAAF,IAAO,YAAY,cAAZ,CAA2B,IAAE,CAAF,CAA3B,CAAP;AACH;AACJ;AACD,4BAAI,iBAAJ,GAAwB,IAAxB;AACH;;AAED;AACA,wBAAI,IAAJ,CAAS,QAAQ,IAAjB,IAAyB,gBAAM,WAAN,CAAkB,QAAQ,IAA1B,EAAgC,IAAI,KAApC,CAAzB;AACA,wBAAI,IAAJ,CAAS,QAAQ,IAAjB,EAAuB,CAAvB,IAA4B,IAAI,IAAJ,CAAS,QAAQ,IAAjB,EAAuB,CAAvB,KAA6B,CAAzD,CAde,CAc6C;AAC5D,2BAAO,IAAI,IAAJ,CAAS,QAAQ,IAAjB,CAAP;AACH;AACD;AAjBK,qBAkBA;AACD,4BAAI,MAAJ,GAAa,IAAI,KAAJ,CAAU,GAAV,CAAc;AAAA,mCAAK,CAAL;AAAA,yBAAd,CAAb,CADC,CACmC;AACpC,4BAAI,IAAI,MAAJ,IAAc,IAAI,MAAJ,CAAW,CAAX,KAAiB,IAAnC,EAAyC;AACrC,gCAAI,MAAJ,CAAW,CAAX,IAAgB,CAAhB,CADqC,CAClB;AACtB;AACD,+BAAO,IAAI,MAAX;AACH;AACJ;AACJ,CAlED;;AAoEA,YAAY,UAAZ,GAAyB,UAAS,GAAT,EAA4B;AAAA,QAAd,OAAc,uEAAJ,EAAI;;AACjD,QAAI,OAAO,GAAP,KAAe,UAAnB,EAA+B;AAC3B,cAAM,IAAI,OAAJ,CAAN;AACH;;AAED;AACA;AACA,QAAI,OAAO,GAAP,KAAe,QAAnB,EAA6B;AACzB,cAAM,YAAY,cAAZ,CAA2B,GAA3B,CAAN;AACH,KAFD,MAGK,IAAI,MAAM,OAAN,CAAc,GAAd,KAAsB,MAAM,OAAN,CAAc,IAAI,CAAJ,CAAd,CAA1B,EAAiD;AAClD;AACA,aAAK,IAAI,IAAE,CAAX,EAAc,IAAI,IAAI,MAAtB,EAA8B,GAA9B,EAAmC;AAC/B,gBAAI,IAAI,IAAI,CAAJ,CAAR;AACA,gBAAI,OAAO,EAAE,CAAF,CAAP,KAAgB,QAApB,EAA8B;AAC1B,kBAAE,CAAF,IAAO,YAAY,cAAZ,CAA2B,EAAE,CAAF,CAA3B,CAAP;AACH;AACJ;;AAED,YAAI,QAAQ,IAAZ,EAAkB;AACd,kBAAM,gBAAM,WAAN,CAAkB,QAAQ,IAA1B,EAAgC,GAAhC,CAAN;AACH;AACJ;;AAED;AACA,QAAI,MAAM,OAAN,CAAc,GAAd,CAAJ,EAAwB;AACpB,cAAM,IAAI,GAAJ,CAAQ;AAAA,mBAAK,CAAL;AAAA,SAAR,CAAN,CADoB,CACG;AACvB;AACA,YAAI,IAAI,CAAJ,KAAU,IAAd,EAAoB;AAChB,gBAAI,CAAJ,IAAS,CAAT;AACH;AACJ,KAND,MAOK;AACD,cAAM,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAN;AACH;;AAED,WAAO,GAAP;AACH,CArCD;;AAuCA,YAAY,cAAZ,GAA6B,UAAS,KAAT,EAAgB,OAAhB,EAAyB;AAClD;AACA,QAAI,OAAO,KAAP,KAAiB,UAArB,EAAiC;AAC7B,gBAAQ,MAAM,OAAN,CAAR;AACH,KAFD,MAGK,IAAI,OAAO,KAAP,KAAiB,QAArB,EAA+B;AAChC;AACA,YAAI,QAAQ,OAAR,CAAgB,UAAhB,CAA2B,KAA3B,CAAJ,EAAuC;AACnC,oBAAQ,QAAQ,OAAR,CAAgB,UAAhB,CAA2B,KAA3B,CAAR;AACH;AACD;AAHA,aAIK;AACD,wBAAQ,WAAW,KAAX,CAAR;AACH;AACJ;;AAED,WAAO,KAAP;AACH,CAjBD;;AAmBA;AACA,YAAY,YAAZ,GAA2B,UAAS,IAAT,EAAe,OAAf,EAAwB;AAC/C,QAAI,OAAO,IAAP,KAAgB,UAApB,EAAgC;AAC5B,eAAO,KAAK,OAAL,CAAP;AACH;AACD,WAAO,IAAP;AACH,CALD;;;;;;;;;;;;;ACnZA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;;;;;;;IAEqB,U;AAEjB,0BAAe;AAAA;;AACX,aAAK,YAAL,GADW,CACyB;AACpC,aAAK,oBAAL,GAA4B,CAA5B,CAFW,CAEyB;AACpC,aAAK,sBAAL,GAA8B,CAA9B,CAHW,CAGyB;AACvC;;;;uCAEe;AACZ,iBAAK,MAAL,GAAc,SAAS,aAAT,CAAuB,QAAvB,CAAd;AACA,iBAAK,MAAL,CAAY,KAAZ,CAAkB,eAAlB,GAAoC,aAApC,CAFY,CAEuC;AACnD,iBAAK,OAAL,GAAe,KAAK,MAAL,CAAY,UAAZ,CAAuB,IAAvB,CAAf;AACH;;;+BAEO,K,EAAO,M,EAAQ;AACnB,iBAAK,MAAL,CAAY,KAAZ,GAAoB,KAApB;AACA,iBAAK,MAAL,CAAY,MAAZ,GAAqB,MAArB;AACA,iBAAK,OAAL,CAAa,SAAb,CAAuB,CAAvB,EAA0B,CAA1B,EAA6B,KAA7B,EAAoC,MAApC;AACH;;AAED;;;;sCACyE;AAAA,gBAA9D,QAA8D,QAA9D,QAA8D;AAAA,gBAApD,IAAoD,QAApD,IAAoD;AAAA,gBAA9C,MAA8C,QAA9C,MAA8C;AAAA,gBAAtC,YAAsC,QAAtC,YAAsC;AAAA,gBAAxB,OAAwB,QAAxB,OAAwB;AAAA,gBAAf,WAAe,QAAf,WAAe;;AACrE,iBAAK,OAAL,GAAe,OAAf;AACA,gBAAI,MAAM,KAAK,OAAf;AACA,gBAAI,MAAM,gBAAM,kBAAN,GAA2B,WAArC;;AAEA,gBAAI,UAAU,eAAe,CAA7B,EAAgC;AAC5B,oBAAI,WAAJ,GAAkB,MAAlB;AACA,oBAAI,SAAJ,GAAgB,eAAe,GAA/B;AACH;AACD,gBAAI,SAAJ,GAAgB,IAAhB;;AAEA,gBAAI,IAAJ,GAAW,QAAX;AACA,gBAAI,UAAJ,GAAiB,CAAjB;AACH;;;kCAEU,O,EAAS,K,EAAO;AAAA;;AACvB,mBAAO,uBAAY,SAAZ,GAAwB,IAAxB,CAA6B,YAAM;AACtC,uBAAO,eAAK,GAAL,CAAS;AACZ,0BAAM,WADM;AAEZ,iCAFY;AAGZ,4BAAQ,sBAHI;AAIZ,gCAJY;AAKZ,oCALY;AAMZ,4BAAQ;AACJ,gCAAQ,OAAO,IAAP,CAAY,KAAZ,CADJ;AAEJ,+BAAO,IAFH;AAGJ,mCAAW,IAHP;AAIJ,kCAAU;AAJN;AANI,iBAAT,CAAP;AAaH,aAdM,CAAP;AAeH;;;6CAEqB,I,EAAM;AAAA,gBAClB,MADkB,GACC,IADD,CAClB,MADkB;AAAA,gBACV,KADU,GACC,IADD,CACV,KADU;;AAExB,mBAAO,SAAP,GAAmB,OAAO,SAAP,IAAoB,CAAvC;;AAEA,mBAAO,OAAO,SAAP,GAAmB,OAAO,MAAP,CAAc,MAAxC,EAAgD;AAC5C,oBAAI,QAAQ,OAAO,MAAP,CAAc,OAAO,SAArB,CAAZ;AACA,oBAAI,OAAO,QAAP,IAAmB,IAAvB,EAA6B;AACzB,2BAAO,QAAP,GAAkB,CAAlB;AACA,2BAAO,KAAP,GAAe,OAAO,IAAP,CAAY,MAAM,KAAN,CAAZ,CAAf;AACH;;AAED,oBAAI,aAAa,MAAM,KAAN,CAAjB;AACA,oBAAI,QAAQ,IAAZ;;AAEA,uBAAO,OAAO,QAAP,GAAkB,OAAO,KAAP,CAAa,MAAtC,EAA8C;AAC1C,wBAAI,OAAO,OAAO,KAAP,CAAa,OAAO,QAApB,CAAX;AACA,wBAAI,YAAY,WAAW,IAAX,CAAhB;AACA,wBAAI,gBAAgB,UAAU,aAA9B;;AAEA,wBAAI,KAAJ,EAAW;AACP,6BAAK,OAAL,CAAa,aAAb;AACA,gCAAQ,KAAR;AACH;;AAED,wBAAI,cAAc,cAAlB,EAAiC;AAC7B,4BAAI,MAAM,KAAV;AACA,4BAAI,OAAO,KAAX;AACA,4BAAI,UAAU,IAAV,CAAJ,EAAqB;AACjB,gCAAI,CAAC,cAAc,IAAd,CAAL,EAA0B;AACtB,uCAAO,IAAP;AACH,6BAFD,MAGK;AACD,sCAAM,IAAN;AACH;AACJ;;AAED,kCAAU,KAAV,GAAkB,GAAlB;AACA,kCAAU,UAAV,GAAuB,QAAQ,uBAAuB,IAAvB,CAA/B,CAb6B,CAagC;AAC7D,kCAAU,eAAV,GAA4B,KAAK,oBAAjC;AACA,kCAAU,IAAV,GAAiB,EAAjB;;AAEA,4BAAI,CAAC,UAAU,UAAf,EAA2B;AACvB,gCAAI,WAAW,eAAe,IAAf,EAAqB,GAArB,CAAf;AACA,sCAAU,QAAV,GAAqB,QAArB;AACA,iCAAK,IAAI,IAAI,CAAb,EAAgB,IAAI,SAAS,MAA7B,EAAqC,GAArC,EAAyC;AACrC,0CAAU,IAAV,CAAe,IAAf,CAAoB,KAAK,QAAL,CAAc,KAAd,EAAqB,SAAS,CAAT,CAArB,EAAkC,aAAlC,EAAiD,IAArE;AACH;AACJ;;AAED;AACA,kCAAU,UAAV,GAAuB,KAAK,QAAL,CAAc,KAAd,EAAqB,IAArB,EAA2B,aAA3B,EAA0C,IAAjE;AACH,qBA3BD,MA4BK;AACD;AACA;AACA,kCAAU,IAAV,GAAiB,KAAK,QAAL,CAAc,KAAd,EAAqB,IAArB,EAA2B,aAA3B,EAA0C,IAA3D;AACH;;AAED,2BAAO,QAAP;;AAEA,wBAAI,CAAC,eAAK,cAAL,CAAoB,IAApB,CAAL,EAAgC;AAC5B,+BAAO,KAAP;AACH;AACJ;AACD,uBAAO,QAAP,GAAkB,IAAlB;AACA,uBAAO,SAAP;AACH;;AAED,2BAAK,MAAL,CAAY,IAAZ,EAAkB,EAAE,YAAF,EAAlB;AACA,mBAAO,IAAP;AACH;;AAED;AACA;;;;iCACU,K,EAAO,I,SAAwE;AAAA,gBAAjE,SAAiE,SAAjE,SAAiE;AAAA,gBAAtD,SAAsD,SAAtD,SAAsD;AAAA,gBAA3C,SAA2C,SAA3C,SAA2C;AAAA,2CAAhC,YAAgC;AAAA,gBAAhC,YAAgC,sCAAjB,CAAiB;AAAA,gBAAd,WAAc,SAAd,WAAc;;AACrF;AACA,uBAAW,KAAX,CAAiB,IAAjB,CAAsB,KAAtB,IAA+B,WAAW,KAAX,CAAiB,IAAjB,CAAsB,KAAtB,KAAgC,EAA/D;AACA,gBAAI,WAAW,KAAX,CAAiB,IAAjB,CAAsB,KAAtB,EAA6B,IAA7B,CAAJ,EAAwC;AACpC,2BAAW,KAAX,CAAiB,KAAjB,CAAuB,SAAvB;AACA,uBAAO,WAAW,KAAX,CAAiB,IAAjB,CAAsB,KAAtB,EAA6B,IAA7B,CAAP;AACH;AACD,uBAAW,KAAX,CAAiB,KAAjB,CAAuB,WAAvB;AACA,uBAAW,KAAX,CAAiB,UAAjB;;AAEA;AACA,gBAAI,MAAM,gBAAM,kBAAN,GAA2B,WAArC;AACA,gBAAI,MAAM,KAAK,kBAAL,CAAwB,IAAxB,EAA8B,SAA9B,CAAV;AACA,gBAAI,MAAM,KAAK,OAAf;AACA,gBAAI,kBAAkB,KAAK,oBAAL,GAA4B,GAAlD;AACA,gBAAI,oBAAoB,OAAO,eAAe,KAAK,sBAA3B,CAAxB;AACA,gBAAI,UAAU,IAAI,GAAlB,CAhBqF,CAgB9D;AACvB,gBAAI,cAAc,KAAK,OAAL,GAAe,OAAjC,CAjBqF,CAiB3C;;AAE1C;AACA,gBAAI,YAAY,UAAU,KAAV,CAAgB,GAAhB,EAAqB,SAArB,EAAgC,SAAhC,EAA2C,WAA3C,EAAwD,GAAxD,CAAhB;;AAEA;AACA,gBAAI,SAAS,UAAU,MAAvB;AACA,gBAAI,QAAQ,UAAU,KAAtB;AACA,gBAAI,QAAQ,UAAU,KAAtB;;AAEA,gBAAI,iBAAiB,CACjB,QAAQ,GADS,EAEjB,SAAS,GAFQ,CAArB;;AAKA,gBAAI,eAAe,CACf,QAAQ,IAAI,iBADG,EAEf,SAAS,IAAI,eAFE,CAAnB;;AAKA,gBAAI,eAAe,CACf,aAAa,CAAb,IAAkB,GADH,EAEf,aAAa,CAAb,IAAkB,GAFH,CAAnB;;AAKA;AACA,uBAAW,KAAX,CAAiB,IAAjB,CAAsB,KAAtB,EAA6B,IAA7B,IAAqC;AACjC,4BADiC;AAEjC,sBAAM,EAAE,8BAAF,EAAkB,0BAAlB,EAAgC,0BAAhC,EAA8C,wBAA9C;AAF2B,aAArC;AAIA,mBAAO,WAAW,KAAX,CAAiB,IAAjB,CAAsB,KAAtB,EAA6B,IAA7B,CAAP;AACH;;AAED;;;;0CACmB,K,SAAe,I,SAAmE,I,EAAM;AAAA;AAAA,gBAAhF,CAAgF;AAAA,gBAA7E,CAA6E;;AAAA,gBAAjE,MAAiE,SAAjE,MAAiE;AAAA,2CAAzD,YAAyD;AAAA,gBAAzD,YAAyD,sCAA1C,CAA0C;AAAA,gBAAvC,SAAuC,SAAvC,SAAuC;AAAA,gBAA5B,KAA4B,SAA5B,KAA4B;AAAA,gBAArB,WAAqB,SAArB,WAAqB;;AACvG,gBAAI,cAAc,KAAK,WAAvB;AACA,gBAAI,SAAS,CAAb;AACA,iBAAK,IAAI,WAAS,CAAlB,EAAqB,WAAW,MAAM,MAAtC,EAA8C,UAA9C,EAA0D;AACtD,oBAAI,OAAO,MAAM,QAAN,CAAX;AACA,qBAAK,YAAL,CAAkB,IAAlB,EAAwB,CAAC,CAAD,EAAI,MAAJ,CAAxB,EAAqC,IAArC,EAA2C,EAAE,cAAF,EAAU,0BAAV,EAAwB,oBAAxB,EAAmC,YAAnC,EAA0C,wBAA1C,EAA3C,EAAoG,IAApG;AACA,0BAAU,WAAV;AACH;;AAED;AACA,gBAAI,yBAAc,0BAAlB,EAA8C;AAC1C,qBAAK,OAAL,CAAa,IAAb;;AAEA,oBAAI,MAAM,gBAAM,kBAAN,GAA2B,WAArC;AACA,oBAAI,oBAAoB,OAAO,KAAK,sBAAL,GAA8B,YAArC,CAAxB;AACA,oBAAI,kBAAkB,MAAM,KAAK,oBAAjC;AACA,oBAAI,iBAAiB,KAAK,cAA1B;AACA,oBAAI,YAAY,CAAhB;;AAEA,qBAAK,OAAL,CAAa,WAAb,GAA2B,MAA3B;AACA,qBAAK,OAAL,CAAa,SAAb,GAAyB,SAAzB;AACA,qBAAK,OAAL,CAAa,UAAb,CAAwB,IAAI,iBAA5B,EAA+C,IAAI,eAAnD,EAAoE,MAAM,eAAe,CAAf,CAA1E,EAA6F,MAAM,eAAe,CAAf,CAAnG;AACA,oBAAI,SAAS,QAAb,EAAsB;AAClB,yBAAK,OAAL,CAAa,UAAb,CAAwB,IAAI,KAAK,YAAL,CAAkB,CAAlB,CAAJ,GAA2B,iBAAnD,EAAsE,IAAI,eAA1E,EAA2F,MAAM,eAAe,CAAf,CAAjG,EAAoH,MAAM,eAAe,CAAf,CAA1H;AACH;;AAED,qBAAK,OAAL,CAAa,OAAb;AACH;;AAED,gBAAI,yBAAc,wBAAlB,EAA4C;AACxC,qBAAK,OAAL,CAAa,IAAb;;AAEA,oBAAI,eAAe,KAAK,YAAxB;AACA,oBAAI,aAAY,CAAhB;;AAEA,qBAAK,OAAL,CAAa,WAAb,GAA2B,OAA3B;AACA,qBAAK,OAAL,CAAa,SAAb,GAAyB,UAAzB;AACA;AACA,qBAAK,OAAL,CAAa,UAAb,CAAwB,IAAI,UAA5B,EAAuC,IAAI,UAA3C,EAAsD,aAAa,CAAb,IAAkB,IAAI,UAA5E,EAAuF,aAAa,CAAb,IAAkB,IAAI,UAA7G;;AAEA,oBAAI,SAAS,QAAb,EAAsB;AAClB,yBAAK,OAAL,CAAa,UAAb,CAAwB,IAAI,UAAJ,GAAgB,KAAK,YAAL,CAAkB,CAAlB,CAAxC,EAA8D,IAAI,UAAlE,EAA6E,aAAa,CAAb,IAAkB,IAAI,UAAnG,EAA8G,aAAa,CAAb,IAAkB,IAAI,UAApI;AACH;;AAED,qBAAK,OAAL,CAAa,OAAb;AACH;AACJ;;AAED;;;;qCACc,I,SAAc,I,SAAmE,I,EAAM;AAAA;AAAA,gBAAhF,CAAgF;AAAA,gBAA7E,CAA6E;;AAAA,gBAAjE,MAAiE,SAAjE,MAAiE;AAAA,2CAAzD,YAAyD;AAAA,gBAAzD,YAAyD,sCAA1C,CAA0C;AAAA,gBAAvC,SAAuC,SAAvC,SAAuC;AAAA,gBAA5B,KAA4B,SAA5B,KAA4B;AAAA,gBAArB,WAAqB,SAArB,WAAqB;;AACjG,gBAAI,MAAM,gBAAM,kBAAN,GAA2B,WAArC;AACA,oBAAQ,SAAS,QAAjB;;AAEA,gBAAI,kBAAkB,KAAK,oBAAL,GAA4B,GAAlD;AACA,gBAAI,eAAe,KAAK,YAAxB;AACA,gBAAI,cAAc,KAAK,WAAvB;AACA,gBAAI,oBAAoB,OAAO,eAAe,KAAK,sBAA3B,CAAxB;;AAEA,gBAAI,MAAM,KAAK,kBAAL,CAAwB,KAAK,IAA7B,EAAmC,SAAnC,CAAV;;AAEA;AACA,gBAAI,WAAJ;AACA,gBAAI,UAAU,MAAd,EAAsB;AAClB,qBAAK,IAAI,iBAAT;AACH,aAFD,MAGK,IAAI,UAAU,QAAd,EAAwB;AACzB,qBAAK,IAAI,aAAa,CAAb,IAAgB,CAApB,GAAwB,KAAK,KAAL,GAAW,CAAxC;AACH,aAFI,MAGA,IAAI,UAAU,OAAd,EAAuB;AACxB,qBAAK,IAAI,aAAa,CAAb,CAAJ,GAAsB,KAAK,KAA3B,GAAmC,iBAAxC;AACH;;AAED;AACA;AACA,gBAAI,KAAK,IAAI,kBAAkB,IAAtB,GAA6B,WAAtC;;AAEA;AACA,gBAAI,UAAU,eAAe,CAA7B,EAAgC;AAC5B,oBAAI,QAAS,SAAS,QAAV,GAAsB,aAAa,CAAb,CAAtB,GAAwC,CAApD;AACA,qBAAK,OAAL,CAAa,UAAb,CAAwB,GAAxB,EAA6B,KAAK,KAAlC,EAAyC,EAAzC;AACH;AACD,iBAAK,OAAL,CAAa,QAAb,CAAsB,GAAtB,EAA2B,EAA3B,EAA+B,EAA/B;AACH;;;kCAEU,K,EAAO,Q,EAAU,O,EAAS,c,EAAgB,E,EAAI;AACrD,mBAAO,eAAK,GAAL,CAAS;AACZ,sBAAM,iBADM;AAEZ,wBAAQ,IAFI;AAGZ,wBAAQ,sBAHI;AAIZ,wBAAQ,qBAJI;AAKZ,8BAAc,CALF,EAKa;AACzB,kCAAkB,KANN,EAMa;AACzB,4BAPY;AAQZ,kCARY;AASZ,8CATY;AAUZ,sBAVY;AAWZ,gCAXY;AAYZ,wBAAQ;AACJ,4BAAQ,OAAO,IAAP,CAAY,KAAZ,CADJ;AAEJ,2BAAO,IAFH;AAGJ,+BAAW,CAHP;AAIJ,8BAAU,IAJN;AAKJ,iCAAa,CALT;AAMJ,oCAAgB,IANZ;AAOJ,mCAAe;AAPX;AAZI,aAAT,CAAP;AAsBH;;;6CAEqB,I,EAAM;AAAA,gBAClB,MADkB,GACU,IADV,CAClB,MADkB;AAAA,gBACV,KADU,GACU,IADV,CACV,KADU;AAAA,gBACH,QADG,GACU,IADV,CACH,QADG;;AAExB,gBAAI,gBAAJ;;AAEA;AACA,mBAAO,OAAO,WAAP,GAAqB,KAAK,QAAL,CAAc,MAA1C,EAAkD;AAC9C,0BAAU,SAAS,OAAO,WAAhB,CAAV;;AAEA,oBAAI,OAAO,cAAX,EAA2B;AACvB,2BAAO,cAAP,GAAwB,KAAxB;AACA,yBAAK,MAAL,gCAAe,QAAQ,YAAvB;AACH;;AAED,uBAAO,OAAO,SAAP,GAAmB,OAAO,MAAP,CAAc,MAAxC,EAAgD;AAC5C,wBAAI,QAAQ,OAAO,MAAP,CAAc,OAAO,SAArB,CAAZ;AACA,wBAAI,OAAO,QAAP,IAAmB,IAAvB,EAA6B;AACzB,+BAAO,QAAP,GAAkB,CAAlB;AACA,+BAAO,KAAP,GAAe,OAAO,IAAP,CAAY,MAAM,KAAN,CAAZ,CAAf;AACH;;AAED,wBAAI,aAAa,MAAM,KAAN,CAAjB;AACA,wBAAI,QAAQ,IAAZ;;AAEA,2BAAO,OAAO,QAAP,GAAkB,OAAO,KAAP,CAAa,MAAtC,EAA8C;AAC1C,4BAAI,OAAO,OAAO,KAAP,CAAa,OAAO,QAApB,CAAX;AACA,4BAAI,YAAY,WAAW,IAAX,CAAhB;AACA,4BAAI,gBAAgB,UAAU,aAA9B;;AAEA;AACA,4BAAI,KAAJ,EAAW;AACP,iCAAK,OAAL,CAAa,aAAb;AACA,oCAAQ,KAAR;AACH;;AAED,4BAAI,cAAc,cAAlB,EAAiC;AAC7B,sCAAU,SAAV,GAAsB,UAAU,SAAV,IAAuB,EAA7C;AACA,iCAAK,IAAI,IAAI,CAAb,EAAgB,IAAI,UAAU,IAAV,CAAe,MAAnC,EAA2C,GAA3C,EAA+C;;AAE3C,oCAAI,OAAO,UAAU,IAAV,CAAe,CAAf,CAAX;AACA,wCAAQ,IAAR;AACI,yCAAK,UAAL;AACI;AACA,4CAAI,UAAU,QAAV,CAAmB,CAAnB,MAA0B,OAAO,WAArC,EAAkD;AAC9C;AACH;;AAED,4CAAI,OAAQ,UAAU,KAAX,GAAoB,KAAK,KAAL,GAAa,OAAb,GAAuB,IAAvB,EAApB,GAAoD,IAA/D;AACA,4CAAI,QAAQ,QAAQ,cAAR,CAAuB,KAAvB,EAA8B,IAA9B,CAAZ;;AAEA,4CAAI,iBAAJ;AACA,4CAAI,MAAM,QAAV,EAAmB;AACf,uDAAW,MAAM,QAAjB;AACH,yCAFD,MAGK;AACD,gDAAI,mBAAmB,MAAM,gBAA7B;;AADC,4DAEqB,KAAK,QAAL,CAAc,KAAd,EAAqB,IAArB,EAA2B,aAA3B,CAFrB;AAAA,gDAEK,IAFL,aAEK,IAFL;AAAA,gDAEW,KAFX,aAEW,KAFX;;AAID,iDAAK,iBAAL,CAAuB,KAAvB,EAA8B,gBAA9B,EAAgD,IAAhD,EAAsD,aAAtD,EAAqE,IAArE;;AAEA,uDAAW,kBAAQ,qBAAR,CACP,gBADO,EAEP,KAAK,YAFE,EAGP,QAAQ,YAHD,CAAX;;AAMA,kDAAM,QAAN,GAAiB,QAAjB;AACH;;AAED,kDAAU,SAAV,CAAoB,IAApB,IAA4B;AACxB,8DADwB;AAExB,wDAAY,MAAM;AAFM,yCAA5B;;AAKA;;AAEJ,yCAAK,QAAL;AACI,4CAAI,QAAQ,UAAU,QAAtB;AACA,kDAAU,SAAV,CAAoB,MAApB,GAA6B,UAAU,SAAV,CAAoB,MAApB,IAA8B,EAA3D;AACA,kDAAU,gBAAV,GAA6B,UAAU,gBAAV,IAA8B,EAA3D;;AAEA,6CAAK,IAAI,IAAI,CAAb,EAAgB,IAAI,MAAM,MAA1B,EAAkC,GAAlC,EAAsC;AAClC;AACA,gDAAI,UAAU,QAAV,CAAmB,CAAnB,EAAsB,CAAtB,MAA6B,OAAO,WAAxC,EAAqD;AACjD;AACH;;AAED,gDAAI,QAAO,MAAM,CAAN,CAAX;AACA,gDAAI,SAAQ,QAAQ,cAAR,CAAuB,KAAvB,EAA8B,KAA9B,CAAZ;;AAEA,gDAAI,kBAAJ;AACA,gDAAI,wBAAJ;AACA,gDAAI,OAAM,QAAV,EAAmB;AACf,4DAAW,OAAM,QAAjB;AACA,kEAAkB,OAAM,eAAxB;AACA,0DAAU,gBAAV,CAA2B,IAA3B,CAAgC,eAAhC;AACH,6CAJD,MAKK;AACD,oDAAI,oBAAmB,OAAM,gBAA7B;;AADC,iEAEqB,KAAK,QAAL,CAAc,KAAd,EAAqB,KAArB,EAA2B,aAA3B,CAFrB;AAAA,oDAEK,KAFL,cAEK,IAFL;AAAA,oDAEW,MAFX,cAEW,KAFX;;AAID,qDAAK,iBAAL,CAAuB,MAAvB,EAA8B,iBAA9B,EAAgD,KAAhD,EAAsD,aAAtD,EAAqE,IAArE;;AAEA,4DAAW,kBAAQ,qBAAR,CACP,iBADO,EAEP,MAAK,YAFE,EAGP,QAAQ,YAHD,CAAX;;AAMA,oDAAI,0BAA0B,CAC1B,kBAAiB,CAAjB,IAAsB,MAAK,YAAL,CAAkB,CAAlB,CADI,EAE1B,kBAAiB,CAAjB,CAF0B,CAA9B;;AAKA,kEAAkB,kBAAQ,qBAAR,CACd,uBADc,EAEd,MAAK,YAFS,EAGd,QAAQ,YAHM,CAAlB;;AAMA,uDAAM,QAAN,GAAiB,SAAjB;AACA,uDAAM,eAAN,GAAwB,eAAxB;;AAEA;AACA,0DAAU,gBAAV,CAA2B,IAA3B,CAAgC,eAAhC;AACH;;AAED,sDAAU,SAAV,CAAoB,MAApB,CAA2B,IAA3B,CAAgC;AAC5B,mEAD4B;AAE5B,4DAAY,OAAM;AAFU,6CAAhC;AAIH;AACD;AA5FR;AA8FH;AACJ,yBApGD,MAqGK;AACD,gCAAI,UAAQ,KAAK,QAAL,CAAc,KAAd,EAAqB,IAArB,EAA2B,aAA3B,EAA0C,KAAtD;;AAEA,iCAAK,IAAI,KAAT,IAAkB,UAAU,KAA5B,EAAmC;AAC/B;AACA,oCAAI,UAAU,KAAV,CAAgB,KAAhB,EAAuB,UAAvB,KAAsC,OAAO,WAAjD,EAA8D;AAC1D;AACH;;AAED,qCAAK,iBAAL,CAAuB,OAAvB,EAA8B,UAAU,KAAV,CAAgB,KAAhB,EAAuB,gBAArD,EAAuE,UAAU,IAAjF,EAAuF;AACnF,4CAAQ,cAAc,MAD6D;AAEnF,kDAAc,cAAc,YAFuD;AAGnF,+CAAW,cAAc,SAH0D;AAInF,iDAAa,cAAc,WAJwD;AAKnF,2CAAO;AAL4E,iCAAvF;;AAQA,0CAAU,KAAV,CAAgB,KAAhB,EAAuB,SAAvB,GAAmC,kBAAQ,qBAAR,CAC/B,UAAU,KAAV,CAAgB,KAAhB,EAAuB,gBADQ,EAE/B,UAAU,IAAV,CAAe,YAFgB,EAG/B,QAAQ,YAHuB,CAAnC;AAKH;AACJ;;AAED,+BAAO,QAAP;;AAEA,4BAAI,CAAC,eAAK,cAAL,CAAoB,IAApB,CAAL,EAAgC;AAC5B,mCAAO,KAAP;AACH;AACJ;AACD,2BAAO,QAAP,GAAkB,IAAlB;AACA,2BAAO,SAAP;AACH;;AAED;AACA,oBAAI,QAAQ,KAAK,cAAL,GAAsB,OAAO,WAAzC;AACA,kCAAQ,MAAR,CAAe,KAAK,EAApB,EAAwB,KAAxB,EAA+B;AAC3B,6BAAS,KAAK,MADa;AAE3B,+BAAW,QAFgB;AAG3B,oDAAgC;AAHL,iBAA/B;AAKA,kCAAQ,MAAR,CAAe,KAAf;AACA,uBAAO,aAAP,CAAqB,IAArB,CAA0B,KAA1B;;AAEA,uBAAO,WAAP;AACA,uBAAO,cAAP,GAAwB,IAAxB;AACA,uBAAO,SAAP,GAAmB,CAAnB;AACH;;AAED,2BAAK,MAAL,CAAY,IAAZ,EAAkB,EAAE,UAAU,OAAO,aAAnB,EAAlB;AACA,mBAAO,IAAP;AACH;;AAED;;;;4CACqB,I,EAAM;AACvB,+BAAI,OAAJ,wCAAiD,KAAK,MAAL,CAAY,aAAZ,CAA0B,IAA1B,CAA+B,IAA/B,CAAjD;AACA,iBAAK,MAAL,CAAY,aAAZ,CAA0B,OAA1B,CAAkC;AAAA,uBAAK,kBAAQ,OAAR,CAAgB,CAAhB,CAAL;AAAA,aAAlC;AACH;;AAED;;;;gDACyB,K,EAAO,gB,EAAkB;AAC9C,gBAAI,UAAU;AACN,oBAAI,CADE;AAEN,oBAAI,CAFE;AAGN,uBAAO,CAHD;AAIN,wBAAQ,CAJF;AAKN,8BAAc,CALR;AAMN,4BAAY,CANN;AAON,gCAAgB;AAPV,aAAd;AAAA,gBASI,WAAW,EATf;AAUA,gBAAI,iBAAiB,QAAQ,cAA7B;;AAEA,iBAAK,IAAI,KAAT,IAAkB,KAAlB,EAAyB;AACrB,oBAAI,aAAa,MAAM,KAAN,CAAjB;;AAEA,qBAAK,IAAI,IAAT,IAAiB,UAAjB,EAA6B;AACzB,wBAAI,YAAY,WAAW,IAAX,CAAhB;AACA,wBAAI,yBAAJ;;AAEA,wBAAI,UAAU,aAAV,CAAwB,cAA5B,EAA2C;AACvC,kCAAU,QAAV,GAAqB,EAArB;AACA,uCAAe,KAAf,IAAwB,eAAe,KAAf,KAAyB,EAAjD;;AAEA,6BAAK,IAAI,IAAI,CAAb,EAAgB,IAAI,UAAU,IAAV,CAAe,MAAnC,EAA2C,GAA3C,EAA+C;AAC3C,gCAAI,OAAO,UAAU,IAAV,CAAe,CAAf,CAAX;;AAEA,oCAAQ,IAAR;AACI,qCAAK,UAAL;AACI,wCAAI,OAAQ,UAAU,KAAX,GAAoB,KAAK,KAAL,GAAa,OAAb,GAAuB,IAAvB,EAApB,GAAoD,IAA/D;;AAEA,wCAAI,CAAC,eAAe,KAAf,EAAsB,IAAtB,CAAL,EAAkC;AAC9B,4CAAI,OAAO,UAAU,UAAV,CAAqB,YAAhC;AACA,2DAAmB,KAAK,SAAL,CAAe,KAAK,CAAL,CAAf,EAAwB,KAAK,CAAL,CAAxB,EAAiC,KAAjC,EAAwC,OAAxC,EAAiD,QAAjD,EAA2D,gBAA3D,CAAnB;AACA,uDAAe,KAAf,EAAsB,IAAtB,IAA8B;AAC1B,wDAAY,QAAQ,UADM;AAE1B;AAF0B,yCAA9B;AAIH;;AAED,8CAAU,QAAV,CAAmB,CAAnB,IAAwB,QAAQ,UAAhC;;AAEA;;AAEJ,qCAAK,QAAL;AACI,8CAAU,QAAV,CAAmB,CAAnB,IAAwB,EAAxB;;AAEA,yCAAK,IAAI,IAAI,CAAb,EAAgB,IAAI,UAAU,IAAV,CAAe,MAAnC,EAA2C,GAA3C,EAAgD;AAC5C,4CAAI,SAAO,UAAU,QAAV,CAAmB,CAAnB,CAAX;;AAEA,4CAAI,CAAC,eAAe,KAAf,EAAsB,MAAtB,CAAL,EAAkC;AAC9B,gDAAI,SAAO,UAAU,IAAV,CAAe,CAAf,EAAkB,YAA7B;AACA,gDAAI,QAAQ,IAAI,OAAK,CAAL,CAAhB,CAF8B,CAEL;AACzB,+DAAmB,KAAK,SAAL,CAAe,KAAf,EAAsB,OAAK,CAAL,CAAtB,EAA+B,KAA/B,EAAsC,OAAtC,EAA+C,QAA/C,EAAyD,gBAAzD,CAAnB;AACA,2DAAe,KAAf,EAAsB,MAAtB,IAA8B;AAC1B,4DAAY,QAAQ,UADM;AAE1B;AAF0B,6CAA9B;AAIH;;AAED,kDAAU,QAAV,CAAmB,CAAnB,EAAsB,IAAtB,CAA2B,QAAQ,UAAnC;AACH;;AAED;AApCR;AAsCH;AACJ,qBA9CD,MA+CK;AACD;AACA,4BAAI,SAAO,UAAU,IAAV,CAAe,YAA1B;;AAEA;AACA,6BAAK,IAAI,KAAT,IAAkB,UAAU,KAA5B,EAAmC;AAC/B,+CAAmB,KAAK,SAAL,CAAgB,OAAK,CAAL,CAAhB,EAAyB,OAAK,CAAL,CAAzB,EAAkC,KAAlC,EAAyC,OAAzC,EAAkD,QAAlD,EAA4D,gBAA5D,CAAnB;AACA,sCAAU,KAAV,CAAgB,KAAhB,EAAuB,UAAvB,GAAoC,QAAQ,UAA5C;AACA,sCAAU,KAAV,CAAgB,KAAhB,EAAuB,gBAAvB,GAA0C,gBAA1C;AACH;AACJ;AACJ;AACJ;;AAED;AACA,gBAAI,QAAQ,YAAR,GAAuB,CAAvB,IAA4B,QAAQ,MAAR,GAAiB,CAAjD,EAAoD;AAChD,yBAAS,QAAQ,UAAjB,IAA+B;AAC3B,kCAAc,CAAC,QAAQ,KAAT,EAAgB,QAAQ,MAAxB,CADa;AAE3B,oCAAgB,QAAQ;AAFG,iBAA/B;AAIH;;AAED;AACA,mBAAO,QAAQ,OAAR,CAAgB,EAAE,kBAAF,EAAhB,CAAP;AACH;;AAED;;;;kCACW,U,EAAY,W,EAAa,K,EAAO,O,EAAS,Q,EAAU,gB,EAAkB;AAC5E,gBAAI,yBAAJ;;AAEA;;AAEA,gBAAI,QAAQ,EAAR,GAAa,WAAb,GAA2B,gBAA/B,EAAiD;AAC7C;AACA,wBAAQ,EAAR,IAAc,QAAQ,YAAtB;AACA,wBAAQ,EAAR,GAAa,CAAb;AACA,wBAAQ,YAAR,GAAuB,UAAvB;AACH,aALD,MAMK;AACD;AACA,wBAAQ,YAAR,GAAuB,KAAK,GAAL,CAAS,QAAQ,YAAjB,EAA+B,UAA/B,CAAvB;AACH;;AAED,gBAAI,QAAQ,EAAR,GAAa,QAAQ,YAArB,IAAqC,gBAAzC,EAA2D;AACvD;AACA,mCAAmB,CAAC,QAAQ,EAAT,EAAa,QAAQ,EAArB,CAAnB;;AAEA,wBAAQ,EAAR,IAAc,WAAd;;AAEA;AACA,wBAAQ,MAAR,GAAiB,KAAK,GAAL,CAAS,QAAQ,MAAjB,EAAyB,QAAQ,EAAjC,CAAjB;AACA,wBAAQ,KAAR,GAAgB,KAAK,GAAL,CAAS,QAAQ,KAAjB,EAAwB,QAAQ,EAAR,GAAa,QAAQ,YAA7C,CAAhB;AACH,aATD,MAUK;AACD;AACA;AACA,yBAAS,QAAQ,UAAjB,IAA+B;AAC3B,kCAAc,CAAC,QAAQ,KAAT,EAAgB,QAAQ,MAAxB,CADa;AAE3B,oCAAgB,QAAQ;AAFG,iBAA/B;AAIA,wBAAQ,cAAR,GAAyB,EAAzB,CAPC,CAO4B;AAC7B,wBAAQ,cAAR,CAAuB,KAAvB,IAAgC,EAAhC;;AAEA,wBAAQ,UAAR;AACA,wBAAQ,EAAR,GAAa,CAAb;AACA,wBAAQ,EAAR,GAAa,WAAb;AACA,wBAAQ,YAAR,GAAuB,UAAvB;AACA,wBAAQ,KAAR,GAAgB,UAAhB;AACA,wBAAQ,MAAR,GAAiB,WAAjB;AACA,mCAAmB,CAAC,CAAD,EAAI,CAAJ,CAAnB,CAhBC,CAgB0B;AAC9B;;AAED,mBAAO,gBAAP;AACH;;AAED;;;;2CACoB,I,EAAM,S,EAAW;AACjC,gBAAI,cAAc,YAAlB,EAAgC;AAC5B,uBAAO,KAAK,OAAL,CAAa,QAAb,EAAuB,UAAU,GAAV,EAAe;AACzC,2BAAO,IAAI,MAAJ,CAAW,CAAX,EAAc,WAAd,KAA8B,IAAI,MAAJ,CAAW,CAAX,CAArC;AACH,iBAFM,CAAP;AAGH,aAJD,MAKK,IAAI,cAAc,WAAlB,EAA+B;AAChC,uBAAO,KAAK,WAAL,EAAP;AACH,aAFI,MAGA,IAAI,cAAc,WAAlB,EAA+B;AAChC,uBAAO,KAAK,WAAL,EAAP;AACH;AACD,mBAAO,IAAP;AACH;;AAED;AACA;;;;sCACsB,I,EAAM;AACxB,gBAAI,QAAQ,IAAZ,EAAkB;AACd;AACH;AACD,mBAAQ,OAAO,IAAP,KAAgB,QAAjB,GAA6B,IAA7B,GAAoC,OAAO,IAAP,CAA3C,CAJwB,CAIiC;;AAJjC,wBAMC,KAAK,KAAL,CAAW,WAAW,YAAtB,KAAuC,EANxC;AAAA;AAAA,gBAMjB,OANiB;AAAA,gBAMR,KANQ;;AAOxB,oBAAQ,SAAS,IAAjB;;AAEA,gBAAI,UAAU,IAAd,EAAoB;AAChB,2BAAW,EAAX;AACH,aAFD,MAEO,IAAI,UAAU,IAAd,EAAoB;AACvB,2BAAW,IAAX;AACH,aAFM,MAEA,IAAI,UAAU,GAAd,EAAmB;AACtB,2BAAW,IAAX;AACH;;AAED,sBAAU,WAAW,OAAX,CAAV;AACA,uBAAW,gBAAM,kBAAjB;AACA,mBAAO,OAAP;AACH;;;yCAEwB;AACrB,gBAAI,WAAW,KAAX,CAAiB,UAAjB,GAA8B,WAAW,KAAX,CAAiB,cAAnD,EAAmE;AAC/D,2BAAW,KAAX,CAAiB,IAAjB,GAAwB,EAAxB;AACA,2BAAW,KAAX,CAAiB,UAAjB,GAA8B,CAA9B;AACA,mCAAI,OAAJ,EAAa,gCAAb;AACH;;AAED,gBAAI,OAAO,IAAP,CAAY,WAAW,KAAX,CAAiB,OAA7B,EAAsC,MAAtC,GAA+C,WAAW,KAAX,CAAiB,iBAApE,EAAuF;AACnF,2BAAW,KAAX,CAAiB,OAAjB,GAA2B,EAA3B;AACA,mCAAI,OAAJ,EAAa,mCAAb;AACH;AACJ;;;;;;AAIL;;;kBAzqBqB,U;AA0qBrB,WAAW,YAAX,GAA0B,uCAA1B;;AAEA;AACA,WAAW,KAAX,GAAmB;AACf,UAAM,EADS,EACa;AAC5B,gBAAY,CAFG,EAEa;AAC5B,oBAAgB,IAHD,EAGa;AAC5B,aAAS,EAJM,EAIa;AAC5B,uBAAmB,IALJ,EAKa;AAC5B,WAAO,EAAE,WAAW,CAAb,EAAgB,aAAa,CAA7B,EAAgC,cAAc,CAA9C,EAAiD,gBAAgB,CAAjE;AANQ,CAAnB;;AASA;AACA;AACA,IAAM,cAAc,IAAI,MAAJ,CAAW,6DAAX,CAApB;AACA,SAAS,SAAT,CAAmB,CAAnB,EAAqB;AACjB,WAAO,YAAY,IAAZ,CAAiB,CAAjB,CAAP;AACH;;AAED,IAAM,gBAAgB,oFAAtB;AACA,IAAM,kBAAkB,IAAI,MAAJ,CAAW,MAAI,aAAJ,GAAkB,IAA7B,CAAxB;AACA,SAAS,aAAT,CAAuB,CAAvB,EAAyB;AACrB,WAAO,gBAAgB,IAAhB,CAAqB,CAArB,CAAP;AACH;;AAED,IAAM,UAAU,QAAhB,C,CAA0B;;AAE1B;AACA,IAAM,eAAe,IAAI,MAAJ,CAAW,OAAK,aAAL,GAAmB,iBAA9B,CAArB,C,CAAuE;AACvE,IAAM,mBAAmB,IAAI,MAAJ,CAAW,MAAI,aAAJ,GAAkB,8GAA7B,CAAzB;AACA,IAAM,gBAAgB,IAAI,MAAJ,CAAW,yFAAX,CAAtB;AACA,IAAM,qBAAqB,mBAAmB;AAC9C,mDAD2B,GAC2B;AACtD,eAF2B,GAET;AAClB,iEAH2B,GAGyC;AACpE,oDAJ2B,GAI4B;AACvD,kCAL2B,GAKU;AACrC,8CAN2B,GAMsB;AACjD,0DAP2B,GAOkC;AAC7D,2BAR2B,GAQG;AAC9B,oDAT2B,GAS4B;AACvD,0DAV2B,GAUkC;AAC7D,oDAX2B,GAW4B;AACvD,uCAZ2B,GAYe;AAC1C,kCAb2B,GAaU;AACrC,kCAd2B,GAcU;AACrC,wFAf2B,GAegE;AAC3F,6HAhB2B,GAgBqG;AAChI,qBAjB2B,GAiBH;AACxB,4BAlB2B,GAkBI;AAC/B,eAnB2B,GAmBT;AAClB,eApB2B,GAoBT;AAClB,GArBA;AAsBA,IAAM,mBAAmB,kFAAzB;AACA,IAAM,gBAAgB,IAAI,MAAJ,CAAW,UAAU,kBAAV,GAA+B,KAA/B,GAAuC,GAAvC,GAA6C,gBAA7C,GAAgE,QAAhE,GAA2E,kBAA3E,GAAgG,OAA3G,CAAtB;;AAEA;AACA,IAAM,kBAAkB;AACpB,eAAW;AADS,CAAxB;AAGA,IAAM,wBAAwB,OAAO,IAAP,CAAY,eAAZ,EAA6B,GAA7B,CAAiC;AAAA,WAAK,gBAAgB,CAAhB,CAAL;AAAA,CAAjC,EAA0D,IAA1D,CAA+D,EAA/D,CAA9B;AACA,IAAM,uBAAuB,IAAI,MAAJ,CAAW,MAAI,qBAAJ,GAA0B,GAArC,CAA7B;AACA,SAAS,sBAAT,CAAgC,CAAhC,EAAkC;AAC9B,WAAO,qBAAqB,IAArB,CAA0B,CAA1B,CAAP;AACH;;AAED;AACA,IAAM,yBAAyB,CAA/B,C,CAAkC;;AAElC,SAAS,cAAT,CAAwB,IAAxB,EAA8B,GAA9B,EAAkC;AAC9B;AACA;AACA,QAAM,iBAAiB,MAAM,CAAN,GAAU,sBAAjC;;AAEA,QAAI,KAAK,MAAL,GAAc,cAAlB,EAAkC;AAC9B,eAAO,CAAC,IAAD,CAAP;AACH;;AAED,QAAI,MAAM,IAAV;AACA,QAAI,WAAW,KAAX,CAAiB,OAAjB,CAAyB,GAAzB,CAAJ,EAAmC;AAC/B,mBAAW,KAAX,CAAiB,KAAjB,CAAuB,YAAvB;AACA,eAAO,WAAW,KAAX,CAAiB,OAAjB,CAAyB,GAAzB,CAAP;AACH;;AAED,QAAI,WAAW,EAAf;;AAEA,QAAI,aAAa,IAAb,CAAkB,IAAlB,CAAJ,EAA6B;AACzB,mBAAW,KAAK,KAAL,CAAW,gBAAX,CAAX;AACA,YAAI,SAAS,CAAC,CAAd;AACA,aAAK,IAAI,IAAI,CAAb,EAAgB,IAAI,SAAS,MAAT,GAAkB,CAAtC,EAAyC,GAAzC,EAA8C;AAC1C,gBAAI,IAAI,CAAR,EAAW;AACP,oBAAI,kBAAkB,cAAc,IAAd,CAAmB,SAAS,CAAT,CAAnB,CAAtB;AACA,oBAAI,eAAJ,EAAqB;AACjB,6BAAS,CAAT,IAAc,SAAS,CAAT,EAAY,SAAZ,CAAsB,gBAAgB,CAAhB,EAAmB,MAAzC,CAAd;AACA,6BAAS,IAAI,CAAb,KAAmB,gBAAgB,CAAhB,CAAnB;AACA,8BAAU,gBAAgB,CAAhB,EAAmB,MAA7B;AACH;AACJ;AACD,sBAAU,IAAI,SAAS,CAAT,EAAY,MAA1B;AACA,qBAAS,CAAT,KAAe,KAAK,KAAL,CAAW,MAAX,EAAmB,SAAS,CAA5B,CAAf;AACH;AACD,eAAO,EAAP;AACH;;AAED,WAAO,KAAK,MAAZ,EAAmB;AACf,YAAI,UAAU,EAAd;AACA,YAAI,WAAW,IAAf;AACA,YAAI,gBAAgB,CAApB;;AAEA,aAAK,aAAL,EAAoB,gBAAgB,cAAhB,IAAkC,SAAS,MAA/D,EAAuE,eAAvE,EAAwF;AACpF,gBAAI,kBAAkB,CAAC,cAAc,IAAd,CAAmB,QAAnB,KAAgC,QAAjC,EAA2C,CAA3C,CAAtB;AACA,uBAAW,eAAX;AACA,uBAAW,SAAS,SAAT,CAAmB,gBAAgB,MAAnC,CAAX;AACH;;AAED,iBAAS,IAAT,CAAc,OAAd;AACA,eAAO,KAAK,SAAL,CAAe,QAAQ,MAAvB,CAAP;AACH;;AAED,QAAI,GAAJ,EAAS;AACL,iBAAS,OAAT;AACH;;AAED,eAAW,KAAX,CAAiB,KAAjB,CAAuB,cAAvB;AACA,eAAW,KAAX,CAAiB,OAAjB,CAAyB,GAAzB,IAAgC,QAAhC;AACA,WAAO,QAAP;AACH;;AAED;AACA;;IACM,S;AACF,uBAAa,OAAb,EAAkE;AAAA,YAA5C,SAA4C,uEAAhC,QAAgC;AAAA,YAAtB,SAAsB,uEAAV,QAAU;;AAAA;;AAC9D,aAAK,KAAL,GAAa,CAAb;AACA,aAAK,MAAL,GAAc,CAAd;AACA,aAAK,KAAL,GAAa,EAAb;;AAEA,aAAK,SAAL,GAAiB,SAAjB;AACA,aAAK,SAAL,GAAiB,SAAjB;AACA,aAAK,OAAL,GAAe,OAAf;AACH;;;;mCAEW,W,EAAY;AACpB,gBAAI,KAAK,KAAL,CAAW,MAAX,GAAoB,KAAK,SAA7B,EAAuC;AACnC,uBAAO,IAAI,IAAJ,CAAS,WAAT,EAAsB,KAAK,SAA3B,CAAP;AACH,aAFD,MAGK;AACD,uBAAO,KAAP;AACH;AACJ;;;6BAEK,I,EAAK;AACP,gBAAI,KAAK,KAAL,CAAW,MAAX,GAAoB,KAAK,SAA7B,EAAuC;AACnC;AACA,oBAAI,aAAa,KAAK,OAAL,CAAa,WAAb,CAAyB,KAAK,IAA9B,EAAoC,KAArD;AACA,qBAAK,KAAL,GAAa,UAAb;;AAEA,oBAAI,aAAa,KAAK,KAAtB,EAA4B;AACxB,yBAAK,KAAL,GAAa,KAAK,IAAL,CAAU,UAAV,CAAb;AACH;;AAED;AACA,qBAAK,KAAL,CAAW,IAAX,CAAgB,IAAhB;AACA,qBAAK,MAAL,IAAe,KAAK,MAApB;AACA,uBAAO,IAAP;AACH,aAbD,MAcK;AACD,qBAAK,WAAL;AACA,uBAAO,KAAP;AACH;AACJ;;AAED;;;;gCACS,I,EAAM,W,EAAa;AACxB,gBAAI,WAAW,KAAK,IAAL,CAAU,IAAV,CAAf;AACA,gBAAI,QAAJ,EAAa;AACT,uBAAO,KAAK,UAAL,CAAgB,WAAhB,CAAP;AACH,aAFD,MAGK;AACD,uBAAO,KAAP;AACH;AACJ;;;sCAEa;AACV,gBAAI,YAAY,KAAK,KAAL,CAAW,KAAK,KAAL,CAAW,MAAX,GAAoB,CAA/B,CAAhB;AACA,gBAAI,iBAAiB,KAAK,IAAL,CAAU,KAAK,OAAL,CAAa,WAAb,CAAyB,UAAU,QAAnC,EAA6C,KAAvD,CAArB;;AAEA,sBAAU,MAAV,CAAiB,UAAU,QAA3B;AACA,sBAAU,KAAV,IAAmB,cAAnB;;AAEA,gBAAI,UAAU,KAAV,GAAkB,KAAK,KAA3B,EAAkC;AAC9B,qBAAK,KAAL,GAAa,UAAU,KAAvB;AACH;AACJ;;;+BAEO,I,EAAK;AACT,gBAAI,IAAJ,EAAS;AACL,qBAAK,IAAL,CAAU,IAAV;AACH,aAFD,MAGK;AACD,qBAAK,WAAL;AACH;AACJ;;;8BAEa,G,EAAK,S,EAAW,S,EAAW,W,EAAa,G,EAAK;AACvD;AACA;AACA;AACA;AACA,gBAAI,cAAJ;AACA,gBAAI,OAAO,SAAP,KAAqB,QAAzB,EAAmC;AAC/B,wBAAQ,IAAI,KAAJ,CAAU,GAAV,CAAR,CAD+B,CACP;AAC3B,aAFD,MAGK;AACD,wBAAQ,CAAC,GAAD,CAAR,CADC,CACc;AAClB;;AAED,gBAAI,YAAY,IAAI,SAAJ,CAAc,GAAd,EAAmB,SAAnB,EAA8B,SAA9B,CAAhB;AACA,gBAAI,OAAO,UAAU,UAAV,CAAqB,WAArB,CAAX;;AAEA;AACA,iBAAK,IAAI,IAAI,CAAb,EAAgB,IAAI,MAAM,MAA1B,EAAkC,GAAlC,EAAuC;AACnC,oBAAI,SAAS,MAAM,CAAN,EAAS,KAAT,CAAe,IAAf,CAAb,CADmC,CACA;AACnC,oBAAI,WAAY,MAAM,CAAP,GAAY,IAAZ,GAAmB,KAAlC;;AAEA,qBAAK,IAAI,IAAE,CAAX,EAAc,IAAI,OAAO,MAAzB,EAAiC,GAAjC,EAAsC;AAClC,wBAAI,CAAC,IAAL,EAAU;AACN;AACH;;AAED,wBAAI,OAAO,OAAO,CAAP,CAAX;;AAEA;AACA,wBAAI,UAAU,IAAV,KAAmB,cAAc,KAAK,KAAK,MAAL,GAAc,CAAnB,CAAd,CAAvB,EAA6D;AACzD,gCAAQ,OAAR;AACH;;AAED,wBAAI,cAAe,QAAD,GAAa,IAAb,GAAoB,MAAM,IAA5C;;AAEA;AACA;AACA,wBAAI,aAAa,IAAI,CAAjB,IAAsB,KAAK,eAAL,CAAqB,WAArB,CAA1B,EAA6D;AACzD,+BAAO,UAAU,OAAV,CAAkB,IAAlB,EAAwB,WAAxB,CAAP;AACA,4BAAI,CAAC,IAAL,EAAU;AACN;AACH;AACD,6BAAK,MAAL,CAAY,IAAZ;AACA,mCAAW,IAAX;AACH,qBAPD,MAQK;AACD,6BAAK,MAAL,CAAY,WAAZ;AACH;;AAED;AACA,wBAAI,IAAI,OAAO,MAAP,GAAgB,CAAxB,EAA2B;AACvB,+BAAO,UAAU,OAAV,CAAkB,IAAlB,EAAwB,WAAxB,CAAP;AACA,mCAAW,IAAX;AACH;AACJ;;AAED,oBAAI,MAAM,MAAM,MAAN,GAAe,CAAzB,EAA2B;AACvB,8BAAU,MAAV,CAAiB,IAAjB;AACH;AACJ;AACD,mBAAO,SAAP;AACH;;;;;;AAGL,UAAU,QAAV,GAAqB,KAArB;;AAEA;AACA;;IACM,I;AACF,oBAAuC;AAAA,YAA1B,MAA0B,uEAAjB,CAAiB;AAAA,YAAd,SAAc,uEAAF,CAAE;;AAAA;;AACnC,aAAK,KAAL,GAAa,CAAb;AACA,aAAK,IAAL,GAAY,EAAZ;;AAEA,aAAK,MAAL,GAAc,KAAK,IAAL,CAAU,MAAV,CAAd;AACA,aAAK,SAAL,GAAiB,SAAjB;AACH;;;;+BAEO,I,EAAK;AACT,iBAAK,KAAL,IAAc,KAAK,MAAnB;AACA,iBAAK,IAAL,IAAa,IAAb;AACH;;;wCAEgB,I,EAAK;AAClB,mBAAO,KAAK,MAAL,GAAc,KAAK,KAAnB,GAA2B,KAAK,SAAvC;AACH;;;;;;;;;;;;;8QCh9BL;;;AACA;;;;AACA;;;;AACA;;;;;;AAEA,IAAM,cAAc;;AAEhB;AACA,kBAAc,QAAQ,OAAR,EAHE,EAGiB;AACjC,iBAAa,IAJG,EAIiB;;AAEjC;AACA;AACA;AACA;AACA,aAVgB,qBAUL,KAVK,EAUE;AAAA;;AACd,YAAI,OAAQ,KAAK,SAAL,CAAe,KAAf,MAA0B,KAAK,WAA3C;AACA,YAAI,SAAS,CAAC,IAAd,EAAoB;AAAA;AAChB,oBAAI,QAAQ,EAAZ;;AADgB,2CAEP,MAFO;AAGZ,wBAAI,MAAM,OAAN,CAAc,MAAM,MAAN,CAAd,CAAJ,EAAkC;AAC9B,8BAAM,MAAN,EAAc,OAAd,CAAsB;AAAA,mCAAQ,MAAM,IAAN,CAAW,MAAK,YAAL,CAAkB,MAAlB,EAA0B,IAA1B,CAAX,CAAR;AAAA,yBAAtB;AACH,qBAFD,MAGK;AACD,8BAAM,IAAN,CAAW,MAAK,YAAL,CAAkB,MAAlB,EAA0B,MAAM,MAAN,CAA1B,CAAX;AACH;AARW;;AAEhB,qBAAK,IAAI,MAAT,IAAmB,KAAnB,EAA0B;AAAA,0BAAjB,MAAiB;AAOzB;;AAED,sBAAK,WAAL,GAAmB,KAAK,SAAL,CAAe,KAAf,CAAnB;AACA,sBAAK,YAAL,GAAoB,QAAQ,GAAR,CAAY,MAAM,MAAN,CAAa;AAAA,2BAAK,CAAL;AAAA,iBAAb,CAAZ,CAApB;AAZgB;AAanB;AACD,eAAO,KAAK,YAAZ;AACH,KA3Be;;;AA6BhB;AACA;AACA;AACA;AACA;AACA;AACA,gBAnCgB,wBAmCF,MAnCE,EAmCM,IAnCN,EAmCY;AACxB,YAAI,QAAQ,IAAR,IAAiB,QAAO,IAAP,yCAAO,IAAP,OAAgB,QAAhB,IAA4B,SAAS,UAA1D,EAAuE;AACnE;AACH;;AAED,YAAI,UAAU,EAAE,cAAF,EAAd;AACA,YAAI,SAAS,QAAQ,OAAR,EAAb;;AAEA,YAAI,QAAO,IAAP,yCAAO,IAAP,OAAgB,QAApB,EAA8B;AAC1B,mBAAO,MAAP,CAAc,OAAd,EAAuB,IAAvB;;AAEA;AACA,gBAAI,OAAO,KAAK,GAAZ,KAAoB,QAAxB,EAAkC;AAC9B,yBAAS,KAAK,cAAL,CAAoB,OAApB,CAAT;AACH;AACJ;;AAED;AACA,YAAI,WAAW,+BAAqB,MAArB,EAA6B,OAA7B,CAAf;AACA,eAAO,OAAO,IAAP,CAAY;AAAA,mBAAM,SAAS,IAAT,EAAN;AAAA,SAAZ,EAAmC,IAAnC,CACH,YAAM;AACF;AACA,+BAAI,OAAJ,mBAA2B,MAA3B,sBAAmD,OAAnD;AACH,SAJE,EAKH,YAAM;AACF;AACA,+BAAI,OAAJ,mBAA2B,MAA3B,0BAAuD,OAAvD;AACH,SARE,CAAP;AAUH,KAhEe;;;AAkEhB;AACA;AACA,kBApEgB,gCAoEgC;AAAA;;AAAA,YAA9B,MAA8B,QAA9B,MAA8B;AAAA,YAAtB,GAAsB,QAAtB,GAAsB;AAAA,YAAjB,MAAiB,QAAjB,MAAiB;AAAA,YAAT,KAAS,QAAT,KAAS;;AAC5C,YAAI,KAAK,4BAAL,KAAsC,SAA1C,EAAqD;AACjD,iBAAK,4BAAL,GAAqC,OAAO,QAAP,KAAoB,SAAzD;AACH;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAI,aAAa,QAAQ,OAAR,CAAgB,GAAhB,CAAjB;AACA,YAAI,IAAI,KAAJ,CAAU,CAAV,EAAa,CAAb,MAAoB,OAAxB,EAAiC;AAC7B,yBAAa,gBAAM,EAAN,CAAS,GAAT,EAAc,KAAd,EAAqB,aAArB,EAAoC,IAApC,CAAyC,gBAAQ;AAC1D,oBAAI,QAAQ,IAAI,UAAJ,CAAe,IAAf,CAAZ;AACA,oBAAI,OAAK,4BAAT,EAAuC;AACnC,2BAAO,KAAP,CADmC,CACrB;AACjB,iBAFD,MAGK;AACD,wBAAI,MAAM,EAAV;AACA,yBAAK,IAAI,IAAI,CAAb,EAAgB,IAAI,MAAM,MAA1B,EAAkC,GAAlC,EAAuC;AACnC,+BAAO,OAAO,YAAP,CAAoB,MAAM,CAAN,CAApB,CAAP;AACH;AACD,2BAAO,+BAA+B,KAAK,GAAL,CAAtC,CALC,CAKgD;AACpD;AACJ,aAZY,CAAb;AAaH;;AAED,eAAO,WAAW,IAAX,CAAgB,gBAAQ;AAC3B,gBAAI,OAAK,4BAAT,EAAuC;AACnC;AACA,oBAAI,aAAJ;AACA,oBAAI,OAAO,IAAP,KAAgB,QAApB,EAA8B;AAAE;AAC5B,2BAAO,IAAI,QAAJ,CAAa,MAAb,WAA4B,UAAU,IAAV,CAA5B,QAAgD,EAAE,cAAF,EAAU,YAAV,EAAhD,CAAP;AACH,iBAFD,MAGK,IAAI,gBAAgB,UAApB,EAAgC;AAAE;AACnC,2BAAO,IAAI,QAAJ,CAAa,MAAb,EAAqB,IAArB,EAA2B,EAAE,cAAF,EAAU,YAAV,EAA3B,CAAP;AACH;AACD,yBAAS,KAAT,CAAe,GAAf,CAAmB,IAAnB;AACA,mCAAI,OAAJ,EAAa,oCAAb,EAAmD,IAAnD;AACH,aAXD,MAYK;AACD;AACA,oBAAI,sFAEoB,MAFpB,mDAGmB,UAAU,QAH7B,iDAIkB,SAAS,QAJ3B,6CAKe,UAAU,IAAV,CALf,gDAAJ;;AASA,oBAAI,WAAW,SAAS,aAAT,CAAuB,OAAvB,CAAf;AACA,yBAAS,WAAT,CAAqB,SAAS,cAAT,CAAwB,EAAxB,CAArB;AACA,yBAAS,IAAT,CAAc,WAAd,CAA0B,QAA1B;AACA,yBAAS,KAAT,CAAe,UAAf,CAA0B,GAA1B,EAA+B,CAA/B;AACA,mCAAI,OAAJ,EAAa,0BAAb,EAAyC,GAAzC;AACH;AACJ,SA9BM,CAAP;AA+BH;AApIe,CAApB;;kBAwIe,W;;;;;;;;;;AC3If;;;;AACA;;AACA;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;;;oMARA;;AAQqC;;AAE9B,IAAI,gCAAY,OAAO,MAAP,gBAAhB;;AAEP,OAAO,MAAP,CAAc,SAAd,EAAyB;AACrB,UAAM,MADe;AAErB,yBAFqB;AAGrB,cAAU,IAHW;;AAKrB,QALqB,kBAKF;AAAA,YAAd,OAAc,uEAAJ,EAAI;;AACf,YAAI,mBAAmB,CACnB,EAAE,MAAM,UAAR,EAAoB,MAAM,CAA1B,EAA6B,MAAM,oBAAG,KAAtC,EAA6C,YAAY,KAAzD,EADmB,EAEnB,EAAE,MAAM,WAAR,EAAqB,MAAM,CAA3B,EAA8B,MAAM,oBAAG,cAAvC,EAAuD,YAAY,KAAnE,EAFmB,EAGnB,EAAE,MAAM,cAAR,EAAwB,MAAM,CAA9B,EAAiC,MAAM,oBAAG,IAA1C,EAAgD,YAAY,KAA5D,EAHmB,CAAvB;;AAMA,aAAK,KAAL,CAAW,IAAX,CAAgB,IAAhB,CAAqB,IAArB,EAA2B,OAA3B,EAAoC,gBAApC;;AAEA;AACA,aAAK,OAAL,CAAa,oBAAb,GAAoC,KAApC,CAVe,CAU6B;;AAE5C;AACA,aAAK,OAAL,CAAa,oBAAb,GAAoC,IAApC;;AAEA;AACA,aAAK,OAAL,CAAa,wBAAb,GAAwC,IAAxC;AACA,aAAK,OAAL,CAAa,6BAAb,GAA6C,CAA7C,CAjBe,CAiBiC;;AAEhD;AACA,aAAK,OAAL,CAAa,uBAAb,GAAuC,IAAvC;AACA,aAAK,OAAL,CAAa,4BAAb,GAA4C,CAA5C,CArBe,CAqBgC;;AAE/C,aAAK,KAAL;AACH,KA7BoB;;;AA+BrB;;;;AAIA,sBAnCqB,8BAmCF,KAnCE,EAmCI;AACrB,aAAK,KAAL,CAAW,kBAAX,CAA8B,IAA9B,CAAmC,IAAnC,EAAyC,KAAzC;;AAEA,aAAK,kBAAL,CAAwB,cAAxB,EAAwC,CAAxC,EAA2C,EAAE,MAAM,CAAR,EAA3C;AACA,aAAK,kBAAL,CAAwB,WAAxB,EAAqC,CAArC,EAAwC,EAAE,MAAM,CAAR,EAAxC;AACA,aAAK,kBAAL,CAAwB,UAAxB,EAAoC,CAApC,EAAuC,EAAE,MAAM,CAAR,EAAvC;;AAEA,eAAO,KAAK,eAAZ;AACH,KA3CoB;AA6CrB,SA7CqB,mBA6Cb;AACJ,aAAK,MAAL,GAAc,EAAd;AACA,aAAK,SAAL;AACH,KAhDoB;;;AAkDrB;AACA,cAnDqB,sBAmDT,OAnDS,EAmDA,IAnDA,EAmDM,OAnDN,EAmDe;AAAA;;AAChC,YAAI,OAAO,QAAQ,IAAnB;AACA,YAAI,KAAK,UAAL,KAAoB,KAAK,UAA7B,EAAyC;AACrC;AACH;;AAED,YAAI,OAAO,QAAQ,QAAR,CAAiB,IAA5B;AACA,aAAK,cAAL,GAAuB,SAAS,YAAT,IAAyB,SAAS,iBAAzD;;AAEA;AACA,aAAK,gBAAL,GAAyB,SAAS,YAAT,IAAyB,SAAS,iBAA3D;;AAEA,YAAI,IAAI,KAAK,gBAAL,CAAsB,OAAtB,EAA+B,IAA/B,EAAqC,OAArC,EAA8C,IAA9C,CAAR;AACA,YAAI,CAAC,CAAL,EAAQ;AACJ;AACH;;AAED;AACA;AACA,YAAI,aAAa,KAAjB,EAAuB;AACnB,cAAE,OAAF,CAAU,aAAK;AACX,kBAAE,OAAF,GAAY,OAAZ;AACA,kBAAE,OAAF,GAAY,OAAZ;AACA,kBAAE,MAAF,CAAS,MAAT,GAAkB,KAAlB,CAHW,CAGc;AACzB,sBAAK,YAAL,CAAkB,CAAlB,EAAqB,IAArB,EAJW,CAIiB;AAC/B,aALD;AAMH,SAPD,MAQK;AACD,cAAE,OAAF,GAAY,OAAZ;AACA,cAAE,OAAF,GAAY,OAAZ;AACA,cAAE,MAAF,CAAS,MAAT,GAAkB,KAAlB,CAHC,CAGwB;AACzB,iBAAK,YAAL,CAAkB,CAAlB,EAAqB,IAArB,EAJC,CAI2B;AAC/B;;AAED;AACA,4BAAU,QAAV,CAAmB,KAAK,IAAxB,EAA8B,KAAK,EAAnC;AACH,KAvFoB;;;AAyFrB;AACA,WA1FqB,mBA0FZ,IA1FY,EA0FN;AAAA;;AACX,YAAI,QAAQ,KAAK,MAAL,CAAY,KAAK,EAAjB,CAAZ;AACA,eAAO,KAAK,MAAL,CAAY,KAAK,EAAjB,CAAP;;AAEA,eAAO,KAAK,0BAAL,CAAgC,IAAhC,EAAsC,KAAK,IAA3C,EAAiD,KAAjD,EACH,IADG,CACE,gBAAiC;AAAA,gBAA9B,MAA8B,QAA9B,MAA8B;AAAA,gBAAtB,KAAsB,QAAtB,KAAsB;AAAA,gBAAf,QAAe,QAAf,QAAe;;AAClC,gBAAI,UAAU,KAAd,EAAqB;AACjB,uBAAK,KAAL,CAAW,KAAK,EAAhB,IAAsB,KAAtB;;AAEA;AACA,uBAAO,OAAP,CAAe,aAAK;AAChB,wBAAI,oBAAoB,EAAE,iBAA1B;AACA,wBAAI,YACA,OAAK,KAAL,CAAW,KAAK,EAAhB,EAAoB,iBAApB,KACA,OAAK,KAAL,CAAW,KAAK,EAAhB,EAAoB,iBAApB,EAAuC,EAAE,IAAzC,CAFJ;;AAIA;AACA,wBAAI,QAAQ,OAAK,aAAjB;AACA,0BAAM,KAAN,GAAc,EAAE,KAAhB;;AAEA,wBAAI,UAAU,aAAV,CAAwB,cAA5B,EAA2C;AACvC;AACA,8BAAM,IAAN,GAAa,EAAb;AACA,8BAAM,SAAN,GAAkB,EAAlB;;AAEA,4BAAI,EAAE,KAAF,CAAQ,IAAR,KAAiB,UAArB,EAAgC;AAC5B,kCAAM,IAAN,CAAW,QAAX,GAAsB,UAAU,UAAV,CAAqB,YAA3C;AACA,kCAAM,SAAN,CAAgB,QAAhB,GAA2B,UAAU,SAAV,CAAoB,QAA/C;AACA,kCAAM,aAAN,GAAsB,SAAS,UAAU,SAAV,CAAoB,QAApB,CAA6B,UAAtC,CAAtB;AACH,yBAJD,MAKI;AACA,kCAAM,IAAN,CAAW,MAAX,GAAoB,UAAU,IAAV,CAAe,GAAf,CAAmB,UAAS,IAAT,EAAc;AAAE,uCAAO,KAAK,YAAZ;AAA2B,6BAA9D,CAApB;AACA,kCAAM,gBAAN,GAAyB,UAAU,gBAAnC;AACA,kCAAM,SAAN,CAAgB,MAAhB,GAAyB,UAAU,SAAV,CAAoB,MAA7C;AACA,kCAAM,cAAN,GAAuB,UAAU,SAAV,CAAoB,MAApB,CAA2B,GAA3B,CAA+B;AAAA,uCAAK,SAAS,EAAE,UAAX,CAAL;AAAA,6BAA/B,CAAvB;AACH;AACJ,qBAhBD,MAiBK;AACD,8BAAM,IAAN,GAAa,UAAU,IAAV,CAAe,YAA5B;AACA,8BAAM,SAAN,GAAkB,UAAU,KAAV,CAAgB,EAAE,KAAF,CAAQ,KAAxB,EAA+B,SAAjD;AACA,8BAAM,aAAN,GAAsB,SAAS,UAAU,KAAV,CAAgB,EAAE,KAAF,CAAQ,KAAxB,EAA+B,UAAxC,CAAtB;AACH;;AAED,iCAAM,UAAN,CAAiB,IAAjB,SAA4B,EAAE,OAA9B,EAAuC,EAAE,IAAzC,EAA+C,EAAE,OAAjD;AACH,iBAlCD;AAmCH;AACD,mBAAK,QAAL,CAAc,IAAd;;AAEA;AACA,mBAAO,aAAM,OAAN,CAAc,IAAd,SAAyB,IAAzB,EAA+B,IAA/B,CAAoC,qBAAa;AACpD,oBAAI,SAAJ,EAAe;AACX;AACA,wBAAI,YAAY,SAAS,MAAzB,EAAiC;AAAA;;AAC7B,yDAAU,QAAV,EAAmB,IAAnB,+CAA2B,QAA3B,GAD6B,CACS;AACzC;;AAED;AACA,yBAAK,IAAI,CAAT,IAAc,UAAU,MAAxB,EAAgC;AAC5B,kCAAU,MAAV,CAAiB,CAAjB,EAAoB,QAApB,CAA6B,oBAA7B,GAAoD,IAApD;AACH;AACJ;;AAED,uBAAO,SAAP;AACH,aAdM,CAAP;AAeH,SA5DE,CAAP;AA6DH,KA3JoB;;;AA6JrB;AACA,eA9JqB,uBA8JR,IA9JQ,EA8JF;AACf,eAAO,KAAK,cAAL,CAAoB,IAApB,CAAP;AACH,KAhKoB;;;AAkKrB;AACA,mBAnKqB,2BAmKJ,IAnKI,EAmKE,aAnKF,EAmKiB;AAClC,YAAI,SAAS,EAAb;AACA,aAAK,IAAI,IAAE,CAAX,EAAc,IAAI,cAAc,MAAhC,EAAwC,GAAxC,EAA6C;AACzC,gBAAI,KAAK,cAAc,CAAd,CAAT;AACA,gBAAI,YAAY,KAAK,KAAL,CAAW,KAAK,EAAhB,EAAoB,GAAG,iBAAvB,EAA0C,GAAG,IAA7C,CAAhB;AACA,gBAAI,uBAAJ;;AAEA,eAAG,MAAH,CAAU,eAAV,GAA4B,UAAU,eAAtC;;AAEA,gBAAI,UAAU,aAAV,CAAwB,cAA5B,EAA2C;AACvC,oBAAI,QAAQ,UAAU,IAAV,CAAe,GAAf,CAAmB,UAAS,IAAT,EAAc;AAAE,2BAAO,KAAK,cAAZ;AAA6B,iBAAhE,CAAZ;AACA,mBAAG,MAAH,CAAU,UAAV,GAAuB,UAAU,UAAjC;AACA,iCAAiB,KAAK,WAAL,CAAiB,KAAjB,EAAwB,GAAG,OAAH,CAAW,QAAnC,EAA6C,GAAG,MAAhD,EAAwD,UAAU,UAAV,CAAqB,cAA7E,CAAjB;AACH,aAJD,MAKK;AACD,iCAAiB,KAAK,WAAL,CAAiB,UAAU,IAAV,CAAe,cAAhC,EAAgD,GAAG,OAAH,CAAW,QAA3D,EAAqE,GAAG,MAAxE,CAAjB;AACH;AACD,iBAAK,IAAI,IAAI,CAAb,EAAgB,IAAI,eAAe,MAAnC,EAA2C,GAA3C,EAAgD;AAC5C,oBAAI,MAAM,OAAO,MAAP,CAAc,EAAd,CAAV;AACA,oBAAI,KAAJ,GAAY,eAAe,CAAf,CAAZ;AACA,uBAAO,IAAP,CAAY,GAAZ;AACH;AACJ;AACD,eAAO,MAAP;AACH,KA3LoB;;;AA6LrB;AACA,eA9LqB,uBA8LR,IA9LQ,EA8LF,QA9LE,EA8LQ,MA9LR,EA8LgB,UA9LhB,EA8L4B;AAC7C,YAAI,SAAS,EAAb;;AAEA,YAAI,SAAS,IAAT,KAAkB,YAAtB,EAAoC;AAChC,kBAAM,SAAN,CAAgB,IAAhB,CAAqB,KAArB,CAA2B,MAA3B,EAAmC,KAAK,eAAL,CAAqB,SAAS,WAA9B,EAA2C,IAA3C,EAAiD,MAAjD,EAAyD,UAAzD,CAAnC;AACH,SAFD,MAEO,IAAI,SAAS,IAAT,KAAkB,iBAAtB,EAAyC;AAC5C,gBAAI,QAAQ,SAAS,WAArB;AACA,iBAAK,IAAI,IAAI,CAAb,EAAgB,IAAI,MAAM,MAA1B,EAAkC,EAAE,CAApC,EAAuC;AACnC,sBAAM,SAAN,CAAgB,IAAhB,CAAqB,KAArB,CAA2B,MAA3B,EAAmC,KAAK,eAAL,CAAqB,MAAM,CAAN,CAArB,EAA+B,IAA/B,EAAqC,MAArC,EAA6C,UAA7C,CAAnC;AACH;AACJ,SALM,MAKA,IAAI,SAAS,IAAT,KAAkB,OAAtB,EAA+B;AAClC,mBAAO,IAAP,CAAY,0BAAe,SAAS,WAAxB,EAAqC,IAArC,EAA2C,MAA3C,CAAZ;AACH,SAFM,MAEA,IAAI,SAAS,IAAT,KAAkB,YAAtB,EAAoC;AACvC,gBAAI,SAAS,SAAS,WAAtB;AACA,iBAAK,IAAI,KAAI,CAAb,EAAgB,KAAI,OAAO,MAA3B,EAAmC,EAAE,EAArC,EAAwC;AACpC,uBAAO,IAAP,CAAY,0BAAe,OAAO,EAAP,CAAf,EAA0B,IAA1B,EAAgC,MAAhC,CAAZ;AACH;AACJ,SALM,MAKA,IAAI,SAAS,IAAT,KAAkB,SAAtB,EAAiC;AACpC,gBAAI,WAAW,cAAI,QAAJ,CAAa,SAAS,WAAtB,CAAf;AACA,mBAAO,IAAP,CAAY,0BAAe,QAAf,EAAyB,IAAzB,EAA+B,MAA/B,CAAZ;AACH,SAHM,MAGA,IAAI,SAAS,IAAT,KAAkB,cAAtB,EAAsC;AACzC,gBAAI,YAAW,cAAI,aAAJ,CAAkB,SAAS,WAA3B,CAAf;AACA,mBAAO,IAAP,CAAY,0BAAe,SAAf,EAAyB,IAAzB,EAA+B,MAA/B,CAAZ;AACH;;AAED,eAAO,MAAP;AACH,KAxNoB;;;AA0NrB;AACA,mBA3NqB,2BA2NJ,IA3NI,EA2NE,IA3NF,EA2NQ,MA3NR,EA2NgB,UA3NhB,EA2N4B;AAC7C,YAAI,SAAS,EAAb;AACA,YAAI,SAAS,KAAK,GAAL,CAAS,OAAO,MAAhB,EAAwB,KAAK,MAAL,GAAc,CAAtC,CAAb;AACA,YAAI,SAAS,CAAb,EAAgB;AACZ;AACA;AACA,gBAAI,cAAc,CAAC,KAAK,MAAL,GAAc,CAAf,IAAoB,MAAtC;AACA,iBAAK,IAAI,IAAI,CAAb,EAAgB,IAAI,MAApB,EAA4B,GAA5B,EAAiC;AAC7B,oBAAI,QAAQ,KAAK,KAAL,CAAW,IAAI,WAAf,CAAZ;AACA,oBAAI,MAAM,KAAK,KAAL,CAAW,CAAC,IAAI,CAAL,IAAU,WAArB,IAAoC,CAA9C;AACA,oBAAI,eAAe,KAAK,KAAL,CAAW,KAAX,EAAkB,GAAlB,CAAnB;;AAEA,oBAAI,QAAQ,qBAAU,MAAV,CAAiB,IAAjB,EAAuB,UAAvB,EAAmC,YAAnC,EAAiD,MAAjD,CAAZ;AACA,oBAAI,KAAJ,EAAU;AACN,2BAAO,IAAP,CAAY,KAAZ;AACH;AACJ;AACJ,SAdD,MAeK;AACD,gBAAI,SAAQ,qBAAU,MAAV,CAAiB,IAAjB,EAAuB,UAAvB,EAAmC,IAAnC,EAAyC,MAAzC,CAAZ;AACA,gBAAI,MAAJ,EAAU;AACN,uBAAO,IAAP,CAAY,MAAZ;AACH;AACJ;AACD,eAAO,MAAP;AACH;AApPoB,CAAzB;;AAuPA,UAAU,UAAV,GAAuB,CAAvB,C,CAA0B;;;;;;;;;;8QCnQ1B;;AAEA;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;;;AAEA;AACA,IAAI,kBAAkB,CAAtB;;AAEO,IAAM,kCAAa;AAEtB,aAFsB,uBAET;AACT,YAAI,iBAAO,OAAX,EAAoB;AAChB,iBAAK,MAAL,GAAc,2BAAd;AACH,SAFD,MAGK,IAAI,iBAAO,SAAX,EAAsB;AACvB,iBAAK,KAAL,GAAa,EAAb,CADuB,CACN;AACpB;AACJ,KATqB;AAWtB,YAXsB,oBAWZ,IAXY,EAWN;AACZ,eAAO,KAAK,KAAL,CAAW,KAAK,EAAhB,CAAP;AACH,KAbqB;AAetB,oBAfsB,4BAeJ,OAfI,EAeK,IAfL,EAeW,OAfX,EAeoB,IAfpB,EAe0B;AAC5C;AACA,YAAI,OAAO,KAAK,eAAL,CAAqB,OAArB,EAA8B,IAA9B,EAAoC,OAApC,CAAX;;AAEA,YAAI,QAAQ,IAAR,IAAgB,SAAS,EAA7B,EAAiC;AAC7B,mBAD6B,CACrB;AACX;;AAED;AACA,YAAI,gBAAgB,wBAAa,OAAb,CAAqB,OAArB,EAA8B,IAA9B,EAAoC,OAApC,CAApB;AACA,YAAI,oBAAoB,wBAAa,GAAb,CAAiB,aAAjB,CAAxB;;AAEA;AACA,aAAK,KAAL,CAAW,KAAK,EAAhB,IAAsB,KAAK,KAAL,CAAW,KAAK,EAAhB,KAAuB,EAA7C;AACA,YAAI,QAAQ,KAAK,KAAL,CAAW,KAAK,EAAhB,EAAoB,iBAApB,IAAyC,KAAK,KAAL,CAAW,KAAK,EAAhB,EAAoB,iBAApB,KAA0C,EAA/F;;AAEA,YAAI,gBAAgB,MAApB,EAA2B;AACvB,gBAAI,UAAU,EAAd;;AAEA;AACA;AACA;AACA,gBAAI,sBAAsB,KAAK,IAAL,GAAY,GAAZ,GAAkB,KAAK,KAAjD,CANuB,CAMiC;;AAExD,iBAAK,IAAI,GAAT,IAAgB,IAAhB,EAAqB;AACjB,oBAAI,eAAe,KAAK,GAAL,CAAnB;AACA,oBAAI,CAAC,YAAL,EAAmB;AACf;AACH;;AAED,oBAAI,SAAS,KAAK,iBAAL,CAAuB,EAAvB,EAA2B,OAA3B,EAAoC,IAApC,EAA0C,OAA1C,EAAmD,IAAnD,EAAyD,YAAzD,EAAuE,aAAvE,EAAsF,mBAAtF,EAA2G,GAA3G,CAAb;AACA,oBAAI,CAAC,MAAM,YAAN,CAAL,EAA0B;AACtB;AACA,0BAAM,YAAN,IAAsB;AAClB,oDADkB;AAElB,6BAAK,CAFa,CAEX;AAFW,qBAAtB;AAIH;;AAED,wBAAQ,IAAR,CAAa;AACT,8BADS,EACH,MAAO,YADJ,EACkB,oCADlB,EACqC;AADrC,iBAAb;AAGH;;AAED,mBAAQ,QAAQ,MAAR,GAAiB,CAAjB,IAAsB,OAA9B,CA5BuB,CA4BiB;AAC3C,SA7BD,MA8BK;AACD;AACA,gBAAI,UAAS,KAAK,iBAAL,CAAuB,EAAvB,EAA2B,OAA3B,EAAoC,IAApC,EAA0C,OAA1C,EAAmD,IAAnD,EAAyD,IAAzD,EAA+D,aAA/D,CAAb;AACA,gBAAI,CAAC,MAAM,IAAN,CAAL,EAAkB;AACd;AACA,sBAAM,IAAN,IAAc;AACV,gDADU;AAEV,yBAAK,CAFK,CAEH;AAFG,iBAAd;AAIH;;AAED,mBAAO;AACH,0BADG,EACG,UADH,EACS,oCADT,EAC4B;AAD5B,aAAP;AAGH;AACJ,KA5EqB;;;AA8EtB;AACA;AACA;AACA;AACA;AACA;AACA,mBApFsB,2BAoFL,OApFK,EAoFI,IApFJ,EAoFU,OApFV,EAoFmB;AACrC,YAAI,aAAJ;AACA,YAAI,SAAS,KAAK,WAAL,IAAoB,MAAjC;;AAEA,YAAI,UAAU,IAAV,IAAkB,QAAO,MAAP,yCAAO,MAAP,OAAkB,QAAxC,EAAkD;AAC9C;AACA,mBAAO,EAAP;AACA,iBAAK,IAAI,GAAT,IAAgB,MAAhB,EAAwB;AACpB,qBAAK,GAAL,IAAY,KAAK,oBAAL,CAA0B,OAAO,GAAP,CAA1B,EAAuC,OAAvC,EAAgD,OAAhD,CAAZ;AACH;AACJ,SAND,MAOK;AACD;AACA,mBAAO,KAAK,oBAAL,CAA0B,MAA1B,EAAkC,OAAlC,EAA2C,OAA3C,CAAP;AACH;;AAED,eAAO,IAAP;AACH,KArGqB;AAuGtB,wBAvGsB,gCAuGA,MAvGA,EAuGQ,OAvGR,EAuGiB,OAvGjB,EAuG0B;AAC5C,YAAI,aAAJ;AACA,YAAI,MAAM,OAAN,CAAc,MAAd,CAAJ,EAA2B;AACvB,iBAAK,IAAI,IAAE,CAAX,EAAc,IAAI,OAAO,MAAzB,EAAiC,GAAjC,EAAsC;AAClC,oBAAI,OAAO,OAAO,CAAP,CAAP,KAAqB,QAAzB,EAAmC;AAC/B,2BAAO,QAAQ,UAAR,CAAmB,OAAO,CAAP,CAAnB,CAAP;AACH,iBAFD,MAEO,IAAI,OAAO,OAAO,CAAP,CAAP,KAAqB,UAAzB,EAAqC;AACxC,2BAAO,OAAO,CAAP,EAAU,OAAV,CAAP;AACH;;AAED,oBAAI,IAAJ,EAAU;AACN,2BAAO,IAAP,CADM,CACO;AAChB;AACJ;AACJ,SAZD,MAaK,IAAI,OAAO,MAAP,KAAkB,QAAtB,EAAgC;AACjC,mBAAO,QAAQ,UAAR,CAAmB,MAAnB,CAAP;AACH,SAFI,MAGA,IAAI,kBAAkB,QAAtB,EAAgC;AACjC,mBAAO,OAAO,OAAP,CAAP;AACH;;AAED,eAAO,IAAP;AACH,KA9HqB;AAgItB,qBAhIsB,6BAgIH,IAhIG,EAgIG,eAhIH,EAgIoB,KAhIpB,EAgI2B;AAAA;;AAC7C,YAAI,OAAO,IAAP,CAAY,KAAK,KAAL,CAAW,KAAK,EAAhB,KAAqB,EAAjC,EAAqC,MAArC,KAAgD,CAApD,EAAuD;AACnD,mBAAO,QAAQ,OAAR,CAAgB,EAAhB,CAAP;AACH;;AAED;AACA,eAAO,wBAAa,WAAb,CAAyB,KAAK,kBAAL,GAAwB,gBAAjD,EAAmE,KAAK,EAAxE,EAA4E,KAAK,KAAL,CAAW,KAAK,EAAhB,CAA5E,EAAiG,IAAjG,CAAsG,gBAAe;AAAA,gBAAZ,KAAY,QAAZ,KAAY;;AACxH,gBAAI,KAAK,QAAT,EAAmB;AACf,mCAAI,OAAJ,aAAsB,MAAK,IAA3B,qDAA+E,KAAK,GAApF;AACA,uBAAO,EAAP;AACH;;AAED,kBAAK,KAAL,CAAW,KAAK,EAAhB,IAAsB,SAAS,EAA/B;AACA,gBAAI,CAAC,KAAL,EAAY;AACR,oCAAU,SAAV,CAAoB,KAAK,EAAzB;AACA,uBAAO,EAAP;AACH;;AAED,mBAAO,MAAK,eAAL,CAAqB,IAArB,EAA2B,KAA3B,CAAP;AACH,SAbM,CAAP;AAcH,KApJqB;AAsJtB,8BAtJsB,sCAsJM,IAtJN,EAsJY,eAtJZ,EAsJ6B,KAtJ7B,EAsJoC;AAAA;;AACtD,eAAO,KAAK,iBAAL,CAAuB,IAAvB,EAA6B,eAA7B,EAA8C,KAA9C,EAAqD,IAArD,CAA0D,kBAAU;AACvE,gBAAI,OAAO,MAAP,KAAkB,CAAtB,EAAyB;AACrB,oCAAU,OAAV,CAAkB,EAAlB,EAAsB,eAAtB,EAAuC,KAAK,EAA5C;AACA,uBAAO,QAAQ,OAAR,CAAgB,EAAhB,CAAP;AACH;;AAED,mBAAO,oBAAU,OAAV,CAAkB,MAAlB,EAA0B,eAA1B,EAA2C,KAAK,EAAhD,EAAoD,IAApD,CAAyD,kBAAU;AACtE,oBAAI,KAAK,QAAT,EAAmB;AACf,uCAAI,OAAJ,kDAA2D,KAAK,GAAhE;AACA,2BAAO,EAAP;AACH;;AAED,oBAAI,QAAQ,OAAK,KAAL,CAAW,KAAK,EAAhB,CAAZ;AACA,oBAAI,SAAS,IAAT,IAAiB,OAAO,MAAP,KAAkB,CAAvC,EAA0C;AACtC,2BAAO,EAAP;AACH;;AAED,uBAAK,cAAL,CAAoB,KAApB,EAA2B,MAA3B;;AAEA;AACA,uBAAO,OAAP,CAAe,aAAK;AAChB,wBAAI,oBAAoB,EAAE,iBAA1B;AACA,wBAAI,YAAY,MAAM,iBAAN,KAA4B,MAAM,iBAAN,EAAyB,EAAE,IAA3B,CAA5C;AACA,wBAAI,CAAC,UAAU,aAAV,CAAwB,cAA7B,EAA4C;AACxC,kCAAU,KAAV,GAAkB,UAAU,KAAV,IAAmB,EAArC;AACA,kCAAU,KAAV,CAAgB,EAAE,KAAF,CAAQ,KAAxB,IAAiC,EAAjC;AACH,qBAHD,MAIK;AACD;AACA,4BAAI,CAAC,UAAU,IAAf,EAAqB;AACjB,sCAAU,IAAV,GAAiB,EAAjB;AACH;;AAED,4BAAI,UAAU,IAAV,CAAe,OAAf,CAAuB,EAAE,KAAF,CAAQ,IAA/B,MAAyC,CAAC,CAA9C,EAAgD;AAC5C,sCAAU,IAAV,CAAe,IAAf,CAAoB,EAAE,KAAF,CAAQ,IAA5B;AACH;AACJ;AACJ,iBAjBD;;AAmBA;AACA,uBAAO,wBAAa,WAAb,CAAyB,OAAK,kBAAL,GAAwB,iBAAjD,EAAoE,KAAK,EAAzE,EAA6E,KAAK,GAAlF,EAAuF,KAAvF,EAA8F,IAA9F,CAAmG,iBAAyB;AAAA,wBAAtB,KAAsB,SAAtB,KAAsB;AAAA,wBAAf,QAAe,SAAf,QAAe;;AAC/H,wBAAI,KAAK,QAAT,EAAmB;AACf,2CAAI,OAAJ,kDAA2D,KAAK,GAAhE;AACA,+BAAO,EAAP;AACH;;AAED,2BAAO,EAAE,cAAF,EAAU,YAAV,EAAiB,kBAAjB,EAAP;AACH,iBAPM,CAAP;AAQH,aA1CM,CAAP;AA2CH,SAjDM,CAAP;AAkDH,KAzMqB;;;AA2MtB;AACA,kBA5MsB,0BA4MP,KA5MO,EA4MA,MA5MA,EA4MQ;AAC1B;AACA,aAAK,IAAI,IAAE,CAAX,EAAc,IAAI,OAAO,MAAzB,EAAiC,GAAjC,EAAsC;AAClC,gBAAI,QAAQ,OAAO,CAAP,CAAZ;AACA,kBAAM,MAAM,iBAAZ,EAA+B,MAAM,IAArC,EAA2C,GAA3C;AACH;;AAED;AACA,aAAK,IAAI,KAAT,IAAkB,KAAlB,EAAyB;AACrB,iBAAK,IAAI,IAAT,IAAiB,MAAM,KAAN,CAAjB,EAA+B;AAC3B;AACA,oBAAI,MAAM,KAAN,EAAa,IAAb,EAAmB,GAAnB,GAAyB,CAA7B,EAAgC;AAC5B,2BAAO,MAAM,KAAN,EAAa,IAAb,CAAP;AACH;AACJ;AACJ;;AAED,aAAK,IAAI,MAAT,IAAkB,KAAlB,EAAyB;AACrB;AACA,gBAAI,OAAO,IAAP,CAAY,MAAM,MAAN,CAAZ,EAA0B,MAA1B,KAAqC,CAAzC,EAA4C;AACxC,uBAAO,MAAM,MAAN,CAAP;AACH;AACJ;AACJ,KAnOqB;;;AAqOtB;AACA;AACA;AACA,iBAxOsB,yBAwOP,OAxOO,EAwOE,KAxOF,EAwOS;AAC3B,eAAO,KAAK,MAAL,CAAY,SAAZ,CAAsB,OAAtB,EAA+B,KAA/B,CAAP;AACH,KA1OqB;;;AA4OtB;AACA,kBA7OsB,0BA6ON,OA7OM,EA6OG,QA7OH,EA6Oa,KA7Ob,EA6OoB;AAAA;;AACtC,YAAI,SAAS,2BAAb,CADsC,CACP;AAC/B,YAAI,mBAAmB,KAAK,GAAL,CAAS,KAAK,gBAAd,EAAgC,IAAhC,CAAvB,CAFsC,CAEwB;;AAE9D,eAAO,OAAO,uBAAP,CAA+B,KAA/B,EAAsC,gBAAtC,EAAwD,IAAxD,CAA6D,iBAAkB;AAAA,gBAAf,QAAe,SAAf,QAAe;;AAClF,gBAAI,CAAC,QAAL,EAAe;AACX,uBAAO,EAAP;AACH;;AAED,gBAAI,iBAAiB,CAAC,QAAD,EAAW,OAAK,IAAhB,EAAsB,QAAtB,EAAgC,OAAhC,EAAyC,eAAzC,EAA0D,EAA1D,EAA8D,IAA9D,CAAmE,GAAnE,CAArB;AACA;;AAEA,mBAAO,OAAO,SAAP,CAAiB,KAAjB,EAAwB,QAAxB,EAAkC,OAAlC,EAA2C,cAA3C,EAA2D,OAAK,EAAhE,EAAoE,IAApE,CAAyE,iBAAkB;AAAA,oBAAf,QAAe,SAAf,QAAe;;AAC9F,oBAAI,CAAC,QAAL,EAAe;AACX,2BAAO,EAAP;AACH;AACD,uBAAO,EAAE,YAAF,EAAS,kBAAT,EAAP;AACH,aALM,CAAP;AAMH,SAdM,CAAP;AAeH,KAhQqB;AAkQtB,kBAlQsB,0BAkQN,IAlQM,EAkQA;AAClB;AACA,YAAI,CAAC,IAAD,IAAS,CAAC,KAAK,IAAf,IAAuB,QAAO,KAAK,IAAZ,MAAqB,QAAhD,EAA0D;AACtD;AACH;;AAED;AACA,aAAK,IAAL,CAAU,IAAV,GAAiB,0BAAY,mBAAZ,CAAgC,KAAK,IAAL,CAAU,IAA1C,CAAjB;AACA,YAAI,KAAK,IAAL,CAAU,MAAd,EAAsB;AAClB,iBAAK,IAAL,CAAU,MAAV,CAAiB,KAAjB,GAAyB,0BAAY,mBAAZ,CAAgC,KAAK,IAAL,CAAU,MAAV,CAAiB,KAAjD,CAAzB;AACH;;AAED;AACA,aAAK,IAAL,CAAU,OAAV,GAAoB,0BAAY,mBAAZ,CAAgC,KAAK,IAAL,CAAU,IAAV,IAAkB,wBAAa,QAAb,CAAsB,IAAxE,EAA8E,sBAAW,aAAzF,CAApB;AACA,YAAI,KAAK,IAAL,CAAU,MAAV,IAAoB,KAAK,IAAL,CAAU,MAAV,CAAiB,KAAjB,IAA0B,IAAlD,EAAwD;AACpD,iBAAK,IAAL,CAAU,MAAV,CAAiB,KAAjB,GAAyB,0BAAY,mBAAZ,CAAgC,KAAK,IAAL,CAAU,MAAV,CAAiB,KAAjD,EAAwD,UAAxD,CAAzB;AACH;;AAED;AACA,aAAK,MAAL,GAAc,0BAAY,mBAAZ,CAAgC,KAAK,MAArC,EAA6C;AAAA,mBAAM,MAAM,OAAN,CAAc,CAAd,KAAoB,EAAE,GAAF,CAAM,UAAN,CAArB,IAA2C,CAAhD;AAAA,SAA7C,CAAd;;AAEA;AACA,aAAK,MAAL,GAAc,0BAAY,mBAAZ,CAAgC,KAAK,MAArC,EAA6C;AAAA,mBAAK,CAAC,MAAM,OAAN,CAAc,CAAd,IAAmB,CAAnB,GAAuB,CAAC,CAAD,EAAI,CAAJ,CAAxB,EAAgC,GAAhC,CAAoC,UAApC,KAAmD,CAAxD;AAAA,SAA7C,CAAd;;AAEA;AACA,aAAK,eAAL,GAAuB,0BAAY,mBAAZ,CAAgC,KAAK,eAAL,IAAwB,cAAI,SAA5D,EAAuE,UAAvE,CAAvB;;AAEA,eAAO,IAAP;AACH,KA9RqB;;;AAgStB;AACA,qBAjSsB,6BAiSH,MAjSG,EAiSK,OAjSL,EAiSc,IAjSd,EAiSoB,OAjSpB,EAiS6B,IAjS7B,EAiSmC,IAjSnC,EAiSyC,aAjSzC,EAiSwD,mBAjSxD,EAiS6E,WAjS7E,EAiS0F;AAC5G,YAAI,SAAS,UAAU,EAAvB;;AAEA;AACA,iBAAS,KAAK,aAAL,CAAmB,MAAnB,EAA2B,OAA3B,EAAoC,IAApC,EAA0C,OAA1C,EAAmD,IAAnD,CAAT;;AAEA;AACA,eAAO,cAAP,GAAyB,KAAK,cAAL,IAAuB,IAAxB,GAAgC,KAAK,cAArC,GAAsD,IAA9E;;AAEA;AACA,eAAO,cAAP,GAAyB,KAAK,cAAL,IAAuB,IAAxB,GAAgC,KAAK,cAArC,GAAsD,IAA9E;;AAEA;AACA,YAAI,OAAO,eAAX,EAA4B;AACxB,gBAAI,mBAAJ,EAAyB;AACrB,uBAAO,YAAP,IAAuB,MAAM,mBAA7B;AACH;AACD,mBAAO,YAAP,IAAuB,MAAM,IAA7B;AACH;;AAED;AACA,eAAO,MAAP,GAAgB,KAAK,SAArB;;AAEA,eAAO,KAAP,GAAe,KAAK,KAApB;;AAEA;AACA,eAAO,MAAP,GAAiB,cAAc,KAAd,KAAwB,QAAzC;;AAEA;AACA,YAAI,gBAAgB,OAApB,EAA6B;AACzB,mBAAO,WAAP,GAAqB,CAArB;AACH,SAFD,MAGK,IAAI,gBAAgB,MAApB,EAA2B;AAC5B,mBAAO,WAAP,GAAqB,CAAC,CAAtB;AACH;;AAED,eAAO,MAAP;AACH;AAtUqB,CAAnB;;;;;;;;;ACdP;;;;AACA;;;;AACA;;;;AAEA,IAAI,YAAJ;;kBAEe,eAAe;;AAE1B;AACA,OAH0B,eAGrB,QAHqB,EAGX;AACX,eAAO,CACH,SAAS,KADN,EAEH,SAAS,MAFN,EAGH,SAAS,MAHN,EAIH,SAAS,OAJN,EAKH,SAAS,IALN,EAMH,SAAS,MANN,EAOH,SAAS,YAPN,EAQH,SAAS,SARN,EASH,SAAS,SATN,EAUH,SAAS,SAVN,EAWH,SAAS,WAXN,EAYH,gBAAM,kBAZH,EAaL,IAbK,CAaA,GAbA,CAAP;AAcH,KAlByB;;;AAoB1B,cAAU;AACN,eAAO,QADD;AAEN,gBAAQ,IAFF;AAGN,cAAM,MAHA;AAIN,iBAAS,EAJH;AAKN,gBAAQ,WALF;AAMN,cAAM,OANA;AAON,mBAAW,EAPL;AAQN,mBAAW,CARL;AASN,eAAO,QATD;AAUN,gBAAQ,IAVF;AAWN,sBAAc;AAXR,KApBgB;;AAkC1B,WAlC0B,mBAkCjB,OAlCiB,EAkCR,IAlCQ,EAkCF,OAlCE,EAkCO;AAC7B,YAAI,QAAQ,EAAZ;;AAEA,aAAK,IAAL,GAAY,KAAK,IAAL,IAAa,KAAK,QAA9B;;AAEA;AACA,cAAM,cAAN,GAAuB,KAAK,cAA5B;;AAEA;AACA,cAAM,IAAN,GAAc,KAAK,IAAL,CAAU,IAAV,IAAkB,gBAAM,UAAN,CAAiB,0BAAY,uBAAZ,CAAoC,KAAK,IAAL,CAAU,IAA9C,EAAoD,OAApD,CAAjB,CAAnB,IAAsG,KAAK,QAAL,CAAc,IAAjI;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAM,KAAN,GAAc,KAAK,IAAL,CAAU,KAAV,IAAmB,KAAK,QAAL,CAAc,KAA/C;AACA,cAAM,MAAN,GAAe,KAAK,IAAL,CAAU,MAAV,IAAoB,KAAK,QAAL,CAAc,MAAjD;AACA,YAAI,KAAK,IAAL,CAAU,MAAd,EAAsB;AAClB,kBAAM,MAAN,GAAe,KAAK,IAAL,CAAU,MAAzB;AACA,gBAAI,MAAM,MAAN,KAAiB,KAAK,QAAL,CAAc,MAAnC,EAA2C;AACvC,sBAAM,MAAN,IAAgB,OAAO,KAAK,QAAL,CAAc,MAArC;AACH;AACJ,SALD,MAMK;AACD,kBAAM,MAAN,GAAe,KAAK,QAAL,CAAc,MAA7B;AACH;;AAED,cAAM,SAAN,GAAkB,KAAK,IAAL,CAAU,SAA5B;;AAEA;AACA,cAAM,IAAN,GAAa,KAAK,IAAL,CAAU,IAAV,IAAkB,KAAK,QAAL,CAAc,IAA7C;;AAEA;AACA,cAAM,WAAN,GAAoB,KAAK,gBAAL,GAAwB,GAAxB,GAA8B,CAAlD,CAnC6B,CAmCwB;AACrD,cAAM,OAAN,GAAgB,0BAAY,kBAAZ,CAA+B,KAAK,IAAL,CAAU,OAAzC,EAAkD,OAAlD,IAA6D,MAAM,WAAnF;;AAEA;AACA,YAAI,KAAK,IAAL,CAAU,MAAV,IAAoB,KAAK,IAAL,CAAU,MAAV,CAAiB,KAAzC,EAAgD;AAC5C,kBAAM,MAAN,GAAe,gBAAM,UAAN,CAAiB,0BAAY,uBAAZ,CAAoC,KAAK,IAAL,CAAU,MAAV,CAAiB,KAArD,EAA4D,OAA5D,KAAwE,KAAK,QAAL,CAAc,MAAvG,CAAf;AACA,kBAAM,YAAN,GAAqB,0BAAY,kBAAZ,CAA+B,KAAK,IAAL,CAAU,MAAV,CAAiB,KAAhD,EAAuD,OAAvD,KAAmE,KAAK,QAAL,CAAc,YAAtG;AACH;;AAED,cAAM,QAAN,GAAiB,KAAK,OAAL,CAAa,KAAb,CAAjB;;AAEA;AACA;AACA,YAAI,YAAY,KAAK,SAArB,CAhD6B,CAgDG;;AAEhC,YAAI,aAAa,IAAb,IAAqB,cAAI,YAAJ,CAAiB,QAAQ,QAAR,CAAiB,IAAlC,MAA4C,MAArE,EAA6E;AACzE;AACA;AACA,wBAAY,IAAZ;AACH;;AAED;AACA,YAAI,cAAc,IAAlB,EAAwB;AACpB,wBAAY,KAAK,QAAL,CAAc,SAA1B;AACH;AACD,cAAM,SAAN,GAAkB,SAAlB;;AAEA;AACA,cAAM,SAAN,GAAkB,KAAK,SAAL,IAAkB,KAAK,QAAL,CAAc,SAAlD;;AAEA,eAAO,KAAP;AACH,KApGyB;;;AAsG1B;AACA,WAvG0B,yBAuGmB;AAAA,YAAlC,KAAkC,QAAlC,KAAkC;AAAA,YAA3B,MAA2B,QAA3B,MAA2B;AAAA,YAAnB,OAAmB,QAAnB,OAAmB;AAAA,YAAV,MAAU,QAAV,MAAU;;AACzC,eAAO,CAAC,KAAD,EAAQ,MAAR,EAAgB,UAAU,IAA1B,EAAgC,MAAhC,EACF,MADE,CACK;AAAA,mBAAK,CAAL;AAAA,SADL,EACa;AADb,SAEF,IAFE,CAEG,GAFH,CAAP;AAGH;AA3GyB,C;;;;;;;;;;;ACN9B;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;AACA;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AAEA;;;;;;;;AAEA,IAAI,KAAK,CAAT,C,CAAY;;IAES,I;;AAEjB;;;;;;;AAOA,wBAA0D;AAAA,YAA5C,MAA4C,QAA5C,MAA4C;AAAA,YAApC,UAAoC,QAApC,UAAoC;AAAA,YAAxB,MAAwB,QAAxB,MAAwB;AAAA,YAAhB,MAAgB,QAAhB,MAAgB;AAAA,YAAR,IAAQ,QAAR,IAAQ;;AAAA;;AACtD,aAAK,EAAL,GAAU,IAAV;AACA,aAAK,MAAL,GAAc,MAAd;AACA,aAAK,IAAL,GAAY,IAAZ;AACA,aAAK,MAAL,GAAc,MAAd;AACA,aAAK,UAAL,GAAkB,IAAlB;;AAEA,aAAK,OAAL,GAAe,KAAf;AACA,aAAK,SAAL,GAAiB,IAAjB;AACA,aAAK,WAAL,GAAmB,CAAnB;AACA,aAAK,UAAL,GAAkB,IAAlB;AACA,aAAK,OAAL,GAAe,IAAf;AACA,aAAK,OAAL,GAAe,KAAf;AACA,aAAK,MAAL,GAAc,KAAd;AACA,aAAK,KAAL,GAAa,KAAb;AACA,aAAK,KAAL,GAAa,IAAb;AACA,aAAK,KAAL,GAAa,EAAb;;AAEA,aAAK,UAAL,GAAkB,UAAlB,CAlBsD,CAkBxB;AAC9B,aAAK,MAAL,GAAc,KAAK,oBAAL,CAA0B,MAA1B,EAAkC,KAAK,MAAvC,EAA+C,KAAK,UAApD,CAAd;AACA,aAAK,GAAL,GAAW,KAAK,GAAL,CAAS,KAAK,MAAd,EAAsB,KAAK,MAA3B,EAAmC,KAAK,UAAxC,CAAX;AACA,aAAK,QAAL,GAAgB,KAAK,GAAL,CAAS,KAAK,UAAL,GAAkB,KAAK,MAAL,CAAY,CAAvC,EAA0C,CAA1C,CAAhB,CArBsD,CAqBQ;AAC9D,aAAK,SAAL,GAAiB,KAAK,GAAL,CAAS,CAAT,EAAY,KAAK,QAAjB,CAAjB;AACA,aAAK,GAAL,GAAW,cAAI,aAAJ,CAAkB,KAAK,MAAvB,CAAX;AACA,aAAK,GAAL,GAAW,cAAI,aAAJ,CAAkB,EAAC,GAAG,KAAK,MAAL,CAAY,CAAZ,GAAgB,CAApB,EAAuB,GAAG,KAAK,MAAL,CAAY,CAAZ,GAAgB,CAA1C,EAA6C,GAAG,KAAK,MAAL,CAAY,CAA5D,EAAlB,CAAX,EACA,KAAK,IAAL,GAAY,EAAE,GAAI,KAAK,GAAL,CAAS,CAAT,GAAa,KAAK,GAAL,CAAS,CAA5B,EAAgC,GAAI,KAAK,GAAL,CAAS,CAAT,GAAa,KAAK,GAAL,CAAS,CAA1D,EADZ;AAEA,aAAK,MAAL,GAAc,EAAE,IAAI,EAAE,GAAG,KAAK,GAAL,CAAS,CAAd,EAAiB,GAAG,KAAK,GAAL,CAAS,CAA7B,EAAN,EAAwC,IAAI,EAAE,GAAG,KAAK,GAAL,CAAS,CAAd,EAAiB,GAAG,KAAK,GAAL,CAAS,CAA7B,EAA5C,EAAd;AACA,aAAK,WAAL,GAAmB,CAAnB;;AAEA,aAAK,gBAAL,GAAwB,cAAI,cAAJ,CAAmB,KAAK,UAAxB,CAAxB;AACA,aAAK,mBAAL,GAA2B,KAAK,gBAAL,GAAwB,KAAK,gBAAxD;AACA,aAAK,eAAL,GAAuB,cAAI,eAAJ,GAAsB,KAAK,SAAlD,CA/BsD,CA+BO;AAC7D,aAAK,wBAAL,GAAgC,cAAI,aAAJ,CAAkB,KAAK,MAAL,CAAY,CAA9B,IAAmC,KAAK,SAAxE,CAhCsD,CAgC6B;;AAEnF,aAAK,MAAL,GAAc,EAAd,CAlCsD,CAkCpC;AAClB,aAAK,QAAL,GAAgB,EAAhB,CAnCsD,CAmClC;AACpB,aAAK,iBAAL,GAAyB,EAAzB,CApCsD,CAoCzB;AAC7B,aAAK,eAAL,GAAuB,EAAvB,CArCsD,CAqC3B;AAC9B;;;;;;AAkED;wCACiB;AACb,iBAAK,IAAI,CAAT,IAAc,KAAK,MAAnB,EAA2B;AACvB,qBAAK,MAAL,CAAY,CAAZ,EAAe,OAAf,CAAuB;AAAA,2BAAK,EAAE,OAAF,EAAL;AAAA,iBAAvB;AACH;AACD,iBAAK,MAAL,GAAc,EAAd;;AAEA,iBAAK,QAAL,CAAc,OAAd,CAAsB;AAAA,uBAAK,kBAAQ,OAAR,CAAgB,CAAhB,CAAL;AAAA,aAAtB;AACA,iBAAK,QAAL,GAAgB,EAAhB;;AAEA,iBAAK,iBAAL,CAAuB,OAAvB,CAA+B;AAAA,uBAAK,kBAAQ,OAAR,CAAgB,CAAhB,CAAL;AAAA,aAA/B;AACA,iBAAK,iBAAL,GAAyB,EAAzB;AACH;;;kCAES;AACN,2BAAK,aAAL,CAAmB,KAAK,EAAxB;AACA,iBAAK,aAAL,CAAmB,iBAAnB,EAAsC,KAAK,GAA3C;AACA,iBAAK,aAAL;AACA,iBAAK,MAAL,GAAc,IAAd;AACH;;;yCAEgB;AACb,mBAAO;AACH,oBAAI,KAAK,EADN;AAEH,qBAAK,KAAK,GAFP;AAGH,wBAAQ,KAAK,MAAL,CAAY,IAHjB;AAIH,wBAAQ,KAAK,MAJV;AAKH,qBAAK,KAAK,GALP;AAMH,qBAAK,KAAK,GANP;AAOH,iCAAiB,KAAK,eAPnB;AAQH,kCAAkB,KAAK,gBARpB;AASH,qCAAqB,KAAK,mBATvB;AAUH,0CAA0B,KAAK,wBAV5B;AAWH,4BAAY,KAAK,UAXd;AAYH,0BAAU,KAAK,QAZZ;AAaH,2BAAW,KAAK,SAbb;AAcH,4BAAY,KAAK,UAdd;AAeH,uBAAO,KAAK;AAfT,aAAP;AAiBH;;;wCAE0B;AAAA,8CAAT,OAAS;AAAT,uBAAS;AAAA;;AACvB,mBAAO,wBAAa,WAAb,iCAAyB,KAAK,MAA9B,SAAyC,OAAzC,EAAP;AACH;;;8BAEK,U,EAAqC;AAAA,4FAAJ,EAAI;AAAA,sCAAvB,OAAuB;AAAA,gBAAvB,OAAuB,iCAAb,IAAa;;AACvC,iBAAK,UAAL,GAAkB,UAAlB;AACA,iBAAK,OAAL,GAAe,OAAf;AACA,gBAAI,CAAC,KAAK,MAAV,EAAkB;AACd,qBAAK,OAAL,GAAe,IAAf;AACA,qBAAK,KAAL,GAAa,KAAb;AACH;AACD,mBAAO,KAAK,aAAL,CAAmB,gBAAnB,EAAqC,EAAE,MAAM,KAAK,cAAL,EAAR,EAArC,EAAsE,KAAtE,CAA4E,aAAK;AAAE,sBAAM,CAAN;AAAU,aAA7F,CAAP;AACH;;AAED;;;;;;;;;;AA+NA;;;;oCAIY,M,EAAQ,Q,EAAU;AAAA;;AAC1B,gBAAI,KAAK,KAAT,EAAgB;AACZ;AACH;;AAED;AACA,gBAAI,SAAS,KAAb,EAAoB;AAChB,qBAAK,KAAL,CAAW,cAAX,GAA4B,CAA5B;AACA,qBAAK,KAAL,CAAW,WAAX,GAAyB,CAAzB;AACH;;AAED;AACA,gBAAI,SAAS,EAAb;AAAA,gBAAiB,WAAW,EAA5B,CAZ0B,CAYM;AAChC,gBAAI,YAAY,KAAK,SAArB;AACA,gBAAI,SAAJ,EAAe;AACX,qBAAK,IAAI,CAAT,IAAc,SAAd,EAAyB;AACrB,yBAAK,IAAI,OAAT,IAAoB,UAAU,CAAV,EAAa,MAAjC,EAAyC;AACrC,4BAAI,eAAe,UAAU,CAAV,EAAa,MAAb,CAAoB,OAApB,CAAnB;AACA,4BAAI,aAAa,WAAjB,EAA8B;AAC1B,gCAAI,CAAC,OAAO,CAAP,CAAL,EAAgB;AACZ,mDAAI,MAAJ,6CAAoD,CAApD,+BAA8E,KAAK,GAAnF;AACA;AACH;;AAED;AACA,gCAAI,eAAe,OAAO,MAAP,CAAc,EAAd,EAAkB,UAAU,CAAV,CAAlB,CAAnB;AACA,yCAAa,QAAb,GAAwB,OAAO,MAAP,CAAc,EAAd,EAAkB,aAAa,QAA/B,EAAyC,aAAa,QAAtD,CAAxB;AACA,yCAAa,OAAb,GAAuB,aAAa,OAApC;;AAEA,gCAAI,OAAO,OAAO,CAAP,EAAU,QAAV,CAAmB,aAAa,WAAhC,EAA6C,aAAa,eAA1D,EAA2E,YAA3E,CAAX;AACA,mCAAO,CAAP,IAAY,OAAO,CAAP,KAAa,EAAzB;AACA,mCAAO,CAAP,EAAU,IAAV,CAAe,IAAf;AACA,iCAAK,KAAL,CAAW,WAAX,IAA0B,KAAK,WAA/B;AACA,iCAAK,KAAL,CAAW,cAAX,IAA6B,KAAK,cAAlC;AACH;AACJ;;AAED;AACA;AACA;AACA;AACA;AACA,wBAAI,UAAU,CAAV,EAAa,QAAjB,EAA2B;AACvB,iCAAS,IAAT,oCAAiB,UAAU,CAAV,EAAa,QAA9B;AACH;AACJ;AACJ;AACD,mBAAO,KAAK,SAAZ;;AAEA;AACA,gBAAI,SAAS,KAAb,EAAoB;AAChB,qBAAK,iBAAL,gCAA6B,KAAK,QAAlC,GADgB,CAC6B;AAC7C,qBAAK,QAAL,GAAgB,EAAhB;AACH;;AAED;AACA,iBAAK,IAAI,CAAT,IAAc,MAAd,EAAsB;AAClB,oBAAI,KAAK,MAAL,CAAY,CAAZ,CAAJ,EAAoB;AAChB,yBAAK,MAAL,CAAY,CAAZ,EAAe,OAAf,CAAuB;AAAA,+BAAK,EAAE,OAAF,EAAL;AAAA,qBAAvB,EADgB,CAC0B;AAC7C;AACD,qBAAK,MAAL,CAAY,CAAZ,IAAiB,OAAO,CAAP,CAAjB,CAJkB,CAIU;AAC5B,qBAAK,eAAL,CAAqB,IAArB,CAA0B,CAA1B;AACH;;AAED;AACA,8BAAK,QAAL,EAAc,IAAd,kBAAsB,QAAtB;;AAEA,gBAAI,SAAS,IAAb,EAAmB;AACf;AACA,qBAAK,IAAI,EAAT,IAAc,KAAK,MAAnB,EAA2B;AACvB,wBAAI,KAAK,eAAL,CAAqB,OAArB,CAA6B,EAA7B,MAAoC,CAAC,CAAzC,EAA4C;AACxC,6BAAK,MAAL,CAAY,EAAZ,EAAe,OAAf,CAAuB;AAAA,mCAAK,EAAE,OAAF,EAAL;AAAA,yBAAvB;AACA,+BAAO,KAAK,MAAL,CAAY,EAAZ,CAAP;AACH;AACJ;AACD,qBAAK,eAAL,GAAuB,EAAvB;;AAEA;AACA,qBAAK,iBAAL,CAAuB,OAAvB,CAA+B;AAAA,2BAAK,kBAAQ,OAAR,CAAgB,CAAhB,CAAL;AAAA,iBAA/B;AACA,qBAAK,iBAAL,GAAyB,EAAzB;;AAEA,qBAAK,KAAL,CAAW,cAAX,GAA4B,CAAC,KAAK,KAAL,CAAW,cAAX,GAA4B,KAAK,KAAL,CAAW,aAAxC,EAAuD,OAAvD,CAA+D,CAA/D,CAA5B;AACA,qBAAK,UAAL;AACH;AACJ;;AAED;;;;;;;;;;AA0BA;oCACa,I,EAAM;AACf,gBAAI,IAAJ,EAAU;AACN,qBAAK,OAAL,GAAe,IAAf;AACA,qBAAK,SAAL,GAAiB,KAAK,SAAL,IAAkB,EAAnC;AACA,qBAAK,SAAL,CAAe,IAAf,CAAoB,IAApB;AACA,qBAAK,WAAL,GAAmB,CAAnB,CAJM,CAIgB;AACtB,qBAAK,UAAL,GAAmB,KAAK,UAAL,GAAkB,KAAK,UAAvB,GAAoC,OAApC,GAA8C,QAAjE;AACH,aAND,MAOK;AACD,qBAAK,SAAL,GAAiB,IAAjB;AACA,qBAAK,WAAL,GAAmB,CAAnB;AACH;AACJ;;AAED;AACA;AACA;;;;4CACqB,K,EAAO;AACxB,mBAAO,CAAC,KAAK,SAAN,IAAmB,KAAK,SAAL,CAAe,IAAf,CAAoB;AAAA,uBAAK,EAAE,MAAF,CAAS,KAAT,KAAmB,IAAxB;AAAA,aAApB,CAA1B;AACH;;AAED;;;;4CACkC,O,EAAS;AAAA,gBAA3B,KAA2B,SAA3B,KAA2B;AAAA,gBAApB,OAAoB,SAApB,OAAoB;;AACvC;AACA,oBAAQ,OAAR,CAAgB,KAAhB,EAAuB,eAAvB,EAAwC,CAAC,KAAK,GAAL,CAAS,CAAV,EAAa,KAAK,GAAL,CAAS,CAAtB,EAAyB,KAAK,UAA9B,EAA0C,KAAK,MAAL,CAAY,CAAtD,CAAxC;AACA,oBAAQ,OAAR,CAAgB,IAAhB,EAAsB,oBAAtB,EAA4C,KAAK,WAAjD;;AAEA;AACA,2BAAK,QAAL,CAAc,KAAd;AACA,2BAAK,SAAL,CAAe,KAAf,EAAsB,KAAtB,EAA6B,eAAK,UAAL,CAAgB,KAAK,GAAL,CAAS,CAAzB,EAA4B,KAAK,GAAL,CAAS,CAArC,EAAwC,CAAxC,CAA7B;AACA,2BAAK,KAAL,CAAW,KAAX,EAAkB,KAAlB,EAAyB,eAAK,UAAL,CAAgB,KAAK,IAAL,CAAU,CAAV,GAAc,cAAI,UAAlC,EAA8C,CAAC,CAAD,GAAK,KAAK,IAAL,CAAU,CAAf,GAAmB,cAAI,UAArE,EAAiF,CAAjF,CAAzB,EARuC,CAQwE;AAC/G,2BAAK,IAAL,CAAU,OAAV,EAAmB,KAAnB;AACA,oBAAQ,OAAR,CAAgB,WAAhB,EAA6B,SAA7B,EAAwC,OAAxC;;AAEA;AACA;AACA,oBAAQ,OAAR,CAAgB,IAAhB,EAAsB,gBAAtB,EAAwC,KAAK,OAAL,IAAgB,KAAK,UAAL,KAAoB,OAA5E;AACH;;AAED;AACA;AACA;AACA;;;;8BAyBO,K,EAAO;AACV,iBAAK,OAAL,GAAe,MAAM,OAArB;AACA,iBAAK,MAAL,GAAc,MAAM,MAApB;AACA,iBAAK,UAAL,GAAkB,MAAM,MAAxB;AACA,iBAAK,KAAL,GAAa,MAAM,KAAnB;AACA,iBAAK,SAAL,GAAiB,MAAM,SAAvB;AACA,iBAAK,KAAL,GAAa,qBAAa,KAAK,KAAlB,EAAyB,MAAM,KAA/B,CAAb;AACA,mBAAO,IAAP;AACH;;;qCAEiC;AAAA,gBAAtB,OAAsB,uEAAZ,CAAC,QAAD,CAAY;;AAC9B,gBAAI,OAAO,EAAX;AACA,iBAAK,IAAI,GAAT,IAAgB,KAAK,KAArB,EAA4B;AACxB,oBAAI,QAAQ,OAAR,CAAgB,GAAhB,MAAyB,CAAC,CAA9B,EAAiC;AAC7B,yBAAK,GAAL,IAAY,KAAK,KAAL,CAAW,GAAX,CAAZ;AACH;AACJ;;AAED,+BAAI,OAAJ,uBAAgC,KAAK,GAArC,aAAgD,KAAK,SAAL,CAAe,IAAf,CAAhD;AACH;;AAED;;;;8BAniBa,C,EAAG;AACZ,mBAAO,EAAC,GAAG,EAAE,CAAN,EAAS,GAAG,EAAE,CAAd,EAAiB,GAAG,EAAE,CAAtB,EAAyB,KAAK,KAAK,QAAL,CAAc,CAAd,CAA9B,EAAP;AACH;;;wCAE0B;AAAA,gBAAV,CAAU,SAAV,CAAU;AAAA,gBAAP,CAAO,SAAP,CAAO;AAAA,gBAAJ,CAAI,SAAJ,CAAI;;AACvB,mBAAO,IAAI,GAAJ,GAAU,CAAV,GAAc,GAAd,GAAoB,CAA3B;AACH;;;4BAEW,M,EAAQ,M,EAAQ,U,EAAY;AACpC,gBAAI,OAAO,CAAP,GAAW,CAAX,IAAgB,OAAO,CAAP,IAAa,KAAK,OAAO,CAAzC,IAA+C,OAAO,CAAP,GAAW,CAA9D,EAAiE;AAC7D,uBAD6D,CACrD;AACX;AACD,mBAAO,CAAC,OAAO,IAAR,EAAc,UAAd,EAA0B,OAAO,CAAjC,EAAoC,OAAO,CAA3C,EAA8C,OAAO,CAArD,EAAwD,IAAxD,CAA6D,GAA7D,CAAP;AACH;;;sCAEqB,M,EAAQ,M,EAAQ,U,EAAY;AAC9C,mBAAO,KAAK,GAAL,CAAS,KAAK,oBAAL,CAA0B,MAA1B,EAAkC,MAAlC,EAA0C,UAA1C,CAAT,EAAgE,MAAhE,EAAwE,UAAxE,CAAP;AACH;;;6CAE4B,M,EAAQ,M,EAAQ,U,EAAY;AACrD,gBAAI,OAAO,SAAX,EAAsB;AAClB,yBAAS,KAAK,gBAAL,CAAsB,MAAtB,EAA8B,KAAK,GAAL,CAAS,CAAT,EAAY,OAAO,CAAP,GAAW,OAAO,SAA9B,CAA9B,CAAT,CADkB,CACgE;AACrF;AACD,mBAAO,KAAK,qBAAL,CAA2B,MAA3B,EAAmC,OAAO,QAA1C,CAAP;AACH;;;gDAEkC,I,EAAM;AAAA,gBAAhB,CAAgB,SAAhB,CAAgB;AAAA,gBAAb,CAAa,SAAb,CAAa;AAAA,gBAAV,CAAU,SAAV,CAAU;;AACrC,gBAAI,MAAM,IAAV,EAAgB;AACZ,oBAAI,SAAS,KAAK,GAAL,CAAS,CAAT,EAAY,IAAI,IAAhB,CAAb;AACA,oBAAI,KAAK,KAAL,CAAW,IAAI,MAAf,CAAJ;AACA,oBAAI,KAAK,KAAL,CAAW,IAAI,MAAf,CAAJ;AACA,oBAAI,IAAJ;AACH;AACD,mBAAO,KAAK,KAAL,CAAW,EAAC,IAAD,EAAI,IAAJ,EAAO,IAAP,EAAX,CAAP;AACH;;;qDAEuC,Q,EAAU;AAAA,gBAApB,CAAoB,SAApB,CAAoB;AAAA,gBAAjB,CAAiB,SAAjB,CAAiB;AAAA,gBAAd,CAAc,SAAd,CAAc;;AAC9C,gBAAI,aAAa,SAAb,IAA0B,IAAI,QAAlC,EAA4C;AACxC,uBAAO,KAAK,gBAAL,CAAsB,EAAC,IAAD,EAAI,IAAJ,EAAO,IAAP,EAAtB,EAAiC,QAAjC,CAAP;AACH;AACD,mBAAO,KAAK,KAAL,CAAW,EAAC,IAAD,EAAI,IAAJ,EAAO,IAAP,EAAX,CAAP;AACH;;;qDAE4C;AAAA,gBAAf,CAAe,SAAf,CAAe;AAAA,gBAAZ,CAAY,SAAZ,CAAY;AAAA,gBAAT,CAAS,SAAT,CAAS;AAAA,gBAAN,GAAM,SAAN,GAAM;;AACzC,gBAAI,CAAC,KAAK,cAAL,CAAoB,GAApB,CAAL,EAA+B;AAC3B;AACA,qBAAK,CAAL;AACA,qBAAK,CAAL;AACA,qBAAK,cAAL,CAAoB,GAApB,IAA2B,CACvB,KAAK,KAAL,CAAW,EAAC,IAAD,EAAI,IAAJ,EAAY,IAAZ,EAAX,CADuB,EACK,KAAK,KAAL,CAAW,EAAC,GAAG,IAAE,CAAN,EAAS,IAAT,EAAiB,IAAjB,EAAX,CADL,EAEvB,KAAK,KAAL,CAAW,EAAC,IAAD,EAAI,GAAG,IAAE,CAAT,EAAY,IAAZ,EAAX,CAFuB,EAEK,KAAK,KAAL,CAAW,EAAC,GAAG,IAAE,CAAN,EAAS,GAAG,IAAE,CAAd,EAAiB,IAAjB,EAAX,CAFL,CAA3B;AAIH;AACD,mBAAO,KAAK,cAAL,CAAoB,GAApB,CAAP;AACH;;;qCAEmB,M,EAAQ,U,EAAY;AACpC,gBAAI,WAAW,CAAX,GAAe,OAAO,CAA1B,EAA6B;AAAA,4CACZ,KAAK,gBAAL,CAAsB,UAAtB,EAAkC,OAAO,CAAzC,CADY;AAAA,oBACpB,CADoB,yBACpB,CADoB;AAAA,oBACjB,CADiB,yBACjB,CADiB;;AAEzB,uBAAQ,OAAO,CAAP,KAAa,CAAb,IAAkB,OAAO,CAAP,KAAa,CAAvC;AACH;AACD,mBAAO,KAAP;AACH;;;+BA8Da,I,EAAM;AAChB,gBAAI,IAAJ,EAAU;AACN,qBAAK,QAAL,GAAgB,IAAhB;AACA,oBAAI,KAAK,WAAL,IAAoB,KAAK,WAAL,CAAiB,UAAzC,EAAqD;AACjD,oCAAM,aAAN,CAAoB,KAAK,WAAL,CAAiB,UAArC,EADiD,CACC;AAClD,yBAAK,WAAL,CAAiB,UAAjB,GAA8B,IAA9B;AACH;;AAED,qBAAK,UAAL,CAAgB,IAAhB;AACH;AACJ;;AAED;AACA;;;;sCACsB,I,SAA4C;AAAA,gBAApC,QAAoC,SAApC,QAAoC;AAAA,gBAA1B,MAA0B,SAA1B,MAA0B;AAAA,gBAAlB,MAAkB,SAAlB,MAAkB;AAAA,gBAAV,MAAU,SAAV,MAAU;;AAC9D,gBAAI,OAAO,KAAK,WAAhB;;AAEA,iBAAK,KAAL,CAAW,SAAX,GAAuB,CAAC,IAAI,IAAJ,EAAxB;AACA,iBAAK,KAAL,CAAW,aAAX,GAA2B,CAA3B;AACA,iBAAK,KAAL,CAAW,MAAX,GAAoB,IAApB;;AAEA,gCAAU,SAAV,CAAoB,KAAK,EAAzB;;AAEA;AACA,iBAAK,IAAI,UAAT,IAAuB,MAAvB,EAA+B;AAC3B,oBAAI,QAAQ,OAAO,UAAP,CAAZ;AACA;AACA,oBAAI,CAAC,KAAD,IAAU,CAAC,MAAM,WAArB,EAAkC;AAC9B,uCAAI,MAAJ,aAAqB,UAArB;AACA;AACH;;AAED;AACA,oBAAI,MAAM,WAAN,CAAkB,MAAlB,KAA6B,KAAK,MAAtC,EAA8C;AAC1C;AACH;;AAED;AACA,oBAAI,gBAAgB,KAAK,gBAAL,CAAsB,IAAtB,EAA4B,MAAM,WAAlC,EAA+C,UAA/C,CAApB;;AAEA;AACA,qBAAK,IAAI,IAAE,CAAX,EAAc,IAAI,cAAc,MAAhC,EAAwC,GAAxC,EAA6C;AACzC,wBAAI,eAAe,cAAc,CAAd,CAAnB;AACA,wBAAI,OAAO,aAAa,IAAxB;AACA,wBAAI,CAAC,IAAL,EAAW;AACP;AACH;;AAED,yBAAK,IAAI,IAAI,CAAb,EAAgB,IAAI,KAAK,QAAL,CAAc,MAAlC,EAA0C,GAA1C,EAA+C;AAC3C,4BAAI,UAAU,KAAK,QAAL,CAAc,CAAd,CAAd;AACA,4BAAI,QAAQ,QAAR,IAAoB,IAAxB,EAA8B;AAC1B,qCAD0B,CAChB;AACb;;AAED,4BAAI,UAAU,0BAAY,sBAAZ,CAAmC,OAAnC,EAA4C,IAA5C,EAAkD,MAAlD,CAAd;AACA,gCAAQ,OAAR,GAAkB,KAAK,eAAvB;AACA,gCAAQ,MAAR,GAAiB,KAAK,MAAtB,CAR2C,CAQN;AACrC,gCAAQ,KAAR,GAAgB,aAAa,KAA7B,CAT2C,CASN;;AAErC;AACA,4BAAI,cAAc,MAAM,eAAN,CAAsB,OAAtB,EAA+B,IAA/B,CAAlB;AACA,4BAAI,CAAC,WAAL,EAAkB;AACd;AACH;;AAED;AACA,6BAAK,IAAI,UAAT,IAAuB,WAAvB,EAAoC;AAChC,gCAAI,QAAQ,YAAY,UAAZ,CAAZ;;AAEA;AACA,gCAAI,aAAa,MAAM,KAAN,IAAe,UAAhC;AACA,gCAAI,QAAQ,OAAO,UAAP,CAAZ;;AAEA,gCAAI,CAAC,KAAL,EAAY;AACR,mDAAI,MAAJ,eAAsB,UAAtB,uCAAgE,UAAhE,UAAgF,KAAhF,EAAuF,OAAvF;AACA;AACH;;AAED,oCAAQ,MAAM,UAAN,CAAiB,KAAjB,CAAR;AACA,gCAAI,SAAS,IAAT,IAAiB,MAAM,OAAN,KAAkB,KAAvC,EAA8C;AAC1C;AACH;;AAED,oCAAQ,MAAR,GAAiB,MAAM,MAAvB,CAjBgC,CAiBA;;AAEhC,kCAAM,UAAN,CAAiB,OAAjB,EAA0B,KAA1B,EAAiC,OAAjC;AACH;;AAED,6BAAK,KAAL,CAAW,aAAX;AACH;AACJ;AACJ;AACD,iBAAK,KAAL,CAAW,SAAX,GAAuB,CAAC,IAAI,IAAJ,EAAD,GAAc,KAAK,KAAL,CAAW,SAAhD;;AAEA;AACA,gBAAI,cAAc,KAAK,aAAL,CAAmB,IAAnB,EAAyB,MAAzB,EAAiC,GAAjC,CAAqC;AAAA,uBAAK,OAAO,CAAP,CAAL;AAAA,aAArC,CAAlB;AACA,iBAAK,eAAL,CAAqB,IAArB,EAA2B,WAA3B,EAAwC,EAAE,kBAAF,EAAxC,EAAsD;AAAA,uBAAS,MAAM,SAAN,GAAkB,WAAlB,GAAgC,eAAzC;AAAA,aAAtD;AACA;AACA;AACH;;;sCAEqB,I,EAAM,M,EAAQ;AAChC,gBAAI,cAAc,EAAlB;AACA,iBAAK,IAAI,CAAT,IAAc,MAAd,EAAsB;AAClB,oBAAI,OAAO,CAAP,EAAU,cAAV,CAAyB,IAAzB,CAAJ,EAAoC;AAChC,gCAAY,IAAZ,CAAiB,CAAjB;AACH;AACJ;AACD,mBAAO,WAAP;AACH;;AAED;AACA;;;;wCACuB,I,EAAM,M,SAAsB,Q,EAAU;AAAA,gBAAtB,QAAsB,SAAtB,QAAsB;;AACzD;AACA,gBAAI,SAAS,EAAb;AACA,mBAAO,OAAP,CAAe,aAAK;AAChB,oBAAI,aAAa,SAAS,CAAT,CAAjB;AACA,uBAAO,UAAP,IAAqB,OAAO,UAAP,KAAsB,EAA3C;AACA,uBAAO,UAAP,EAAmB,IAAnB,CAAwB,CAAxB;AACH,aAJD;;AAMA,gBAAI,OAAO,IAAP,CAAY,MAAZ,EAAoB,MAApB,GAA6B,CAAjC,EAAoC;AAAA;AAChC,wBAAI,WAAW,EAAE,OAAO,IAAT,EAAf;AACA,yBAAK,SAAL,GAAiB,EAAjB;;AAFgC,+CAIvB,UAJuB;AAK5B,4BAAI,QAAQ,OAAO,UAAP,CAAZ;;AAEA,gCAAQ,GAAR,CAAY,MAAM,GAAN,CAAU,iBAAS;AAC3B,mCAAO,MAAM,OAAN,CAAc,IAAd,EAAoB,IAApB,CAAyB,sBAAc;AAC1C,oCAAI,UAAJ,EAAgB;AACZ,yCAAK,SAAL,CAAe,MAAM,IAArB,IAA6B,UAA7B;AACH;AACJ,6BAJM,CAAP;AAKH,yBANW,CAAZ,EAOC,IAPD,CAOM,YAAM;AACR,+CAAI,OAAJ,8BAAsC,UAAtC,oBAA8D,KAAK,GAAnE;;AAEA;AACA,mCAAO,UAAP,IAAqB,EAArB;AACA,gCAAI,OAAO,IAAP,CAAY,MAAZ,EAAoB,KAApB,CAA0B;AAAA,uCAAK,OAAO,CAAP,EAAU,MAAV,KAAqB,CAA1B;AAAA,6BAA1B,CAAJ,EAA4D;AACxD,yCAAS,IAAT,GAAgB,IAAhB;AACH;;AAED;AACA,oDAAa,WAAb,kBACmB,QADnB,gCAEI,wBAAa,iBAAb,CAA+B,EAAE,MAAM,KAAK,KAAL,CAAW,IAAX,EAAiB,CAAC,WAAD,CAAjB,CAAR,EAAyC,kBAAzC,EAA/B,CAFJ;AAIA,qCAAS,KAAT,GAAiB,IAAjB;AACA,iCAAK,SAAL,GAAiB,EAAjB,CAfQ,CAea;;AAErB,gCAAI,SAAS,IAAb,EAAmB;AACf,oDAAU,SAAV,CAAoB,KAAK,EAAzB,EADe,CACe;AACjC;AACJ,yBA3BD,EA4BC,KA5BD,CA4BO,UAAC,CAAD,EAAO;AACV,+CAAI,OAAJ,+BAAuC,UAAvC,oBAA+D,KAAK,GAApE,EAA2E,EAAE,KAA7E;AACH,yBA9BD;AAP4B;;AAIhC,yBAAK,IAAI,UAAT,IAAuB,MAAvB,EAA+B;AAAA,8BAAtB,UAAsB;AAkC9B;AAtC+B;AAuCnC,aAvCD,MAwCK;AACD;AACA,wCAAa,WAAb,kBACmB,QADnB,gCAEI,wBAAa,iBAAb,CAA+B,EAAE,MAAM,KAAK,KAAL,CAAW,IAAX,CAAR,EAA0B,UAAU,EAAE,OAAO,IAAT,EAAe,MAAM,IAArB,EAApC,EAA/B,CAFJ;AAIA,oCAAU,SAAV,CAAoB,KAAK,EAAzB,EANC,CAM6B;AACjC;AACJ;;AAED;;;;;;;;;yCAMyB,W,EAAa,a,EAAqC;AAAA,gBAAtB,aAAsB,uEAAN,IAAM;;AACvE,gBAAI,SAAS,EAAb;;AAEA,gBAAI,iBAAiB,IAAjB,IAAyB,eAAe,IAAxC,IAAgD,YAAY,MAAZ,IAAsB,IAA1E,EAAgF;AAC5E;AACA,oBAAI,CAAC,cAAc,KAAf,IAAwB,YAAY,MAAZ,CAAmB,QAA/C,EAAyD;AACrD,2BAAO,IAAP,CAAY;AACR,8BAAM,YAAY,MAAZ,CAAmB;AADjB,qBAAZ;AAGH;AACD;AALA,qBAMK,IAAI,CAAC,cAAc,KAAf,IAAwB,aAA5B,EAA2C;AAC5C,+BAAO,IAAP,CAAY;AACR,mCAAO,aADC;AAER,kCAAM,YAAY,MAAZ,CAAmB,aAAnB;AAFE,yBAAZ;AAIH;AACD;AANK,yBAOA,IAAI,OAAO,cAAc,KAArB,KAA+B,QAAnC,EAA6C;AAC9C,mCAAO,IAAP,CAAY;AACR,uCAAO,cAAc,KADb;AAER,sCAAM,YAAY,MAAZ,CAAmB,cAAc,KAAjC;AAFE,6BAAZ;AAIH;AACD;AANK,6BAOA,IAAI,MAAM,OAAN,CAAc,cAAc,KAA5B,CAAJ,EAAwC;AACzC,8CAAc,KAAd,CAAoB,OAApB,CAA4B,iBAAS;AACjC,wCAAI,YAAY,MAAZ,CAAmB,KAAnB,KAA6B,YAAY,MAAZ,CAAmB,KAAnB,EAA0B,QAA3D,EAAqE;AACjE,+CAAO,IAAP,CAAY;AACR,wDADQ;AAER,kDAAM,YAAY,MAAZ,CAAmB,KAAnB;AAFE,yCAAZ;AAIH;AACJ,iCAPD;AAQH;AACJ;;AAED,mBAAO,MAAP;AACH;;;mCAiGkB,I,EAAM;AACrB,2BAAK,aAAL,CAAmB,KAAK,EAAxB;AACA,gCAAU,SAAV,CAAoB,KAAK,EAAzB;;AAEA;AACA,gBAAI,KAAK,SAAT,EAAoB;AAChB,qBAAK,IAAI,CAAT,IAAc,KAAK,SAAnB,EAA8B;AAC1B,wBAAI,WAAW,KAAK,SAAL,CAAe,CAAf,EAAkB,QAAjC;AACA,wBAAI,QAAJ,EAAc;AACV,iCAAS,OAAT,CAAiB,aAAK;AAClB,gCAAI,UAAU,kBAAQ,QAAR,CAAiB,CAAjB,CAAd;AACA,gCAAI,OAAJ,EAAa;AACT,mDAAI,OAAJ,yBAAkC,CAAlC,kBAAgD,KAAK,GAArD;AACA,wCAAQ,OAAR;AACH;AACJ,yBAND;AAOH;AACJ;AACJ;AACJ;;;8BA8Ca,I,EAAM,I,EAAM;AACtB,gBAAI,OAAO,CACP,IADO,EAEP,KAFO,EAGP,SAHO,EAIP,QAJO,EAKP,YALO,EAMP,OANO,EAOP,OAPO,CAAX;AASA,gBAAI,MAAM,OAAN,CAAc,IAAd,CAAJ,EAAyB;AACrB,qBAAK,IAAL,gCAAa,IAAb;AACH;;AAED;AACA,gBAAI,cAAc,EAAlB;AACA,iBAAK,IAAI,IAAE,CAAX,EAAc,IAAI,KAAK,MAAvB,EAA+B,GAA/B,EAAoC;AAChC,oBAAM,MAAM,KAAK,CAAL,CAAZ;AACA,4BAAY,GAAZ,IAAmB,KAAK,GAAL,CAAnB;AACH;;AAED,mBAAO,WAAP;AACH;;;2CAwB0B,K,EAAO;AAC9B,gBAAI,OAAO,EAAX;AAAA,gBAAe,OAAO,EAAtB;;AAEA,kBAAM,MAAN,CAAa;AAAA,uBAAQ,KAAK,KAAL,CAAW,MAAnB;AAAA,aAAb,EAAwC,OAAxC,CAAgD,gBAAQ;AACpD;AACA,uBAAO,IAAP,CAAY,KAAK,KAAL,CAAW,MAAX,CAAkB,IAA9B,EAAoC,OAApC,CAA4C,iBAAS;AACjD,wBAAI,SAAS,KAAK,KAAL,CAAW,MAAX,CAAkB,IAAlB,CAAuB,KAAvB,CAAb;AACA,mDAAmB,IAAnB,EAAyB,KAAzB,EAAgC,OAAO,QAAvC,EAAiD,OAAO,KAAxD,EAA+D,OAAO,MAAtE,EAA8E,OAAO,IAArF;AACH,iBAHD;;AAKA;AACA,+BAAe,KAAK,KAAL,CAAW,MAAX,CAAkB,IAAjC,EAAuC,IAAvC;AACH,aATD;;AAWA,mBAAO,EAAE,UAAF,EAAQ,UAAR,EAAP;AACH;;;;;;kBApmBgB,I;;;AAwmBrB,KAAK,cAAL,GAAsB,EAAtB,C,CAA0B;;AAE1B;AACA,SAAS,cAAT,CAAyB,IAAzB,EAA+B,IAA/B,EAAqC;AACjC,SAAK,IAAI,KAAT,IAAkB,IAAlB,EAAwB;AACpB,YAAI,SAAS,KAAK,KAAL,CAAb;AACA,uCAAmB,IAAnB,EAAyB,KAAzB,EAAgC,OAAO,QAAvC,EAAiD,OAAO,KAAxD,EAA+D,OAAO,MAAtE,EAA8E,OAAO,IAArF;AACA,YAAI,OAAO,MAAX,EAAmB;AACf,iBAAK,KAAL,EAAY,MAAZ,GAAqB,KAAK,KAAL,EAAY,MAAZ,IAAsB,EAA3C;AACA,2BAAe,OAAO,MAAtB,EAA8B,KAAK,KAAL,EAAY,MAA1C,EAFe,CAEoC;AACtD;AACJ;AACJ;;;;;;;;;;;ACnoBD;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;;;;;IAEqB,W;AAEjB,+BAA6B;AAAA,YAAf,KAAe,QAAf,KAAe;AAAA,YAAR,IAAQ,QAAR,IAAQ;;AAAA;;AACzB,aAAK,KAAL,GAAa,KAAb;AACA,aAAK,IAAL,GAAY,IAAZ;AACA,aAAK,KAAL,GAAa,EAAb;AACA,aAAK,OAAL,GAAe,4BAAf;AACA,aAAK,cAAL,GAAsB,EAAtB;AACA,aAAK,aAAL,GAAqB,EAArB;AACA,aAAK,cAAL,GAAsB,IAAtB;AACA,aAAK,gBAAL,GAAwB,EAAxB;AACA,aAAK,aAAL,GAAqB,EAArB;;AAEA;AACA,aAAK,kBAAL,GAA0B,CAAC,aAAD,EAAgB,KAAK,KAAL,CAAW,EAA3B,EAA+B,IAA/B,CAAoC,GAApC,CAA1B;AACA,gCAAa,SAAb,CAAuB,KAAK,kBAA5B,EAAgD,IAAhD;AACH;;;;kCAES;AACN,iBAAK,WAAL,CAAiB;AAAA,uBAAQ,KAAK,OAAL,EAAR;AAAA,aAAjB;AACA,iBAAK,KAAL,GAAa,EAAb;AACA,iBAAK,OAAL,GAAe,IAAf;AACA,iBAAK,cAAL,GAAsB,EAAtB;AACA,iBAAK,aAAL,GAAqB,EAArB;AACA,iBAAK,KAAL,GAAa,IAAb;AACA,iBAAK,IAAL,GAAY,IAAZ;AACH;;;iCAEQ,I,EAAM;AACX,iBAAK,KAAL,CAAW,KAAK,GAAhB,IAAuB,IAAvB;AACA,iBAAK,OAAL,CAAa,OAAb,CAAqB,IAArB;AACH;;;gCAEO,G,EAAK;AACT,mBAAO,KAAK,KAAL,CAAW,GAAX,MAAoB,SAA3B;AACH;;;mCAEU,G,EAAK;AACZ,gBAAI,KAAK,OAAL,CAAa,GAAb,CAAJ,EAAuB;AACnB,oBAAI,OAAO,KAAK,KAAL,CAAW,GAAX,CAAX;AACA,qBAAK,OAAL,CAAa,UAAb,CAAwB,IAAxB;AACH;;AAED,mBAAO,KAAK,KAAL,CAAW,GAAX,CAAP;AACA,iBAAK,aAAL,CAAmB,GAAnB;AACH;;AAED;;;;mCACW,G,EAAK;AACZ,+BAAI,OAAJ,uBAAgC,GAAhC;;AAEA,gBAAI,OAAO,KAAK,KAAL,CAAW,GAAX,CAAX;;AAEA,gBAAI,QAAQ,IAAZ,EAAkB;AACd,qBAAK,OAAL;AACH;;AAED,iBAAK,UAAL,CAAgB,KAAK,GAArB;AACA,iBAAK,KAAL,CAAW,aAAX;AACH;;AAED;;;;oCACY,I,EAAM;AACd,iBAAK,IAAI,CAAT,IAAc,KAAK,KAAnB,EAA0B;AACtB,qBAAK,KAAK,KAAL,CAAW,CAAX,CAAL;AACH;AACJ;;AAED;;;;oCACY,M,EAAQ;AAChB,gBAAI,eAAe,EAAnB;AACA,iBAAK,IAAI,CAAT,IAAc,KAAK,KAAnB,EAA0B;AACtB,oBAAI,OAAO,KAAK,KAAL,CAAW,CAAX,CAAX;AACA,oBAAI,OAAO,IAAP,CAAJ,EAAkB;AACd,iCAAa,IAAb,CAAkB,CAAlB;AACH;AACJ;AACD,iBAAK,IAAI,IAAE,CAAX,EAAc,IAAI,aAAa,MAA/B,EAAuC,GAAvC,EAA4C;AACxC,oBAAI,MAAM,aAAa,CAAb,CAAV;AACA,qBAAK,UAAL,CAAgB,GAAhB;AACH;AACJ;;;6CAEoB;AACjB;AACA,iBAAK,cAAL,GAAsB,EAAtB;AACA,gBAAI,cAAc,KAAK,IAAL,CAAU,0BAAV,EAAlB;AACA,iBAAK,IAAI,IAAE,CAAX,EAAc,IAAI,YAAY,MAA9B,EAAsC,GAAtC,EAA2C;AACvC,oBAAM,SAAS,YAAY,CAAZ,CAAf;AACA,qBAAK,eAAL,CAAqB,MAArB;AACA,qBAAK,cAAL,CAAoB,OAAO,GAA3B,IAAkC,MAAlC;AACH;;AAED,iBAAK,gBAAL;AACH;;;2CAEmB;AAAA;;AAChB,iBAAK,WAAL,CAAiB,gBAAQ;AACrB,sBAAK,gBAAL,CAAsB,IAAtB;AACH,aAFD;;AAIA,iBAAK,qBAAL;AACA,iBAAK,gBAAL;AACA,iBAAK,IAAL,CAAU,iBAAV;AACA,iBAAK,qBAAL;AACA,iBAAK,kBAAL;AACH;;;2CAEmB;AAAA;;AAChB,gBAAI,KAAK,IAAL,CAAU,cAAV,KAA6B,CAAjC,EAAoC;AAChC;AACH;;AAED;AACA,iBAAK,WAAL,CAAiB;AAAA,uBAAQ,KAAK,WAAL,CAAiB,IAAjB,CAAR;AAAA,aAAjB;;AAEA,gBAAI,QAAQ,KAAZ;AACA,iBAAK,WAAL,CAAiB,gBAAQ;AACrB,oBAAI,OAAK,IAAL,CAAU,cAAV,KAA6B,CAAjC,EAAoC;AAChC,wBAAI,KAAK,OAAL,IAAgB,CAAC,KAAK,KAA1B,EAAiC;AAC7B,4BAAM,SAAS,OAAK,OAAL,CAAa,WAAb,CAAyB,IAAzB,CAAf;AACA,4BAAI,MAAJ,EAAY;AACR,mCAAO,WAAP,CAAmB,IAAnB;AACA,oCAAQ,IAAR;AACH;AACJ;AACJ,iBARD,MASK,IAAI,OAAK,IAAL,CAAU,cAAV,KAA6B,CAAC,CAAlC,EAAqC;AACtC,wBAAI,KAAK,OAAL,IAAgB,CAAC,KAAK,KAA1B,EAAiC;AAC7B,4BAAM,cAAc,OAAK,OAAL,CAAa,cAAb,CAA4B,IAA5B,CAApB;AACA,6BAAK,IAAI,IAAE,CAAX,EAAc,IAAI,YAAY,MAA9B,EAAsC,GAAtC,EAA2C;AACvC,wCAAY,CAAZ,EAAe,WAAf,CAA2B,IAA3B;AACA,oCAAQ,IAAR;AACH;AACJ;AACJ;AACJ,aAnBD;;AAqBA,gBAAI,CAAC,KAAL,EAAY;AACR,qBAAK,IAAL,CAAU,cAAV,GAA2B,CAA3B;AACH;AACJ;;;yCAEgB,I,EAAM;AACnB,iBAAK,OAAL,GAAe,KAAf;AACA,gBAAI,KAAK,UAAL,KAAoB,KAAK,IAAL,CAAU,SAAlC,EAA6C;AACzC,oBAAI,KAAK,cAAL,CAAoB,KAAK,MAAL,CAAY,GAAhC,CAAJ,EAA0C;AACtC,yBAAK,OAAL,GAAe,IAAf;AACH,iBAFD,MAGK;AACD;AACA,yBAAK,IAAI,GAAT,IAAgB,KAAK,cAArB,EAAqC;AACjC,4BAAI,eAAK,YAAL,CAAkB,KAAK,MAAvB,EAA+B,KAAK,cAAL,CAAoB,GAApB,CAA/B,CAAJ,EAA8D;AAC1D,iCAAK,OAAL,GAAe,IAAf;AACA;AACH;AACJ;AACJ;AACJ;AACJ;;AAED;;;;8CACuB;AACnB,iBAAK,WAAL,CAAiB;AAAA,uBAAQ,CAAC,KAAK,OAAd;AAAA,aAAjB;AACH;;;6CAEqB;AAClB,mBAAO,KAAK,gBAAZ;AACH;;;gDAEuB;AACpB,iBAAK,gBAAL,GAAwB,EAAxB;AACA,iBAAK,IAAI,CAAT,IAAc,KAAK,KAAnB,EAA0B;AACtB,oBAAI,OAAO,KAAK,KAAL,CAAW,CAAX,CAAX;AACA,oBAAI,KAAK,OAAL,IAAgB,KAAK,MAAzB,EAAiC;AAC7B,yBAAK,gBAAL,CAAsB,IAAtB,CAA2B,IAA3B;AACH;AACJ;AACD,mBAAO,KAAK,gBAAZ;AACH;;AAED;;;;yCACiB,M,EAAQ,M,EAAQ;AAC7B,gBAAI,eAAJ;;AAEA,gBAAI,OAAO,KAAX,EAAkB;AACd;AACA,yBAAS,KAAK,KAAL,CAAW,OAAX,CAAmB,KAAK,GAAL,CAAS,OAAO,CAAP,GAAW,OAAO,CAAlB,GAAsB,OAAO,CAAtC,IAA2C,KAAK,KAAL,CAAW,OAAX,CAAmB,MAAjF,CAAT;AACH,aAHD,MAIK;AACD;AACA;AACA,yBAAS,KAAK,KAAL,CAAW,OAAX,CAAmB,OAAO,EAAP,GAAY,KAAK,KAAL,CAAW,OAAX,CAAmB,MAAlD,CAAT;AACH;;AAED,mBAAO,MAAP;AACH;;;0CAEkB;AACf,mBAAO,KAAK,aAAZ;AACH;;;6CAEqB;AAClB,gBAAI,QAAQ,KAAK,gBAAjB;AACA,gBAAI,SAAS,EAAb;AACA,iBAAK,IAAI,IAAE,CAAX,EAAc,IAAI,MAAM,MAAxB,EAAgC,GAAhC,EAAqC;AACjC,oBAAI,OAAO,MAAM,CAAN,CAAX;AACA,uBAAO,IAAP,CAAY,KAAK,MAAjB,EAAyB,OAAzB,CAAiC;AAAA,2BAAK,OAAO,CAAP,IAAY,IAAjB;AAAA,iBAAjC;AACH;AACD,iBAAK,aAAL,GAAqB,OAAO,IAAP,CAAY,MAAZ,CAArB;AACA,mBAAO,KAAK,aAAZ;AACH;;;gDAEuB;AAAA;;AACpB,mBAAO,OAAO,IAAP,CAAY,KAAK,KAAjB,EAAwB,IAAxB,CAA6B;AAAA,uBAAK,OAAK,KAAL,CAAW,CAAX,EAAc,OAAd,IAAyB,CAAC,OAAK,KAAL,CAAW,CAAX,EAAc,KAA7C;AAAA,aAA7B,CAAP;AACH;;AAED;;;;wCACgB,M,EAAQ;AACpB,iBAAK,aAAL,CAAmB,KAAK,aAAL,CAAmB,MAAtC,IAAgD,MAAhD;AACH;;AAED;;;;gDACwB;AAAA;;AACpB,gBAAI,KAAK,aAAL,CAAmB,MAAnB,KAA8B,CAAlC,EAAqC;AACjC;AACH;;AAED;AACA,iBAAK,aAAL,CAAmB,IAAnB,CAAwB,UAAC,CAAD,EAAI,CAAJ,EAAU;AAC9B,oBAAI,SAAS,OAAK,IAAL,CAAU,MAAV,CAAiB,MAA9B;AACA,oBAAI,YAAY,cAAI,aAAJ,CAAkB,EAAE,CAApB,IAAyB,CAAzC;;AAEA,oBAAI,KAAK,cAAI,aAAJ,CAAkB,CAAlB,CAAT;AACA,mBAAG,CAAH,IAAQ,SAAR;AACA,mBAAG,CAAH,IAAQ,SAAR;;AAEA,oBAAI,KAAK,cAAI,aAAJ,CAAkB,CAAlB,CAAT;AACA,mBAAG,CAAH,IAAQ,SAAR;AACA,mBAAG,CAAH,IAAQ,SAAR;;AAEA,oBAAI,KAAK,KAAK,GAAL,CAAS,OAAO,CAAP,GAAW,GAAG,CAAvB,IAA4B,KAAK,GAAL,CAAS,OAAO,CAAP,GAAW,GAAG,CAAvB,CAArC;AACA,oBAAI,KAAK,KAAK,GAAL,CAAS,OAAO,CAAP,GAAW,GAAG,CAAvB,IAA4B,KAAK,GAAL,CAAS,OAAO,CAAP,GAAW,GAAG,CAAvB,CAArC;;AAEA,kBAAE,WAAF,GAAgB,EAAhB;AACA,kBAAE,WAAF,GAAgB,EAAhB;;AAEA,uBAAQ,KAAK,EAAL,GAAU,CAAC,CAAX,GAAgB,OAAO,EAAP,GAAY,CAAZ,GAAgB,CAAxC;AACH,aAnBD;AAoBA,iBAAK,aAAL,CAAmB,OAAnB,CAA2B;AAAA,uBAAU,OAAK,cAAL,CAAoB,MAApB,CAAV;AAAA,aAA3B;AACA,iBAAK,aAAL,GAAqB,EAArB;AACH;;AAED;;;;uCACe,M,EAAQ;AACnB;AACA,gBAAI,OAAO,CAAP,KAAa,KAAK,IAAL,CAAU,MAAV,CAAiB,IAAjB,CAAsB,CAAvC,EAA0C;AACtC;AACH;;AAED;AACA,iBAAK,IAAI,CAAT,IAAc,KAAK,KAAL,CAAW,OAAzB,EAAkC;AAC9B,oBAAI,SAAS,KAAK,KAAL,CAAW,OAAX,CAAmB,CAAnB,CAAb;AACA;AACA,oBAAI,CAAC,OAAO,qBAAR,IAAiC,CAAC,OAAO,YAAP,CAAoB,MAApB,EAA4B,KAAK,IAAL,CAAU,SAAtC,CAAtC,EAAwF;AACpF;AACH;;AAED,oBAAI,MAAM,eAAK,aAAL,CAAmB,MAAnB,EAA2B,MAA3B,EAAmC,KAAK,IAAL,CAAU,SAA7C,CAAV;AACA,oBAAI,OAAO,CAAC,KAAK,OAAL,CAAa,GAAb,CAAZ,EAA+B;AAC3B,uCAAI,OAAJ,iBAA0B,GAA1B,qCAA6D,OAAO,WAApE;AACA,wBAAI,OAAO,mBAAS;AAChB,sCADgB;AAEhB,sCAFgB;AAGhB,gCAAQ,KAAK,gBAAL,CAAsB,MAAtB,EAA8B,MAA9B,CAHQ;AAIhB,oCAAY,KAAK,IAAL,CAAU,QAAV,CAAmB,OAAO,CAA1B,CAJI;AAKhB,8BAAM,KAAK;AALK,qBAAT,CAAX;;AAQA,yBAAK,QAAL,CAAc,IAAd;AACA,yBAAK,SAAL,CAAe,IAAf;AACH;AACJ;AACJ;;AAED;;;;kCACU,I,EAAM,O,EAAS;AACrB,iBAAK,cAAL,CAAoB,KAAK,GAAzB;AACA,iBAAK,gBAAL,CAAsB,IAAtB;AACA,iBAAK,KAAL,CAAW,KAAK,KAAL,CAAW,UAAtB,EAAkC,OAAlC;AACH;;AAED;;;;wDAC6C;AAAA,gBAAlB,IAAkB,SAAlB,IAAkB;AAAA,gBAAZ,QAAY,SAAZ,QAAY;;AACzC;AACA,gBAAI,KAAK,KAAL,CAAW,KAAK,GAAhB,KAAwB,IAA5B,EAAkC;AAC9B,mCAAI,OAAJ,sBAA+B,KAAK,GAApC;AACA,+BAAK,UAAL,CAAgB,IAAhB;AACA,qBAAK,gBAAL;AACH;AACD;AALA,iBAMK,IAAI,KAAK,UAAL,KAAoB,KAAK,KAAL,CAAW,UAAnC,EAA+C;AAChD,uCAAI,OAAJ,EAAa,oBAAkB,KAAK,GAAvB,2FACW,KAAK,UADhB,kBACuC,KAAK,KAAL,CAAW,UADlD,CAAb;AAEA,mCAAK,UAAL,CAAgB,IAAhB;AACA,yBAAK,gBAAL;AACH,iBALI,MAMA;AACD;AACA,wBAAI,KAAK,KAAL,CAAW,KAAK,GAAhB,CAAJ,EAA0B;AACtB;AACA,4BAAI,KAAK,EAAL,GAAU,KAAK,KAAL,CAAW,KAAK,GAAhB,EAAqB,EAAnC,EAAuC;AACnC,+CAAI,OAAJ,sBAA+B,KAAK,GAApC,gBAAkD,KAAK,EAAvD;AACA,2CAAK,UAAL,CAAgB,IAAhB;AACA;AACH;;AAED,+BAAO,KAAK,KAAL,CAAW,KAAK,GAAhB,EAAqB,KAArB,CAA2B,IAA3B,CAAP;AACH;;AAED,wBAAI,SAAS,IAAb,EAAmB;AACf,6BAAK,KAAL,GAAa,IAAb;AACH;;AAED,yBAAK,WAAL,CAAiB,KAAK,KAAL,CAAW,MAA5B,EAAoC,QAApC;AACA,yBAAK,gBAAL;AACA,yBAAK,KAAL,CAAW,aAAX;AACH;;AAED,gBAAI,SAAS,IAAb,EAAmB;AACf,qBAAK,aAAL,CAAmB,KAAK,GAAxB;AACH;AACJ;;AAED;;;;uCACe,I,EAAM;AACjB,+BAAI,OAAJ,2BAAoC,KAAK,GAAzC,QAAiD,KAAK,KAAtD;AACA,iBAAK,UAAL,CAAgB,KAAK,GAArB;AACA,2BAAK,UAAL,CAAgB,IAAhB;AACH;;AAED;;;;uCACe,G,EAAK;AAChB,iBAAK,cAAL,GAAsB,KAAK,cAAL,IAAuB,EAA7C;AACA,iBAAK,cAAL,CAAoB,GAApB,IAA2B,IAA3B;AACA,+BAAI,OAAJ,0BAAmC,GAAnC,UAA2C,OAAO,IAAP,CAAY,KAAK,cAAjB,EAAiC,MAA5E;AACH;;;sCAEa,G,EAAK;AACf;AACA,gBAAI,KAAK,cAAT,EAAyB;AACrB,mCAAI,OAAJ,yBAAkC,GAAlC,UAA0C,OAAO,IAAP,CAAY,KAAK,cAAjB,EAAiC,MAA3E;AACA,uBAAO,KAAK,cAAL,CAAoB,GAApB,CAAP;AACA,qBAAK,eAAL;AACH;AACJ;;AAED;;;;0CACkB;AACd,gBAAI,CAAC,KAAK,cAAN,IAAwB,OAAO,IAAP,CAAY,KAAK,cAAjB,EAAiC,MAAjC,KAA4C,CAAxE,EAA2E;AACvE,qBAAK,cAAL,GAAsB,IAAtB;AACA,qBAAK,KAAL,CAAW,oBAAX;AACH;AACJ;;AAED;;;;qCACa,I,EAAM,M,EAAQ;AACvB,gBAAI,OAAO,EAAX;AACA,iBAAK,IAAI,CAAT,IAAc,KAAK,KAAnB,EAA0B;AACtB,oBAAI,KAAK,KAAL,CAAW,CAAX,EAAc,KAAd,CAAoB,IAApB,KAA6B,IAA7B,KAAsC,OAAO,MAAP,KAAkB,UAAlB,IAAgC,OAAO,KAAK,KAAL,CAAW,CAAX,CAAP,MAA0B,IAAhG,CAAJ,EAA2G;AACvG,yBAAK,IAAL,CAAU,KAAK,KAAL,CAAW,CAAX,EAAc,KAAd,CAAoB,IAApB,CAAV;AACH;AACJ;AACD,mBAAO,IAAP;AACH;;AAED;;;;oCACY,I,EAAM,M,EAAQ;AACtB,gBAAI,MAAM,CAAV;AACA,iBAAK,IAAI,CAAT,IAAc,KAAK,KAAnB,EAA0B;AACtB,oBAAI,KAAK,KAAL,CAAW,CAAX,EAAc,KAAd,CAAoB,IAApB,KAA6B,IAA7B,KAAsC,OAAO,MAAP,KAAkB,UAAlB,IAAgC,OAAO,KAAK,KAAL,CAAW,CAAX,CAAP,MAA0B,IAAhG,CAAJ,EAA2G;AACvG,2BAAO,KAAK,KAAL,CAAW,CAAX,EAAc,KAAd,CAAoB,IAApB,CAAP;AACH;AACJ;AACD,mBAAO,GAAP;AACH;;AAED;;;;wCACgB,I,EAAM,M,EAAQ;AAC1B,mBAAO,KAAK,WAAL,CAAiB,IAAjB,EAAuB,MAAvB,IAAiC,OAAO,IAAP,CAAY,KAAK,KAAjB,EAAwB,MAAhE;AACH;;;;;;kBAtYgB,W;;;;;;;;;;;ACNrB;;;;AACA;;;;;;;;;;IAEqB,W;AAEjB,2BAAc;AAAA;;AACV,aAAK,MAAL,GAAc,EAAd;AACA,aAAK,0BAAL,GAAkC,CAAlC,CAFU,CAE2B;AACrC,aAAK,wBAAL,GAAgC,CAAhC;AACH;;;;oCAEW,K,EAAO,M,EAAQ;AACvB,mBACI,KAAK,MAAL,CAAY,MAAM,GAAlB,KACA,KAAK,MAAL,CAAY,MAAM,GAAlB,EAAuB,OADvB,IAEA,KAAK,MAAL,CAAY,MAAM,GAAlB,EAAuB,OAAvB,CAA+B,OAAO,IAAtC,CAHJ;AAIH;;;gCAEO,I,EAAM;AACV;AACA,gBAAI,MAAM,KAAK,MAAL,CAAY,GAAtB;AACA,gBAAI,QAAQ,KAAK,MAAL,CAAY,GAAZ,CAAZ;AACA,gBAAI,CAAC,KAAL,EAAY;AACR,wBAAQ,KAAK,MAAL,CAAY,GAAZ,IAAmB,EAAE,aAAa,CAAf,EAA3B;AACH;;AAED,gBAAI,CAAC,MAAM,OAAX,EAAoB;AAChB,sBAAM,OAAN,GAAgB,EAAhB;AACH;;AAED,gBAAI,CAAC,MAAM,OAAN,CAAc,KAAK,MAAL,CAAY,IAA1B,CAAL,EAAsC;AAClC,sBAAM,OAAN,CAAc,KAAK,MAAL,CAAY,IAA1B,IAAkC,EAAlC;AACH;AACD,kBAAM,OAAN,CAAc,KAAK,MAAL,CAAY,IAA1B,EAAgC,KAAK,UAArC,IAAmD,IAAnD;;AAEA;AACA,iBAAK,IAAI,IAAI,KAAK,MAAL,CAAY,CAAZ,GAAgB,CAA7B,EAAgC,KAAK,CAArC,EAAwC,GAAxC,EAA6C;AACzC,oBAAI,KAAK,eAAK,gBAAL,CAAsB,KAAK,MAA3B,EAAmC,CAAnC,CAAT;AACA,oBAAI,CAAC,KAAK,MAAL,CAAY,GAAG,GAAf,CAAL,EAA0B;AACtB,yBAAK,MAAL,CAAY,GAAG,GAAf,IAAsB,EAAE,aAAa,CAAf,EAAtB;AACH;AACD,qBAAK,MAAL,CAAY,GAAG,GAAf,EAAoB,WAApB;AACH;AACJ;;;mCAEU,I,EAAM;AACb;AACA,gBAAI,eAAe,KAAK,WAAL,CAAiB,KAAK,MAAtB,EAA8B,KAAK,MAAnC,CAAnB;AACA,gBAAI,MAAM,KAAK,MAAL,CAAY,GAAtB;;AAEA,gBAAI,YAAJ,EAAkB;AACd,uBAAO,aAAa,KAAK,UAAlB,CAAP;AACA,oBAAI,OAAO,IAAP,CAAY,YAAZ,EAA0B,MAA1B,KAAqC,CAAzC,EAA4C;AACxC;AACA,2BAAO,KAAK,MAAL,CAAY,GAAZ,EAAiB,OAAjB,CAAyB,KAAK,MAAL,CAAY,IAArC,CAAP;AACA,wBAAI,OAAO,IAAP,CAAY,KAAK,MAAL,CAAY,GAAZ,EAAiB,OAA7B,EAAsC,MAAtC,KAAiD,CAArD,EAAwD;AACpD,+BAAO,KAAK,MAAL,CAAY,GAAZ,EAAiB,OAAxB;;AAEA,4BAAI,KAAK,MAAL,CAAY,GAAZ,EAAiB,WAAjB,KAAiC,CAArC,EAAwC;AACpC;AACA,mCAAO,KAAK,MAAL,CAAY,GAAZ,CAAP;AACH;AACJ;AACJ;AACJ;;AAED;AACA,iBAAK,IAAI,IAAI,KAAK,MAAL,CAAY,CAAZ,GAAgB,CAA7B,EAAgC,KAAK,CAArC,EAAwC,GAAxC,EAA6C;AACzC,oBAAI,OAAO,eAAK,gBAAL,CAAsB,KAAK,MAA3B,EAAmC,CAAnC,CAAX;AACA,oBAAI,KAAK,MAAL,CAAY,KAAK,GAAjB,KAAyB,KAAK,MAAL,CAAY,KAAK,GAAjB,EAAsB,WAAtB,GAAoC,CAAjE,EAAoE;AAChE,yBAAK,MAAL,CAAY,KAAK,GAAjB,EAAsB,WAAtB;AACA,wBAAI,KAAK,MAAL,CAAY,KAAK,GAAjB,EAAsB,WAAtB,KAAsC,CAAtC,IAA2C,CAAC,KAAK,MAAL,CAAY,KAAK,GAAjB,EAAsB,OAAtE,EAA+E;AAC3E,+BAAO,KAAK,MAAL,CAAY,KAAK,GAAjB,CAAP;AACH;AACJ;AACJ;AACJ;;;0CAEuD;AAAA,gBAAzC,MAAyC,QAAzC,MAAyC;AAAA,gBAAjC,UAAiC,QAAjC,UAAiC;AAAA,gBAArB,MAAqB,QAArB,MAAqB;AAAA,gBAAX,KAAW,uEAAH,CAAG;;AACpD,gBAAI,QAAQ,KAAK,wBAAjB,EAA2C;AACvC;AACH;;AAED;AACA,gBAAI,aAAa,OAAO,cAAxB,EAAwC;AACpC,oBAAI,eAAe,KAAK,WAAL,CAAiB,MAAjB,EAAyB,MAAzB,CAAnB;AACA,oBAAI,YAAJ,EAAkB;AACd,yBAAK,IAAI,IAAI,aAAa,CAA1B,EAA6B,KAAK,OAAO,cAAzC,EAAyD,GAAzD,EAA8D;AAC1D,4BAAI,aAAa,CAAb,KAAmB,aAAa,CAAb,EAAgB,MAAvC,EAA+C;AAC3C,mCAAO,aAAa,CAAb,CAAP;AACH;AACJ;AACJ;AACD,6BAAa,OAAO,cAApB;AACH;;AAED;AACA;AACA,gBAAI,SAAS,eAAK,gBAAL,CAAsB,MAAtB,EAA8B,OAAO,CAAP,GAAW,CAAzC,CAAb;AACA,gBAAI,eAAe,KAAK,WAAL,CAAiB,MAAjB,EAAyB,MAAzB,CAAnB;AACA,gBAAI,gBAAgB,aAAa,UAAb,CAAhB,IAA4C,aAAa,UAAb,EAAyB,MAAzE,EAAiF;AAC7E,uBAAO,aAAa,UAAb,CAAP;AACH;AACD;AACA,gBAAI,OAAO,CAAP,GAAW,CAAf,EAAkB;AACd,uBAAO,KAAK,WAAL,CAAiB,EAAE,QAAQ,MAAV,EAAkB,sBAAlB,EAA8B,cAA9B,EAAjB,EAAyD,QAAQ,CAAjE,CAAP;AACH;AACJ;;;8CAE0D;AAAA,gBAAzC,MAAyC,SAAzC,MAAyC;AAAA,gBAAjC,UAAiC,SAAjC,UAAiC;AAAA,gBAArB,MAAqB,SAArB,MAAqB;AAAA,gBAAX,KAAW,uEAAH,CAAG;;AACvD,gBAAI,cAAc,EAAlB;;AAEA;AACA,gBAAI,cAAc,OAAO,cAAzB,EAAyC;AACrC,oBAAI,eAAe,KAAK,WAAL,CAAiB,MAAjB,EAAyB,MAAzB,CAAnB;AACA,oBAAI,YAAJ,EAAkB;AACd,wBAAI,kBAAkB,KAAK,GAAL,CAAS,cAAI,qBAAb,EAAoC,aAAa,KAAK,0BAAtD,CAAtB;AACA,yBAAK,IAAI,IAAI,aAAa,CAA1B,EAA6B,KAAK,eAAlC,EAAmD,GAAnD,EAAwD;AACpD,4BAAI,aAAa,CAAb,KAAmB,aAAa,CAAb,EAAgB,MAAvC,EAA+C;AAC3C,wCAAY,IAAZ,CAAiB,aAAa,CAAb,CAAjB;AACA,mCAAO,WAAP;AACH;AACJ;AACJ;AACD,uBAAO,WAAP;AACH;;AAED;AACA,gBAAI,KAAK,MAAL,CAAY,OAAO,GAAnB,KAA2B,KAAK,MAAL,CAAY,OAAO,GAAnB,EAAwB,WAAxB,GAAsC,CAArE,EAAwE;AACpE;AACA,oBAAM,WAAW,eAAK,qBAAL,CAA2B,MAA3B,CAAjB;AACA,qBAAK,IAAI,IAAE,CAAX,EAAc,IAAI,SAAS,MAA3B,EAAmC,GAAnC,EAAwC;AACpC,wBAAM,QAAQ,SAAS,CAAT,CAAd;AACA,wBAAI,cAAc,KAAK,WAAL,CAAiB,KAAjB,EAAwB,MAAxB,CAAlB;AACA,wBAAI,eAAe,YAAY,UAAZ,CAAf,IAA0C,YAAY,UAAZ,EAAwB,MAAtE,EAA8E;AAC1E,oCAAY,IAAZ,CAAiB,YAAY,UAAZ,CAAjB;AACH;AACD;AAHA,yBAIK,IAAI,SAAS,KAAK,0BAAd,IAA4C,MAAM,CAAN,IAAW,OAAO,cAAlE,EAAkF;AACnF,wCAAY,IAAZ,uCAAoB,KAAK,cAAL,CAAoB,EAAE,QAAQ,KAAV,EAAiB,cAAjB,EAAyB,sBAAzB,EAApB,EAA2D,QAAQ,CAAnE,CAApB;AACH;AACJ;AACJ;;AAED,mBAAO,WAAP;AACH;;;;;;kBA9IgB,W;;;;;;;;kBCDG,Q;AAFxB;AACA;AACe,SAAS,QAAT,CAAmB,IAAnB,EAAyB,IAAzB,EAA+B;AAC1C,QAAI,OAAJ;AACA,WAAO,YAAW;AACd,YAAI,UAAU,IAAd;AAAA,YAAoB,OAAO,SAA3B;AACA,YAAI,QAAQ,SAAR,KAAQ,GAAW;AACnB,sBAAU,IAAV;AACA,iBAAK,KAAL,CAAW,OAAX,EAAoB,IAApB;AACH,SAHD;AAIA,qBAAa,OAAb;AACA,kBAAU,WAAW,KAAX,EAAkB,IAAlB,CAAV;AACH,KARD;AASH;;;;;;;;QCMe,kB,GAAA,kB;AAnBhB,IAAI,sBAAJ;;kBAEe,gBAAgB;AAC3B;AACA,gCAA4B,KAFD;;AAI3B;AACA,8BAA0B,KALC;;AAO3B;AACA,4BAAwB,KARG;;AAU3B;AACA,mCAA+B,KAXJ;;AAa3B;AACA,iBAAa;AAdc,C;AAiBxB,SAAS,kBAAT,CAA6B,QAA7B,EAAuC;AAC1C,WAAO,MAAP,CAAc,aAAd,EAA6B,QAA7B;AACH;;;;;;;;;;;;;;;ICnBY,oB,WAAA,oB;;;AACT,kCAAY,UAAZ,EAAwB;AAAA;;AAAA;;AAEpB,cAAK,IAAL,GAAe,sBAAf;AACA,cAAK,OAAL,GAAe,YAAY,UAAZ,GAAyB,kCAAxC;AAHoB;AAIvB;;;EALqC,K;;;;;;;;;;ACmB1C;;;;AACA;;;;AAUA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;;;AAtCA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,IAAM,OAAO;AACT,cADS,sBACG,CADH,EACM,CADN,EACS,CADT,EACY;AACjB,YAAI,MAAM,IAAI,YAAJ,CAAiB,CAAjB,CAAV;AACA,YAAI,CAAJ,IAAS,CAAT;AACA,YAAI,CAAJ,IAAS,CAAT;AACA,YAAI,CAAJ,IAAS,CAAT;AACA,eAAO,GAAP;AACH;AAPQ,CAAb;;AAWA;;AAKA,IAAM,OAAO;AACT,2CADS;AAET;AAFS,CAAb;;AAMA;;AAUA,IAAM,OAAO;AACT,gCADS;AAET,kCAFS;AAGT,0BAHS;AAIT,sCAJS;AAKT,4BALS;AAMT,gCANS;AAOT;AAPS,CAAb;;QAWQ,I,GAAA,I;QAAM,I,GAAA,I;QAAM,I,GAAA,I;;;;;;;;kBClDI,U;AADxB;AACe,SAAS,UAAT,CAAqB,MAArB,EAA6B;AACxC,QAAI,OAAO,CAAX;AAAA,QAAc,CAAd;AAAA,QAAiB,GAAjB;AAAA,QAAsB,GAAtB;;AAEA,QAAI,OAAO,MAAP,KAAkB,CAAtB,EAAyB;AACrB,eAAO,IAAP;AACH;;AAED,SAAK,IAAI,CAAJ,EAAO,MAAM,OAAO,MAAzB,EAAiC,IAAI,GAArC,EAA0C,GAA1C,EAA+C;AAC3C,cAAQ,OAAO,UAAP,CAAkB,CAAlB,CAAR;AACA,eAAS,CAAC,QAAQ,CAAT,IAAc,IAAf,GAAuB,GAA/B;AACA,gBAAQ,CAAR,CAH2C,CAGhC;AACd;AACD,WAAO,IAAP;AACH;;;;;;;;;;;kBCSuB,G;;AAvBxB;;;;AACA;;;;AACA;;;;;;;;AAEA,IAAM,SAAS;AACX,YAAQ,CAAC,CADE;AAEX,WAAO,CAFI;AAGX,UAAM,CAHK;AAIX,UAAM,CAJK;AAKX,WAAO,CALI;AAMX,WAAO;AANI,CAAf;;AASA,IAAM,UAAU,EAAhB;AACA,IAAI,cAAc,EAAlB;;AAEA,SAAS,cAAT,CAAyB,KAAzB,EAAgC;AAC5B,QAAI,iBAAO,OAAX,EAAoB;AAChB,gBAAQ,KAAR,IAAiB,QAAQ,KAAR,KAAkB,CAAC,QAAQ,KAAR,IAAiB,QAAQ,KAAR,CAAjB,GAAkC,QAAQ,GAA3C,EAAgD,IAAhD,CAAqD,OAArD,CAAnC;AACA,eAAO,QAAQ,KAAR,CAAP;AACH;AACJ;;AAEc,SAAS,GAAT,CAAc,IAAd,EAA4B;AACvC,QAAI,QAAS,QAAO,IAAP,yCAAO,IAAP,OAAgB,QAAjB,GAA6B,KAAK,KAAlC,GAA0C,IAAtD;AACA,QAAI,OAAO,KAAP,KAAiB,OAAO,IAAI,KAAX,CAArB,EAAwC;AAAA,0CAFN,GAEM;AAFN,eAEM;AAAA;;AACpC,YAAI,iBAAO,SAAX,EAAsB;AAClB;AACA,oCAAa,WAAb,iCAAyB,WAAzB,EAAsC,IAAtC,SAA+C,GAA/C;AACH,SAHD,MAIK;AACD;AACA,gBAAI,QAAO,IAAP,yCAAO,IAAP,OAAgB,QAAhB,IAA4B,KAAK,IAAL,KAAc,IAA9C,EAAoD;AAChD,oBAAI,YAAY,KAAK,SAAL,CAAe,GAAf,CAAZ,CAAJ,EAAsC;AAClC;AACH;AACD,4BAAY,KAAK,SAAL,CAAe,GAAf,CAAZ,IAAmC,IAAnC;AACH;;AAED;AACA,gBAAI,SAAS,eAAe,KAAf,CAAb;AACA,gBAAI,IAAI,MAAJ,GAAa,CAAjB,EAAoB;AAChB,iFAA8B,KAA9B,WAAyC,IAAI,CAAJ,CAAzC,4BAAsD,IAAI,KAAJ,CAAU,CAAV,CAAtD;AACH,aAFD,MAGK;AACD,+DAA8B,KAA9B,WAAyC,IAAI,CAAJ,CAAzC;AACH;AACJ;AACJ;AACJ;;AAED,IAAI,KAAJ,GAAY,MAAZ;AACA,IAAI,OAAJ,GAAc,IAAd;;AAEA,IAAI,QAAJ,GAAe,UAAU,KAAV,EAAiB;AAC5B,QAAI,KAAJ,GAAY,KAAZ;;AAEA,QAAI,iBAAO,OAAP,IAAkB,MAAM,OAAN,CAAc,IAAI,OAAlB,CAAtB,EAAkD;AAC9C,gCAAa,WAAb,CAAyB,IAAI,OAA7B,EAAsC,mBAAtC,EAA2D,KAA3D;AACH;AACJ,CAND;;AAQA,IAAI,iBAAO,OAAX,EAAoB;AAChB,QAAI,UAAJ,GAAiB,UAAU,OAAV,EAAmB;AAChC,YAAI,OAAJ,GAAc,OAAd;AACH,KAFD;;AAIA,QAAI,KAAJ,GAAY,YAAY;AACpB,sBAAc,EAAd;AACH,KAFD;AAGH;;AAED,wBAAa,SAAb,CAAuB,WAAvB,EAAoC,GAApC,E,CAA4D;AAC5D,wBAAa,SAAb,CAAuB,mBAAvB,EAA4C,IAAI,QAAhD,E,CAA4D;;;;;;;;;qjBCzE5D;;;AACA;;;;AACA;;AACA;;;;;;IAEqB,Y;AAEjB,4BAAc;AAAA;;AACV,aAAK,MAAL,GAAc,IAAd;AACA,aAAK,EAAL,GAAU,IAAV;AACA,aAAK,iBAAL,GAAyB,IAAzB;AACA,aAAK,kBAAL,GAA0B,IAA1B;AACA,aAAK,gBAAL,GAAwB,IAAxB;AACA,aAAK,aAAL,GAAqB,IAArB;AACH;;;;kCAEU,M,EAAQ,E,EAAI;AACnB,iBAAK,MAAL,GAAc,MAAd;AACA,iBAAK,EAAL,GAAU,EAAV;AACH;;AAED;AACA;;;;qCACiC;AAAA;;AAAA,2FAAJ,EAAI;AAAA,gBAAnB,UAAmB,QAAnB,UAAmB;;AAC7B,gBAAI,KAAK,gBAAL,IAAyB,IAA7B,EAAmC;AAC/B,uBAAO,KAAK,gBAAL,CAAsB,OAA7B,CAD+B,CACO;AACzC;;AAED;AACA,iBAAK,gBAAL,GAAwB,EAAE,sBAAF,EAAxB;AACA,iBAAK,gBAAL,CAAsB,OAAtB,GAAgC,IAAI,OAAJ,CAAY,UAAC,OAAD,EAAU,MAAV,EAAqB;AAC7D,sBAAK,gBAAL,CAAsB,OAAtB,GAAgC,OAAhC;AACA,sBAAK,gBAAL,CAAsB,MAAtB,GAA+B,MAA/B;AACH,aAH+B,CAAhC;AAIA,mBAAO,KAAK,gBAAL,CAAsB,OAA7B;AACH;;AAED;;;;6CACsB;AAClB,gBAAI,KAAK,gBAAL,IAAyB,IAA7B,EAAmC;AAC/B;AACA;AACA;AACA;;AAEA;AACA,oBAAI,IAAI,KAAK,MAAL,CAAY,KAApB;AACA,oBAAI,IAAI,KAAK,MAAL,CAAY,MAApB;AACA,oBAAI,SAAS,IAAI,UAAJ,CAAe,IAAI,CAAJ,GAAQ,CAAvB,CAAb;AACA,qBAAK,EAAL,CAAQ,UAAR,CAAmB,CAAnB,EAAsB,CAAtB,EAAyB,CAAzB,EAA4B,CAA5B,EAA+B,KAAK,EAAL,CAAQ,IAAvC,EAA6C,KAAK,EAAL,CAAQ,aAArD,EAAoE,MAApE;;AAEA;AACA,oBAAI,aAAa,KAAK,gBAAL,CAAsB,UAAvC;AACA,oBAAI,cAAc,eAAe,aAAjC,EAAgD;AAC5C,iCAAa,0BAAY,UAAZ,CAAuB,UAAvB,EAAmC,KAAnC,CAAyC,CAAzC,EAA4C,CAA5C,EAA+C,GAA/C,CAAmD;AAAA,+BAAK,IAAI,GAAT;AAAA,qBAAnD,CAAb;AACH,iBAFD,MAGK;AACD,iCAAa,IAAb,CADC,CACkB;AACtB;;AAED;AACA,oBAAI,OAAO,IAAI,iBAAJ,CAAsB,IAAI,CAAJ,GAAQ,CAA9B,CAAX,CAtB+B,CAsBiB;AAChD,qBAAK,IAAI,IAAE,CAAX,EAAc,IAAI,CAAlB,EAAqB,GAArB,EAA0B;AACtB,yBAAK,IAAI,IAAE,CAAX,EAAc,IAAI,CAAlB,EAAqB,GAArB,EAA0B;AACtB,4BAAI,IAAI,CAAC,CAAC,IAAI,CAAJ,GAAQ,CAAT,IAAc,CAAd,GAAkB,CAAnB,IAAwB,CAAhC,CADsB,CACkB;AACxC,4BAAI,IAAI,CAAC,IAAI,CAAJ,GAAQ,CAAT,IAAc,CAAtB,CAFsB,CAEkB;AACxC,4BAAI,IAAI,OAAO,IAAI,CAAX,CAAR,CAHsB,CAGkB;AACxC,6BAAK,IAAI,CAAT,IAAc,OAAO,IAAI,CAAX,IAAgB,GAAhB,GAAsB,CAApC;AACA,6BAAK,IAAI,CAAT,IAAc,OAAO,IAAI,CAAX,IAAgB,GAAhB,GAAsB,CAApC;AACA,6BAAK,IAAI,CAAT,IAAc,OAAO,IAAI,CAAX,IAAgB,GAAhB,GAAsB,CAApC;AACA,6BAAK,IAAI,CAAT,IAAc,CAAd;;AAEA,4BAAI,UAAJ,EAAgB;AACZ,iCAAK,GAAL;AACA,iCAAK,IAAI,CAAT,IAAe,KAAK,IAAI,CAAT,IAAc,CAAf,GAAqB,WAAW,CAAX,KAAiB,IAAI,CAArB,CAAnC;AACA,iCAAK,IAAI,CAAT,IAAe,KAAK,IAAI,CAAT,IAAc,CAAf,GAAqB,WAAW,CAAX,KAAiB,IAAI,CAArB,CAAnC;AACA,iCAAK,IAAI,CAAT,IAAe,KAAK,IAAI,CAAT,IAAc,CAAf,GAAqB,WAAW,CAAX,KAAiB,IAAI,CAArB,CAAnC;AACA,iCAAK,IAAI,CAAT,IAAc,GAAd;AACH;AACJ;AACJ;;AAED;AACA,qBAAK,iBAAL,GAAyB,KAAK,iBAAL,IAA0B,SAAS,aAAT,CAAuB,QAAvB,CAAnD;AACA,oBAAI,SAAS,KAAK,iBAAlB;AACA,uBAAO,KAAP,GAAe,CAAf;AACA,uBAAO,MAAP,GAAgB,CAAhB;;AAEA,qBAAK,kBAAL,GAA0B,KAAK,kBAAL,IAA2B,OAAO,UAAP,CAAkB,IAAlB,CAArD;AACA,oBAAI,MAAM,KAAK,kBAAf;AACA,oBAAI,QAAQ,IAAI,SAAJ,CAAc,IAAd,EAAoB,CAApB,EAAuB,CAAvB,CAAZ;AACA,oBAAI,YAAJ,CAAiB,KAAjB,EAAwB,CAAxB,EAA2B,CAA3B;;AAEA;AACA;AACA;AACA,oBAAM,MAAM,OAAO,SAAP,CAAiB,WAAjB,CAAZ;AACA,oBAAM,OAAO,KAAK,IAAI,KAAJ,CAAU,EAAV,CAAL,CAAb;AACA,oBAAM,SAAS,IAAI,UAAJ,CAAe,KAAK,MAApB,CAAf;AACA,qBAAK,IAAI,IAAI,CAAb,EAAgB,IAAI,KAAK,MAAzB,EAAiC,EAAE,CAAnC,EAAsC;AAClC,2BAAO,CAAP,IAAY,KAAK,UAAL,CAAgB,CAAhB,CAAZ;AACH;AACD,oBAAM,OAAO,IAAI,IAAJ,CAAS,CAAC,MAAD,CAAT,EAAmB,EAAE,MAAM,WAAR,EAAnB,CAAb;;AAEA;AACA,qBAAK,gBAAL,CAAsB,OAAtB,CAA8B,EAAE,QAAF,EAAO,UAAP,EAAa,MAAM,KAAnB,EAA9B;AACA,qBAAK,gBAAL,GAAwB,IAAxB;AACH;AACJ;;AAED;;;;4CACqB;AAAA;;AACjB,gBAAI,OAAO,OAAO,aAAd,KAAgC,UAAhC,IAA8C,CAAC,KAAK,MAApD,IAA8D,OAAO,KAAK,MAAL,CAAY,aAAnB,KAAqC,UAAvG,EAAmH;AAC/G,mCAAI,MAAJ,EAAY,yFAAZ;AACA,uBAAO,KAAP;AACH,aAHD,MAIK,IAAI,KAAK,aAAT,EAAwB;AACzB,mCAAI,MAAJ,EAAY,wEAAZ;AACA,uBAAO,KAAP;AACH;;AAED;AACA,gBAAI;AACA,oBAAI,MAAM,KAAK,aAAL,GAAqB,EAA/B;AACA,oBAAI,MAAJ,GAAa,EAAb;AACA,oBAAI,MAAJ,GAAa,KAAK,MAAL,CAAY,aAAZ,EAAb;AACA,oBAAI,OAAJ,GAAc,EAAE,UAAU,YAAZ,EAAd,CAJA,CAI0C;AAC1C,oBAAI,cAAJ,GAAqB,IAAI,aAAJ,CAAkB,IAAI,MAAtB,EAA8B,IAAI,OAAlC,CAArB;AACA,oBAAI,cAAJ,CAAmB,eAAnB,GAAqC,UAAC,KAAD,EAAW;AAC5C,wBAAI,MAAM,IAAN,CAAW,IAAX,GAAkB,CAAtB,EAAyB;AACtB,4BAAI,MAAJ,CAAW,IAAX,CAAgB,MAAM,IAAtB;AACF;;AAED;AACA,wBAAI,IAAI,OAAR,EAAiB;AACb,4BAAI,OAAO,IAAI,IAAJ,CAAS,IAAI,MAAb,EAAqB,EAAE,MAAM,IAAI,OAAJ,CAAY,QAApB,EAArB,CAAX;AACA,4BAAI,MAAM,2BAAgB,IAAhB,CAAV;;AAEA;AACA,4BAAI,IAAI,MAAR,EAAgB;AACZ,gCAAI,SAAS,IAAI,MAAJ,CAAW,SAAX,MAA0B,EAAvC;AACA,mCAAO,OAAP,CAAe,iBAAS;AACpB,sCAAM,IAAN;AACA,oCAAI,MAAJ,CAAW,WAAX,CAAuB,KAAvB;AACH,6BAHD;AAIH;AACD,4BAAI,MAAJ,GAAa,IAAb;AACA,4BAAI,cAAJ,GAAqB,IAArB;AACA,+BAAK,aAAL,GAAqB,IAArB;;AAEA,4BAAI,OAAJ,CAAY,EAAE,QAAF,EAAO,UAAP,EAAa,MAAM,MAAnB,EAAZ;AACH;AACJ,iBAxBD;AAyBA,oBAAI,cAAJ,CAAmB,KAAnB;AACH,aAhCD,CAiCA,OAAO,CAAP,EAAU;AACN,qBAAK,aAAL,GAAqB,IAArB;AACA,mCAAI,OAAJ,EAAa,4BAAb,EAA2C,CAA3C;AACA,uBAAO,KAAP;AACH;AACD,mBAAO,IAAP;AACH;;AAED;;;;2CACoB;AAAA;;AAChB,gBAAI,CAAC,KAAK,aAAV,EAAyB;AACrB,mCAAI,MAAJ,EAAY,0EAAZ;AACA,uBAAO,QAAQ,OAAR,CAAgB,EAAhB,CAAP;AACH;;AAED;AACA,iBAAK,aAAL,CAAmB,OAAnB,GAA6B,IAAI,OAAJ,CAAY,UAAC,OAAD,EAAU,MAAV,EAAqB;AAC1D,uBAAK,aAAL,CAAmB,OAAnB,GAA6B,OAA7B;AACA,uBAAK,aAAL,CAAmB,MAAnB,GAA4B,MAA5B;AACH,aAH4B,CAA7B;;AAKA;AACA,iBAAK,aAAL,CAAmB,cAAnB,CAAkC,IAAlC;;AAEA,mBAAO,KAAK,aAAL,CAAmB,OAA1B;AACH;;;;;;kBA/KgB,Y;;;;;;;;;;;kBCJG,Y;AADxB;AACe,SAAS,YAAT,CAAuB,IAAvB,EAAyC;AAAA,sCAAT,OAAS;AAAT,eAAS;AAAA;;AACpD,SAAK,IAAI,IAAE,CAAX,EAAc,IAAI,QAAQ,MAA1B,EAAkC,GAAlC,EAAuC;AACnC,YAAI,SAAS,QAAQ,CAAR,CAAb;AACA,YAAI,CAAC,MAAL,EAAa;AACT;AACH;AACD,aAAK,IAAI,GAAT,IAAgB,MAAhB,EAAwB;AACpB,gBAAI,QAAQ,OAAO,GAAP,CAAZ;AACA;AACA;AACA;AACA,gBAAI,UAAU,IAAV,IAAkB,QAAO,KAAP,yCAAO,KAAP,OAAiB,QAAnC,IAA+C,CAAC,MAAM,OAAN,CAAc,KAAd,CAApD,EAA0E;AACtE,oBAAI,KAAK,GAAL,MAAc,IAAd,IAAsB,QAAO,KAAK,GAAL,CAAP,MAAqB,QAA3C,IAAuD,CAAC,MAAM,OAAN,CAAc,KAAK,GAAL,CAAd,CAA5D,EAAsF;AAClF,yBAAK,GAAL,IAAY,aAAa,KAAK,GAAL,CAAb,EAAwB,KAAxB,CAAZ;AACH,iBAFD,MAGK;AACD,yBAAK,GAAL,IAAY,aAAa,EAAb,EAAiB,KAAjB,CAAZ,CADC,CACoC;AACxC;AACJ;AACD;AACA;AATA,iBAUK,IAAI,UAAU,SAAd,EAAyB;AAC1B,yBAAK,GAAL,IAAY,KAAZ;AACH;AACD;AACH;AAEJ;AACD,WAAO,IAAP;AACH;;;;;;;;;;;AC9BD;;;;;;;;IAEqB,G;AAEjB,iBAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,EAAyB,CAAzB,EAA4B;AAAA;;AACxB,aAAK,SAAL,GAAiB,CAAC,CAAD,EAAI,CAAJ,CAAjB;AACA,aAAK,KAAL,GAAa,CAAb;AACA,aAAK,QAAL,GAAgB,CAAC,CAAD,EAAI,CAAJ,CAAhB;AACA,aAAK,IAAL,GAAY,EAAZ;AACA,aAAK,IAAL,GAAY,EAAZ;;AAEA,aAAK,MAAL;AACH;;;;6BAEK,E,EAAI,E,EAAI;AACb,iBAAK,QAAL,GAAgB,CAAC,EAAD,EAAK,EAAL,CAAhB;;AAEA,iBAAK,MAAL;AACA;;;oCAEY;AACZ,gBAAI,MAAM,GAAV;AACA,gBAAI,OAAO,CAAC,GAAD,EAAM,GAAN,EAAW,CAAC,GAAZ,EAAiB,CAAC,GAAlB,CAAX;;AAEA,iBAAK,IAAI,IAAI,CAAb,EAAgB,IAAI,CAApB,EAAuB,EAAE,CAAzB,EAA4B;AACrB,qBAAK,CAAL,IAAU,KAAK,GAAL,CAAS,KAAK,IAAL,CAAU,CAAV,EAAa,CAAb,CAAT,EAA0B,KAAK,CAAL,CAA1B,CAAV;AACA,qBAAK,CAAL,IAAU,KAAK,GAAL,CAAS,KAAK,IAAL,CAAU,CAAV,EAAa,CAAb,CAAT,EAA0B,KAAK,CAAL,CAA1B,CAAV;AACA,qBAAK,CAAL,IAAU,KAAK,GAAL,CAAS,KAAK,IAAL,CAAU,CAAV,EAAa,CAAb,CAAT,EAA0B,KAAK,CAAL,CAA1B,CAAV;AACA,qBAAK,CAAL,IAAU,KAAK,GAAL,CAAS,KAAK,IAAL,CAAU,CAAV,EAAa,CAAb,CAAT,EAA0B,KAAK,CAAL,CAA1B,CAAV;AACN;;AAED,mBAAO,IAAP;AACA;;;mCAEW;AACX,iBAAK,IAAL,CAAU,CAAV,IAAe,iBAAO,SAAP,CAAiB,iBAAO,GAAP,CAAW,KAAK,IAAL,CAAU,CAAV,CAAX,EAAyB,KAAK,IAAL,CAAU,CAAV,CAAzB,CAAjB,CAAf;AACA,iBAAK,IAAL,CAAU,CAAV,IAAe,iBAAO,SAAP,CAAiB,iBAAO,GAAP,CAAW,KAAK,IAAL,CAAU,CAAV,CAAX,EAAyB,KAAK,IAAL,CAAU,CAAV,CAAzB,CAAjB,CAAf;AACA;;;iCAES;AACT,gBAAI,IAAI,CAAE,KAAK,GAAL,CAAS,KAAK,KAAd,CAAF,EAAwB,KAAK,GAAL,CAAS,KAAK,KAAd,CAAxB,CAAR;AACA,gBAAI,IAAI,CAAC,CAAC,KAAK,GAAL,CAAS,KAAK,KAAd,CAAF,EAAwB,KAAK,GAAL,CAAS,KAAK,KAAd,CAAxB,CAAR;;AAEA,gBAAI,iBAAO,IAAP,CAAY,CAAZ,EAAe,KAAK,SAAL,CAAe,CAAf,IAAoB,GAAnC,CAAJ;AACA,gBAAI,iBAAO,IAAP,CAAY,CAAZ,EAAe,KAAK,SAAL,CAAe,CAAf,IAAoB,GAAnC,CAAJ;;AAEA,iBAAK,IAAL,CAAU,CAAV,IAAe,iBAAO,GAAP,CAAW,iBAAO,GAAP,CAAW,KAAK,QAAhB,EAA0B,CAA1B,CAAX,EAAyC,CAAzC,CAAf,CAPS,CAOmD;AAC5D,iBAAK,IAAL,CAAU,CAAV,IAAe,iBAAO,GAAP,CAAW,iBAAO,GAAP,CAAW,KAAK,QAAhB,EAA0B,CAA1B,CAAX,EAAyC,CAAzC,CAAf,CARS,CAQmD;AAC5D,iBAAK,IAAL,CAAU,CAAV,IAAe,iBAAO,GAAP,CAAW,iBAAO,GAAP,CAAW,KAAK,QAAhB,EAA0B,CAA1B,CAAX,EAAyC,CAAzC,CAAf,CATS,CASmD;AAC5D,iBAAK,IAAL,CAAU,CAAV,IAAe,iBAAO,GAAP,CAAW,iBAAO,GAAP,CAAW,KAAK,QAAhB,EAA0B,CAA1B,CAAX,EAAyC,CAAzC,CAAf,CAVS,CAUmD;;AAE5D,iBAAK,QAAL;AACA;;;sCAEqB,G,EAAK,I,EAAM;AAChC,gBAAI,MAAM,GAAV;AACA,gBAAI,MAAM,GAAV;AACA,gBAAI,MAAM,CAAC,GAAX;;AAEA,gBAAI,OAAO,IAAI,IAAf;;AAEA;AACA,iBAAK,IAAI,IAAI,CAAb,EAAgB,IAAI,CAApB,EAAuB,EAAE,CAAzB,EAA4B;AACrB,oBAAI,IAAK,iBAAO,GAAP,CAAW,KAAK,CAAL,CAAX,EAAoB,IAApB,CAAT;AACA,sBAAM,KAAK,GAAL,CAAS,GAAT,EAAc,CAAd,CAAN;AACA,sBAAM,KAAK,GAAL,CAAS,GAAT,EAAc,CAAd,CAAN;AACN;;AAED,mBAAO,CAAC,GAAD,EAAM,GAAN,CAAP;AACA;;;oCAEmB,K,EAAO,K,EAAO,I,EAAM;AACvC,iBAAK,IAAI,IAAI,CAAb,EAAgB,IAAI,CAApB,EAAuB,EAAE,CAAzB,EAA4B;AAC3B,oBAAI,SAAS,IAAI,aAAJ,CAAkB,KAAlB,EAAyB,KAAK,CAAL,CAAzB,CAAb;AACA,oBAAI,SAAS,IAAI,aAAJ,CAAkB,KAAlB,EAAyB,KAAK,CAAL,CAAzB,CAAb;;AAEA,oBAAI,OAAO,CAAP,IAAY,OAAO,CAAP,CAAZ,IAAyB,OAAO,CAAP,IAAY,OAAO,CAAP,CAAzC,EAAoD;AACnD,2BAAO,KAAP;AACA;AACD;AACD,mBAAO,IAAP;AACA;;;kCAEgB,K,EAAO,K,EAAO;AAC9B,mBAAO,IAAI,WAAJ,CAAgB,KAAhB,EAAuB,KAAvB,EAA8B,MAAM,IAApC,KAA6C,IAAI,WAAJ,CAAgB,KAAhB,EAAuB,KAAvB,EAA8B,MAAM,IAApC,CAApD;AACA;;;;;;kBAnFgB,G;;;;;ACCrB;;AAEA;AACA;AACA,IAAI,OAAO,OAAO,MAAd,KAAyB,UAA7B,EAAyC;AACrC,KAAC,YAAY;AACT,eAAO,MAAP,GAAgB,UAAU,MAAV,EAAkB;AAC9B;AACA;;AACA,gBAAI,WAAW,SAAX,IAAwB,WAAW,IAAvC,EAA6C;AACzC,sBAAM,IAAI,SAAJ,CAAc,4CAAd,CAAN;AACH;;AAED,gBAAI,SAAS,OAAO,MAAP,CAAb;AACA,iBAAK,IAAI,QAAQ,CAAjB,EAAoB,QAAQ,UAAU,MAAtC,EAA8C,OAA9C,EAAuD;AACnD,oBAAI,SAAS,UAAU,KAAV,CAAb;AACA,oBAAI,WAAW,SAAX,IAAwB,WAAW,IAAvC,EAA6C;AACzC,yBAAK,IAAI,OAAT,IAAoB,MAApB,EAA4B;AACxB,4BAAI,OAAO,cAAP,CAAsB,OAAtB,CAAJ,EAAoC;AAChC,mCAAO,OAAP,IAAkB,OAAO,OAAP,CAAlB;AACH;AACJ;AACJ;AACJ;AACD,mBAAO,MAAP;AACH,SAnBD;AAoBH,KArBD;AAsBH;;AAED;AACA;AAjCA;;AAEA;AAgCA,KAAK,KAAL,GAAa,KAAK,KAAL,IAAc,YAAW;AAClC,QAAI,IAAI,CAAR;AACA,QAAI,SAAS,UAAU,MAAvB;;AAEA,SAAK,IAAI,IAAI,CAAb,EAAgB,IAAI,MAApB,EAA4B,GAA5B,EAAiC;AAC7B,YAAI,UAAU,CAAV,MAAiB,QAAjB,IAA6B,UAAU,CAAV,MAAiB,CAAC,QAAnD,EAA6D;AACzD,mBAAO,QAAP;AACH;AACD,aAAK,UAAU,CAAV,IAAe,UAAU,CAAV,CAApB;AACH;AACD,WAAO,KAAK,IAAL,CAAU,CAAV,CAAP;AACH,CAXD;;AAaA;AACA,KAAK,IAAL,GAAY,KAAK,IAAL,IAAa,UAAS,CAAT,EAAY;AAAE,WAAO,KAAK,GAAL,CAAS,CAAT,IAAc,KAAK,KAA1B;AAAkC,CAAzE;;AAEA;AACA,IAAI,aAAJ;AACA,IAAI,OAAO,MAAP,KAAkB,WAAtB,EAAmC;AAC/B,QAAI,iBAAiB,MAAjB,KAA4B,KAAhC,EAAuC;AACnC,eAAO,WAAP,GAAqB,EAArB;AACH;AACD,WAAO,OAAO,WAAd;AACH,CALD,MAMK,IAAI,OAAO,IAAP,KAAgB,WAAhB,IAA+B,OAAO,iBAAP,KAA6B,WAA5D,IAA2E,gBAAgB,iBAA/F,EAAkH;AACnH,QAAI,iBAAiB,IAAjB,KAA0B,KAA9B,EAAqC;AACjC,aAAK,WAAL,GAAmB,EAAnB;AACH;AACD,WAAO,KAAK,WAAZ;AACH;;AAED,IAAI,QAAQ,OAAO,KAAK,GAAZ,KAAoB,UAAhC,EAA4C;AACxC,QAAI,QAAQ,CAAC,IAAI,IAAJ,EAAb;AACA,SAAK,GAAL,GAAW,YAAW;AAAE,eAAO,CAAC,IAAI,IAAJ,EAAD,GAAc,KAArB;AAA6B,KAArD;AACH;;;;;;;;kBCpEuB,W;AAAT,SAAS,WAAT,CAAsB,GAAtB,EAA2B,IAA3B,EAAiC;AAC5C,QAAI,SAAS,EAAb;AACA,SAAK,OAAL,CAAa;AAAA,eAAK,OAAO,CAAP,IAAY,IAAI,CAAJ,CAAjB;AAAA,KAAb;AACA,WAAO,MAAP;AACH;;;;;;;;kBCFuB,c;;AAFxB;;;;;;AAEe,SAAS,cAAT,CAAyB,MAAzB,EAAiC;;AAE5C,QAAI,YAAY,EAAhB;;AAEA,WAAO,OAAO,MAAP,CAAc,MAAd,EAAsB;AAEzB,iBAFyB,qBAEf,QAFe,EAEL;AAChB,gBAAI,UAAU,OAAV,CAAkB,QAAlB,MAAgC,CAAC,CAArC,EAAwC;AACpC,0BAAU,IAAV,CAAe,QAAf;AACH;AACJ,SANwB;AAQzB,mBARyB,uBAQb,QARa,EAQH;AAClB,gBAAI,QAAQ,UAAU,OAAV,CAAkB,QAAlB,CAAZ;AACA,gBAAI,QAAQ,CAAC,CAAb,EAAgB;AACZ,0BAAU,MAAV,CAAiB,KAAjB,EAAwB,CAAxB;AACH;AACJ,SAbwB;AAezB,sBAfyB,4BAeR;AACb,wBAAY,EAAZ;AACH,SAjBwB;AAmBzB,eAnByB,mBAmBjB,KAnBiB,EAmBD;AAAA,8CAAN,IAAM;AAAN,oBAAM;AAAA;;AACpB,sBAAU,OAAV,CAAkB,oBAAY;AAC1B,oBAAI,OAAO,SAAS,KAAT,CAAP,KAA2B,UAA/B,EAA2C;AACvC,wBAAI;AACA,iCAAS,KAAT,kBAAmB,IAAnB;AACH,qBAFD,CAGA,OAAM,CAAN,EAAS;AACL,2CAAI,MAAJ,gDAAuD,KAAvD,UAAkE,CAAlE;AACH;AACJ;AACJ,aATD;AAUH,SA9BwB;AAgCzB,yBAhCyB,6BAgCP,KAhCO,EAgCA;AACrB,gBAAI,MAAM,KAAV;AACA,sBAAU,OAAV,CAAkB,oBAAY;AAC1B,oBAAI,OAAO,SAAS,KAAT,CAAP,KAA2B,UAA/B,EAA2C;AACvC,0BAAM,IAAN;AACH;AACJ,aAJD;AAKA,mBAAO,GAAP;AACH;AAxCwB,KAAtB,CAAP;AA4CH;;;;;;;;AClDD;;AAEA,IAAM,OAAO;AACT,QAAI,CADK,EACW;AACpB,WAAO,EAFE,EAEW;AACpB,cAAU,EAHD,EAGW;AACpB,gBAAY,IAJH,EAIW;AACpB,WAAO,EALE,EAKW;;AAEpB,OAPS,eAOJ,IAPI,EAOE;AACP,aAAK,EAAL,GAAU,KAAK,EAAL,EAAV;AACA,aAAK,QAAL,GAAgB,KAAK,QAAL,IAAiB,KAAK,QAAtC,CAFO,CAEyC;AAChD,aAAK,YAAL,GAAoB,KAAK,YAAL,IAAqB,CAAzC,CAHO,CAGyC;AAChD,YAAI,UAAU,IAAI,OAAJ,CAAY,UAAC,OAAD,EAAU,MAAV,EAAqB;AAC3C,iBAAK,OAAL,GAAe,OAAf;AACA,iBAAK,MAAL,GAAc,MAAd;AACH,SAHa,CAAd;AAIA,aAAK,OAAL,GAAe,OAAf;AACA,aAAK,aAAL,GAAqB,CAArB;AACA,aAAK,KAAL,GAAa,EAAE,OAAO,CAAT,EAAb;AACA,aAAK,KAAL,CAAW,IAAX,CAAgB,IAAhB;;AAEA;AACA,aAAK,UAAL,GAAkB,KAAK,UAAL,IAAmB,YAAY,GAAZ,EAArC,CAdO,CAciD;AACxD,aAAK,OAAL,GAAe,YAAY,GAAZ,KAAoB,KAAK,UAAxC;AACA,YAAI,KAAK,OAAL,GAAe,KAAK,QAAxB,EAAkC;AAC9B,iBAAK,OAAL,CAAa,IAAb;AACH;;AAED,eAAO,KAAK,OAAZ;AACH,KA5BQ;AA8BT,UA9BS,kBA8BD,IA9BC,EA8BK;AACV,YAAI,MAAM,KAAK,KAAL,CAAW,OAAX,CAAmB,IAAnB,CAAV;AACA,YAAI,MAAM,CAAC,CAAX,EAAc;AACV,iBAAK,KAAL,CAAW,MAAX,CAAkB,GAAlB,EAAuB,CAAvB;AACH;AACJ,KAnCQ;AAqCT,WArCS,mBAqCA,IArCA,EAqCM;AACX;AACA;AACA,YAAI,KAAK,KAAL,CAAW,gBAAX,IAA+B,KAAK,gBAAL,KAA0B,KAA7D,EAAoE;AAChE;AACA;AACH;;AAED;AACA,YAAI,KAAK,KAAT,EAAgB;AACZ;AACA,iBAAK,KAAL;AACA,mBAAO,IAAP;AACH;;AAED,aAAK,KAAL,CAAW,KAAX;AACA,aAAK,UAAL,GAAkB,YAAY,GAAZ,EAAlB,CAhBW,CAgB0B;AACrC,eAAO,KAAK,MAAL,CAAY,KAAK,MAAjB,EAAyB,IAAzB,CAAP;AACH,KAvDQ;AAyDT,cAzDS,wBAyDK;AACV,aAAK,UAAL,GAAkB,KAAK,UAAL,IAAmB,YAAY,GAAZ,EAArC,CADU,CAC8C;AACxD,aAAK,IAAI,IAAE,CAAX,EAAc,IAAI,KAAK,KAAL,CAAW,MAA7B,EAAqC,GAArC,EAA0C;AACtC;AACA,gBAAI,OAAO,KAAK,KAAL,CAAW,CAAX,CAAX;;AAEA,gBAAI,KAAK,OAAL,CAAa,IAAb,MAAuB,IAA3B,EAAiC;AAC7B;AACA;AACA,oBAAI,CAAC,KAAK,KAAV,EAAiB;AACb,yBAAK,KAAL,GAAc,KAAK,OAAL,GAAe,KAAK,QAArB,GAAiC,KAAK,YAAtC,GAAqD,CAAlE;AACH;AACD,qBAAK,aAAL,IAAsB,KAAK,OAA3B;AACH;;AAED;AACA,iBAAK,OAAL,GAAe,YAAY,GAAZ,KAAoB,KAAK,UAAxC;AACA,gBAAI,KAAK,OAAL,IAAgB,KAAK,QAAzB,EAAmC;AAC/B,qBAAK,UAAL,GAAkB,IAAlB,CAD+B,CACP;AACxB;AACH;AACJ;AAEJ,KAhFQ;AAkFT,UAlFS,kBAkFD,IAlFC,EAkFK,KAlFL,EAkFY;AACjB,aAAK,OAAL,GAAe,YAAY,GAAZ,KAAoB,KAAK,UAAxC;AACA,aAAK,aAAL,IAAsB,KAAK,OAA3B;AACA;AACA,aAAK,MAAL,CAAY,IAAZ;AACA,aAAK,OAAL,CAAa,KAAb;AACA,eAAO,KAAK,OAAZ;AACH,KAzFQ;AA2FT,UA3FS,kBA2FD,IA3FC,EA2FK;AACV,YAAI,YAAJ;;AAEA,YAAI,KAAK,MAAL,IAAe,KAAK,MAAL,CAAY,KAAK,MAAjB,aAAoC,QAAvD,EAAiE;AAC7D,kBAAM,KAAK,MAAL,CAAY,KAAK,MAAjB,EAAyB,IAAzB,CAAN,CAD6D,CACvB;AACzC;;AAED,aAAK,OAAL,CAAa,OAAO,EAApB,EAPU,CAOe;AAC5B,KAnGQ;AAqGT,kBArGS,0BAqGO,IArGP,EAqGa;AAClB;AACA,aAAK,OAAL,GAAe,YAAY,GAAZ,KAAoB,KAAK,UAAxC;AACA,aAAK,OAAL,GAAe,YAAY,GAAZ,KAAoB,KAAK,UAAxC;AACA,eAAS,KAAK,OAAL,GAAe,KAAK,QAArB,IAAmC,KAAK,OAAL,GAAe,KAAK,QAA/D;AACH,KA1GQ;AA4GT,iBA5GS,yBA4GM,OA5GN,EA4Ge;AACpB,aAAK,IAAI,MAAM,KAAK,KAAL,CAAW,MAAX,GAAkB,CAAjC,EAAoC,OAAO,CAA3C,EAA8C,KAA9C,EAAqD;AACjD,gBAAI,KAAK,KAAL,CAAW,GAAX,EAAgB,OAAhB,KAA4B,OAAhC,EAAyC;AACrC;AACA,qBAAK,MAAL,CAAY,KAAK,KAAL,CAAW,GAAX,CAAZ;AACA,qBAAK,KAAL,CAAW,MAAX,CAAkB,GAAlB,EAAuB,CAAvB;AACH;AACJ;AACJ,KApHQ;AAsHT,YAtHS,oBAsHC,KAtHD,EAsHQ;AACb,aAAK,KAAL,GAAa,KAAb;AACH;AAxHQ,CAAb;;kBA4He,I;;;;;;;;AC9Hf;;AAEA;AACA,IAAM,SAAS,EAAf;;kBAEe,M;;;AAEf,IAAI;AACA,QAAI,OAAO,QAAP,KAAoB,YAAxB,EAAsC;AAAE;AACpC,eAAO,SAAP,GAAmB,KAAnB;AACA,eAAO,OAAP,GAAmB,IAAnB;AACH;AACJ,CALD,CAMA,OAAO,CAAP,EAAU;AACN,QAAI,SAAS,SAAb,EAAwB;AACpB,eAAO,SAAP,GAAmB,IAAnB;AACA,eAAO,OAAP,GAAmB,KAAnB;;AAEA;AACA;AACA,aAAK,MAAL,GAAc,EAAE,UAAU,EAAZ,EAAd;AACA,aAAK,QAAL,GAAgB,KAAK,MAAL,CAAY,QAA5B;AACH;AACJ;;;;;;;;QCpBe,U,GAAA,U;QA8BA,U,GAAA,U;QAiBA,e,GAAA,e;QAQA,U,GAAA,U;QAOA,a,GAAA,a;QAQA,kB,GAAA,kB;QAmBA,c,GAAA,c;QAyCA,e,GAAA,e;QAmBA,e,GAAA,e;QAqBA,c,GAAA,c;;AA7KhB;;;;;;AAEA;AACO,SAAS,UAAT,CAAqB,GAArB,EAA0B,IAA1B,EAAgC;AACnC,QAAI,CAAC,GAAD,IAAQ,CAAC,cAAc,GAAd,CAAb,EAAiC;AAC7B,eAAO,GAAP;AACH;;AAED,QAAI,gBAAiB,IAAI,CAAJ,MAAW,GAAhC;AACA,QAAI,SAAJ;AACA,QAAI,IAAJ,EAAU;AACN,oBAAY,SAAS,aAAT,CAAuB,GAAvB,CAAZ,CADM,CACmC;AACzC,kBAAU,IAAV,GAAiB,IAAjB;AACH,KAHD,MAIK;AACD,oBAAY,OAAO,QAAnB;AACH;;AAED,QAAI,aAAJ,EAAmB;AACf,YAAI,OAAO,WAAW,UAAU,IAArB,CAAX;AACA,cAAM,OAAO,GAAb;AACH,KAHD,MAIK;AACD,YAAI,SAAS,UAAU,MAAvB;AACA,YAAI,CAAC,MAAL,EAAa;AACT,qBAAS,UAAU,QAAV,GAAqB,IAArB,GAA4B,UAAU,IAA/C,CADS,CAC4C;AACxD;AACD,cAAM,SAAS,GAAf;AACH;;AAED,WAAO,GAAP;AACH;;AAEM,SAAS,UAAT,CAAqB,GAArB,EAA0B;AAC7B,QAAI,OAAO,GAAP,KAAe,QAAf,IAA2B,IAAI,MAAJ,CAAW,eAAX,MAAgC,CAAC,CAAhE,EAAmE;AAC/D,YAAI,KAAK,IAAI,OAAJ,CAAY,GAAZ,CAAT;AACA,YAAI,KAAK,CAAC,CAAV,EAAa;AACT,kBAAM,IAAI,MAAJ,CAAW,CAAX,EAAc,EAAd,CAAN;AACH;;AAED,YAAI,OAAO,IAAI,OAAJ,CAAY,GAAZ,CAAX;AACA,YAAI,OAAO,CAAC,CAAZ,EAAe;AACX,kBAAM,IAAI,MAAJ,CAAW,CAAX,EAAc,IAAd,CAAN;AACH;;AAED,eAAO,IAAI,MAAJ,CAAW,CAAX,EAAc,IAAI,WAAJ,CAAgB,GAAhB,IAAuB,CAArC,KAA2C,EAAlD;AACH;AACD,WAAO,EAAP;AACH;;AAEM,SAAS,eAAT,CAA0B,GAA1B,EAA+B;AAClC,UAAM,IAAI,KAAJ,CAAU,GAAV,EAAe,GAAf,EAAN;AACA,QAAI,WAAW,IAAI,WAAJ,CAAgB,GAAhB,CAAf;AACA,QAAI,WAAW,CAAC,CAAhB,EAAmB;AACf,eAAO,IAAI,SAAJ,CAAc,WAAW,CAAzB,CAAP;AACH;AACJ;;AAEM,SAAS,UAAT,CAAqB,GAArB,EAA0B;AAC7B,QAAI,OAAO,GAAP,KAAe,QAAnB,EAA6B;AACzB;AACH;AACD,WAAQ,IAAI,MAAJ,CAAW,eAAX,IAA8B,CAAC,CAAvC;AACH;;AAEM,SAAS,aAAT,CAAwB,GAAxB,EAA6B;AAChC,QAAI,OAAO,GAAP,KAAe,QAAnB,EAA6B;AACzB;AACH;AACD,WAAO,EAAE,IAAI,MAAJ,CAAW,0BAAX,IAAyC,CAAC,CAA1C,IAA+C,IAAI,MAAJ,CAAW,CAAX,EAAc,CAAd,MAAqB,IAAtE,CAAP;AACH;;AAED;AACO,SAAS,kBAAT,CAA6B,GAA7B,EAAkC;AACrC,QAAI,OAAO,CAAC,OAAO,EAAR,EAAY,KAAZ,CAAkB,GAAlB,CAAX;AACA,SAAK,IAAI,IAAI,CAAb,EAAgB,IAAI,KAAK,MAAzB,EAAiC,GAAjC,EAAsC;AAClC,YAAI,KAAK,CAAL,MAAY,GAAhB,EAAqB;AACjB,iBAAK,MAAL,CAAY,CAAZ,EAAe,CAAf;AACA;AACH,SAHD,MAIK,IAAI,KAAK,CAAL,MAAY,IAAhB,EAAsB;AACvB,gBAAI,IAAI,CAAR;AACA,iBAAK,MAAL,CAAY,IAAE,CAAd,EAAiB,CAAjB;AACA;AACH;AACJ;AACD,WAAO,KAAK,IAAL,CAAU,GAAV,CAAP;AACH;;AAED;AACA;AACA;AACO,SAAS,cAAT,CAAyB,GAAzB,EAA8B,MAA9B,EAAsC;AACzC,QAAI,CAAC,MAAD,IAAW,OAAO,IAAP,CAAY,MAAZ,EAAoB,MAApB,KAA+B,CAA9C,EAAiD;AAC7C,eAAO,CAAC,GAAD,EAAM,EAAN,CAAP;AACH;;AAED,QAAI,WAAW,IAAI,OAAJ,CAAY,GAAZ,CAAf;AACA,QAAI,aAAa,IAAI,OAAJ,CAAY,GAAZ,CAAjB;;AAEA;AACA,QAAI,OAAO,EAAX;AACA,QAAI,aAAa,CAAC,CAAlB,EAAqB;AACjB,eAAO,IAAI,KAAJ,CAAU,UAAV,CAAP;AACA,cAAM,IAAI,KAAJ,CAAU,CAAV,EAAa,UAAb,CAAN;AACH;;AAED;AACA,QAAI,aAAa,CAAC,CAAlB,EAAqB;AACjB,mBAAW,IAAI,MAAf;AACA,eAAO,GAAP;AACH;AACD,eApByC,CAoB7B;;AAEZ;AACA,QAAI,aAAa,EAAjB;AACA,QAAI,QAAQ,EAAZ;AACA,SAAK,IAAI,CAAT,IAAc,MAAd,EAAsB;AAClB,YAAI,gBAAgB,CAAhB,EAAmB,GAAnB,MAA4B,EAAhC,EAAoC;AAChC,kBAAM,IAAN,CAAW,CAAC,CAAD,EAAI,OAAO,CAAP,CAAJ,CAAX;AACA;AACH;AACD,sBAAiB,CAAjB,SAAsB,OAAO,CAAP,CAAtB;AACH;;AAED;AACA,UAAM,IAAI,KAAJ,CAAU,CAAV,EAAa,QAAb,IAAyB,UAAzB,GAAsC,IAAI,KAAJ,CAAU,QAAV,CAAtC,GAA4D,IAAlE;;AAEA,WAAO,CAAC,GAAD,EAAM,KAAN,CAAP;AACH;;AAED;AACA,IAAI,yBAAJ;AACO,SAAS,eAAT,CAA0B,GAA1B,EAA+B;AAClC,QAAI,qBAAqB,SAAzB,EAAoC;AAChC,2BAAoB,OAAO,GAAP,IAAc,OAAO,GAAP,CAAW,eAA1B,IAA+C,OAAO,SAAP,IAAoB,OAAO,SAAP,CAAiB,eAAvG;;AAEA,YAAI,OAAO,gBAAP,KAA4B,UAAhC,EAA4C;AACxC,+BAAmB,IAAnB;AACA,+BAAI,MAAJ;AACH;AACJ;;AAED,QAAI,gBAAJ,EAAsB;AAClB,eAAO,iBAAiB,GAAjB,CAAP;AACH,KAFD,MAGK;AACD,eAAO,GAAP;AACH;AACJ;;AAED,IAAI,yBAAJ;AACO,SAAS,eAAT,CAA0B,GAA1B,EAA+B;AAClC,QAAI,qBAAqB,SAAzB,EAAoC;AAChC,2BAAoB,OAAO,GAAP,IAAc,OAAO,GAAP,CAAW,eAA1B,IAA+C,OAAO,SAAP,IAAoB,OAAO,SAAP,CAAiB,eAAvG;;AAEA,YAAI,OAAO,gBAAP,KAA4B,UAAhC,EAA4C;AACxC,+BAAmB,IAAnB;AACA,+BAAI,MAAJ;AACH;AACJ;;AAED,QAAI,gBAAJ,EAAsB;AAClB,eAAO,iBAAiB,GAAjB,CAAP;AACH,KAFD,MAGK;AACD,eAAO,GAAP;AACH;AACJ;;AAED;AACA;AACA;AACO,SAAS,cAAT,GAAmC;AACtC;AACA,QAAI,SAAS,SAAS,aAAtB;;AAFsC,sCAAP,KAAO;AAAP,aAAO;AAAA;;AAGtC,QAAI,MAAJ,EAAY;AACR,eAAO,OAAO,GAAd;AACH,KAFD,MAGK,IAAI,MAAM,OAAN,CAAc,KAAd,CAAJ,EAA0B;AAC3B;AACA,YAAI,UAAU,SAAS,oBAAT,CAA8B,QAA9B,CAAd;AACA,aAAK,IAAI,IAAE,CAAX,EAAc,IAAI,QAAQ,MAA1B,EAAkC,GAAlC,EAAuC;AACnC,iBAAK,IAAI,IAAE,CAAX,EAAc,IAAI,MAAM,MAAxB,EAAgC,GAAhC,EAAqC;AACjC,oBAAI,QAAQ,CAAR,EAAW,GAAX,CAAe,OAAf,CAAuB,MAAM,CAAN,CAAvB,IAAmC,CAAC,CAAxC,EAA2C;AACxC,2BAAO,QAAQ,CAAR,EAAW,GAAlB;AACF;AACJ;AACJ;AACJ;AACJ;;AAED;AACA,SAAS,eAAT,CAA0B,IAA1B,EAAgC,GAAhC,EAAqC;AACjC,WAAO,KAAK,OAAL,CAAa,MAAb,EAAqB,KAArB,EAA4B,OAA5B,CAAoC,MAApC,EAA4C,KAA5C,CAAP;AACA,QAAI,QAAQ,IAAI,MAAJ,CAAW,WAAW,IAAX,GAAkB,WAA7B,CAAZ;AACA,QAAI,UAAU,MAAM,IAAN,CAAW,GAAX,CAAd;AACA,WAAO,YAAY,IAAZ,GAAmB,EAAnB,GAAwB,mBAAmB,QAAQ,CAAR,EAAW,OAAX,CAAmB,KAAnB,EAA0B,GAA1B,CAAnB,CAA/B;AACH;;;;;;;;;8QCtMD;AACA;;AAEA;;;;AACA;;;;AACA;;;;AACA;;;;;;AAEA,IAAI,KAAJ;kBACe,QAAQ,E;;;AAEvB,wBAAa,SAAb,CAAuB,OAAvB,EAAgC,KAAhC;;AAEA;AACA;AACA,MAAM,QAAN,GAAiB,YAAY;AACzB,WAAO,kCAAiC,IAAjC,CAAsC,UAAU,SAAhD;AAAP;AACH,CAFD;;AAIA;AACA,MAAM,WAAN,GAAoB,YAAY;AAC5B,WAAO,wCAAuC,IAAvC,CAA4C,UAAU,SAAtD;AAAP;AACH,CAFD;;AAIA,MAAM,SAAN,GAAkB,EAAlB,C,CAA4B;AAC5B,MAAM,eAAN,GAAwB,EAAxB,C,CAA4B;;AAE5B;AACA,MAAM,EAAN,GAAW,UAAU,GAAV,EAAwH;AAAA,QAAzG,OAAyG,uEAA/F,KAA+F;AAAA,QAAxF,YAAwF,uEAAzE,MAAyE;AAAA,QAAjE,MAAiE,uEAAxD,KAAwD;AAAA,QAAjD,OAAiD,uEAAvC,EAAuC;AAAA,QAAnC,WAAmC,uEAArB,IAAqB;AAAA,QAAf,KAAe,uEAAP,KAAO;;AAC/H,QAAI,iBAAO,SAAP,IAAoB,MAAM,WAAN,EAAxB,EAA6C;AACzC;AACA;AACA;AACA,2BAAI,OAAJ,EAAa,oCAAb,EAAmD,GAAnD;;AAEA,YAAI,WAAJ,EAAiB;AACb,kBAAM,eAAN,CAAsB,WAAtB,IAAqC,IAArC,CADa,CAC8B;AAC9C;AACD,eAAO,wBAAa,WAAb,CAAyB,UAAzB,EAAqC,GAArC,EAA0C,OAA1C,EAAmD,YAAnD,EAAiE,MAAjE,EAAyE,OAAzE,EAAkF,WAAlF,EAA+F,IAA/F,CAAP;AACH,KAVD,MAWK;AACD,YAAI,UAAU,IAAI,cAAJ,EAAd;AACA,YAAI,UAAU,IAAI,OAAJ,CAAY,UAAC,OAAD,EAAU,MAAV,EAAqB;AAC3C,oBAAQ,IAAR,CAAa,MAAb,EAAqB,GAArB,EAA0B,IAA1B;AACA,oBAAQ,OAAR,GAAkB,OAAlB;AACA,oBAAQ,YAAR,GAAuB,YAAvB;AACA,oBAAQ,MAAR,GAAiB,YAAM;AACnB,oBAAI,QAAQ,MAAR,KAAmB,GAAvB,EAA4B;AACxB,wBAAI,CAAC,MAAD,EAAS,MAAT,EAAiB,OAAjB,CAAyB,QAAQ,YAAjC,IAAiD,CAAC,CAAtD,EAAyD;AACrD,gCAAQ,QAAQ,YAAhB;AACH,qBAFD,MAGK;AACD,gCAAQ,QAAQ,QAAhB;AACH;AACJ,iBAPD,MAOO;AACH,2BAAO,MAAM,oCAAoC,QAAQ,UAAlD,CAAP;AACH;AACJ,aAXD;AAYA,oBAAQ,OAAR,GAAkB,UAAC,GAAD,EAAS;AACvB,uBAAO,MAAM,8BAA8B,IAAI,QAAJ,EAApC,CAAP;AACH,aAFD;AAGA,oBAAQ,SAAR,GAAoB,UAAC,GAAD,EAAS;AACzB,uBAAO,MAAM,aAAY,IAAI,QAAJ,EAAlB,CAAP;AACH,aAFD;AAGA,oBAAQ,IAAR;AACH,SAvBa,CAAd;;AAyBA,kBAAU,QAAQ,IAAR,CAAa,oBAAY;AAC/B,gBAAI,WAAJ,EAAiB;AACb,uBAAO,MAAM,SAAN,CAAgB,WAAhB,CAAP;AACH;;AAED,gBAAI,KAAJ,EAAW;AACP,uBAAO,wBAAa,iBAAb,CAA+B,QAA/B,CAAP;AACH;AACD,mBAAO,QAAP;AACH,SATS,CAAV;;AAWA,YAAI,WAAJ,EAAiB;AACb,kBAAM,SAAN,CAAgB,WAAhB,IAA+B,OAA/B;AACH;;AAED,eAAO,OAAP;AACH;AACJ,CAxDD;;AA0DA;AACA,MAAM,aAAN,GAAsB,UAAU,GAAV,EAAe;AACjC;AACA,QAAI,iBAAO,SAAP,IAAoB,MAAM,eAAN,CAAsB,GAAtB,CAAxB,EAAoD;AAChD,eAAO,wBAAa,WAAb,CAAyB,qBAAzB,EAAgD,GAAhD,CAAP,CADgD,CACa;AAChE;;AAED,QAAI,MAAM,MAAM,SAAN,CAAgB,GAAhB,CAAV;AACA,QAAI,GAAJ,EAAS;AACL,2BAAI,OAAJ,wCAAgD,GAAhD;AACA,cAAM,SAAN,CAAgB,GAAhB,EAAqB,KAArB;AACA,eAAO,MAAM,SAAN,CAAgB,GAAhB,CAAP;AACH,KAJD,MAKK;AACD,2BAAI,OAAJ,4CAAoD,GAApD;AACH;AACJ,CAfD;;AAiBA;AACA,MAAM,6BAAN,GAAsC,YAAY;AAC9C,QAAI,OAAO,OAAO,qBAAd,KAAwC,UAA5C,EAAwD;AACpD,eAAO,qBAAP,GACI,OAAO,2BAAP,IACA,OAAO,wBADP,IAEA,OAAO,sBAFP,IAGA,OAAO,uBAHP,IAIA,UAAU,EAAV,EAAc;AACV,uBAAW,EAAX,EAAe,OAAM,EAArB;AACH,SAPL;AAQH;AACJ,CAXD;;AAaA;AACA,MAAM,sBAAN,GAA+B,UAAU,GAAV,EAAe;AAC1C,QAAI,OAAO,GAAP,KAAe,UAAnB,EAA+B;AAC3B,eAAO,IAAI,QAAJ,EAAP;AACH;;AAED,QAAI,aAAa,KAAK,SAAL,CAAe,GAAf,EAAoB,UAAS,CAAT,EAAY,CAAZ,EAAe;AAChD;AACA,YAAI,OAAO,CAAP,KAAa,UAAjB,EAA6B;AACzB,mBAAO,EAAE,QAAF,EAAP;AACH;AACD,eAAO,CAAP;AACH,KANgB,CAAjB;;AAQA,WAAO,UAAP;AACH,CAdD;;AAgBA;AACA,MAAM,kBAAN,GAA2B,UAAS,GAAT,EAAc,IAAd,EAAoB;AAC3C;AACA,QAAI,OAAO,GAAP,KAAe,QAAnB,EAA6B;AACzB,cAAM,MAAM,gBAAN,CAAuB,GAAvB,EAA4B,IAA5B,CAAN;AACH;AACD;AAHA,SAIK,IAAI,OAAO,IAAP,IAAe,QAAO,GAAP,yCAAO,GAAP,OAAe,QAAlC,EAA4C;AAC7C,iBAAK,IAAI,CAAT,IAAc,GAAd,EAAmB;AACf,oBAAI,CAAJ,IAAS,MAAM,kBAAN,CAAyB,IAAI,CAAJ,CAAzB,EAAiC,IAAjC,CAAT;AACH;AACJ;AACD,WAAO,GAAP;AACH,CAZD;;AAcA;AACA,MAAM,gBAAN,GAAyB,UAAS,GAAT,EAAc,IAAd,EAAoB;AACzC;AACA,QAAI,SACC,OAAO,GAAP,KAAe,QAAhB,IACA,IAAI,KAAJ,CAAU,iDAAV,CAFJ;;AAIA,QAAI,UAAU,OAAO,MAAP,GAAgB,CAA9B,EAAiC;AAC7B,YAAI;AACA,gBAAI,MAAM,OAAO,CAAP,CAAV;AACA,gBAAI,OAAO,OAAO,CAAP,EAAU,MAAV,GAAmB,CAAnB,IAAwB,OAAO,CAAP,EAAU,KAAV,CAAgB,GAAhB,EAAqB,GAArB,CAAyB;AAAA,uBAAK,EAAE,IAAF,EAAL;AAAA,aAAzB,EAAwC,MAAxC,CAA+C;AAAA,uBAAK,CAAL;AAAA,aAA/C,CAAnC;AACA,mBAAO,KAAK,MAAL,GAAc,CAAd,GAAkB,IAAlB,GAAyB,CAAC,SAAD,CAAhC,CAHA,CAG6C;;AAE7C,gBAAI,OAAO,IAAP,KAAgB,UAApB,EAAgC;AAC5B,uBAAO,IAAI,QAAJ,CAAa,KAAK,QAAL,EAAb,EAA8B,KAAK,GAAL,CAA9B,CAAP,CAD4B,CACqB;AACpD,aAFD,MAGK;AACD,uBAAO,IAAI,QAAJ,CAAa,KAAK,QAAL,EAAb,EAA8B,GAA9B,CAAP,CADC,CAC0C;AAC9C;AACJ,SAXD,CAYA,OAAO,CAAP,EAAU;AACN;AACA,mBAAO,GAAP;AACH;AACJ;AACD,WAAO,GAAP;AACH,CAzBD;;AA2BA;AACA;AACA,MAAM,wBAAN,GAAiC,IAAjC;AACA,MAAM,sBAAN,GAA+B,YAAY;AACvC,QAAI,OAAO,MAAM,kBAAjB;AACA,UAAM,kBAAN,GAA4B,MAAM,wBAAN,IAAkC,OAAO,gBAA1C,IAA+D,CAA1F;AACA,WAAO,MAAM,kBAAN,KAA6B,IAApC;AACH,CAJD;;AAMA,IAAI,iBAAO,OAAX,EAAoB;AAChB,UAAM,sBAAN;AACH;;AAED;AACA;AACA,MAAM,UAAN,GAAmB,UAAS,KAAT,EAAgB;AAC/B,WAAO,CAAC,QAAS,QAAQ,CAAlB,MAA0B,CAAjC;AACH,CAFD;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,WAAN,GAAoB,UAAS,CAAT,EAAY,MAAZ,EAAoB,SAApB,EAA+B;AAC/C;AACA,QAAI,CAAC,MAAM,OAAN,CAAc,MAAd,CAAD,IAA0B,CAAC,MAAM,OAAN,CAAc,OAAO,CAAP,CAAd,CAA/B,EAAyD;AACrD,eAAO,MAAP;AACH,KAFD,MAGK,IAAI,OAAO,MAAP,GAAgB,CAApB,EAAuB;AACxB,eAAO,MAAP;AACH;;AAED,QAAI,EAAJ,EAAQ,EAAR,EAAY,CAAZ,EAAe,CAAf,EAAkB,EAAlB,EAAsB,EAAtB;;AAEA;AACA,QAAI,KAAK,OAAO,CAAP,EAAU,CAAV,CAAT,EAAuB;AACnB,YAAI,OAAO,CAAP,EAAU,CAAV,CAAJ;AACA,YAAI,OAAO,SAAP,KAAqB,UAAzB,EAAqC;AACjC,gBAAI,UAAU,CAAV,CAAJ;AACH;AACJ;AACD;AANA,SAOK,IAAI,KAAK,OAAO,OAAO,MAAP,GAAc,CAArB,EAAwB,CAAxB,CAAT,EAAqC;AACtC,gBAAI,OAAO,OAAO,MAAP,GAAc,CAArB,EAAwB,CAAxB,CAAJ;AACA,gBAAI,OAAO,SAAP,KAAqB,UAAzB,EAAqC;AACjC,oBAAI,UAAU,CAAV,CAAJ;AACH;AACJ;AACD;AANK,aAOA;AACD,qBAAK,IAAI,IAAE,CAAX,EAAc,IAAI,OAAO,MAAP,GAAgB,CAAlC,EAAqC,GAArC,EAA0C;AACtC,wBAAI,KAAK,OAAO,CAAP,EAAU,CAAV,CAAL,IAAqB,IAAI,OAAO,IAAE,CAAT,EAAY,CAAZ,CAA7B,EAA6C;AACzC;AACA,6BAAK,OAAO,CAAP,EAAU,CAAV,CAAL;AACA,6BAAK,OAAO,IAAE,CAAT,EAAY,CAAZ,CAAL;;AAEA;AACA,4BAAI,MAAM,OAAN,CAAc,OAAO,CAAP,EAAU,CAAV,CAAd,CAAJ,EAAiC;AAC7B,gCAAI,EAAJ;AACA,iCAAK,IAAI,IAAE,CAAX,EAAc,IAAI,OAAO,CAAP,EAAU,CAAV,EAAa,MAA/B,EAAuC,GAAvC,EAA4C;AACxC,oCAAI,OAAO,SAAP,KAAqB,UAAzB,EAAqC;AACjC,yCAAK,UAAU,OAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAAV,CAAL;AACA,yCAAK,UAAU,OAAO,IAAE,CAAT,EAAY,CAAZ,EAAe,CAAf,CAAV,CAAL;AACA,wCAAI,KAAK,EAAT;AACA,sCAAE,CAAF,IAAO,KAAK,IAAI,EAAT,KAAgB,KAAK,EAArB,IAA2B,EAAlC;AACH,iCALD,MAMK;AACD,wCAAI,OAAO,IAAE,CAAT,EAAY,CAAZ,EAAe,CAAf,IAAoB,OAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAAxB;AACA,sCAAE,CAAF,IAAO,KAAK,IAAI,EAAT,KAAgB,KAAK,EAArB,IAA2B,OAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAAlC;AACH;AACJ;AACJ;AACD;AAfA,6BAgBK;AACD,oCAAI,OAAO,SAAP,KAAqB,UAAzB,EAAqC;AACjC,yCAAK,UAAU,OAAO,CAAP,EAAU,CAAV,CAAV,CAAL;AACA,yCAAK,UAAU,OAAO,IAAE,CAAT,EAAY,CAAZ,CAAV,CAAL;AACA,wCAAI,KAAK,EAAT;AACA,wCAAI,KAAK,IAAI,EAAT,KAAgB,KAAK,EAArB,IAA2B,EAA/B;AACH,iCALD,MAMK;AACD,wCAAI,OAAO,IAAE,CAAT,EAAY,CAAZ,IAAiB,OAAO,CAAP,EAAU,CAAV,CAArB;AACA,wCAAI,KAAK,IAAI,EAAT,KAAgB,KAAK,EAArB,IAA2B,OAAO,CAAP,EAAU,CAAV,CAA/B;AACH;AACJ;AACD;AACH;AACJ;AACJ;AACD,WAAO,CAAP;AACH,CAnED;;AAqEA,MAAM,UAAN,GAAmB,UAAU,KAAV,EAAiB;AAChC,QAAI,MAAM,CAAN,MAAa,CAAjB,EAAoB;AAAE;AAClB,wBAAc,MAAM,KAAN,CAAY,CAAZ,EAAe,CAAf,EAAkB,GAAlB,CAAsB;AAAA,mBAAK,KAAK,KAAL,CAAW,IAAI,GAAf,CAAL;AAAA,SAAtB,EAAgD,IAAhD,CAAqD,IAArD,CAAd;AACH;AACD;AACA,qBAAe,MAAM,GAAN,CAAU,UAAC,CAAD,EAAI,CAAJ;AAAA,eAAW,IAAI,CAAJ,IAAS,KAAK,KAAL,CAAW,IAAI,GAAf,CAAV,IAAkC,CAA5C;AAAA,KAAV,EAAyD,IAAzD,CAA8D,IAA9D,CAAf;AACH,CAND;;AAQA,MAAM,WAAN,GAAoB,UAAU,KAAV,EAAiB;AACjC,WAAO,MAAM,CAAN,KAAY,CAAZ,IAAiB,MAAM,CAAN,IAAW,CAAC,cAAI,UAAjC,IAA+C,MAAM,CAAN,IAAW,cAAI,UAA9D,IAA4E,MAAM,CAAN,KAAY,CAA/F;AACH,CAFD;;;;;;;;AChSA,IAAI,KAAK,QAAQ,IAAR,CAAT;AACA,IAAI,MAAM,KAAK,KAAL,CAAW,GAAG,YAAH,CAAgB,YAAY,qBAA5B,EAAmD,MAAnD,CAAX,CAAV;AACA,IAAI,gBAAJ;kBACe,UAAU,MAAM,IAAI,O;;;;;;;;;;;;;ACoFnC;;;;AACA;;;;;;oMAxFA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAKA,IAAI,YAAJ;kBACe,eAAe,E;;AAE9B;AACA;;AACA,IAAI,aAAa,CAAjB;AACA,IAAI,WAAW,EAAf;;AAEA;AACA,IAAI,UAAU,EAAd;AACA,aAAa,SAAb,GAAyB,UAAU,IAAV,EAAgB,MAAhB,EAAwB;AAC7C,YAAQ,IAAR,IAAgB,MAAhB;AACH,CAFD;;AAIA,aAAa,YAAb,GAA4B,UAAU,IAAV,EAAgB;AACxC,WAAO,QAAQ,IAAR,CAAP;AACH,CAFD;;AAIA;AACA;AACA,SAAS,UAAT,CAAqB,MAArB,EAA6B;AACzB,QAAI,QAAQ,EAAZ;AACA,QAAI,OAAO,MAAP,KAAkB,QAAtB,EAAgC;AAC5B,gBAAQ,OAAO,KAAP,CAAa,GAAb,CAAR;AACA,iBAAS,MAAM,GAAN,EAAT;AACH;;AAED,QAAI,SAAS,OAAb;;AAEA,SAAK,IAAI,IAAE,CAAX,EAAc,IAAI,MAAM,MAAxB,EAAgC,GAAhC,EAAqC;AACjC,YAAI,OAAO,MAAM,CAAN,CAAP,CAAJ,EAAsB;AAClB,qBAAS,OAAO,MAAM,CAAN,CAAP,CAAT;AACH,SAFD,MAGK;AACD,mBAAO,EAAP;AACH;AACJ;;AAED,WAAO,CAAC,MAAD,EAAS,MAAT,CAAP;AACH;;AAED;AACA;AACA;AACA,SAAS,eAAT,GAA4B;;AAExB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAa,WAAb,GAA2B,UAAU,MAAV,EAAkB,MAAlB,EAAsC;AAAA,0CAAT,OAAS;AAAT,mBAAS;AAAA;;AAC7D;AACA,YAAI,MAAM,OAAN,CAAc,MAAd,CAAJ,EAA2B;AACvB,mBAAO,QAAQ,GAAR,CACH,OAAO,GAAP,CAAW;AAAA;;AAAA,uBAAK,+BAAa,WAAb,uBAAyB,CAAzB,EAA4B,MAA5B,4BAAuC,OAAvC,GAAL;AAAA,aAAX,CADG,CAAP;AAGH;;AAED;AACA,YAAI,UAAU,IAAI,OAAJ,CAAY,UAAC,OAAD,EAAU,MAAV,EAAqB;AAC3C,qBAAS,UAAT,IAAuB,EAAE,cAAF,EAAU,gBAAV,EAAmB,gBAAnB,EAA4B,cAA5B,EAAvB;AACH,SAFa,CAAd;;AAKA,YAAI,gBAAJ;AAAA,YAAa,gBAAgB,EAA7B;;AAEA,YAAI,WAAW,QAAQ,MAAR,KAAmB,CAA9B,IAAmC,QAAQ,CAAR,aAAsB,aAAa,iBAA1E,EAA6F;AACzF,4BAAgB,QAAQ,CAAR,EAAW,aAA3B;AACA,sBAAU,QAAQ,CAAR,EAAW,KAArB;AACH;;AAED,kBAAU;AACN,kBAAM,WADA,EACkB;AACxB,kCAFM,EAEkB;AACxB,0BAHM,EAGkB;AACxB,4BAJM,CAIkB;AAJlB,SAAV;;AAOA,eAAO,WAAP,CAAmB,OAAnB,EAA4B,cAAc,GAAd,CAAkB;AAAA,mBAAK,EAAE,MAAP;AAAA,SAAlB,CAA5B;AACA,0BAAkB,aAAlB;AACA,YAAI,cAAc,MAAd,GAAuB,CAA3B,EAA8B;AAC1B,+BAAI,OAAJ,SAAiB,MAAjB,uBAAwC,cAAc,MAAtD;AACH;;AAED;AACA,eAAO,OAAP;AACH,KApCD;;AAsCA;AACA,iBAAa,SAAb,GAAyB,UAAU,MAAV,EAAkB;AACvC,YAAI,EAAE,kBAAkB,MAApB,CAAJ,EAAiC;AAC7B,kBAAM,uDAAuD,MAAvD,CAAN;AACH;;AAED,eAAO,gBAAP,CAAwB,SAAxB,EAAmC,SAAS,6BAAT,CAAuC,KAAvC,EAA8C;AAC7E,gBAAI,OAAO,MAAM,IAAjB;AACA,gBAAI,KAAK,KAAK,UAAd;;AAEA;AACA,gBAAI,KAAK,IAAL,KAAc,cAAlB,EAAkC;AAC9B;AACA,oBAAI,SAAS,EAAT,CAAJ,EAAkB;AACd,wBAAI,KAAK,KAAT,EAAgB;AACZ,iCAAS,EAAT,EAAa,MAAb,CAAoB,KAAK,KAAzB;AACH,qBAFD,MAGK;AACD,iCAAS,EAAT,EAAa,OAAb,CAAqB,KAAK,OAA1B;AACH;AACD,2BAAO,SAAS,EAAT,CAAP;AACH;AACJ;AACD;AACA;AACA;AAdA,iBAeK,IAAI,KAAK,IAAL,KAAc,aAAd,IAA+B,MAAM,IAAzC,EAA+C;AAChD;AADgD,sCAEpB,WAAW,KAAK,MAAhB,CAFoB;AAAA;AAAA,wBAE3C,WAF2C;AAAA,wBAE9B,MAF8B;;AAGhD,wBAAI,CAAC,MAAL,EAAa;AACT,8BAAM,yDAAuD,KAAK,MAA5D,mBAAgF,KAAK,MAArF,oEAAN;AACH;;AAED,wBAAI,SAAU,OAAO,OAAO,WAAP,CAAP,KAA+B,UAAhC,IAA+C,OAAO,WAAP,CAA5D;AACA,wBAAI,CAAC,MAAL,EAAa;AACT,8BAAM,yDAAuD,KAAK,MAA5D,mBAAgF,KAAK,MAArF,kDAAN;AACH;;AAED,wBAAI,MAAJ,EAAY,KAAZ;AACA,wBAAI;AACA,iCAAS,OAAO,KAAP,CAAa,MAAb,EAAqB,KAAK,OAA1B,CAAT;AACH,qBAFD,CAGA,OAAM,CAAN,EAAS;AACL;AACA,gCAAQ,CAAR;AACH;;AAED;AACA,wBAAI,gBAAJ;AAAA,wBAAa,gBAAgB,EAA7B;;AAEA;AACA,wBAAI,kBAAkB,OAAtB,EAA+B;AAC3B,+BAAO,IAAP,CAAY,UAAC,KAAD,EAAW;AACnB,gCAAI,iBAAiB,aAAa,iBAAlC,EAAqD;AACjD,gDAAgB,MAAM,aAAtB;AACA,wCAAQ,MAAM,KAAN,CAAY,CAAZ,CAAR;AACH;;AAED,sCAAU;AACN,sCAAM,YADA;AAEN,4CAAY,EAFN;AAGN,yCAAS;AAHH,6BAAV;AAKA,mCAAO,WAAP,CAAmB,OAAnB,EAA4B,cAAc,GAAd,CAAkB;AAAA,uCAAK,EAAE,MAAP;AAAA,6BAAlB,CAA5B;AACA,8CAAkB,aAAlB;AACA,gCAAI,cAAc,MAAd,GAAuB,CAA3B,EAA8B;AAC1B,mDAAI,OAAJ,SAAiB,WAAjB,uBAA6C,cAAc,MAA3D;AACH;AAEJ,yBAjBD,EAiBG,UAAC,KAAD,EAAW;AACV,mCAAO,WAAP,CAAmB;AACf,sCAAM,YADS;AAEf,4CAAY,EAFG;AAGf,uCAAQ,iBAAiB,KAAjB,GAA4B,MAAM,OAAlC,UAA8C,MAAM,KAApD,GAA8D;AAHvD,6BAAnB;AAKH,yBAvBD;AAwBH;AACD;AA1BA,yBA2BK;AACD,gCAAI,kBAAkB,aAAa,iBAAnC,EAAsD;AAClD,gDAAgB,OAAO,aAAvB;AACA,yCAAS,OAAO,KAAP,CAAa,CAAb,CAAT;AACH;;AAED,sCAAU;AACN,sCAAM,YADA;AAEN,4CAAY,EAFN;AAGN,yCAAS,MAHH;AAIN,uCAAQ,iBAAiB,KAAjB,GAA4B,MAAM,OAAlC,UAA8C,MAAM,KAApD,GAA8D;AAJhE,6BAAV;AAMA,mCAAO,WAAP,CAAmB,OAAnB,EAA4B,cAAc,GAAd,CAAkB;AAAA,uCAAK,EAAE,MAAP;AAAA,6BAAlB,CAA5B;AACA,8CAAkB,aAAlB;AACA,gCAAI,cAAc,MAAd,GAAuB,CAA3B,EAA8B;AAC1B,mDAAI,OAAJ,SAAiB,WAAjB,uBAA6C,cAAc,MAA3D;AACH;AACJ;AACJ;AACJ,SA3FD;AA6FH,KAlGD;;AAoGA;AACA,iBAAa,WAAb,GAA2B,YAAY;AACnC,eAAO,QAAP;AACH,KAFD;;AAIA,iBAAa,YAAb,GAA4B,YAAY;AACpC,eAAO,UAAP;AACH,KAFD;AAIH;;AAED;AACA;AACA;AACA,SAAS,iBAAT,GAA8B;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAa,WAAb,GAA2B,UAAU,MAAV,EAA8B;AAAA,2CAAT,OAAS;AAAT,mBAAS;AAAA;;AACrD;AACA,YAAI,UAAU,IAAI,OAAJ,CAAY,UAAC,OAAD,EAAU,MAAV,EAAqB;AAC3C,qBAAS,UAAT,IAAuB,EAAE,cAAF,EAAU,gBAAV,EAAmB,gBAAnB,EAA4B,cAA5B,EAAvB;AACH,SAFa,CAAd;;AAID,YAAI,gBAAJ;AAAA,YAAa,gBAAgB,EAA7B;;AAEC,YAAI,WAAW,QAAQ,MAAR,KAAmB,CAA9B,IAAmC,QAAQ,CAAR,aAAsB,aAAa,iBAA1E,EAA6F;AACzF,4BAAgB,QAAQ,CAAR,EAAW,aAA3B;AACA,sBAAU,QAAQ,CAAR,EAAW,KAArB;AACH;;AAED,kBAAU;AACN,kBAAM,aADA,EACkB;AACxB,kCAFM,EAEkB;AACxB,0BAHM,EAGkB;AACxB,4BAJM,CAIkB;AAJlB,SAAV;;AAOA,aAAK,WAAL,CAAiB,OAAjB,EAA0B,cAAc,GAAd,CAAkB;AAAA,mBAAK,EAAE,MAAP;AAAA,SAAlB,CAA1B;AACA,0BAAkB,aAAlB;AACA,YAAI,cAAc,MAAd,GAAuB,CAA3B,EAA8B;AAC1B,+BAAI,OAAJ,SAAiB,MAAjB,uBAAwC,cAAc,MAAtD;AACH;;AAED;AACA,eAAO,OAAP;AACH,KA5BD;;AA8BA,SAAK,gBAAL,CAAsB,SAAtB,EAAiC,SAAS,+BAAT,CAAyC,KAAzC,EAAgD;AAC7E,YAAI,OAAO,MAAM,IAAjB;AACA,YAAI,KAAK,KAAK,UAAd;;AAEA;AACA,YAAI,KAAK,IAAL,KAAc,YAAlB,EAAgC;AAC5B;AACA,gBAAI,SAAS,EAAT,CAAJ,EAAkB;AACd,oBAAI,KAAK,KAAT,EAAgB;AACZ,6BAAS,EAAT,EAAa,MAAb,CAAoB,KAAK,KAAzB;AACH,iBAFD,MAGK;AACD,6BAAS,EAAT,EAAa,OAAb,CAAqB,KAAK,OAA1B;AACH;AACD,uBAAO,SAAS,EAAT,CAAP;AACH;AACJ;AACD;AACA;AAbA,aAcK,IAAI,KAAK,IAAL,KAAc,WAAd,IAA6B,MAAM,IAAvC,EAA6C;AAC9C;AAD8C,mCAElB,WAAW,KAAK,MAAhB,CAFkB;AAAA;AAAA,oBAEzC,WAFyC;AAAA,oBAE5B,MAF4B;;AAG9C,oBAAI,CAAC,MAAL,EAAa;AACT,0BAAM,yDAAuD,KAAK,MAA5D,mBAAgF,KAAK,MAArF,oEAAN;AACH;;AAED,oBAAI,SAAU,OAAO,OAAO,WAAP,CAAP,KAA+B,UAAhC,IAA+C,OAAO,WAAP,CAA5D;;AAEA,oBAAI,CAAC,MAAL,EAAa;AACT,0BAAM,yDAAuD,KAAK,MAA5D,kDAAN;AACH;;AAED,oBAAI,MAAJ,EAAY,KAAZ;AACA,oBAAI;AACA,6BAAS,OAAO,KAAP,CAAa,MAAb,EAAqB,KAAK,OAA1B,CAAT;AACH,iBAFD,CAGA,OAAM,CAAN,EAAS;AACL;AACA,4BAAQ,CAAR;AACH;;AAED;AACA,oBAAI,gBAAJ;AAAA,oBAAa,gBAAgB,EAA7B;;AAEA;AACA,oBAAI,kBAAkB,OAAtB,EAA+B;AAC3B,2BAAO,IAAP,CAAY,UAAC,KAAD,EAAW;AACnB,4BAAI,iBAAiB,aAAa,iBAAlC,EAAqD;AACjD,4CAAgB,MAAM,aAAtB;AACA,oCAAQ,MAAM,KAAN,CAAY,CAAZ,CAAR;AACH;;AAED,kCAAU;AACN,kCAAM,cADA;AAEN,wCAAY,EAFN;AAGN,qCAAS;AAHH,yBAAV;AAKA,6BAAK,WAAL,CAAiB,OAAjB,EAA0B,cAAc,GAAd,CAAkB;AAAA,mCAAK,EAAE,MAAP;AAAA,yBAAlB,CAA1B;AACA,0CAAkB,aAAlB;AACA,4BAAI,cAAc,MAAd,GAAuB,CAA3B,EAA8B;AAC1B,+CAAI,OAAJ,SAAiB,WAAjB,uBAA6C,cAAc,MAA3D;AACH;AACJ,qBAhBD,EAgBG,UAAC,KAAD,EAAW;AACV,6BAAK,WAAL,CAAiB;AACb,kCAAM,cADO;AAEb,wCAAY,EAFC;AAGb,mCAAQ,iBAAiB,KAAjB,GAA4B,MAAM,OAAlC,UAA8C,MAAM,KAApD,GAA8D;AAHzD,yBAAjB;AAKH,qBAtBD;AAuBH;AACD;AAzBA,qBA0BK;AACD,4BAAI,kBAAkB,aAAa,iBAAnC,EAAsD;AAClD,4CAAgB,OAAO,aAAvB;AACA,qCAAS,OAAO,KAAP,CAAa,CAAb,CAAT;AACH;;AAED,kCAAU;AACN,kCAAM,cADA;AAEN,wCAAY,EAFN;AAGN,qCAAS,MAHH;AAIN,mCAAQ,iBAAiB,KAAjB,GAA4B,MAAM,OAAlC,UAA8C,MAAM,KAApD,GAA8D;AAJhE,yBAAV;AAMA,6BAAK,WAAL,CAAiB,OAAjB,EAA0B,cAAc,GAAd,CAAkB;AAAA,mCAAK,EAAE,MAAP;AAAA,yBAAlB,CAA1B;AACA,0CAAkB,aAAlB;AACA,4BAAI,cAAc,MAAd,GAAuB,CAA3B,EAA8B;AAC1B,+CAAI,OAAJ,SAAiB,WAAjB,uBAA6C,cAAc,MAA3D;AACH;AACJ;AACJ;AACJ,KA1FD;AA4FH;;AAED;AACA,aAAa,iBAAb,GAAiC,YAAoB;AAAA,uCAAP,KAAO;AAAP,aAAO;AAAA;;AACjD,QAAI,EAAE,gBAAgB,aAAa,iBAA/B,CAAJ,EAAuD;AACnD,kDAAW,aAAa,iBAAxB,gBAA6C,KAA7C;AACH;;AAED,SAAK,KAAL,GAAa,KAAb;AACA,SAAK,aAAL,GAAqB,kBAAkB,KAAK,KAAvB,CAArB;AACH,CAPD;;AASA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,iBAAT,CAA2B,MAA3B,EAA8E;AAAA,QAA3C,MAA2C,uEAAlC,IAAkC;AAAA,QAA5B,QAA4B,uEAAjB,IAAiB;AAAA,QAAX,IAAW,uEAAJ,EAAI;;AAC1E,QAAI,CAAC,MAAL,EAAa;AACR,eAAO,IAAP;AACJ;;AAED,QAAI,MAAM,OAAN,CAAc,MAAd,CAAJ,EAA2B;AACvB;AACA,eAAO,OAAP,CAAe,UAAC,CAAD,EAAI,CAAJ;AAAA,mBAAU,kBAAkB,CAAlB,EAAqB,MAArB,EAA6B,CAA7B,EAAgC,IAAhC,CAAV;AAAA,SAAf;AACH,KAHD,MAIK,IAAI,QAAO,MAAP,yCAAO,MAAP,OAAkB,QAAtB,EAAgC;AACjC;AACA,YAAI,kBAAkB,WAAtB,EAAmC;AAC/B,iBAAK,IAAL,CAAU,EAAE,QAAQ,MAAV,EAAkB,cAAlB,EAA0B,kBAA1B,EAAV;AACH;AACD;AAHA,aAIK,IAAI,OAAO,MAAP,YAAyB,WAA7B,EAA0C;AAC3C,qBAAK,IAAL,CAAU,EAAE,QAAQ,OAAO,MAAjB,EAAyB,cAAzB,EAAiC,kBAAjC,EAAV;AACH;AACD;AAHK,iBAIA;AACD,yBAAK,IAAI,IAAT,IAAiB,MAAjB,EAAyB;AACrB,0CAAkB,OAAO,IAAP,CAAlB,EAAgC,MAAhC,EAAwC,IAAxC,EAA8C,IAA9C;AACH;AACJ;AACJ;AACD,WAAO,IAAP;AACH;;AAED;AACA,SAAS,iBAAT,CAA2B,aAA3B,EAA0C;AACtC,QAAI,CAAC,MAAM,OAAN,CAAc,aAAd,CAAL,EAAmC;AAC/B;AACH;AACD,kBAAc,MAAd,CAAqB;AAAA,eAAK,EAAE,MAAF,IAAY,EAAE,QAAnB;AAAA,KAArB,EAAkD,OAAlD,CAA0D;AAAA,eAAK,OAAO,EAAE,MAAF,CAAS,EAAE,QAAX,CAAZ;AAAA,KAA1D;AACH;;AAED;AACA,IAAI,iBAAO,OAAX,EAAoB;AAChB;AACH;;AAED,IAAI,iBAAO,SAAX,EAAsB;AAClB;AACH;;;;;;;;;;;ACzeD;;AAEA,IAAI,MAAJ;kBACe,SAAS,E;;;AAExB,OAAO,GAAP,GAAa,UAAU,CAAV,EAAa;AACtB,QAAI,IAAI,EAAR;AACA,QAAI,MAAM,EAAE,MAAZ;AACA,SAAK,IAAI,IAAI,CAAb,EAAgB,IAAI,GAApB,EAAyB,GAAzB,EAA8B;AAC1B,UAAE,CAAF,IAAO,EAAE,CAAF,CAAP;AACH;AACD,WAAO,CAAP;AACH,CAPD;;AASA,OAAO,GAAP,GAAa,UAAU,CAAV,EAAa;AACtB,QAAI,IAAI,EAAR;AACA,QAAI,MAAM,EAAE,MAAZ;AACA,SAAK,IAAI,IAAI,CAAb,EAAgB,IAAI,GAApB,EAAyB,GAAzB,EAA8B;AAC1B,UAAE,CAAF,IAAO,CAAC,EAAE,CAAF,CAAR;AACH;AACD,WAAO,CAAP;AACH,CAPD;;AASA;AACA,OAAO,GAAP,GAAa,UAAU,EAAV,EAAc,EAAd,EAAkB;AAC3B,QAAI,IAAI,EAAR;AACA,QAAI,MAAM,KAAK,GAAL,CAAS,GAAG,MAAZ,EAAmB,GAAG,MAAtB,CAAV;AACA,SAAK,IAAI,IAAI,CAAb,EAAgB,IAAI,GAApB,EAAyB,GAAzB,EAA8B;AAC1B,UAAE,CAAF,IAAO,GAAG,CAAH,IAAQ,GAAG,CAAH,CAAf;AACH;AACD,WAAO,CAAP;AACH,CAPD;;AASA;AACA,OAAO,GAAP,GAAa,UAAU,EAAV,EAAc,EAAd,EAAkB;AAC3B,QAAI,IAAI,EAAR;AACA,QAAI,MAAM,KAAK,GAAL,CAAS,GAAG,MAAZ,EAAmB,GAAG,MAAtB,CAAV;;AAEA,SAAK,IAAI,IAAI,CAAb,EAAgB,IAAI,GAApB,EAAyB,GAAzB,EAA8B;AAC1B,UAAE,CAAF,IAAO,GAAG,CAAH,IAAQ,GAAG,CAAH,CAAf;AACH;AACD,WAAO,CAAP;AACH,CARD;;AAUA,OAAO,WAAP,GAAqB,UAAU,EAAV,EAAc,EAAd,EAAkB,EAAlB,EAAsB;AACvC,WAAO,CAAC,GAAG,CAAH,IAAM,GAAG,CAAH,CAAP,KAAe,GAAG,CAAH,IAAM,GAAG,CAAH,CAArB,IAA8B,CAAC,GAAG,CAAH,IAAM,GAAG,CAAH,CAAP,KAAe,GAAG,CAAH,IAAM,GAAG,CAAH,CAArB,CAArC;AACH,CAFD;;AAIA;AACA,OAAO,IAAP,GAAc,UAAU,EAAV,EAAc,EAAd,EAAkB;AAC5B,QAAI,IAAI,EAAR;AAAA,QACI,MAAM,GAAG,MADb;AAAA,QAEI,CAFJ;;AAIA,QAAI,OAAO,EAAP,KAAc,QAAlB,EAA4B;AACxB;AACA,aAAK,IAAI,CAAT,EAAY,IAAI,GAAhB,EAAqB,GAArB,EAA0B;AACtB,cAAE,CAAF,IAAO,GAAG,CAAH,IAAQ,EAAf;AACH;AACJ,KALD,MAMK;AACD;AACA,cAAM,KAAK,GAAL,CAAS,GAAG,MAAZ,EAAmB,GAAG,MAAtB,CAAN;AACA,aAAK,IAAI,CAAT,EAAY,IAAI,GAAhB,EAAqB,GAArB,EAA0B;AACtB,cAAE,CAAF,IAAO,GAAG,CAAH,IAAQ,GAAG,CAAH,CAAf;AACH;AACJ;AACD,WAAO,CAAP;AACH,CAnBD;;AAqBA;AACA,OAAO,GAAP,GAAa,UAAU,EAAV,EAAc,EAAd,EAAkB;AAC3B,QAAI,IAAI,EAAR;AAAA,QACI,CADJ;AAEA,QAAG,OAAO,EAAP,KAAc,QAAjB,EAA0B;AACtB;AACA,aAAK,IAAI,CAAT,EAAY,IAAI,GAAG,MAAnB,EAA2B,GAA3B,EAA+B;AAC3B,cAAE,CAAF,IAAO,GAAG,CAAH,IAAQ,EAAf;AACH;AACJ,KALD,MAKO;AACH;AACA,YAAI,MAAM,KAAK,GAAL,CAAS,GAAG,MAAZ,EAAmB,GAAG,MAAtB,CAAV;AACA,aAAK,IAAI,CAAT,EAAY,IAAI,GAAhB,EAAqB,GAArB,EAA0B;AACtB,cAAE,CAAF,IAAO,GAAG,CAAH,IAAQ,GAAG,CAAH,CAAf;AACH;AACJ;AACD,WAAO,CAAP;AACH,CAhBD;;AAkBA;AACA,OAAO,IAAP,GAAc,UAAU,EAAV,EAAc,EAAd,EAAkB;AAC5B,WAAO,CACH,GAAG,CAAH,IAAQ,GAAG,CAAH,CADL,EAEH,GAAG,CAAH,IAAQ,GAAG,CAAH,CAFL,CAAP;AAIH,CALD;;AAOA;AACA,OAAO,GAAP,GAAa,UAAU,CAAV,EAAa,CAAb,EAAgB;AACzB,QAAI,IAAI,KAAK,GAAL,CAAS,CAAT,CAAR;AACA,QAAI,IAAI,KAAK,GAAL,CAAS,CAAT,CAAR;AACA,WAAO,CACH,EAAE,CAAF,IAAO,CAAP,GAAW,EAAE,CAAF,IAAO,CADf,EAEH,EAAE,CAAF,IAAO,CAAP,GAAW,EAAE,CAAF,IAAO,CAFf,CAAP;AAIH,CAPD;;AASA;AACA;AACA;AACA,OAAO,KAAP,GAAe,gBAAkB;AAAA;AAAA,QAAP,CAAO;AAAA,QAAJ,CAAI;;AAC7B,WAAO,KAAK,KAAL,CAAW,CAAX,EAAa,CAAb,CAAP;AACH,CAFD;;AAIA;AACA,OAAO,YAAP,GAAsB,UAAS,CAAT,EAAY,CAAZ,EAAc;AAChC,QAAI,QAAQ,OAAO,GAAP,CACR,OAAO,SAAP,CAAiB,CAAjB,CADQ,EAER,OAAO,SAAP,CAAiB,CAAjB,CAFQ,CAAZ;AAIA,QAAI,QAAQ,CAAZ,EAAe;AAAC,gBAAQ,CAAR;AAAW,KALK,CAKJ;AAC5B,WAAO,KAAK,IAAL,CAAU,KAAV,CAAP;AACH,CAPD;;AASA;AACA,OAAO,OAAP,GAAiB,UAAU,EAAV,EAAc,EAAd,EAAkB;AAC/B,QAAI,MAAM,GAAG,MAAb;AACA,SAAK,IAAI,IAAI,CAAb,EAAgB,IAAI,GAApB,EAAyB,GAAzB,EAA8B;AAC1B,YAAI,GAAG,CAAH,MAAU,GAAG,CAAH,CAAd,EAAoB;AAChB,mBAAO,KAAP;AACH;AACJ;AACD,WAAO,IAAP;AACH,CARD;;AAUA;AACA,OAAO,QAAP,GAAkB,UAAU,CAAV,EAAa;AAC3B,QAAI,EAAE,MAAF,KAAa,CAAjB,EAAoB;AAChB,eAAQ,EAAE,CAAF,IAAK,EAAE,CAAF,CAAL,GAAY,EAAE,CAAF,IAAK,EAAE,CAAF,CAAzB;AACH,KAFD,MAGK,IAAI,EAAE,MAAF,IAAY,CAAhB,EAAmB;AACpB,eAAQ,EAAE,CAAF,IAAK,EAAE,CAAF,CAAL,GAAY,EAAE,CAAF,IAAK,EAAE,CAAF,CAAjB,GAAwB,EAAE,CAAF,IAAK,EAAE,CAAF,CAArC;AACH;AACD,WAAO,CAAP;AACH,CARD;;AAUA;AACA,OAAO,MAAP,GAAgB,UAAU,CAAV,EAAa;AACzB,WAAO,KAAK,IAAL,CAAU,OAAO,QAAP,CAAgB,CAAhB,CAAV,CAAP;AACH,CAFD;;AAIA;AACA,OAAO,SAAP,GAAmB,UAAU,CAAV,EAAa;AAC5B,QAAI,CAAJ;AACA,QAAI,EAAE,MAAF,KAAa,CAAjB,EAAoB;AAChB,YAAI,EAAE,CAAF,IAAK,EAAE,CAAF,CAAL,GAAY,EAAE,CAAF,IAAK,EAAE,CAAF,CAArB;;AAEA,YAAI,MAAM,CAAV,EAAa;AACT,mBAAO,CAAP;AACH;;AAED,YAAI,KAAK,IAAL,CAAU,CAAV,CAAJ;;AAEA,YAAI,MAAM,CAAV,EAAa;AACT,mBAAO,CAAC,EAAE,CAAF,IAAO,CAAR,EAAW,EAAE,CAAF,IAAO,CAAlB,CAAP;AACH;AACD,eAAO,CAAC,CAAD,EAAI,CAAJ,CAAP;AACH,KAbD,MAaO,IAAI,EAAE,MAAF,IAAY,CAAhB,EAAmB;AACtB,YAAI,EAAE,CAAF,IAAK,EAAE,CAAF,CAAL,GAAY,EAAE,CAAF,IAAK,EAAE,CAAF,CAAjB,GAAwB,EAAE,CAAF,IAAK,EAAE,CAAF,CAAjC;;AAEA,YAAI,MAAM,CAAV,EAAa;AACT,mBAAO,CAAP;AACH;;AAED,YAAI,KAAK,IAAL,CAAU,CAAV,CAAJ;;AAEA,YAAI,MAAM,CAAV,EAAa;AACT,mBAAO,CAAC,EAAE,CAAF,IAAO,CAAR,EAAW,EAAE,CAAF,IAAO,CAAlB,EAAqB,EAAE,CAAF,IAAO,CAA5B,CAAP;AACH;AACJ;AACD,WAAO,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAAP;AACH,CA7BD;;AA+BA;AACA,OAAO,KAAP,GAAgB,UAAU,EAAV,EAAc,EAAd,EAAkB;AAC9B,QAAI,GAAG,MAAH,KAAc,CAAlB,EAAoB;AAChB,eAAO,GAAG,CAAH,IAAQ,GAAG,CAAH,CAAR,GAAgB,GAAG,CAAH,IAAQ,GAAG,CAAH,CAA/B;AACH,KAFD,MAGK,IAAI,GAAG,MAAH,KAAc,CAAlB,EAAoB;AACrB,eAAO,CACF,GAAG,CAAH,IAAQ,GAAG,CAAH,CAAT,GAAmB,GAAG,CAAH,IAAQ,GAAG,CAAH,CADxB,EAEF,GAAG,CAAH,IAAQ,GAAG,CAAH,CAAT,GAAmB,GAAG,CAAH,IAAQ,GAAG,CAAH,CAFxB,EAGF,GAAG,CAAH,IAAQ,GAAG,CAAH,CAAT,GAAmB,GAAG,CAAH,IAAQ,GAAG,CAAH,CAHxB,CAAP;AAKH;AACJ,CAXD;;AAaA;AACA,OAAO,GAAP,GAAa,UAAU,EAAV,EAAc,EAAd,EAAkB;AAC3B,QAAI,IAAI,CAAR;AACA,QAAI,MAAM,KAAK,GAAL,CAAS,GAAG,MAAZ,EAAoB,GAAG,MAAvB,CAAV;AACA,SAAK,IAAI,IAAI,CAAb,EAAgB,IAAI,GAApB,EAAyB,GAAzB,EAA8B;AAC1B,aAAK,GAAG,CAAH,IAAQ,GAAG,CAAH,CAAb;AACH;AACD,WAAO,CAAP;AACH,CAPD;;;;;;;;;;;;;;ACtMA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;;;;;AAEO,IAAM,kDAAqB,GAA3B;;IAEc,I;AAEjB,kBAAa,KAAb,EAAoB,OAApB,EAA6B;AAAA;;AACzB,iCAAe,IAAf;;AAEA,aAAK,KAAL,GAAa,KAAb;AACA,aAAK,cAAL;;AAEA,aAAK,IAAL,GAAY,IAAZ;AACA,aAAK,MAAL,GAAc,IAAd;AACA,aAAK,MAAL,GAAc,IAAd;AACA,aAAK,gBAAL,GAAwB,IAAxB;;AAEA,aAAK,OAAL,GAAe,KAAf;AACA,aAAK,eAAL,GAAuB,CAAvB;AACA,aAAK,cAAL,GAAsB,CAAtB;AACA,aAAK,cAAL,GAAsB,CAAtB;;AAEA,aAAK,aAAL,GAAqB,CAArB;AACA,aAAK,kBAAL,GAA0B,EAA1B;AACA,aAAK,iBAAL,GAAyB,KAAzB;;AAEA;AACA,aAAK,IAAL,GAAY;AACR,iBAAK,EADG;AAER,oBAAQ,EAFA;AAGR,oBAAQ;AAHA,SAAZ;AAKA,aAAK,MAAL,GAAc,IAAd;;AAEA,aAAK,MAAL,GAAc,CAAd;AACA,aAAK,eAAL,GAAwB,OAAO,QAAQ,cAAf,KAAkC,SAAnC,GAAgD,QAAQ,cAAxD,GAAyE,IAAhG;AACA,aAAK,IAAL,GAAa,QAAQ,QAAR,KAAqB,KAAtB,GAA+B,KAA/B,GAAuC,IAAnD;AACA,aAAK,0BAAL,GAAkC,CAAlC;;AAEA,aAAK,KAAL;AACH;;AAED;;;;;gCACS;AACL,iBAAK,YAAL;AACH;;AAED;;;;uCACgB;AACZ,gBAAI,gBAAgB,KAAK,eAAL,EAApB;AACA,gBAAI,aAAJ,EAAmB;AACf,qBAAK,MAAL,GAAc,iBAAO,MAAP,CAAc,aAAd,EAA6B,IAA7B,EAAmC,KAAK,KAAL,CAAW,MAAX,CAAkB,OAAlB,CAA0B,aAA1B,CAAnC,CAAd;AACA,qBAAK,MAAL,CAAY,UAAZ;AACH;AACJ;;AAED;;;;0CACmB;AACf,gBAAI,KAAK,KAAL,CAAW,MAAX,IAAqB,KAAK,KAAL,CAAW,MAAX,CAAkB,OAA3C,EAAoD;AAChD,qBAAK,IAAI,IAAT,IAAiB,KAAK,KAAL,CAAW,MAAX,CAAkB,OAAnC,EAA4C;AACxC,wBAAI,KAAK,KAAL,CAAW,MAAX,CAAkB,OAAlB,CAA0B,IAA1B,EAAgC,MAApC,EAA4C;AACxC,+BAAO,IAAP;AACH;AACJ;;AAED;AACA,oBAAI,OAAO,OAAO,IAAP,CAAY,KAAK,KAAL,CAAW,MAAX,CAAkB,OAA9B,CAAX;AACA,uBAAO,KAAK,MAAL,IAAe,KAAK,CAAL,CAAtB;AACH;AACJ;;AAED;;;;wCACiB,I,EAAM;AACnB,gBAAI,OAAO,KAAK,eAAL,EAAX;AACA,gBAAI,KAAK,KAAL,CAAW,MAAX,CAAkB,OAAlB,CAA0B,IAA1B,CAAJ,EAAqC;AACjC,qBAAK,KAAL,CAAW,MAAX,CAAkB,OAAlB,CAA0B,IAA1B,EAAgC,MAAhC,GAAyC,IAAzC;;AAEA;AACA,oBAAI,QAAQ,SAAS,IAAjB,IAAyB,KAAK,KAAL,CAAW,MAAX,CAAkB,OAAlB,CAA0B,IAA1B,CAA7B,EAA8D;AAC1D,2BAAO,KAAK,KAAL,CAAW,MAAX,CAAkB,OAAlB,CAA0B,IAA1B,EAAgC,MAAvC;AACH;AACJ;;AAED,iBAAK,KAAL,CAAW,YAAX,CAAwB,EAAE,SAAS,KAAX,EAAkB,WAAW,KAA7B,EAAxB;AACA,mBAAO,KAAK,eAAL,EAAP;AACH;;AAED;;;;iCACU;AACN,gBAAI,KAAK,MAAL,IAAe,IAAf,IAAuB,KAAK,KAAL,EAA3B,EAAyC;AACrC,qBAAK,MAAL,CAAY,MAAZ;AACH;AACD,iBAAK,cAAL,GAAsB,CAAE,CAAC,IAAI,IAAJ,EAAF,GAAgB,KAAK,eAAtB,IAAyC,IAA/D;AACA,iBAAK,iBAAL,GAA2B,CAAC,IAAI,IAAJ,EAAD,GAAc,KAAK,aAApB,GAAqC,KAAK,kBAApE;AACH;;AAED;;;;wCACiB,K,EAAO,M,EAAQ;AAC5B,iBAAK,IAAL,CAAU,GAAV,GAAgB,EAAE,YAAF,EAAS,cAAT,EAAhB;AACA,iBAAK,IAAL,CAAU,MAAV,GAAmB;AACf,uBAAO,KAAK,KAAL,CAAW,KAAK,IAAL,CAAU,GAAV,CAAc,KAAd,GAAsB,gBAAM,kBAAvC,CADQ;AAEf,wBAAQ,KAAK,KAAL,CAAW,KAAK,IAAL,CAAU,GAAV,CAAc,MAAd,GAAuB,gBAAM,kBAAxC;AAFO,aAAnB;AAIA,iBAAK,MAAL,GAAc,KAAK,IAAL,CAAU,GAAV,CAAc,KAAd,GAAsB,KAAK,IAAL,CAAU,GAAV,CAAc,MAAlD;AACA,iBAAK,YAAL;AACH;;AAED;;;;kCACkC;AAAA,2FAAJ,EAAI;AAAA,gBAAvB,GAAuB,QAAvB,GAAuB;AAAA,gBAAlB,GAAkB,QAAlB,GAAkB;AAAA,gBAAb,IAAa,QAAb,IAAa;;AAC9B,gBAAI,UAAU,KAAd;;AAEA;AACA,gBAAI,OAAO,GAAP,KAAe,QAAf,IAA2B,OAAO,GAAP,KAAe,QAA9C,EAAwD;AACpD,oBAAI,CAAC,KAAK,MAAN,IAAgB,QAAQ,KAAK,MAAL,CAAY,GAApC,IAA2C,QAAQ,KAAK,MAAL,CAAY,GAAnE,EAAwE;AACpE,8BAAU,IAAV;AACA,yBAAK,MAAL,GAAc,EAAE,QAAF,EAAO,QAAP,EAAd;AACH;AACJ;;AAED;AACA,gBAAI,OAAO,IAAP,KAAgB,QAAhB,IAA4B,SAAS,KAAK,IAA9C,EAAoD;AAChD,0BAAU,IAAV;AACA,qBAAK,OAAL,CAAa,IAAb;AACH;;AAED,gBAAI,OAAJ,EAAa;AACT,qBAAK,YAAL;AACH;AACD,mBAAO,OAAP;AACH;;;gCAEQ,I,EAAM;AACX,gBAAI,iBAAiB,KAAK,SAA1B;AACA,gBAAI,YAAY,KAAK,QAAL,CAAc,IAAd,CAAhB;AACA,gBAAI,CAAC,KAAK,eAAV,EAA2B;AACvB,uBAAO,SAAP;AACH;;AAED,gBAAI,cAAc,cAAlB,EAAkC;AAC9B,qBAAK,cAAL,GAAsB,YAAY,cAAZ,GAA6B,CAA7B,GAAiC,CAAC,CAAxD;AACH;;AAED,iBAAK,IAAL,GAAY,IAAZ;AACA,iBAAK,SAAL,GAAiB,SAAjB;;AAEA,iBAAK,YAAL;AACA,iBAAK,KAAL,CAAW,aAAX;AACH;;AAED;;;;iCACU,I,EAAM;AACZ,mBAAO,KAAK,KAAL,CAAW,IAAX,CAAP;AACH;;;mCAEW,O,EAAS;AACjB,iBAAK,OAAL,GAAe,OAAf;AACA,gBAAI,CAAC,KAAK,OAAV,EAAmB;AACf,qBAAK,eAAL,GAAwB,CAAC,IAAI,IAAJ,EAAzB;AACH;AACJ;;;wCAEgB;AACb,iBAAK,aAAL,GAAsB,CAAC,IAAI,IAAJ,EAAvB;AACH;;;gCAEQ;AACL;AACA,gBAAI,OAAO,KAAK,IAAL,CAAU,GAAV,CAAc,KAArB,KAA+B,QAA/B,IACA,OAAO,KAAK,IAAL,CAAU,GAAV,CAAc,MAArB,KAAgC,QADhC,IAEA,KAAK,MAAL,IAAe,IAFf,IAGA,OAAO,KAAK,IAAZ,KAAqB,QAHzB,EAGmC;AAC/B,uBAAO,KAAP;AACH;AACD,mBAAO,IAAP;AACH;;AAED;;;;uCACgB;AACZ,gBAAI,CAAC,KAAK,KAAL,EAAL,EAAmB;AACf;AACH;;AAED,iBAAK,gBAAL,GAAwB,cAAI,cAAJ,CAAmB,KAAK,IAAxB,CAAxB;;AAEA;AACA,iBAAK,IAAL,CAAU,MAAV,GAAmB;AACf,mBAAG,KAAK,IAAL,CAAU,GAAV,CAAc,KAAd,GAAsB,KAAK,gBADf;AAEf,mBAAG,KAAK,IAAL,CAAU,GAAV,CAAc,MAAd,GAAuB,KAAK;AAFhB,aAAnB;;AAKA;;AAbY,sCAcC,cAAI,cAAJ,CAAmB,CAAC,KAAK,MAAL,CAAY,GAAb,EAAkB,KAAK,MAAL,CAAY,GAA9B,CAAnB,CAdD;AAAA;AAAA,gBAcP,CAdO;AAAA,gBAcJ,CAdI;;AAeZ,iBAAK,MAAL,CAAY,MAAZ,GAAqB,EAAE,IAAF,EAAK,IAAL,EAArB;;AAEA,iBAAK,MAAL,CAAY,IAAZ,GAAmB,cAAI,aAAJ,CAAkB,CAAC,KAAK,MAAL,CAAY,MAAZ,CAAmB,CAApB,EAAuB,KAAK,MAAL,CAAY,MAAZ,CAAmB,CAA1C,CAAlB,EAAgE,KAAK,SAArE,CAAnB;;AAEA;AACA,iBAAK,MAAL,GAAc;AACV,oBAAI;AACA,uBAAG,KAAK,MAAL,CAAY,MAAZ,CAAmB,CAAnB,GAAuB,KAAK,IAAL,CAAU,MAAV,CAAiB,CAAjB,GAAqB,CAD/C;AAEA,uBAAG,KAAK,MAAL,CAAY,MAAZ,CAAmB,CAAnB,GAAuB,KAAK,IAAL,CAAU,MAAV,CAAiB,CAAjB,GAAqB;AAF/C,iBADM;AAKV,oBAAI;AACA,uBAAG,KAAK,MAAL,CAAY,MAAZ,CAAmB,CAAnB,GAAuB,KAAK,IAAL,CAAU,MAAV,CAAiB,CAAjB,GAAqB,CAD/C;AAEA,uBAAG,KAAK,MAAL,CAAY,MAAZ,CAAmB,CAAnB,GAAuB,KAAK,IAAL,CAAU,MAAV,CAAiB,CAAjB,GAAqB;AAF/C;AALM,aAAd;;AAWA,iBAAK,KAAL,CAAW,YAAX,CAAwB,kBAAxB;;AAEA,iBAAK,OAAL,CAAa,MAAb;AACA,iBAAK,KAAL,CAAW,aAAX,GAlCY,CAkCgB;AAC/B;;;qDAE6B;AAC1B,gBAAI,CAAC,KAAK,MAAV,EAAkB;AACd,uBAAO,EAAP;AACH;;AAED,gBAAI,IAAI,KAAK,SAAb;AACA,gBAAI,KAAK,cAAI,aAAJ,CAAkB,CAAC,KAAK,MAAL,CAAY,EAAZ,CAAe,CAAhB,EAAmB,KAAK,MAAL,CAAY,EAAZ,CAAe,CAAlC,CAAlB,EAAwD,CAAxD,CAAT;AACA,gBAAI,KAAK,cAAI,aAAJ,CAAkB,CAAC,KAAK,MAAL,CAAY,EAAZ,CAAe,CAAhB,EAAmB,KAAK,MAAL,CAAY,EAAZ,CAAe,CAAlC,CAAlB,EAAwD,CAAxD,CAAT;;AAEA,gBAAI,QAAQ,CACR,GAAG,CAAH,GAAO,KAAK,MADJ,EACY,GAAG,CAAH,GAAO,KAAK,MADxB,EACgC;AACxC,eAAG,CAAH,GAAO,KAAK,MAFJ,EAEY,GAAG,CAAH,GAAO,KAAK,MAFxB,CAEgC;AAFhC,aAAZ;;AAKA,gBAAI,KAAK,IAAL,KAAc,KAAlB,EAAyB;AAAE;AACvB,oBAAI,OAAO,CAAC,KAAK,CAAN,IAAW,CAAtB,CADqB,CACI;AACzB,wBAAQ,MAAM,GAAN,CAAU;AAAA,2BAAK,KAAK,GAAL,CAAS,KAAK,GAAL,CAAS,CAAT,EAAY,CAAZ,CAAT,EAAyB,IAAzB,CAAL;AAAA,iBAAV,CAAR;AACH;;AAED,gBAAI,SAAS,EAAb;AACA,iBAAK,IAAI,IAAI,MAAM,CAAN,CAAb,EAAuB,KAAK,MAAM,CAAN,CAA5B,EAAsC,GAAtC,EAA2C;AACvC,qBAAK,IAAI,IAAI,MAAM,CAAN,CAAb,EAAuB,KAAK,MAAM,CAAN,CAA5B,EAAsC,GAAtC,EAA2C;AACvC,2BAAO,IAAP,CAAY,eAAK,KAAL,CAAW,EAAE,IAAF,EAAK,IAAL,EAAQ,IAAR,EAAX,CAAZ;AACH;AACJ;AACD,mBAAO,MAAP;AACH;;AAED;;;;4CACqB;AAAA;;AACjB;AACA,gBAAI,CAAC,KAAK,KAAL,EAAL,EAAmB;AACf;AACH;;AAED;AACA,gBAAI,eAAe,CACf,KAAK,IAAL,CAAU,CAAC,KAAK,KAAL,CAAW,KAAK,IAAL,CAAU,GAAV,CAAc,KAAd,GAAsB,cAAI,SAArC,IAAkD,CAAnD,IAAwD,CAAlE,CADe,EAEf,KAAK,IAAL,CAAU,CAAC,KAAK,KAAL,CAAW,KAAK,IAAL,CAAU,GAAV,CAAc,MAAd,GAAuB,cAAI,SAAtC,IAAmD,CAApD,IAAyD,CAAnE,CAFe,CAAnB;;AAKA,iBAAK,KAAL,CAAW,YAAX,CAAwB,WAAxB,CAAoC,gBAAQ;AACxC;AACA,oBAAI,KAAK,OAAL,IAAgB,KAAK,SAAzB,EAAoC;AAChC,2BAAO,KAAP;AACH;;AAED;AACA,oBAAI,KAAK,OAAL,IAAgB,KAAK,UAAL,KAAoB,MAAK,SAA7C,EAAwD;AACpD,2BAAO,IAAP;AACH;;AAED;AACA,oBAAI,QAAQ,KAAK,GAAL,CAAS,KAAK,UAAL,GAAkB,MAAK,SAAhC,CAAZ;AACA,oBAAI,QAAQ,MAAK,0BAAjB,EAA6C;AACzC,2BAAO,IAAP;AACH;;AAED;AACA,oBAAI,SAAS,eAAK,gBAAL,CAAsB,KAAK,MAA3B,EAAmC,MAAK,SAAxC,CAAb;;AAEA;AACA,oBAAI,KAAK,GAAL,CAAS,OAAO,CAAP,GAAW,MAAK,MAAL,CAAY,IAAZ,CAAiB,CAArC,IAA0C,aAAa,CAAb,CAA1C,GAA4D,MAAK,MAArE,EAA6E;AACzE,uCAAI,OAAJ,yBAAkC,KAAK,GAAvC,aAAkD,OAAO,CAAzD,SAA8D,OAAO,CAArE,SAA0E,MAAK,SAA/E;AACA,2BAAO,IAAP;AACH,iBAHD,MAIK,IAAI,KAAK,GAAL,CAAS,OAAO,CAAP,GAAW,MAAK,MAAL,CAAY,IAAZ,CAAiB,CAArC,IAA0C,aAAa,CAAb,CAA1C,GAA4D,MAAK,MAArE,EAA6E;AAC9E,uCAAI,OAAJ,yBAAkC,KAAK,GAAvC,aAAkD,OAAO,CAAzD,SAA8D,OAAO,CAArE,SAA0E,MAAK,SAA/E;AACA,2BAAO,IAAP;AACH;AACD,uBAAO,KAAP;AACH,aA9BD;AA+BH;;AAED;AACA;AACA;;;;yCACkB;AACd,iBAAK,QAAL,GAAgB,EAAhB;AACA,iBAAK,QAAL,CAAc,KAAd,GAAsB,IAAI,YAAJ,CAAiB,EAAjB,CAAtB;AACA,iBAAK,QAAL,CAAc,OAAd,GAAwB,IAAI,YAAJ,CAAiB,EAAjB,CAAxB;AACA,iBAAK,QAAL,CAAc,UAAd,GAA2B,IAAI,YAAJ,CAAiB,EAAjB,CAA3B;AACA,iBAAK,QAAL,CAAc,YAAd,GAA6B,IAAI,YAAJ,CAAiB,EAAjB,CAA7B;AACA,iBAAK,QAAL,CAAc,MAAd,GAAuB,IAAI,YAAJ,CAAiB,CAAjB,CAAvB;AACA,iBAAK,QAAL,CAAc,QAAd,GAAyB,IAAI,YAAJ,CAAiB,CAAjB,CAAzB;AACA,iBAAK,QAAL,CAAc,gBAAd,GAAiC,IAAI,YAAJ,CAAiB,CAAjB,CAAjC;AACH;;AAED;;;;kCACW,I,EAAM,O,EAAS;AACtB;AACA;AACA,iBAAK,YAAL,CAAkB,KAAK,QAAvB,EAAiC,OAAjC;;AAEA;AACA,iBAAK,MAAL,CAAY,aAAZ,CAA0B,KAAK,QAA/B,EAAyC,OAAzC;AACH;;AAED;;;;qCACc,O,EAAS;AACnB,oBAAQ,OAAR,CAAgB,KAAhB,EAAuB,cAAvB,EAAuC,CAAC,KAAK,IAAL,CAAU,MAAV,CAAiB,KAAlB,EAAyB,KAAK,IAAL,CAAU,MAAV,CAAiB,MAA1C,CAAvC;AACA,oBAAQ,OAAR,CAAgB,KAAhB,EAAuB,gBAAvB,EAAyC,CAAC,KAAK,MAAL,CAAY,MAAZ,CAAmB,CAApB,EAAuB,KAAK,MAAL,CAAY,MAAZ,CAAmB,CAA1C,EAA6C,KAAK,IAAlD,CAAzC;AACA,oBAAQ,OAAR,CAAgB,IAAhB,EAAsB,oBAAtB,EAA4C,KAAK,gBAAjD;AACA,oBAAQ,OAAR,CAAgB,IAAhB,EAAsB,sBAAtB,EAA8C,gBAAM,kBAApD;AACA,oBAAQ,OAAR,CAAgB,IAAhB,EAAsB,uBAAtB,EAA+C,KAAK,cAApD;AACA,oBAAQ,OAAR,CAAgB,IAAhB,EAAsB,gBAAtB,EAAwC,KAAK,OAA7C;;AAEA,iBAAK,MAAL,CAAY,YAAZ,CAAyB,OAAzB;AACH;;AAED;;;;sCACe;AACX,mBAAQ,KAAK,cAAL,IAAuB,kBAA/B;AACH;;;;;;kBAnUgB,I", + "mappings": "AAAA;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC/NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClHA;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClrDA;AACA;AACA;AACA;AACA;;ACJA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;;ACJA;AACA;AACA;AACA;AACA;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;;ACJA;AACA;;ACDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnBA;AACA;AACA;AACA;AACA;;ACJA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxBA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;;ACAA;AACA;AACA;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;;ACFA;;ACAA;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;;ACJA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1EA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;AACA;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1SA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC3GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpoBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9SA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACljDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnYA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACvQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AC7MA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC/2BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACnLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACngBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClaA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACl1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACphDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpsCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC/JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACtaA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACnIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AClHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACnEA;AACA;AACA;AACA;AACA;AACA;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC1kBA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;QCjDgB,W,GAAA,W;QAeA,kB,GA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", "file": "generated.js", "sourceRoot": "", "sourcesContent": [ @@ -496,7 +496,7 @@ "import RepeatGroup from './repeat_group';\nimport log from '../utils/log';\n\nvar Collision;\n\nexport default Collision = {\n\n tiles: {},\n\n startTile (tile) {\n let state = this.tiles[tile] = {\n bboxes: { // current set of placed bounding boxes\n aabb: [],\n obb: []\n },\n objects: {}, // objects to collide, grouped by priority, then by style\n keep: {}, // objects that were kept after collision, grouped by style\n styles: {} // styles contributing collision objects\n };\n\n // Promise resolved when all registered styles have added objects\n if (state.complete == null) {\n state.complete = new Promise((resolve, reject) => {\n state.resolve = resolve;\n state.reject = reject;\n });\n }\n },\n\n resetTile (tile) {\n delete this.tiles[tile];\n },\n\n abortTile (tile) {\n if (this.tiles[tile] && this.tiles[tile].resolve) {\n this.tiles[tile].resolve([]);\n }\n this.resetTile(tile);\n },\n\n // Add a style to the pending set, collision will block on all styles submitting to collision set\n addStyle (style, tile) {\n this.tiles[tile].styles[style] = true;\n },\n\n // Add collision objects for a style\n collide (objects, style, tile) {\n let state = this.tiles[tile];\n if (!state) {\n log('trace', 'Collision.collide() called with null tile', tile, this.tiles, style, objects);\n return Promise.resolve([]);\n }\n\n // Group by priority and style\n let tile_objects = state.objects;\n for (let i=0; i < objects.length; i++) {\n let obj = objects[i];\n let priority = obj.label.layout.priority;\n tile_objects[priority] = tile_objects[priority] || {};\n tile_objects[priority][style] = tile_objects[priority][style] || [];\n tile_objects[priority][style].push(obj);\n }\n\n // Remove from pending style set, if no more styles, do collision & finish tile\n delete state.styles[style];\n if (Object.keys(state.styles).length === 0) {\n this.endTile(tile);\n }\n\n // Wait for objects to be added from all styles\n return state.complete.then(() => {\n state.resolve = null;\n return state.keep[style] || [];\n });\n },\n\n // Test labels for collisions, higher to lower priority\n // When two collide, discard the lower-priority label\n endTile (tile) {\n let state = this.tiles[tile];\n let keep = state.keep;\n\n RepeatGroup.clear(tile);\n\n // Process labels by priority, then by style\n let priorities = Object.keys(state.objects).sort((a, b) => a - b);\n for (let p=0; p < priorities.length; p++) {\n let style_objects = state.objects[priorities[p]];\n if (!style_objects) { // no labels at this priority, skip to next\n continue;\n }\n\n // For each style\n for (let style in style_objects) {\n let objects = style_objects[style];\n keep[style] = keep[style] || [];\n\n for (let i = 0; i < objects.length; i++) {\n let object = objects[i];\n if (this.canBePlaced(object, tile, object.linked)) {\n // Keep object if it isn't dependent on a parent object\n if (!object.linked) {\n keep[style].push(object);\n this.place(object, tile);\n }\n // If object is dependent on a parent, only keep if both can be placed\n else if (this.canBePlaced(object.linked, tile, object)) {\n keep[style].push(object);\n this.place(object, tile);\n this.place(object.linked, tile);\n }\n }\n }\n }\n }\n\n delete this.tiles[tile];\n state.resolve();\n },\n\n // Run collision and repeat check to see if label can currently be placed\n canBePlaced (object, tile, exclude = null) {\n let label = object.label;\n let layout = object.label.layout;\n\n // Skip if already processed (e.g. by parent object)\n if (label.placed != null) {\n return label.placed;\n }\n\n // Test the label for intersections with other labels in the tile\n let bboxes = this.tiles[tile].bboxes;\n if (!layout.collide || !label.discard(bboxes, exclude && exclude.label)) {\n // check for repeats\n let repeat = RepeatGroup.check(label, layout, tile);\n if (repeat) {\n // log('trace', `discard label '${label.text}', (one_per_group: ${repeat.one_per_group}), dist ${Math.sqrt(repeat.dist_sq)/layout.units_per_pixel} < ${Math.sqrt(repeat.repeat_dist_sq)/layout.units_per_pixel}`);\n label.placed = false;\n }\n else {\n return true;\n }\n }\n else if (layout.collide) {\n // log('trace', `discard label '${label.text}' due to collision`);\n label.placed = false;\n }\n return label.placed;\n },\n\n // Place label\n place ({ label }, tile) {\n // Skip if already processed (e.g. by parent object)\n if (label.placed != null) {\n return;\n }\n\n // Register as placed for future collision and repeat culling\n RepeatGroup.add(label, label.layout, tile);\n label.add(this.tiles[tile].bboxes);\n }\n\n};\n", "\n// Do AABB `a` and `b` intersect?\nexport function boxIntersectsBox (a, b) {\n if (a[2] < b[0] || // a is left of b\n a[0] > b[2] || // a is right of b\n a[3] < b[1] || // a is above b\n a[1] > b[3]) { // a is below b\n return false;\n }\n return true; // boxes overlap\n}\n\n// Does AABB `a` intersect any of the AABBs in array `boxes`?\n// Invokes `callback` with index of intersecting box\n// Stops intersecting if `callback` returns non-null value (continues otherwise)\nexport function boxIntersectsList (a, boxes, callback) {\n for (let i=0; i < boxes.length; i++) {\n if (boxIntersectsBox(a, boxes[i])) {\n if (callback(i) != null) {\n break;\n }\n }\n }\n}\n", "import PointAnchor from './point_anchor';\nimport {boxIntersectsList} from './intersect';\nimport Utils from '../utils/utils';\nimport OBB from '../utils/obb';\n// import log from '../utils/log';\n\nexport default class Label {\n\n constructor (size, layout = {}) {\n this.size = size;\n this.layout = layout;\n this.position = null;\n this.anchor = Array.isArray(this.layout.anchor) ? this.layout.anchor[0] : this.layout.anchor; // initial anchor\n this.placed = null;\n this.offset = layout.offset;\n this.aabb = null;\n this.obb = null;\n this.align = 'center';\n this.throw_away = false; // if label does not fit (exceeds tile boundary, etc) this boolean will be true\n }\n\n update () {\n this.align = this.layout.align || PointAnchor.alignForAnchor(this.anchor);\n }\n\n // check for overlaps with other labels in the tile\n occluded (bboxes, exclude = null) {\n let intersect = false;\n let aabbs = bboxes.aabb;\n let obbs = bboxes.obb;\n\n // Broad phase\n if (aabbs.length > 0) {\n boxIntersectsList(this.aabb, aabbs, (j) => {\n // log('trace', 'collision: broad phase collide', this.layout.id, this, this.aabb, aabbs[j]);\n\n // Skip if colliding with excluded label\n if (exclude && aabbs[j] === exclude.aabb) {\n // log('trace', 'collision: skipping due to explicit exclusion', this, exclude);\n return;\n }\n\n // Skip narrow phase collision if no rotation\n if (this.obb.angle === 0 && obbs[j].angle === 0) {\n // log('trace', 'collision: skip narrow phase collide because neither is rotated', this.layout.id, this, this.obb, obbs[j]);\n intersect = true;\n return true;\n }\n\n // Narrow phase\n if (OBB.intersect(this.obb, obbs[j])) {\n // log('trace', 'collision: narrow phase collide', this.layout.id, this, this.obb, obbs[j]);\n intersect = true;\n return true;\n }\n });\n }\n return intersect;\n }\n\n // Add this label's bounding box to the provided set\n add (bboxes) {\n this.placed = true;\n bboxes.aabb.push(this.aabb);\n bboxes.obb.push(this.obb);\n }\n\n // checks whether the label is within the tile boundaries\n inTileBounds () {\n let min = [ this.aabb[0], this.aabb[1] ];\n let max = [ this.aabb[2], this.aabb[3] ];\n\n if (!Utils.pointInTile(min) || !Utils.pointInTile(max)) {\n return false;\n }\n\n return true;\n }\n\n // Whether the label should be discarded\n // Depends on whether label must fit in the tile bounds, and if so, can it be moved to fit there\n discard(bboxes, exclude = null) {\n if (this.throw_away) {\n return true;\n }\n return this.occluded(bboxes, exclude);\n }\n}\n\nLabel.epsilon = 0.9999; // tolerance around collision boxes, prevent perfectly adjacent objects from colliding\n", - "import Label from './label';\nimport Vector from '../vector';\nimport OBB from '../utils/obb';\n\nconst STOPS = [0, 0.33, 0.66, 0.99]; // zoom levels for curved label snapshot data (offsets and angles)\nconst LINE_EXCEED_STRAIGHT = 1.5; // minimal ratio for straight labels (label length) / (line length)\nconst LINE_EXCEED_STRAIGHT_NO_CURVE = 1.8; // minimal ratio for straight labels that have no curved option (like Arabic)\nconst LINE_EXCEED_STAIGHT_LOOSE = 2.3; // 2nd pass minimal ratio for straight labels\nconst STRAIGHT_ANGLE_TOLERANCE = 0.1; // multiple \"almost straight\" segments within this angle tolerance can be considered one straight segment (in radians)\nconst CURVE_MIN_TOTAL_COST = 1.3; // curved line total curvature tolerance (sum in radians)\nconst CURVE_MIN_AVG_COST = 0.4; // curved line average curvature tolerance (mean)\nconst CURVE_MAX_ANGLE = 1; // curved line singular curvature tolerance (value in radians)\nconst ORIENTED_LABEL_OFFSET_FACTOR = 1.2; // multiply offset by this amount to avoid linked label collision\nconst VERTICAL_ANGLE_TOLERANCE = 0.01; // nearly vertical lines considered vertical within this angle tolerance\n\nlet LabelLine = {\n // Given a label's bounding box size and size of broken up individual segments\n // return a label that fits along the line geometry that is either straight (preferred) or curved (if straight tolerances aren't met)\n create : function(segment_size, total_size, line, layout){\n // The passes done for fitting a label, and provided tolerances for each pass\n // First straight is chosen with a low tolerance. Then curved. Then straight with a higher tolerance.\n const passes = [\n { type: 'straight', tolerance : (layout.no_curving) ? LINE_EXCEED_STRAIGHT_NO_CURVE : LINE_EXCEED_STRAIGHT },\n { type: 'curved' },\n { type: 'straight', tolerance : LINE_EXCEED_STAIGHT_LOOSE }\n ];\n\n // loop through passes. first label found wins.\n for (let i = 0; i < passes.length; i++){\n let check = passes[i];\n let label;\n if (check.type === 'straight'){\n label = new LabelLineStraight(total_size, line, layout, check.tolerance);\n }\n else if (check.type === 'curved' && !layout.no_curving && line.length > 2){\n label = new LabelLineCurved(segment_size, line, layout);\n }\n\n if (label && !label.throw_away) {\n return label;\n }\n }\n\n return false;\n }\n};\n\nexport default LabelLine;\n\n// Base class for a labels.\nclass LabelLineBase {\n constructor (layout) {\n this.layout = layout;\n this.position = [];\n this.angle = 0;\n this.offset = layout.offset.slice();\n this.obbs = [];\n this.aabbs = [];\n this.type = ''; // \"curved\" or \"straight\" to be set by parent class\n this.throw_away = false; // boolean that determines if label should be discarded\n }\n\n // Given a line, find the longest series of segments that maintains a constant orientation in the x-direction.\n // This assures us that the line has no orientation flip, so text would not appear upside-down.\n // If the line's orientation is reversed, the flip return value will be true, otherwise false\n static splitLineByOrientation(line){\n let current_line = [line[0]];\n let current_length = 0;\n let max_length = 0;\n let orientation = 0;\n let longest_line = current_line;\n let flip = false;\n\n for (let i = 1; i < line.length; i++) {\n let pt = line[i];\n let prev_pt = line[i - 1];\n let length = Vector.length(Vector.sub(pt, prev_pt));\n\n if (pt[0] > prev_pt[0]){\n // positive orientation\n if (orientation === 1){\n current_line.push(pt);\n current_length += length;\n if (current_length > max_length){\n longest_line = current_line;\n max_length = current_length;\n flip = false;\n }\n }\n else {\n current_line = [prev_pt, pt];\n current_length = length;\n if (current_length > max_length){\n longest_line = current_line;\n max_length = current_length;\n flip = false;\n }\n orientation = 1;\n }\n }\n else if (pt[0] < prev_pt[0]) {\n // negative orientation\n if (orientation === -1){\n current_line.unshift(pt);\n current_length += length;\n if (current_length > max_length){\n longest_line = current_line;\n max_length = current_length;\n flip = true;\n }\n }\n else {\n // prepend points (reverse order)\n current_line = [pt, prev_pt];\n current_length = length;\n if (current_length > max_length){\n longest_line = current_line;\n max_length = current_length;\n flip = true;\n }\n orientation = -1;\n }\n }\n else {\n // vertical line (doesn't change previous orientation)\n if (orientation === -1){\n current_line.unshift(pt);\n }\n else {\n current_line.push(pt);\n orientation = 1;\n }\n\n current_length += length;\n if (current_length > max_length){\n longest_line = current_line;\n max_length = current_length;\n\n flip = (orientation === -1);\n }\n }\n }\n\n return [longest_line, flip];\n }\n\n // Add each bounding box to the collision pass\n add(bboxes) {\n this.placed = true;\n for (let i = 0; i < this.aabbs.length; i++) {\n let aabb = this.aabbs[i];\n let obb = this.obbs[i];\n let obj = { aabb, obb };\n Label.prototype.add.call(obj, bboxes);\n }\n }\n\n // Checks each segment to see if it should be discarded (via collision). If any segment fails this test, they all fail.\n discard(bboxes, exclude = null) {\n if (this.throw_away) {\n return true;\n }\n\n for (let i = 0; i < this.obbs.length; i++){\n let aabb = this.aabbs[i];\n let obb = this.obbs[i];\n let obj = { aabb, obb };\n\n let shouldDiscard = Label.prototype.occluded.call(obj, bboxes, exclude);\n if (shouldDiscard) {\n return true;\n }\n }\n return false;\n }\n\n // Checks each segment to see if it is within the tile. If any segment fails this test, they all fail.\n inTileBounds() {\n for (let i = 0; i < this.aabbs.length; i++) {\n let aabb = this.aabbs[i];\n let obj = { aabb };\n let in_bounds = Label.prototype.inTileBounds.call(obj);\n if (!in_bounds) {\n return false;\n }\n }\n return true;\n }\n\n // Method to calculate oriented bounding box\n // \"angle\" is the angle of the text, \"angle_offset\" is the angle applied to the offset.\n // This distinction is necessary for labels with \"left\" (inner) or \"right\" (outer) offsets\n static createOBB (position, width, height, angle, angle_offset, offset, upp) {\n let p0 = position[0];\n let p1 = position[1];\n\n // apply offset, x positive, y pointing down\n if (offset && (offset[0] !== 0 || offset[1] !== 0)) {\n offset = Vector.rot(offset, angle_offset);\n p0 += offset[0] * upp;\n p1 -= offset[1] * upp;\n }\n\n // the angle of the obb is negative since it's the tile system y axis is pointing down\n return new OBB(p0, p1, -angle, width, height);\n }\n}\n\n// Class for straight labels.\n// Extends base LabelLine class.\nclass LabelLineStraight extends LabelLineBase {\n constructor (size, line, layout, tolerance){\n super(layout);\n this.type = 'straight';\n this.throw_away = !this.fit(size, line, layout, tolerance);\n }\n\n // Determine if the label can fit the geometry within provided tolerance\n // A straight label is generally placed at segment midpoints, but can \"look ahead\" to further segments\n // if they are within an angle bound given by STRAIGHT_ANGLE_TOLERANCE and place at the midpoint between non-consecutive segments\n fit (size, line, layout, tolerance){\n let upp = layout.units_per_pixel;\n let flipped; // boolean indicating if orientation of line is changed\n\n // Make new copy of line, with consistent orientation\n [line, flipped] = LabelLineBase.splitLineByOrientation(line);\n\n // matches for \"left\" or \"right\" labels where the offset angle is dependent on the geometry\n if (typeof layout.orientation === 'number'){\n this.offset[1] += ORIENTED_LABEL_OFFSET_FACTOR * (size[1] - layout.vertical_buffer);\n\n // if line is flipped, or the orientation is \"left\" (-1), flip the offset's y-axis\n if (flipped){\n this.offset[1] *= -1;\n }\n\n if (layout.orientation === -1){\n this.offset[1] *= -1;\n }\n }\n\n let line_lengths = getLineLengths(line);\n let label_length = size[0] * upp;\n\n // loop through line looking for a placement for the label\n for (let i = 0; i < line.length - 1; i++){\n let curr = line[i];\n\n let curve_tolerance = 0;\n let length = 0;\n let ahead_index = i + 1;\n let prev_angle;\n\n // look ahead to further line segments within an angle tolerance\n while (ahead_index < line.length){\n let ahead_curr = line[ahead_index - 1];\n let ahead_next = line[ahead_index];\n\n let next_angle = getAngleForSegment(ahead_curr, ahead_next);\n\n if (ahead_index !== i + 1){\n curve_tolerance += getAbsAngleDiff(next_angle, prev_angle);\n }\n\n // if curve tolerance is exceeded, break out of loop\n if (Math.abs(curve_tolerance) > STRAIGHT_ANGLE_TOLERANCE){\n break;\n }\n\n length += line_lengths[ahead_index - 1];\n\n // check if label fits geometry\n if (calcFitness(length, label_length) < tolerance){\n let curr_midpt = Vector.mult(Vector.add(curr, ahead_next), 0.5);\n\n // TODO: modify angle if line chosen within curve_angle_tolerance\n // Currently line angle is the same as the starting angle, perhaps it should average across segments?\n this.angle = -next_angle;\n let angle_offset = this.angle;\n\n // if line is flipped, or the orientation is \"left\" (-1), rotate the angle of the offset 180 deg\n if (typeof layout.orientation === 'number'){\n if (flipped){\n angle_offset += Math.PI;\n }\n\n if (layout.orientation === -1){\n angle_offset += Math.PI;\n }\n }\n\n // ensure that all vertical labels point up (not down) by snapping angles close to pi/2 to -pi/2\n if (Math.abs(this.angle - Math.PI/2) < VERTICAL_ANGLE_TOLERANCE) {\n // flip angle and offset\n this.angle = -Math.PI/2;\n\n if (typeof layout.orientation === 'number'){\n this.offset[1] *= -1;\n }\n }\n\n this.position = curr_midpt;\n\n this.updateBBoxes(this.position, size, this.angle, this.angle, this.offset);\n\n if (this.inTileBounds()) {\n return true;\n }\n }\n\n prev_angle = next_angle;\n ahead_index++;\n }\n }\n\n return false;\n }\n\n // Calculate bounding boxes\n updateBBoxes(position, size, angle, angle_offset, offset) {\n let upp = this.layout.units_per_pixel;\n\n // reset bounding boxes\n this.obbs = [];\n this.aabbs = [];\n\n let width = (size[0] + 2 * this.layout.buffer[0]) * upp * Label.epsilon;\n let height = (size[1] + 2 * this.layout.buffer[1]) * upp * Label.epsilon;\n\n let obb = LabelLineBase.createOBB(position, width, height, angle, angle_offset, offset, upp);\n let aabb = obb.getExtent();\n\n this.obbs.push(obb);\n this.aabbs.push(aabb);\n }\n}\n\n// Class for curved labels\n// Extends base LabelLine class to support angles, pre_angles, offsets as arrays for each segment\nclass LabelLineCurved extends LabelLineBase {\n constructor (size, line, layout) {\n super(layout);\n this.type = 'curved';\n\n // extra data for curved labels\n this.angles = [];\n this.pre_angles = [];\n this.offsets = [];\n this.num_segments = size.length;\n\n this.throw_away = !this.fit(size, line, layout);\n }\n\n // Determine if the curved label can fit the geometry.\n // No tolerance is provided because the label must fit entirely within the line geometry.\n fit (size, line, layout){\n let upp = layout.units_per_pixel;\n let flipped; // boolean determining if the line orientation is reversed\n\n // Make new copy of line, with consistent orientation\n [line, flipped] = LabelLineBase.splitLineByOrientation(line);\n\n // matches for \"left\" or \"right\" labels where the offset angle is dependent on the geometry\n if (typeof layout.orientation === 'number'){\n this.offset[1] += ORIENTED_LABEL_OFFSET_FACTOR * (size[1] - layout.vertical_buffer);\n\n // if line is flipped, or the orientation is \"left\" (-1), flip the offset's y-axis\n if (flipped){\n this.offset[1] *= -1;\n }\n\n if (layout.orientation === -1){\n this.offset[1] *= -1;\n }\n }\n\n let line_lengths = getLineLengths(line);\n let label_lengths = size.map(function(size){ return size[0] * upp; });\n\n let total_line_length = line_lengths.reduce(function(prev, next){ return prev + next; }, 0);\n let total_label_length = label_lengths.reduce(function(prev, next){ return prev + next; }, 0);\n\n // if label displacement is longer than the line, no fit can be possible\n if (total_label_length > total_line_length){\n return false;\n }\n\n let height = size[0][1] * upp;\n\n // find start and end indices that the label can fit on without overlapping tile boundaries\n // TODO: there is a small probability of a tile boundary crossing on an internal line segment\n // another option is to create a buffer around the line and check if it overlaps a tile boundary\n let [start_index, end_index] = LabelLineCurved.checkTileBoundary(line, line_lengths, height, this.offset, upp);\n\n // need two line segments for a curved label\n if (end_index - start_index < 2){\n return false;\n }\n\n // all positional offsets of the label are relative to the anchor\n let anchor_index = LabelLineCurved.curvaturePlacement(line, total_line_length, line_lengths, total_label_length, start_index, end_index);\n let anchor = line[anchor_index];\n\n // if anchor not found, or greater than the end_index, no fit possible\n if (anchor_index === -1 || end_index - anchor_index < 2){\n return false;\n }\n\n // set start position at anchor position\n this.position = anchor;\n\n // Loop through labels at each zoom level stop\n // TODO: Can be made faster since we are computing every segment for every zoom stop\n // We can skip a segment's calculation once a segment's angle equals its fully zoomed angle\n for (var i = 0; i < label_lengths.length; i++){\n this.offsets[i] = [];\n this.angles[i] = [];\n this.pre_angles[i] = [];\n\n // loop through stops (z = [0, .33, .66, .99] + base zoom)\n for (var j = 0; j < STOPS.length; j++){\n let stop = STOPS[j];\n\n // scale the line geometry by the zoom magnification\n let [new_line, line_lengths] = LabelLineCurved.scaleLine(stop, line);\n anchor = new_line[anchor_index];\n\n // calculate label data relative to anchor position\n let {positions, offsets, angles, pre_angles} = LabelLineCurved.placeAtIndex(anchor_index, new_line, line_lengths, label_lengths);\n\n // translate 2D offsets into \"polar coordinates\"\" (1D distances with angles)\n let offsets1d = offsets.map(function(offset){\n return Math.sqrt(offset[0] * offset[0] + offset[1] * offset[1]) / upp;\n });\n\n // Calculate everything that is independent of zoom level (angle for offset, bounding boxes, etc)\n if (stop === 0){\n // use average angle for a global label offset (if offset is specified)\n this.angle = 1 / angles.length * angles.reduce(function(prev, next){ return prev + next; });\n\n // calculate bounding boxes for zollision at zoom level 0\n for (let i = 0; i < positions.length; i++){\n let position = positions[i];\n let pre_angle = pre_angles[i];\n let width = label_lengths[i];\n let angle_curve = pre_angle + angles[i];\n let angle_offset = this.angle;\n\n if (typeof layout.orientation === 'number'){\n if (flipped){\n angle_offset += Math.PI;\n }\n\n if (layout.orientation === -1){\n angle_offset += Math.PI;\n }\n }\n\n let obb = LabelLineCurved.createOBB(position, width, height, this.offset, angle_offset, angle_curve, upp);\n let aabb = obb.getExtent();\n\n this.obbs.push(obb);\n this.aabbs.push(aabb);\n }\n }\n\n // push offsets/angles/pre_angles for each zoom and for each label segment\n this.offsets[i].push(offsets1d[i]);\n this.angles[i].push(angles[i]);\n this.pre_angles[i].push(pre_angles[i]);\n }\n }\n\n return true;\n }\n\n // Test if line intersects tile boundary. Return indices at beginning and end of line that are within tile.\n // Burn candle from both ends strategy - meaning shift and pop until vertices are within tile, but an interior vertex\n // may still be outside of tile (can potentially result in label collision across tiles).\n static checkTileBoundary(line, widths, height, offset, upp){\n let start = 0;\n let end = line.length - 1;\n\n height *= Label.epsilon;\n\n let start_width = widths[start] * Label.epsilon;\n let end_width = widths[widths.length - 1] * Label.epsilon;\n\n // Burn candle from start\n while (start < end){\n let angle = getAngleForSegment(line[start], line[start + 1]);\n let position = Vector.add(Vector.rot([start_width/2, 0], angle), line[start]);\n let obb = LabelLineBase.createOBB(position, start_width, height, -angle, -angle, offset, upp);\n let aabb = obb.getExtent();\n let in_tile = Label.prototype.inTileBounds.call({ aabb });\n if (in_tile) {\n break;\n }\n else {\n start++;\n }\n }\n\n // Burn candle from end\n while (end > start){\n let angle = getAngleForSegment(line[end - 1], line[end]);\n let position = Vector.add(Vector.rot([-end_width/2, 0], angle), line[end]);\n let obb = LabelLineBase.createOBB(position, end_width, height, -angle, -angle, offset, upp);\n let aabb = obb.getExtent();\n let in_tile = Label.prototype.inTileBounds.call({ aabb });\n if (in_tile) {\n break;\n }\n else {\n end--;\n }\n }\n\n return [start, end];\n }\n\n // Find optimal starting segment for placing a curved label along a line within provided tolerances\n // This is determined by calculating the curvature at each interior vertex of a line\n // then construct a \"window\" whose breadth is the length of the label. Place this label at each vertex\n // and add the curvatures of each vertex within the window. The vertex mimimizing this value is the \"best\" placement.\n // Return -1 is no placement found.\n static curvaturePlacement(line, total_line_length, line_lengths, label_length, start_index, end_index){\n start_index = start_index || 0;\n end_index = end_index || line.length - 1;\n\n var curvatures = []; // array of curvature values per line vertex\n\n // calculate curvature values\n for (let i = start_index + 1; i < end_index; i++){\n var prev = line[i - 1];\n var curr = line[i];\n var next = line[i + 1];\n\n var norm_1 = Vector.perp(curr, prev);\n var norm_2 = Vector.perp(next, curr);\n\n var curvature = Vector.angleBetween(norm_1, norm_2);\n\n // If curvature at a vertex is greater than the tolerance, remove it from consideration\n // by giving it an infinite penalty\n if (curvature > CURVE_MAX_ANGLE) {\n curvature = Infinity;\n }\n\n curvatures.push(curvature);\n }\n\n curvatures.push(Infinity); // Infinite penalty for going off end of line\n\n // calculate curvature costs\n var total_costs = [];\n var avg_costs = [];\n var line_index = start_index;\n var position = 0;\n\n for (let i = 0; i < start_index; i++){\n position += line_lengths[i];\n }\n\n // move window along line, starting at first vertex\n while (position + label_length < total_line_length){\n // define window breadth\n var window_start = position;\n var window_end = window_start + label_length;\n\n var line_position = window_start;\n var ahead_index = line_index;\n var cost = 0;\n\n // iterate through points on line intersecting window\n while (ahead_index < end_index && line_position + line_lengths[ahead_index] < window_end){\n cost += curvatures[ahead_index];\n if (cost === Infinity) {\n break; // no further progress can be made\n }\n\n line_position += line_lengths[ahead_index];\n ahead_index++;\n }\n\n // if optimal cost, break out\n if (cost === 0) {\n return line_index;\n }\n\n var avg_cost = cost / (ahead_index - line_index);\n\n total_costs.push(cost);\n avg_costs.push(avg_cost);\n\n position += line_lengths[line_index];\n line_index++;\n }\n\n if (total_costs.length === 0) {\n return -1;\n }\n\n // calculate min cost and avg cost to determine if label can fit within curvatures tolerances\n var min_total_cost = Math.min.apply(null, total_costs);\n var min_index = total_costs.indexOf(min_total_cost);\n var min_avg_cost = avg_costs[min_index];\n\n if (min_total_cost < CURVE_MIN_TOTAL_COST && min_avg_cost < CURVE_MIN_AVG_COST){\n // return index with best placement (least curvature)\n return total_costs.indexOf(min_total_cost);\n }\n else {\n // if tolerances aren't satisfied, throw away tile\n return -1;\n }\n }\n\n // Scale the line by a scale factor (used for computing the angles and offsets are fractional zoom levels)\n // Return the new line positions and their lengths\n static scaleLine(scale, line){\n var new_line = [line[0]];\n var line_lengths = [];\n\n line.forEach(function(pt, i){\n if (i === line.length - 1) {\n return;\n }\n var v = Vector.sub(line[i+1], line[i]);\n var delta = Vector.mult(v, 1 + scale);\n\n new_line.push(Vector.add(new_line[i], delta));\n line_lengths.push(Vector.length(delta));\n });\n\n return [new_line, line_lengths];\n }\n\n // Place a label at a given line index\n static placeAtIndex(anchor_index, line, line_lengths, label_lengths){\n let anchor = line[anchor_index];\n\n // Use flat coordinates. Get nearest line vertex index, and offset from the vertex for all labels.\n let [indices, relative_offsets] = LabelLineCurved.getIndicesAndOffsets(anchor_index, line_lengths, label_lengths);\n\n // get 2D positions based on \"flat\" indices and offsets\n let positions = LabelLineCurved.getPositionsFromIndicesAndOffsets(line, indices, relative_offsets);\n\n // get 2d offsets, angles and pre_angles relative to anchor\n let [offsets, angles, pre_angles] = LabelLineCurved.getAnglesFromIndicesAndOffsets(anchor, indices, line, positions);\n\n return {positions, offsets, angles, pre_angles};\n }\n\n // Given label lengths to place along a line broken into several lengths, computer what indices and at which offsets\n // the labels will appear on the line. Assume the line is straight, as it is not necessary to consider angles.\n //\n // Label lengths:\n // |-----|----|-----|-----------------|-------------|\n //\n // Line Lengths;\n // |---------|---------|-------------|------------|----------|-------|\n //\n // Result: indices: [0,0,1,1,3,4]\n static getIndicesAndOffsets(line_index, line_lengths, label_lengths){\n let num_labels = label_lengths.length;\n\n let indices = [];\n let offsets = [];\n\n let label_index = 0;\n let label_offset = 0;\n let line_offset = 0;\n\n // iterate along line\n while (label_index < num_labels){\n let label_length = label_lengths[label_index];\n\n // iterate along labels within the line segment\n while (label_index < num_labels && label_offset + 0.5 * label_length <= line_offset + line_lengths[line_index]){\n let offset = label_offset - line_offset + 0.5 * label_length;\n offsets.push(offset);\n indices.push(line_index);\n\n label_offset += label_length;\n label_index++;\n label_length = label_lengths[label_index];\n }\n\n line_offset += line_lengths[line_index];\n line_index++;\n }\n\n return [indices, offsets];\n }\n\n // Given indices and 1D offsets on a line, compute their 2D positions\n static getPositionsFromIndicesAndOffsets(line, indices, offsets){\n let positions = [];\n for (let i = 0; i < indices.length; i++){\n let index = indices[i];\n let offset = offsets[i];\n\n let angle = getAngleForSegment(line[index], line[index + 1]);\n\n let offset2d = Vector.rot([offset, 0], angle);\n let position = Vector.add(line[index], offset2d);\n\n positions.push(position);\n }\n\n return positions;\n }\n\n // Given indices and 1D offsets on a line, compute their angles and pre-angles from a reference anchor point\n static getAnglesFromIndicesAndOffsets(anchor, indices, line, positions){\n let angles = [];\n let pre_angles = [];\n let offsets = [];\n\n for (let i = 0; i < positions.length; i++){\n let position = positions[i];\n let index = indices[i];\n\n let offset = Vector.sub(position, anchor);\n let offset_angle = -Vector.angle(offset);\n\n let angle = getTextAngleForSegment(line[index], line[index + 1]);\n let pre_angle = angle - offset_angle;\n\n if (i > 0){\n let prev_angle = angles[i - 1];\n let prev_pre_angle = pre_angles[i - 1];\n if (Math.abs(offset_angle - prev_angle) > Math.PI) {\n offset_angle += (offset_angle > prev_angle) ? -2 * Math.PI : 2 * Math.PI;\n }\n if (Math.abs(prev_pre_angle - pre_angle) > Math.PI) {\n pre_angle += (pre_angle > prev_pre_angle) ? -2 * Math.PI : 2 * Math.PI;\n }\n }\n\n angles.push(offset_angle);\n pre_angles.push(pre_angle);\n offsets.push(offset);\n }\n\n return [offsets, angles, pre_angles];\n }\n\n // Modify the LabelLineStraight method to include a distiction between an offset angle, and rotation angle\n // as these may be different. (Offset angle is constant for the entire label, while rotation angles are not.)\n static createOBB (position, width, height, offset, angle_offset, angle_curve, upp) {\n let p0 = position[0];\n let p1 = position[1];\n\n // apply offset, x positive, y pointing down\n if (offset && (offset[0] !== 0 || offset[1] !== 0)) {\n offset = Vector.rot(offset, angle_offset);\n p0 += offset[0] * upp;\n p1 -= offset[1] * upp;\n }\n\n // the angle of the obb is negative since it's the tile system y axis is pointing down\n return new OBB(p0, p1, -angle_curve, width, height);\n }\n}\n\n// Fitness function (label length / line length)\nfunction calcFitness(line_length, label_length) {\n return label_length / line_length;\n}\n\nfunction getAngleForSegment(p, q){\n let pq = Vector.sub(q,p);\n return Vector.angle(pq);\n}\n\nfunction getTextAngleForSegment(pt1, pt2) {\n return -getAngleForSegment(pt1, pt2);\n}\n\nfunction getLineLengths(line){\n let lengths = [];\n for (let i = 0; i < line.length - 1; i++){\n let p = line[i];\n let q = line[i+1];\n let length = Math.hypot(p[0] - q[0], p[1] - q[1]);\n lengths.push(length);\n }\n return lengths;\n}\n\nfunction getAbsAngleDiff(angle1, angle2){\n let small, big;\n if (angle1 > angle2){\n small = angle2;\n big = angle1;\n }\n else {\n small = angle1;\n big = angle2;\n }\n\n while (big - small > Math.PI){\n small += 2 * Math.PI;\n }\n\n return Math.abs(big - small);\n}\n", + "import Label from './label';\nimport Vector from '../vector';\nimport OBB from '../utils/obb';\n\nconst STOPS = [0, 0.33, 0.66, 0.99]; // zoom levels for curved label snapshot data (offsets and angles)\nconst LINE_EXCEED_STRAIGHT = 1.5; // minimal ratio for straight labels (label length) / (line length)\nconst LINE_EXCEED_STRAIGHT_NO_CURVE = 1.8; // minimal ratio for straight labels that have no curved option (like Arabic)\nconst LINE_EXCEED_STAIGHT_LOOSE = 2.3; // 2nd pass minimal ratio for straight labels\nconst STRAIGHT_ANGLE_TOLERANCE = 0.1; // multiple \"almost straight\" segments within this angle tolerance can be considered one straight segment (in radians)\nconst CURVE_MIN_TOTAL_COST = 1.3; // curved line total curvature tolerance (sum in radians)\nconst CURVE_MIN_AVG_COST = 0.4; // curved line average curvature tolerance (mean)\nconst CURVE_MAX_ANGLE = 1; // curved line singular curvature tolerance (value in radians)\nconst ORIENTED_LABEL_OFFSET_FACTOR = 1.2; // multiply offset by this amount to avoid linked label collision\nconst VERTICAL_ANGLE_TOLERANCE = 0.01; // nearly vertical lines considered vertical within this angle tolerance\n\nlet LabelLine = {\n // Given a label's bounding box size and size of broken up individual segments\n // return a label that fits along the line geometry that is either straight (preferred) or curved (if straight tolerances aren't met)\n create : function(segment_sizes, total_size, line, layout){\n // The passes done for fitting a label, and provided tolerances for each pass\n // First straight is chosen with a low tolerance. Then curved. Then straight with a higher tolerance.\n const passes = [\n { type: 'straight', tolerance : (layout.no_curving) ? LINE_EXCEED_STRAIGHT_NO_CURVE : LINE_EXCEED_STRAIGHT },\n { type: 'curved' },\n { type: 'straight', tolerance : LINE_EXCEED_STAIGHT_LOOSE }\n ];\n\n // loop through passes. first label found wins.\n for (let i = 0; i < passes.length; i++){\n let check = passes[i];\n let label;\n if (check.type === 'straight'){\n label = new LabelLineStraight(total_size, line, layout, check.tolerance);\n }\n else if (check.type === 'curved' && !layout.no_curving && line.length > 2){\n label = new LabelLineCurved(segment_sizes, line, layout);\n }\n\n if (label && !label.throw_away) {\n return label;\n }\n }\n\n return false;\n }\n};\n\nexport default LabelLine;\n\n// Base class for a labels.\nclass LabelLineBase {\n constructor (layout) {\n this.layout = layout;\n this.position = [];\n this.angle = 0;\n this.offset = layout.offset.slice();\n this.obbs = [];\n this.aabbs = [];\n this.type = ''; // \"curved\" or \"straight\" to be set by child class\n this.throw_away = false; // boolean that determines if label should be discarded\n }\n\n // Given a line, find the longest series of segments that maintains a constant orientation in the x-direction.\n // This assures us that the line has no orientation flip, so text would not appear upside-down.\n // If the line's orientation is reversed, the flip return value will be true, otherwise false\n static splitLineByOrientation(line){\n let current_line = [line[0]];\n let current_length = 0;\n let max_length = 0;\n let orientation = 0;\n let longest_line = current_line;\n let flip = false;\n\n for (let i = 1; i < line.length; i++) {\n let pt = line[i];\n let prev_pt = line[i - 1];\n let length = Vector.length(Vector.sub(pt, prev_pt));\n\n if (pt[0] > prev_pt[0]){\n // positive orientation\n if (orientation === 1){\n current_line.push(pt);\n current_length += length;\n if (current_length > max_length){\n longest_line = current_line;\n max_length = current_length;\n flip = false;\n }\n }\n else {\n current_line = [prev_pt, pt];\n current_length = length;\n if (current_length > max_length){\n longest_line = current_line;\n max_length = current_length;\n flip = false;\n }\n orientation = 1;\n }\n }\n else if (pt[0] < prev_pt[0]) {\n // negative orientation\n if (orientation === -1){\n current_line.unshift(pt);\n current_length += length;\n if (current_length > max_length){\n longest_line = current_line;\n max_length = current_length;\n flip = true;\n }\n }\n else {\n // prepend points (reverse order)\n current_line = [pt, prev_pt];\n current_length = length;\n if (current_length > max_length){\n longest_line = current_line;\n max_length = current_length;\n flip = true;\n }\n orientation = -1;\n }\n }\n else {\n // vertical line (doesn't change previous orientation)\n if (orientation === -1){\n current_line.unshift(pt);\n }\n else {\n current_line.push(pt);\n orientation = 1;\n }\n\n current_length += length;\n if (current_length > max_length){\n longest_line = current_line;\n max_length = current_length;\n\n flip = (orientation === -1);\n }\n }\n }\n\n return [longest_line, flip];\n }\n\n // Add each bounding box to the collision pass\n add(bboxes) {\n this.placed = true;\n for (let i = 0; i < this.aabbs.length; i++) {\n let aabb = this.aabbs[i];\n let obb = this.obbs[i];\n let obj = { aabb, obb };\n Label.prototype.add.call(obj, bboxes);\n }\n }\n\n // Checks each segment to see if it should be discarded (via collision). If any segment fails this test, they all fail.\n discard(bboxes, exclude = null) {\n if (this.throw_away) {\n return true;\n }\n\n for (let i = 0; i < this.obbs.length; i++){\n let aabb = this.aabbs[i];\n let obb = this.obbs[i];\n let obj = { aabb, obb };\n\n let shouldDiscard = Label.prototype.occluded.call(obj, bboxes, exclude);\n if (shouldDiscard) {\n return true;\n }\n }\n return false;\n }\n\n // Checks each segment to see if it is within the tile. If any segment fails this test, they all fail.\n inTileBounds() {\n for (let i = 0; i < this.aabbs.length; i++) {\n let aabb = this.aabbs[i];\n let obj = { aabb };\n let in_bounds = Label.prototype.inTileBounds.call(obj);\n if (!in_bounds) {\n return false;\n }\n }\n return true;\n }\n\n // Method to calculate oriented bounding box\n // \"angle\" is the angle of the text segment, \"angle_offset\" is the angle applied to the offset.\n // Offset angle is constant for the entire label, while segment angles are not.\n static createOBB (position, width, height, angle, angle_offset, offset, upp) {\n let p0 = position[0];\n let p1 = position[1];\n\n // apply offset, x positive, y pointing down\n if (offset && (offset[0] !== 0 || offset[1] !== 0)) {\n offset = Vector.rot(offset, angle_offset);\n p0 += offset[0] * upp;\n p1 -= offset[1] * upp;\n }\n\n // the angle of the obb is negative since it's the tile system y axis is pointing down\n return new OBB(p0, p1, -angle, width, height);\n }\n}\n\n// Class for straight labels.\n// Extends base LabelLine class.\nclass LabelLineStraight extends LabelLineBase {\n constructor (size, line, layout, tolerance){\n super(layout);\n this.type = 'straight';\n this.throw_away = !this.fit(size, line, layout, tolerance);\n }\n\n // Determine if the label can fit the geometry within provided tolerance\n // A straight label is generally placed at segment midpoints, but can \"look ahead\" to further segments\n // if they are within an angle bound given by STRAIGHT_ANGLE_TOLERANCE and place at the midpoint between non-consecutive segments\n fit (size, line, layout, tolerance){\n let upp = layout.units_per_pixel;\n let flipped; // boolean indicating if orientation of line is changed\n\n // Make new copy of line, with consistent orientation\n [line, flipped] = LabelLineBase.splitLineByOrientation(line);\n\n // matches for \"left\" or \"right\" labels where the offset angle is dependent on the geometry\n if (typeof layout.orientation === 'number'){\n this.offset[1] += ORIENTED_LABEL_OFFSET_FACTOR * (size[1] - layout.vertical_buffer);\n\n // if line is flipped, or the orientation is \"left\" (-1), flip the offset's y-axis\n if (flipped){\n this.offset[1] *= -1;\n }\n\n if (layout.orientation === -1){\n this.offset[1] *= -1;\n }\n }\n\n let line_lengths = getLineLengths(line);\n let label_length = size[0] * upp;\n\n // loop through line looking for a placement for the label\n for (let i = 0; i < line.length - 1; i++){\n let curr = line[i];\n\n let curve_tolerance = 0;\n let length = 0;\n let ahead_index = i + 1;\n let prev_angle;\n\n // look ahead to further line segments within an angle tolerance\n while (ahead_index < line.length){\n let ahead_curr = line[ahead_index - 1];\n let ahead_next = line[ahead_index];\n\n let next_angle = getAngleForSegment(ahead_curr, ahead_next);\n\n if (ahead_index !== i + 1){\n curve_tolerance += getAbsAngleDiff(next_angle, prev_angle);\n }\n\n // if curve tolerance is exceeded, break out of loop\n if (Math.abs(curve_tolerance) > STRAIGHT_ANGLE_TOLERANCE){\n break;\n }\n\n length += line_lengths[ahead_index - 1];\n\n // check if label fits geometry\n if (calcFitness(length, label_length) < tolerance){\n let curr_midpt = Vector.mult(Vector.add(curr, ahead_next), 0.5);\n\n // TODO: modify angle if line chosen within curve_angle_tolerance\n // Currently line angle is the same as the starting angle, perhaps it should average across segments?\n this.angle = -next_angle;\n let angle_offset = this.angle;\n\n // if line is flipped, or the orientation is \"left\" (-1), rotate the angle of the offset 180 deg\n if (typeof layout.orientation === 'number'){\n if (flipped){\n angle_offset += Math.PI;\n }\n\n if (layout.orientation === -1){\n angle_offset += Math.PI;\n }\n }\n\n // ensure that all vertical labels point up (not down) by snapping angles close to pi/2 to -pi/2\n if (Math.abs(this.angle - Math.PI/2) < VERTICAL_ANGLE_TOLERANCE) {\n // flip angle and offset\n this.angle = -Math.PI/2;\n\n if (typeof layout.orientation === 'number'){\n this.offset[1] *= -1;\n }\n }\n\n this.position = curr_midpt;\n\n this.updateBBoxes(this.position, size, this.angle, this.angle, this.offset);\n\n if (this.inTileBounds()) {\n return true;\n }\n }\n\n prev_angle = next_angle;\n ahead_index++;\n }\n }\n\n return false;\n }\n\n // Calculate bounding boxes\n updateBBoxes(position, size, angle, angle_offset, offset) {\n let upp = this.layout.units_per_pixel;\n\n // reset bounding boxes\n this.obbs = [];\n this.aabbs = [];\n\n let width = (size[0] + 2 * this.layout.buffer[0]) * upp * Label.epsilon;\n let height = (size[1] + 2 * this.layout.buffer[1]) * upp * Label.epsilon;\n\n let obb = LabelLineBase.createOBB(position, width, height, angle, angle_offset, offset, upp);\n let aabb = obb.getExtent();\n\n this.obbs.push(obb);\n this.aabbs.push(aabb);\n }\n}\n\n// Class for curved labels\n// Extends base LabelLine class to support angles, pre_angles, offsets as arrays for each segment\nclass LabelLineCurved extends LabelLineBase {\n constructor (segment_sizes, line, layout) {\n super(layout);\n this.type = 'curved';\n\n // extra data for curved labels\n this.angles = [];\n this.pre_angles = [];\n this.offsets = [];\n this.num_segments = segment_sizes.length;\n\n this.throw_away = !this.fit(segment_sizes, line, layout);\n }\n\n // Determine if the curved label can fit the geometry.\n // No tolerance is provided because the label must fit entirely within the line geometry.\n fit (size, line, layout){\n let upp = layout.units_per_pixel;\n let flipped; // boolean determining if the line orientation is reversed\n\n let height_px = Math.max(...size.map(s => s[1])); // use max segment height\n let height = height_px * upp;\n\n // Make new copy of line, with consistent orientation\n [line, flipped] = LabelLineBase.splitLineByOrientation(line);\n\n // matches for \"left\" or \"right\" labels where the offset angle is dependent on the geometry\n if (typeof layout.orientation === 'number'){\n this.offset[1] += ORIENTED_LABEL_OFFSET_FACTOR * (height_px - layout.vertical_buffer);\n\n // if line is flipped, or the orientation is \"left\" (-1), flip the offset's y-axis\n if (flipped){\n this.offset[1] *= -1;\n }\n\n if (layout.orientation === -1){\n this.offset[1] *= -1;\n }\n }\n\n let line_lengths = getLineLengths(line);\n let label_lengths = size.map(size => size[0] * upp);\n\n let total_line_length = line_lengths.reduce((prev, next) => prev + next, 0);\n let total_label_length = label_lengths.reduce((prev, next) => prev + next, 0);\n\n // if label displacement is longer than the line, no fit can be possible\n if (total_label_length > total_line_length){\n return false;\n }\n\n // find start and end indices that the label can fit on without overlapping tile boundaries\n // TODO: there is a small probability of a tile boundary crossing on an internal line segment\n // another option is to create a buffer around the line and check if it overlaps a tile boundary\n let [start_index, end_index] = LabelLineCurved.checkTileBoundary(line, line_lengths, height, this.offset, upp);\n\n // need two line segments for a curved label\n if (end_index - start_index < 2){\n return false;\n }\n\n // all positional offsets of the label are relative to the anchor\n let anchor_index = LabelLineCurved.curvaturePlacement(line, total_line_length, line_lengths, total_label_length, start_index, end_index);\n let anchor = line[anchor_index];\n\n // if anchor not found, or greater than the end_index, no fit possible\n if (anchor_index === -1 || end_index - anchor_index < 2){\n return false;\n }\n\n // set start position at anchor position\n this.position = anchor;\n\n // Loop through labels at each zoom level stop\n // TODO: Can be made faster since we are computing every segment for every zoom stop\n // We can skip a segment's calculation once a segment's angle equals its fully zoomed angle\n for (var i = 0; i < label_lengths.length; i++){\n this.offsets[i] = [];\n this.angles[i] = [];\n this.pre_angles[i] = [];\n\n // loop through stops (z = [0, .33, .66, .99] + base zoom)\n for (var j = 0; j < STOPS.length; j++){\n let stop = STOPS[j];\n\n // scale the line geometry by the zoom magnification\n let [new_line, line_lengths] = LabelLineCurved.scaleLine(stop, line);\n anchor = new_line[anchor_index];\n\n // calculate label data relative to anchor position\n let {positions, offsets, angles, pre_angles} = LabelLineCurved.placeAtIndex(anchor_index, new_line, line_lengths, label_lengths);\n\n // translate 2D offsets into \"polar coordinates\"\" (1D distances with angles)\n let offsets1d = offsets.map(offset => {\n return Math.sqrt(offset[0] * offset[0] + offset[1] * offset[1]) / upp;\n });\n\n // Calculate everything that is independent of zoom level (angle for offset, bounding boxes, etc)\n if (stop === 0){\n // use average angle for a global label offset (if offset is specified)\n this.angle = 1 / angles.length * angles.reduce((prev, next) => prev + next);\n\n // calculate bounding boxes for collision at zoom level 0\n for (let i = 0; i < positions.length; i++){\n let position = positions[i];\n let pre_angle = pre_angles[i];\n let width = label_lengths[i];\n let angle_segment = pre_angle + angles[i];\n let angle_offset = this.angle;\n\n let obb = LabelLineBase.createOBB(position, width, height, angle_segment, angle_offset, this.offset, upp);\n let aabb = obb.getExtent();\n\n this.obbs.push(obb);\n this.aabbs.push(aabb);\n }\n }\n\n // push offsets/angles/pre_angles for each zoom and for each label segment\n this.offsets[i].push(offsets1d[i]);\n this.angles[i].push(angles[i]);\n this.pre_angles[i].push(pre_angles[i]);\n }\n }\n\n return true;\n }\n\n // Test if line intersects tile boundary. Return indices at beginning and end of line that are within tile.\n // Burn candle from both ends strategy - meaning shift and pop until vertices are within tile, but an interior vertex\n // may still be outside of tile (can potentially result in label collision across tiles).\n static checkTileBoundary(line, widths, height, offset, upp){\n let start = 0;\n let end = line.length - 1;\n\n height *= Label.epsilon;\n\n let start_width = widths[start] * Label.epsilon;\n let end_width = widths[widths.length - 1] * Label.epsilon;\n\n // Burn candle from start\n while (start < end){\n let angle = getAngleForSegment(line[start], line[start + 1]);\n let position = Vector.add(Vector.rot([start_width/2, 0], angle), line[start]);\n let obb = LabelLineBase.createOBB(position, start_width, height, -angle, -angle, offset, upp);\n let aabb = obb.getExtent();\n let in_tile = Label.prototype.inTileBounds.call({ aabb });\n if (in_tile) {\n break;\n }\n else {\n start++;\n }\n }\n\n // Burn candle from end\n while (end > start){\n let angle = getAngleForSegment(line[end - 1], line[end]);\n let position = Vector.add(Vector.rot([-end_width/2, 0], angle), line[end]);\n let obb = LabelLineBase.createOBB(position, end_width, height, -angle, -angle, offset, upp);\n let aabb = obb.getExtent();\n let in_tile = Label.prototype.inTileBounds.call({ aabb });\n if (in_tile) {\n break;\n }\n else {\n end--;\n }\n }\n\n return [start, end];\n }\n\n // Find optimal starting segment for placing a curved label along a line within provided tolerances\n // This is determined by calculating the curvature at each interior vertex of a line\n // then construct a \"window\" whose breadth is the length of the label. Place this label at each vertex\n // and add the curvatures of each vertex within the window. The vertex mimimizing this value is the \"best\" placement.\n // Return -1 is no placement found.\n static curvaturePlacement(line, total_line_length, line_lengths, label_length, start_index, end_index){\n start_index = start_index || 0;\n end_index = end_index || line.length - 1;\n\n var curvatures = []; // array of curvature values per line vertex\n\n // calculate curvature values\n for (let i = start_index + 1; i < end_index; i++){\n var prev = line[i - 1];\n var curr = line[i];\n var next = line[i + 1];\n\n var norm_1 = Vector.perp(curr, prev);\n var norm_2 = Vector.perp(next, curr);\n\n var curvature = Vector.angleBetween(norm_1, norm_2);\n\n // If curvature at a vertex is greater than the tolerance, remove it from consideration\n // by giving it an infinite penalty\n if (curvature > CURVE_MAX_ANGLE) {\n curvature = Infinity;\n }\n\n curvatures.push(curvature);\n }\n\n curvatures.push(Infinity); // Infinite penalty for going off end of line\n\n // calculate curvature costs\n var total_costs = [];\n var avg_costs = [];\n var line_index = start_index;\n var position = 0;\n\n for (let i = 0; i < start_index; i++){\n position += line_lengths[i];\n }\n\n // move window along line, starting at first vertex\n while (position + label_length < total_line_length){\n // define window breadth\n var window_start = position;\n var window_end = window_start + label_length;\n\n var line_position = window_start;\n var ahead_index = line_index;\n var cost = 0;\n\n // iterate through points on line intersecting window\n while (ahead_index < end_index && line_position + line_lengths[ahead_index] < window_end){\n cost += curvatures[ahead_index];\n if (cost === Infinity) {\n break; // no further progress can be made\n }\n\n line_position += line_lengths[ahead_index];\n ahead_index++;\n }\n\n // if optimal cost, break out\n if (cost === 0) {\n return line_index;\n }\n\n var avg_cost = cost / (ahead_index - line_index);\n\n total_costs.push(cost);\n avg_costs.push(avg_cost);\n\n position += line_lengths[line_index];\n line_index++;\n }\n\n if (total_costs.length === 0) {\n return -1;\n }\n\n // calculate min cost and avg cost to determine if label can fit within curvatures tolerances\n var min_total_cost = Math.min.apply(null, total_costs);\n var min_index = total_costs.indexOf(min_total_cost);\n var min_avg_cost = avg_costs[min_index];\n\n if (min_total_cost < CURVE_MIN_TOTAL_COST && min_avg_cost < CURVE_MIN_AVG_COST){\n // return index with best placement (least curvature)\n return total_costs.indexOf(min_total_cost);\n }\n else {\n // if tolerances aren't satisfied, throw away tile\n return -1;\n }\n }\n\n // Scale the line by a scale factor (used for computing the angles and offsets at fractional zoom levels)\n // Return the new line positions and their lengths\n static scaleLine(scale, line){\n var new_line = [line[0]];\n var line_lengths = [];\n\n line.forEach((pt, i) => {\n if (i === line.length - 1) {\n return;\n }\n var v = Vector.sub(line[i+1], line[i]);\n var delta = Vector.mult(v, 1 + scale);\n\n new_line.push(Vector.add(new_line[i], delta));\n line_lengths.push(Vector.length(delta));\n });\n\n return [new_line, line_lengths];\n }\n\n // Place a label at a given line index\n static placeAtIndex(anchor_index, line, line_lengths, label_lengths){\n let anchor = line[anchor_index];\n\n // Use flat coordinates. Get nearest line vertex index, and offset from the vertex for all labels.\n let [indices, relative_offsets] = LabelLineCurved.getIndicesAndOffsets(anchor_index, line_lengths, label_lengths);\n\n // get 2D positions based on \"flat\" indices and offsets\n let positions = LabelLineCurved.getPositionsFromIndicesAndOffsets(line, indices, relative_offsets);\n\n // get 2d offsets, angles and pre_angles relative to anchor\n let [offsets, angles, pre_angles] = LabelLineCurved.getAnglesFromIndicesAndOffsets(anchor, indices, line, positions);\n\n return {positions, offsets, angles, pre_angles};\n }\n\n // Given label lengths to place along a line broken into several lengths, computer what indices and at which offsets\n // the labels will appear on the line. Assume the line is straight, as it is not necessary to consider angles.\n //\n // Label lengths:\n // |-----|----|-----|-----------------|-------------|\n //\n // Line Lengths;\n // |---------|---------|-------------|------------|----------|-------|\n //\n // Result: indices: [0,0,1,1,3,4]\n static getIndicesAndOffsets(line_index, line_lengths, label_lengths){\n let num_labels = label_lengths.length;\n\n let indices = [];\n let offsets = [];\n\n let label_index = 0;\n let label_offset = 0;\n let line_offset = 0;\n\n // iterate along line\n while (label_index < num_labels){\n let label_length = label_lengths[label_index];\n\n // iterate along labels within the line segment\n while (label_index < num_labels && label_offset + 0.5 * label_length <= line_offset + line_lengths[line_index]){\n let offset = label_offset - line_offset + 0.5 * label_length;\n offsets.push(offset);\n indices.push(line_index);\n\n label_offset += label_length;\n label_index++;\n label_length = label_lengths[label_index];\n }\n\n line_offset += line_lengths[line_index];\n line_index++;\n }\n\n return [indices, offsets];\n }\n\n // Given indices and 1D offsets on a line, compute their 2D positions\n static getPositionsFromIndicesAndOffsets(line, indices, offsets){\n let positions = [];\n for (let i = 0; i < indices.length; i++){\n let index = indices[i];\n let offset = offsets[i];\n\n let angle = getAngleForSegment(line[index], line[index + 1]);\n\n let offset2d = Vector.rot([offset, 0], angle);\n let position = Vector.add(line[index], offset2d);\n\n positions.push(position);\n }\n\n return positions;\n }\n\n // Given indices and 1D offsets on a line, compute their angles and pre-angles from a reference anchor point\n static getAnglesFromIndicesAndOffsets(anchor, indices, line, positions){\n let angles = [];\n let pre_angles = [];\n let offsets = [];\n\n for (let i = 0; i < positions.length; i++){\n let position = positions[i];\n let index = indices[i];\n\n let offset = Vector.sub(position, anchor);\n let offset_angle = -Vector.angle(offset);\n\n let angle = getTextAngleForSegment(line[index], line[index + 1]);\n let pre_angle = angle - offset_angle;\n\n if (i > 0){\n let prev_angle = angles[i - 1];\n let prev_pre_angle = pre_angles[i - 1];\n if (Math.abs(offset_angle - prev_angle) > Math.PI) {\n offset_angle += (offset_angle > prev_angle) ? -2 * Math.PI : 2 * Math.PI;\n }\n if (Math.abs(prev_pre_angle - pre_angle) > Math.PI) {\n pre_angle += (pre_angle > prev_pre_angle) ? -2 * Math.PI : 2 * Math.PI;\n }\n }\n\n angles.push(offset_angle);\n pre_angles.push(pre_angle);\n offsets.push(offset);\n }\n\n return [offsets, angles, pre_angles];\n }\n}\n\n// Fitness function (label length / line length)\nfunction calcFitness(line_length, label_length) {\n return label_length / line_length;\n}\n\nfunction getAngleForSegment(p, q){\n let pq = Vector.sub(q,p);\n return Vector.angle(pq);\n}\n\nfunction getTextAngleForSegment(pt1, pt2) {\n return -getAngleForSegment(pt1, pt2);\n}\n\nfunction getLineLengths(line){\n let lengths = [];\n for (let i = 0; i < line.length - 1; i++){\n let p = line[i];\n let q = line[i+1];\n let length = Math.hypot(p[0] - q[0], p[1] - q[1]);\n lengths.push(length);\n }\n return lengths;\n}\n\nfunction getAbsAngleDiff(angle1, angle2){\n let small, big;\n if (angle1 > angle2){\n small = angle2;\n big = angle1;\n }\n else {\n small = angle1;\n big = angle2;\n }\n\n while (big - small > Math.PI){\n small += 2 * Math.PI;\n }\n\n return Math.abs(big - small);\n}\n", "import Label from './label';\nimport PointAnchor from './point_anchor';\nimport Geo from '../geo';\nimport OBB from '../utils/obb';\nimport {StyleParser} from '../styles/style_parser';\n\nexport default class LabelPoint extends Label {\n\n constructor (position, size, layout) {\n super(size, layout);\n this.position = [position[0], position[1]];\n this.parent = this.layout.parent;\n this.update();\n\n this.start_anchor_index = 1;\n this.degenerate = !this.size[0] && !this.size[1] && !this.layout.buffer[0] && !this.layout.buffer[1];\n this.throw_away = !this.getNextFit();\n }\n\n update() {\n super.update();\n this.computeOffset();\n this.updateBBoxes();\n }\n\n computeOffset () {\n this.offset = [this.layout.offset[0], this.layout.offset[1]];\n\n // Additional anchor/offset for point:\n if (this.parent) {\n let parent = this.parent;\n // point's own anchor, text anchor applied to point, additional point offset\n this.offset = PointAnchor.computeOffset(this.offset, parent.size, parent.anchor, PointAnchor.zero_buffer);\n this.offset = PointAnchor.computeOffset(this.offset, parent.size, this.anchor, PointAnchor.zero_buffer);\n if (parent.offset !== StyleParser.zeroPair) { // point has an offset\n if (this.offset === StyleParser.zeroPair) { // no text offset, use point's\n this.offset = parent.offset;\n }\n else { // text has offset, add point's\n this.offset[0] += parent.offset[0];\n this.offset[1] += parent.offset[1];\n }\n }\n }\n\n this.offset = PointAnchor.computeOffset(this.offset, this.size, this.anchor);\n }\n\n updateBBoxes () {\n let width = (this.size[0] + this.layout.buffer[0] * 2) * this.layout.units_per_pixel * Label.epsilon;\n let height = (this.size[1] + this.layout.buffer[1] * 2) * this.layout.units_per_pixel * Label.epsilon;\n\n // fudge width value as text may overflow bounding box if it has italic, bold, etc style\n if (this.layout.italic){\n width += 5 * this.layout.units_per_pixel;\n }\n\n let p = [\n this.position[0] + (this.offset[0] * this.layout.units_per_pixel),\n this.position[1] - (this.offset[1] * this.layout.units_per_pixel)\n ];\n\n this.obb = new OBB(p[0], p[1], 0, width, height);\n this.aabb = this.obb.getExtent();\n }\n\n // Try to move the label into the tile bounds\n // Returns true if label was moved into tile, false if it couldn't be moved\n moveIntoTile () {\n let updated = false;\n\n if (this.aabb[0] < 0) {\n this.position[0] += -this.aabb[0];\n updated = true;\n }\n\n if (this.aabb[2] >= Geo.tile_scale) {\n this.position[0] -= this.aabb[2] - Geo.tile_scale + 1;\n updated = true;\n }\n\n if (this.aabb[3] > 0) {\n this.position[1] -= this.aabb[3];\n updated = true;\n }\n\n if (this.aabb[1] <= -Geo.tile_scale) {\n this.position[1] -= this.aabb[1] + Geo.tile_scale - 1;\n updated = true;\n }\n\n if (updated) {\n this.updateBBoxes();\n }\n\n return updated;\n }\n\n getNextFit() {\n if (!this.layout.cull_from_tile || this.inTileBounds()) {\n return true;\n }\n\n if (this.layout.move_into_tile){\n this.moveIntoTile();\n return true;\n }\n else {\n if (Array.isArray(this.layout.anchor)) {\n // Start on second anchor (first anchor was set on creation)\n for (let i = 1; i < this.layout.anchor.length; i++) {\n this.anchor = this.layout.anchor[i];\n this.update();\n\n this.start_anchor_index = i;\n\n if (this.inTileBounds()) {\n return true;\n }\n }\n }\n\n // no anchors result in fit\n return false;\n }\n }\n\n discard (bboxes, exclude = null) {\n if (this.degenerate) {\n return false;\n }\n\n if (super.discard(bboxes, exclude)) {\n // If more than one anchor specified, try them in order\n if (Array.isArray(this.layout.anchor)) {\n // Start on second anchor (first anchor was set on creation)\n for (let i=this.start_anchor_index; i < this.layout.anchor.length; i++) {\n this.anchor = this.layout.anchor[i];\n this.update();\n\n if (this.layout.cull_from_tile && !this.inTileBounds()) {\n continue;\n }\n\n if (!super.discard(bboxes, exclude)) {\n return false;\n }\n }\n }\n return true;\n }\n return false;\n }\n\n}\n\n// Placement strategies\nLabelPoint.PLACEMENT = {\n VERTEX: 0, // place labels at endpoints of line segments\n MIDPOINT: 1, // place labels at midpoints of line segments\n SPACED: 2, // place labels equally spaced along line\n CENTROID: 3 // place labels at center of polygons\n};\n", "// Sets of values to match for directional and corner anchors\nconst lefts = ['left', 'top-left', 'bottom-left'];\nconst rights = ['right', 'top-right', 'bottom-right'];\nconst tops = ['top', 'top-left', 'top-right'];\nconst bottoms = ['bottom', 'bottom-left', 'bottom-right'];\n\nlet PointAnchor;\n\nexport default PointAnchor = {\n\n computeOffset (offset, size, anchor, buffer = null) {\n if (!anchor || anchor === 'center') {\n return offset;\n }\n\n let offset2 = [offset[0], offset[1]];\n buffer = buffer || this.default_buffer;\n\n // An optional left/right offset\n if (this.isLeftAnchor(anchor)) {\n offset2[0] -= size[0] / 2;\n if (anchor === 'left') {\n offset2[0] -= buffer[0];\n }\n }\n else if (this.isRightAnchor(anchor)) {\n offset2[0] += size[0] / 2;\n if (anchor === 'right') {\n offset2[0] += buffer[1];\n }\n }\n\n // An optional top/bottom offset\n if (this.isTopAnchor(anchor)) {\n offset2[1] -= size[1] / 2;\n if (anchor === 'top') {\n offset2[1] -= buffer[2];\n }\n }\n else if (this.isBottomAnchor(anchor)) {\n offset2[1] += size[1] / 2;\n if (anchor === 'bottom') {\n offset2[1] += buffer[3];\n }\n }\n\n return offset2;\n },\n\n alignForAnchor (anchor) {\n if (anchor && anchor !== 'center') {\n if (this.isLeftAnchor(anchor)) {\n return 'right';\n }\n else if (this.isRightAnchor(anchor)) {\n return 'left';\n }\n }\n return 'center';\n },\n\n isLeftAnchor (anchor) {\n return (lefts.indexOf(anchor) > -1);\n },\n\n isRightAnchor (anchor) {\n return (rights.indexOf(anchor) > -1);\n },\n\n isTopAnchor (anchor) {\n return (tops.indexOf(anchor) > -1);\n },\n\n isBottomAnchor (anchor) {\n return (bottoms.indexOf(anchor) > -1);\n },\n\n // Buffers: [left, right, top, bottom]\n default_buffer: [2.5, 2.5, 1.5, 0.75],\n zero_buffer: [0, 0, 0, 0]\n\n};\n", "// Logic for placing point labels along a line geometry\n\nimport LabelPoint from './label_point';\nimport {isCoordOutsideTile} from '../builders/common';\n\nconst PLACEMENT = LabelPoint.PLACEMENT;\nconst default_spacing = 80; // spacing of points along line in pixels\n\nexport default function placePointsOnLine (line, size, options) {\n let labels = [];\n let strategy = options.placement;\n let min_length = Math.max(size[0], size[1]) * options.placement_min_length_ratio * options.units_per_pixel;\n\n switch (strategy){\n case PLACEMENT.SPACED:\n let result = getPositionsAndAngles(line, min_length, options);\n // false will be returned if line have no length\n if (!result) {\n return [];\n }\n\n let positions = result.positions;\n let angles = result.angles;\n for (let i = 0; i < positions.length; i++){\n let position = positions[i];\n let angle = angles[i];\n if (options.tile_edges === true || !isCoordOutsideTile(position)) {\n let label = new LabelPoint(position, size, options);\n label.angle = angle;\n labels.push(label);\n }\n }\n break;\n case PLACEMENT.VERTEX:\n let p, q, label;\n for (let i = 0; i < line.length - 1; i++){\n p = line[i];\n q = line[i + 1];\n if (options.tile_edges === true || !isCoordOutsideTile(p)) {\n label = new LabelPoint(p, size, options);\n label.angle = getAngle(p, q, options.angle);\n labels.push(label);\n }\n }\n\n // add last endpoint\n label = new LabelPoint(q, size, options);\n label.angle = getAngle(p, q, options.angle);\n labels.push(label);\n break;\n case PLACEMENT.MIDPOINT:\n for (let i = 0; i < line.length - 1; i++){\n let p = line[i];\n let q = line[i + 1];\n let position = [\n 0.5 * (p[0] + q[0]),\n 0.5 * (p[1] + q[1])\n ];\n if (options.tile_edges === true || !isCoordOutsideTile(position)) {\n if (!min_length || norm(p, q) > min_length) {\n let label = new LabelPoint(position, size, options);\n label.angle = getAngle(p, q, options.angle);\n labels.push(label);\n }\n }\n }\n break;\n }\n return labels;\n}\n\nfunction getPositionsAndAngles(line, min_length, options){\n let upp = options.units_per_pixel;\n let spacing = (options.placement_spacing || default_spacing) * upp;\n\n let length = getLineLength(line);\n if (length <= min_length) {\n return false;\n }\n\n let num_labels = Math.max(Math.floor(length / spacing), 1);\n let remainder = length - (num_labels - 1) * spacing;\n let positions = [];\n let angles = [];\n\n let distance = 0.5 * remainder;\n for (let i = 0; i < num_labels; i++){\n let {position, angle} = interpolateLine(line, distance, min_length, options);\n if (position != null && angle != null) {\n positions.push(position);\n angles.push(angle);\n }\n distance += spacing;\n }\n\n return {positions, angles};\n}\n\nfunction getAngle(p, q, angle = 0){\n return (angle === 'auto') ? Math.atan2(q[0] - p[0], q[1] - p[1]) : angle;\n}\n\nfunction getLineLength(line){\n let distance = 0;\n for (let i = 0; i < line.length - 1; i++){\n distance += norm(line[i], line[i+1]);\n }\n return distance;\n}\n\nfunction norm(p, q){\n return Math.sqrt(Math.pow(p[0] - q[0], 2) + Math.pow(p[1] - q[1], 2));\n}\n\n// TODO: can be optimized.\n// you don't have to start from the first index every time for placement\nfunction interpolateLine(line, distance, min_length, options){\n let sum = 0;\n let position, angle;\n for (let i = 0; i < line.length-1; i++){\n let p = line[i];\n let q = line[i+1];\n\n const length = norm(p, q);\n if (length <= min_length) {\n continue;\n }\n\n sum += length;\n\n if (sum > distance){\n position = interpolateSegment(p, q, sum - distance);\n angle = getAngle(p, q, options.angle);\n break;\n }\n }\n return {position, angle};\n}\n\nfunction interpolateSegment(p, q, distance){\n let length = norm(p, q);\n let ratio = distance / length;\n return [\n ratio * p[0] + (1 - ratio) * q[0],\n ratio * p[1] + (1 - ratio) * q[1]\n ];\n}\n", @@ -505,7 +505,7 @@ "import ShaderProgram from './gl/shader_program';\nimport GLSL from './gl/glsl';\nimport Geo from './geo';\nimport Vector from './vector';\nimport {StyleParser} from './styles/style_parser';\n\nlet fs = require('fs');\n\nconst shaderSrc_ambientLight = fs.readFileSync(__dirname + '/gl/shaders/ambientLight.glsl', 'utf8');\nconst shaderSrc_directionalLight = fs.readFileSync(__dirname + '/gl/shaders/directionalLight.glsl', 'utf8');\nconst shaderSrc_pointLight = fs.readFileSync(__dirname + '/gl/shaders/pointLight.glsl', 'utf8');\nconst shaderSrc_spotLight = fs.readFileSync(__dirname + '/gl/shaders/spotLight.glsl', 'utf8');\n\n// Abstract light\nexport default class Light {\n\n constructor (view, config) {\n this.name = config.name;\n this.view = view;\n\n if (config.ambient == null || typeof config.ambient === 'number') {\n this.ambient = GLSL.expandVec3(config.ambient || 0);\n }\n else {\n this.ambient = StyleParser.parseColor(config.ambient).slice(0, 3);\n }\n\n if (config.diffuse == null || typeof config.diffuse === 'number') {\n this.diffuse = GLSL.expandVec3(config.diffuse != null ? config.diffuse : 1);\n }\n else {\n this.diffuse = StyleParser.parseColor(config.diffuse).slice(0, 3);\n }\n\n if (config.specular == null || typeof config.specular === 'number') {\n this.specular = GLSL.expandVec3(config.specular || 0);\n }\n else {\n this.specular = StyleParser.parseColor(config.specular).slice(0, 3);\n }\n }\n\n // Create a light by type name, factory-style\n // 'config' must include 'name' and 'type', along with any other type-specific properties\n static create (view, config) {\n if (Light.types[config.type]) {\n return new Light.types[config.type](view, config);\n }\n }\n\n // Set light for a style: fragment lighting, vertex lighting, or none\n static setMode (mode, style) {\n if (mode === true) {\n mode = 'fragment';\n }\n mode = Light.enabled && ((mode != null) ? mode : 'fragment'); // default to fragment lighting\n style.defines['TANGRAM_LIGHTING_FRAGMENT'] = (mode === 'fragment');\n style.defines['TANGRAM_LIGHTING_VERTEX'] = (mode === 'vertex');\n }\n\n // Inject all provided light definitions, and calculate cumulative light function\n static inject (lights) {\n // Clear previous injections\n ShaderProgram.removeBlock(Light.block);\n\n // If lighting is globally disabled, nothing is injected (mostly for debugging or live editing)\n if (!Light.enabled) {\n return;\n }\n\n // Construct code to calculate each light instance\n let calculateLights = \"\";\n if (lights && Object.keys(lights).length > 0) {\n // Collect uniques types of lights\n let types = {};\n for (let light_name in lights) {\n types[lights[light_name].type] = true;\n }\n\n // Inject each type of light\n for (let type in types) {\n Light.types[type].inject();\n }\n\n // Inject per-instance blocks and construct the list of functions to calculate each light\n for (let light_name in lights) {\n // Define instance\n lights[light_name].inject();\n\n // Add the calculation function to the list\n calculateLights += `calculateLight(${light_name}, _eyeToPoint, _normal);\\n`;\n }\n }\n\n // Glue together the final lighting function that sums all the lights\n let calculateFunction = `\n vec4 calculateLighting(in vec3 _eyeToPoint, in vec3 _normal, in vec4 _color) {\n\n // Do initial material calculations over normal, emission, ambient, diffuse and specular values\n calculateMaterial(_eyeToPoint,_normal);\n\n // Un roll the loop of individual ligths to calculate\n ${calculateLights}\n\n // Final light intensity calculation\n vec4 color = vec4(vec3(0.), _color.a); // start with vertex color alpha\n\n #ifdef TANGRAM_MATERIAL_EMISSION\n color.rgb = material.emission.rgb;\n color.a *= material.emission.a;\n #endif\n\n #ifdef TANGRAM_MATERIAL_AMBIENT\n color.rgb += light_accumulator_ambient.rgb * _color.rgb * material.ambient.rgb;\n color.a *= material.ambient.a;\n #else\n #ifdef TANGRAM_MATERIAL_DIFFUSE\n color.rgb += light_accumulator_ambient.rgb * _color.rgb * material.diffuse.rgb;\n #endif\n #endif\n\n #ifdef TANGRAM_MATERIAL_DIFFUSE\n color.rgb += light_accumulator_diffuse.rgb * _color.rgb * material.diffuse.rgb;\n color.a *= material.diffuse.a;\n #endif\n\n #ifdef TANGRAM_MATERIAL_SPECULAR\n color.rgb += light_accumulator_specular.rgb * material.specular.rgb;\n color.a *= material.specular.a;\n #endif\n\n // Clamp final color\n color = clamp(color, 0.0, 1.0);\n\n return color;\n }`;\n\n ShaderProgram.addBlock(Light.block, calculateFunction);\n }\n\n // Common instance definition\n inject () {\n let instance = `\n uniform ${this.struct_name} u_${this.name};\n ${this.struct_name} ${this.name};\n `;\n let assign = `\n ${this.name} = u_${this.name};\\n\n `;\n\n ShaderProgram.addBlock(Light.block, instance);\n ShaderProgram.addBlock('setup', assign);\n }\n\n // Update method called once per frame\n update () {\n }\n\n // Called once per frame per program (e.g. for main render pass, then for each additional\n // pass for feature selection, etc.)\n setupProgram (_program) {\n // Three common light properties\n _program.uniform('3fv', `u_${this.name}.ambient`, this.ambient);\n _program.uniform('3fv', `u_${this.name}.diffuse`, this.diffuse);\n _program.uniform('3fv', `u_${this.name}.specular`, this.specular);\n }\n\n}\n\nLight.types = {}; // references to subclasses by short name\nLight.block = 'lighting'; // shader block name\nLight.enabled = true; // lighting can be globally enabled/disabled\n\n\n// Light subclasses\nclass AmbientLight extends Light {\n\n constructor(view, config) {\n super(view, config);\n this.type = 'ambient';\n this.struct_name = 'AmbientLight';\n }\n\n // Inject struct and calculate function\n static inject() {\n ShaderProgram.addBlock(Light.block, shaderSrc_ambientLight);\n }\n\n setupProgram (_program) {\n _program.uniform('3fv', `u_${this.name}.ambient`, this.ambient);\n }\n\n}\nLight.types['ambient'] = AmbientLight;\n\nclass DirectionalLight extends Light {\n\n constructor(view, config) {\n super(view, config);\n this.type = 'directional';\n this.struct_name = 'DirectionalLight';\n\n if (config.direction) {\n this._direction = config.direction;\n }\n else {\n // Default directional light maintains full intensity on ground, with basic extrusion shading\n let theta = 135; // angle of light in xy plane (rotated around z axis)\n let scale = Math.sin(Math.PI*60/180); // scaling factor to keep total directional intensity to 0.5\n this._direction = [\n Math.cos(Math.PI*theta/180) * scale,\n Math.sin(Math.PI*theta/180) * scale,\n -0.5\n ];\n\n if (config.ambient == null) {\n this.ambient = GLSL.expandVec3(0.5);\n }\n }\n this.direction = this._direction.map(parseFloat);\n }\n\n get direction () {\n return this._direction;\n }\n\n set direction (v) {\n this._direction = Vector.normalize(v);\n }\n\n // Inject struct and calculate function\n static inject() {\n ShaderProgram.addBlock(Light.block, shaderSrc_directionalLight);\n }\n\n setupProgram (_program) {\n super.setupProgram(_program);\n _program.uniform('3fv', `u_${this.name}.direction`, this.direction);\n }\n\n}\nLight.types['directional'] = DirectionalLight;\n\n\nclass PointLight extends Light {\n\n constructor (view, config) {\n super(view, config);\n this.type = 'point';\n this.struct_name = 'PointLight';\n\n this.position = config.position || [0, 0, '100px'];\n this.position_eye = []; // position in eyespace\n this.origin = config.origin || 'ground';\n this.attenuation = !isNaN(parseFloat(config.attenuation)) ? parseFloat(config.attenuation) : 0;\n\n if (config.radius) {\n if (Array.isArray(config.radius) && config.radius.length === 2) {\n this.radius = config.radius;\n }\n else {\n this.radius = [null, config.radius];\n }\n }\n else {\n this.radius = null;\n }\n }\n\n // Inject struct and calculate function\n static inject () {\n ShaderProgram.addBlock(Light.block, shaderSrc_pointLight);\n }\n\n // Inject isntance-specific settings\n inject() {\n super.inject();\n\n ShaderProgram.defines['TANGRAM_POINTLIGHT_ATTENUATION_EXPONENT'] = (this.attenuation !== 0);\n ShaderProgram.defines['TANGRAM_POINTLIGHT_ATTENUATION_INNER_RADIUS'] = (this.radius != null && this.radius[0] != null);\n ShaderProgram.defines['TANGRAM_POINTLIGHT_ATTENUATION_OUTER_RADIUS'] = (this.radius != null);\n }\n\n update () {\n this.updateEyePosition();\n }\n\n updateEyePosition () {\n if (this.origin === 'world') {\n // For world origin, format is: [longitude, latitude, meters (default) or pixels w/px units]\n\n // Move light's world position into camera space\n let [x, y] = Geo.latLngToMeters(this.position);\n this.position_eye[0] = x - this.view.camera.position_meters[0];\n this.position_eye[1] = y - this.view.camera.position_meters[1];\n\n this.position_eye[2] = StyleParser.convertUnits(this.position[2],\n { zoom: this.view.zoom, meters_per_pixel: Geo.metersPerPixel(this.view.zoom) });\n this.position_eye[2] = this.position_eye[2] - this.view.camera.position_meters[2];\n }\n else if (this.origin === 'ground' || this.origin === 'camera') {\n // For camera or ground origin, format is: [x, y, z] in meters (default) or pixels w/px units\n\n // Light is in camera space by default\n this.position_eye = StyleParser.convertUnits(this.position,\n { zoom: this.view.zoom, meters_per_pixel: Geo.metersPerPixel(this.view.zoom) });\n\n if (this.origin === 'ground') {\n // Leave light's xy in camera space, but z needs to be moved relative to ground plane\n this.position_eye[2] = this.position_eye[2] - this.view.camera.position_meters[2];\n }\n }\n this.position_eye[3] = 1;\n }\n\n setupProgram (_program) {\n super.setupProgram(_program);\n\n _program.uniform('4fv', `u_${this.name}.position`, this.position_eye);\n\n if(ShaderProgram.defines['TANGRAM_POINTLIGHT_ATTENUATION_EXPONENT']) {\n _program.uniform('1f', `u_${this.name}.attenuationExponent`, this.attenuation);\n }\n\n if(ShaderProgram.defines['TANGRAM_POINTLIGHT_ATTENUATION_INNER_RADIUS']) {\n _program.uniform('1f', `u_${this.name}.innerRadius`,\n StyleParser.convertUnits(this.radius[0],\n { zoom: this.view.zoom, meters_per_pixel: Geo.metersPerPixel(this.view.zoom) }));\n }\n\n if(ShaderProgram.defines['TANGRAM_POINTLIGHT_ATTENUATION_OUTER_RADIUS']) {\n _program.uniform('1f', `u_${this.name}.outerRadius`,\n StyleParser.convertUnits(this.radius[1],\n { zoom: this.view.zoom, meters_per_pixel: Geo.metersPerPixel(this.view.zoom) }));\n }\n }\n}\nLight.types['point'] = PointLight;\n\n\nclass SpotLight extends PointLight {\n\n constructor (view, config) {\n super(view, config);\n this.type = 'spotlight';\n this.struct_name = 'SpotLight';\n\n this.direction = this._direction = (config.direction || [0, 0, -1]).map(parseFloat); // [x, y, z]\n this.exponent = config.exponent ? parseFloat(config.exponent) : 0.2;\n this.angle = config.angle ? parseFloat(config.angle) : 20;\n }\n\n get direction () {\n return this._direction;\n }\n\n set direction (v) {\n this._direction = Vector.normalize(v);\n }\n\n // Inject struct and calculate function\n static inject () {\n ShaderProgram.addBlock(Light.block, shaderSrc_spotLight);\n }\n\n setupProgram (_program) {\n super.setupProgram(_program);\n\n _program.uniform('3fv', `u_${this.name}.direction`, this.direction);\n _program.uniform('1f', `u_${this.name}.spotCosCutoff`, Math.cos(this.angle * 3.14159 / 180));\n _program.uniform('1f', `u_${this.name}.spotExponent`, this.exponent);\n }\n\n}\nLight.types['spotlight'] = SpotLight;\n", "import GLSL from './gl/glsl';\nimport {StyleParser} from './styles/style_parser';\n\nlet fs = require('fs');\nconst shaderSrc_material = fs.readFileSync(__dirname + '/gl/shaders/material.glsl', 'utf8');\n\nconst material_props = ['emission', 'ambient', 'diffuse', 'specular'];\n\nexport default class Material {\n constructor (config) {\n\n config = config || {};\n\n // These properties all have the same defaults, so they can be set in bulk\n material_props.forEach(prop => {\n const value = config[prop];\n if (value != null) {\n if (value.texture) {\n this[prop] = {\n texture: value.texture,\n mapping: value.mapping || 'spheremap',\n scale: GLSL.expandVec3(value.scale != null ? value.scale : 1),\n amount: GLSL.expandVec4(value.amount != null ? value.amount : 1)\n };\n }\n else if (typeof value === 'number' || Array.isArray(value)) {\n this[prop] = { amount: GLSL.expandVec4(value) };\n }\n else if (typeof value === 'string') {\n this[prop] = { amount: StyleParser.parseColor(value) };\n }\n else {\n this[prop] = value;\n }\n }\n });\n\n // Extra specular props\n if (this.specular) {\n this.specular.shininess = config.shininess ? parseFloat(config.shininess) : 0.2;\n }\n\n // Normal mapping\n if (config.normal != null) {\n this.normal = {\n texture: config.normal.texture,\n mapping: config.normal.mapping || 'triplanar',\n scale: GLSL.expandVec3(config.normal.scale != null ? config.normal.scale : 1),\n amount: config.normal.amount != null ? config.normal.amount : 1\n };\n }\n }\n\n // Determine if a material config block has sufficient properties to create a material\n static isValid (config) {\n if (config == null) {\n return false;\n }\n\n if (config.emission == null &&\n config.ambient == null &&\n config.diffuse == null &&\n config.specular == null) {\n return false;\n }\n\n return true;\n }\n\n inject (style) {\n // For each property, sets defines to configure texture mapping, with a pattern like:\n // TANGRAM_MATERIAL_DIFFUSE, TANGRAM_MATERIAL_DIFFUSE_TEXTURE, TANGRAM_MATERIAL_DIFFUSE_TEXTURE_SPHEREMAP\n // Also sets flags to keep track of each unique mapping type being used, e.g.:\n // TANGRAM_MATERIAL_TEXTURE_SPHEREMAP\n // Enables texture coordinates if needed and not already on\n material_props.forEach(prop => {\n let def = `TANGRAM_MATERIAL_${prop.toUpperCase()}`;\n let texdef = def + '_TEXTURE';\n style.defines[def] = (this[prop] != null);\n if (this[prop] && this[prop].texture) {\n style.defines[texdef] = true;\n style.defines[texdef + '_' + this[prop].mapping.toUpperCase()] = true;\n style.defines[`TANGRAM_MATERIAL_TEXTURE_${this[prop].mapping.toUpperCase()}`] = true;\n style.texcoords = style.texcoords || (this[prop].mapping === 'uv');\n }\n });\n\n // Normal mapping\n // As anove, sets flags to keep track of each unique mapping type being used, e.g.:\n // TANGRAM_MATERIAL_TEXTURE_SPHEREMAP\n if (this.normal && this.normal.texture) {\n style.defines['TANGRAM_MATERIAL_NORMAL_TEXTURE'] = true;\n style.defines['TANGRAM_MATERIAL_NORMAL_TEXTURE_' + this.normal.mapping.toUpperCase()] = true;\n style.defines[`TANGRAM_MATERIAL_TEXTURE_${this.normal.mapping.toUpperCase()}`] = true;\n style.texcoords = style.texcoords || (this.normal.mapping === 'uv');\n }\n\n style.replaceShaderBlock(Material.block, shaderSrc_material, 'Material');\n style.addShaderBlock('setup', '\\nmaterial = u_material;\\n', 'Material');\n }\n\n setupProgram (_program) {\n // For each property, sets uniforms in the pattern:\n // u_material.diffuse, u_material.diffuseScale u_material_diffuse_texture\n material_props.forEach(prop => {\n if (this[prop]) {\n if (this[prop].texture) {\n _program.setTextureUniform(`u_material_${prop}_texture`, this[prop].texture);\n _program.uniform('3fv', `u_material.${prop}Scale`, this[prop].scale);\n _program.uniform('4fv', `u_material.${prop}`, this[prop].amount);\n } else if (this[prop].amount) {\n _program.uniform('4fv', `u_material.${prop}`, this[prop].amount);\n }\n }\n });\n\n // Extra specular props\n if (this.specular) {\n _program.uniform('1f', 'u_material.shininess', this.specular.shininess);\n }\n\n // Normal mapping\n if (this.normal && this.normal.texture) {\n _program.setTextureUniform('u_material_normal_texture', this.normal.texture);\n _program.uniform('3fv', 'u_material.normalScale', this.normal.scale);\n _program.uniform('1f', 'u_material.normalAmount', this.normal.amount);\n }\n }\n}\n\nMaterial.block = 'material';\n", "/*jshint worker: true*/\n\nimport './utils/polyfills';\n\n// The leaflet layer plugin is currently the primary public API\nimport {leafletLayer} from './leaflet_layer';\n\n// The scene worker is only activated when a worker thread is instantiated, but must always be loaded\nimport Scene from './scene';\nimport {SceneWorker} from './scene_worker';\n\n// Additional modules are exposed for debugging\nimport version from './utils/version';\nimport log from './utils/log';\nimport Thread from './utils/thread';\nimport Utils from './utils/utils';\nimport Geo from './geo';\nimport Vector from './vector';\nimport DataSource from './sources/data_source';\nimport './sources/geojson';\nimport './sources/topojson';\nimport './sources/mvt';\nimport './sources/raster';\nimport GLSL from './gl/glsl';\nimport ShaderProgram from './gl/shader_program';\nimport VertexData from './gl/vertex_data';\nimport Texture from './gl/texture';\nimport Material from './material';\nimport Light from './light';\nimport WorkerBroker from './utils/worker_broker';\nimport {layerCache} from './styles/layer';\nimport {StyleManager} from './styles/style_manager';\nimport {StyleParser} from './styles/style_parser';\nimport Collision from './labels/collision';\nimport FeatureSelection from './selection';\nimport CanvasText from './styles/text/canvas_text';\nimport debugSettings from './utils/debug_settings';\n\nimport yaml from 'js-yaml';\nimport JSZip from 'jszip';\n\n// Make some modules accessible for debugging\nvar debug = {\n log,\n yaml,\n Thread,\n Utils,\n Geo,\n Vector,\n DataSource,\n GLSL,\n ShaderProgram,\n VertexData,\n Texture,\n Material,\n Light,\n Scene,\n SceneWorker,\n WorkerBroker,\n layerCache,\n StyleManager,\n StyleParser,\n Collision,\n FeatureSelection,\n CanvasText,\n debugSettings\n};\n\nif (Thread.is_main) {\n Utils.requestAnimationFramePolyfill();\n\n // Attach Promise polyfill to window\n // Allows FontFaceObserver to use polyfill (without needing to include its own duplicate polyfill)\n if (window.Promise === undefined) {\n window.Promise = Promise;\n JSZip.external.Promise = Promise;\n }\n}\n\nmodule.exports = {\n leafletLayer,\n debug,\n version\n};\n", - "import log from './utils/log';\nimport Utils from './utils/utils';\nimport debugSettings from './utils/debug_settings';\nimport * as URLs from './utils/urls';\nimport WorkerBroker from './utils/worker_broker';\nimport Task from './utils/task';\nimport subscribeMixin from './utils/subscribe';\nimport sliceObject from './utils/slice';\nimport Context from './gl/context';\nimport Texture from './gl/texture';\nimport ShaderProgram from './gl/shader_program';\nimport VertexArrayObject from './gl/vao';\nimport {StyleManager} from './styles/style_manager';\nimport {Style} from './styles/style';\nimport {StyleParser} from './styles/style_parser';\nimport SceneLoader from './scene_loader';\nimport View from './view';\nimport Light from './light';\nimport Tile from './tile';\nimport TileManager from './tile_manager';\nimport DataSource from './sources/data_source';\nimport FeatureSelection from './selection';\nimport RenderStateManager from './gl/render_state';\nimport CanvasText from './styles/text/canvas_text';\nimport FontManager from './styles/text/font_manager';\nimport MediaCapture from './utils/media_capture';\n\n// Load scene definition: pass an object directly, or a URL as string to load remotely\nexport default class Scene {\n\n constructor(config_source, options) {\n options = options || {};\n subscribeMixin(this);\n\n this.id = Scene.id++;\n this.initialized = false;\n this.initializing = null; // will be a promise that resolves when scene is loaded\n this.sources = {};\n\n this.view = new View(this, options);\n this.tile_manager = new TileManager({ scene: this, view: this.view });\n this.num_workers = options.numWorkers || 2;\n if (options.disableVertexArrayObjects === true) {\n VertexArrayObject.disabled = true;\n }\n\n Utils.use_high_density_display = options.highDensityDisplay !== undefined ? options.highDensityDisplay : true;\n Utils.updateDevicePixelRatio();\n\n this.config = null;\n this.config_source = config_source;\n this.config_bundle = null;\n this.last_valid_config_source = null;\n\n this.styles = null;\n this.style_manager = new StyleManager();\n\n this.building = null; // tracks current scene building state (tiles being built, etc.)\n this.dirty = true; // request a redraw\n\n if (options.preUpdate){\n // optional pre-render loop hook\n this.subscribe({'preUpdate': options.preUpdate});\n }\n\n if (options.postUpdate){\n // optional post-render loop hook\n this.subscribe({'postUpdate': options.postUpdate});\n }\n\n this.render_loop = !options.disableRenderLoop; // disable render loop - app will have to manually call Scene.render() per frame\n this.render_loop_active = false;\n this.render_loop_stop = false;\n this.render_count = 0;\n this.last_render_count = 0;\n this.render_count_changed = false;\n this.frame = 0;\n this.last_main_render = -1; // frame counter for last main render pass\n this.last_selection_render = -1; // frame counter for last selection render pass\n this.media_capture = new MediaCapture();\n this.selection = null;\n this.introspection = (options.introspection === true) ? true : false;\n this.resetTime();\n\n this.container = options.container;\n this.canvas = null;\n this.contextOptions = options.webGLContextOptions;\n\n this.lights = null;\n this.background = null;\n\n this.createListeners();\n this.updating = 0;\n this.generation = Scene.generation; // an id that is incremented each time the scene config is invalidated\n this.last_complete_generation = Scene.generation; // last generation id with a complete view\n this.setupDebug();\n\n this.log_level = options.logLevel || 'warn';\n log.setLevel(this.log_level);\n log.reset();\n }\n\n static create (config, options = {}) {\n return new Scene(config, options);\n }\n\n // Load scene (or reload existing scene if no new source specified)\n // Options:\n // `base_path`: base URL against which scene resources should be resolved (useful for Play) (default nulll)\n // `blocking`: should rendering block on scene load completion (default true)\n load(config_source = null, options = {}) {\n if (this.initializing) {\n return this.initializing;\n }\n log.reset();\n\n this.updating++;\n this.initialized = false;\n this.initial_build_time = null;\n\n // Backwards compatibilty for passing `base_path` string as second argument\n // (since transitioned to using options argument to accept more parameters)\n options = (typeof options === 'string') ? { base_path: options } : options;\n\n // Should rendering block on load (not desirable for initial load, often desired for live style-switching)\n options.blocking = (options.blocking !== undefined) ? options.blocking : true;\n\n if (this.render_loop !== false) {\n this.setupRenderLoop();\n }\n\n // Load scene definition (sources, styles, etc.), then create styles & workers\n this.createCanvas();\n this.initializing = this.loadScene(config_source, options)\n .then(() => this.createWorkers())\n .then(() => {\n this.resetFeatureSelection();\n\n // Scene loaded from a JS object, or modified by a `load` event, may contain compiled JS functions\n // which need to be serialized, while one loaded only from a URL does not.\n const serialize_funcs = ((typeof this.config_source === 'object') || this.hasSubscribersFor('load'));\n\n const updating = this.updateConfig({ serialize_funcs, normalize: false, load_event: true, fade_in: true });\n if (options.blocking === true) {\n return updating;\n }\n }).then(() => {\n this.updating--;\n this.initializing = null;\n this.initialized = true;\n this.last_valid_config_source = this.config_source;\n this.last_valid_options = { base_path: options.base_path, file_type: options.file_type };\n\n this.requestRedraw();\n }).catch(error => {\n this.initializing = null;\n this.updating = 0;\n\n // Report and revert to last valid config if available\n let type, message;\n if (error.name === 'YAMLException') {\n type = 'yaml';\n message = 'Error parsing scene YAML';\n }\n else {\n // TODO: more error types\n message = 'Error initializing scene';\n }\n this.trigger('error', { type, message, error, url: this.config_source });\n\n message = `Scene.load() failed to load ${this.config_source}: ${error.message}`;\n if (this.last_valid_config_source) {\n log('warn', message, error);\n log('info', `Scene.load() reverting to last valid configuration`);\n return this.load(this.last_valid_config_source, this.last_valid_base_path);\n }\n log('error', message, error);\n throw error;\n });\n\n return this.initializing;\n }\n\n destroy() {\n this.initialized = false;\n this.render_loop_stop = true; // schedule render loop to stop\n\n this.destroyListeners();\n\n if (this.canvas && this.canvas.parentNode) {\n this.canvas.parentNode.removeChild(this.canvas);\n this.canvas = null;\n }\n this.container = null;\n\n if (this.selection) {\n this.selection.destroy();\n }\n\n if (this.gl) {\n Texture.destroy(this.gl);\n this.style_manager.destroy(this.gl);\n this.styles = {};\n\n ShaderProgram.reset();\n\n // Force context loss\n let ext = this.gl.getExtension('WEBGL_lose_context');\n if (ext) {\n ext.loseContext();\n }\n\n this.gl = null;\n }\n\n this.sources = {};\n\n this.destroyWorkers();\n this.tile_manager.destroy();\n this.tile_manager = null;\n log.reset();\n }\n\n createCanvas() {\n if (this.canvas) {\n return;\n }\n\n this.container = this.container || document.body;\n this.canvas = document.createElement('canvas');\n this.canvas.style.position = 'absolute';\n this.canvas.style.top = 0;\n this.canvas.style.left = 0;\n\n // Force tangram canvas underneath all leaflet layers, and set background to transparent\n this.container.style.backgroundColor = 'transparent';\n this.container.appendChild(this.canvas);\n\n try {\n this.gl = Context.getContext(this.canvas, Object.assign({\n alpha: true, premultipliedAlpha: true,\n device_pixel_ratio: Utils.device_pixel_ratio\n }, this.contextOptions));\n }\n catch(e) {\n throw new Error(\n \"Couldn't create WebGL context. \" +\n \"Your browser may not support WebGL, or it's turned off? \" +\n \"Visit http://webglreport.com/ for more info.\"\n );\n }\n\n this.resizeMap(this.container.clientWidth, this.container.clientHeight);\n VertexArrayObject.init(this.gl);\n this.render_states = new RenderStateManager(this.gl);\n this.media_capture.setCanvas(this.canvas, this.gl);\n }\n\n // Get the URL to load the web worker from\n getWorkerUrl() {\n let worker_url;\n /* jshint -W117 */\n // ignore uninitialized worker src variable (defined in parent scope)\n if (typeof __worker_src__ !== \"undefined\"){\n let source = '(' + __worker_src__ + ')()';\n if (__worker_src_origin__ && __worker_src_map__ !== '') {\n let origin = __worker_src_origin__.slice(0, __worker_src_origin__.lastIndexOf('/')+1);\n source += '\\n//#' + ' sourceMappingURL=' + origin + __worker_src_map__;\n }\n worker_url = URLs.createObjectURL(new Blob([source], { type: 'application/javascript' }));\n }\n /* jshint +W117 */\n\n if (!worker_url) {\n throw new Error(\"Couldn't find internal Tangram source variable (may indicate the library did not build correctly)\");\n }\n\n // Import custom data source scripts alongside core library\n // NOTE: workaround for issue where large libraries intermittently fail to load in web workers,\n // when multiple importScripts() calls are used. Loading all scripts (including Tangram itself)\n // in one call at at worker creation time has not exhibited the same issue.\n let urls = [...this.data_source_scripts];\n urls.push(worker_url); // load Tangram *last* (has been more reliable, though reason unknown)\n let body = `importScripts(${urls.map(url => `'${url}'`).join(',')});`;\n return URLs.createObjectURL(new Blob([body], { type: 'application/javascript' }));\n }\n\n // Update list of any custom data source scripts (if any)\n updateDataSourceScripts () {\n let prev_scripts = [...(this.data_source_scripts||[])]; // save list of previously loaded scripts\n let scripts = Object.keys(this.config.sources).map(s => this.config.sources[s].scripts).filter(x => x);\n if (scripts.length > 0) {\n log('debug', 'loading custom data source scripts in worker:', scripts);\n }\n this.data_source_scripts = [].concat(...scripts).sort();\n\n // Scripts changed?\n return !(this.data_source_scripts.length === prev_scripts.length &&\n this.data_source_scripts.every((v, i) => v === prev_scripts[i]));\n }\n\n // Web workers handle heavy duty tile construction: networking, geometry processing, etc.\n createWorkers() {\n // Reset old workers (if any) if we need to re-instantiate with new external scripts\n if (this.updateDataSourceScripts()) {\n this.destroyWorkers();\n }\n\n if (!this.workers) {\n return this.makeWorkers(this.getWorkerUrl());\n }\n return Promise.resolve();\n }\n\n // Instantiate workers from URL, init event handlers\n makeWorkers(url) {\n\n // Let VertexElements know if 32 bit indices for element arrays are available\n let has_element_index_uint = this.gl.getExtension(\"OES_element_index_uint\") ? true : false;\n\n let queue = [];\n this.workers = [];\n for (var id=0; id < this.num_workers; id++) {\n var worker = new Worker(url);\n this.workers[id] = worker;\n\n WorkerBroker.addWorker(worker);\n\n log('debug', `Scene.makeWorkers: initializing worker ${id}`);\n let _id = id;\n queue.push(WorkerBroker.postMessage(worker, 'self.init', this.id, id, this.num_workers, this.log_level, Utils.device_pixel_ratio, has_element_index_uint).then(\n (id) => {\n log('debug', `Scene.makeWorkers: initialized worker ${id}`);\n return id;\n },\n (error) => {\n log('error', `Scene.makeWorkers: failed to initialize worker ${_id}:`, error);\n return Promise.reject(error);\n })\n );\n }\n\n this.next_worker = 0;\n return Promise.all(queue).then(() => {\n log.setWorkers(this.workers);\n\n // Free memory after worker initialization\n URLs.revokeObjectURL(url);\n });\n }\n\n destroyWorkers() {\n if (Array.isArray(this.workers)) {\n log.setWorkers(null);\n this.workers.forEach((worker) => {\n worker.terminate();\n });\n this.workers = null;\n }\n }\n\n // Scene is ready for rendering\n ready() {\n if (!this.view.ready() || Object.keys(this.sources).length === 0) {\n return false;\n }\n return true;\n }\n\n // Resize the map when device pixel ratio changes, e.g. when switching between displays\n updateDevicePixelRatio () {\n if (Utils.updateDevicePixelRatio()) {\n WorkerBroker.postMessage(this.workers, 'self.updateDevicePixelRatio', Utils.device_pixel_ratio)\n .then(() => this.rebuild())\n .then(() => this.resizeMap(this.view.size.css.width, this.view.size.css.height));\n }\n }\n\n resizeMap(width, height) {\n if (width === 0 && height === 0) {\n return;\n }\n\n this.dirty = true;\n this.view.setViewportSize(width, height);\n if (this.gl) {\n Context.resize(this.gl, width, height, Utils.device_pixel_ratio);\n }\n }\n\n // Request scene be redrawn at next animation loop\n requestRedraw() {\n this.dirty = true;\n }\n\n // Redraw scene immediately - don't wait for animation loop\n // Use sparingly, but for cases where you need the closest possible sync with other UI elements,\n // such as other, non-WebGL map layers (e.g. Leaflet raster layers, markers, etc.)\n immediateRedraw() {\n this.dirty = true;\n this.update();\n }\n\n renderLoop () {\n this.render_loop_active = true; // only let the render loop instantiate once\n\n if (this.initialized) {\n // Render the scene\n this.update();\n }\n\n // Pending background tasks\n Task.setState({ user_moving_view: this.view.user_input_active });\n Task.processAll();\n\n // Request the next frame if not scheduled to stop\n if (!this.render_loop_stop) {\n window.requestAnimationFrame(this.renderLoop.bind(this));\n }\n else {\n this.render_loop_stop = false;\n this.render_loop_active = false;\n }\n }\n\n // Setup the render loop\n setupRenderLoop() {\n if (!this.render_loop_active) {\n setTimeout(() => { this.renderLoop(); }, 0); // delay start by one tick\n }\n }\n\n update() {\n // Determine which passes (if any) to render\n let main = this.dirty;\n let selection = this.selection ? this.selection.hasPendingRequests() : false;\n var will_render = !(\n (main === false && selection === false) ||\n this.initialized === false ||\n this.updating > 0 ||\n this.ready() === false\n );\n\n // Pre-render loop hook\n this.trigger('preUpdate', will_render);\n\n // Update view (needs to update user input timer even if no render will occur)\n this.view.update();\n\n // Bail if no need to render\n if (!will_render) {\n return false;\n }\n this.dirty = false; // subclasses can set this back to true when animation is needed\n\n // Render the scene\n this.updateDevicePixelRatio();\n this.render({ main, selection });\n this.updateViewComplete(); // fires event when rendered tile set or style changes\n this.media_capture.completeScreenshot(); // completes screenshot capture if requested\n\n // Post-render loop hook\n this.trigger('postUpdate', will_render);\n\n // Redraw every frame if animating\n if (this.animated === true || this.view.isAnimating()) {\n this.dirty = true;\n }\n\n this.frame++;\n log('trace', 'Scene.render()');\n return true;\n }\n\n // Accepts flags indicating which render passes should be made\n render({ main, selection }) {\n var gl = this.gl;\n\n // Update styles, camera, lights\n Object.keys(this.lights).forEach(i => this.lights[i].update());\n\n // Render main pass\n if (main) {\n this.render_count = this.renderPass();\n this.last_main_render = this.frame;\n }\n\n // Render selection pass (if needed)\n if (selection) {\n if (this.view.panning || this.view.user_input_active) {\n this.selection.clearPendingRequests();\n return;\n }\n\n // Only re-render if selection buffer is out of date (relative to main render buffer)\n // and not locked (e.g. no tiles are actively building)\n if (!this.selection.locked && this.last_selection_render < this.last_main_render) {\n this.selection.bind(); // switch to FBO\n this.renderPass(\n 'selection_program', // render w/alternate program\n { allow_blend: false });\n\n // Reset to screen buffer\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n gl.viewport(0, 0, this.canvas.width, this.canvas.height);\n gl.clearColor(...this.background.color); // restore scene background color\n this.last_selection_render = this.frame;\n }\n\n this.selection.read(); // process any pending results from selection buffer\n }\n\n this.render_count_changed = false;\n if (this.render_count !== this.last_render_count) {\n this.render_count_changed = true;\n\n this.getFeatureSelectionMapSize().then(size => {\n if (size) { // returns undefined if previous request pending\n log('info', `Scene: rendered ${this.render_count} primitives (${size} features in selection map)`);\n }\n });\n }\n this.last_render_count = this.render_count;\n\n return true;\n }\n\n // Render all active styles, grouped by blend/depth type (opaque, overlay, etc.) and by program (style)\n // Called both for main render pass, and for secondary passes like selection buffer\n renderPass(program_key = 'program', { allow_blend } = {}) {\n // optionally force alpha off (e.g. for selection pass)\n allow_blend = (allow_blend == null) ? true : allow_blend;\n\n this.clearFrame({ clear_color: true, clear_depth: true });\n\n // Sort styles by blend order\n let styles = this.tile_manager.getActiveStyles().\n map(s => this.styles[s]).\n filter(s => s). // guard against missing styles, such as while loading a new scene\n sort(Style.blendOrderSort);\n\n // Render styles\n let count = 0; // how many primitives were rendered\n let last_blend;\n for (let s=0; s < styles.length; s++) {\n let style = styles[s];\n\n // Only update render state when blend mode changes\n if (style.blend !== last_blend) {\n let state = Object.assign({},\n Style.render_states[style.blend], // render state for blend mode\n { blend: (allow_blend && style.blend) } // enable/disable blending (e.g. no blend for selection)\n );\n this.setRenderState(state);\n }\n count += this.renderStyle(style.name, program_key);\n last_blend = style.blend;\n }\n\n return count;\n }\n\n renderStyle(style_name, program_key) {\n let style = this.styles[style_name];\n let first_for_style = true;\n let render_count = 0;\n let program;\n\n // Render tile GL geometries\n let renderable_tiles = this.tile_manager.getRenderableTiles();\n for (let t=0; t < renderable_tiles.length; t++) {\n let tile = renderable_tiles[t];\n\n if (tile.meshes[style_name] == null) {\n continue;\n }\n\n // Style-specific state\n // Only setup style if rendering for first time this frame\n // (lazy init, not all styles will be used in all screen views; some styles might be defined but never used)\n if (first_for_style === true) {\n first_for_style = false;\n program = this.setupStyle(style, program_key);\n if (!program) {\n return 0;\n }\n }\n\n // Skip proxy tiles if new tiles have finished loading this style\n if (!tile.shouldProxyForStyle(style_name)) {\n // log('trace', `Scene.renderStyle(): Skip proxy tile for style '${style_name}' `, tile, tile.proxy_for);\n continue;\n }\n\n // Tile-specific state\n this.view.setupTile(tile, program);\n\n // Render tile\n tile.meshes[style_name].forEach(mesh => {\n if (style.render(mesh)) {\n this.requestRedraw();\n }\n render_count += mesh.geometry_count;\n });\n }\n\n return render_count;\n }\n\n setupStyle(style, program_key) {\n // Get shader program from style, lazily compiling if necessary\n let program;\n try {\n program = style.getProgram(program_key);\n if (!program) {\n return;\n }\n }\n catch(error) {\n this.trigger('warning', {\n type: 'styles',\n message: `Error compiling style ${style.name}`,\n style,\n shader_errors: style.program && style.program.shader_errors\n });\n return;\n }\n\n program.use();\n style.setup();\n\n program.uniform('1f', 'u_time', this.animated ? (((+new Date()) - this.start_time) / 1000) : 0);\n this.view.setupProgram(program);\n for (let i in this.lights) {\n this.lights[i].setupProgram(program);\n }\n\n return program;\n }\n\n clearFrame({ clear_color, clear_depth } = {}) {\n if (!this.initialized) {\n return;\n }\n\n // Defaults\n clear_color = (clear_color === false) ? false : true; // default true\n clear_depth = (clear_depth === false) ? false : true; // default true\n\n // Set GL state\n this.render_states.depth_write.set({ depth_write: clear_depth });\n\n let gl = this.gl;\n if (clear_color || clear_depth) {\n let mask = (clear_color && gl.COLOR_BUFFER_BIT) | (clear_depth && gl.DEPTH_BUFFER_BIT);\n gl.clear(mask);\n }\n }\n\n setRenderState({ depth_test, depth_write, cull_face, blend } = {}) {\n if (!this.initialized) {\n return;\n }\n\n // Defaults\n // TODO: when we abstract out support for multiple render passes, these can be per-pass config options\n let render_states = this.render_states;\n depth_test = (depth_test === false) ? false : render_states.defaults.depth_test; // default true\n depth_write = (depth_write === false) ? false : render_states.defaults.depth_write; // default true\n cull_face = (cull_face === false) ? false : render_states.defaults.culling; // default true\n blend = (blend != null) ? blend : render_states.defaults.blending; // default false\n\n // Reset frame state\n let gl = this.gl;\n\n render_states.depth_test.set({ depth_test: depth_test });\n render_states.depth_write.set({ depth_write: depth_write });\n render_states.culling.set({ cull: cull_face, face: render_states.defaults.culling_face });\n\n // Blending of alpha channel is modified to account for WebGL alpha behavior, see:\n // http://webglfundamentals.org/webgl/lessons/webgl-and-alpha.html\n // http://stackoverflow.com/a/11533416\n if (blend) {\n // Opaque: all source, no destination\n if (blend === 'opaque') {\n render_states.blending.set({\n blend: false\n });\n }\n // Traditional alpha blending\n else if (blend === 'overlay' || blend === 'inlay') {\n render_states.blending.set({\n blend: true,\n src: gl.SRC_ALPHA, dst: gl.ONE_MINUS_SRC_ALPHA,\n src_alpha: gl.ONE, dst_alpha: gl.ONE_MINUS_SRC_ALPHA\n });\n }\n // Additive blending\n else if (blend === 'add') {\n render_states.blending.set({\n blend: true,\n src: gl.ONE, dst: gl.ONE\n });\n }\n // Multiplicative blending\n else if (blend === 'multiply') {\n render_states.blending.set({\n blend: true,\n src: gl.ZERO, dst: gl.SRC_COLOR\n });\n }\n }\n else {\n render_states.blending.set({ blend: false });\n }\n }\n\n // Request feature selection at given pixel. Runs async and returns results via a promise.\n getFeatureAt(pixel, { radius } = {}) {\n if (!this.initialized) {\n log('debug', \"Scene.getFeatureAt() called before scene was initialized\");\n return Promise.resolve();\n }\n\n // Scale point and radius to [0..1] range\n let point = {\n x: pixel.x / this.view.size.css.width,\n y: pixel.y / this.view.size.css.height\n };\n\n if (radius > 0) {\n radius = {\n x: radius / this.view.size.css.width,\n y: radius / this.view.size.css.height\n };\n }\n else {\n radius = null;\n }\n\n return this.selection.getFeatureAt(point, { radius }).\n then(selection => Object.assign(selection, { pixel })).\n catch(error => Promise.resolve({ error }));\n }\n\n // Query features within visible tiles, with optional filter conditions\n queryFeatures({ filter, unique = true, group_by = null, visible = null, geometry = false } = {}) {\n filter = Utils.serializeWithFunctions(filter);\n let tile_keys = this.tile_manager.getRenderableTiles().map(t => t.key);\n return WorkerBroker.postMessage(this.workers, 'self.queryFeatures', { filter, visible, geometry, tile_keys }).then(results => {\n let features = [];\n let keys = {};\n let groups = {};\n\n // Optional uniqueify criteria\n // Valid values: true, false/null, single property name, or array of property names\n unique = (typeof unique === 'string') ? [unique] : unique;\n const uniqueify = unique && (obj => JSON.stringify(Array.isArray(unique) ? sliceObject(obj, unique) : obj));\n\n // Optional grouping criteria\n // Valid values: false/null, single property name, or array of property names\n group_by = (typeof group_by === 'string' || Array.isArray(group_by)) && group_by;\n const group = group_by && (obj => {\n return Array.isArray(group_by) ? JSON.stringify(sliceObject(obj, group_by)) : obj[group_by];\n });\n\n results.forEach(r => r.forEach(feature => {\n if (uniqueify) {\n let str = uniqueify(feature);\n if (keys[str]) {\n return;\n }\n keys[str] = true;\n }\n\n if (group) {\n let str = group(feature.properties);\n groups[str] = groups[str] || [];\n groups[str].push(feature);\n }\n else {\n features.push(feature);\n }\n }));\n return group ? groups : features; // returned grouped results, or all results\n });\n }\n\n // Rebuild all tiles, without re-parsing the config or re-compiling styles\n // sync: boolean of whether to sync the config object to the worker\n // sources: optional array of data sources to selectively rebuild (by default all our rebuilt)\n rebuild({ new_generation = true, sources = null, serialize_funcs, profile = false, fade_in = false } = {}) {\n return new Promise((resolve, reject) => {\n // Skip rebuild if already in progress\n if (this.building) {\n // Queue up to one rebuild call at a time, only save last request\n if (this.building.queued && this.building.queued.reject) {\n // notify previous request that it did not complete\n log('debug', 'Scene.rebuild: request superceded by a newer call');\n this.building.queued.resolve(false); // false flag indicates rebuild request was superceded\n }\n\n // Save queued request\n let options = { new_generation, sources, serialize_funcs, profile, fade_in };\n this.building.queued = { resolve, reject, options };\n log('trace', `Scene.rebuild(): queuing request`);\n return;\n }\n\n // Track tile build state\n this.building = { resolve, reject };\n\n // Profiling\n if (profile) {\n this._profile('Scene.rebuild');\n }\n\n // Increment generation to ensure style/tile building stay in sync\n // (skipped if calling function already incremented)\n if (new_generation) {\n this.generation = ++Scene.generation;\n for (let style in this.styles) {\n this.styles[style].setGeneration(this.generation);\n }\n }\n\n // Update config (in case JS objects were manipulated directly)\n this.syncConfigToWorker({ serialize_funcs });\n this.resetFeatureSelection(sources);\n this.resetTime();\n\n // Rebuild visible tiles\n this.tile_manager.pruneToVisibleTiles();\n this.tile_manager.forEachTile(tile => {\n if (!sources || sources.indexOf(tile.source.name) > -1) {\n this.tile_manager.buildTile(tile, { fade_in });\n }\n });\n this.tile_manager.updateTilesForView(); // picks up additional tiles for any new/changed data sources\n this.tile_manager.checkBuildQueue(); // resolve immediately if no tiles to build\n }).then(() => {\n // Profiling\n if (profile) {\n this._profileEnd('Scene.rebuild');\n }\n });\n }\n\n // Tile manager finished building tiles\n // TODO move to tile manager\n tileManagerBuildDone() {\n CanvasText.pruneTextCache();\n\n if (this.building) {\n log('info', `Scene: build geometry finished`);\n if (this.building.resolve) {\n if (this.initial_build_time == null) {\n this.initial_build_time = (+new Date()) - this.start_time;\n log('debug', `Scene: initial build time: ${this.initial_build_time}`);\n }\n this.building.resolve(true);\n }\n\n // Another rebuild queued?\n var queued = this.building.queued;\n this.building = null;\n if (queued) {\n log('debug', `Scene: starting queued rebuild() request`);\n this.rebuild(queued.options).then(queued.resolve, queued.reject);\n }\n }\n }\n\n /**\n Load (or reload) the scene config\n @return {Promise}\n */\n loadScene(config_source = null, { base_path, file_type } = {}) {\n this.config_source = config_source || this.config_source;\n this.config_globals_applied = [];\n\n if (typeof this.config_source === 'string') {\n this.base_path = URLs.pathForURL(base_path || this.config_source);\n }\n else {\n this.base_path = URLs.pathForURL(base_path);\n }\n\n // backwards compatibility for accessing base path under previous name\n // TODO: schedule for deprecation\n this.config_path = this.base_path;\n\n return SceneLoader.loadScene(this.config_source, { path: this.base_path, type: file_type }).then(({config, bundle}) => {\n this.config = config;\n this.config_bundle = bundle;\n return this.config;\n });\n }\n\n // Add source to a scene, arguments `name` and `config` need to be provided:\n // - If the name doesn't match a sources it will create it\n // - the `config` obj follow the YAML scene spec, ex: ```{type: 'TopoJSON', url: \"//tile.mapzen.com/mapzen/vector/v1/all/{z}/{x}/{y}.topojson\"]}```\n // that looks like:\n //\n // scene.setDataSource(\"osm\", {type: 'TopoJSON', url: \"//tile.mapzen.com/mapzen/vector/v1/all/{z}/{x}/{y}.topojson\" });\n //\n // - also can be pass a ```data``` obj: ```{type: 'GeoJSON', data: JSObj ]}```\n //\n // var geojson_data = {};\n // ...\n // scene.setDataSource(\"dynamic_data\", {type: 'GeoJSON', data: geojson_data });\n //\n setDataSource (name, config) {\n if (!name || !config || !config.type || (!config.url && !config.data)) {\n log('error', \"No name provided or not a valid config:\", name, config);\n return;\n }\n\n let load = (this.config.sources[name] == null);\n let source = this.config.sources[name] = Object.assign({}, config);\n\n // Convert raw data into blob URL\n if (source.data && typeof source.data === 'object') {\n source.url = URLs.createObjectURL(new Blob([JSON.stringify(source.data)]));\n delete source.data;\n }\n\n if (load) {\n return this.updateConfig({ rebuild: { sources: [name] } });\n } else {\n return this.rebuild({ sources: [name] });\n }\n }\n\n createDataSources() {\n let reset = []; // sources to reset\n let prev_source_names = Object.keys(this.sources);\n let source_id = 0;\n\n for (var name in this.config.sources) {\n let source = this.config.sources[name];\n let prev_source = this.sources[name];\n\n try {\n let config = Object.assign({}, source, { name, id: source_id++ });\n this.sources[name] = DataSource.create(config, this.sources);\n if (!this.sources[name]) {\n throw {};\n }\n }\n catch(e) {\n delete this.sources[name];\n let message = `Could not create data source: ${e.message}`;\n log('warn', `Scene: ${message}`, source);\n this.trigger('warning', { type: 'sources', source, message });\n }\n\n // Data source changed?\n if (DataSource.changed(this.sources[name], prev_source)) {\n reset.push(name);\n }\n }\n\n // Sources that were removed\n prev_source_names.forEach(s => {\n if (!this.config.sources[s]) {\n delete this.sources[s]; // TODO: remove from workers too?\n reset.push(s);\n }\n });\n\n // Remove tiles from sources that have changed\n if (reset.length > 0) {\n this.tile_manager.removeTiles(tile => {\n return (reset.indexOf(tile.source.name) > -1);\n });\n }\n\n // Mark sources that will generate geometry tiles\n // (all except those that are only raster sources attached to other sources)\n for (let ln in this.config.layers) {\n let layer = this.config.layers[ln];\n if (layer.enabled !== false && layer.data && this.sources[layer.data.source]) {\n this.sources[layer.data.source].builds_geometry_tiles = true;\n }\n }\n }\n\n // Load all textures in the scene definition\n loadTextures() {\n return Texture.createFromObject(this.gl, this.config.textures).\n then(() => Texture.createDefault(this.gl)); // create a 'default' texture for placeholders\n }\n\n // Called (currently manually) after styles are updated in stylesheet\n updateStyles() {\n if (!this.initialized && !this.initializing) {\n throw new Error('Scene.updateStyles() called before scene was initialized');\n }\n\n // (Re)build styles from config\n this.styles = this.style_manager.build(this.config.styles);\n this.style_manager.initStyles(this);\n\n // Optionally set GL context (used when initializing or re-initializing GL resources)\n for (let style in this.styles) {\n this.styles[style].setGL(this.gl);\n }\n\n this.dirty = true;\n }\n\n // Is scene currently animating?\n get animated () {\n // Use explicitly set scene animation flag if defined, otherwise enabled animation if any animated styles are in view\n return (this.config.scene.animated !== undefined ?\n this.config.scene.animated :\n this.tile_manager.getActiveStyles().some(s => this.styles[s].animated));\n }\n\n // Get active camera - for public API\n getActiveCamera() {\n return this.view.getActiveCamera();\n }\n\n // Set active camera - for public API\n setActiveCamera(name) {\n return this.view.setActiveCamera(name);\n }\n\n // Create lighting\n createLights() {\n this.lights = {};\n for (let i in this.config.lights) {\n if (!this.config.lights[i] || typeof this.config.lights[i] !== 'object') {\n continue;\n }\n let light = this.config.lights[i];\n light.name = i.replace('-', '_'); // light names are injected in shaders, can't have hyphens\n light.visible = (light.visible === false) ? false : true;\n if (light.visible) {\n this.lights[light.name] = Light.create(this.view, light);\n }\n }\n Light.inject(this.lights);\n }\n\n // Set background color\n setBackground() {\n let bg = this.config.scene.background;\n this.background = {};\n if (bg && bg.color) {\n this.background.color = StyleParser.parseColor(bg.color);\n }\n if (!this.background.color) {\n this.background.color = [0, 0, 0, 0]; // default background TODO: vary w/scene alpha\n }\n\n // if background is fully opaque, set canvas background to match\n if (this.background.color[3] === 1) {\n this.canvas.style.backgroundColor =\n `rgba(${this.background.color.map(c => Math.floor(c * 255)).join(', ')})`;\n }\n else {\n this.canvas.style.backgroundColor = 'transparent';\n }\n\n this.gl.clearColor(...this.background.color);\n }\n\n // Turn introspection mode on/off\n setIntrospection (val) {\n this.introspection = val || false;\n this.updating++;\n return this.updateConfig({ normalize: false }).then(() => this.updating--);\n }\n\n // Update scene config, and optionally rebuild geometry\n // rebuild can be boolean, or an object containing rebuild options to passthrough\n updateConfig({ load_event = false, rebuild = true, serialize_funcs, normalize = true, fade_in = false } = {}) {\n this.generation = ++Scene.generation;\n this.updating++;\n\n this.config = SceneLoader.applyGlobalProperties(this.config, this.config_globals_applied);\n if (normalize) {\n SceneLoader.normalize(this.config, this.config_bundle);\n }\n this.trigger(load_event ? 'load' : 'update', { config: this.config });\n\n SceneLoader.hoistTextures(this.config); // move inline textures into global texture set\n this.style_manager.init();\n this.view.reset();\n this.createLights();\n this.createDataSources();\n this.loadTextures();\n this.setBackground();\n FontManager.loadFonts(this.config.fonts);\n\n // TODO: detect changes to styles? already (currently) need to recompile anyway when camera or lights change\n this.updateStyles();\n\n // Optionally rebuild geometry\n let done = rebuild ?\n this.rebuild(Object.assign({ new_generation: false, serialize_funcs, fade_in }, typeof rebuild === 'object' && rebuild)) :\n this.syncConfigToWorker({ serialize_funcs }); // rebuild() also syncs config\n\n // Finish by updating bounds and re-rendering\n this.updating--;\n this.view.updateBounds();\n this.requestRedraw();\n\n return done;\n }\n\n // Serialize config and send to worker\n syncConfigToWorker({ serialize_funcs = true } = {}) {\n // Tell workers we're about to rebuild (so they can update styles, etc.)\n let config_serialized =\n serialize_funcs ? Utils.serializeWithFunctions(this.config) : JSON.stringify(this.config);\n return WorkerBroker.postMessage(this.workers, 'self.updateConfig', {\n config: config_serialized,\n generation: this.generation,\n introspection: this.introspection\n }, debugSettings);\n }\n\n // Listen to related objects\n createListeners () {\n this.listeners = {};\n\n this.listeners.view = {\n move: () => this.trigger('move')\n };\n this.view.subscribe(this.listeners.view);\n\n this.listeners.texture = {\n update: () => this.dirty = true,\n warning: (data) => this.trigger('warning', Object.assign({ type: 'textures' }, data))\n };\n Texture.subscribe(this.listeners.texture);\n\n this.listeners.scene_loader = {\n error: (data) => this.trigger('error', Object.assign({ type: 'scene' }, data))\n };\n SceneLoader.subscribe(this.listeners.scene_loader);\n }\n\n destroyListeners () {\n this.unsubscribeAll();\n this.view.unsubscribe(this.listeners.view);\n Texture.unsubscribe(this.listeners.texture);\n SceneLoader.unsubscribe(this.listeners.scene_loader);\n this.listeners = null;\n }\n\n resetFeatureSelection(sources = null) {\n if (!this.selection) {\n this.selection = new FeatureSelection(this.gl, this.workers, () => this.building);\n }\n else if (this.workers) {\n WorkerBroker.postMessage(this.workers, 'self.resetFeatureSelection', sources);\n }\n }\n\n // Gets the current feature selection map size across all workers. Returns a promise.\n getFeatureSelectionMapSize() {\n if (this.fetching_selection_map) {\n return Promise.resolve(); // return undefined if already pending\n }\n this.fetching_selection_map = true;\n\n return WorkerBroker.postMessage(this.workers, 'self.getFeatureSelectionMapSize')\n .then(sizes => {\n this.fetching_selection_map = false;\n return sizes.reduce((a, b) => a + b);\n });\n }\n\n // Reset internal clock, mostly useful for consistent experience when changing styles/debugging\n resetTime() {\n this.start_time = +new Date();\n }\n\n // Fires event when rendered tile set or style changes\n updateViewComplete () {\n if ((this.render_count_changed || this.generation !== this.last_complete_generation) &&\n !this.tile_manager.isLoadingVisibleTiles()) {\n this.last_complete_generation = this.generation;\n this.trigger('view_complete');\n }\n }\n\n resetViewComplete () {\n this.last_complete_generation = null;\n }\n\n // Take a screenshot\n // Asynchronous because we have to wait for next render to capture buffer\n // Returns a promise\n screenshot ({ background = 'white' } = {}) {\n this.requestRedraw();\n return this.media_capture.screenshot({background});\n }\n\n startVideoCapture () {\n this.requestRedraw();\n return this.media_capture.startVideoCapture();\n }\n\n stopVideoCapture () {\n return this.media_capture.stopVideoCapture();\n }\n\n\n // Stats/debug/profiling methods\n\n // Profile helpers, issues a profile on main thread & all workers\n _profile(name) {\n console.profile(`main thread: ${name}`);\n WorkerBroker.postMessage(this.workers, 'self.profile', name);\n }\n\n _profileEnd(name) {\n console.profileEnd(`main thread: ${name}`);\n WorkerBroker.postMessage(this.workers, 'self.profileEnd', name);\n }\n\n // Debug config and functions\n setupDebug () {\n let scene = this;\n this.debug = {\n // Rebuild geometry a given # of times and print average, min, max timings\n timeRebuild (num = 1, options = {}) {\n let times = [];\n let cycle = () => {\n let start = +new Date();\n scene.rebuild(options).then(() => {\n times.push(+new Date() - start);\n\n if (times.length < num) {\n cycle();\n }\n else {\n let avg = ~~(times.reduce((a, b) => a + b) / times.length);\n log('info', `Profiled rebuild ${num} times: ${avg} avg (${Math.min(...times)} min, ${Math.max(...times)} max)`);\n }\n });\n };\n cycle();\n },\n\n // Return geometry counts of visible tiles, grouped by style name\n geometryCountByStyle () {\n let counts = {};\n scene.tile_manager.getRenderableTiles().forEach(tile => {\n for (let style in tile.meshes) {\n counts[style] = counts[style] || 0;\n tile.meshes[style].forEach(mesh => {\n counts[style] += mesh.geometry_count;\n });\n }\n });\n return counts;\n },\n\n geometryCountByBaseStyle () {\n let style_counts = scene.debug.geometryCountByStyle();\n let counts = {};\n for (let style in style_counts) {\n let base = scene.styles[style].baseStyle();\n counts[base] = counts[base] || 0;\n counts[base] += style_counts[style];\n }\n return counts;\n },\n\n geometrySizeByStyle () {\n let sizes = {};\n scene.tile_manager.getRenderableTiles().forEach(tile => {\n for (let style in tile.meshes) {\n sizes[style] = sizes[style] || 0;\n tile.meshes[style].forEach(mesh => {\n sizes[style] += mesh.buffer_size;\n });\n }\n });\n return sizes;\n },\n\n geometrySizeByBaseStyle () {\n let style_sizes = scene.debug.geometrySizeByStyle();\n let sizes = {};\n for (let style in style_sizes) {\n let base = scene.styles[style].baseStyle();\n sizes[base] = sizes[base] || 0;\n sizes[base] += style_sizes[style];\n }\n return sizes;\n },\n\n layerStats () {\n if (debugSettings.layer_stats) {\n return Tile.debugSumLayerStats(scene.tile_manager.getRenderableTiles());\n }\n else {\n log('warn', `Enable the 'layer_stats' debug setting to collect layer stats`);\n return {};\n }\n },\n\n renderableTilesCount () {\n return scene.tile_manager.getRenderableTiles().length;\n }\n };\n }\n\n}\n\nScene.id = 0; // unique id for a scene instance\nScene.generation = 0; // id that is incremented each time a scene config is re-parsed\n", + "import log from './utils/log';\nimport Utils from './utils/utils';\nimport debugSettings from './utils/debug_settings';\nimport * as URLs from './utils/urls';\nimport WorkerBroker from './utils/worker_broker';\nimport Task from './utils/task';\nimport subscribeMixin from './utils/subscribe';\nimport sliceObject from './utils/slice';\nimport Context from './gl/context';\nimport Texture from './gl/texture';\nimport ShaderProgram from './gl/shader_program';\nimport VertexArrayObject from './gl/vao';\nimport {StyleManager} from './styles/style_manager';\nimport {Style} from './styles/style';\nimport {StyleParser} from './styles/style_parser';\nimport SceneLoader from './scene_loader';\nimport View from './view';\nimport Light from './light';\nimport Tile from './tile';\nimport TileManager from './tile_manager';\nimport DataSource from './sources/data_source';\nimport FeatureSelection from './selection';\nimport RenderStateManager from './gl/render_state';\nimport CanvasText from './styles/text/canvas_text';\nimport FontManager from './styles/text/font_manager';\nimport MediaCapture from './utils/media_capture';\n\n// Load scene definition: pass an object directly, or a URL as string to load remotely\nexport default class Scene {\n\n constructor(config_source, options) {\n options = options || {};\n subscribeMixin(this);\n\n this.id = Scene.id++;\n this.initialized = false;\n this.initializing = null; // will be a promise that resolves when scene is loaded\n this.sources = {};\n\n this.view = new View(this, options);\n this.tile_manager = new TileManager({ scene: this, view: this.view });\n this.num_workers = options.numWorkers || 2;\n if (options.disableVertexArrayObjects === true) {\n VertexArrayObject.disabled = true;\n }\n\n Utils.use_high_density_display = options.highDensityDisplay !== undefined ? options.highDensityDisplay : true;\n Utils.updateDevicePixelRatio();\n\n this.config = null;\n this.config_source = config_source;\n this.config_bundle = null;\n this.last_valid_config_source = null;\n\n this.styles = null;\n this.style_manager = new StyleManager();\n\n this.building = null; // tracks current scene building state (tiles being built, etc.)\n this.dirty = true; // request a redraw\n\n if (options.preUpdate){\n // optional pre-render loop hook\n this.subscribe({'preUpdate': options.preUpdate});\n }\n\n if (options.postUpdate){\n // optional post-render loop hook\n this.subscribe({'postUpdate': options.postUpdate});\n }\n\n this.render_loop = !options.disableRenderLoop; // disable render loop - app will have to manually call Scene.render() per frame\n this.render_loop_active = false;\n this.render_loop_stop = false;\n this.render_count = 0;\n this.last_render_count = 0;\n this.render_count_changed = false;\n this.frame = 0;\n this.last_main_render = -1; // frame counter for last main render pass\n this.last_selection_render = -1; // frame counter for last selection render pass\n this.media_capture = new MediaCapture();\n this.selection = null;\n this.introspection = (options.introspection === true) ? true : false;\n this.resetTime();\n\n this.container = options.container;\n this.canvas = null;\n this.contextOptions = options.webGLContextOptions;\n\n this.lights = null;\n this.background = null;\n\n this.createListeners();\n this.updating = 0;\n this.generation = Scene.generation; // an id that is incremented each time the scene config is invalidated\n this.last_complete_generation = Scene.generation; // last generation id with a complete view\n this.setupDebug();\n\n this.log_level = options.logLevel || 'warn';\n log.setLevel(this.log_level);\n log.reset();\n }\n\n static create (config, options = {}) {\n return new Scene(config, options);\n }\n\n // Load scene (or reload existing scene if no new source specified)\n // Options:\n // `base_path`: base URL against which scene resources should be resolved (useful for Play) (default nulll)\n // `blocking`: should rendering block on scene load completion (default true)\n load(config_source = null, options = {}) {\n if (this.initializing) {\n return this.initializing;\n }\n log.reset();\n\n this.updating++;\n this.initialized = false;\n this.initial_build_time = null;\n\n // Backwards compatibilty for passing `base_path` string as second argument\n // (since transitioned to using options argument to accept more parameters)\n options = (typeof options === 'string') ? { base_path: options } : options;\n\n // Should rendering block on load (not desirable for initial load, often desired for live style-switching)\n options.blocking = (options.blocking !== undefined) ? options.blocking : true;\n\n if (this.render_loop !== false) {\n this.setupRenderLoop();\n }\n\n // Load scene definition (sources, styles, etc.), then create styles & workers\n this.createCanvas();\n this.initializing = this.loadScene(config_source, options)\n .then(() => this.createWorkers())\n .then(() => {\n this.resetFeatureSelection();\n\n // Scene loaded from a JS object, or modified by a `load` event, may contain compiled JS functions\n // which need to be serialized, while one loaded only from a URL does not.\n const serialize_funcs = ((typeof this.config_source === 'object') || this.hasSubscribersFor('load'));\n\n const updating = this.updateConfig({ serialize_funcs, normalize: false, load_event: true, fade_in: true });\n if (options.blocking === true) {\n return updating;\n }\n }).then(() => {\n this.updating--;\n this.initializing = null;\n this.initialized = true;\n this.last_valid_config_source = this.config_source;\n this.last_valid_options = { base_path: options.base_path, file_type: options.file_type };\n\n this.requestRedraw();\n }).catch(error => {\n this.initializing = null;\n this.updating = 0;\n\n // Report and revert to last valid config if available\n let type, message;\n if (error.name === 'YAMLException') {\n type = 'yaml';\n message = 'Error parsing scene YAML';\n }\n else {\n // TODO: more error types\n message = 'Error initializing scene';\n }\n this.trigger('error', { type, message, error, url: this.config_source });\n\n message = `Scene.load() failed to load ${this.config_source}: ${error.message}`;\n if (this.last_valid_config_source) {\n log('warn', message, error);\n log('info', `Scene.load() reverting to last valid configuration`);\n return this.load(this.last_valid_config_source, this.last_valid_base_path);\n }\n log('error', message, error);\n throw error;\n });\n\n return this.initializing;\n }\n\n destroy() {\n this.initialized = false;\n this.render_loop_stop = true; // schedule render loop to stop\n\n this.destroyListeners();\n\n if (this.canvas && this.canvas.parentNode) {\n this.canvas.parentNode.removeChild(this.canvas);\n this.canvas = null;\n }\n this.container = null;\n\n if (this.selection) {\n this.selection.destroy();\n }\n\n if (this.gl) {\n Texture.destroy(this.gl);\n this.style_manager.destroy(this.gl);\n this.styles = {};\n\n ShaderProgram.reset();\n\n // Force context loss\n let ext = this.gl.getExtension('WEBGL_lose_context');\n if (ext) {\n ext.loseContext();\n }\n\n this.gl = null;\n }\n\n this.sources = {};\n\n this.destroyWorkers();\n this.tile_manager.destroy();\n this.tile_manager = null;\n log.reset();\n }\n\n createCanvas() {\n if (this.canvas) {\n return;\n }\n\n this.container = this.container || document.body;\n this.canvas = document.createElement('canvas');\n this.canvas.style.position = 'absolute';\n this.canvas.style.top = 0;\n this.canvas.style.left = 0;\n\n // Force tangram canvas underneath all leaflet layers, and set background to transparent\n this.container.style.backgroundColor = 'transparent';\n this.container.appendChild(this.canvas);\n\n try {\n this.gl = Context.getContext(this.canvas, Object.assign({\n alpha: true, premultipliedAlpha: true,\n device_pixel_ratio: Utils.device_pixel_ratio\n }, this.contextOptions));\n }\n catch(e) {\n throw new Error(\n \"Couldn't create WebGL context. \" +\n \"Your browser may not support WebGL, or it's turned off? \" +\n \"Visit http://webglreport.com/ for more info.\"\n );\n }\n\n this.resizeMap(this.container.clientWidth, this.container.clientHeight);\n VertexArrayObject.init(this.gl);\n this.render_states = new RenderStateManager(this.gl);\n this.media_capture.setCanvas(this.canvas, this.gl);\n }\n\n // Get the URL to load the web worker from\n getWorkerUrl() {\n let worker_url;\n /* jshint -W117 */\n // ignore uninitialized worker src variable (defined in parent scope)\n if (typeof __worker_src__ !== \"undefined\"){\n let source = '(' + __worker_src__ + ')()';\n if (__worker_src_origin__ && __worker_src_map__ !== '') {\n let origin = __worker_src_origin__.slice(0, __worker_src_origin__.lastIndexOf('/')+1);\n source += '\\n//#' + ' sourceMappingURL=' + origin + __worker_src_map__;\n }\n worker_url = URLs.createObjectURL(new Blob([source], { type: 'application/javascript' }));\n }\n /* jshint +W117 */\n\n if (!worker_url) {\n throw new Error(\"Couldn't find internal Tangram source variable (may indicate the library did not build correctly)\");\n }\n\n // Import custom data source scripts alongside core library\n // NOTE: workaround for issue where large libraries intermittently fail to load in web workers,\n // when multiple importScripts() calls are used. Loading all scripts (including Tangram itself)\n // in one call at at worker creation time has not exhibited the same issue.\n let urls = [...this.data_source_scripts];\n urls.push(worker_url); // load Tangram *last* (has been more reliable, though reason unknown)\n let body = `importScripts(${urls.map(url => `'${url}'`).join(',')});`;\n return URLs.createObjectURL(new Blob([body], { type: 'application/javascript' }));\n }\n\n // Update list of any custom data source scripts (if any)\n updateDataSourceScripts () {\n let prev_scripts = [...(this.data_source_scripts||[])]; // save list of previously loaded scripts\n let scripts = Object.keys(this.config.sources).map(s => this.config.sources[s].scripts).filter(x => x);\n if (scripts.length > 0) {\n log('debug', 'loading custom data source scripts in worker:', scripts);\n }\n this.data_source_scripts = [].concat(...scripts).sort();\n\n // Scripts changed?\n return !(this.data_source_scripts.length === prev_scripts.length &&\n this.data_source_scripts.every((v, i) => v === prev_scripts[i]));\n }\n\n // Web workers handle heavy duty tile construction: networking, geometry processing, etc.\n createWorkers() {\n // Reset old workers (if any) if we need to re-instantiate with new external scripts\n if (this.updateDataSourceScripts()) {\n this.destroyWorkers();\n }\n\n if (!this.workers) {\n return this.makeWorkers(this.getWorkerUrl());\n }\n return Promise.resolve();\n }\n\n // Instantiate workers from URL, init event handlers\n makeWorkers(url) {\n\n // Let VertexElements know if 32 bit indices for element arrays are available\n let has_element_index_uint = this.gl.getExtension(\"OES_element_index_uint\") ? true : false;\n\n let queue = [];\n this.workers = [];\n for (var id=0; id < this.num_workers; id++) {\n var worker = new Worker(url);\n this.workers[id] = worker;\n\n WorkerBroker.addWorker(worker);\n\n log('debug', `Scene.makeWorkers: initializing worker ${id}`);\n let _id = id;\n queue.push(WorkerBroker.postMessage(worker, 'self.init', this.id, id, this.num_workers, this.log_level, Utils.device_pixel_ratio, has_element_index_uint).then(\n (id) => {\n log('debug', `Scene.makeWorkers: initialized worker ${id}`);\n return id;\n },\n (error) => {\n log('error', `Scene.makeWorkers: failed to initialize worker ${_id}:`, error);\n return Promise.reject(error);\n })\n );\n }\n\n this.next_worker = 0;\n return Promise.all(queue).then(() => {\n log.setWorkers(this.workers);\n\n // Free memory after worker initialization\n URLs.revokeObjectURL(url);\n });\n }\n\n destroyWorkers() {\n if (Array.isArray(this.workers)) {\n log.setWorkers(null);\n this.workers.forEach((worker) => {\n worker.terminate();\n });\n this.workers = null;\n }\n }\n\n // Scene is ready for rendering\n ready() {\n if (!this.view.ready() || Object.keys(this.sources).length === 0) {\n return false;\n }\n return true;\n }\n\n // Resize the map when device pixel ratio changes, e.g. when switching between displays\n updateDevicePixelRatio () {\n if (Utils.updateDevicePixelRatio()) {\n WorkerBroker.postMessage(this.workers, 'self.updateDevicePixelRatio', Utils.device_pixel_ratio)\n .then(() => this.rebuild())\n .then(() => this.resizeMap(this.view.size.css.width, this.view.size.css.height));\n }\n }\n\n resizeMap(width, height) {\n if (width === 0 && height === 0) {\n return;\n }\n\n this.dirty = true;\n this.view.setViewportSize(width, height);\n if (this.gl) {\n Context.resize(this.gl, width, height, Utils.device_pixel_ratio);\n }\n }\n\n // Request scene be redrawn at next animation loop\n requestRedraw() {\n this.dirty = true;\n }\n\n // Redraw scene immediately - don't wait for animation loop\n // Use sparingly, but for cases where you need the closest possible sync with other UI elements,\n // such as other, non-WebGL map layers (e.g. Leaflet raster layers, markers, etc.)\n immediateRedraw() {\n this.dirty = true;\n this.update();\n }\n\n renderLoop () {\n this.render_loop_active = true; // only let the render loop instantiate once\n\n if (this.initialized) {\n // Render the scene\n this.update();\n }\n\n // Pending background tasks\n Task.setState({ user_moving_view: this.view.user_input_active });\n Task.processAll();\n\n // Request the next frame if not scheduled to stop\n if (!this.render_loop_stop) {\n window.requestAnimationFrame(this.renderLoop.bind(this));\n }\n else {\n this.render_loop_stop = false;\n this.render_loop_active = false;\n }\n }\n\n // Setup the render loop\n setupRenderLoop() {\n if (!this.render_loop_active) {\n setTimeout(() => { this.renderLoop(); }, 0); // delay start by one tick\n }\n }\n\n update() {\n // Determine which passes (if any) to render\n let main = this.dirty;\n let selection = this.selection ? this.selection.hasPendingRequests() : false;\n var will_render = !(\n (main === false && selection === false) ||\n this.initialized === false ||\n this.updating > 0 ||\n this.ready() === false\n );\n\n // Pre-render loop hook\n this.trigger('preUpdate', will_render);\n\n // Update view (needs to update user input timer even if no render will occur)\n this.view.update();\n\n // Bail if no need to render\n if (!will_render) {\n return false;\n }\n this.dirty = false; // subclasses can set this back to true when animation is needed\n\n // Render the scene\n this.updateDevicePixelRatio();\n this.render({ main, selection });\n this.updateViewComplete(); // fires event when rendered tile set or style changes\n this.media_capture.completeScreenshot(); // completes screenshot capture if requested\n\n // Post-render loop hook\n this.trigger('postUpdate', will_render);\n\n // Redraw every frame if animating\n if (this.animated === true || this.view.isAnimating()) {\n this.dirty = true;\n }\n\n this.frame++;\n log('trace', 'Scene.render()');\n return true;\n }\n\n // Accepts flags indicating which render passes should be made\n render({ main, selection }) {\n var gl = this.gl;\n\n // Update styles, camera, lights\n Object.keys(this.lights).forEach(i => this.lights[i].update());\n\n // Render main pass\n if (main) {\n this.render_count = this.renderPass();\n this.last_main_render = this.frame;\n }\n\n // Render selection pass (if needed)\n if (selection) {\n if (this.view.panning || this.view.user_input_active) {\n this.selection.clearPendingRequests();\n return;\n }\n\n // Only re-render if selection buffer is out of date (relative to main render buffer)\n // and not locked (e.g. no tiles are actively building)\n if (!this.selection.locked && this.last_selection_render < this.last_main_render) {\n this.selection.bind(); // switch to FBO\n this.renderPass(\n 'selection_program', // render w/alternate program\n { allow_blend: false });\n\n // Reset to screen buffer\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n gl.viewport(0, 0, this.canvas.width, this.canvas.height);\n gl.clearColor(...this.background.color); // restore scene background color\n this.last_selection_render = this.frame;\n }\n\n this.selection.read(); // process any pending results from selection buffer\n }\n\n this.render_count_changed = false;\n if (this.render_count !== this.last_render_count) {\n this.render_count_changed = true;\n\n this.getFeatureSelectionMapSize().then(size => {\n if (size) { // returns undefined if previous request pending\n log('info', `Scene: rendered ${this.render_count} primitives (${size} features in selection map)`);\n }\n });\n }\n this.last_render_count = this.render_count;\n\n return true;\n }\n\n // Render all active styles, grouped by blend/depth type (opaque, overlay, etc.) and by program (style)\n // Called both for main render pass, and for secondary passes like selection buffer\n renderPass(program_key = 'program', { allow_blend } = {}) {\n // optionally force alpha off (e.g. for selection pass)\n allow_blend = (allow_blend == null) ? true : allow_blend;\n\n this.clearFrame({ clear_color: true, clear_depth: true });\n\n // Sort styles by blend order\n let styles = this.tile_manager.getActiveStyles().\n map(s => this.styles[s]).\n filter(s => s). // guard against missing styles, such as while loading a new scene\n sort(Style.blendOrderSort);\n\n // Render styles\n let count = 0; // how many primitives were rendered\n let last_blend;\n for (let s=0; s < styles.length; s++) {\n let style = styles[s];\n\n // Only update render state when blend mode changes\n if (style.blend !== last_blend) {\n let state = Object.assign({},\n Style.render_states[style.blend], // render state for blend mode\n { blend: (allow_blend && style.blend) } // enable/disable blending (e.g. no blend for selection)\n );\n this.setRenderState(state);\n }\n count += this.renderStyle(style.name, program_key);\n last_blend = style.blend;\n }\n\n return count;\n }\n\n renderStyle(style_name, program_key) {\n let style = this.styles[style_name];\n let first_for_style = true;\n let render_count = 0;\n let program;\n\n // Render tile GL geometries\n let renderable_tiles = this.tile_manager.getRenderableTiles();\n for (let t=0; t < renderable_tiles.length; t++) {\n let tile = renderable_tiles[t];\n\n if (tile.meshes[style_name] == null) {\n continue;\n }\n\n // Style-specific state\n // Only setup style if rendering for first time this frame\n // (lazy init, not all styles will be used in all screen views; some styles might be defined but never used)\n if (first_for_style === true) {\n first_for_style = false;\n program = this.setupStyle(style, program_key);\n if (!program) {\n return 0;\n }\n }\n\n // Skip proxy tiles if new tiles have finished loading this style\n if (!tile.shouldProxyForStyle(style_name)) {\n // log('trace', `Scene.renderStyle(): Skip proxy tile for style '${style_name}' `, tile, tile.proxy_for);\n continue;\n }\n\n // Tile-specific state\n this.view.setupTile(tile, program);\n\n // Render tile\n tile.meshes[style_name].forEach(mesh => {\n if (style.render(mesh)) {\n this.requestRedraw();\n }\n render_count += mesh.geometry_count;\n });\n }\n\n return render_count;\n }\n\n setupStyle(style, program_key) {\n // Get shader program from style, lazily compiling if necessary\n let program;\n try {\n program = style.getProgram(program_key);\n if (!program) {\n return;\n }\n }\n catch(error) {\n this.trigger('warning', {\n type: 'styles',\n message: `Error compiling style ${style.name}`,\n style,\n shader_errors: style.program && style.program.shader_errors\n });\n return;\n }\n\n program.use();\n style.setup();\n\n program.uniform('1f', 'u_time', this.animated ? (((+new Date()) - this.start_time) / 1000) : 0);\n this.view.setupProgram(program);\n for (let i in this.lights) {\n this.lights[i].setupProgram(program);\n }\n\n return program;\n }\n\n clearFrame({ clear_color, clear_depth } = {}) {\n if (!this.initialized) {\n return;\n }\n\n // Defaults\n clear_color = (clear_color === false) ? false : true; // default true\n clear_depth = (clear_depth === false) ? false : true; // default true\n\n // Set GL state\n this.render_states.depth_write.set({ depth_write: clear_depth });\n\n let gl = this.gl;\n if (clear_color || clear_depth) {\n let mask = (clear_color && gl.COLOR_BUFFER_BIT) | (clear_depth && gl.DEPTH_BUFFER_BIT);\n gl.clear(mask);\n }\n }\n\n setRenderState({ depth_test, depth_write, cull_face, blend } = {}) {\n if (!this.initialized) {\n return;\n }\n\n // Defaults\n // TODO: when we abstract out support for multiple render passes, these can be per-pass config options\n let render_states = this.render_states;\n depth_test = (depth_test === false) ? false : render_states.defaults.depth_test; // default true\n depth_write = (depth_write === false) ? false : render_states.defaults.depth_write; // default true\n cull_face = (cull_face === false) ? false : render_states.defaults.culling; // default true\n blend = (blend != null) ? blend : render_states.defaults.blending; // default false\n\n // Reset frame state\n let gl = this.gl;\n\n render_states.depth_test.set({ depth_test: depth_test });\n render_states.depth_write.set({ depth_write: depth_write });\n render_states.culling.set({ cull: cull_face, face: render_states.defaults.culling_face });\n\n // Blending of alpha channel is modified to account for WebGL alpha behavior, see:\n // http://webglfundamentals.org/webgl/lessons/webgl-and-alpha.html\n // http://stackoverflow.com/a/11533416\n if (blend) {\n // Opaque: all source, no destination\n if (blend === 'opaque') {\n render_states.blending.set({\n blend: false\n });\n }\n // Traditional alpha blending\n else if (blend === 'overlay' || blend === 'inlay') {\n render_states.blending.set({\n blend: true,\n src: gl.SRC_ALPHA, dst: gl.ONE_MINUS_SRC_ALPHA,\n src_alpha: gl.ONE, dst_alpha: gl.ONE_MINUS_SRC_ALPHA\n });\n }\n // Additive blending\n else if (blend === 'add') {\n render_states.blending.set({\n blend: true,\n src: gl.ONE, dst: gl.ONE\n });\n }\n // Multiplicative blending\n else if (blend === 'multiply') {\n render_states.blending.set({\n blend: true,\n src: gl.ZERO, dst: gl.SRC_COLOR\n });\n }\n }\n else {\n render_states.blending.set({ blend: false });\n }\n }\n\n // Request feature selection at given pixel. Runs async and returns results via a promise.\n getFeatureAt(pixel, { radius } = {}) {\n if (!this.initialized) {\n log('debug', \"Scene.getFeatureAt() called before scene was initialized\");\n return Promise.resolve();\n }\n\n // Scale point and radius to [0..1] range\n let point = {\n x: pixel.x / this.view.size.css.width,\n y: pixel.y / this.view.size.css.height\n };\n\n if (radius > 0) {\n radius = {\n x: radius / this.view.size.css.width,\n y: radius / this.view.size.css.height\n };\n }\n else {\n radius = null;\n }\n\n return this.selection.getFeatureAt(point, { radius }).\n then(selection => Object.assign(selection, { pixel })).\n catch(error => Promise.resolve({ error }));\n }\n\n // Query features within visible tiles, with optional filter conditions\n queryFeatures({ filter, unique = true, group_by = null, visible = null, geometry = false } = {}) {\n filter = Utils.serializeWithFunctions(filter);\n let tile_keys = this.tile_manager.getRenderableTiles().map(t => t.key);\n return WorkerBroker.postMessage(this.workers, 'self.queryFeatures', { filter, visible, geometry, tile_keys }).then(results => {\n let features = [];\n let keys = {};\n let groups = {};\n\n // Optional uniqueify criteria\n // Valid values: true, false/null, single property name, or array of property names\n unique = (typeof unique === 'string') ? [unique] : unique;\n const uniqueify = unique && (obj => JSON.stringify(Array.isArray(unique) ? sliceObject(obj, unique) : obj));\n\n // Optional grouping criteria\n // Valid values: false/null, single property name, or array of property names\n group_by = (typeof group_by === 'string' || Array.isArray(group_by)) && group_by;\n const group = group_by && (obj => {\n return Array.isArray(group_by) ? JSON.stringify(sliceObject(obj, group_by)) : obj[group_by];\n });\n\n results.forEach(r => r.forEach(feature => {\n if (uniqueify) {\n let str = uniqueify(feature);\n if (keys[str]) {\n return;\n }\n keys[str] = true;\n }\n\n if (group) {\n let str = group(feature.properties);\n groups[str] = groups[str] || [];\n groups[str].push(feature);\n }\n else {\n features.push(feature);\n }\n }));\n return group ? groups : features; // returned grouped results, or all results\n });\n }\n\n // Rebuild all tiles, without re-parsing the config or re-compiling styles\n // sync: boolean of whether to sync the config object to the worker\n // sources: optional array of data sources to selectively rebuild (by default all our rebuilt)\n rebuild({ new_generation = true, sources = null, serialize_funcs, profile = false, fade_in = false } = {}) {\n return new Promise((resolve, reject) => {\n // Skip rebuild if already in progress\n if (this.building) {\n // Queue up to one rebuild call at a time, only save last request\n if (this.building.queued && this.building.queued.reject) {\n // notify previous request that it did not complete\n log('debug', 'Scene.rebuild: request superceded by a newer call');\n this.building.queued.resolve(false); // false flag indicates rebuild request was superceded\n }\n\n // Save queued request\n let options = { new_generation, sources, serialize_funcs, profile, fade_in };\n this.building.queued = { resolve, reject, options };\n log('trace', `Scene.rebuild(): queuing request`);\n return;\n }\n\n // Track tile build state\n this.building = { resolve, reject };\n\n // Profiling\n if (profile) {\n this._profile('Scene.rebuild');\n }\n\n // Increment generation to ensure style/tile building stay in sync\n // (skipped if calling function already incremented)\n if (new_generation) {\n this.generation = ++Scene.generation;\n for (let style in this.styles) {\n this.styles[style].setGeneration(this.generation);\n }\n }\n\n // Update config (in case JS objects were manipulated directly)\n this.syncConfigToWorker({ serialize_funcs });\n this.resetFeatureSelection(sources);\n this.resetTime();\n\n // Rebuild visible tiles\n this.tile_manager.pruneToVisibleTiles();\n this.tile_manager.forEachTile(tile => {\n if (!sources || sources.indexOf(tile.source.name) > -1) {\n this.tile_manager.buildTile(tile, { fade_in });\n }\n });\n this.tile_manager.updateTilesForView(); // picks up additional tiles for any new/changed data sources\n this.tile_manager.checkBuildQueue(); // resolve immediately if no tiles to build\n }).then(() => {\n // Profiling\n if (profile) {\n this._profileEnd('Scene.rebuild');\n }\n });\n }\n\n // Tile manager finished building tiles\n // TODO move to tile manager\n tileManagerBuildDone() {\n CanvasText.pruneTextCache();\n\n if (this.building) {\n log('info', `Scene: build geometry finished`);\n if (this.building.resolve) {\n if (this.initial_build_time == null) {\n this.initial_build_time = (+new Date()) - this.start_time;\n log('debug', `Scene: initial build time: ${this.initial_build_time}`);\n }\n this.building.resolve(true);\n }\n\n // Another rebuild queued?\n var queued = this.building.queued;\n this.building = null;\n if (queued) {\n log('debug', `Scene: starting queued rebuild() request`);\n this.rebuild(queued.options).then(queued.resolve, queued.reject);\n }\n }\n }\n\n /**\n Load (or reload) the scene config\n @return {Promise}\n */\n loadScene(config_source = null, { base_path, file_type } = {}) {\n this.config_source = config_source || this.config_source;\n this.config_globals_applied = [];\n\n if (typeof this.config_source === 'string') {\n this.base_path = URLs.pathForURL(base_path || this.config_source);\n }\n else {\n this.base_path = URLs.pathForURL(base_path);\n }\n\n // backwards compatibility for accessing base path under previous name\n // TODO: schedule for deprecation\n this.config_path = this.base_path;\n\n return SceneLoader.loadScene(this.config_source, { path: this.base_path, type: file_type }).then(({config, bundle}) => {\n this.config = config;\n this.config_bundle = bundle;\n return this.config;\n });\n }\n\n // Add source to a scene, arguments `name` and `config` need to be provided:\n // - If the name doesn't match a sources it will create it\n // - the `config` obj follow the YAML scene spec, ex: ```{type: 'TopoJSON', url: \"//tile.mapzen.com/mapzen/vector/v1/all/{z}/{x}/{y}.topojson\"]}```\n // that looks like:\n //\n // scene.setDataSource(\"osm\", {type: 'TopoJSON', url: \"//tile.mapzen.com/mapzen/vector/v1/all/{z}/{x}/{y}.topojson\" });\n //\n // - also can be pass a ```data``` obj: ```{type: 'GeoJSON', data: JSObj ]}```\n //\n // var geojson_data = {};\n // ...\n // scene.setDataSource(\"dynamic_data\", {type: 'GeoJSON', data: geojson_data });\n //\n setDataSource (name, config) {\n if (!name || !config || !config.type || (!config.url && !config.data)) {\n log('error', \"No name provided or not a valid config:\", name, config);\n return;\n }\n\n let load = (this.config.sources[name] == null);\n let source = this.config.sources[name] = Object.assign({}, config);\n\n // Convert raw data into blob URL\n if (source.data && typeof source.data === 'object') {\n source.url = URLs.createObjectURL(new Blob([JSON.stringify(source.data)]));\n delete source.data;\n }\n\n if (load) {\n return this.updateConfig({ rebuild: { sources: [name] } });\n } else {\n return this.rebuild({ sources: [name] });\n }\n }\n\n createDataSources() {\n let reset = []; // sources to reset\n let prev_source_names = Object.keys(this.sources);\n let source_id = 0;\n\n for (var name in this.config.sources) {\n let source = this.config.sources[name];\n let prev_source = this.sources[name];\n\n try {\n let config = Object.assign({}, source, { name, id: source_id++ });\n this.sources[name] = DataSource.create(config, this.sources);\n if (!this.sources[name]) {\n throw {};\n }\n }\n catch(e) {\n delete this.sources[name];\n let message = `Could not create data source: ${e.message}`;\n log('warn', `Scene: ${message}`, source);\n this.trigger('warning', { type: 'sources', source, message });\n }\n\n // Data source changed?\n if (DataSource.changed(this.sources[name], prev_source)) {\n reset.push(name);\n }\n }\n\n // Sources that were removed\n prev_source_names.forEach(s => {\n if (!this.config.sources[s]) {\n delete this.sources[s]; // TODO: remove from workers too?\n reset.push(s);\n }\n });\n\n // Remove tiles from sources that have changed\n if (reset.length > 0) {\n this.tile_manager.removeTiles(tile => {\n return (reset.indexOf(tile.source.name) > -1);\n });\n }\n\n // Mark sources that will generate geometry tiles\n // (all except those that are only raster sources attached to other sources)\n for (let ln in this.config.layers) {\n let layer = this.config.layers[ln];\n if (layer.enabled !== false && layer.data && this.sources[layer.data.source]) {\n this.sources[layer.data.source].builds_geometry_tiles = true;\n }\n }\n }\n\n // Load all textures in the scene definition\n loadTextures() {\n return Texture.createFromObject(this.gl, this.config.textures).\n then(() => Texture.createDefault(this.gl)); // create a 'default' texture for placeholders\n }\n\n // Called (currently manually) after styles are updated in stylesheet\n updateStyles() {\n if (!this.initialized && !this.initializing) {\n throw new Error('Scene.updateStyles() called before scene was initialized');\n }\n\n // (Re)build styles from config\n this.styles = this.style_manager.build(this.config.styles);\n this.style_manager.initStyles(this);\n\n // Optionally set GL context (used when initializing or re-initializing GL resources)\n for (let style in this.styles) {\n this.styles[style].setGL(this.gl);\n }\n\n this.dirty = true;\n }\n\n // Is scene currently animating?\n get animated () {\n // Use explicitly set scene animation flag if defined, otherwise enabled animation if any animated styles are in view\n return (this.config.scene.animated !== undefined ?\n this.config.scene.animated :\n this.tile_manager.getActiveStyles().some(s => this.styles[s].animated));\n }\n\n // Get active camera - for public API\n getActiveCamera() {\n return this.view.getActiveCamera();\n }\n\n // Set active camera - for public API\n setActiveCamera(name) {\n return this.view.setActiveCamera(name);\n }\n\n // Create lighting\n createLights() {\n this.lights = {};\n for (let i in this.config.lights) {\n if (!this.config.lights[i] || typeof this.config.lights[i] !== 'object') {\n continue;\n }\n let light = this.config.lights[i];\n light.name = i.replace('-', '_'); // light names are injected in shaders, can't have hyphens\n light.visible = (light.visible === false) ? false : true;\n if (light.visible) {\n this.lights[light.name] = Light.create(this.view, light);\n }\n }\n Light.inject(this.lights);\n }\n\n // Set background color\n setBackground() {\n let bg = this.config.scene.background;\n this.background = {};\n if (bg && bg.color) {\n this.background.color = StyleParser.parseColor(bg.color);\n }\n if (!this.background.color) {\n this.background.color = [0, 0, 0, 0]; // default background TODO: vary w/scene alpha\n }\n\n // if background is fully opaque, set canvas background to match\n if (this.background.color[3] === 1) {\n this.canvas.style.backgroundColor =\n `rgba(${this.background.color.map(c => Math.floor(c * 255)).join(', ')})`;\n }\n else {\n this.canvas.style.backgroundColor = 'transparent';\n }\n\n this.gl.clearColor(...this.background.color);\n }\n\n // Turn introspection mode on/off\n setIntrospection (val) {\n if (val !== this.introspection) {\n this.introspection = val || false;\n this.updating++;\n return this.updateConfig({ normalize: false }).then(() => this.updating--);\n }\n return Promise.resolve();\n }\n\n // Update scene config, and optionally rebuild geometry\n // rebuild can be boolean, or an object containing rebuild options to passthrough\n updateConfig({ load_event = false, rebuild = true, serialize_funcs, normalize = true, fade_in = false } = {}) {\n this.generation = ++Scene.generation;\n this.updating++;\n\n this.config = SceneLoader.applyGlobalProperties(this.config, this.config_globals_applied);\n if (normalize) {\n SceneLoader.normalize(this.config, this.config_bundle);\n }\n this.trigger(load_event ? 'load' : 'update', { config: this.config });\n\n SceneLoader.hoistTextures(this.config); // move inline textures into global texture set\n this.style_manager.init();\n this.view.reset();\n this.createLights();\n this.createDataSources();\n this.loadTextures();\n this.setBackground();\n FontManager.loadFonts(this.config.fonts);\n\n // TODO: detect changes to styles? already (currently) need to recompile anyway when camera or lights change\n this.updateStyles();\n\n // Optionally rebuild geometry\n let done = rebuild ?\n this.rebuild(Object.assign({ new_generation: false, serialize_funcs, fade_in }, typeof rebuild === 'object' && rebuild)) :\n this.syncConfigToWorker({ serialize_funcs }); // rebuild() also syncs config\n\n // Finish by updating bounds and re-rendering\n this.updating--;\n this.view.updateBounds();\n this.requestRedraw();\n\n return done;\n }\n\n // Serialize config and send to worker\n syncConfigToWorker({ serialize_funcs = true } = {}) {\n // Tell workers we're about to rebuild (so they can update styles, etc.)\n let config_serialized =\n serialize_funcs ? Utils.serializeWithFunctions(this.config) : JSON.stringify(this.config);\n return WorkerBroker.postMessage(this.workers, 'self.updateConfig', {\n config: config_serialized,\n generation: this.generation,\n introspection: this.introspection\n }, debugSettings);\n }\n\n // Listen to related objects\n createListeners () {\n this.listeners = {};\n\n this.listeners.view = {\n move: () => this.trigger('move')\n };\n this.view.subscribe(this.listeners.view);\n\n this.listeners.texture = {\n update: () => this.dirty = true,\n warning: (data) => this.trigger('warning', Object.assign({ type: 'textures' }, data))\n };\n Texture.subscribe(this.listeners.texture);\n\n this.listeners.scene_loader = {\n error: (data) => this.trigger('error', Object.assign({ type: 'scene' }, data))\n };\n SceneLoader.subscribe(this.listeners.scene_loader);\n }\n\n destroyListeners () {\n this.unsubscribeAll();\n this.view.unsubscribe(this.listeners.view);\n Texture.unsubscribe(this.listeners.texture);\n SceneLoader.unsubscribe(this.listeners.scene_loader);\n this.listeners = null;\n }\n\n resetFeatureSelection(sources = null) {\n if (!this.selection) {\n this.selection = new FeatureSelection(this.gl, this.workers, () => this.building);\n }\n else if (this.workers) {\n WorkerBroker.postMessage(this.workers, 'self.resetFeatureSelection', sources);\n }\n }\n\n // Gets the current feature selection map size across all workers. Returns a promise.\n getFeatureSelectionMapSize() {\n if (this.fetching_selection_map) {\n return Promise.resolve(); // return undefined if already pending\n }\n this.fetching_selection_map = true;\n\n return WorkerBroker.postMessage(this.workers, 'self.getFeatureSelectionMapSize')\n .then(sizes => {\n this.fetching_selection_map = false;\n return sizes.reduce((a, b) => a + b);\n });\n }\n\n // Reset internal clock, mostly useful for consistent experience when changing styles/debugging\n resetTime() {\n this.start_time = +new Date();\n }\n\n // Fires event when rendered tile set or style changes\n updateViewComplete () {\n if ((this.render_count_changed || this.generation !== this.last_complete_generation) &&\n !this.tile_manager.isLoadingVisibleTiles()) {\n this.last_complete_generation = this.generation;\n this.trigger('view_complete');\n }\n }\n\n resetViewComplete () {\n this.last_complete_generation = null;\n }\n\n // Take a screenshot\n // Asynchronous because we have to wait for next render to capture buffer\n // Returns a promise\n screenshot ({ background = 'white' } = {}) {\n this.requestRedraw();\n return this.media_capture.screenshot({background});\n }\n\n startVideoCapture () {\n this.requestRedraw();\n return this.media_capture.startVideoCapture();\n }\n\n stopVideoCapture () {\n return this.media_capture.stopVideoCapture();\n }\n\n\n // Stats/debug/profiling methods\n\n // Profile helpers, issues a profile on main thread & all workers\n _profile(name) {\n console.profile(`main thread: ${name}`);\n WorkerBroker.postMessage(this.workers, 'self.profile', name);\n }\n\n _profileEnd(name) {\n console.profileEnd(`main thread: ${name}`);\n WorkerBroker.postMessage(this.workers, 'self.profileEnd', name);\n }\n\n // Debug config and functions\n setupDebug () {\n let scene = this;\n this.debug = {\n // Rebuild geometry a given # of times and print average, min, max timings\n timeRebuild (num = 1, options = {}) {\n let times = [];\n let cycle = () => {\n let start = +new Date();\n scene.rebuild(options).then(() => {\n times.push(+new Date() - start);\n\n if (times.length < num) {\n cycle();\n }\n else {\n let avg = ~~(times.reduce((a, b) => a + b) / times.length);\n log('info', `Profiled rebuild ${num} times: ${avg} avg (${Math.min(...times)} min, ${Math.max(...times)} max)`);\n }\n });\n };\n cycle();\n },\n\n // Return geometry counts of visible tiles, grouped by style name\n geometryCountByStyle () {\n let counts = {};\n scene.tile_manager.getRenderableTiles().forEach(tile => {\n for (let style in tile.meshes) {\n counts[style] = counts[style] || 0;\n tile.meshes[style].forEach(mesh => {\n counts[style] += mesh.geometry_count;\n });\n }\n });\n return counts;\n },\n\n geometryCountByBaseStyle () {\n let style_counts = scene.debug.geometryCountByStyle();\n let counts = {};\n for (let style in style_counts) {\n let base = scene.styles[style].baseStyle();\n counts[base] = counts[base] || 0;\n counts[base] += style_counts[style];\n }\n return counts;\n },\n\n geometrySizeByStyle () {\n let sizes = {};\n scene.tile_manager.getRenderableTiles().forEach(tile => {\n for (let style in tile.meshes) {\n sizes[style] = sizes[style] || 0;\n tile.meshes[style].forEach(mesh => {\n sizes[style] += mesh.buffer_size;\n });\n }\n });\n return sizes;\n },\n\n geometrySizeByBaseStyle () {\n let style_sizes = scene.debug.geometrySizeByStyle();\n let sizes = {};\n for (let style in style_sizes) {\n let base = scene.styles[style].baseStyle();\n sizes[base] = sizes[base] || 0;\n sizes[base] += style_sizes[style];\n }\n return sizes;\n },\n\n layerStats () {\n if (debugSettings.layer_stats) {\n return Tile.debugSumLayerStats(scene.tile_manager.getRenderableTiles());\n }\n else {\n log('warn', `Enable the 'layer_stats' debug setting to collect layer stats`);\n return {};\n }\n },\n\n renderableTilesCount () {\n return scene.tile_manager.getRenderableTiles().length;\n }\n };\n }\n\n}\n\nScene.id = 0; // unique id for a scene instance\nScene.generation = 0; // id that is incremented each time a scene config is re-parsed\n", "import Utils from './utils/utils';\nimport * as URLs from './utils/urls';\n\nimport JSZip from 'jszip';\nimport yaml from 'js-yaml';\n\nexport class SceneBundle {\n\n constructor(url, path, parent = null) {\n this.url = url;\n\n // If a base path was provided, use it for resolving local bundle resources only if\n // the base path is absolute, or this bundle's path is relative\n if (path && (!URLs.isRelativeURL(path) || URLs.isRelativeURL(this.url))) {\n this.path = path;\n }\n else {\n this.path = URLs.pathForURL(this.url);\n }\n\n this.path_for_parent = path || this.path; // for resolving paths relative to a parent bundle\n this.parent = parent;\n\n // An ancestor bundle may be a container (e.g. zip file) that needs to resolve relative paths\n // for any scenes it contains, e.g. `root.zip` has a `root.yaml` that includes a `folder/child.yaml`:\n // resources within `child.yaml` must be resolved through the bundle for `root.zip`\n this.container = null;\n if (this.parent) {\n if (this.parent.container) {\n this.container = this.parent.container;\n }\n else if (this.parent.isContainer()) {\n this.container = this.parent;\n }\n }\n }\n\n load() {\n return loadResource(this.url);\n }\n\n // Info for retrieving a specific resource from this bundle\n // url: fully qualified URL to retrieve the content of the resource (e.g. zips will transform this to blob URL)\n // path: original path of the resource within the bundle (for resolving paths up the bundle tree)\n // type: file extension (used for determining bundle type, `yaml` or `zip`)\n resourceFor(url) {\n return {\n url: this.urlFor(url),\n path: this.pathFor(url),\n type: this.typeFor(url)\n };\n }\n\n urlFor(url) {\n if (isGlobal(url)) {\n return url;\n }\n\n if (URLs.isRelativeURL(url) && this.container) {\n return this.parent.urlFor(this.path_for_parent + url);\n }\n return URLs.addBaseURL(url, this.path);\n }\n\n pathFor(url) {\n return URLs.pathForURL(url);\n }\n\n typeFor(url) {\n return URLs.extensionForURL(url);\n }\n\n isContainer() {\n return false;\n }\n\n}\n\nexport class ZipSceneBundle extends SceneBundle {\n\n constructor(url, path, parent) {\n super(url, path, parent);\n this.zip = null;\n this.files = {};\n this.root = null;\n this.path = '';\n }\n\n isContainer() {\n return true;\n }\n\n load() {\n this.zip = new JSZip();\n\n if (typeof this.url === 'string') {\n return Utils.io(this.url, 60000, 'arraybuffer')\n .then(body => this.zip.loadAsync(body))\n .then(() => this.parseZipFiles())\n .then(() => this.loadRoot())\n .catch(e => Promise.reject(e));\n } else {\n return Promise.resolve(this);\n }\n }\n\n urlFor(url) {\n if (isGlobal(url)) {\n return url;\n }\n\n if (URLs.isRelativeURL(url)) {\n return this.urlForZipFile(URLs.flattenRelativeURL(url));\n }\n return super.urlFor(url);\n }\n\n typeFor(url) {\n if (URLs.isRelativeURL(url)) {\n return this.typeForZipFile(url);\n }\n return super.typeFor(url);\n }\n\n loadRoot() {\n return this.findRoot()\n .then(() => loadResource(this.urlForZipFile(this.root)));\n }\n\n findRoot() {\n // There must be a single YAML file at the top level of the zip\n const yamls = Object.keys(this.files)\n .filter(path => this.files[path].depth === 0)\n .filter(path => URLs.extensionForURL(path) === 'yaml');\n\n if (yamls.length === 1) {\n this.root = yamls[0];\n }\n\n // No root found\n if (!this.root) {\n let msg = `Could not find root scene for bundle '${this.url}': `;\n msg += `The zip archive's root level must contain a single scene file with the '.yaml' extension. `;\n if (yamls.length > 0) {\n msg += `Found multiple YAML files at the root level: ${yamls.map(r => '\\'' + r + '\\'' ).join(', ')}.`;\n }\n else {\n msg += `Found NO YAML files at the root level.`;\n }\n return Promise.reject(Error(msg));\n }\n return Promise.resolve();\n }\n\n parseZipFiles() {\n let paths = [];\n let queue = [];\n this.zip.forEach((path, file) => {\n if (!file.dir) {\n paths.push(path);\n queue.push(file.async('arraybuffer'));\n }\n });\n\n return Promise.all(queue).then(data => {\n for (let i=0; i < data.length; i++) {\n let path = paths[i];\n let depth = path.split('/').length - 1;\n this.files[path] = {\n data: data[i],\n type: URLs.extensionForURL(path),\n depth\n };\n }\n });\n }\n\n urlForZipFile(file) {\n if (this.files[file]) {\n if (!this.files[file].url) {\n this.files[file].url = URLs.createObjectURL(new Blob([this.files[file].data]));\n }\n\n return this.files[file].url;\n }\n }\n\n typeForZipFile(file) {\n return this.files[file] && this.files[file].type;\n }\n\n}\n\nexport function createSceneBundle(url, path, parent, type = null) {\n if ((type != null && type === 'zip') ||\n (typeof url === 'string' && !URLs.isLocalURL(url) && URLs.extensionForURL(url) === 'zip')) {\n return new ZipSceneBundle(url, path, parent);\n }\n return new SceneBundle(url, path, parent);\n}\n\n// References a global property?\nexport function isGlobal (val) {\n if (val && val.slice(0, 7) === 'global.') {\n return true;\n }\n return false;\n}\n\nfunction parseResource (body) {\n var data;\n try {\n // jsyaml 'json' option allows duplicate keys\n // Keeping this for backwards compatibility, but should consider migrating to requiring\n // unique keys, as this is YAML spec. But Tangram ES currently accepts dupe keys as well,\n // so should consider how best to unify.\n data = yaml.safeLoad(body, { json: true });\n } catch (e) {\n throw e;\n }\n return data;\n}\n\nfunction loadResource (source) {\n return new Promise((resolve, reject) => {\n if (typeof source === 'string') {\n Utils.io(source).then((body) => {\n try {\n let data = parseResource(body);\n resolve(data);\n }\n catch(e) {\n reject(e);\n }\n }, reject);\n } else {\n // shallow copy to avoid modifying provided object, allowing a single config object to be loaded multiple times\n // TODO: address possible modifications to nested properties (mostly harmless / due to data normalization)\n source = Object.assign({}, source);\n resolve(source);\n }\n });\n}\n", "import log from './utils/log';\nimport GLSL from './gl/glsl';\nimport * as URLs from './utils/urls';\nimport mergeObjects from './utils/merge';\nimport subscribeMixin from './utils/subscribe';\nimport {createSceneBundle, isGlobal} from './scene_bundle';\n\nvar SceneLoader;\n\nexport default SceneLoader = {\n\n // Load scenes definitions from URL & proprocess\n loadScene(url, { path, type } = {}) {\n let errors = [];\n return this.loadSceneRecursive({ url, path, type }, null, errors).\n then(result => this.finalize(result)).\n then(({ config, bundle }) => {\n if (!config) {\n // root scene failed to load, reject with first error\n return Promise.reject(errors[0]);\n }\n else if (errors.length > 0) {\n // scene loaded, but some imports had errors\n errors.forEach(error => {\n let message = `Failed to import scene: ${error.url}`;\n log('error', message, error);\n this.trigger('error', { type: 'scene_import', message, error, url: error.url });\n });\n }\n return { config, bundle };\n });\n },\n\n // Loads scene files from URL, recursively loading 'import' scenes\n // Optional *initial* path only (won't be passed to recursive 'import' calls)\n // Useful for loading resources in base scene file from a separate location\n // (e.g. in Tangram Play, when modified local scene should still refer to original resource URLs)\n loadSceneRecursive({ url, path, type }, parent, errors = []) {\n if (!url) {\n return Promise.resolve({});\n }\n\n let bundle = createSceneBundle(url, path, parent, type);\n\n return bundle.load().then(config => {\n if (config.import == null) {\n return this.normalize(config, bundle);\n }\n\n // accept single entry or array\n if (!Array.isArray(config.import)) {\n config.import = [config.import]; // convert to array\n }\n\n // Collect URLs of scenes to import\n let imports = [];\n config.import.forEach(url => {\n // Convert scene objects to URLs\n if (typeof url === 'object') {\n url = URLs.createObjectURL(new Blob([JSON.stringify(url)]));\n }\n\n imports.push(bundle.resourceFor(url));\n });\n delete config.import; // don't want to merge this property\n\n return Promise.\n all(imports.map(resource => this.loadSceneRecursive(resource, bundle, errors))).\n then(results => {\n let configs = results.map(r => r.config);\n config = mergeObjects({}, ...configs, config);\n return this.normalize(config, bundle);\n });\n }).catch(error => {\n // Collect scene load errors as we go\n error.url = url;\n errors.push(error);\n return {};\n });\n },\n\n // Normalize properties that should be adjust within each local scene file (usually by path)\n normalize(config, bundle) {\n this.normalizeDataSources(config, bundle);\n this.normalizeFonts(config, bundle);\n this.normalizeTextures(config, bundle);\n return { config, bundle };\n },\n\n // Expand paths for data source\n normalizeDataSources(config, bundle) {\n config.sources = config.sources || {};\n\n for (let sn in config.sources) {\n this.normalizeDataSource(config.sources[sn], bundle);\n }\n\n return config;\n },\n\n normalizeDataSource(source, bundle) {\n source.url = bundle.urlFor(source.url);\n\n if (Array.isArray(source.scripts)) {\n source.scripts = source.scripts.map(url => bundle.urlFor(url));\n }\n\n return source;\n },\n\n // Expand paths for fonts\n normalizeFonts(config, bundle) {\n config.fonts = config.fonts || {};\n\n for (let family in config.fonts) {\n if (Array.isArray(config.fonts[family])) {\n config.fonts[family].forEach(face => {\n face.url = face.url && bundle.urlFor(face.url);\n });\n }\n else {\n let face = config.fonts[family];\n face.url = face.url && bundle.urlFor(face.url);\n }\n }\n\n return config;\n },\n\n // Expand paths and centralize texture definitions for a scene object\n normalizeTextures(config, bundle) {\n config.textures = config.textures || {};\n\n // Add current scene's base path to globally defined textures\n // Only adds path for textures with relative URLs, so textures in imported scenes get the base\n // path of their immediate scene file\n if (config.textures) {\n for (let tn in config.textures) {\n let texture = config.textures[tn];\n if (texture.url) {\n texture.url = bundle.urlFor(texture.url);\n }\n }\n }\n\n // Resolve URLs for inline textures\n if (config.styles) {\n for (let sn in config.styles) {\n let style = config.styles[sn];\n\n // Style `texture`\n let tex = style.texture;\n if (typeof tex === 'string' && !config.textures[tex] && !isGlobal(tex)) {\n style.texture = bundle.urlFor(tex);\n }\n\n // Material\n if (style.material) {\n ['emission', 'ambient', 'diffuse', 'specular', 'normal'].forEach(prop => {\n // Material property has a texture\n let tex = style.material[prop] != null && style.material[prop].texture;\n if (typeof tex === 'string' && !config.textures[tex] && !isGlobal(tex)) {\n style.material[prop].texture = bundle.urlFor(tex);\n }\n });\n }\n\n // Shader uniforms\n if (style.shaders && style.shaders.uniforms) {\n GLSL.parseUniforms(style.shaders.uniforms).forEach(({type, value, key, uniforms}) => {\n // Texture by URL (string-named texture not referencing existing texture definition)\n if (type === 'sampler2D' && typeof value === 'string' && !config.textures[value] && !isGlobal(value)) {\n uniforms[key] = bundle.urlFor(value);\n }\n });\n }\n }\n }\n\n return config;\n },\n\n // Substitutes global scene properties (those defined in the `config.global` object) for any style values\n // of the form `global.`, for example `color: global.park_color` would be replaced with the value (if any)\n // defined for the `park_color` property in `config.global.park_color`.\n applyGlobalProperties(config, applied) {\n if (!config.global || Object.keys(config.global).length === 0) {\n return config; // no global properties to transform\n }\n\n // Parse properties from globals\n const separator = ':';\n const props = flattenProperties(config.global, separator);\n\n // Re-apply previously applied properties\n // NB: a current shortcoming here is that you cannot \"un-link\" a target property from a global\n // at run-time. Once a global property substitution has been recorderd, it will always be re-applied\n // on subsequent scene updates, even if the target property was updated to another literal value.\n // This is unlikely to be a common occurrence an acceptable limitation for now.\n applied.forEach(({ prop, target, key }) => {\n if (target) {\n target[key] = props[prop];\n // log('info', `Re-applying ${prop} with value ${props[prop]} to key ${key} in`, target);\n }\n });\n\n // Recursively look-up a global property name. Allows globals to refer to other globals, e.g.:\n // global:\n // color: global.secret_color\n // secret_color: red\n function lookupGlobalName (key, props, stack = []) {\n if (stack.indexOf(key) > -1) {\n log({ level: 'warn', once: true }, `Global properties: cyclical reference detected`, stack);\n return;\n }\n stack.push(key);\n\n const prop = (key.slice(0, 7) === 'global.') && (key.slice(7).replace(/\\./g, separator));\n if (prop && props[prop] !== undefined) {\n if (typeof props[prop] === 'string' && props[prop].slice(0, 7) === 'global.') {\n return lookupGlobalName(props[prop], props, stack);\n }\n return prop;\n }\n }\n\n // Find and apply new properties\n function applyGlobals (obj, target, key) {\n // Convert string\n if (typeof obj === 'string') {\n const prop = lookupGlobalName(obj, props);\n const val = props[prop];\n if (val !== undefined) {\n // Save record of where property is applied\n applied.push({ prop, target, key });\n\n // Apply property\n obj = val;\n }\n }\n // Loop through object keys or array indices\n else if (Array.isArray(obj)) {\n for (let p=0; p < obj.length; p++) {\n obj[p] = applyGlobals(obj[p], obj, p);\n }\n }\n else if (typeof obj === 'object') {\n for (let p in obj) {\n obj[p] = applyGlobals(obj[p], obj, p);\n }\n }\n return obj;\n }\n\n return applyGlobals(config);\n },\n\n // Move inline (URL string) textures to the scene's top-level set of textures (config.textures).\n // There are 3 such cases of textures:\n // - in a style's `texture` property\n // - in a style's `material` properties\n // - in a style's custom uniforms (`shaders.uniforms`)\n hoistTextures (config) {\n if (config.styles) {\n for (let sn in config.styles) {\n let style = config.styles[sn];\n\n // Style `texture`\n let tex = style.texture;\n if (typeof tex === 'string' && !config.textures[tex]) {\n let url = tex;\n let name = isGlobal(url) ? `texture-${url}` : url;\n config.textures[name] = { url };\n style.texture = name;\n }\n\n // Material\n if (style.material) {\n ['emission', 'ambient', 'diffuse', 'specular', 'normal'].forEach(prop => {\n // Material property has a texture\n let tex = style.material[prop] != null && style.material[prop].texture;\n if (typeof tex === 'string' && !config.textures[tex]) {\n let url = tex;\n let name = isGlobal(url) ? `texture-${url}` : url;\n config.textures[name] = { url };\n style.material[prop].texture = name;\n }\n });\n }\n\n // Shader uniforms\n if (style.shaders && style.shaders.uniforms) {\n GLSL.parseUniforms(style.shaders.uniforms).forEach(({type, value, key, uniforms}) => {\n // Texture by URL (string-named texture not referencing existing texture definition)\n if (type === 'sampler2D' && typeof value === 'string' && !config.textures[value]) {\n let url = value;\n let name = isGlobal(url) ? `texture-${url}` : url;\n config.textures[name] = { url };\n uniforms[key] = name;\n }\n });\n }\n }\n }\n },\n\n // Normalize some scene-wide settings that apply to the final, merged scene\n finalize({ config, bundle }) {\n if (!config) {\n return {};\n }\n\n // Ensure top-level properties\n config.scene = config.scene || {};\n config.cameras = config.cameras || {};\n config.lights = config.lights || {};\n config.styles = config.styles || {};\n config.layers = config.layers || {};\n\n // If only one camera specified, set it as default\n if (config.camera) {\n config.cameras.default = config.camera;\n }\n\n // If no cameras specified, create one\n if (Object.keys(config.cameras).length === 0) {\n config.cameras.default = {};\n }\n\n // If no lights specified, create default\n if (Object.keys(config.lights).length === 0 ||\n Object.keys(config.lights).every(i => config.lights[i].visible === false)) {\n config.lights.default_light = {\n type: 'directional'\n };\n }\n\n return { config, bundle };\n }\n\n};\n\n// Flatten nested properties for simpler string look-ups\n// e.g. global.background.color -> 'global:background:color'\nfunction flattenProperties (obj, separator = ':', prefix = null, props = {}) {\n prefix = prefix ? (prefix + separator) : '';\n\n for (let p in obj) {\n let key = prefix + p;\n let val = obj[p];\n props[key] = val;\n\n if (typeof val === 'object' && !Array.isArray(val)) {\n flattenProperties(val, separator, key, props);\n }\n }\n return props;\n}\n\nsubscribeMixin(SceneLoader);\n", "/*jshint worker: true*/\nimport Thread from './utils/thread';\nimport Utils from './utils/utils';\nimport {mergeDebugSettings} from './utils/debug_settings';\nimport log from './utils/log';\nimport WorkerBroker from './utils/worker_broker'; // jshint ignore:line\nimport Tile from './tile';\nimport Geo from './geo';\nimport DataSource from './sources/data_source';\nimport FeatureSelection from './selection';\nimport {StyleParser} from './styles/style_parser';\nimport {StyleManager} from './styles/style_manager';\nimport {parseLayers, FilterOptions} from './styles/layer';\nimport {buildFilter} from './styles/filter';\nimport Texture from './gl/texture';\nimport VertexElements from './gl/vertex_elements';\n\nexport var SceneWorker = self;\n\n// Worker functionality will only be defined in worker thread\nif (Thread.is_worker) {\n\nObject.assign(self, {\n\n FeatureSelection,\n\n sources: {},\n styles: {},\n layers: {},\n tiles: {},\n\n // Initialize worker\n init (scene_id, worker_id, num_workers, log_level, device_pixel_ratio, has_element_index_unit) {\n self.scene_id = scene_id;\n self._worker_id = worker_id;\n self.num_workers = num_workers;\n log.setLevel(log_level);\n Utils.device_pixel_ratio = device_pixel_ratio;\n VertexElements.setElementIndexUint(has_element_index_unit);\n FeatureSelection.setPrefix(self._worker_id);\n self.style_manager = new StyleManager();\n return worker_id;\n },\n\n // Starts a config refresh\n updateConfig ({ config, generation, introspection }, debug) {\n config = JSON.parse(config);\n mergeDebugSettings(debug);\n\n self.generation = generation;\n self.introspection = introspection;\n\n // Data block functions are not context wrapped like the rest of the style functions are\n // TODO: probably want a cleaner way to exclude these\n for (let layer in config.layers) {\n if (config.layers[layer]) {\n config.layers[layer].data = Utils.stringsToFunctions(config.layers[layer].data);\n }\n }\n\n // Expand global properties\n self.global = Utils.stringsToFunctions(config.global);\n\n // Create data sources\n self.createDataSources(config);\n\n // Expand styles\n config.styles = Utils.stringsToFunctions(config.styles, StyleParser.wrapFunction);\n self.styles = self.style_manager.build(config.styles);\n self.style_manager.initStyles({\n generation: self.generation,\n styles: self.styles,\n sources: self.sources,\n introspection: self.introspection\n });\n\n // Parse each top-level layer as a separate tree\n self.layers = parseLayers(config.layers, self.style_manager.styles);\n\n // Sync tetxure info from main thread\n self.syncing_textures = self.syncTextures(config.textures);\n\n // Return promise for when config refresh finishes\n self.configuring = self.syncing_textures.then(() => {\n log('debug', `updated config`);\n });\n },\n\n // Create data sources and clear tile cache if necessary\n createDataSources (config) {\n // Save and compare previous sources\n self.last_config_sources = self.config_sources || {};\n self.config_sources = config.sources;\n let last_sources = self.sources;\n let changed = false;\n\n // Parse new sources\n config.sources = Utils.stringsToFunctions(config.sources);\n self.sources = {}; // clear previous sources\n for (let name in config.sources) {\n if (JSON.stringify(self.last_config_sources[name]) === JSON.stringify(config.sources[name])) {\n self.sources[name] = last_sources[name];\n continue;\n }\n\n let source;\n try {\n source = DataSource.create(Object.assign({}, config.sources[name], {name}), self.sources);\n }\n catch(e) {\n continue;\n }\n\n if (!source) {\n continue;\n }\n self.sources[name] = source;\n changed = true;\n }\n\n // Clear tile cache if any data sources changed\n if (changed) {\n self.tiles = {};\n }\n },\n\n // Returns a promise that fulfills when config refresh is finished\n awaitConfiguration () {\n return self.configuring;\n },\n\n // Build a tile: load from tile source if building for first time, otherwise rebuild with existing data\n buildTile ({ tile }) {\n // Tile cached?\n if (self.getTile(tile.key) != null) {\n // Already loading?\n if (self.getTile(tile.key).loading === true) {\n return;\n }\n }\n\n // Update tile cache\n tile = self.tiles[tile.key] = Object.assign(self.getTile(tile.key) || {}, tile);\n\n // Update config (styles, etc.), then build tile\n return self.awaitConfiguration().then(() => {\n // First time building the tile\n if (tile.loaded !== true) {\n\n tile.loading = true;\n tile.loaded = false;\n tile.error = null;\n\n self.loadTileSourceData(tile).then(() => {\n if (!self.getTile(tile.key)) {\n log('trace', `stop tile build after data source load because tile was removed: ${tile.key}`);\n return;\n }\n\n // Warn and continue on data source error\n if (tile.source_data.error) {\n log('warn', `tile load error(s) for ${tile.key}: ${tile.source_data.error}`);\n }\n\n tile.loading = false;\n tile.loaded = true;\n Tile.buildGeometry(tile, self);\n }).catch((error) => {\n tile.loading = false;\n tile.loaded = false;\n tile.error = error.stack;\n log('error', `tile load error for ${tile.key}: ${tile.error}`);\n\n // Send error to main thread\n WorkerBroker.postMessage(`TileManager_${self.scene_id}.buildTileError`, Tile.slice(tile));\n });\n }\n // Tile already loaded, just rebuild\n else {\n log('trace', `used worker cache for tile ${tile.key}`);\n\n // Build geometry\n try {\n Tile.buildGeometry(tile, self);\n }\n catch(error) {\n // Send error to main thread\n tile.error = error.toString();\n WorkerBroker.postMessage(`TileManager_${self.scene_id}.buildTileError`, Tile.slice(tile));\n }\n }\n });\n },\n\n // Load this tile's data source\n loadTileSourceData (tile) {\n if (self.sources[tile.source]) {\n return self.sources[tile.source].load(tile);\n }\n else {\n tile.source_data = {};\n return Promise.resolve(tile);\n }\n },\n\n getTile(key) {\n return self.tiles[key];\n },\n\n // Remove tile\n removeTile (key) {\n var tile = self.tiles[key];\n\n if (tile != null) {\n // Cancel if loading\n if (tile.loading === true) {\n log('trace', `cancel tile load for ${key}`);\n tile.loading = false;\n Tile.cancel(tile);\n }\n\n // Remove from cache\n FeatureSelection.clearTile(key);\n delete self.tiles[key];\n log('trace', `remove tile from cache for ${key}`);\n }\n },\n\n // Query features within visible tiles, with optional filter conditions\n queryFeatures ({ filter, visible, geometry, tile_keys }) {\n let features = [];\n let tiles = tile_keys.map(t => self.tiles[t]).filter(t => t);\n\n // Compile feature filter\n if (filter != null) {\n filter = ['{', '['].indexOf(filter[0]) > -1 ? JSON.parse(filter) : filter; // de-serialize if looks like an object\n filter = Utils.stringsToFunctions(filter, StyleParser.wrapFunction);\n }\n filter = buildFilter(filter, FilterOptions);\n\n tiles.forEach(tile => {\n for (let layer in tile.source_data.layers) {\n let data = tile.source_data.layers[layer];\n data.features.forEach(feature => {\n // Optionally check if feature is visible (e.g. was rendered for current generation)\n if ((visible === true && feature.generation !== self.generation) ||\n (visible === false && feature.generation === self.generation)) {\n return;\n }\n\n // Apply feature filter\n let context = StyleParser.getFeatureParseContext(feature, tile, self.global);\n context.source = tile.source; // add data source name\n context.layer = layer; // add data source layer name\n\n if (!filter(context)) {\n return;\n }\n\n // Info to return with each feature\n let subset = {\n type: feature.type,\n properties: feature.properties\n };\n\n // Optionally include geometry in response\n if (geometry === true) {\n // Transform back to lat lng (copy geometry to avoid local modification)\n subset.geometry = Geo.copyGeometry(feature.geometry);\n Geo.tileSpaceToLatlng(subset.geometry, tile.coords.z, tile.min, tile.max);\n }\n\n features.push(subset);\n });\n }\n });\n return features;\n },\n\n // Get a feature from the selection map\n getFeatureSelection ({ id, key } = {}) {\n var selection = FeatureSelection.map[key];\n\n return {\n id: id,\n feature: (selection && selection.feature)\n };\n },\n\n // Resets the feature selection state\n resetFeatureSelection (sources = null) {\n FeatureSelection.reset(sources);\n },\n\n // Selection map size for this worker\n getFeatureSelectionMapSize () {\n return FeatureSelection.getMapSize();\n },\n\n // Texture info needs to be synced from main thread, e.g. width/height, which we only know after the texture loads\n syncTextures (tex_config) {\n let textures = [];\n if (tex_config) {\n textures.push(...Object.keys(tex_config));\n }\n\n log('trace', 'sync textures to worker:', textures);\n if (textures.length > 0) {\n return Texture.syncTexturesToWorker(textures);\n }\n return Promise.resolve();\n },\n\n // Sync device pixel ratio from main thread\n updateDevicePixelRatio (device_pixel_ratio) {\n Utils.device_pixel_ratio = device_pixel_ratio;\n },\n\n // Profiling helpers\n profile (name) {\n console.profile(`worker ${self._worker_id}: ${name}`);\n },\n\n profileEnd (name) {\n console.profileEnd(`worker ${self._worker_id}: ${name}`);\n }\n\n});\n\nWorkerBroker.addTarget('self', self);\n\n}\n", @@ -519,15 +519,15 @@ "import {StyleParser} from './style_parser';\nimport Utils from '../utils/utils';\nimport log from '../utils/log';\nimport mergeObjects from '../utils/merge';\nimport {buildFilter} from './filter';\n\n// N.B.: 'visible' is legacy compatibility for 'enabled'\nexport const reserved = ['filter', 'draw', 'visible', 'enabled', 'data'];\n\nlet layer_cache = {};\nexport function layerCache () {\n return layer_cache;\n}\n\nfunction cacheKey (layers) {\n if (layers.length > 1) {\n var k = layers[0];\n for (var i=1; i < layers.length; i++) {\n k += '/' + layers[i];\n }\n\n return k;\n }\n return layers[0];\n}\n\n// Merge matching layer trees into a final draw group\nexport function mergeTrees(matchingTrees, group) {\n let draws, treeDepth = 0;\n\n // Find deepest tree\n for (let t=0; t < matchingTrees.length; t++) {\n if (matchingTrees[t].length > treeDepth) {\n treeDepth = matchingTrees[t].length;\n }\n }\n\n // No layers to parse\n if (treeDepth === 0) {\n return null;\n }\n\n // Merged draw group object\n let draw = {\n visible: true, // visible by default\n };\n\n // Iterate trees in parallel\n for (let x=0; x < treeDepth; x++) {\n // Pull out the requested draw group, for each tree, at this depth\n draws = matchingTrees.map(tree => tree[x] && tree[x][group]);\n if (draws.length === 0) {\n continue;\n }\n\n // Sort by layer name before merging, so layers are applied deterministically\n // when multiple layers modify the same properties\n draws.sort((a, b) => (a && a.layer_name) > (b && b.layer_name) ? 1 : -1);\n\n // Merge draw objects\n mergeObjects(draw, ...draws);\n\n // Remove layer names, they were only used transiently to sort and calculate final layer\n // (final merged names will not be accurate since only one tree can win)\n delete draw.layer_name;\n }\n\n // Short-circuit if not visible\n if (draw.visible === false) {\n return null;\n }\n\n return draw;\n}\n\nconst blacklist = ['any', 'all', 'not', 'none'];\n\nclass Layer {\n\n constructor({ layer, name, parent, draw, visible, enabled, filter, styles }) {\n this.id = Layer.id++;\n this.config_data = layer.data;\n this.parent = parent;\n this.name = name;\n this.full_name = this.parent ? (this.parent.full_name + ':' + this.name) : this.name;\n this.draw = draw;\n this.filter = filter;\n this.styles = styles;\n this.is_built = false;\n\n enabled = (enabled === undefined) ? visible : enabled; // `visible` property is backwards compatible for `enabled`\n if (this.parent && this.parent.visible === false) {\n this.enabled = false; // all descendants of disabled layer are also disabled\n }\n else {\n this.enabled = (enabled !== false); // layer is enabled unless explicitly set to disabled\n }\n\n // Denormalize layer name to draw groups\n if (this.draw) {\n for (let group in this.draw) {\n this.draw[group] = (this.draw[group] == null) ? {} : this.draw[group];\n if (typeof this.draw[group] !== 'object') {\n // Invalid draw group\n let msg = `Draw group '${group}' for layer ${this.full_name} is invalid, must be an object, `;\n msg += `but was set to \\`${group}: ${this.draw[group]}\\` instead`;\n log('warn', msg); // TODO: fire external event that clients to subscribe to\n\n delete this.draw[group];\n }\n else {\n this.draw[group].layer_name = this.full_name;\n }\n }\n }\n }\n\n build () {\n log('trace', `Building layer '${this.full_name}'`);\n this.buildFilter();\n this.buildDraw();\n this.is_built = true;\n }\n\n buildDraw() {\n this.draw = Utils.stringsToFunctions(this.draw, StyleParser.wrapFunction);\n this.calculatedDraw = calculateDraw(this);\n }\n\n buildFilter() {\n this.filter_original = this.filter;\n this.filter = Utils.stringsToFunctions(this.filter, StyleParser.wrapFunction);\n\n let type = typeof this.filter;\n if (this.filter != null && type !== 'object' && type !== 'function') {\n // Invalid filter\n let msg = `Filter for layer ${this.full_name} is invalid, filter value must be an object or function, `;\n msg += `but was set to \\`filter: ${this.filter}\\` instead`;\n log('warn', msg); // TODO: fire external event that clients to subscribe to\n return;\n }\n\n try {\n this.buildZooms();\n this.buildPropMatches();\n if (this.filter != null && (typeof this.filter === 'function' || Object.keys(this.filter).length > 0)) {\n this.filter = buildFilter(this.filter, FilterOptions);\n }\n else {\n this.filter = null;\n }\n }\n catch(e) {\n // Invalid filter\n let msg = `Filter for layer ${this.full_name} is invalid, \\`filter: ${JSON.stringify(this.filter)}\\` `;\n msg += `failed with error '${e.message}', stack trace: ${e.stack}`;\n log('warn', msg); // TODO: fire external event that clients to subscribe to\n }\n }\n\n // Zooms often cull large swaths of the layer tree, so they get special treatment and are checked first\n buildZooms() {\n let zoom = this.filter && this.filter.$zoom;\n let ztype = typeof zoom;\n if (zoom != null && ztype !== 'function') { // don't accelerate function-based filters\n this.zooms = {};\n\n if (ztype === 'number') {\n this.zooms[zoom] = true;\n }\n else if (Array.isArray(zoom)) {\n for (let z=0; z < zoom.length; z++) {\n this.zooms[zoom[z]] = true;\n }\n }\n else if (ztype === 'object' && (zoom.min != null || zoom.max != null)) {\n let zmin = zoom.min || 0;\n let zmax = zoom.max || 25; // TODO: replace constant for max possible zoom\n for (let z=zmin; z < zmax; z++) {\n this.zooms[z] = true;\n }\n }\n\n delete this.filter.$zoom; // don't process zoom through usual generic filter logic\n }\n }\n\n buildPropMatches() {\n if (!this.filter || Array.isArray(this.filter) || typeof this.filter === 'function') {\n return;\n }\n\n Object.keys(this.filter).forEach(key => {\n if (blacklist.indexOf(key) === -1) {\n let val = this.filter[key];\n let type = typeof val;\n let array = Array.isArray(val);\n\n if (!(array || type === 'string' || type === 'number')) {\n return;\n }\n\n if (key[0] === '$') {\n // Context property\n this.context_prop_matches = this.context_prop_matches || [];\n this.context_prop_matches.push([key.substring(1), array ? val : [val]]);\n }\n else {\n // Feature property\n this.feature_prop_matches = this.feature_prop_matches || [];\n this.feature_prop_matches.push([key, array ? val : [val]]);\n }\n\n delete this.filter[key];\n }\n });\n }\n\n doPropMatches (context) {\n if (this.feature_prop_matches) {\n for (let r=0; r < this.feature_prop_matches.length; r++) {\n let match = this.feature_prop_matches[r];\n let val = context.feature.properties[match[0]];\n if (val == null || match[1].indexOf(val) === -1) {\n return false;\n }\n }\n }\n\n if (this.context_prop_matches) {\n for (let r=0; r < this.context_prop_matches.length; r++) {\n let match = this.context_prop_matches[r];\n let val = context[match[0]];\n if (val == null || match[1].indexOf(val) === -1) {\n return false;\n }\n }\n }\n\n return true;\n }\n\n doesMatch (context) {\n if (!this.enabled) {\n return false;\n }\n\n if (!this.is_built) {\n this.build();\n }\n\n // zoom pre-filter: skip rest of filter if out of layer zoom range\n if (this.zooms != null && !this.zooms[context.zoom]) {\n return false;\n }\n\n // direct feature property matches\n if (!this.doPropMatches(context)) {\n return false;\n }\n\n // any remaining filter (more complex matches or dynamic function)\n let match;\n if (this.filter instanceof Function){\n try {\n match = this.filter(context);\n }\n catch (error) {\n // Filter function error\n let msg = `Filter for this ${this.full_name}: \\`filter: ${this.filter_original}\\` `;\n msg += `failed with error '${error.message}', stack trace: ${error.stack}`;\n log('error', msg, context.feature);\n }\n }\n else {\n match = this.filter == null;\n }\n\n if (match) {\n if (this.children_to_parse) {\n parseLayerChildren(this, this.children_to_parse, this.styles);\n delete this.children_to_parse;\n }\n\n return true;\n }\n return false;\n }\n\n}\n\nLayer.id = 0;\n\n\nexport class LayerLeaf extends Layer {\n constructor (config) {\n super(config);\n this.is_leaf = true;\n }\n\n}\n\nexport class LayerTree extends Layer {\n constructor (config) {\n super(config);\n this.is_tree = true;\n this.layers = config.layers || [];\n }\n\n addLayer (layer) {\n this.layers.push(layer);\n }\n\n buildDrawGroups (context) {\n let layers = [], layer_ids = [];\n matchFeature(context, [this], layers, layer_ids);\n\n if (layers.length > 0) {\n let cache_key = cacheKey(layer_ids);\n\n // Only evaluate each layer combination once (undefined means not yet evaluated,\n // null means evaluated with no draw object)\n if (layer_cache[cache_key] === undefined) {\n // Find all the unique visible draw blocks for this layer tree\n let draw_groups = layers.map(x => x && x.visible !== false && x.calculatedDraw);\n let draw_keys = {};\n\n for (let r=0; r < draw_groups.length; r++) {\n let stack = draw_groups[r];\n if (!stack) {\n continue;\n }\n for (let g=0; g < stack.length; g++) {\n let group = stack[g];\n for (let key in group) {\n draw_keys[key] = true;\n }\n }\n }\n\n // Calculate each draw group\n for (let draw_key in draw_keys) {\n layer_cache[cache_key] = layer_cache[cache_key] || {};\n layer_cache[cache_key][draw_key] = mergeTrees(draw_groups, draw_key);\n\n // Only save the ones that weren't null\n if (!layer_cache[cache_key][draw_key]) {\n delete layer_cache[cache_key][draw_key];\n }\n else {\n layer_cache[cache_key][draw_key].key = cache_key + '/' + draw_key;\n layer_cache[cache_key][draw_key].layers = layers.map(x => x && x.full_name);\n layer_cache[cache_key][draw_key].group = draw_key;\n }\n }\n\n // No layers evaluated\n if (layer_cache[cache_key] && Object.keys(layer_cache[cache_key]).length === 0) {\n layer_cache[cache_key] = null;\n }\n }\n return layer_cache[cache_key];\n }\n }\n\n}\n\nexport const FilterOptions = {\n // Handle unit conversions on filter ranges\n rangeTransform(val) {\n if (typeof val === 'string' && val.trim().slice(-3) === 'px2') {\n return `${parseFloat(val)} * context.meters_per_pixel_sq`;\n }\n return val;\n }\n};\n\nfunction isReserved(key) {\n return reserved.indexOf(key) > -1;\n}\n\nfunction isEmpty(obj) {\n return Object.keys(obj).length === 0;\n}\n\nexport function groupProps(obj) {\n let reserved = {}, children = {};\n\n for (let key in obj) {\n if (isReserved(key)) {\n reserved[key] = obj[key];\n } else {\n children[key] = obj[key];\n }\n }\n return [reserved, children];\n}\n\nexport function calculateDraw(layer) {\n\n let draw = [];\n\n if (layer.parent) {\n let cs = layer.parent.calculatedDraw || [];\n draw.push(...cs);\n }\n\n draw.push(layer.draw);\n return draw;\n}\n\nexport function parseLayerNode(name, layer, parent, styles) {\n\n layer = (layer == null) ? {} : layer;\n\n let properties = { name, layer, parent, styles };\n let [reserved, children] = groupProps(layer);\n let empty = isEmpty(children);\n let Create;\n\n if (empty && parent != null) {\n Create = LayerLeaf;\n } else {\n Create = LayerTree;\n }\n\n let r = new Create(Object.assign(properties, reserved));\n\n // only process child layers if this layer is enabled\n if (r.enabled) {\n if (parent) {\n parent.addLayer(r);\n }\n r.children_to_parse = empty ? null : children;\n }\n\n return r;\n}\n\nfunction parseLayerChildren (parent, children, styles) {\n for (let key in children) {\n let child = children[key];\n if (typeof child === 'object' && !Array.isArray(child)) {\n parseLayerNode(key, child, parent, styles);\n } else {\n // Invalid layer\n let msg = `Layer value must be an object: cannot create layer '${key}: ${JSON.stringify(child)}'`;\n msg += `, under parent layer '${parent.full_name}'.`;\n\n // If the parent is a style name, this may be an incorrectly nested layer\n if (styles[parent.name]) {\n msg += ` The parent name '${parent.name}' is also the name of a style, did you mean to create a 'draw' group`;\n if (parent.parent) {\n msg += ` under '${parent.parent.name}'`;\n }\n msg += ` instead?`;\n }\n log('warn', msg); // TODO: fire external event that clients to subscribe to\n }\n }\n}\n\n\nexport function parseLayers (layers, styles) {\n layer_cache = {}; // clear layer cache\n let layer_trees = {};\n\n for (let key in layers) {\n let layer = layers[key];\n if (layer) {\n layer_trees[key] = parseLayerNode(key, layer, null, styles);\n }\n }\n\n return layer_trees;\n}\n\nexport function matchFeature(context, layers, collected_layers, collected_layers_ids) {\n let matched = false;\n let childMatched = false;\n\n if (layers.length === 0) { return; }\n\n for (let r=0; r < layers.length; r++) {\n let current = layers[r];\n\n if (current.is_leaf) {\n if (current.doesMatch(context)) {\n matched = true;\n collected_layers.push(current);\n collected_layers_ids.push(current.id);\n }\n\n } else if (current.is_tree) {\n if (current.doesMatch(context)) {\n matched = true;\n\n childMatched = matchFeature(\n context,\n current.layers,\n collected_layers,\n collected_layers_ids\n );\n\n if (!childMatched) {\n collected_layers.push(current);\n collected_layers_ids.push(current.id);\n }\n }\n }\n }\n\n return matched;\n}\n", "// Renders an array specifying a line pattern of alternating dashes and spaces,\n// similar to an SVG `dasharray` or Canvas setLineDash(), into a byte array of RGBA pixels\n// Returns:\n// {\n// pixel: rendered image in Uint8Array buffer\n// length: pixel length of rendered dash pattern (sum of all dashes and spaces)\n// }\n//\n// https://www.w3.org/TR/SVG/painting.html#StrokeDasharrayProperty\n// https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-dasharray\n// https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/setLineDash\n\nconst default_dash_color = [255, 255, 255, 255];\nconst default_background_color = [0, 0, 0, 0];\n\nexport default function renderDashArray (pattern, options = {}) {\n const dash_pixel = options.dash_color || default_dash_color;\n const background_color = options.background_color || default_background_color;\n const dashes = pattern;\n const scale = options.scale || 1;\n\n // If pattern is odd, repeat it to make it even (see SVG spec)\n if (dashes.length % 2 === 1) {\n Array.prototype.push.apply(dashes, dashes);\n }\n\n let dash = true;\n let pixels = [];\n for (let i=0; i < dashes.length; i++) {\n let segment = Math.floor(dashes[i] * scale);\n for (let s=0; s < segment; s++) {\n Array.prototype.push.apply(pixels, dash ? dash_pixel : background_color);\n }\n dash = !dash; // alternate between dashes and spaces\n }\n\n pixels = new Uint8Array(pixels); // convert to typed array\n const length = pixels.length / 4; // one RGBA byte sequences to one pixel\n\n return { pixels, length };\n}\n", "// Line rendering style\n\nimport {Style} from '../style';\nimport {StyleParser} from '../style_parser';\nimport gl from '../../gl/constants'; // web workers don't have access to GL context, so import all GL constants\nimport Texture from '../../gl/texture';\nimport VertexLayout from '../../gl/vertex_layout';\nimport {buildPolylines} from '../../builders/polylines';\nimport renderDashArray from './dasharray';\nimport Geo from '../../geo';\nimport {shaderSrc_polygonsVertex, shaderSrc_polygonsFragment} from '../polygons/polygons';\n\nexport var Lines = Object.create(Style);\n\nObject.assign(Lines, {\n name: 'lines',\n built_in: true,\n vertex_shader_src: shaderSrc_polygonsVertex,\n fragment_shader_src: shaderSrc_polygonsFragment,\n selection: true, // turn feature selection on\n\n init() {\n Style.init.apply(this, arguments);\n\n // Basic attributes, others can be added (see texture UVs below)\n var attribs = [\n { name: 'a_position', size: 4, type: gl.SHORT, normalized: false },\n { name: 'a_extrude', size: 4, type: gl.SHORT, normalized: false },\n { name: 'a_color', size: 4, type: gl.UNSIGNED_BYTE, normalized: true }\n ];\n\n // Tell the shader we want a order in vertex attributes, and to extrude lines\n this.defines.TANGRAM_LAYER_ORDER = true;\n this.defines.TANGRAM_EXTRUDE_LINES = true;\n\n // Optional feature selection\n if (this.selection) {\n attribs.push({ name: 'a_selection_color', size: 4, type: gl.UNSIGNED_BYTE, normalized: true });\n }\n\n // Optional line texture or dash array\n // (latter will be rendered at compile-time, when GL context available)\n if (this.texture || this.dash) {\n this.texcoords = true;\n }\n\n // Optional texture UVs\n if (this.texcoords) {\n this.defines.TANGRAM_TEXTURE_COORDS = true;\n\n // Scaling factor to add precision to line texture V coordinate packed as normalized short\n this.defines.TANGRAM_DASH_SCALE = 1;\n this.defines.TANGRAM_V_SCALE_ADJUST = Geo.tile_scale * this.defines.TANGRAM_DASH_SCALE;\n\n // Add vertex attribute for UVs only when needed\n attribs.push({ name: 'a_texcoord', size: 2, type: gl.UNSIGNED_SHORT, normalized: true });\n }\n\n this.vertex_layout = new VertexLayout(attribs);\n\n // Additional single-allocated object used for holding outline style as it is processed\n // Separate from this.feature_style so that outline properties do not overwrite calculated\n // inline properties (outline call is made *within* the inline call)\n this.outline_feature_style = {};\n this.inline_feature_style = this.feature_style; // save reference to main computed style object\n },\n\n // Override\n compileSetup () {\n if (!this.compile_setup) {\n this.parseLineTexture();\n }\n return Style.compileSetup.apply(this, arguments);\n },\n\n // Optionally apply a dash array pattern to this line\n parseLineTexture () {\n // Specify a line pattern\n if (this.dash) {\n // Optional background color for dash pattern (defaults transparent)\n if (this.dash_background_color) {\n this.dash_background_color = StyleParser.parseColor(this.dash_background_color);\n this.defines.TANGRAM_LINE_BACKGROUND_COLOR =\n `vec3(${this.dash_background_color.slice(0, 3).join(', ')})`;\n }\n\n // Adjust texcoord scale to allow for dash patterns that are a fraction of line width\n this.defines.TANGRAM_DASH_SCALE = 20;\n this.defines.TANGRAM_V_SCALE_ADJUST = Geo.tile_scale * this.defines.TANGRAM_DASH_SCALE;\n\n // Render line pattern\n const dash = renderDashArray(this.dash, { scale: this.defines.TANGRAM_DASH_SCALE });\n this.texture = '_' + this.name + '_dasharray';\n Texture.create(this.gl, this.texture, {\n data: dash.pixels,\n height: dash.length,\n width: 1,\n filtering: 'nearest'\n });\n }\n\n // Specify a line texture (either directly, or rendered dash pattern from above)\n if (this.texture) {\n this.defines.TANGRAM_LINE_TEXTURE = true;\n this.shaders.uniforms = this.shaders.uniforms || {};\n this.shaders.uniforms.u_texture = this.texture;\n this.shaders.uniforms.u_texture_ratio = 1;\n\n // update line pattern aspect ratio after texture loads\n Texture.getInfo(this.texture).then(texture => {\n if (texture) {\n this.shaders.uniforms.u_texture_ratio = texture.height / texture.width;\n }\n });\n }\n },\n\n // Calculate width at zoom given in `context`\n calcWidth (width, context) {\n return (width && StyleParser.evalCachedDistanceProperty(width, context)) || 0;\n },\n\n // Calculate width at next zoom (used for line width interpolation)\n calcWidthNextZoom (width, context) {\n context.zoom++;\n let val = this.calcWidth(width, context);\n context.zoom--;\n return val;\n },\n\n _parseFeature (feature, draw, context) {\n var style = this.feature_style;\n\n // line width in meters\n let width = this.calcWidth(draw.width, context);\n if (width < 0) {\n return; // skip lines with negative width\n }\n let next_width = this.calcWidthNextZoom(draw.next_width, context);\n\n if ((width === 0 && next_width === 0) || next_width < 0) {\n return; // skip lines that don't interpolate to a positive value at next zoom\n }\n\n // convert to units and relative change from previous zoom\n // NB: multiply by 2 because a given width is twice as big in screen space at the next zoom\n style.width = width * context.units_per_meter_overzoom;\n style.next_width = (next_width * 2) - width;\n style.next_width *= context.units_per_meter_overzoom;\n style.next_width /= 2; // NB: divide by 2 because extrusion width is halved in builder - remove?\n\n style.color = this.parseColor(draw.color, context);\n if (!style.color) {\n return;\n }\n\n // height defaults to feature height, but extrude style can dynamically adjust height by returning a number or array (instead of a boolean)\n style.z = (draw.z && StyleParser.evalCachedDistanceProperty(draw.z || 0, context)) || StyleParser.defaults.z;\n style.height = feature.properties.height || StyleParser.defaults.height;\n style.extrude = StyleParser.evalProperty(draw.extrude, context);\n if (style.extrude) {\n if (typeof style.extrude === 'number') {\n style.height = style.extrude;\n }\n else if (Array.isArray(style.extrude)) {\n style.height = style.extrude[1];\n }\n }\n\n // Raise line height if extruded\n if (style.extrude && style.height) {\n style.z += style.height;\n }\n\n style.z *= Geo.height_scale; // provide sub-meter precision of height values\n style.height *= Geo.height_scale;\n\n style.cap = draw.cap;\n style.join = draw.join;\n style.miter_limit = draw.miter_limit;\n style.tile_edges = draw.tile_edges; // usually activated for debugging, or rare visualization needs\n\n // Construct an outline style\n // Reusable outline style object, marked as already wrapped in cache objects (preprocessed = true)\n style.outline = style.outline || { width: {}, next_width: {}, preprocessed: true };\n\n if (draw.outline && draw.outline.visible !== false && draw.outline.color && draw.outline.width) {\n // outline width in meters\n // NB: multiply by 2 because outline is applied on both sides of line\n let outline_width = this.calcWidth(draw.outline.width, context) * 2;\n let outline_next_width = this.calcWidthNextZoom(draw.outline.next_width, context) * 2;\n\n if ((outline_width === 0 && outline_next_width === 0) || outline_width < 0 || outline_next_width < 0) {\n // skip lines that don't interpolate between zero or greater width\n style.outline.width.value = null;\n style.outline.next_width.value = null;\n style.outline.color = null;\n }\n else {\n // Maintain consistent outline width around the line fill\n style.outline.width.value = outline_width + width;\n style.outline.next_width.value = outline_next_width + next_width;\n\n style.outline.color = draw.outline.color;\n style.outline.cap = draw.outline.cap || draw.cap;\n style.outline.join = draw.outline.join || draw.join;\n style.outline.miter_limit = draw.outline.miter_limit || draw.miter_limit;\n style.outline.style = draw.outline.style || this.name;\n\n // Explicitly defined outline order, or inherited from inner line\n if (draw.outline.order) {\n style.outline.order = this.parseOrder(draw.outline.order, context);\n }\n else {\n style.outline.order = style.order;\n }\n\n // Don't let outline be above inner line\n if (style.outline.order > style.order) {\n style.outline.order = style.order;\n }\n\n // Outlines are always at half-layer intervals to avoid conflicting with inner lines\n style.outline.order -= 0.5;\n }\n }\n else {\n style.outline.width.value = null;\n style.outline.next_width.value = null;\n style.outline.color = null;\n }\n\n return style;\n },\n\n _preprocess (draw) {\n draw.color = StyleParser.createColorPropertyCache(draw.color);\n draw.width = StyleParser.createPropertyCache(draw.width, StyleParser.parseUnits);\n draw.next_width = StyleParser.createPropertyCache(draw.width, StyleParser.parseUnits); // width will be computed for next zoom\n draw.z = StyleParser.createPropertyCache(draw.z, StyleParser.parseUnits);\n\n if (draw.outline) {\n draw.outline.color = StyleParser.createColorPropertyCache(draw.outline.color);\n draw.outline.width = StyleParser.createPropertyCache(draw.outline.width, StyleParser.parseUnits);\n draw.outline.next_width = StyleParser.createPropertyCache(draw.outline.width, StyleParser.parseUnits); // width re-computed for next zoom\n }\n return draw;\n },\n\n /**\n * A \"template\" that sets constant attibutes for each vertex, which is then modified per vertex or per feature.\n * A plain JS array matching the order of the vertex layout.\n */\n makeVertexTemplate(style) {\n let i = 0;\n\n // position - x & y coords will be filled in per-vertex below\n this.vertex_template[i++] = 0;\n this.vertex_template[i++] = 0;\n this.vertex_template[i++] = style.z || 0;\n\n // layer order - w coord of 'position' attribute (for packing efficiency)\n this.vertex_template[i++] = this.scaleOrder(style.order);\n\n // extrusion vector\n this.vertex_template[i++] = 0;\n this.vertex_template[i++] = 0;\n this.vertex_template[i++] = 0;\n\n // scaling to previous and next zoom\n this.vertex_template[i++] = style.next_width;\n\n // color\n this.vertex_template[i++] = style.color[0] * 255;\n this.vertex_template[i++] = style.color[1] * 255;\n this.vertex_template[i++] = style.color[2] * 255;\n this.vertex_template[i++] = style.color[3] * 255;\n\n // selection color\n if (this.selection) {\n this.vertex_template[i++] = style.selection_color[0] * 255;\n this.vertex_template[i++] = style.selection_color[1] * 255;\n this.vertex_template[i++] = style.selection_color[2] * 255;\n this.vertex_template[i++] = style.selection_color[3] * 255;\n }\n\n // Add texture UVs to template only if needed\n if (this.texcoords) {\n this.vertex_template[i++] = 0;\n this.vertex_template[i++] = 0;\n }\n\n return this.vertex_template;\n },\n\n buildLines(lines, style, vertex_data, context, options) {\n // Outline (build first so that blended geometry without a depth test is drawn first/under the inner line)\n this.feature_style = this.outline_feature_style; // swap in outline-specific style holder\n if (style.outline && style.outline.color != null && style.outline.width.value != null) {\n var outline_style = this.styles[style.outline.style];\n if (outline_style) {\n outline_style.addFeature(context.feature, style.outline, context);\n }\n }\n\n // Main line\n this.feature_style = this.inline_feature_style; // restore calculated style for inline\n let vertex_template = this.makeVertexTemplate(style);\n return buildPolylines(\n lines,\n style.width,\n vertex_data,\n vertex_template,\n {\n cap: style.cap,\n join: style.join,\n miter_limit: style.miter_limit,\n scaling_index: this.vertex_layout.index.a_extrude,\n scaling_normalize: 256, // values have an 8-bit fraction\n texcoord_index: this.vertex_layout.index.a_texcoord,\n texcoord_width: (style.width || style.next_width) / context.tile.overzoom2, // UVs can't calc for zero-width, use next zoom width in that case\n texcoord_normalize: 65535, // scale UVs to unsigned shorts\n closed_polygon: options && options.closed_polygon,\n remove_tile_edges: !style.tile_edges && options && options.remove_tile_edges,\n tile_edge_tolerance: Geo.tile_scale * context.tile.pad_scale * 2\n }\n );\n },\n\n buildPolygons(polygons, style, vertex_data, context) {\n // Render polygons as individual lines\n let geom_count = 0;\n for (let p=0; p < polygons.length; p++) {\n geom_count += this.buildLines(polygons[p], style, vertex_data, context, { closed_polygon: true, remove_tile_edges: true });\n }\n return geom_count;\n }\n\n});\n", - "// Point + text label rendering style\n\nimport log from '../../utils/log';\nimport {Style} from '../style';\nimport {StyleParser} from '../style_parser';\nimport gl from '../../gl/constants'; // web workers don't have access to GL context, so import all GL constants\nimport VertexLayout from '../../gl/vertex_layout';\nimport {buildQuadsForPoints} from '../../builders/points';\nimport Texture from '../../gl/texture';\nimport Geo from '../../geo';\nimport Vector from '../../vector';\nimport Collision from '../../labels/collision';\nimport LabelPoint from '../../labels/label_point';\nimport placePointsOnLine from '../../labels/point_placement';\nimport {TextLabels} from '../text/text_labels';\nimport {VIEW_PAN_SNAP_TIME} from '../../view';\nimport debugSettings from '../../utils/debug_settings';\n\nlet fs = require('fs');\nconst shaderSrc_pointsVertex = fs.readFileSync(__dirname + '/points_vertex.glsl', 'utf8');\nconst shaderSrc_pointsFragment = fs.readFileSync(__dirname + '/points_fragment.glsl', 'utf8');\n\nconst PLACEMENT = LabelPoint.PLACEMENT;\n\nconst pre_angles_normalize = 128 / Math.PI;\nconst angles_normalize = 16384 / Math.PI;\nconst offsets_normalize = 64;\nconst texcoord_normalize = 65535;\n\nexport var Points = Object.create(Style);\n\n// texture types\nconst TANGRAM_POINT_TYPE_TEXTURE = 1; // style texture/sprites (assigned by user)\nconst TANGRAM_POINT_TYPE_LABEL = 2; // labels (generated by rendering labels to canvas)\nconst TANGRAM_POINT_TYPE_SHADER = 3; // point (drawn in shader)\n\n// Mixin text label methods\nObject.assign(Points, TextLabels);\n\nObject.assign(Points, {\n name: 'points',\n built_in: true,\n vertex_shader_src: shaderSrc_pointsVertex,\n fragment_shader_src: shaderSrc_pointsFragment,\n collision: true, // style includes a collision pass\n blend: 'overlay', // overlays drawn on top of all other styles, with blending\n\n init(options = {}, extra_attributes = []) {\n Style.init.call(this, options);\n\n var attribs = [\n { name: 'a_position', size: 4, type: gl.SHORT, normalized: false },\n { name: 'a_shape', size: 4, type: gl.SHORT, normalized: false },\n { name: 'a_texcoord', size: 2, type: gl.UNSIGNED_SHORT, normalized: true },\n { name: 'a_offset', size: 2, type: gl.SHORT, normalized: false },\n { name: 'a_color', size: 4, type: gl.UNSIGNED_BYTE, normalized: true }\n ];\n\n if (extra_attributes.length){\n Array.prototype.push.apply(attribs, extra_attributes);\n }\n\n // Feature selection\n this.selection = true;\n attribs.push({ name: 'a_selection_color', size: 4, type: gl.UNSIGNED_BYTE, normalized: true });\n\n // If we're not rendering as overlay, we need a layer attribute\n if (this.blend !== 'overlay') {\n this.defines.TANGRAM_LAYER_ORDER = true;\n }\n\n // texture types\n this.defines.TANGRAM_POINT_TYPE_TEXTURE = TANGRAM_POINT_TYPE_TEXTURE;\n this.defines.TANGRAM_POINT_TYPE_LABEL = TANGRAM_POINT_TYPE_LABEL;\n this.defines.TANGRAM_POINT_TYPE_SHADER = TANGRAM_POINT_TYPE_SHADER;\n\n // if no texture defined, use a shader-drawn point\n if (!this.texture) {\n this.defines.TANGRAM_SHADER_POINT = true;\n attribs.push({ name: 'a_outline_color', size: 4, type: gl.UNSIGNED_BYTE, normalized: true });\n attribs.push({ name: 'a_outline_edge', size: 1, type: gl.FLOAT, normalized: false });\n }\n\n this.vertex_layout = new VertexLayout(attribs);\n\n // Fade out when tile is zooming out, e.g. acting as proxy tiles\n this.defines.TANGRAM_FADE_ON_ZOOM_OUT = true;\n this.defines.TANGRAM_FADE_ON_ZOOM_OUT_RATE = 2; // fade at 2x, e.g. fully transparent at 0.5 zoom level away\n\n // Fade in (depending on tile proxy status)\n if (debugSettings.suppress_label_fade_in === true) {\n this.fade_in_time = 0;\n this.defines.TANGRAM_FADE_IN_RATE = null;\n }\n else {\n this.fade_in_time = 0.15; // time in seconds\n this.defines.TANGRAM_FADE_IN_RATE = 1 / this.fade_in_time;\n }\n\n // Snap points to pixel grid after panning stop\n if (debugSettings.suppress_label_snap_animation !== true) {\n this.defines.TANGRAM_VIEW_PAN_SNAP_RATE = 1 / VIEW_PAN_SNAP_TIME; // inverse time in seconds\n }\n\n this.collision_group_points = this.name+'-points';\n this.collision_group_text = this.name+'-text';\n\n this.reset();\n },\n\n reset () {\n this.queues = {};\n this.resetText();\n this.texture_missing_sprites = {}; // track which missing sprites we've found (reduce dupe log messages)\n },\n\n // Override to queue features instead of processing immediately\n addFeature (feature, draw, context) {\n let tile = context.tile;\n if (tile.generation !== this.generation) {\n return;\n }\n\n // Point styling\n let style = {};\n style.color = this.parseColor(draw.color, context);\n\n // require color or texture\n if (!style.color && !this.texture) {\n return;\n }\n\n // optional sprite\n let sprite_info;\n if (this.hasSprites()) {\n sprite_info = this.parseSprite(draw, context);\n if (sprite_info) {\n style.texcoords = sprite_info.texcoords;\n }\n else {\n return;\n }\n }\n\n // point size defined explicitly, or defaults to sprite size, or generic fallback\n style.size = draw.size;\n if (!style.size) {\n if (sprite_info) {\n style.size = sprite_info.size;\n }\n else {\n style.size = [16, 16];\n }\n }\n else {\n style.size = StyleParser.evalCachedProperty(style.size, context);\n if (typeof style.size === 'number') {\n style.size = [style.size, style.size]; // convert 1d size to 2d\n }\n }\n\n // incorporate outline into size\n if (draw.outline) {\n style.outline_width = StyleParser.evalCachedProperty(draw.outline.width, context) || StyleParser.defaults.outline.width;\n style.outline_color = this.parseColor(draw.outline.color, context);\n }\n\n style.outline_edge_pct = 0;\n if (style.outline_width && style.outline_color) {\n let outline_width = style.outline_width + 1;\n style.size[0] += outline_width; // bump outline by 1px to balance out antialiasing\n style.size[1] += outline_width;\n style.outline_edge_pct = outline_width / Math.min(style.size[0], style.size[1]) * 2; // UV distance at which outline starts\n }\n\n // size will be scaled to 16-bit signed int, so max allowed width + height of 256 pixels\n style.size = [\n Math.min(style.size[0], 256),\n Math.min(style.size[1], 256)\n ];\n\n // Placement strategy\n style.placement = draw.placement;\n style.placement_min_length_ratio = StyleParser.evalCachedProperty(draw.placement_min_length_ratio, context);\n\n // Spacing parameter (in pixels) to equally space points along a line\n if (style.placement === PLACEMENT.SPACED && draw.placement_spacing) {\n style.placement_spacing = StyleParser.evalCachedProperty(draw.placement_spacing, context);\n }\n\n // Angle parameter (can be a number or the string \"auto\")\n style.angle = StyleParser.evalProperty(draw.angle, context) || 0;\n\n // points can be placed off the ground\n style.z = (draw.z && StyleParser.evalCachedDistanceProperty(draw.z, context)) || StyleParser.defaults.z;\n\n style.tile_edges = draw.tile_edges; // usually activated for debugging, or rare visualization needs\n\n style.label_texture = null; // clear out label texture assignment\n\n this.computeLayout(style, feature, draw, context, tile);\n\n // Text styling\n let tf =\n draw.text &&\n draw.text.visible !== false && // explicitly handle `visible` property for nested text\n this.parseTextFeature(feature, draw.text, context, tile);\n\n if (Array.isArray(tf)) {\n tf = null; // NB: boundary labels not supported for point label attachments, should log warning\n log({ level: 'warn', once: true }, `Layer '${draw.layers[draw.layers.length-1]}': ` +\n `cannot use boundary labels (e.g. 'text_source: { left: ..., right: ... }') for 'text' labels attached to 'points'; ` +\n `provided 'text_source' value was '${JSON.stringify(draw.text.text_source)}'`);\n }\n\n if (tf) {\n tf.layout.parent = style; // parent point will apply additional anchor/offset to text\n\n // Text labels have a default priority of 0.5 below their parent point (+0.5, priority is lower-is-better)\n // This can be overriden, as long as it is less than or equal to the default\n tf.layout.priority = draw.text.priority ? Math.max(tf.layout.priority, style.priority + 0.5) : (style.priority + 0.5);\n\n // Text labels attached to points should not be moved into tile\n // (they should stay fixed relative to the point)\n tf.layout.move_into_tile = false;\n\n Collision.addStyle(this.collision_group_text, tile.id);\n }\n\n this.queueFeature({ feature, draw, context, style, text_feature: tf }, tile); // queue the feature for later processing\n\n // Register with collision manager\n Collision.addStyle(this.collision_group_points, tile.id);\n },\n\n hasSprites() {\n return this.texture && Texture.textures[this.texture] && Texture.textures[this.texture].sprites;\n },\n\n getSpriteInfo (sprite) {\n let info = Texture.textures[this.texture].sprites[sprite] && Texture.getSpriteInfo(this.texture, sprite);\n if (sprite && !info) {\n if (!this.texture_missing_sprites[sprite]) { // only log each missing sprite once\n log('debug', `Style: in style '${this.name}', could not find sprite '${sprite}' for texture '${this.texture}'`);\n this.texture_missing_sprites[sprite] = true;\n }\n }\n return info;\n },\n\n parseSprite (draw, context) {\n let sprite = StyleParser.evalProperty(draw.sprite, context);\n let sprite_info = this.getSpriteInfo(sprite) || this.getSpriteInfo(draw.sprite_default);\n return sprite_info;\n },\n\n // Queue features for deferred processing (collect all features first so we can do collision on the whole group)\n queueFeature (q, tile) {\n if (!this.tile_data[tile.id] || !this.queues[tile.id]) {\n this.startData(tile);\n }\n this.queues[tile.id] = this.queues[tile.id] || [];\n this.queues[tile.id].push(q);\n },\n\n // Override\n endData (tile) {\n if (tile.canceled) {\n log('trace', `Style ${this.name}: stop tile build because tile was canceled: ${tile.key}`);\n return Promise.resolve();\n }\n\n let queue = this.queues[tile.id];\n delete this.queues[tile.id];\n\n // For each point feature, create one or more labels\n let text_objs = [];\n let point_objs = [];\n\n queue.forEach(q => {\n let style = q.style;\n let feature = q.feature;\n let geometry = feature.geometry;\n\n let feature_labels = this.buildLabels(style.size, geometry, style);\n for (let i = 0; i < feature_labels.length; i++) {\n let label = feature_labels[i];\n let point_obj = {\n feature,\n draw: q.draw,\n context: q.context,\n style,\n label\n };\n point_objs.push(point_obj);\n\n if (q.text_feature) {\n let text_obj = {\n feature,\n draw: q.text_feature.draw,\n context: q.context,\n text: q.text_feature.text,\n text_settings_key: q.text_feature.text_settings_key,\n layout: q.text_feature.layout,\n point_label: label,\n linked: point_obj // link so text only renders when parent point is placed\n };\n text_objs.push(text_obj);\n\n // Unless text feature is optional, create a two-way link so that parent\n // point will only render when text is also placed\n if (!q.draw.text.optional) {\n point_obj.linked = text_obj; // two-way link\n }\n }\n }\n });\n\n // Collide both points and text, then build features\n return Promise.\n all([\n // Points\n Collision.collide(point_objs, this.collision_group_points, tile.id).then(point_objs => {\n point_objs.forEach(q => {\n this.feature_style = q.style;\n this.feature_style.label = q.label;\n Style.addFeature.call(this, q.feature, q.draw, q.context);\n });\n }),\n // Labels\n this.collideAndRenderTextLabels(tile, this.collision_group_text, text_objs)\n ]).then(([, { labels, texts, textures }]) => {\n // Process labels\n if (labels && texts) {\n // Build queued features\n labels.forEach(q => {\n let text_settings_key = q.text_settings_key;\n let text_info = texts[text_settings_key] && texts[text_settings_key][q.text];\n\n // setup styling object expected by Style class\n let style = this.feature_style;\n style.label = q.label;\n style.size = text_info.size.logical_size;\n style.angle = 0; // text attached to point is always upright\n style.texcoords = text_info.align[q.label.align].texcoords;\n style.label_texture = textures[text_info.align[q.label.align].texture_id];\n\n Style.addFeature.call(this, q.feature, q.draw, q.context);\n });\n }\n this.freeText(tile);\n\n // Finish tile mesh\n return Style.endData.call(this, tile).then(tile_data => {\n // Attach tile-specific label atlas to mesh as a texture uniform\n if (textures && textures.length) {\n tile_data.textures = tile_data.textures || [];\n tile_data.textures.push(...textures); // assign texture ownership to tile\n }\n return tile_data;\n });\n });\n },\n\n _preprocess (draw) {\n draw.color = StyleParser.createColorPropertyCache(draw.color);\n\n if (draw.outline) {\n draw.outline.color = StyleParser.createColorPropertyCache(draw.outline.color);\n draw.outline.width = StyleParser.createPropertyCache(draw.outline.width, v => Array.isArray(v) ? v.map(parseFloat) : parseFloat(v));\n }\n\n draw.z = StyleParser.createPropertyCache(draw.z, StyleParser.parseUnits);\n\n // Size (1d value or 2d array)\n draw.size = StyleParser.createPropertyCache(draw.size, v => Array.isArray(v) ? v.map(parseFloat) : parseFloat(v));\n\n // Offset (2d array)\n draw.offset = StyleParser.createPropertyCache(draw.offset, v => (Array.isArray(v) && v.map(parseFloat)) || 0);\n\n // Buffer (1d value or 2d array, expand 1d to 2d)\n draw.buffer = StyleParser.createPropertyCache(draw.buffer, v => (Array.isArray(v) ? v : [v, v]).map(parseFloat) || 0);\n\n // Repeat rules - no repeat limitation for points by default\n draw.repeat_distance = StyleParser.createPropertyCache(draw.repeat_distance, parseFloat);\n\n // Placement strategies\n draw.placement = PLACEMENT[draw.placement && draw.placement.toUpperCase()];\n if (draw.placement == null) {\n draw.placement = PLACEMENT.VERTEX;\n }\n\n draw.placement_spacing = draw.placement_spacing != null ? draw.placement_spacing : 80; // default spacing\n draw.placement_spacing = StyleParser.createPropertyCache(draw.placement_spacing, parseFloat);\n\n draw.placement_min_length_ratio = draw.placement_min_length_ratio != null ? draw.placement_min_length_ratio : 1;\n draw.placement_min_length_ratio = StyleParser.createPropertyCache(draw.placement_min_length_ratio, parseFloat);\n\n if (typeof draw.angle === 'number') {\n draw.angle = draw.angle * Math.PI / 180;\n }\n else {\n draw.angle = draw.angle || 0; // angle can be a string like \"auto\" (use angle of geometry)\n }\n\n // Optional text styling\n draw.text = this.preprocessText(draw.text); // will return null if valid text styling wasn't provided\n if (draw.text) {\n draw.text.key = draw.key; // copy layer key for use as label repeat group\n draw.text.repeat_group = draw.text.repeat_group || draw.repeat_group; // inherit repeat group by default\n draw.text.anchor = draw.text.anchor || this.default_anchor;\n draw.text.optional = (typeof draw.text.optional === 'boolean') ? draw.text.optional : false; // default text to required\n draw.text.interactive = draw.text.interactive || draw.interactive; // inherits from point\n }\n\n return draw;\n },\n\n // Default to trying all anchor placements\n default_anchor: ['bottom', 'top', 'right', 'left'],\n\n // Compute label layout-related properties\n computeLayout (target, feature, draw, context, tile) {\n let layout = target || {};\n layout.id = feature;\n layout.units_per_pixel = tile.units_per_pixel || 1;\n\n // collision flag\n layout.collide = (draw.collide === false) ? false : true;\n\n // tile boundary handling\n layout.cull_from_tile = (draw.cull_from_tile != null) ? draw.cull_from_tile : false;\n\n // points should not move into tile if over tile boundary\n layout.move_into_tile = false;\n\n // label anchors (point labels only)\n // label position will be adjusted in the given direction, relative to its original point\n // one of: left, right, top, bottom, top-left, top-right, bottom-left, bottom-right\n layout.anchor = draw.anchor;\n\n // label offset and buffer in pixel (applied in screen space)\n layout.offset = StyleParser.evalCachedProperty(draw.offset, context) || StyleParser.zeroPair;\n layout.buffer = StyleParser.evalCachedProperty(draw.buffer, context) || StyleParser.zeroPair;\n\n // repeat rules\n layout.repeat_distance = StyleParser.evalCachedProperty(draw.repeat_distance, context);\n if (layout.repeat_distance) {\n layout.repeat_distance *= layout.units_per_pixel;\n\n if (typeof draw.repeat_group === 'function') {\n layout.repeat_group = draw.repeat_group(context);\n }\n else if (typeof draw.repeat_group === 'string') {\n layout.repeat_group = draw.repeat_group;\n }\n else {\n layout.repeat_group = draw.key; // default to unique set of matching layers\n }\n }\n\n // label priority (lower is higher)\n let priority = draw.priority;\n if (priority != null) {\n if (typeof priority === 'function') {\n priority = priority(context);\n }\n }\n else {\n priority = -1 >>> 0; // default to max priority value if none set\n }\n layout.priority = priority;\n\n return layout;\n },\n\n // Implements label building for TextLabels mixin\n buildTextLabels (tile, feature_queue) {\n let labels = [];\n for (let f=0; f < feature_queue.length; f++) {\n let fq = feature_queue[f];\n let text_info = this.texts[tile.id][fq.text_settings_key][fq.text];\n let size = text_info.size.collision_size;\n fq.label = new LabelPoint(fq.point_label.position, size, fq.layout);\n labels.push(fq);\n }\n return labels;\n },\n\n // Builds one or more point labels for a geometry\n buildLabels (size, geometry, options) {\n let labels = [];\n\n if (geometry.type === \"Point\") {\n labels.push(new LabelPoint(geometry.coordinates, size, options));\n }\n else if (geometry.type === \"MultiPoint\") {\n let points = geometry.coordinates;\n for (let i = 0; i < points.length; ++i) {\n let point = points[i];\n labels.push(new LabelPoint(point, size, options));\n }\n }\n else if (geometry.type === \"LineString\") {\n let line = geometry.coordinates;\n let point_labels = placePointsOnLine(line, size, options);\n for (let i = 0; i < point_labels.length; ++i) {\n labels.push(point_labels[i]);\n }\n }\n else if (geometry.type === \"MultiLineString\") {\n let lines = geometry.coordinates;\n for (let ln = 0; ln < lines.length; ln++) {\n let line = lines[ln];\n let point_labels = placePointsOnLine(line, size, options);\n for (let i = 0; i < point_labels.length; ++i) {\n labels.push(point_labels[i]);\n }\n }\n }\n else if (geometry.type === \"Polygon\") {\n // Point at polygon centroid (of outer ring)\n if (options.placement === PLACEMENT.CENTROID) {\n let centroid = Geo.centroid(geometry.coordinates);\n labels.push(new LabelPoint(centroid, size, options));\n }\n // Point at each polygon vertex (all rings)\n else {\n let rings = geometry.coordinates;\n for (let ln = 0; ln < rings.length; ln++) {\n let point_labels = placePointsOnLine(rings[ln], size, options);\n for (let i = 0; i < point_labels.length; ++i) {\n labels.push(point_labels[i]);\n }\n }\n }\n }\n else if (geometry.type === \"MultiPolygon\") {\n if (options.placement === PLACEMENT.CENTROID) {\n let centroid = Geo.multiCentroid(geometry.coordinates);\n labels.push(new LabelPoint(centroid, size, options));\n }\n else {\n let polys = geometry.coordinates;\n for (let p = 0; p < polys.length; p++) {\n let rings = polys[p];\n for (let ln = 0; ln < rings.length; ln++) {\n let point_labels = placePointsOnLine(rings[ln], size, options);\n for (let i = 0; i < point_labels.length; ++i) {\n labels.push(point_labels[i]);\n }\n }\n }\n }\n }\n\n return labels;\n },\n\n /**\n * A \"template\" that sets constant attibutes for each vertex, which is then modified per vertex or per feature.\n * A plain JS array matching the order of the vertex layout.\n */\n makeVertexTemplate(style) {\n let color = style.color || StyleParser.defaults.color;\n\n // position - x & y coords will be filled in per-vertex below\n this.fillVertexTemplate('a_position', 0, { size: 2 });\n this.fillVertexTemplate('a_position', style.z || 0, { size: 1, offset: 2 });\n // layer order - w coord of 'position' attribute (for packing efficiency)\n this.fillVertexTemplate('a_position', this.scaleOrder(style.order), { size: 1, offset: 3 });\n\n // scaling vector - (x, y) components per pixel, z = angle\n this.fillVertexTemplate('a_shape', 0, { size: 3 }); // NB: w coord is currently unused, change size: 4 if needed\n\n // texture coords\n this.fillVertexTemplate('a_texcoord', 0, { size: 2 });\n\n // offsets\n this.fillVertexTemplate('a_offset', 0, { size: 2 });\n\n // color\n this.fillVertexTemplate('a_color', Vector.mult(color, 255), { size: 4 });\n\n // outline\n if (this.defines.TANGRAM_SHADER_POINT) {\n let outline_color = style.outline_color || StyleParser.defaults.outline.color;\n this.fillVertexTemplate('a_outline_color', Vector.mult(outline_color, 255), { size: 4 });\n this.fillVertexTemplate('a_outline_edge', style.outline_edge_pct || StyleParser.defaults.outline.width, { size: 1 });\n }\n\n // selection color\n if (this.selection) {\n this.fillVertexTemplate('a_selection_color', Vector.mult(style.selection_color, 255), { size: 4 });\n }\n\n return this.vertex_template;\n },\n\n buildQuad(points, size, angle, angles, pre_angles, offset, offsets, texcoord_scale, curve, vertex_data, vertex_template) {\n return buildQuadsForPoints(\n points,\n vertex_data,\n vertex_template,\n {\n texcoord_index: this.vertex_layout.index.a_texcoord,\n position_index: this.vertex_layout.index.a_position,\n shape_index: this.vertex_layout.index.a_shape,\n offset_index: this.vertex_layout.index.a_offset,\n offsets_index: this.vertex_layout.index.a_offsets,\n pre_angles_index: this.vertex_layout.index.a_pre_angles,\n angles_index: this.vertex_layout.index.a_angles\n },\n {\n quad: size,\n quad_normalize: 256, // values have an 8-bit fraction\n offset,\n offsets,\n pre_angles: pre_angles,\n angle: angle * 4096, // values have a 12-bit fraction\n angles: angles,\n curve,\n texcoord_scale,\n texcoord_normalize,\n pre_angles_normalize,\n angles_normalize,\n offsets_normalize\n }\n );\n },\n\n // Build quad for point sprite\n build (style, vertex_data, context) {\n let label = style.label;\n if (label.type === 'curved') {\n return this.buildArticulatedLabel(label, style, vertex_data, context);\n }\n else {\n return this.buildLabel(label, style, vertex_data, context);\n }\n },\n\n buildLabel (label, style, vertex_data, context) {\n let vertex_template = this.makeVertexTemplate(style);\n let angle = label.angle || style.angle;\n\n let size, texcoords;\n if (label.type){\n size = style.size[label.type];\n texcoords = style.texcoords[label.type].texcoord;\n }\n else {\n size = style.size;\n texcoords = style.texcoords;\n }\n\n // re-point to correct label texture\n let mesh_data = this.getTileMesh(context.tile, this.meshVariantTypeForDraw(style));\n vertex_data = mesh_data.vertex_data;\n\n // setup style or label texture if applicable\n mesh_data.uniforms = mesh_data.uniforms || {};\n if (style.label_texture) {\n mesh_data.uniforms.u_texture = style.label_texture;\n mesh_data.uniforms.u_point_type = TANGRAM_POINT_TYPE_LABEL;\n mesh_data.uniforms.u_apply_color_blocks = false;\n }\n else if (this.texture) {\n mesh_data.uniforms.u_texture = this.texture;\n mesh_data.uniforms.u_point_type = TANGRAM_POINT_TYPE_TEXTURE;\n mesh_data.uniforms.u_apply_color_blocks = true;\n }\n else {\n mesh_data.uniforms.u_texture = Texture.default; // ensure a tetxure is always bound to avoid GL warnings ('no texture bound to unit' in Chrome)\n mesh_data.uniforms.u_point_type = TANGRAM_POINT_TYPE_SHADER;\n mesh_data.uniforms.u_apply_color_blocks = true;\n }\n\n let offset = label.offset;\n\n // TODO: instead of passing null, pass arrays with fingerprintable values\n // This value is checked in the shader to determine whether to apply curving logic\n return this.buildQuad(\n [label.position], // position\n size, // size in pixels\n angle, // angle in radians\n null, // placeholder for multiple angles\n null, // placeholder for multiple pre_angles\n offset, // offset from center in pixels\n null, // placeholder for multiple offsets\n texcoords, // texture UVs\n false, // if curved boolean\n vertex_data, vertex_template // VBO and data for current vertex\n );\n },\n\n buildArticulatedLabel (label, style, vertex_data, context) {\n let vertex_template = this.makeVertexTemplate(style);\n let angle = label.angle;\n let geom_count = 0;\n\n // two passes for stroke and fill, where stroke needs to be drawn first (painter's algorithm)\n // this ensures strokes don't overlap on other fills\n\n // pass for stroke\n for (let i = 0; i < label.num_segments; i++){\n let size = style.size[label.type][i];\n let texcoord_stroke = style.texcoords_stroke[i];\n\n // re-point to correct label texture\n style.label_texture = style.label_textures[i];\n let mesh_data = this.getTileMesh(context.tile, this.meshVariantTypeForDraw(style));\n vertex_data = mesh_data.vertex_data;\n\n // add label texture uniform if needed\n mesh_data.uniforms = mesh_data.uniforms || {};\n mesh_data.uniforms.u_texture = style.label_texture;\n mesh_data.uniforms.u_point_type = TANGRAM_POINT_TYPE_LABEL;\n mesh_data.uniforms.u_apply_color_blocks = false;\n\n let offset = label.offset || [0,0];\n let position = label.position;\n\n let angles = label.angles[i];\n let offsets = label.offsets[i];\n let pre_angles = label.pre_angles[i];\n\n geom_count += this.buildQuad(\n [position], // position\n size, // size in pixels\n angle, // angle in degrees\n angles, // angles per segment\n pre_angles, // pre_angle array (rotation applied before offseting)\n offset, // offset from center in pixels\n offsets, // offsets per segment\n texcoord_stroke, // texture UVs for stroked text\n true, // if curved\n vertex_data, vertex_template // VBO and data for current vertex\n );\n }\n\n // pass for fill\n for (let i = 0; i < label.num_segments; i++){\n let size = style.size[label.type][i];\n let texcoord = style.texcoords[label.type][i].texcoord;\n\n // re-point to correct label texture\n style.label_texture = style.label_textures[i];\n let mesh_data = this.getTileMesh(context.tile, this.meshVariantTypeForDraw(style));\n vertex_data = mesh_data.vertex_data;\n\n // add label texture uniform if needed\n mesh_data.uniforms = mesh_data.uniforms || {};\n mesh_data.uniforms.u_texture = style.label_texture;\n mesh_data.uniforms.u_point_type = TANGRAM_POINT_TYPE_LABEL;\n mesh_data.uniforms.u_apply_color_blocks = false;\n\n let offset = label.offset || [0,0];\n let position = label.position;\n\n let angles = label.angles[i];\n let offsets = label.offsets[i];\n let pre_angles = label.pre_angles[i];\n\n geom_count += this.buildQuad(\n [position], // position\n size, // size in pixels\n angle, // angle in degrees\n angles, // angles per segment\n pre_angles, // pre_angle array (rotation applied before offseting)\n offset, // offset from center in pixels\n offsets, // offsets per segment\n texcoord, // texture UVs for fill text\n true, // if curved\n vertex_data, vertex_template // VBO and data for current vertex\n );\n }\n\n return geom_count;\n },\n\n // Override to pass-through to generic point builder\n buildLines (lines, style, vertex_data, context) {\n return this.build(style, vertex_data, context);\n },\n\n buildPoints (points, style, vertex_data, context) {\n return this.build(style, vertex_data, context);\n },\n\n buildPolygons (points, style, vertex_data, context) {\n return this.build(style, vertex_data, context);\n },\n\n // Override\n meshVariantTypeForDraw (draw) {\n // TODO: restore support for varying sprite textures too (?)\n if (draw.label_texture) {\n return draw.label_texture;\n }\n return this.default_mesh_variant;\n },\n\n makeMesh (vertex_data, vertex_elements, options = {}) {\n // Add label fade time\n options = Object.assign({}, options, { fade_in_time: this.fade_in_time });\n return Style.makeMesh.call(this, vertex_data, vertex_elements, options);\n }\n\n});\n", + "// Point + text label rendering style\n\nimport log from '../../utils/log';\nimport {Style} from '../style';\nimport {StyleParser} from '../style_parser';\nimport gl from '../../gl/constants'; // web workers don't have access to GL context, so import all GL constants\nimport VertexLayout from '../../gl/vertex_layout';\nimport {buildQuadsForPoints} from '../../builders/points';\nimport Texture from '../../gl/texture';\nimport Geo from '../../geo';\nimport Vector from '../../vector';\nimport Collision from '../../labels/collision';\nimport LabelPoint from '../../labels/label_point';\nimport placePointsOnLine from '../../labels/point_placement';\nimport {TextLabels} from '../text/text_labels';\nimport {VIEW_PAN_SNAP_TIME} from '../../view';\nimport debugSettings from '../../utils/debug_settings';\n\nlet fs = require('fs');\nconst shaderSrc_pointsVertex = fs.readFileSync(__dirname + '/points_vertex.glsl', 'utf8');\nconst shaderSrc_pointsFragment = fs.readFileSync(__dirname + '/points_fragment.glsl', 'utf8');\n\nconst PLACEMENT = LabelPoint.PLACEMENT;\n\nconst pre_angles_normalize = 128 / Math.PI;\nconst angles_normalize = 16384 / Math.PI;\nconst offsets_normalize = 64;\nconst texcoord_normalize = 65535;\n\nexport var Points = Object.create(Style);\n\n// texture types\nconst TANGRAM_POINT_TYPE_TEXTURE = 1; // style texture/sprites (assigned by user)\nconst TANGRAM_POINT_TYPE_LABEL = 2; // labels (generated by rendering labels to canvas)\nconst TANGRAM_POINT_TYPE_SHADER = 3; // point (drawn in shader)\n\n// Mixin text label methods\nObject.assign(Points, TextLabels);\n\nObject.assign(Points, {\n name: 'points',\n built_in: true,\n vertex_shader_src: shaderSrc_pointsVertex,\n fragment_shader_src: shaderSrc_pointsFragment,\n collision: true, // style includes a collision pass\n blend: 'overlay', // overlays drawn on top of all other styles, with blending\n\n init(options = {}, extra_attributes = []) {\n Style.init.call(this, options);\n\n var attribs = [\n { name: 'a_position', size: 4, type: gl.SHORT, normalized: false },\n { name: 'a_shape', size: 4, type: gl.SHORT, normalized: false },\n { name: 'a_texcoord', size: 2, type: gl.UNSIGNED_SHORT, normalized: true },\n { name: 'a_offset', size: 2, type: gl.SHORT, normalized: false },\n { name: 'a_color', size: 4, type: gl.UNSIGNED_BYTE, normalized: true }\n ];\n\n if (extra_attributes.length){\n Array.prototype.push.apply(attribs, extra_attributes);\n }\n\n // Feature selection\n this.selection = true;\n attribs.push({ name: 'a_selection_color', size: 4, type: gl.UNSIGNED_BYTE, normalized: true });\n\n // If we're not rendering as overlay, we need a layer attribute\n if (this.blend !== 'overlay') {\n this.defines.TANGRAM_LAYER_ORDER = true;\n }\n\n // texture types\n this.defines.TANGRAM_POINT_TYPE_TEXTURE = TANGRAM_POINT_TYPE_TEXTURE;\n this.defines.TANGRAM_POINT_TYPE_LABEL = TANGRAM_POINT_TYPE_LABEL;\n this.defines.TANGRAM_POINT_TYPE_SHADER = TANGRAM_POINT_TYPE_SHADER;\n\n // if no texture defined, use a shader-drawn point\n if (!this.texture) {\n this.defines.TANGRAM_SHADER_POINT = true;\n attribs.push({ name: 'a_outline_color', size: 4, type: gl.UNSIGNED_BYTE, normalized: true });\n attribs.push({ name: 'a_outline_edge', size: 1, type: gl.FLOAT, normalized: false });\n }\n\n this.vertex_layout = new VertexLayout(attribs);\n\n // Fade out when tile is zooming out, e.g. acting as proxy tiles\n this.defines.TANGRAM_FADE_ON_ZOOM_OUT = true;\n this.defines.TANGRAM_FADE_ON_ZOOM_OUT_RATE = 2; // fade at 2x, e.g. fully transparent at 0.5 zoom level away\n\n // Fade in (depending on tile proxy status)\n if (debugSettings.suppress_label_fade_in === true) {\n this.fade_in_time = 0;\n this.defines.TANGRAM_FADE_IN_RATE = null;\n }\n else {\n this.fade_in_time = 0.15; // time in seconds\n this.defines.TANGRAM_FADE_IN_RATE = 1 / this.fade_in_time;\n }\n\n // Snap points to pixel grid after panning stop\n if (debugSettings.suppress_label_snap_animation !== true) {\n this.defines.TANGRAM_VIEW_PAN_SNAP_RATE = 1 / VIEW_PAN_SNAP_TIME; // inverse time in seconds\n }\n\n this.collision_group_points = this.name+'-points';\n this.collision_group_text = this.name+'-text';\n\n this.reset();\n },\n\n reset () {\n this.queues = {};\n this.resetText();\n this.texture_missing_sprites = {}; // track which missing sprites we've found (reduce dupe log messages)\n },\n\n // Override to queue features instead of processing immediately\n addFeature (feature, draw, context) {\n let tile = context.tile;\n if (tile.generation !== this.generation) {\n return;\n }\n\n // Point styling\n let style = {};\n style.color = this.parseColor(draw.color, context);\n\n // require color or texture\n if (!style.color && !this.texture) {\n return;\n }\n\n // optional sprite\n let sprite_info;\n if (this.hasSprites()) {\n sprite_info = this.parseSprite(draw, context);\n if (sprite_info) {\n style.texcoords = sprite_info.texcoords;\n }\n else {\n return;\n }\n }\n\n // point size defined explicitly, or defaults to sprite size, or generic fallback\n style.size = draw.size;\n if (!style.size) {\n if (sprite_info) {\n style.size = sprite_info.size;\n }\n else {\n style.size = [16, 16];\n }\n }\n else {\n style.size = StyleParser.evalCachedProperty(style.size, context);\n if (typeof style.size === 'number') {\n style.size = [style.size, style.size]; // convert 1d size to 2d\n }\n }\n\n // incorporate outline into size\n if (draw.outline) {\n style.outline_width = StyleParser.evalCachedProperty(draw.outline.width, context) || StyleParser.defaults.outline.width;\n style.outline_color = this.parseColor(draw.outline.color, context);\n }\n\n style.outline_edge_pct = 0;\n if (style.outline_width && style.outline_color) {\n let outline_width = style.outline_width;\n style.size[0] += outline_width;\n style.size[1] += outline_width;\n style.outline_edge_pct = outline_width / Math.min(style.size[0], style.size[1]) * 2; // UV distance at which outline starts\n }\n\n // size will be scaled to 16-bit signed int, so max allowed width + height of 256 pixels\n style.size = [\n Math.min(style.size[0], 256),\n Math.min(style.size[1], 256)\n ];\n\n // Placement strategy\n style.placement = draw.placement;\n style.placement_min_length_ratio = StyleParser.evalCachedProperty(draw.placement_min_length_ratio, context);\n\n // Spacing parameter (in pixels) to equally space points along a line\n if (style.placement === PLACEMENT.SPACED && draw.placement_spacing) {\n style.placement_spacing = StyleParser.evalCachedProperty(draw.placement_spacing, context);\n }\n\n // Angle parameter (can be a number or the string \"auto\")\n style.angle = StyleParser.evalProperty(draw.angle, context) || 0;\n\n // points can be placed off the ground\n style.z = (draw.z && StyleParser.evalCachedDistanceProperty(draw.z, context)) || StyleParser.defaults.z;\n\n style.tile_edges = draw.tile_edges; // usually activated for debugging, or rare visualization needs\n\n style.label_texture = null; // clear out label texture assignment\n\n this.computeLayout(style, feature, draw, context, tile);\n\n // Text styling\n let tf =\n draw.text &&\n draw.text.visible !== false && // explicitly handle `visible` property for nested text\n this.parseTextFeature(feature, draw.text, context, tile);\n\n if (Array.isArray(tf)) {\n tf = null; // NB: boundary labels not supported for point label attachments, should log warning\n log({ level: 'warn', once: true }, `Layer '${draw.layers[draw.layers.length-1]}': ` +\n `cannot use boundary labels (e.g. 'text_source: { left: ..., right: ... }') for 'text' labels attached to 'points'; ` +\n `provided 'text_source' value was '${JSON.stringify(draw.text.text_source)}'`);\n }\n\n if (tf) {\n tf.layout.parent = style; // parent point will apply additional anchor/offset to text\n\n // Text labels have a default priority of 0.5 below their parent point (+0.5, priority is lower-is-better)\n // This can be overriden, as long as it is less than or equal to the default\n tf.layout.priority = draw.text.priority ? Math.max(tf.layout.priority, style.priority + 0.5) : (style.priority + 0.5);\n\n // Text labels attached to points should not be moved into tile\n // (they should stay fixed relative to the point)\n tf.layout.move_into_tile = false;\n\n Collision.addStyle(this.collision_group_text, tile.id);\n }\n\n this.queueFeature({ feature, draw, context, style, text_feature: tf }, tile); // queue the feature for later processing\n\n // Register with collision manager\n Collision.addStyle(this.collision_group_points, tile.id);\n },\n\n hasSprites() {\n return this.texture && Texture.textures[this.texture] && Texture.textures[this.texture].sprites;\n },\n\n getSpriteInfo (sprite) {\n let info = Texture.textures[this.texture].sprites[sprite] && Texture.getSpriteInfo(this.texture, sprite);\n if (sprite && !info) {\n if (!this.texture_missing_sprites[sprite]) { // only log each missing sprite once\n log('debug', `Style: in style '${this.name}', could not find sprite '${sprite}' for texture '${this.texture}'`);\n this.texture_missing_sprites[sprite] = true;\n }\n }\n return info;\n },\n\n parseSprite (draw, context) {\n let sprite = StyleParser.evalProperty(draw.sprite, context);\n let sprite_info = this.getSpriteInfo(sprite) || this.getSpriteInfo(draw.sprite_default);\n return sprite_info;\n },\n\n // Queue features for deferred processing (collect all features first so we can do collision on the whole group)\n queueFeature (q, tile) {\n if (!this.tile_data[tile.id] || !this.queues[tile.id]) {\n this.startData(tile);\n }\n this.queues[tile.id] = this.queues[tile.id] || [];\n this.queues[tile.id].push(q);\n },\n\n // Override\n endData (tile) {\n if (tile.canceled) {\n log('trace', `Style ${this.name}: stop tile build because tile was canceled: ${tile.key}`);\n return Promise.resolve();\n }\n\n let queue = this.queues[tile.id];\n delete this.queues[tile.id];\n\n // For each point feature, create one or more labels\n let text_objs = [];\n let point_objs = [];\n\n queue.forEach(q => {\n let style = q.style;\n let feature = q.feature;\n let geometry = feature.geometry;\n\n let feature_labels = this.buildLabels(style.size, geometry, style);\n for (let i = 0; i < feature_labels.length; i++) {\n let label = feature_labels[i];\n let point_obj = {\n feature,\n draw: q.draw,\n context: q.context,\n style,\n label\n };\n point_objs.push(point_obj);\n\n if (q.text_feature) {\n let text_obj = {\n feature,\n draw: q.text_feature.draw,\n context: q.context,\n text: q.text_feature.text,\n text_settings_key: q.text_feature.text_settings_key,\n layout: q.text_feature.layout,\n point_label: label,\n linked: point_obj // link so text only renders when parent point is placed\n };\n text_objs.push(text_obj);\n\n // Unless text feature is optional, create a two-way link so that parent\n // point will only render when text is also placed\n if (!q.draw.text.optional) {\n point_obj.linked = text_obj; // two-way link\n }\n }\n }\n });\n\n // Collide both points and text, then build features\n return Promise.\n all([\n // Points\n Collision.collide(point_objs, this.collision_group_points, tile.id).then(point_objs => {\n point_objs.forEach(q => {\n this.feature_style = q.style;\n this.feature_style.label = q.label;\n Style.addFeature.call(this, q.feature, q.draw, q.context);\n });\n }),\n // Labels\n this.collideAndRenderTextLabels(tile, this.collision_group_text, text_objs)\n ]).then(([, { labels, texts, textures }]) => {\n // Process labels\n if (labels && texts) {\n // Build queued features\n labels.forEach(q => {\n let text_settings_key = q.text_settings_key;\n let text_info = texts[text_settings_key] && texts[text_settings_key][q.text];\n\n // setup styling object expected by Style class\n let style = this.feature_style;\n style.label = q.label;\n style.size = text_info.size.logical_size;\n style.angle = 0; // text attached to point is always upright\n style.texcoords = text_info.align[q.label.align].texcoords;\n style.label_texture = textures[text_info.align[q.label.align].texture_id];\n\n Style.addFeature.call(this, q.feature, q.draw, q.context);\n });\n }\n this.freeText(tile);\n\n // Finish tile mesh\n return Style.endData.call(this, tile).then(tile_data => {\n // Attach tile-specific label atlas to mesh as a texture uniform\n if (tile_data && textures && textures.length) {\n tile_data.textures = tile_data.textures || [];\n tile_data.textures.push(...textures); // assign texture ownership to tile\n }\n return tile_data;\n });\n });\n },\n\n _preprocess (draw) {\n draw.color = StyleParser.createColorPropertyCache(draw.color);\n\n if (draw.outline) {\n draw.outline.color = StyleParser.createColorPropertyCache(draw.outline.color);\n draw.outline.width = StyleParser.createPropertyCache(draw.outline.width, v => Array.isArray(v) ? v.map(parseFloat) : parseFloat(v));\n }\n\n draw.z = StyleParser.createPropertyCache(draw.z, StyleParser.parseUnits);\n\n // Size (1d value or 2d array)\n draw.size = StyleParser.createPropertyCache(draw.size, v => Array.isArray(v) ? v.map(parseFloat) : parseFloat(v));\n\n // Offset (2d array)\n draw.offset = StyleParser.createPropertyCache(draw.offset, v => (Array.isArray(v) && v.map(parseFloat)) || 0);\n\n // Buffer (1d value or 2d array, expand 1d to 2d)\n draw.buffer = StyleParser.createPropertyCache(draw.buffer, v => (Array.isArray(v) ? v : [v, v]).map(parseFloat) || 0);\n\n // Repeat rules - no repeat limitation for points by default\n draw.repeat_distance = StyleParser.createPropertyCache(draw.repeat_distance, parseFloat);\n\n // Placement strategies\n draw.placement = PLACEMENT[draw.placement && draw.placement.toUpperCase()];\n if (draw.placement == null) {\n draw.placement = PLACEMENT.VERTEX;\n }\n\n draw.placement_spacing = draw.placement_spacing != null ? draw.placement_spacing : 80; // default spacing\n draw.placement_spacing = StyleParser.createPropertyCache(draw.placement_spacing, parseFloat);\n\n draw.placement_min_length_ratio = draw.placement_min_length_ratio != null ? draw.placement_min_length_ratio : 1;\n draw.placement_min_length_ratio = StyleParser.createPropertyCache(draw.placement_min_length_ratio, parseFloat);\n\n if (typeof draw.angle === 'number') {\n draw.angle = draw.angle * Math.PI / 180;\n }\n else {\n draw.angle = draw.angle || 0; // angle can be a string like \"auto\" (use angle of geometry)\n }\n\n // Optional text styling\n draw.text = this.preprocessText(draw.text); // will return null if valid text styling wasn't provided\n if (draw.text) {\n draw.text.key = draw.key; // inherits parent properties\n draw.text.group = draw.group;\n draw.text.layers = draw.layers;\n draw.text.order = draw.order;\n draw.text.repeat_group = draw.text.repeat_group || draw.repeat_group;\n draw.text.anchor = draw.text.anchor || this.default_anchor;\n draw.text.optional = (typeof draw.text.optional === 'boolean') ? draw.text.optional : false; // default text to required\n draw.text.interactive = draw.text.interactive || draw.interactive; // inherits from point\n }\n\n return draw;\n },\n\n // Default to trying all anchor placements\n default_anchor: ['bottom', 'top', 'right', 'left'],\n\n // Compute label layout-related properties\n computeLayout (target, feature, draw, context, tile) {\n let layout = target || {};\n layout.id = feature;\n layout.units_per_pixel = tile.units_per_pixel || 1;\n\n // collision flag\n layout.collide = (draw.collide === false) ? false : true;\n\n // tile boundary handling\n layout.cull_from_tile = (draw.cull_from_tile != null) ? draw.cull_from_tile : false;\n\n // points should not move into tile if over tile boundary\n layout.move_into_tile = false;\n\n // label anchors (point labels only)\n // label position will be adjusted in the given direction, relative to its original point\n // one of: left, right, top, bottom, top-left, top-right, bottom-left, bottom-right\n layout.anchor = draw.anchor;\n\n // label offset and buffer in pixel (applied in screen space)\n layout.offset = StyleParser.evalCachedProperty(draw.offset, context) || StyleParser.zeroPair;\n layout.buffer = StyleParser.evalCachedProperty(draw.buffer, context) || StyleParser.zeroPair;\n\n // repeat rules\n layout.repeat_distance = StyleParser.evalCachedProperty(draw.repeat_distance, context);\n if (layout.repeat_distance) {\n layout.repeat_distance *= layout.units_per_pixel;\n\n if (typeof draw.repeat_group === 'function') {\n layout.repeat_group = draw.repeat_group(context);\n }\n else if (typeof draw.repeat_group === 'string') {\n layout.repeat_group = draw.repeat_group;\n }\n else {\n layout.repeat_group = draw.key; // default to unique set of matching layers\n }\n }\n\n // label priority (lower is higher)\n let priority = draw.priority;\n if (priority != null) {\n if (typeof priority === 'function') {\n priority = priority(context);\n }\n }\n else {\n priority = -1 >>> 0; // default to max priority value if none set\n }\n layout.priority = priority;\n\n return layout;\n },\n\n // Implements label building for TextLabels mixin\n buildTextLabels (tile, feature_queue) {\n let labels = [];\n for (let f=0; f < feature_queue.length; f++) {\n let fq = feature_queue[f];\n let text_info = this.texts[tile.id][fq.text_settings_key][fq.text];\n let size = text_info.size.collision_size;\n fq.label = new LabelPoint(fq.point_label.position, size, fq.layout);\n labels.push(fq);\n }\n return labels;\n },\n\n // Builds one or more point labels for a geometry\n buildLabels (size, geometry, options) {\n let labels = [];\n\n if (geometry.type === \"Point\") {\n labels.push(new LabelPoint(geometry.coordinates, size, options));\n }\n else if (geometry.type === \"MultiPoint\") {\n let points = geometry.coordinates;\n for (let i = 0; i < points.length; ++i) {\n let point = points[i];\n labels.push(new LabelPoint(point, size, options));\n }\n }\n else if (geometry.type === \"LineString\") {\n let line = geometry.coordinates;\n let point_labels = placePointsOnLine(line, size, options);\n for (let i = 0; i < point_labels.length; ++i) {\n labels.push(point_labels[i]);\n }\n }\n else if (geometry.type === \"MultiLineString\") {\n let lines = geometry.coordinates;\n for (let ln = 0; ln < lines.length; ln++) {\n let line = lines[ln];\n let point_labels = placePointsOnLine(line, size, options);\n for (let i = 0; i < point_labels.length; ++i) {\n labels.push(point_labels[i]);\n }\n }\n }\n else if (geometry.type === \"Polygon\") {\n // Point at polygon centroid (of outer ring)\n if (options.placement === PLACEMENT.CENTROID) {\n let centroid = Geo.centroid(geometry.coordinates);\n labels.push(new LabelPoint(centroid, size, options));\n }\n // Point at each polygon vertex (all rings)\n else {\n let rings = geometry.coordinates;\n for (let ln = 0; ln < rings.length; ln++) {\n let point_labels = placePointsOnLine(rings[ln], size, options);\n for (let i = 0; i < point_labels.length; ++i) {\n labels.push(point_labels[i]);\n }\n }\n }\n }\n else if (geometry.type === \"MultiPolygon\") {\n if (options.placement === PLACEMENT.CENTROID) {\n let centroid = Geo.multiCentroid(geometry.coordinates);\n labels.push(new LabelPoint(centroid, size, options));\n }\n else {\n let polys = geometry.coordinates;\n for (let p = 0; p < polys.length; p++) {\n let rings = polys[p];\n for (let ln = 0; ln < rings.length; ln++) {\n let point_labels = placePointsOnLine(rings[ln], size, options);\n for (let i = 0; i < point_labels.length; ++i) {\n labels.push(point_labels[i]);\n }\n }\n }\n }\n }\n\n return labels;\n },\n\n /**\n * A \"template\" that sets constant attibutes for each vertex, which is then modified per vertex or per feature.\n * A plain JS array matching the order of the vertex layout.\n */\n makeVertexTemplate(style) {\n let color = style.color || StyleParser.defaults.color;\n\n // position - x & y coords will be filled in per-vertex below\n this.fillVertexTemplate('a_position', 0, { size: 2 });\n this.fillVertexTemplate('a_position', style.z || 0, { size: 1, offset: 2 });\n // layer order - w coord of 'position' attribute (for packing efficiency)\n this.fillVertexTemplate('a_position', this.scaleOrder(style.order), { size: 1, offset: 3 });\n\n // scaling vector - (x, y) components per pixel, z = angle\n this.fillVertexTemplate('a_shape', 0, { size: 3 }); // NB: w coord is currently unused, change size: 4 if needed\n\n // texture coords\n this.fillVertexTemplate('a_texcoord', 0, { size: 2 });\n\n // offsets\n this.fillVertexTemplate('a_offset', 0, { size: 2 });\n\n // color\n this.fillVertexTemplate('a_color', Vector.mult(color, 255), { size: 4 });\n\n // outline\n if (this.defines.TANGRAM_SHADER_POINT) {\n let outline_color = style.outline_color || StyleParser.defaults.outline.color;\n this.fillVertexTemplate('a_outline_color', Vector.mult(outline_color, 255), { size: 4 });\n this.fillVertexTemplate('a_outline_edge', style.outline_edge_pct || StyleParser.defaults.outline.width, { size: 1 });\n }\n\n // selection color\n if (this.selection) {\n this.fillVertexTemplate('a_selection_color', Vector.mult(style.selection_color, 255), { size: 4 });\n }\n\n return this.vertex_template;\n },\n\n buildQuad(points, size, angle, angles, pre_angles, offset, offsets, texcoord_scale, curve, vertex_data, vertex_template) {\n return buildQuadsForPoints(\n points,\n vertex_data,\n vertex_template,\n {\n texcoord_index: this.vertex_layout.index.a_texcoord,\n position_index: this.vertex_layout.index.a_position,\n shape_index: this.vertex_layout.index.a_shape,\n offset_index: this.vertex_layout.index.a_offset,\n offsets_index: this.vertex_layout.index.a_offsets,\n pre_angles_index: this.vertex_layout.index.a_pre_angles,\n angles_index: this.vertex_layout.index.a_angles\n },\n {\n quad: size,\n quad_normalize: 256, // values have an 8-bit fraction\n offset,\n offsets,\n pre_angles: pre_angles,\n angle: angle * 4096, // values have a 12-bit fraction\n angles: angles,\n curve,\n texcoord_scale,\n texcoord_normalize,\n pre_angles_normalize,\n angles_normalize,\n offsets_normalize\n }\n );\n },\n\n // Build quad for point sprite\n build (style, vertex_data, context) {\n let label = style.label;\n if (label.type === 'curved') {\n return this.buildArticulatedLabel(label, style, vertex_data, context);\n }\n else {\n return this.buildLabel(label, style, vertex_data, context);\n }\n },\n\n buildLabel (label, style, vertex_data, context) {\n let vertex_template = this.makeVertexTemplate(style);\n let angle = label.angle || style.angle;\n\n let size, texcoords;\n if (label.type){\n size = style.size[label.type];\n texcoords = style.texcoords[label.type].texcoord;\n }\n else {\n size = style.size;\n texcoords = style.texcoords;\n }\n\n // re-point to correct label texture\n let mesh_data = this.getTileMesh(context.tile, this.meshVariantTypeForDraw(style));\n vertex_data = mesh_data.vertex_data;\n\n // setup style or label texture if applicable\n mesh_data.uniforms = mesh_data.uniforms || {};\n if (style.label_texture) {\n mesh_data.uniforms.u_texture = style.label_texture;\n mesh_data.uniforms.u_point_type = TANGRAM_POINT_TYPE_LABEL;\n mesh_data.uniforms.u_apply_color_blocks = false;\n }\n else if (this.texture) {\n mesh_data.uniforms.u_texture = this.texture;\n mesh_data.uniforms.u_point_type = TANGRAM_POINT_TYPE_TEXTURE;\n mesh_data.uniforms.u_apply_color_blocks = true;\n }\n else {\n mesh_data.uniforms.u_texture = Texture.default; // ensure a tetxure is always bound to avoid GL warnings ('no texture bound to unit' in Chrome)\n mesh_data.uniforms.u_point_type = TANGRAM_POINT_TYPE_SHADER;\n mesh_data.uniforms.u_apply_color_blocks = true;\n }\n\n let offset = label.offset;\n\n // TODO: instead of passing null, pass arrays with fingerprintable values\n // This value is checked in the shader to determine whether to apply curving logic\n return this.buildQuad(\n [label.position], // position\n size, // size in pixels\n angle, // angle in radians\n null, // placeholder for multiple angles\n null, // placeholder for multiple pre_angles\n offset, // offset from center in pixels\n null, // placeholder for multiple offsets\n texcoords, // texture UVs\n false, // if curved boolean\n vertex_data, vertex_template // VBO and data for current vertex\n );\n },\n\n buildArticulatedLabel (label, style, vertex_data, context) {\n let vertex_template = this.makeVertexTemplate(style);\n let angle = label.angle;\n let geom_count = 0;\n\n // two passes for stroke and fill, where stroke needs to be drawn first (painter's algorithm)\n // this ensures strokes don't overlap on other fills\n\n // pass for stroke\n for (let i = 0; i < label.num_segments; i++){\n let size = style.size[label.type][i];\n let texcoord_stroke = style.texcoords_stroke[i];\n\n // re-point to correct label texture\n style.label_texture = style.label_textures[i];\n let mesh_data = this.getTileMesh(context.tile, this.meshVariantTypeForDraw(style));\n vertex_data = mesh_data.vertex_data;\n\n // add label texture uniform if needed\n mesh_data.uniforms = mesh_data.uniforms || {};\n mesh_data.uniforms.u_texture = style.label_texture;\n mesh_data.uniforms.u_point_type = TANGRAM_POINT_TYPE_LABEL;\n mesh_data.uniforms.u_apply_color_blocks = false;\n\n let offset = label.offset || [0,0];\n let position = label.position;\n\n let angles = label.angles[i];\n let offsets = label.offsets[i];\n let pre_angles = label.pre_angles[i];\n\n geom_count += this.buildQuad(\n [position], // position\n size, // size in pixels\n angle, // angle in degrees\n angles, // angles per segment\n pre_angles, // pre_angle array (rotation applied before offseting)\n offset, // offset from center in pixels\n offsets, // offsets per segment\n texcoord_stroke, // texture UVs for stroked text\n true, // if curved\n vertex_data, vertex_template // VBO and data for current vertex\n );\n }\n\n // pass for fill\n for (let i = 0; i < label.num_segments; i++){\n let size = style.size[label.type][i];\n let texcoord = style.texcoords[label.type][i].texcoord;\n\n // re-point to correct label texture\n style.label_texture = style.label_textures[i];\n let mesh_data = this.getTileMesh(context.tile, this.meshVariantTypeForDraw(style));\n vertex_data = mesh_data.vertex_data;\n\n // add label texture uniform if needed\n mesh_data.uniforms = mesh_data.uniforms || {};\n mesh_data.uniforms.u_texture = style.label_texture;\n mesh_data.uniforms.u_point_type = TANGRAM_POINT_TYPE_LABEL;\n mesh_data.uniforms.u_apply_color_blocks = false;\n\n let offset = label.offset || [0,0];\n let position = label.position;\n\n let angles = label.angles[i];\n let offsets = label.offsets[i];\n let pre_angles = label.pre_angles[i];\n\n geom_count += this.buildQuad(\n [position], // position\n size, // size in pixels\n angle, // angle in degrees\n angles, // angles per segment\n pre_angles, // pre_angle array (rotation applied before offseting)\n offset, // offset from center in pixels\n offsets, // offsets per segment\n texcoord, // texture UVs for fill text\n true, // if curved\n vertex_data, vertex_template // VBO and data for current vertex\n );\n }\n\n return geom_count;\n },\n\n // Override to pass-through to generic point builder\n buildLines (lines, style, vertex_data, context) {\n return this.build(style, vertex_data, context);\n },\n\n buildPoints (points, style, vertex_data, context) {\n return this.build(style, vertex_data, context);\n },\n\n buildPolygons (points, style, vertex_data, context) {\n return this.build(style, vertex_data, context);\n },\n\n // Override\n meshVariantTypeForDraw (draw) {\n // TODO: restore support for varying sprite textures too (?)\n if (draw.label_texture) {\n return draw.label_texture;\n }\n return this.default_mesh_variant;\n },\n\n makeMesh (vertex_data, vertex_elements, options = {}) {\n // Add label fade time\n options = Object.assign({}, options, { fade_in_time: this.fade_in_time });\n return Style.makeMesh.call(this, vertex_data, vertex_elements, options);\n }\n\n});\n", "// Polygon rendering style\n\nimport {Style} from '../style';\nimport {StyleParser} from '../style_parser';\nimport gl from '../../gl/constants'; // web workers don't have access to GL context, so import all GL constants\nimport VertexLayout from '../../gl/vertex_layout';\nimport {buildPolygons, buildExtrudedPolygons} from '../../builders/polygons';\nimport Geo from '../../geo';\n\nlet fs = require('fs');\nexport const shaderSrc_polygonsVertex = fs.readFileSync(__dirname + '/polygons_vertex.glsl', 'utf8');\nexport const shaderSrc_polygonsFragment = fs.readFileSync(__dirname + '/polygons_fragment.glsl', 'utf8');\n\nexport var Polygons = Object.create(Style);\n\nObject.assign(Polygons, {\n name: 'polygons',\n built_in: true,\n vertex_shader_src: shaderSrc_polygonsVertex,\n fragment_shader_src: shaderSrc_polygonsFragment,\n\n init() {\n Style.init.apply(this, arguments);\n\n // Basic attributes, others can be added (see texture UVs below)\n var attribs = [\n { name: 'a_position', size: 4, type: gl.SHORT, normalized: false },\n { name: 'a_normal', size: 3, type: gl.BYTE, normalized: true }, // gets padded to 4-bytes\n { name: 'a_color', size: 4, type: gl.UNSIGNED_BYTE, normalized: true }\n ];\n\n // Tell the shader we have a normal and order attributes\n this.defines.TANGRAM_NORMAL_ATTRIBUTE = true;\n this.defines.TANGRAM_LAYER_ORDER = true;\n\n // Feature selection\n this.selection = true;\n attribs.push({ name: 'a_selection_color', size: 4, type: gl.UNSIGNED_BYTE, normalized: true });\n\n // Optional texture UVs\n if (this.texcoords) {\n this.defines.TANGRAM_TEXTURE_COORDS = true;\n\n // Add vertex attribute for UVs only when needed\n attribs.push({ name: 'a_texcoord', size: 2, type: gl.UNSIGNED_SHORT, normalized: true });\n }\n\n this.vertex_layout = new VertexLayout(attribs);\n },\n\n _parseFeature (feature, draw, context) {\n var style = this.feature_style;\n\n style.color = this.parseColor(draw.color, context);\n if (!style.color) {\n return null;\n }\n\n style.z = (draw.z && StyleParser.evalCachedDistanceProperty(draw.z, context)) || StyleParser.defaults.z;\n style.z *= Geo.height_scale; // provide sub-meter precision of height values\n\n style.extrude = StyleParser.evalProperty(draw.extrude, context);\n if (style.extrude) {\n // use feature's height and min_height properties\n if (style.extrude === true) {\n style.height = feature.properties.height || StyleParser.defaults.height;\n style.min_height = feature.properties.min_height || StyleParser.defaults.min_height;\n\n }\n // explicit height, no min_height\n else if (typeof style.extrude === 'number') {\n style.height = style.extrude;\n style.min_height = 0;\n }\n // explicit height and min_height\n else if (Array.isArray(style.extrude)) {\n style.min_height = style.extrude[0];\n style.height = style.extrude[1];\n }\n\n style.height *= Geo.height_scale; // provide sub-meter precision of height values\n style.min_height *= Geo.height_scale;\n }\n\n style.tile_edges = draw.tile_edges; // usually activated for debugging, or rare visualization needs\n\n return style;\n },\n\n _preprocess (draw) {\n draw.color = StyleParser.createColorPropertyCache(draw.color);\n draw.z = StyleParser.createPropertyCache(draw.z, StyleParser.parseUnits);\n return draw;\n },\n\n /**\n * A \"template\" that sets constant attibutes for each vertex, which is then modified per vertex or per feature.\n * A plain JS array matching the order of the vertex layout.\n */\n makeVertexTemplate(style) {\n let i = 0;\n\n // position - x & y coords will be filled in per-vertex below\n this.vertex_template[i++] = 0;\n this.vertex_template[i++] = 0;\n this.vertex_template[i++] = style.z || 0;\n\n // layer order - w coord of 'position' attribute (for packing efficiency)\n this.vertex_template[i++] = this.scaleOrder(style.order);\n\n // normal\n this.vertex_template[i++] = 0;\n this.vertex_template[i++] = 0;\n this.vertex_template[i++] = 1 * 127;\n\n // color\n this.vertex_template[i++] = style.color[0] * 255;\n this.vertex_template[i++] = style.color[1] * 255;\n this.vertex_template[i++] = style.color[2] * 255;\n this.vertex_template[i++] = style.color[3] * 255;\n\n // selection color\n if (this.selection) {\n this.vertex_template[i++] = style.selection_color[0] * 255;\n this.vertex_template[i++] = style.selection_color[1] * 255;\n this.vertex_template[i++] = style.selection_color[2] * 255;\n this.vertex_template[i++] = style.selection_color[3] * 255;\n }\n\n // Add texture UVs to template only if needed\n if (this.texcoords) {\n this.vertex_template[i++] = 0;\n this.vertex_template[i++] = 0;\n }\n\n return this.vertex_template;\n },\n\n buildPolygons(polygons, style, vertex_data, context) {\n let vertex_template = this.makeVertexTemplate(style);\n let options = {\n texcoord_index: this.vertex_layout.index.a_texcoord,\n texcoord_normalize: 65535, // scale UVs to unsigned shorts\n remove_tile_edges: !style.tile_edges,\n tile_edge_tolerance: Geo.tile_scale * context.tile.pad_scale * 4,\n winding: context.winding\n };\n\n // Extruded polygons (e.g. 3D buildings)\n if (style.extrude && style.height) {\n return buildExtrudedPolygons(\n polygons,\n style.z, style.height, style.min_height,\n vertex_data, vertex_template,\n this.vertex_layout.index.a_normal,\n 127, // scale normals to signed bytes\n options\n );\n }\n // Regular polygons\n else {\n return buildPolygons(\n polygons,\n vertex_data, vertex_template,\n options\n );\n }\n }\n\n});\n", "// Raster tile rendering style\n\nimport {StyleParser} from '../style_parser';\nimport {Polygons} from '../polygons/polygons';\n\nexport let RasterStyle = Object.create(Polygons);\n\nObject.assign(RasterStyle, {\n name: 'raster',\n super: Polygons,\n built_in: true,\n\n init() {\n // Required for raster tiles\n this.raster = this.raster || 'color';\n\n this.super.init.apply(this, arguments);\n\n this.selection = false; // raster styles can't support feature selection\n },\n\n _preprocess (draw) {\n // Raster tiles default to white vertex color, as this color will tint the underlying texture\n draw.color = draw.color || StyleParser.defaults.color;\n return this.super._preprocess.apply(this, arguments);\n }\n\n});\n", - "// Rendering styles\n\nimport {StyleParser} from './style_parser';\nimport FeatureSelection from '../selection';\nimport ShaderProgram from '../gl/shader_program';\nimport VBOMesh from '../gl/vbo_mesh';\nimport Texture from '../gl/texture';\nimport Material from '../material';\nimport Light from '../light';\nimport {RasterTileSource} from '../sources/raster';\nimport log from '../utils/log';\nimport mergeObjects from '../utils/merge';\nimport Thread from '../utils/thread';\nimport WorkerBroker from '../utils/worker_broker';\nimport debugSettings from '../utils/debug_settings';\n\nlet fs = require('fs');\nconst shaderSrc_selectionFragment = fs.readFileSync(__dirname + '/../gl/shaders/selection_fragment.glsl', 'utf8');\nconst shaderSrc_rasters = fs.readFileSync(__dirname + '/../gl/shaders/rasters.glsl', 'utf8');\n\n// Base class\n\nexport var Style = {\n init ({ generation, styles, sources = {}, introspection } = {}) {\n this.setGeneration(generation);\n this.styles = styles; // styles for scene\n this.sources = sources; // data sources for scene\n this.defines = (this.hasOwnProperty('defines') && this.defines) || {}; // #defines to be injected into the shaders\n this.shaders = (this.hasOwnProperty('shaders') && this.shaders) || {}; // shader customization (uniforms, defines, blocks, etc.)\n this.introspection = introspection || false;\n this.selection = this.selection || this.introspection || false; // flag indicating if this style supports feature selection\n this.compile_setup = false; // one-time setup steps for program compilation\n this.program = null; // GL program reference (for main render pass)\n this.selection_program = null; // GL program reference for feature selection render pass\n this.feature_style = {}; // style for feature currently being parsed, shared to lessen GC/memory thrash\n this.vertex_template = []; // shared single-vertex template, filled out by each style\n this.tile_data = {};\n\n // Default world coords to wrap every 100,000 meters, can turn off by setting this to 'false'\n this.defines.TANGRAM_WORLD_POSITION_WRAP = 100000;\n\n // Blending\n this.blend = this.blend || 'opaque'; // default: opaque styles are drawn first, without blending\n this.defines[`TANGRAM_BLEND_${this.blend.toUpperCase()}`] = true;\n if (this.blend_order == null) { // controls order of rendering for styles w/non-opaque blending\n this.blend_order = -1; // defaults to first\n }\n\n this.removeShaderBlock('setup'); // clear before material injection\n\n // If the style defines its own material, replace the inherited material instance\n if (!(this.material instanceof Material)) {\n if (!Material.isValid(this.material)) {\n this.material = StyleParser.defaults.material;\n }\n this.material = new Material(this.material);\n }\n this.material.inject(this);\n\n // Set lighting mode: fragment, vertex, or none (specified as 'false')\n Light.setMode(this.lighting, this);\n\n // Setup raster samplers if needed\n this.setupRasters();\n\n this.initialized = true;\n },\n\n destroy () {\n if (this.program) {\n this.program.destroy();\n this.program = null;\n }\n\n if (this.selection_program) {\n this.selection_program.destroy();\n this.selection_program = null;\n }\n\n WorkerBroker.removeTarget(this.main_thread_target);\n this.gl = null;\n this.initialized = false;\n },\n\n reset () {\n },\n\n baseStyle () {\n return this.base || this.name;\n },\n\n setGeneration (generation) {\n // Scene generation id this style was created for\n this.generation = generation;\n\n // Provide a hook for this object to be called from worker threads\n this.main_thread_target = ['Style', this.name, this.generation].join('/');\n if (Thread.is_main) {\n WorkerBroker.addTarget(this.main_thread_target, this);\n }\n },\n\n fillVertexTemplate(attribute, value, { size, offset }) {\n offset = (offset === undefined) ? 0 : offset;\n\n let index = this.vertex_layout.index[attribute];\n if (index === undefined) {\n log('warn', `Style: in style '${this.name}', no index found in vertex layout for attribute '${attribute}'`);\n return;\n }\n\n for (let i = 0; i < size; ++i) {\n let v = value.length > i ? value[i] : value;\n this.vertex_template[index + i + offset] = v;\n }\n },\n\n /*** Style parsing and geometry construction ***/\n\n // Returns an object to hold feature data (for a tile or other object)\n startData (tile) {\n this.tile_data[tile.id] = this.tile_data[tile.id] || {\n meshes: {},\n uniforms: {},\n textures: []\n };\n },\n\n // Finalizes an object holding feature data (for a tile or other object)\n endData (tile) {\n var tile_data = this.tile_data[tile.id];\n this.tile_data[tile.id] = null;\n\n if (tile_data && Object.keys(tile_data.meshes).length > 0) {\n for (let variant in tile_data.meshes) {\n let mesh = tile_data.meshes[variant];\n\n // Remove empty mesh variants\n if (mesh.vertex_data.vertex_count === 0) {\n delete tile_data.meshes[variant];\n continue;\n }\n\n // Only keep final byte buffer\n mesh.vertex_data.end();\n mesh.vertex_elements = mesh.vertex_data.element_buffer;\n mesh.vertex_data = mesh.vertex_data.vertex_buffer; // convert from instance to raw typed array\n }\n\n // Load raster tiles passed from data source\n // Blocks mesh completion to avoid flickering\n return this.buildRasterTextures(tile, tile_data).then(() => tile_data);\n }\n else {\n return Promise.resolve(null); // don't send tile data back if doesn't have geometry\n }\n },\n\n // Has mesh data for a given tile?\n hasDataForTile (tile) {\n return this.tile_data[tile.id] != null;\n },\n\n getTileMesh (tile, variant) {\n let meshes = this.tile_data[tile.id].meshes;\n if (meshes[variant] == null) {\n meshes[variant] = {\n variant,\n vertex_data: this.vertexLayoutForMeshVariant(variant).createVertexData()\n };\n }\n return meshes[variant];\n },\n\n vertexLayoutForMeshVariant (variant) {\n return this.vertex_layout;\n },\n\n default_mesh_variant: 0,\n meshVariantTypeForDraw (draw) {\n return this.default_mesh_variant;\n },\n\n addFeature (feature, draw, context) {\n let tile = context.tile;\n if (tile.generation !== this.generation) {\n return;\n }\n\n if (!this.tile_data[tile.id]) {\n this.startData(tile);\n }\n\n let style = this.parseFeature(feature, draw, context);\n if (!style) {\n return; // skip feature\n }\n\n let vertex_data = this.getTileMesh(tile, this.meshVariantTypeForDraw(style)).vertex_data;\n this.buildGeometry(feature.geometry, style, vertex_data, context);\n },\n\n buildGeometry (geometry, style, vertex_data, context) {\n let geom_count;\n if (geometry.type === 'Polygon') {\n geom_count = this.buildPolygons([geometry.coordinates], style, vertex_data, context);\n }\n else if (geometry.type === 'MultiPolygon') {\n geom_count = this.buildPolygons(geometry.coordinates, style, vertex_data, context);\n }\n else if (geometry.type === 'LineString') {\n geom_count = this.buildLines([geometry.coordinates], style, vertex_data, context);\n }\n else if (geometry.type === 'MultiLineString') {\n geom_count = this.buildLines(geometry.coordinates, style, vertex_data, context);\n }\n else if (geometry.type === 'Point') {\n geom_count = this.buildPoints([geometry.coordinates], style, vertex_data, context);\n }\n else if (geometry.type === 'MultiPoint') {\n geom_count = this.buildPoints(geometry.coordinates, style, vertex_data, context);\n }\n\n // Optionally collect per-layer stats\n if (geom_count > 0 && debugSettings.layer_stats) {\n let tile = context.tile;\n tile.debug.layers = tile.debug.layers || { list: {}, tree: {} };\n let list = tile.debug.layers.list;\n let tree = tile.debug.layers.tree;\n let ftree = {}; // tree of layers for this feature\n context.layers.forEach(layer => {\n addLayerDebugEntry(list, layer, 1, geom_count, {[this.name]: geom_count}, {[this.baseStyle()]: geom_count});\n\n let node = tree;\n let fnode = ftree;\n let levels = layer.split(':');\n for (let i=0; i < levels.length; i++) {\n let level = levels[i];\n node[level] = node[level] || { features: 0, geoms: 0, styles: {}, base: {} };\n\n if (fnode[level] == null) { // only count each layer level once per feature\n fnode[level] = {};\n addLayerDebugEntry(node, level, 1, geom_count, {[this.name]: geom_count}, {[this.baseStyle()]: geom_count});\n }\n\n if (i < levels.length - 1) {\n node[level].layers = node[level].layers || {};\n }\n node = node[level].layers;\n fnode = fnode[level];\n }\n });\n }\n\n return geom_count;\n },\n\n parseFeature (feature, draw, context) {\n try {\n var style = this.feature_style;\n\n // Calculate order\n style.order = this.parseOrder(draw.order, context);\n if (style.order == null && this.blend !== 'overlay') {\n let msg = `Layer '${draw.layers.join(', ')}', draw group '${draw.group}': `;\n msg += `'order' parameter is required unless blend mode is 'overlay'`;\n if (draw.order != null) {\n msg += `; 'order' was set to a dynamic value (e.g. string tied to feature property, `;\n msg += `or JS function), but evaluated to null for one or more features`;\n }\n log({ level: 'warn', once: true }, msg);\n return;\n }\n\n // Subclass implementation\n style = this._parseFeature(feature, draw, context);\n if (!style) {\n return; // skip feature\n }\n\n // Feature selection (only if feature is marked as interactive, and style supports it)\n if (this.selection) {\n style.interactive = StyleParser.evalProperty(this.introspection || draw.interactive, context);\n }\n else {\n style.interactive = false;\n }\n\n if (style.interactive === true) {\n style.selection_color = FeatureSelection.makeColor(feature, context.tile, context);\n }\n else {\n style.selection_color = FeatureSelection.defaultColor;\n }\n\n return style;\n }\n catch(error) {\n log('error', 'Style.parseFeature: style parsing error', feature, style, error.stack);\n }\n },\n\n _parseFeature (feature, draw, context) {\n return this.feature_style;\n },\n\n preprocess (draw) {\n // Preprocess first time\n if (!draw.preprocessed) {\n // Apply draw defaults\n if (this.draw) {\n // Merge each property separately to avoid modifying `draw` instance identity\n for (let param in this.draw) {\n let val = this.draw[param];\n if (typeof val === 'object' && !Array.isArray(val)) { // nested param (e.g. `outline`)\n draw[param] = mergeObjects({}, val, draw[param]);\n }\n else if (draw[param] == null) { // simple param (single scalar value or array)\n draw[param] = val;\n }\n }\n }\n\n draw = this._preprocess(draw); // optional subclass implementation\n if (!draw) {\n return;\n }\n draw.preprocessed = true;\n }\n return draw;\n },\n\n // optionally implemented by subclass\n _preprocess (draw) {\n return draw;\n },\n\n // Parse an order value\n parseOrder (order, context) {\n // Calculate order if it was not cached\n if (typeof order !== 'number') {\n return StyleParser.calculateOrder(order, context);\n }\n return order;\n },\n\n // Expand final precision for half-layers (for outlines)\n scaleOrder (order) {\n return order * 2;\n },\n\n // Parse a color of choose a default if acceptable, return undefined if color missing\n parseColor(color, context) {\n // Need either a color, or a shader block for 'color' or 'filter'\n if (color) {\n return StyleParser.evalCachedColorProperty(color, context);\n }\n else if (this.shaders.blocks.color || this.shaders.blocks.filter) {\n return StyleParser.defaults.color;\n }\n },\n\n // Build functions are no-ops until overriden\n buildPolygons () { return 0; },\n buildLines () { return 0; },\n buildPoints () { return 0; },\n\n\n /*** GL state and rendering ***/\n\n setGL (gl) {\n this.gl = gl;\n this.max_texture_size = Texture.getMaxTextureSize(this.gl);\n },\n\n makeMesh (vertex_data, vertex_elements, options = {}) {\n let vertex_layout = this.vertexLayoutForMeshVariant(options.variant);\n return new VBOMesh(this.gl, vertex_data, vertex_elements, vertex_layout, options);\n },\n\n render (mesh) {\n return mesh.render();\n },\n\n // Get a specific program, compiling if necessary\n getProgram (key = 'program') {\n this.compileSetup();\n\n const program = this[key];\n if (!program || program.error) {\n return;\n }\n\n if (!program.compiled) {\n log('debug', `Compiling style '${this.name}', program key '${key}'`);\n try {\n program.compile();\n }\n catch(e) {\n log('error', `Style: error compiling program for style '${this.name}' (program key '${key}')`, this, e.stack);\n }\n }\n return program;\n },\n\n // One-time setup for compiling style's programs\n compileSetup () {\n if (this.compile_setup) {\n return;\n }\n\n if (!this.gl) {\n throw(new Error(`style.compile(): skipping for ${this.name} because no GL context`));\n }\n\n // Build defines & for selection (need to create a new object since the first is stored as a reference by the program)\n var defines = this.buildDefineList();\n if (this.selection) {\n var selection_defines = Object.assign({}, defines);\n selection_defines.TANGRAM_FEATURE_SELECTION = true;\n }\n\n // Shader blocks\n var blocks = (this.shaders && this.shaders.blocks);\n var block_scopes = (this.shaders && this.shaders.block_scopes);\n\n // Uniforms\n var uniforms = Object.assign({}, this.shaders && this.shaders.uniforms);\n for (let u in uniforms) { // validate uniforms\n if (uniforms[u] == null) {\n log({ level: 'warn', once: true }, `Style '${this.name}' has invalid uniform '${u}': uniform values must be non-null`);\n }\n }\n\n // Accept a single extension, or an array of extensions\n var extensions = (this.shaders && this.shaders.extensions);\n if (typeof extensions === 'string') {\n extensions = [extensions];\n }\n\n // Create shaders\n this.program = new ShaderProgram(\n this.gl,\n this.vertex_shader_src,\n this.fragment_shader_src,\n {\n name: this.name,\n defines,\n uniforms,\n blocks,\n block_scopes,\n extensions\n }\n );\n\n if (this.selection) {\n this.selection_program = new ShaderProgram(\n this.gl,\n this.vertex_shader_src,\n shaderSrc_selectionFragment,\n {\n name: (this.name + ' (selection)'),\n defines: selection_defines,\n uniforms,\n blocks,\n block_scopes,\n extensions\n }\n );\n }\n else {\n this.selection_program = null;\n }\n\n this.compile_setup = true;\n },\n\n // Add a shader block\n addShaderBlock (key, block, scope = null) {\n this.shaders.blocks = this.shaders.blocks || {};\n this.shaders.blocks[key] = this.shaders.blocks[key] || [];\n this.shaders.blocks[key].push(block);\n\n this.shaders.block_scopes = this.shaders.block_scopes || {};\n this.shaders.block_scopes[key] = this.shaders.block_scopes[key] || [];\n this.shaders.block_scopes[key].push(scope);\n },\n\n // Remove all shader blocks for key\n removeShaderBlock (key) {\n if (this.shaders.blocks) {\n this.shaders.blocks[key] = null;\n }\n },\n\n replaceShaderBlock (key, block, scope = null) {\n this.removeShaderBlock(key);\n this.addShaderBlock(key, block, scope);\n },\n\n /** TODO: could probably combine and generalize this with similar method in ShaderProgram\n * (list of define objects that inherit from each other)\n */\n buildDefineList () {\n // Add any custom defines to built-in style defines\n var defines = {}; // create a new object to avoid mutating a prototype value that may be shared with other styles\n if (this.defines != null) {\n for (var d in this.defines) {\n defines[d] = this.defines[d];\n }\n }\n if (this.shaders != null && this.shaders.defines != null) {\n for (d in this.shaders.defines) {\n defines[d] = this.shaders.defines[d];\n }\n }\n return defines;\n\n },\n\n // Determines if 'raster' parameter is set to a valid value\n hasRasters () {\n return (['color', 'normal', 'custom'].indexOf(this.raster) > -1);\n },\n\n // Setup raster access in shaders\n setupRasters () {\n if (!this.hasRasters()) {\n return;\n }\n\n // Enable raster textures and configure how first raster is applied\n if (this.raster === 'color') {\n this.defines.TANGRAM_RASTER_TEXTURE_COLOR = true;\n }\n else if (this.raster === 'normal') {\n this.defines.TANGRAM_RASTER_TEXTURE_NORMAL = true;\n }\n // else custom raster (samplers will be made available but not automatically applied)\n\n // A given style may be built with multiple data sources, each of which may attach\n // a variable number of raster sources (0 to N, where N is the max number of raster sources\n // defined for the scene). This means we don't know *which* or *how many* rasters will be\n // bound now, at initial compile-time; we only know this at geometry build-time. To ensure\n // that we can bind as many raster sources as needed, we declare our uniform arrays to hold\n // the maximum number of possible sources. At render time, only the necessary number of rasters\n // are bound (the remaining slots aren't intended to be accessed).\n let num_raster_sources =\n Object.keys(this.sources)\n .filter(s => this.sources[s] instanceof RasterTileSource)\n .length;\n\n this.defines.TANGRAM_NUM_RASTER_SOURCES = `${num_raster_sources}`; // force to string to avoid auto-float conversion\n if (num_raster_sources > 0) {\n // Use model position of tile's coordinate zoom for raster tile texture UVs\n this.defines.TANGRAM_MODEL_POSITION_BASE_ZOOM_VARYING = true;\n\n // Uniforms and macros for raster samplers\n this.replaceShaderBlock('raster', shaderSrc_rasters, 'Raster');\n }\n },\n\n // Load raster tile textures and set uniforms\n buildRasterTextures (tile, tile_data) {\n if (!this.hasRasters()) {\n return Promise.resolve(tile_data);\n }\n\n let configs = {}; // texture configs to pass to texture builder, keyed by texture name\n let index = {}; // index into raster sampler array, keyed by texture name\n\n // TODO: data source could retrieve raster texture URLs\n tile.rasters.map(r => this.sources[r]).filter(x => x).forEach((source, i) => {\n if (source instanceof RasterTileSource) {\n let config = source.tileTexture(tile);\n configs[config.url] = config;\n index[config.url] = i;\n }\n });\n\n if (Object.keys(configs).length === 0) {\n return Promise.resolve(tile_data);\n }\n\n // Load textures on main thread and return when done\n // We want to block the building of a raster tile mesh until its texture is loaded,\n // to avoid flickering while loading (texture will render as black)\n return WorkerBroker.postMessage(this.main_thread_target+'.loadTextures', configs)\n .then(textures => {\n if (!textures || textures.length < 1) {\n // TODO: warning\n return tile_data;\n }\n\n // Set texture uniforms (returned after loading from main thread)\n tile_data.uniforms = tile_data.uniforms || {};\n tile_data.textures = tile_data.textures || [];\n\n let u_samplers = tile_data.uniforms['u_rasters'] = [];\n let u_sizes = tile_data.uniforms['u_raster_sizes'] = [];\n let u_offsets = tile_data.uniforms['u_raster_offsets'] = [];\n\n textures.forEach(([tname, twidth, theight]) => {\n let i = index[tname];\n let raster_coords = configs[tname].coords; // tile coords of raster tile\n\n u_samplers[i] = tname;\n tile_data.textures.push(tname);\n\n u_sizes[i] = [twidth, theight];\n\n // Tile geometry may be at a higher zoom than the raster tile texture,\n // (e.g. an overzoomed raster tile), in which case we need to adjust the\n // raster texture UVs to offset to the appropriate starting point for\n // this geometry tile.\n if (tile.coords.z > raster_coords.z) {\n let dz = tile.coords.z - raster_coords.z; // # of levels raster source is overzoomed\n let dz2 = Math.pow(2, dz);\n u_offsets[i] = [\n (((tile.coords.x % dz2) + dz2) % dz2) / dz2, // double-modulo to handle negative (wrapped) tile coords\n (dz2 - 1 - (tile.coords.y % dz2)) / dz2, // GL texture coords are +Y up\n 1 / dz2\n ];\n }\n else {\n u_offsets[i] = [0, 0, 1];\n }\n });\n\n return tile_data;\n }\n );\n },\n\n // Called on main thread\n loadTextures (textures) {\n // NB: only return name and size of textures loaded, because we can't send actual texture objects to worker\n return Texture.createFromObject(this.gl, textures)\n .then(() => {\n return Promise.all(Object.keys(textures).map(t => {\n return Texture.textures[t] && Texture.textures[t].load();\n }).filter(x => x));\n })\n .then(textures => {\n textures.forEach(t => t.retain());\n return textures.map(t => [t.name, t.width, t.height]);\n });\n },\n\n // Setup any GL state for rendering\n setup () {\n this.setUniforms();\n this.material.setupProgram(ShaderProgram.current);\n },\n\n // Set style uniforms on currently bound program\n setUniforms () {\n var program = ShaderProgram.current;\n if (!program) {\n return;\n }\n\n program.setUniforms(this.shaders && this.shaders.uniforms, true); // reset texture unit to 0\n },\n\n // Render state settings by blend mode\n render_states: {\n opaque: { depth_test: true, depth_write: true },\n add: { depth_test: true, depth_write: false },\n multiply: { depth_test: true, depth_write: false },\n inlay: { depth_test: true, depth_write: false },\n overlay: { depth_test: false, depth_write: false }\n },\n\n // Default sort order for blend modes\n default_blend_orders: {\n opaque: 0,\n add: 1,\n multiply: 2,\n inlay: 3,\n overlay: 4\n },\n\n // Comparison function for sorting styles by blend\n blendOrderSort (a, b) {\n // opaque always comes first\n if (a.blend === 'opaque' || b.blend === 'opaque') {\n if (a.blend === 'opaque' && b.blend === 'opaque') { // if both are opaque\n return a.name < b.name ? -1 : 1; // use name as tie breaker\n }\n else if (a.blend === 'opaque') {\n return -1; // only `a` was opaque\n }\n else {\n return 1; // only `b` was opaque\n }\n }\n\n // use explicit blend order if possible\n if (a.blend_order < b.blend_order) {\n return -1;\n }\n else if (a.blend_order > b.blend_order) {\n return 1;\n }\n\n // if blend orders are equal, use default order by blend mode\n if (Style.default_blend_orders[a.blend] < Style.default_blend_orders[b.blend]) {\n return -1;\n }\n else if (Style.default_blend_orders[a.blend] > Style.default_blend_orders[b.blend]) {\n return 1;\n }\n\n return a.name < b.name ? -1 : 1; // use name as tie breaker\n }\n\n};\n\n// add feature and geometry counts for a single layer\nexport function addLayerDebugEntry (target, layer, faeture_count, geom_count, styles, bases) {\n target[layer] = target[layer] || { features: 0, geoms: 0, styles: {}, base: {} };\n target[layer].features += faeture_count; // feature count\n target[layer].geoms += geom_count; // geometry count\n\n // geometry count by style\n for (let style in styles) {\n target[layer].styles[style] = target[layer].styles[style] || 0;\n target[layer].styles[style] += styles[style];\n }\n\n // geometry count by base style\n for (let style in bases) {\n target[layer].base[style] = target[layer].base[style] || 0;\n target[layer].base[style] += bases[style];\n }\n}\n", + "// Rendering styles\n\nimport {StyleParser} from './style_parser';\nimport FeatureSelection from '../selection';\nimport ShaderProgram from '../gl/shader_program';\nimport VBOMesh from '../gl/vbo_mesh';\nimport Texture from '../gl/texture';\nimport Material from '../material';\nimport Light from '../light';\nimport {RasterTileSource} from '../sources/raster';\nimport log from '../utils/log';\nimport mergeObjects from '../utils/merge';\nimport Thread from '../utils/thread';\nimport WorkerBroker from '../utils/worker_broker';\nimport debugSettings from '../utils/debug_settings';\n\nlet fs = require('fs');\nconst shaderSrc_selectionFragment = fs.readFileSync(__dirname + '/../gl/shaders/selection_fragment.glsl', 'utf8');\nconst shaderSrc_rasters = fs.readFileSync(__dirname + '/../gl/shaders/rasters.glsl', 'utf8');\n\n// Base class\n\nexport var Style = {\n init ({ generation, styles, sources = {}, introspection } = {}) {\n this.setGeneration(generation);\n this.styles = styles; // styles for scene\n this.sources = sources; // data sources for scene\n this.defines = (this.hasOwnProperty('defines') && this.defines) || {}; // #defines to be injected into the shaders\n this.shaders = (this.hasOwnProperty('shaders') && this.shaders) || {}; // shader customization (uniforms, defines, blocks, etc.)\n this.introspection = introspection || false;\n this.selection = this.selection || this.introspection || false; // flag indicating if this style supports feature selection\n this.compile_setup = false; // one-time setup steps for program compilation\n this.program = null; // GL program reference (for main render pass)\n this.selection_program = null; // GL program reference for feature selection render pass\n this.feature_style = {}; // style for feature currently being parsed, shared to lessen GC/memory thrash\n this.vertex_template = []; // shared single-vertex template, filled out by each style\n this.tile_data = {};\n\n // Default world coords to wrap every 100,000 meters, can turn off by setting this to 'false'\n this.defines.TANGRAM_WORLD_POSITION_WRAP = 100000;\n\n // Blending\n this.blend = this.blend || 'opaque'; // default: opaque styles are drawn first, without blending\n this.defines[`TANGRAM_BLEND_${this.blend.toUpperCase()}`] = true;\n if (this.blend_order == null) { // controls order of rendering for styles w/non-opaque blending\n this.blend_order = -1; // defaults to first\n }\n\n this.removeShaderBlock('setup'); // clear before material injection\n\n // If the style defines its own material, replace the inherited material instance\n if (!(this.material instanceof Material)) {\n if (!Material.isValid(this.material)) {\n this.material = StyleParser.defaults.material;\n }\n this.material = new Material(this.material);\n }\n this.material.inject(this);\n\n // Set lighting mode: fragment, vertex, or none (specified as 'false')\n Light.setMode(this.lighting, this);\n\n // Setup raster samplers if needed\n this.setupRasters();\n\n this.initialized = true;\n },\n\n destroy () {\n if (this.program) {\n this.program.destroy();\n this.program = null;\n }\n\n if (this.selection_program) {\n this.selection_program.destroy();\n this.selection_program = null;\n }\n\n WorkerBroker.removeTarget(this.main_thread_target);\n this.gl = null;\n this.initialized = false;\n },\n\n reset () {\n },\n\n baseStyle () {\n return this.base || this.name;\n },\n\n setGeneration (generation) {\n // Scene generation id this style was created for\n this.generation = generation;\n\n // Provide a hook for this object to be called from worker threads\n this.main_thread_target = ['Style', this.name, this.generation].join('/');\n if (Thread.is_main) {\n WorkerBroker.addTarget(this.main_thread_target, this);\n }\n },\n\n fillVertexTemplate(attribute, value, { size, offset }) {\n offset = (offset === undefined) ? 0 : offset;\n\n let index = this.vertex_layout.index[attribute];\n if (index === undefined) {\n log('warn', `Style: in style '${this.name}', no index found in vertex layout for attribute '${attribute}'`);\n return;\n }\n\n for (let i = 0; i < size; ++i) {\n let v = value.length > i ? value[i] : value;\n this.vertex_template[index + i + offset] = v;\n }\n },\n\n /*** Style parsing and geometry construction ***/\n\n // Returns an object to hold feature data (for a tile or other object)\n startData (tile) {\n this.tile_data[tile.id] = this.tile_data[tile.id] || {\n meshes: {},\n uniforms: {},\n textures: []\n };\n },\n\n // Finalizes an object holding feature data (for a tile or other object)\n endData (tile) {\n var tile_data = this.tile_data[tile.id];\n this.tile_data[tile.id] = null;\n\n if (tile_data && Object.keys(tile_data.meshes).length > 0) {\n for (let variant in tile_data.meshes) {\n let mesh = tile_data.meshes[variant];\n\n // Remove empty mesh variants\n if (mesh.vertex_data.vertex_count === 0) {\n delete tile_data.meshes[variant];\n continue;\n }\n\n // Only keep final byte buffer\n mesh.vertex_data.end();\n mesh.vertex_elements = mesh.vertex_data.element_buffer;\n mesh.vertex_data = mesh.vertex_data.vertex_buffer; // convert from instance to raw typed array\n }\n\n // Load raster tiles passed from data source\n // Blocks mesh completion to avoid flickering\n return this.buildRasterTextures(tile, tile_data).then(() => tile_data);\n }\n else {\n return Promise.resolve(null); // don't send tile data back if doesn't have geometry\n }\n },\n\n // Has mesh data for a given tile?\n hasDataForTile (tile) {\n return this.tile_data[tile.id] != null;\n },\n\n getTileMesh (tile, variant) {\n let meshes = this.tile_data[tile.id].meshes;\n if (meshes[variant] == null) {\n meshes[variant] = {\n variant,\n vertex_data: this.vertexLayoutForMeshVariant(variant).createVertexData()\n };\n }\n return meshes[variant];\n },\n\n vertexLayoutForMeshVariant (variant) {\n return this.vertex_layout;\n },\n\n default_mesh_variant: 0,\n meshVariantTypeForDraw (draw) {\n return this.default_mesh_variant;\n },\n\n addFeature (feature, draw, context) {\n let tile = context.tile;\n if (tile.generation !== this.generation) {\n return;\n }\n\n if (!this.tile_data[tile.id]) {\n this.startData(tile);\n }\n\n let style = this.parseFeature(feature, draw, context);\n if (!style) {\n return; // skip feature\n }\n\n let vertex_data = this.getTileMesh(tile, this.meshVariantTypeForDraw(style)).vertex_data;\n if (this.buildGeometry(feature.geometry, style, vertex_data, context) > 0) {\n feature.generation = this.generation; // track scene generation that feature was rendered for\n }\n },\n\n buildGeometry (geometry, style, vertex_data, context) {\n let geom_count;\n if (geometry.type === 'Polygon') {\n geom_count = this.buildPolygons([geometry.coordinates], style, vertex_data, context);\n }\n else if (geometry.type === 'MultiPolygon') {\n geom_count = this.buildPolygons(geometry.coordinates, style, vertex_data, context);\n }\n else if (geometry.type === 'LineString') {\n geom_count = this.buildLines([geometry.coordinates], style, vertex_data, context);\n }\n else if (geometry.type === 'MultiLineString') {\n geom_count = this.buildLines(geometry.coordinates, style, vertex_data, context);\n }\n else if (geometry.type === 'Point') {\n geom_count = this.buildPoints([geometry.coordinates], style, vertex_data, context);\n }\n else if (geometry.type === 'MultiPoint') {\n geom_count = this.buildPoints(geometry.coordinates, style, vertex_data, context);\n }\n\n // Optionally collect per-layer stats\n if (geom_count > 0 && debugSettings.layer_stats) {\n let tile = context.tile;\n tile.debug.layers = tile.debug.layers || { list: {}, tree: {} };\n let list = tile.debug.layers.list;\n let tree = tile.debug.layers.tree;\n let ftree = {}; // tree of layers for this feature\n context.layers.forEach(layer => {\n addLayerDebugEntry(list, layer, 1, geom_count, {[this.name]: geom_count}, {[this.baseStyle()]: geom_count});\n\n let node = tree;\n let fnode = ftree;\n let levels = layer.split(':');\n for (let i=0; i < levels.length; i++) {\n let level = levels[i];\n node[level] = node[level] || { features: 0, geoms: 0, styles: {}, base: {} };\n\n if (fnode[level] == null) { // only count each layer level once per feature\n fnode[level] = {};\n addLayerDebugEntry(node, level, 1, geom_count, {[this.name]: geom_count}, {[this.baseStyle()]: geom_count});\n }\n\n if (i < levels.length - 1) {\n node[level].layers = node[level].layers || {};\n }\n node = node[level].layers;\n fnode = fnode[level];\n }\n });\n }\n\n return geom_count;\n },\n\n parseFeature (feature, draw, context) {\n try {\n var style = this.feature_style;\n\n // Calculate order\n style.order = this.parseOrder(draw.order, context);\n if (style.order == null && this.blend !== 'overlay') {\n let msg = `Layer '${draw.layers.join(', ')}', draw group '${draw.group}': `;\n msg += `'order' parameter is required unless blend mode is 'overlay'`;\n if (draw.order != null) {\n msg += `; 'order' was set to a dynamic value (e.g. string tied to feature property, `;\n msg += `or JS function), but evaluated to null for one or more features`;\n }\n log({ level: 'warn', once: true }, msg);\n return;\n }\n\n // Subclass implementation\n style = this._parseFeature(feature, draw, context);\n if (!style) {\n return; // skip feature\n }\n\n // Feature selection (only if feature is marked as interactive, and style supports it)\n if (this.selection) {\n style.interactive = StyleParser.evalProperty(this.introspection || draw.interactive, context);\n }\n else {\n style.interactive = false;\n }\n\n if (style.interactive === true) {\n style.selection_color = FeatureSelection.makeColor(feature, context.tile, context);\n }\n else {\n style.selection_color = FeatureSelection.defaultColor;\n }\n\n return style;\n }\n catch(error) {\n log('error', 'Style.parseFeature: style parsing error', feature, style, error.stack);\n }\n },\n\n _parseFeature (feature, draw, context) {\n return this.feature_style;\n },\n\n preprocess (draw) {\n // Preprocess first time\n if (!draw.preprocessed) {\n // Apply draw defaults\n if (this.draw) {\n // Merge each property separately to avoid modifying `draw` instance identity\n for (let param in this.draw) {\n let val = this.draw[param];\n if (typeof val === 'object' && !Array.isArray(val)) { // nested param (e.g. `outline`)\n draw[param] = mergeObjects({}, val, draw[param]);\n }\n else if (draw[param] == null) { // simple param (single scalar value or array)\n draw[param] = val;\n }\n }\n }\n\n draw = this._preprocess(draw); // optional subclass implementation\n if (!draw) {\n return;\n }\n draw.preprocessed = true;\n }\n return draw;\n },\n\n // optionally implemented by subclass\n _preprocess (draw) {\n return draw;\n },\n\n // Parse an order value\n parseOrder (order, context) {\n // Calculate order if it was not cached\n if (typeof order !== 'number') {\n return StyleParser.calculateOrder(order, context);\n }\n return order;\n },\n\n // Expand final precision for half-layers (for outlines)\n scaleOrder (order) {\n return order * 2;\n },\n\n // Parse a color of choose a default if acceptable, return undefined if color missing\n parseColor(color, context) {\n // Need either a color, or a shader block for 'color' or 'filter'\n if (color) {\n return StyleParser.evalCachedColorProperty(color, context);\n }\n else if (this.shaders.blocks.color || this.shaders.blocks.filter) {\n return StyleParser.defaults.color;\n }\n },\n\n // Build functions are no-ops until overriden\n buildPolygons () { return 0; },\n buildLines () { return 0; },\n buildPoints () { return 0; },\n\n\n /*** GL state and rendering ***/\n\n setGL (gl) {\n this.gl = gl;\n this.max_texture_size = Texture.getMaxTextureSize(this.gl);\n },\n\n makeMesh (vertex_data, vertex_elements, options = {}) {\n let vertex_layout = this.vertexLayoutForMeshVariant(options.variant);\n return new VBOMesh(this.gl, vertex_data, vertex_elements, vertex_layout, options);\n },\n\n render (mesh) {\n return mesh.render();\n },\n\n // Get a specific program, compiling if necessary\n getProgram (key = 'program') {\n this.compileSetup();\n\n const program = this[key];\n if (!program || program.error) {\n return;\n }\n\n if (!program.compiled) {\n log('debug', `Compiling style '${this.name}', program key '${key}'`);\n try {\n program.compile();\n }\n catch(e) {\n log('error', `Style: error compiling program for style '${this.name}' (program key '${key}')`, this, e.stack);\n }\n }\n return program;\n },\n\n // One-time setup for compiling style's programs\n compileSetup () {\n if (this.compile_setup) {\n return;\n }\n\n if (!this.gl) {\n throw(new Error(`style.compile(): skipping for ${this.name} because no GL context`));\n }\n\n // Build defines & for selection (need to create a new object since the first is stored as a reference by the program)\n var defines = this.buildDefineList();\n if (this.selection) {\n var selection_defines = Object.assign({}, defines);\n selection_defines.TANGRAM_FEATURE_SELECTION = true;\n }\n\n // Shader blocks\n var blocks = (this.shaders && this.shaders.blocks);\n var block_scopes = (this.shaders && this.shaders.block_scopes);\n\n // Uniforms\n var uniforms = Object.assign({}, this.shaders && this.shaders.uniforms);\n for (let u in uniforms) { // validate uniforms\n if (uniforms[u] == null) {\n log({ level: 'warn', once: true }, `Style '${this.name}' has invalid uniform '${u}': uniform values must be non-null`);\n }\n }\n\n // Accept a single extension, or an array of extensions\n var extensions = (this.shaders && this.shaders.extensions);\n if (typeof extensions === 'string') {\n extensions = [extensions];\n }\n\n // Create shaders\n this.program = new ShaderProgram(\n this.gl,\n this.vertex_shader_src,\n this.fragment_shader_src,\n {\n name: this.name,\n defines,\n uniforms,\n blocks,\n block_scopes,\n extensions\n }\n );\n\n if (this.selection) {\n this.selection_program = new ShaderProgram(\n this.gl,\n this.vertex_shader_src,\n shaderSrc_selectionFragment,\n {\n name: (this.name + ' (selection)'),\n defines: selection_defines,\n uniforms,\n blocks,\n block_scopes,\n extensions\n }\n );\n }\n else {\n this.selection_program = null;\n }\n\n this.compile_setup = true;\n },\n\n // Add a shader block\n addShaderBlock (key, block, scope = null) {\n this.shaders.blocks = this.shaders.blocks || {};\n this.shaders.blocks[key] = this.shaders.blocks[key] || [];\n this.shaders.blocks[key].push(block);\n\n this.shaders.block_scopes = this.shaders.block_scopes || {};\n this.shaders.block_scopes[key] = this.shaders.block_scopes[key] || [];\n this.shaders.block_scopes[key].push(scope);\n },\n\n // Remove all shader blocks for key\n removeShaderBlock (key) {\n if (this.shaders.blocks) {\n this.shaders.blocks[key] = null;\n }\n },\n\n replaceShaderBlock (key, block, scope = null) {\n this.removeShaderBlock(key);\n this.addShaderBlock(key, block, scope);\n },\n\n /** TODO: could probably combine and generalize this with similar method in ShaderProgram\n * (list of define objects that inherit from each other)\n */\n buildDefineList () {\n // Add any custom defines to built-in style defines\n var defines = {}; // create a new object to avoid mutating a prototype value that may be shared with other styles\n if (this.defines != null) {\n for (var d in this.defines) {\n defines[d] = this.defines[d];\n }\n }\n if (this.shaders != null && this.shaders.defines != null) {\n for (d in this.shaders.defines) {\n defines[d] = this.shaders.defines[d];\n }\n }\n return defines;\n\n },\n\n // Determines if 'raster' parameter is set to a valid value\n hasRasters () {\n return (['color', 'normal', 'custom'].indexOf(this.raster) > -1);\n },\n\n // Setup raster access in shaders\n setupRasters () {\n if (!this.hasRasters()) {\n return;\n }\n\n // Enable raster textures and configure how first raster is applied\n if (this.raster === 'color') {\n this.defines.TANGRAM_RASTER_TEXTURE_COLOR = true;\n }\n else if (this.raster === 'normal') {\n this.defines.TANGRAM_RASTER_TEXTURE_NORMAL = true;\n }\n // else custom raster (samplers will be made available but not automatically applied)\n\n // A given style may be built with multiple data sources, each of which may attach\n // a variable number of raster sources (0 to N, where N is the max number of raster sources\n // defined for the scene). This means we don't know *which* or *how many* rasters will be\n // bound now, at initial compile-time; we only know this at geometry build-time. To ensure\n // that we can bind as many raster sources as needed, we declare our uniform arrays to hold\n // the maximum number of possible sources. At render time, only the necessary number of rasters\n // are bound (the remaining slots aren't intended to be accessed).\n let num_raster_sources =\n Object.keys(this.sources)\n .filter(s => this.sources[s] instanceof RasterTileSource)\n .length;\n\n this.defines.TANGRAM_NUM_RASTER_SOURCES = `${num_raster_sources}`; // force to string to avoid auto-float conversion\n if (num_raster_sources > 0) {\n // Use model position of tile's coordinate zoom for raster tile texture UVs\n this.defines.TANGRAM_MODEL_POSITION_BASE_ZOOM_VARYING = true;\n\n // Uniforms and macros for raster samplers\n this.replaceShaderBlock('raster', shaderSrc_rasters, 'Raster');\n }\n },\n\n // Load raster tile textures and set uniforms\n buildRasterTextures (tile, tile_data) {\n if (!this.hasRasters()) {\n return Promise.resolve(tile_data);\n }\n\n let configs = {}; // texture configs to pass to texture builder, keyed by texture name\n let index = {}; // index into raster sampler array, keyed by texture name\n\n // TODO: data source could retrieve raster texture URLs\n tile.rasters.map(r => this.sources[r]).filter(x => x).forEach((source, i) => {\n if (source instanceof RasterTileSource) {\n let config = source.tileTexture(tile);\n configs[config.url] = config;\n index[config.url] = i;\n }\n });\n\n if (Object.keys(configs).length === 0) {\n return Promise.resolve(tile_data);\n }\n\n // Load textures on main thread and return when done\n // We want to block the building of a raster tile mesh until its texture is loaded,\n // to avoid flickering while loading (texture will render as black)\n return WorkerBroker.postMessage(this.main_thread_target+'.loadTextures', configs)\n .then(textures => {\n if (!textures || textures.length < 1) {\n // TODO: warning\n return tile_data;\n }\n\n // Set texture uniforms (returned after loading from main thread)\n tile_data.uniforms = tile_data.uniforms || {};\n tile_data.textures = tile_data.textures || [];\n\n let u_samplers = tile_data.uniforms['u_rasters'] = [];\n let u_sizes = tile_data.uniforms['u_raster_sizes'] = [];\n let u_offsets = tile_data.uniforms['u_raster_offsets'] = [];\n\n textures.forEach(([tname, twidth, theight]) => {\n let i = index[tname];\n let raster_coords = configs[tname].coords; // tile coords of raster tile\n\n u_samplers[i] = tname;\n tile_data.textures.push(tname);\n\n u_sizes[i] = [twidth, theight];\n\n // Tile geometry may be at a higher zoom than the raster tile texture,\n // (e.g. an overzoomed raster tile), in which case we need to adjust the\n // raster texture UVs to offset to the appropriate starting point for\n // this geometry tile.\n if (tile.coords.z > raster_coords.z) {\n let dz = tile.coords.z - raster_coords.z; // # of levels raster source is overzoomed\n let dz2 = Math.pow(2, dz);\n u_offsets[i] = [\n (((tile.coords.x % dz2) + dz2) % dz2) / dz2, // double-modulo to handle negative (wrapped) tile coords\n (dz2 - 1 - (tile.coords.y % dz2)) / dz2, // GL texture coords are +Y up\n 1 / dz2\n ];\n }\n else {\n u_offsets[i] = [0, 0, 1];\n }\n });\n\n return tile_data;\n }\n );\n },\n\n // Called on main thread\n loadTextures (textures) {\n // NB: only return name and size of textures loaded, because we can't send actual texture objects to worker\n return Texture.createFromObject(this.gl, textures)\n .then(() => {\n return Promise.all(Object.keys(textures).map(t => {\n return Texture.textures[t] && Texture.textures[t].load();\n }).filter(x => x));\n })\n .then(textures => {\n textures.forEach(t => t.retain());\n return textures.map(t => [t.name, t.width, t.height]);\n });\n },\n\n // Setup any GL state for rendering\n setup () {\n this.setUniforms();\n this.material.setupProgram(ShaderProgram.current);\n },\n\n // Set style uniforms on currently bound program\n setUniforms () {\n var program = ShaderProgram.current;\n if (!program) {\n return;\n }\n\n program.setUniforms(this.shaders && this.shaders.uniforms, true); // reset texture unit to 0\n },\n\n // Render state settings by blend mode\n render_states: {\n opaque: { depth_test: true, depth_write: true },\n add: { depth_test: true, depth_write: false },\n multiply: { depth_test: true, depth_write: false },\n inlay: { depth_test: true, depth_write: false },\n overlay: { depth_test: false, depth_write: false }\n },\n\n // Default sort order for blend modes\n default_blend_orders: {\n opaque: 0,\n add: 1,\n multiply: 2,\n inlay: 3,\n overlay: 4\n },\n\n // Comparison function for sorting styles by blend\n blendOrderSort (a, b) {\n // opaque always comes first\n if (a.blend === 'opaque' || b.blend === 'opaque') {\n if (a.blend === 'opaque' && b.blend === 'opaque') { // if both are opaque\n return a.name < b.name ? -1 : 1; // use name as tie breaker\n }\n else if (a.blend === 'opaque') {\n return -1; // only `a` was opaque\n }\n else {\n return 1; // only `b` was opaque\n }\n }\n\n // use explicit blend order if possible\n if (a.blend_order < b.blend_order) {\n return -1;\n }\n else if (a.blend_order > b.blend_order) {\n return 1;\n }\n\n // if blend orders are equal, use default order by blend mode\n if (Style.default_blend_orders[a.blend] < Style.default_blend_orders[b.blend]) {\n return -1;\n }\n else if (Style.default_blend_orders[a.blend] > Style.default_blend_orders[b.blend]) {\n return 1;\n }\n\n return a.name < b.name ? -1 : 1; // use name as tie breaker\n }\n\n};\n\n// add feature and geometry counts for a single layer\nexport function addLayerDebugEntry (target, layer, faeture_count, geom_count, styles, bases) {\n target[layer] = target[layer] || { features: 0, geoms: 0, styles: {}, base: {} };\n target[layer].features += faeture_count; // feature count\n target[layer].geoms += geom_count; // geometry count\n\n // geometry count by style\n for (let style in styles) {\n target[layer].styles[style] = target[layer].styles[style] || 0;\n target[layer].styles[style] += styles[style];\n }\n\n // geometry count by base style\n for (let style in bases) {\n target[layer].base[style] = target[layer].base[style] || 0;\n target[layer].base[style] += bases[style];\n }\n}\n", "// Manage rendering styles\nimport ShaderProgram from '../gl/shader_program';\nimport mergeObjects from '../utils/merge';\nimport Geo from '../geo';\nimport log from '../utils/log';\n\nimport {Polygons} from './polygons/polygons';\nimport {Lines} from './lines/lines';\nimport {Points} from './points/points';\nimport {TextStyle} from './text/text';\nimport {RasterStyle} from './raster/raster';\n\nlet fs = require('fs');\nconst shaderSrc_accessors = fs.readFileSync(__dirname + '/../gl/shaders/accessors.glsl', 'utf8');\nconst shaderSrc_layerOrder = fs.readFileSync(__dirname + '/../gl/shaders/layer_order.glsl', 'utf8');\nconst shaderSrc_selectionGlobals = fs.readFileSync(__dirname + '/../gl/shaders/selection_globals.glsl', 'utf8');\nconst shaderSrc_selectionVertex = fs.readFileSync(__dirname + '/../gl/shaders/selection_vertex.glsl', 'utf8');\n\nexport class StyleManager {\n\n constructor () {\n this.styles = {};\n this.base_styles = {};\n\n // Add built-in rendering styles\n this.register(Object.create(Polygons));\n this.register(Object.create(Lines));\n this.register(Object.create(Points));\n this.register(Object.create(TextStyle));\n this.register(Object.create(RasterStyle));\n }\n\n // Global configuration for all styles\n init () {\n ShaderProgram.removeBlock('global');\n ShaderProgram.removeBlock('setup');\n\n // Model and world position accessors\n ShaderProgram.addBlock('global', shaderSrc_accessors);\n\n // Layer re-ordering function\n ShaderProgram.addBlock('global', shaderSrc_layerOrder);\n\n // Feature selection global\n ShaderProgram.addBlock('global', shaderSrc_selectionGlobals);\n\n // Feature selection vertex shader support\n ShaderProgram.replaceBlock('setup', shaderSrc_selectionVertex);\n\n // Minimum value for float comparisons\n ShaderProgram.defines.TANGRAM_EPSILON = 0.00001;\n\n // Minimum depth buffer value separating each `order` unit\n // Assume min 16-bit depth buffer, in practice uses 14-bits, 1 extra bit to handle virtual half-layers\n // for outlines (inserted in between layers), another extra bit to prevent precision loss\n ShaderProgram.defines.TANGRAM_LAYER_DELTA = 1 / (1 << 14);\n\n // Internal tile scale\n ShaderProgram.defines.TANGRAM_TILE_SCALE =\n `vec3(${Geo.tile_scale}., ${Geo.tile_scale}., u_meters_per_pixel * ${Geo.tile_size}.)`;\n\n // Increases precision for height values\n ShaderProgram.defines.TANGRAM_HEIGHT_SCALE = Geo.height_scale;\n\n // Alpha discard threshold (substitute for alpha blending)\n ShaderProgram.defines.TANGRAM_ALPHA_TEST = 0.5;\n }\n\n // Destroy all styles for a given GL context\n destroy (gl) {\n Object.keys(this.styles).forEach((_name) => {\n let style = this.styles[_name];\n if (style.gl === gl) {\n log('trace', `StyleManager.destroy: destroying render style ${style.name}`);\n\n if (style.base) {\n this.remove(style.name);\n }\n style.destroy();\n }\n });\n }\n\n // Register a style\n register (style) {\n this.styles[style.name] = style;\n this.base_styles[style.name] = style;\n }\n\n // Remove a style\n remove (name) {\n delete this.styles[name];\n }\n\n mix (style, styles) {\n // Exit early if we have already applied mixins to this style\n if (style.mixed) {\n return style;\n }\n style.mixed = {};\n\n // Mixin sources, in order\n let sources = [];\n if (style.mix) {\n if (Array.isArray(style.mix)) {\n sources.push(...style.mix);\n }\n else {\n sources.push(style.mix);\n }\n sources = sources.map(x => styles[x]).filter(x => x && x !== style); // TODO: warning on trying to mix into self\n\n // Track which styles were mixed into this one\n sources.forEach(s => style.mixed[s.name] = true);\n }\n sources.push(style);\n\n // Flags - OR'd, true if any style has it set\n style.animated = sources.some(x => x && x.animated);\n style.texcoords = sources.some(x => x && x.texcoords);\n\n // Overwrites - last definition wins\n style.base = sources.map(x => x.base).filter(x => x).pop();\n style.lighting = sources.map(x => x.lighting).filter(x => x != null).pop();\n style.texture = sources.map(x => x.texture).filter(x => x).pop();\n style.raster = sources.map(x => x.raster).filter(x => x != null).pop();\n style.dash = sources.map(x => x.dash).filter(x => x != null).pop();\n style.dash_background_color = sources.map(x => x.dash_background_color).filter(x => x != null).pop();\n if (sources.some(x => x.hasOwnProperty('blend') && x.blend)) {\n // only mix blend if explicitly set, otherwise let base style choose blending mode\n // hasOwnProperty check gives preference to base style prototype\n style.blend = sources.map(x => x.hasOwnProperty('blend') && x.blend).filter(x => x).pop();\n }\n style.blend_order = sources.map(x => x.blend_order).filter(x => x != null).pop();\n\n // Merges - property-specific rules for merging values\n style.defines = Object.assign({}, ...sources.map(x => x.defines).filter(x => x)); // internal defines (not user-defined)\n style.material = Object.assign({}, ...sources.map(x => x.material).filter(x => x));\n\n let draws = sources.map(x => x.draw).filter(x => x); // draw defaults\n if (draws.length > 0) {\n style.draw = mergeObjects({}, ...draws);\n }\n\n // Mix shader properties\n this.mixShaders(style, styles, sources);\n return style;\n }\n\n // Mix the propertes in the \"shaders\" block\n mixShaders (style, styles, sources) {\n let shaders = {}; // newly mixed shaders properties\n let shader_merges = sources.map(x => x.shaders).filter(x => x); // just the source styles with shader properties\n\n // Defines\n shaders.defines = Object.assign({}, ...shader_merges.map(x => x.defines).filter(x => x));\n\n // Uniforms\n shaders.uniforms = {}; // uniforms for this style, both explicitly defined, and mixed from other styles\n shaders._uniforms = (style.shaders && style.shaders.uniforms) || {}; // uniforms explicitly defined by *this* style\n shaders._uniform_scopes = {}; // tracks which style each uniform originated from (this one, or ancestor)\n\n // Mix in uniforms from ancestors, providing means to access\n sources\n .filter(x => x.shaders && x.shaders.uniforms)\n .forEach(x => {\n for (let u in x.shaders.uniforms) {\n shaders._uniform_scopes[u] = x.name;\n\n // Define getter and setter for this uniform\n // Getter returns value for this style if present, otherwise asks appropriate ancestor for it\n // Setter sets the value for this style (whether previously present in this style or not)\n // Mimics JS prototype/hasOwnProperty behavior, but with multiple ancestors (via mixins)\n Object.defineProperty(shaders.uniforms, u, {\n enumerable: true,\n configurable: true,\n get: function () {\n // Uniform is explicitly defined on this style\n if (shaders._uniforms[u] !== undefined) {\n return shaders._uniforms[u];\n }\n // Uniform was mixed from another style, forward request there\n // Identify check is needed to prevent infinite recursion if a previously defined uniform\n // is set to undefined\n else if (styles[shaders._uniform_scopes[u]].shaders.uniforms !== shaders.uniforms) {\n return styles[shaders._uniform_scopes[u]].shaders.uniforms[u];\n }\n },\n set: function (v) {\n shaders._uniforms[u] = v;\n }\n });\n }\n });\n\n // Extensions: build a list of unique extensions\n shaders.extensions = Object.keys(shader_merges\n .map(x => x.extensions)\n .filter(x => x)\n .reduce((prev, cur) => {\n // single extension\n if (typeof cur === 'string') {\n prev[cur] = true;\n }\n // array of extensions\n else {\n cur.forEach(x => prev[x] = true);\n }\n return prev;\n }, {}) || {}\n );\n\n // Shader blocks\n // Mark all shader blocks for the target style as originating with its own name\n if (style.shaders && style.shaders.blocks) {\n style.shaders.block_scopes = style.shaders.block_scopes || {};\n for (let k in style.shaders.blocks) {\n let block = style.shaders.blocks[k];\n style.shaders.block_scopes[k] = style.shaders.block_scopes[k] || [];\n if (Array.isArray(block)) {\n style.shaders.block_scopes[k].push(...block.map(() => style.name));\n }\n else {\n style.shaders.block_scopes[k].push(style.name);\n }\n }\n }\n\n // Merge shader blocks, keeping track of which style each block originated from\n let mixed = {}; // all scopes mixed so far\n shader_merges.forEach(source => {\n if (!source.blocks) {\n return;\n }\n\n shaders.blocks = shaders.blocks || {};\n shaders.block_scopes = shaders.block_scopes || {};\n let mixed_source = {}; // scopes mixed for this source style\n\n for (let t in source.blocks) {\n let block = source.blocks[t];\n let block_scope = source.block_scopes[t];\n\n shaders.blocks[t] = shaders.blocks[t] || [];\n shaders.block_scopes[t] = shaders.block_scopes[t] || [];\n\n // standardize on arrays (block can be single or multi-value)\n block = Array.isArray(block) ? block : [block];\n block_scope = Array.isArray(block_scope) ? block_scope : [block_scope];\n\n for (let b=0; b < block.length; b++) {\n // Skip blocks we've already mixed in from the same scope\n // Repeating scope indicates a diamond pattern where a style is being mixed multiple times\n if (mixed[block_scope[b]]) {\n continue;\n }\n mixed_source[block_scope[b]] = true;\n\n shaders.blocks[t].push(block[b]);\n shaders.block_scopes[t].push(block_scope[b]);\n }\n }\n\n // Add styles mixed in from this source - they could be multi-level ancestors,\n // beyond the first-level \"parents\" defined in this style's `mix` list\n Object.assign(mixed, mixed_source);\n });\n\n Object.assign(style.mixed, mixed); // add all newly mixed styles\n\n style.shaders = shaders; // assign back to style\n return style;\n }\n\n // Create a new style\n // name: name of new style\n // config: properties of new style\n // styles: working set of styles being built (used for mixing in existing styles)\n create (name, config, styles = {}) {\n let style = mergeObjects({}, config); // deep copy\n style.name = name;\n\n // Style mixins\n style = this.mix(style, styles);\n\n // Has base style?\n // Only renderable (instantiated) styles should be included for run-time use\n // Others are intermediary/abstract, used during style composition but not execution\n if (style.base && this.base_styles[style.base]) {\n this.styles[name] = style = Object.assign(Object.create(this.base_styles[style.base]), style);\n }\n else {\n style.base = null; // null out invalid base style\n }\n\n return style;\n }\n\n // Called to create and initialize styles\n build (styles) {\n // Sort styles by dependency, then build them\n let style_deps = Object.keys(styles).sort(\n (a, b) => this.inheritanceDepth(a, styles) - this.inheritanceDepth(b, styles)\n );\n\n // Only keep built-in base styles\n for (let sname in this.styles) {\n if (!this.base_styles[sname]) {\n delete this.styles[sname];\n }\n else {\n this.styles[sname].reset();\n }\n }\n\n // Working set of styles being built\n let ws = {};\n style_deps.forEach(sname => {\n ws[sname] = this.create(sname, styles[sname], ws);\n });\n\n return this.styles;\n }\n\n // Initialize all styles\n initStyles (scene = {}) {\n // Initialize all\n for (let sname in this.styles) {\n this.styles[sname].init(scene);\n }\n }\n\n // Given a style key in a set of styles to add, count the length of the inheritance chain\n inheritanceDepth (key, styles) {\n let parents = 0;\n\n while(true) {\n let style = styles[key];\n if (!style) {\n // this is a scene def error, trying to extend a style that doesn't exist\n break;\n }\n\n // Dependency chain ends when this style isn't mixing in any others\n if (!style.mix) {\n break;\n }\n\n // Traverse next parent style\n parents++;\n\n if (Array.isArray(style.mix)) {\n // If multiple mixins, find the deepest one\n parents += Math.max(...style.mix.map(s => {\n // Trying to mix into itself!\n if (key === s) {\n return;\n }\n\n return this.inheritanceDepth(s, styles);\n }));\n break;\n }\n else {\n // Trying to mix into itself!\n if (key === style.mix) {\n break;\n }\n\n // If single mixin, continue loop up the tree\n key = style.mix;\n }\n }\n return parents;\n }\n\n}\n", "import Utils from '../utils/utils';\nimport Geo from '../geo';\n\nimport parseCSSColor from 'csscolorparser';\n\nexport var StyleParser = {};\n\n// Wraps style functions and provides a scope of commonly accessible data:\n// - feature: the 'properties' of the feature, e.g. accessed as 'feature.name'\n// - global: user-defined properties on the `global` object in the scene file\n// - $zoom: the current map zoom level\n// - $geometry: the type of geometry, 'point', 'line', or 'polygon'\n// - $meters_per_pixel: conversion for meters/pixels at current map zoom\nStyleParser.wrapFunction = function (func) {\n var f = `\n var feature = context.feature.properties;\n var global = context.global;\n var $zoom = context.zoom;\n var $layer = context.layer;\n var $source = context.source;\n var $geometry = context.geometry;\n var $meters_per_pixel = context.meters_per_pixel;\n\n var val = (function(){ ${func} }());\n\n if (typeof val === 'number' && isNaN(val)) {\n val = null; // convert NaNs to nulls\n }\n\n return val;\n `;\n return f;\n};\n\n\n// Style parsing\n\nStyleParser.zeroPair = Object.freeze([0, 0]); // single allocation for zero values that won't be modified\n\n// Style defaults\nStyleParser.defaults = {\n color: [1, 1, 1, 1],\n width: 1,\n size: 1,\n extrude: false,\n height: 20,\n min_height: 0,\n order: 0,\n z: 0,\n outline: {\n color: [0, 0, 0, 0],\n width: 0\n },\n material: {\n ambient: 1,\n diffuse: 1\n }\n};\n\n// Style macros\nStyleParser.macros = {\n // pseudo-random color by geometry id\n 'Style.color.pseudoRandomColor': function() {\n return [\n 0.7 * (parseInt(feature.id, 16) / 100 % 1), // jshint ignore:line\n 0.7 * (parseInt(feature.id, 16) / 10000 % 1), // jshint ignore:line\n 0.7 * (parseInt(feature.id, 16) / 1000000 % 1), // jshint ignore:line\n 1\n ];\n },\n\n // random color\n 'Style.color.randomColor': function() {\n return [0.7 * Math.random(), 0.7 * Math.random(), 0.7 * Math.random(), 1];\n }\n};\n\n// A context object that is passed to style parsing functions to provide a scope of commonly used values\nStyleParser.getFeatureParseContext = function (feature, tile, global) {\n return {\n feature,\n tile,\n global,\n zoom: tile.style_zoom,\n geometry: Geo.geometryType(feature.geometry.type),\n meters_per_pixel: tile.meters_per_pixel,\n meters_per_pixel_sq: tile.meters_per_pixel_sq,\n units_per_meter_overzoom: tile.units_per_meter_overzoom\n };\n};\n\n// Build a style param cache object\n// `value` is raw value, cache methods will add other properties as needed\n// `transform` is optional transform function to run on values (except function values)\nStyleParser.createPropertyCache = function (obj, transform = null) {\n if (obj == null) {\n return;\n }\n\n if (obj.value) {\n return { value: obj.value, zoom: (obj.zoom ? {} : null) }; // clone existing cache object\n }\n\n let c = { value: obj };\n\n // does value contain zoom stops to be interpolated?\n if (Array.isArray(c.value) && Array.isArray(c.value[0])) {\n c.zoom = {}; // will hold values interpolated by zoom\n }\n\n // apply optional transform function\n if (typeof transform === 'function') {\n if (c.zoom) { // apply to each zoom stop value\n c.value = c.value.map(v => [v[0], transform(v[1])]);\n }\n else if (typeof c.value !== 'function') { // don't transform functions\n c.value = transform(c.value); // single value\n }\n }\n\n return c;\n};\n\n// Convert old-style color macro into a function\n// TODO: deprecate this macro syntax\nStyleParser.createColorPropertyCache = function (obj) {\n return StyleParser.createPropertyCache(obj, v => {\n if (v === 'Style.color.pseudoRandomColor') {\n return Utils.stringToFunction(StyleParser.wrapFunction(StyleParser.macros['Style.color.pseudoRandomColor']));\n }\n else if (v === 'Style.color.randomColor') {\n return StyleParser.macros['Style.color.randomColor'];\n }\n\n return v;\n });\n};\n\n// Interpolation and caching for a generic property (not a color or distance)\n// { value: original, static: val, zoom: { 1: val1, 2: val2, ... }, dynamic: function(){...} }\nStyleParser.evalCachedProperty = function(val, context) {\n if (val == null) {\n return;\n }\n else if (val.dynamic) { // function, compute each time (no caching)\n let v = val.dynamic(context);\n return v;\n }\n else if (val.static) { // single static value\n return val.static;\n }\n else if (val.zoom && val.zoom[context.zoom]) { // interpolated, cached\n return val.zoom[context.zoom];\n }\n else { // not yet evaulated for cache\n // Dynamic function-based\n if (typeof val.value === 'function') {\n val.dynamic = val.value;\n let v = val.dynamic(context);\n return v;\n }\n // Array of zoom-interpolated stops, e.g. [zoom, value] pairs\n else if (Array.isArray(val.value) && Array.isArray(val.value[0])) {\n // Calculate value for current zoom\n val.zoom = val.zoom || {};\n val.zoom = {};\n val.zoom[context.zoom] = Utils.interpolate(context.zoom, val.value);\n return val.zoom[context.zoom];\n }\n // Single static value\n else {\n val.static = val.value;\n return val.static;\n }\n }\n};\n\nStyleParser.convertUnits = function(val, context) {\n // pre-parsed units\n if (val.val != null) {\n if (val.units === 'px') { // convert from pixels\n return val.val * Geo.metersPerPixel(context.zoom);\n }\n return val.val;\n }\n // un-parsed unit string\n else if (typeof val === 'string') {\n if (val.trim().slice(-2) === 'px') {\n val = parseFloat(val);\n val *= Geo.metersPerPixel(context.zoom); // convert from pixels\n }\n else {\n val = parseFloat(val);\n }\n }\n // multiple values or stops\n else if (Array.isArray(val)) {\n // Array of arrays, e.g. zoom-interpolated stops\n if (Array.isArray(val[0])) {\n return val.map(v => [v[0], StyleParser.convertUnits(v[1], context)]);\n }\n // Array of values\n else {\n return val.map(v => StyleParser.convertUnits(v, context));\n }\n }\n return val;\n};\n\n// Pre-parse units from string values\nStyleParser.parseUnits = function (val) {\n var obj = { val: parseFloat(val) };\n if (obj.val !== 0 && typeof val === 'string' && val.trim().slice(-2) === 'px') {\n obj.units = 'px';\n }\n return obj;\n};\n\n// Takes a distance cache object and returns a distance value for this zoom\n// (caching the result for future use)\n// { value: original, zoom: { z: meters }, dynamic: function(){...} }\nStyleParser.evalCachedDistanceProperty = function(val, context) {\n if (val.dynamic) {\n let v = val.dynamic(context);\n return v;\n }\n else if (val.zoom && val.zoom[context.zoom]) {\n return val.zoom[context.zoom];\n }\n else {\n // Dynamic function-based\n if (typeof val.value === 'function') {\n val.dynamic = val.value;\n let v = val.dynamic(context);\n return v;\n }\n // Array of zoom-interpolated stops, e.g. [zoom, value] pairs\n else if (val.zoom) {\n // Calculate value for current zoom\n // Do final unit conversion as late as possible, when interpolation values have been determined\n val.zoom[context.zoom] = Utils.interpolate(context.zoom, val.value,\n v => StyleParser.convertUnits(v, context));\n\n return val.zoom[context.zoom];\n }\n else {\n return StyleParser.convertUnits(val.value, context);\n }\n }\n};\n\n// Cache previously parsed color strings\nStyleParser.string_colors = {};\nStyleParser.colorForString = function(string) {\n // Cached\n if (StyleParser.string_colors[string]) {\n return StyleParser.string_colors[string];\n }\n\n // Calculate and cache\n let color = parseCSSColor.parseCSSColor(string);\n if (color && color.length === 4) {\n color[0] /= 255;\n color[1] /= 255;\n color[2] /= 255;\n }\n else {\n color = StyleParser.defaults.color;\n }\n StyleParser.string_colors[string] = color;\n return color;\n};\n\n// Takes a color cache object and returns a color value for this zoom\n// (caching the result for future use)\n// { value: original, static: [r,g,b,a], zoom: { z: [r,g,b,a] }, dynamic: function(){...} }\nStyleParser.evalCachedColorProperty = function(val, context = {}) {\n if (val.dynamic) {\n let v = val.dynamic(context);\n\n if (typeof v === 'string') {\n v = StyleParser.colorForString(v);\n }\n\n if (v && v[3] == null) {\n v[3] = 1; // default alpha\n }\n return v;\n }\n else if (val.static) {\n return val.static;\n }\n else if (val.zoom && val.zoom[context.zoom]) {\n return val.zoom[context.zoom];\n }\n else {\n // Dynamic function-based color\n if (typeof val.value === 'function') {\n val.dynamic = val.value;\n let v = val.dynamic(context);\n\n if (typeof v === 'string') {\n v = StyleParser.colorForString(v);\n }\n\n if (v && v[3] == null) {\n v[3] = 1; // default alpha\n }\n return v;\n }\n // Single string color\n else if (typeof val.value === 'string') {\n val.static = StyleParser.colorForString(val.value);\n return val.static;\n }\n // Array of zoom-interpolated stops, e.g. [zoom, color] pairs\n else if (val.zoom) {\n // Parse any string colors inside stops, the first time we encounter this property\n if (!val.zoom_preprocessed) {\n for (let i=0; i < val.value.length; i++) {\n let v = val.value[i];\n if (v && typeof v[1] === 'string') {\n v[1] = StyleParser.colorForString(v[1]);\n }\n }\n val.zoom_preprocessed = true;\n }\n\n // Calculate color for current zoom\n val.zoom[context.zoom] = Utils.interpolate(context.zoom, val.value);\n val.zoom[context.zoom][3] = val.zoom[context.zoom][3] || 1; // default alpha\n return val.zoom[context.zoom];\n }\n // Single array color\n else {\n val.static = val.value.map(x => x); // copy to avoid modifying\n if (val.static && val.static[3] == null) {\n val.static[3] = 1; // default alpha\n }\n return val.static;\n }\n }\n};\n\nStyleParser.parseColor = function(val, context = {}) {\n if (typeof val === 'function') {\n val = val(context);\n }\n\n // Parse CSS-style colors\n // TODO: change all colors to use 0-255 range internally to avoid dividing and then re-multiplying in geom builder\n if (typeof val === 'string') {\n val = StyleParser.colorForString(val);\n }\n else if (Array.isArray(val) && Array.isArray(val[0])) {\n // Array of zoom-interpolated stops, e.g. [zoom, color] pairs\n for (let i=0; i < val.length; i++) {\n let v = val[i];\n if (typeof v[1] === 'string') {\n v[1] = StyleParser.colorForString(v[1]);\n }\n }\n\n if (context.zoom) {\n val = Utils.interpolate(context.zoom, val);\n }\n }\n\n // Defaults\n if (Array.isArray(val)) {\n val = val.map(x => x); // copy to avoid modifying\n // alpha\n if (val[3] == null) {\n val[3] = 1;\n }\n }\n else {\n val = [0, 0, 0, 1];\n }\n\n return val;\n};\n\nStyleParser.calculateOrder = function(order, context) {\n // Computed order\n if (typeof order === 'function') {\n order = order(context);\n }\n else if (typeof order === 'string') {\n // Order tied to feature property\n if (context.feature.properties[order]) {\n order = context.feature.properties[order];\n }\n // Explicit order value\n else {\n order = parseFloat(order);\n }\n }\n\n return order;\n};\n\n// Evaluate a function-based property, or pass-through static value\nStyleParser.evalProperty = function(prop, context) {\n if (typeof prop === 'function') {\n return prop(context);\n }\n return prop;\n};\n", - "import log from '../../utils/log';\nimport Utils from '../../utils/utils';\nimport Texture from '../../gl/texture';\nimport FontManager from './font_manager';\nimport Task from '../../utils/task';\nimport debugSettings from '../../utils/debug_settings';\n\nexport default class CanvasText {\n\n constructor () {\n this.createCanvas(); // create initial canvas and context\n this.vertical_text_buffer = 8; // vertical pixel padding around text\n this.horizontal_text_buffer = 4; // text styling such as italic emphasis is not measured by the Canvas API, so padding is necessary\n }\n\n createCanvas () {\n this.canvas = document.createElement('canvas');\n this.canvas.style.backgroundColor = 'transparent'; // render text on transparent background\n this.context = this.canvas.getContext('2d');\n }\n\n resize (width, height) {\n this.canvas.width = width;\n this.canvas.height = height;\n this.context.clearRect(0, 0, width, height);\n }\n\n // Set font style params for canvas drawing\n setFont ({ font_css, fill, stroke, stroke_width, px_size, supersample }) {\n this.px_size = px_size;\n let ctx = this.context;\n let dpr = Utils.device_pixel_ratio * supersample;\n\n if (stroke && stroke_width > 0) {\n ctx.strokeStyle = stroke;\n ctx.lineWidth = stroke_width * dpr;\n }\n ctx.fillStyle = fill;\n\n ctx.font = font_css;\n ctx.miterLimit = 2;\n }\n\n textSizes (tile_id, texts) {\n return FontManager.loadFonts().then(() => {\n return Task.add({\n type: 'textSizes',\n target: this,\n method: 'processTextSizesTask',\n texts,\n tile_id,\n cursor: {\n styles: Object.keys(texts),\n texts: null,\n style_idx: null,\n text_idx: null\n }\n });\n });\n }\n\n processTextSizesTask (task) {\n let { cursor, texts } = task;\n cursor.style_idx = cursor.style_idx || 0;\n\n while (cursor.style_idx < cursor.styles.length) {\n let style = cursor.styles[cursor.style_idx];\n if (cursor.text_idx == null) {\n cursor.text_idx = 0;\n cursor.texts = Object.keys(texts[style]);\n }\n\n let text_infos = texts[style];\n let first = true;\n\n while (cursor.text_idx < cursor.texts.length) {\n let text = cursor.texts[cursor.text_idx];\n let text_info = text_infos[text];\n let text_settings = text_info.text_settings;\n\n if (first) {\n this.setFont(text_settings);\n first = false;\n }\n\n if (text_settings.can_articulate){\n let rtl = false;\n let bidi = false;\n if (isTextRTL(text)) {\n if (!isTextNeutral(text)) {\n bidi = true;\n }\n else {\n rtl = true;\n }\n }\n\n text_info.isRTL = rtl;\n text_info.no_curving = bidi || isTextCurveBlacklisted(text); // used in LabelLine to prevent curved labels\n text_info.vertical_buffer = this.vertical_text_buffer;\n text_info.size = [];\n\n if (!text_info.no_curving) {\n let segments = splitLabelText(text, rtl);\n text_info.segments = segments;\n for (let i = 0; i < segments.length; i++){\n text_info.size.push(this.textSize(style, segments[i], text_settings).size);\n }\n }\n\n // add full text as well\n text_info.total_size = this.textSize(style, text, text_settings).size;\n }\n else {\n // Only send text sizes back to worker (keep computed text line info\n // on main thread, for future rendering)\n text_info.size = this.textSize(style, text, text_settings).size;\n }\n\n cursor.text_idx++;\n\n if (!Task.shouldContinue(task)) {\n return false;\n }\n }\n cursor.text_idx = null;\n cursor.style_idx++;\n }\n\n Task.finish(task, { texts });\n return true;\n }\n\n // Computes width and height of text based on current font style\n // Includes word wrapping, returns size info for whole text block and individual lines\n textSize (style, text, {transform, text_wrap, max_lines, stroke_width = 0, supersample}) {\n // Check cache first\n CanvasText.cache.text[style] = CanvasText.cache.text[style] || {};\n if (CanvasText.cache.text[style][text]) {\n CanvasText.cache.stats.text_hits++;\n return CanvasText.cache.text[style][text];\n }\n CanvasText.cache.stats.text_misses++;\n CanvasText.cache.text_count++;\n\n // Calc and store in cache\n let dpr = Utils.device_pixel_ratio * supersample;\n let str = this.applyTextTransform(text, transform);\n let ctx = this.context;\n let vertical_buffer = this.vertical_text_buffer * dpr;\n let horizontal_buffer = dpr * (stroke_width + this.horizontal_text_buffer);\n let leading = 2 * dpr; // make configurable and/or use Canvas TextMetrics when available\n let line_height = this.px_size + leading; // px_size already in device pixels\n\n // Parse string into series of lines if it exceeds the text wrapping value or contains line breaks\n let multiline = MultiLine.parse(str, text_wrap, max_lines, line_height, ctx);\n\n // Final dimensions of text\n let height = multiline.height;\n let width = multiline.width;\n let lines = multiline.lines;\n\n let collision_size = [\n width / dpr,\n height / dpr\n ];\n\n let texture_size = [\n width + 2 * horizontal_buffer,\n height + 2 * vertical_buffer\n ];\n\n let logical_size = [\n texture_size[0] / dpr,\n texture_size[1] / dpr,\n ];\n\n // Returns lines (w/per-line info for drawing) and text's overall bounding box + canvas size\n CanvasText.cache.text[style][text] = {\n lines,\n size: { collision_size, texture_size, logical_size, line_height }\n };\n return CanvasText.cache.text[style][text];\n }\n\n // Draw multiple lines of text\n drawTextMultiLine (lines, [x, y], size, { stroke, stroke_width = 0, transform, align, supersample }, type) {\n let line_height = size.line_height;\n let height = y;\n for (let line_num=0; line_num < lines.length; line_num++) {\n let line = lines[line_num];\n this.drawTextLine(line, [x, height], size, { stroke, stroke_width, transform, align, supersample }, type);\n height += line_height;\n }\n\n // Draw bounding boxes for debugging\n if (debugSettings.draw_label_collision_boxes) {\n this.context.save();\n\n let dpr = Utils.device_pixel_ratio * supersample;\n let horizontal_buffer = dpr * (this.horizontal_text_buffer + stroke_width);\n let vertical_buffer = dpr * this.vertical_text_buffer;\n let collision_size = size.collision_size;\n let lineWidth = 2;\n\n this.context.strokeStyle = 'blue';\n this.context.lineWidth = lineWidth;\n this.context.strokeRect(x + horizontal_buffer, y + vertical_buffer, dpr * collision_size[0], dpr * collision_size[1]);\n if (type === 'curved'){\n this.context.strokeRect(x + size.texture_size[0] + horizontal_buffer, y + vertical_buffer, dpr * collision_size[0], dpr * collision_size[1]);\n }\n\n this.context.restore();\n }\n\n if (debugSettings.draw_label_texture_boxes) {\n this.context.save();\n\n let texture_size = size.texture_size;\n let lineWidth = 2;\n\n this.context.strokeStyle = 'green';\n this.context.lineWidth = lineWidth;\n // stroke is applied internally, so the outer border is the edge of the texture\n this.context.strokeRect(x + lineWidth, y + lineWidth, texture_size[0] - 2 * lineWidth, texture_size[1] - 2 * lineWidth);\n\n if (type === 'curved'){\n this.context.strokeRect(x + lineWidth + size.texture_size[0], y + lineWidth, texture_size[0] - 2 * lineWidth, texture_size[1] - 2 * lineWidth);\n }\n\n this.context.restore();\n }\n }\n\n // Draw single line of text at specified location, adjusting for buffer and baseline\n drawTextLine (line, [x, y], size, { stroke, stroke_width = 0, transform, align, supersample }, type) {\n let dpr = Utils.device_pixel_ratio * supersample;\n align = align || 'center';\n\n let vertical_buffer = this.vertical_text_buffer * dpr;\n let texture_size = size.texture_size;\n let line_height = size.line_height;\n let horizontal_buffer = dpr * (stroke_width + this.horizontal_text_buffer);\n\n let str = this.applyTextTransform(line.text, transform);\n\n // Text alignment\n let tx;\n if (align === 'left') {\n tx = x + horizontal_buffer;\n }\n else if (align === 'center') {\n tx = x + texture_size[0]/2 - line.width/2;\n }\n else if (align === 'right') {\n tx = x + texture_size[0] - line.width - horizontal_buffer;\n }\n\n // In the absence of better Canvas TextMetrics (not supported by browsers yet),\n // 0.75 buffer produces a better approximate vertical centering of text\n let ty = y + vertical_buffer * 0.75 + line_height;\n\n // Draw stroke and fill separately for curved text. Offset stroke in texture atlas by shift.\n if (stroke && stroke_width > 0) {\n let shift = (type === 'curved') ? texture_size[0] : 0;\n this.context.strokeText(str, tx + shift, ty);\n }\n this.context.fillText(str, tx, ty);\n }\n\n rasterize (texts, textures, tile_id, texture_prefix, gl) {\n return Task.add({\n type: 'rasterizeLabels',\n target: this,\n method: 'processRasterizeTask',\n cancel: 'cancelRasterizeTask',\n pause_factor: 2, // pause 2 frames when task run past allowed time\n user_moving_view: false, // don't run task when user is moving view\n texts,\n textures,\n texture_prefix,\n gl,\n tile_id,\n cursor: {\n styles: Object.keys(texts),\n texts: null,\n style_idx: 0,\n text_idx: null,\n texture_idx: 0,\n texture_resize: true,\n texture_names: []\n }\n });\n }\n\n processRasterizeTask (task) {\n let { cursor, texts, textures } = task;\n let texture;\n\n // Rasterize one texture at a time, so we only have to keep one canvas in memory (they can be large)\n while (cursor.texture_idx < task.textures.length) {\n texture = textures[cursor.texture_idx];\n\n if (cursor.texture_resize) {\n cursor.texture_resize = false;\n this.resize(...texture.texture_size);\n }\n\n while (cursor.style_idx < cursor.styles.length) {\n let style = cursor.styles[cursor.style_idx];\n if (cursor.text_idx == null) {\n cursor.text_idx = 0;\n cursor.texts = Object.keys(texts[style]);\n }\n\n let text_infos = texts[style];\n let first = true;\n\n while (cursor.text_idx < cursor.texts.length) {\n let text = cursor.texts[cursor.text_idx];\n let text_info = text_infos[text];\n let text_settings = text_info.text_settings;\n\n // set font on first occurence of new font style\n if (first) {\n this.setFont(text_settings);\n first = false;\n }\n\n if (text_settings.can_articulate){\n text_info.texcoords = text_info.texcoords || {};\n for (let t = 0; t < text_info.type.length; t++){\n\n let type = text_info.type[t];\n switch (type){\n case 'straight':\n // Only render for current texture\n if (text_info.textures[t] !== cursor.texture_idx) {\n continue;\n }\n\n let word = (text_info.isRTL) ? text.split().reverse().join() : text;\n let cache = texture.texcoord_cache[style][word];\n\n let texcoord;\n if (cache.texcoord){\n texcoord = cache.texcoord;\n }\n else {\n let texture_position = cache.texture_position;\n let { size, lines } = this.textSize(style, word, text_settings);\n\n this.drawTextMultiLine(lines, texture_position, size, text_settings, type);\n\n texcoord = Texture.getTexcoordsForSprite(\n texture_position,\n size.texture_size,\n texture.texture_size\n );\n\n cache.texcoord = texcoord;\n }\n\n text_info.texcoords[type] = {\n texcoord,\n texture_id: cache.texture_id\n };\n\n break;\n\n case 'curved':\n let words = text_info.segments;\n text_info.texcoords.curved = text_info.texcoords.curved || [];\n text_info.texcoords_stroke = text_info.texcoords_stroke || [];\n\n for (let w = 0; w < words.length; w++){\n // Only render for current texture\n if (text_info.textures[t][w] !== cursor.texture_idx) {\n continue;\n }\n\n let word = words[w];\n let cache = texture.texcoord_cache[style][word];\n\n let texcoord;\n let texcoord_stroke;\n if (cache.texcoord){\n texcoord = cache.texcoord;\n texcoord_stroke = cache.texcoord_stroke;\n text_info.texcoords_stroke.push(texcoord_stroke);\n }\n else {\n let texture_position = cache.texture_position;\n let { size, lines } = this.textSize(style, word, text_settings);\n\n this.drawTextMultiLine(lines, texture_position, size, text_settings, type);\n\n texcoord = Texture.getTexcoordsForSprite(\n texture_position,\n size.texture_size,\n texture.texture_size\n );\n\n let texture_position_stroke = [\n texture_position[0] + size.texture_size[0],\n texture_position[1]\n ];\n\n texcoord_stroke = Texture.getTexcoordsForSprite(\n texture_position_stroke,\n size.texture_size,\n texture.texture_size\n );\n\n cache.texcoord = texcoord;\n cache.texcoord_stroke = texcoord_stroke;\n\n // NB: texture_id is the same between stroke and fill, so it's not duplicated here\n text_info.texcoords_stroke.push(texcoord_stroke);\n }\n\n text_info.texcoords.curved.push({\n texcoord,\n texture_id: cache.texture_id\n });\n }\n break;\n }\n }\n }\n else {\n let lines = this.textSize(style, text, text_settings).lines;\n\n for (let align in text_info.align) {\n // Only render for current texture\n if (text_info.align[align].texture_id !== cursor.texture_idx) {\n continue;\n }\n\n this.drawTextMultiLine(lines, text_info.align[align].texture_position, text_info.size, {\n stroke: text_settings.stroke,\n stroke_width: text_settings.stroke_width,\n transform: text_settings.transform,\n supersample: text_settings.supersample,\n align: align\n });\n\n text_info.align[align].texcoords = Texture.getTexcoordsForSprite(\n text_info.align[align].texture_position,\n text_info.size.texture_size,\n texture.texture_size\n );\n }\n }\n\n cursor.text_idx++;\n\n if (!Task.shouldContinue(task)) {\n return false;\n }\n }\n cursor.text_idx = null;\n cursor.style_idx++;\n }\n\n // Create GL texture (canvas element will be reused for next texture)\n let tname = task.texture_prefix + cursor.texture_idx;\n Texture.create(task.gl, tname, {\n element: this.canvas,\n filtering: 'linear',\n UNPACK_PREMULTIPLY_ALPHA_WEBGL: true\n });\n Texture.retain(tname);\n cursor.texture_names.push(tname);\n\n cursor.texture_idx++;\n cursor.texture_resize = true;\n cursor.style_idx = 0;\n }\n\n Task.finish(task, { textures: cursor.texture_names });\n return true;\n }\n\n // Free any textures that have been allocated part-way through label rasterization for a tile\n cancelRasterizeTask (task) {\n log('trace', `RasterizeTask: release textures [${task.cursor.texture_names.join(', ')}]`);\n task.cursor.texture_names.forEach(t => Texture.release(t));\n }\n\n // Place text labels within an atlas of the given max size\n setTextureTextPositions (texts, max_texture_size) {\n let texture = {\n cx: 0,\n cy: 0,\n width: 0,\n height: 0,\n column_width: 0,\n texture_id: 0,\n texcoord_cache: {}\n },\n textures = [];\n let texcoord_cache = texture.texcoord_cache;\n\n for (let style in texts) {\n let text_infos = texts[style];\n\n for (let text in text_infos) {\n let text_info = text_infos[text];\n let texture_position;\n\n if (text_info.text_settings.can_articulate){\n text_info.textures = [];\n texcoord_cache[style] = texcoord_cache[style] || {};\n\n for (let t = 0; t < text_info.type.length; t++){\n let type = text_info.type[t];\n\n switch (type){\n case 'straight':\n let word = (text_info.isRTL) ? text.split().reverse().join() : text;\n\n if (!texcoord_cache[style][word]) {\n let size = text_info.total_size.texture_size;\n texture_position = this.placeText(size[0], size[1], style, texture, textures, max_texture_size);\n texcoord_cache[style][word] = {\n texture_id: texture.texture_id,\n texture_position\n };\n }\n\n text_info.textures[t] = texture.texture_id;\n\n break;\n\n case 'curved':\n text_info.textures[t] = [];\n\n for (let w = 0; w < text_info.size.length; w++) {\n let word = text_info.segments[w];\n\n if (!texcoord_cache[style][word]) {\n let size = text_info.size[w].texture_size;\n let width = 2 * size[0]; // doubled to account for side-by-side rendering of fill and stroke\n texture_position = this.placeText(width, size[1], style, texture, textures, max_texture_size);\n texcoord_cache[style][word] = {\n texture_id: texture.texture_id,\n texture_position\n };\n }\n\n text_info.textures[t].push(texture.texture_id);\n }\n\n break;\n }\n }\n }\n else {\n // rendered size is same for all alignments\n let size = text_info.size.texture_size;\n\n // but each alignment needs to be rendered separately\n for (let align in text_info.align) {\n texture_position = this.placeText (size[0], size[1], style, texture, textures, max_texture_size);\n text_info.align[align].texture_id = texture.texture_id;\n text_info.align[align].texture_position = texture_position;\n }\n }\n }\n }\n\n // save final texture\n if (texture.column_width > 0 && texture.height > 0) {\n textures[texture.texture_id] = {\n texture_size: [texture.width, texture.height],\n texcoord_cache: texture.texcoord_cache\n };\n }\n\n // return computed texture sizes and UV cache\n return Promise.resolve({ textures });\n }\n\n // Place text sprite in texture atlas, enlarging current texture, or starting new one if max texture size reached\n placeText (text_width, text_height, style, texture, textures, max_texture_size) {\n let texture_position;\n\n // TODO: what if first label is wider than entire max texture?\n\n if (texture.cy + text_height > max_texture_size) {\n // start new column\n texture.cx += texture.column_width;\n texture.cy = 0;\n texture.column_width = text_width;\n }\n else {\n // expand current column\n texture.column_width = Math.max(texture.column_width, text_width);\n }\n\n if (texture.cx + texture.column_width <= max_texture_size) {\n // add label to current texture\n texture_position = [texture.cx, texture.cy];\n\n texture.cy += text_height;\n\n // expand texture if needed\n texture.height = Math.max(texture.height, texture.cy);\n texture.width = Math.max(texture.width, texture.cx + texture.column_width);\n }\n else {\n // start new texture\n // save size and cache of last texture\n textures[texture.texture_id] = {\n texture_size: [texture.width, texture.height],\n texcoord_cache: texture.texcoord_cache\n };\n texture.texcoord_cache = {}; // reset cache\n texture.texcoord_cache[style] = {};\n\n texture.texture_id++;\n texture.cx = 0;\n texture.cy = text_height;\n texture.column_width = text_width;\n texture.width = text_width;\n texture.height = text_height;\n texture_position = [0, 0]; // TODO: allocate zero array once\n }\n\n return texture_position;\n }\n\n // Called before rasterization\n applyTextTransform (text, transform) {\n if (transform === 'capitalize') {\n return text.replace(/\\w\\S*/g, function (txt) {\n return txt.charAt(0).toUpperCase() + txt.substr(1);\n });\n }\n else if (transform === 'uppercase') {\n return text.toUpperCase();\n }\n else if (transform === 'lowercase') {\n return text.toLowerCase();\n }\n return text;\n }\n\n // Convert font CSS-style size ('12px', '14pt', '1.5em', etc.) to pixel size (adjusted for device pixel ratio)\n // Defaults units to pixels if not specified\n static fontPixelSize (size) {\n if (size == null) {\n return;\n }\n size = (typeof size === 'string') ? size : String(size); // need a string for regex\n\n let [, px_size, units] = size.match(CanvasText.font_size_re) || [];\n units = units || 'px';\n\n if (units === \"em\") {\n px_size *= 16;\n } else if (units === \"pt\") {\n px_size /= 0.75;\n } else if (units === \"%\") {\n px_size /= 6.25;\n }\n\n px_size = parseFloat(px_size);\n px_size *= Utils.device_pixel_ratio;\n return px_size;\n }\n\n static pruneTextCache () {\n if (CanvasText.cache.text_count > CanvasText.cache.text_count_max) {\n CanvasText.cache.text = {};\n CanvasText.cache.text_count = 0;\n log('debug', 'CanvasText: pruning text cache');\n }\n\n if (Object.keys(CanvasText.cache.segment).length > CanvasText.cache.segment_count_max) {\n CanvasText.cache.segment = {};\n log('debug', 'CanvasText: pruning segment cache');\n }\n }\n\n}\n\n// Extract font size and units\nCanvasText.font_size_re = /((?:[0-9]*\\.)?[0-9]+)\\s*(px|pt|em|%)?/;\n\n// Cache sizes of rendered text\nCanvasText.cache = {\n text: {}, // size and line parsing, by text style, then text string\n text_count: 0, // current size of cache (measured as # of entries)\n text_count_max: 2000, // prune cache when it exceeds this size\n segment: {}, // segmentation of text (by run of characters or grapheme clusters), by text string\n segment_count_max: 2000, // prune cache when it exceeds this size\n stats: { text_hits: 0, text_misses: 0, segment_hits: 0, segment_misses: 0 }\n};\n\n// Right-to-left / bi-directional text handling\n// Taken from http://stackoverflow.com/questions/12006095/javascript-how-to-check-if-character-is-rtl\nconst rtlDirCheck = new RegExp('[\\u0591-\\u07FF\\u200F\\u202B\\u202E\\uFB1D-\\uFDFD\\uFE70-\\uFEFC]');\nfunction isTextRTL(s){\n return rtlDirCheck.test(s);\n}\n\nconst neutral_chars = '\\u0000-\\u002F\\u003A-\\u0040\\u005B-\\u0060\\u007B-\\u00BF\\u00D7\\u00F7\\u02B9-\\u02FF\\u2000-\\u2BFF\\u2010-\\u2029\\u202C\\u202F-\\u2BFF';\nconst neutralDirCheck = new RegExp('['+neutral_chars+']+');\nfunction isTextNeutral(s){\n return neutralDirCheck.test(s);\n}\n\nconst markRTL = '\\u200F'; // explicit right-to-left marker\n\n// test http://localhost:8000/#16.72917/30.08541/31.28466\nconst arabic_range = new RegExp('^['+neutral_chars+'\\u0600-\\u06FF]+'); // all characters are Arabic or neutral\nconst arabic_splitters = new RegExp('['+neutral_chars+'\\u0622-\\u0625\\u0627\\u062F-\\u0632\\u0648\\u0671-\\u0677\\u0688-\\u0699\\u06C4-\\u06CB\\u06CF\\u06D2\\u06D3\\u06EE\\u06EF]');\nconst arabic_vowels = new RegExp('^[\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED]+');\nconst accents_and_vowels = \"[\\u0300-\\u036F\" + // Combining Diacritical Marks\n\"\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\" + // Hebrew\n\"\\u07A6-\\u07B0\" + // Thaana\n\"\\u0900-\\u0903\\u093A-\\u094C\\u094E\\u094F\\u0951-\\u0957\\u0962\\u0963\" + // Devanagari\n\"\\u0981-\\u0983\\u09BC\\u09BE-\\u09CC\\u09D7\\u09E2\\u09E3\" + // Bengali\n\"\\u0A01-\\u0A03\\u0A3C-\\u0A4C\\u0A51\" + // Gurmukhi\n\"\\u0A81-\\u0A83\\u0ABC\\u0ABE-\\u0ACC\\u0AE2\\u0AE3\" + // Gujarati\n\"\\u0B01-\\u0B03\\u0B3C\\u0B3E-\\u0B4C\\u0B56\\u0B57\\u0B62\\u0B63\" + // Oriya\n\"\\u0B82\\u0BBE-\\u0BCD\\u0BD7\" + // Tamil\n\"\\u0C00-\\u0C03\\u0C3E-\\u0C4C\\u0C55\\u0C56\\u0C62\\u0C63\" + // Telugu\n\"\\u0C81-\\u0C83\\u0CBC\\u0CBE-\\u0CCC\\u0CD5\\u0CD6\\u0CE2\\u0CE3\" + // Kannada\n\"\\u0D01-\\u0D03\\u0D3E-\\u0D4C\\u0D4E\\u0D57\\u0D62\\u0D63\" + // Malayalam\n\"\\u0D82\\u0D83\\u0DCA-\\u0DDF\\u0DF2\\u0DF3\" + // Sinhala\n\"\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\" + // Thai\n\"\\u0EB1\\u0EB4-\\u0EBC\\u0EC8-\\u0ECD\" + // Lao\n\"\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F3E\\u0F3F\\u0F71-\\u0F83\\u0F86\\u0F87\\u0F8D-\\u0FBC\\u0FC6\" + // Tibetan\n\"\\u102B-\\u1038\\u103A-\\u103E\\u1056-\\u1059\\u105E-\\u1060\\u1062-\\u1064\\u1067-\\u106D\\u1071-\\u1074\\u1082-\\u108D\\u108F\\u109A-\\u109D\" + // Burmese\n\"\\u17B4-\\u17D1\\u17D3\" + // Khmer\n\"\\u1A55-\\u1A5E\\u1A61-\\u1A7C\" + // Tai Tham\n\"\\u1DC0-\\u1DFF\" + // Combining Diacritical Marks Supplement\n\"\\u20D0-\\u20FF\" + // Combining Diacritical Marks for Symbols\n\"]\";\nconst combo_characters = \"[\\u094D\\u09CD\\u0A4D\\u0ACD\\u0B4D\\u0C4D\\u0CCD\\u0D4D\\u0F84\\u1039\\u17D2\\u1A60\\u1A7F]\";\nconst graphemeRegex = new RegExp(\"^.(?:\" + accents_and_vowels + \"+)?\" + \"(\" + combo_characters + \"\\\\W(?:\" + accents_and_vowels + \"+)?)*\");\n\n// Scripts that cannot be curved due (due to contextual shaping and/or layout complexity)\nconst curve_blacklist = {\n Mongolian: \"\\u1800-\\u18AF\"\n};\nconst curve_blacklist_range = Object.keys(curve_blacklist).map(r => curve_blacklist[r]).join('');\nconst curve_blacklist_test = new RegExp('['+curve_blacklist_range+']');\nfunction isTextCurveBlacklisted(s){\n return curve_blacklist_test.test(s);\n}\n\n// Splitting strategy for chopping a label into segments\nconst default_segment_length = 2; // character length of each segment when dividing up label text\n\nfunction splitLabelText(text, rtl){\n // Use single-character segments for RTL, to avoid additional handling for neutral characters\n // (see https://github.com/tangrams/tangram/issues/541)\n const segment_length = rtl ? 1 : default_segment_length;\n\n if (text.length < segment_length) {\n return [text];\n }\n\n let key = text;\n if (CanvasText.cache.segment[key]) {\n CanvasText.cache.stats.segment_hits++;\n return CanvasText.cache.segment[key];\n }\n\n let segments = [];\n\n if (arabic_range.exec(text)) {\n segments = text.split(arabic_splitters);\n let offset = -1;\n for (var s = 0; s < segments.length - 1; s++) {\n if (s > 0) {\n let carryoverVowels = arabic_vowels.exec(segments[s]);\n if (carryoverVowels) {\n segments[s] = segments[s].substring(carryoverVowels[0].length);\n segments[s - 1] += carryoverVowels[0];\n offset += carryoverVowels[0].length;\n }\n }\n offset += 1 + segments[s].length;\n segments[s] += text.slice(offset, offset + 1);\n }\n text = \"\";\n }\n\n while (text.length){\n let segment = '';\n let testText = text;\n let graphemeCount = 0;\n\n for (graphemeCount; graphemeCount < segment_length && testText.length; graphemeCount++) {\n let graphemeCluster = (graphemeRegex.exec(testText) || testText)[0];\n segment += graphemeCluster;\n testText = testText.substring(graphemeCluster.length);\n }\n\n segments.push(segment);\n text = text.substring(segment.length);\n }\n\n if (rtl) {\n segments.reverse();\n }\n\n CanvasText.cache.stats.segment_misses++;\n CanvasText.cache.segment[key] = segments;\n return segments;\n}\n\n// Private class to arrange text labels into multiple lines based on\n// \"text wrap\" and \"max line\" values\nclass MultiLine {\n constructor (context, max_lines = Infinity, text_wrap = Infinity) {\n this.width = 0;\n this.height = 0;\n this.lines = [];\n\n this.max_lines = max_lines;\n this.text_wrap = text_wrap;\n this.context = context;\n }\n\n createLine (line_height){\n if (this.lines.length < this.max_lines){\n return new Line(line_height, this.text_wrap);\n }\n else {\n return false;\n }\n }\n\n push (line){\n if (this.lines.length < this.max_lines){\n // measure line width\n let line_width = this.context.measureText(line.text).width;\n line.width = line_width;\n\n if (line_width > this.width){\n this.width = Math.ceil(line_width);\n }\n\n // add to lines and increment height\n this.lines.push(line);\n this.height += line.height;\n return true;\n }\n else {\n this.addEllipsis();\n return false;\n }\n }\n\n // pushes to the lines array and returns a new line if possible (false otherwise)\n advance (line, line_height) {\n let can_push = this.push(line);\n if (can_push){\n return this.createLine(line_height);\n }\n else {\n return false;\n }\n }\n\n addEllipsis (){\n let last_line = this.lines[this.lines.length - 1];\n let ellipsis_width = Math.ceil(this.context.measureText(MultiLine.ellipsis).width);\n\n last_line.append(MultiLine.ellipsis);\n last_line.width += ellipsis_width;\n\n if (last_line.width > this.width) {\n this.width = last_line.width;\n }\n }\n\n finish (line){\n if (line){\n this.push(line);\n }\n else {\n this.addEllipsis();\n }\n }\n\n static parse (str, text_wrap, max_lines, line_height, ctx) {\n // Word wrapping\n // Line breaks can be caused by:\n // - implicit line break when a maximum character threshold is exceeded per line (text_wrap)\n // - explicit line break in the label text (\\n)\n let words;\n if (typeof text_wrap === 'number') {\n words = str.split(' '); // split words on spaces\n }\n else {\n words = [str]; // no max line word wrapping (but new lines will still be in effect)\n }\n\n let multiline = new MultiLine(ctx, max_lines, text_wrap);\n let line = multiline.createLine(line_height);\n\n // First iterate on space-break groups (will be one if max line length off), then iterate on line-break groups\n for (let i = 0; i < words.length; i++) {\n let breaks = words[i].split('\\n'); // split on line breaks\n let new_line = (i === 0) ? true : false;\n\n for (let n=0; n < breaks.length; n++) {\n if (!line){\n break;\n }\n\n let word = breaks[n];\n\n // force punctuation (neutral chars) at the end of a RTL line, so they stay attached to original word\n if (isTextRTL(word) && isTextNeutral(word[word.length - 1])) {\n word += markRTL;\n }\n\n let spaced_word = (new_line) ? word : ' ' + word;\n\n // if adding current word would overflow, add a new line instead\n // first word (i === 0) always appends\n if (text_wrap && i > 0 && line.exceedsTextwrap(spaced_word)) {\n line = multiline.advance(line, line_height);\n if (!line){\n break;\n }\n line.append(word);\n new_line = true;\n }\n else {\n line.append(spaced_word);\n }\n\n // if line breaks present, add new line (unless on last line)\n if (n < breaks.length - 1) {\n line = multiline.advance(line, line_height);\n new_line = true;\n }\n }\n\n if (i === words.length - 1){\n multiline.finish(line);\n }\n }\n return multiline;\n }\n}\n\nMultiLine.ellipsis = '...';\n\n// A Private class used by MultiLine to contain the logic for a single line\n// including character count, width, height and text\nclass Line {\n constructor (height = 0, text_wrap = 0){\n this.chars = 0;\n this.text = '';\n\n this.height = Math.ceil(height);\n this.text_wrap = text_wrap;\n }\n\n append (text){\n this.chars += text.length;\n this.text += text;\n }\n\n exceedsTextwrap (text){\n return text.length + this.chars > this.text_wrap;\n }\n}\n", + "import log from '../../utils/log';\nimport Utils from '../../utils/utils';\nimport Texture from '../../gl/texture';\nimport FontManager from './font_manager';\nimport Task from '../../utils/task';\nimport debugSettings from '../../utils/debug_settings';\n\nexport default class CanvasText {\n\n constructor () {\n this.createCanvas(); // create initial canvas and context\n this.vertical_text_buffer = 8; // vertical pixel padding around text\n this.horizontal_text_buffer = 4; // text styling such as italic emphasis is not measured by the Canvas API, so padding is necessary\n }\n\n createCanvas () {\n this.canvas = document.createElement('canvas');\n this.canvas.style.backgroundColor = 'transparent'; // render text on transparent background\n this.context = this.canvas.getContext('2d');\n }\n\n resize (width, height) {\n this.canvas.width = width;\n this.canvas.height = height;\n this.context.clearRect(0, 0, width, height);\n }\n\n // Set font style params for canvas drawing\n setFont ({ font_css, fill, stroke, stroke_width, px_size, supersample }) {\n this.px_size = px_size;\n let ctx = this.context;\n let dpr = Utils.device_pixel_ratio * supersample;\n\n if (stroke && stroke_width > 0) {\n ctx.strokeStyle = stroke;\n ctx.lineWidth = stroke_width * dpr;\n }\n ctx.fillStyle = fill;\n\n ctx.font = font_css;\n ctx.miterLimit = 2;\n }\n\n textSizes (tile_id, texts) {\n return FontManager.loadFonts().then(() => {\n return Task.add({\n type: 'textSizes',\n target: this,\n method: 'processTextSizesTask',\n texts,\n tile_id,\n cursor: {\n styles: Object.keys(texts),\n texts: null,\n style_idx: null,\n text_idx: null\n }\n });\n });\n }\n\n processTextSizesTask (task) {\n let { cursor, texts } = task;\n cursor.style_idx = cursor.style_idx || 0;\n\n while (cursor.style_idx < cursor.styles.length) {\n let style = cursor.styles[cursor.style_idx];\n if (cursor.text_idx == null) {\n cursor.text_idx = 0;\n cursor.texts = Object.keys(texts[style]);\n }\n\n let text_infos = texts[style];\n let first = true;\n\n while (cursor.text_idx < cursor.texts.length) {\n let text = cursor.texts[cursor.text_idx];\n let text_info = text_infos[text];\n let text_settings = text_info.text_settings;\n\n if (first) {\n this.setFont(text_settings);\n first = false;\n }\n\n // add size of full text string\n text_info.size = this.textSize(style, text, text_settings).size;\n\n // if text may curve, calculate per-segment as well\n if (text_settings.can_articulate) {\n let rtl = false;\n let bidi = false;\n if (isTextRTL(text)) {\n if (!isTextNeutral(text)) {\n bidi = true;\n }\n else {\n rtl = true;\n }\n }\n\n text_info.isRTL = rtl;\n text_info.no_curving = bidi || isTextCurveBlacklisted(text); // used in LabelLine to prevent curved labels\n text_info.vertical_buffer = this.vertical_text_buffer;\n text_info.segment_sizes = [];\n\n if (!text_info.no_curving) {\n let segments = splitLabelText(text, rtl);\n text_info.segments = segments;\n for (let i = 0; i < segments.length; i++){\n text_info.segment_sizes.push(this.textSize(style, segments[i], text_settings).size);\n }\n }\n }\n\n cursor.text_idx++;\n\n if (!Task.shouldContinue(task)) {\n return false;\n }\n }\n cursor.text_idx = null;\n cursor.style_idx++;\n }\n\n Task.finish(task, { texts });\n return true;\n }\n\n // Computes width and height of text based on current font style\n // Includes word wrapping, returns size info for whole text block and individual lines\n textSize (style, text, {transform, text_wrap, max_lines, stroke_width = 0, supersample}) {\n // Check cache first\n CanvasText.cache.text[style] = CanvasText.cache.text[style] || {};\n if (CanvasText.cache.text[style][text]) {\n CanvasText.cache.stats.text_hits++;\n return CanvasText.cache.text[style][text];\n }\n CanvasText.cache.stats.text_misses++;\n CanvasText.cache.text_count++;\n\n // Calc and store in cache\n let dpr = Utils.device_pixel_ratio * supersample;\n let str = this.applyTextTransform(text, transform);\n let ctx = this.context;\n let vertical_buffer = this.vertical_text_buffer * dpr;\n let horizontal_buffer = dpr * (stroke_width + this.horizontal_text_buffer);\n let leading = 2 * dpr; // make configurable and/or use Canvas TextMetrics when available\n let line_height = this.px_size + leading; // px_size already in device pixels\n\n // Parse string into series of lines if it exceeds the text wrapping value or contains line breaks\n let multiline = MultiLine.parse(str, text_wrap, max_lines, line_height, ctx);\n\n // Final dimensions of text\n let height = multiline.height;\n let width = multiline.width;\n let lines = multiline.lines;\n\n let collision_size = [\n width / dpr,\n height / dpr\n ];\n\n let texture_size = [\n width + 2 * horizontal_buffer,\n height + 2 * vertical_buffer\n ];\n\n let logical_size = [\n texture_size[0] / dpr,\n texture_size[1] / dpr,\n ];\n\n // Returns lines (w/per-line info for drawing) and text's overall bounding box + canvas size\n CanvasText.cache.text[style][text] = {\n lines,\n size: { collision_size, texture_size, logical_size, line_height }\n };\n return CanvasText.cache.text[style][text];\n }\n\n // Draw multiple lines of text\n drawTextMultiLine (lines, [x, y], size, { stroke, stroke_width = 0, transform, align, supersample }, type) {\n let line_height = size.line_height;\n let height = y;\n for (let line_num=0; line_num < lines.length; line_num++) {\n let line = lines[line_num];\n this.drawTextLine(line, [x, height], size, { stroke, stroke_width, transform, align, supersample }, type);\n height += line_height;\n }\n\n // Draw bounding boxes for debugging\n if (debugSettings.draw_label_collision_boxes) {\n this.context.save();\n\n let dpr = Utils.device_pixel_ratio * supersample;\n let horizontal_buffer = dpr * (this.horizontal_text_buffer + stroke_width);\n let vertical_buffer = dpr * this.vertical_text_buffer;\n let collision_size = size.collision_size;\n let lineWidth = 2;\n\n this.context.strokeStyle = 'blue';\n this.context.lineWidth = lineWidth;\n this.context.strokeRect(x + horizontal_buffer, y + vertical_buffer, dpr * collision_size[0], dpr * collision_size[1]);\n if (type === 'curved'){\n this.context.strokeRect(x + size.texture_size[0] + horizontal_buffer, y + vertical_buffer, dpr * collision_size[0], dpr * collision_size[1]);\n }\n\n this.context.restore();\n }\n\n if (debugSettings.draw_label_texture_boxes) {\n this.context.save();\n\n let texture_size = size.texture_size;\n let lineWidth = 2;\n\n this.context.strokeStyle = 'green';\n this.context.lineWidth = lineWidth;\n // stroke is applied internally, so the outer border is the edge of the texture\n this.context.strokeRect(x + lineWidth, y + lineWidth, texture_size[0] - 2 * lineWidth, texture_size[1] - 2 * lineWidth);\n\n if (type === 'curved'){\n this.context.strokeRect(x + lineWidth + size.texture_size[0], y + lineWidth, texture_size[0] - 2 * lineWidth, texture_size[1] - 2 * lineWidth);\n }\n\n this.context.restore();\n }\n }\n\n // Draw single line of text at specified location, adjusting for buffer and baseline\n drawTextLine (line, [x, y], size, { stroke, stroke_width = 0, transform, align, supersample }, type) {\n let dpr = Utils.device_pixel_ratio * supersample;\n align = align || 'center';\n\n let vertical_buffer = this.vertical_text_buffer * dpr;\n let texture_size = size.texture_size;\n let line_height = size.line_height;\n let horizontal_buffer = dpr * (stroke_width + this.horizontal_text_buffer);\n\n let str = this.applyTextTransform(line.text, transform);\n\n // Text alignment\n let tx;\n if (align === 'left') {\n tx = x + horizontal_buffer;\n }\n else if (align === 'center') {\n tx = x + texture_size[0]/2 - line.width/2;\n }\n else if (align === 'right') {\n tx = x + texture_size[0] - line.width - horizontal_buffer;\n }\n\n // In the absence of better Canvas TextMetrics (not supported by browsers yet),\n // 0.75 buffer produces a better approximate vertical centering of text\n let ty = y + vertical_buffer * 0.75 + line_height;\n\n // Draw stroke and fill separately for curved text. Offset stroke in texture atlas by shift.\n if (stroke && stroke_width > 0) {\n let shift = (type === 'curved') ? texture_size[0] : 0;\n this.context.strokeText(str, tx + shift, ty);\n }\n this.context.fillText(str, tx, ty);\n }\n\n rasterize (texts, textures, tile_id, texture_prefix, gl) {\n return Task.add({\n type: 'rasterizeLabels',\n target: this,\n method: 'processRasterizeTask',\n cancel: 'cancelRasterizeTask',\n pause_factor: 2, // pause 2 frames when task run past allowed time\n user_moving_view: false, // don't run task when user is moving view\n texts,\n textures,\n texture_prefix,\n gl,\n tile_id,\n cursor: {\n styles: Object.keys(texts),\n texts: null,\n style_idx: 0,\n text_idx: null,\n texture_idx: 0,\n texture_resize: true,\n texture_names: []\n }\n });\n }\n\n processRasterizeTask (task) {\n let { cursor, texts, textures } = task;\n let texture;\n\n // Rasterize one texture at a time, so we only have to keep one canvas in memory (they can be large)\n while (cursor.texture_idx < task.textures.length) {\n texture = textures[cursor.texture_idx];\n\n if (cursor.texture_resize) {\n cursor.texture_resize = false;\n this.resize(...texture.texture_size);\n }\n\n while (cursor.style_idx < cursor.styles.length) {\n let style = cursor.styles[cursor.style_idx];\n if (cursor.text_idx == null) {\n cursor.text_idx = 0;\n cursor.texts = Object.keys(texts[style]);\n }\n\n let text_infos = texts[style];\n let first = true;\n\n while (cursor.text_idx < cursor.texts.length) {\n let text = cursor.texts[cursor.text_idx];\n let text_info = text_infos[text];\n let text_settings = text_info.text_settings;\n\n // set font on first occurence of new font style\n if (first) {\n this.setFont(text_settings);\n first = false;\n }\n\n if (text_settings.can_articulate){\n text_info.texcoords = text_info.texcoords || {};\n for (let t = 0; t < text_info.type.length; t++){\n\n let type = text_info.type[t];\n switch (type){\n case 'straight':\n // Only render for current texture\n if (text_info.textures[t] !== cursor.texture_idx) {\n continue;\n }\n\n let word = (text_info.isRTL) ? text.split().reverse().join() : text;\n let cache = texture.texcoord_cache[style][word];\n\n let texcoord;\n if (cache.texcoord){\n texcoord = cache.texcoord;\n }\n else {\n let texture_position = cache.texture_position;\n let { size, lines } = this.textSize(style, word, text_settings);\n\n this.drawTextMultiLine(lines, texture_position, size, text_settings, type);\n\n texcoord = Texture.getTexcoordsForSprite(\n texture_position,\n size.texture_size,\n texture.texture_size\n );\n\n cache.texcoord = texcoord;\n }\n\n text_info.texcoords[type] = {\n texcoord,\n texture_id: cache.texture_id\n };\n\n break;\n\n case 'curved':\n let words = text_info.segments;\n text_info.texcoords.curved = text_info.texcoords.curved || [];\n text_info.texcoords_stroke = text_info.texcoords_stroke || [];\n\n for (let w = 0; w < words.length; w++){\n // Only render for current texture\n if (text_info.textures[t][w] !== cursor.texture_idx) {\n continue;\n }\n\n let word = words[w];\n let cache = texture.texcoord_cache[style][word];\n\n let texcoord;\n let texcoord_stroke;\n if (cache.texcoord){\n texcoord = cache.texcoord;\n texcoord_stroke = cache.texcoord_stroke;\n text_info.texcoords_stroke.push(texcoord_stroke);\n }\n else {\n let texture_position = cache.texture_position;\n let { size, lines } = this.textSize(style, word, text_settings);\n\n this.drawTextMultiLine(lines, texture_position, size, text_settings, type);\n\n texcoord = Texture.getTexcoordsForSprite(\n texture_position,\n size.texture_size,\n texture.texture_size\n );\n\n let texture_position_stroke = [\n texture_position[0] + size.texture_size[0],\n texture_position[1]\n ];\n\n texcoord_stroke = Texture.getTexcoordsForSprite(\n texture_position_stroke,\n size.texture_size,\n texture.texture_size\n );\n\n cache.texcoord = texcoord;\n cache.texcoord_stroke = texcoord_stroke;\n\n // NB: texture_id is the same between stroke and fill, so it's not duplicated here\n text_info.texcoords_stroke.push(texcoord_stroke);\n }\n\n text_info.texcoords.curved.push({\n texcoord,\n texture_id: cache.texture_id\n });\n }\n break;\n }\n }\n }\n else {\n let lines = this.textSize(style, text, text_settings).lines;\n\n for (let align in text_info.align) {\n // Only render for current texture\n if (text_info.align[align].texture_id !== cursor.texture_idx) {\n continue;\n }\n\n this.drawTextMultiLine(lines, text_info.align[align].texture_position, text_info.size, {\n stroke: text_settings.stroke,\n stroke_width: text_settings.stroke_width,\n transform: text_settings.transform,\n supersample: text_settings.supersample,\n align: align\n });\n\n text_info.align[align].texcoords = Texture.getTexcoordsForSprite(\n text_info.align[align].texture_position,\n text_info.size.texture_size,\n texture.texture_size\n );\n }\n }\n\n cursor.text_idx++;\n\n if (!Task.shouldContinue(task)) {\n return false;\n }\n }\n cursor.text_idx = null;\n cursor.style_idx++;\n }\n\n // Create GL texture (canvas element will be reused for next texture)\n let tname = task.texture_prefix + cursor.texture_idx;\n Texture.create(task.gl, tname, {\n element: this.canvas,\n filtering: 'linear',\n UNPACK_PREMULTIPLY_ALPHA_WEBGL: true\n });\n Texture.retain(tname);\n cursor.texture_names.push(tname);\n\n cursor.texture_idx++;\n cursor.texture_resize = true;\n cursor.style_idx = 0;\n }\n\n Task.finish(task, { textures: cursor.texture_names });\n return true;\n }\n\n // Free any textures that have been allocated part-way through label rasterization for a tile\n cancelRasterizeTask (task) {\n log('trace', `RasterizeTask: release textures [${task.cursor.texture_names.join(', ')}]`);\n task.cursor.texture_names.forEach(t => Texture.release(t));\n }\n\n // Place text labels within an atlas of the given max size\n setTextureTextPositions (texts, max_texture_size) {\n let texture = {\n cx: 0,\n cy: 0,\n width: 0,\n height: 0,\n column_width: 0,\n texture_id: 0,\n texcoord_cache: {}\n },\n textures = [];\n\n for (let style in texts) {\n let text_infos = texts[style];\n\n for (let text in text_infos) {\n let text_info = text_infos[text];\n let texture_position;\n\n if (text_info.text_settings.can_articulate){\n text_info.textures = [];\n texture.texcoord_cache[style] = texture.texcoord_cache[style] || {};\n\n for (let t = 0; t < text_info.type.length; t++){\n let type = text_info.type[t];\n\n switch (type){\n case 'straight':\n let word = (text_info.isRTL) ? text.split().reverse().join() : text;\n\n if (!texture.texcoord_cache[style][word]) {\n let size = text_info.size.texture_size;\n texture_position = this.placeText(size[0], size[1], style, texture, textures, max_texture_size);\n texture.texcoord_cache[style][word] = {\n texture_id: texture.texture_id,\n texture_position\n };\n }\n\n text_info.textures[t] = texture.texture_id;\n\n break;\n\n case 'curved':\n text_info.textures[t] = [];\n\n for (let w = 0; w < text_info.segment_sizes.length; w++) {\n let word = text_info.segments[w];\n\n if (!texture.texcoord_cache[style][word]) {\n let size = text_info.segment_sizes[w].texture_size;\n let width = 2 * size[0]; // doubled to account for side-by-side rendering of fill and stroke\n texture_position = this.placeText(width, size[1], style, texture, textures, max_texture_size);\n texture.texcoord_cache[style][word] = {\n texture_id: texture.texture_id,\n texture_position\n };\n }\n\n text_info.textures[t].push(texture.texture_id);\n }\n\n break;\n }\n }\n }\n else {\n // rendered size is same for all alignments\n let size = text_info.size.texture_size;\n\n // but each alignment needs to be rendered separately\n for (let align in text_info.align) {\n texture_position = this.placeText (size[0], size[1], style, texture, textures, max_texture_size);\n text_info.align[align].texture_id = texture.texture_id;\n text_info.align[align].texture_position = texture_position;\n }\n }\n }\n }\n\n // save final texture\n if (texture.column_width > 0 && texture.height > 0) {\n textures[texture.texture_id] = {\n texture_size: [texture.width, texture.height],\n texcoord_cache: texture.texcoord_cache\n };\n }\n\n // return computed texture sizes and UV cache\n return Promise.resolve({ textures });\n }\n\n // Place text sprite in texture atlas, enlarging current texture, or starting new one if max texture size reached\n placeText (text_width, text_height, style, texture, textures, max_texture_size) {\n let texture_position;\n\n // TODO: what if first label is wider than entire max texture?\n\n if (texture.cy + text_height > max_texture_size) {\n // start new column\n texture.cx += texture.column_width;\n texture.cy = 0;\n texture.column_width = text_width;\n }\n else {\n // expand current column\n texture.column_width = Math.max(texture.column_width, text_width);\n }\n\n if (texture.cx + texture.column_width <= max_texture_size) {\n // add label to current texture\n texture_position = [texture.cx, texture.cy];\n\n texture.cy += text_height;\n\n // expand texture if needed\n texture.height = Math.max(texture.height, texture.cy);\n texture.width = Math.max(texture.width, texture.cx + texture.column_width);\n }\n else {\n // start new texture\n // save size and cache of last texture\n textures[texture.texture_id] = {\n texture_size: [texture.width, texture.height],\n texcoord_cache: texture.texcoord_cache\n };\n texture.texcoord_cache = {}; // reset cache\n texture.texcoord_cache[style] = {};\n\n texture.texture_id++;\n texture.cx = 0;\n texture.cy = text_height;\n texture.column_width = text_width;\n texture.width = text_width;\n texture.height = text_height;\n texture_position = [0, 0]; // TODO: allocate zero array once\n }\n\n return texture_position;\n }\n\n // Called before rasterization\n applyTextTransform (text, transform) {\n if (transform === 'capitalize') {\n return text.replace(/\\w\\S*/g, function (txt) {\n return txt.charAt(0).toUpperCase() + txt.substr(1);\n });\n }\n else if (transform === 'uppercase') {\n return text.toUpperCase();\n }\n else if (transform === 'lowercase') {\n return text.toLowerCase();\n }\n return text;\n }\n\n // Convert font CSS-style size ('12px', '14pt', '1.5em', etc.) to pixel size (adjusted for device pixel ratio)\n // Defaults units to pixels if not specified\n static fontPixelSize (size) {\n if (size == null) {\n return;\n }\n size = (typeof size === 'string') ? size : String(size); // need a string for regex\n\n let [, px_size, units] = size.match(CanvasText.font_size_re) || [];\n units = units || 'px';\n\n if (units === \"em\") {\n px_size *= 16;\n } else if (units === \"pt\") {\n px_size /= 0.75;\n } else if (units === \"%\") {\n px_size /= 6.25;\n }\n\n px_size = parseFloat(px_size);\n px_size *= Utils.device_pixel_ratio;\n return px_size;\n }\n\n static pruneTextCache () {\n if (CanvasText.cache.text_count > CanvasText.cache.text_count_max) {\n CanvasText.cache.text = {};\n CanvasText.cache.text_count = 0;\n log('debug', 'CanvasText: pruning text cache');\n }\n\n if (Object.keys(CanvasText.cache.segment).length > CanvasText.cache.segment_count_max) {\n CanvasText.cache.segment = {};\n log('debug', 'CanvasText: pruning segment cache');\n }\n }\n\n}\n\n// Extract font size and units\nCanvasText.font_size_re = /((?:[0-9]*\\.)?[0-9]+)\\s*(px|pt|em|%)?/;\n\n// Cache sizes of rendered text\nCanvasText.cache = {\n text: {}, // size and line parsing, by text style, then text string\n text_count: 0, // current size of cache (measured as # of entries)\n text_count_max: 2000, // prune cache when it exceeds this size\n segment: {}, // segmentation of text (by run of characters or grapheme clusters), by text string\n segment_count_max: 2000, // prune cache when it exceeds this size\n stats: { text_hits: 0, text_misses: 0, segment_hits: 0, segment_misses: 0 }\n};\n\n// Right-to-left / bi-directional text handling\n// Taken from http://stackoverflow.com/questions/12006095/javascript-how-to-check-if-character-is-rtl\nconst rtlDirCheck = new RegExp('[\\u0591-\\u07FF\\u200F\\u202B\\u202E\\uFB1D-\\uFDFD\\uFE70-\\uFEFC]');\nfunction isTextRTL(s){\n return rtlDirCheck.test(s);\n}\n\nconst neutral_chars = '\\u0000-\\u002F\\u003A-\\u0040\\u005B-\\u0060\\u007B-\\u00BF\\u00D7\\u00F7\\u02B9-\\u02FF\\u2000-\\u2BFF\\u2010-\\u2029\\u202C\\u202F-\\u2BFF';\nconst neutralDirCheck = new RegExp('['+neutral_chars+']+');\nfunction isTextNeutral(s){\n return neutralDirCheck.test(s);\n}\n\nconst markRTL = '\\u200F'; // explicit right-to-left marker\n\n// test http://localhost:8000/#16.72917/30.08541/31.28466\nconst arabic_range = new RegExp('^['+neutral_chars+'\\u0600-\\u06FF]+'); // all characters are Arabic or neutral\nconst arabic_splitters = new RegExp('['+neutral_chars+'\\u0622-\\u0625\\u0627\\u062F-\\u0632\\u0648\\u0671-\\u0677\\u0688-\\u0699\\u06C4-\\u06CB\\u06CF\\u06D2\\u06D3\\u06EE\\u06EF]');\nconst arabic_vowels = new RegExp('^[\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED]+');\nconst accents_and_vowels = \"[\\u0300-\\u036F\" + // Combining Diacritical Marks\n\"\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\" + // Hebrew\n\"\\u07A6-\\u07B0\" + // Thaana\n\"\\u0900-\\u0903\\u093A-\\u094C\\u094E\\u094F\\u0951-\\u0957\\u0962\\u0963\" + // Devanagari\n\"\\u0981-\\u0983\\u09BC\\u09BE-\\u09CC\\u09D7\\u09E2\\u09E3\" + // Bengali\n\"\\u0A01-\\u0A03\\u0A3C-\\u0A4C\\u0A51\" + // Gurmukhi\n\"\\u0A81-\\u0A83\\u0ABC\\u0ABE-\\u0ACC\\u0AE2\\u0AE3\" + // Gujarati\n\"\\u0B01-\\u0B03\\u0B3C\\u0B3E-\\u0B4C\\u0B56\\u0B57\\u0B62\\u0B63\" + // Oriya\n\"\\u0B82\\u0BBE-\\u0BCD\\u0BD7\" + // Tamil\n\"\\u0C00-\\u0C03\\u0C3E-\\u0C4C\\u0C55\\u0C56\\u0C62\\u0C63\" + // Telugu\n\"\\u0C81-\\u0C83\\u0CBC\\u0CBE-\\u0CCC\\u0CD5\\u0CD6\\u0CE2\\u0CE3\" + // Kannada\n\"\\u0D01-\\u0D03\\u0D3E-\\u0D4C\\u0D4E\\u0D57\\u0D62\\u0D63\" + // Malayalam\n\"\\u0D82\\u0D83\\u0DCA-\\u0DDF\\u0DF2\\u0DF3\" + // Sinhala\n\"\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\" + // Thai\n\"\\u0EB1\\u0EB4-\\u0EBC\\u0EC8-\\u0ECD\" + // Lao\n\"\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F3E\\u0F3F\\u0F71-\\u0F83\\u0F86\\u0F87\\u0F8D-\\u0FBC\\u0FC6\" + // Tibetan\n\"\\u102B-\\u1038\\u103A-\\u103E\\u1056-\\u1059\\u105E-\\u1060\\u1062-\\u1064\\u1067-\\u106D\\u1071-\\u1074\\u1082-\\u108D\\u108F\\u109A-\\u109D\" + // Burmese\n\"\\u17B4-\\u17D1\\u17D3\" + // Khmer\n\"\\u1A55-\\u1A5E\\u1A61-\\u1A7C\" + // Tai Tham\n\"\\u1DC0-\\u1DFF\" + // Combining Diacritical Marks Supplement\n\"\\u20D0-\\u20FF\" + // Combining Diacritical Marks for Symbols\n\"]\";\nconst combo_characters = \"[\\u094D\\u09CD\\u0A4D\\u0ACD\\u0B4D\\u0C4D\\u0CCD\\u0D4D\\u0F84\\u1039\\u17D2\\u1A60\\u1A7F]\";\nconst graphemeRegex = new RegExp(\"^.(?:\" + accents_and_vowels + \"+)?\" + \"(\" + combo_characters + \"\\\\W(?:\" + accents_and_vowels + \"+)?)*\");\n\n// Scripts that cannot be curved due (due to contextual shaping and/or layout complexity)\nconst curve_blacklist = {\n Mongolian: \"\\u1800-\\u18AF\"\n};\nconst curve_blacklist_range = Object.keys(curve_blacklist).map(r => curve_blacklist[r]).join('');\nconst curve_blacklist_test = new RegExp('['+curve_blacklist_range+']');\nfunction isTextCurveBlacklisted(s){\n return curve_blacklist_test.test(s);\n}\n\n// Splitting strategy for chopping a label into segments\nconst default_segment_length = 2; // character length of each segment when dividing up label text\n\nfunction splitLabelText(text, rtl){\n // Use single-character segments for RTL, to avoid additional handling for neutral characters\n // (see https://github.com/tangrams/tangram/issues/541)\n const segment_length = rtl ? 1 : default_segment_length;\n\n if (text.length < segment_length) {\n return [text];\n }\n\n let key = text;\n if (CanvasText.cache.segment[key]) {\n CanvasText.cache.stats.segment_hits++;\n return CanvasText.cache.segment[key];\n }\n\n let segments = [];\n\n if (arabic_range.exec(text)) {\n segments = text.split(arabic_splitters);\n let offset = -1;\n for (var s = 0; s < segments.length - 1; s++) {\n if (s > 0) {\n let carryoverVowels = arabic_vowels.exec(segments[s]);\n if (carryoverVowels) {\n segments[s] = segments[s].substring(carryoverVowels[0].length);\n segments[s - 1] += carryoverVowels[0];\n offset += carryoverVowels[0].length;\n }\n }\n offset += 1 + segments[s].length;\n segments[s] += text.slice(offset, offset + 1);\n }\n text = \"\";\n }\n\n while (text.length){\n let segment = '';\n let testText = text;\n let graphemeCount = 0;\n\n for (graphemeCount; graphemeCount < segment_length && testText.length; graphemeCount++) {\n let graphemeCluster = (graphemeRegex.exec(testText) || testText)[0];\n segment += graphemeCluster;\n testText = testText.substring(graphemeCluster.length);\n }\n\n segments.push(segment);\n text = text.substring(segment.length);\n }\n\n if (rtl) {\n segments.reverse();\n }\n\n CanvasText.cache.stats.segment_misses++;\n CanvasText.cache.segment[key] = segments;\n return segments;\n}\n\n// Private class to arrange text labels into multiple lines based on\n// \"text wrap\" and \"max line\" values\nclass MultiLine {\n constructor (context, max_lines = Infinity, text_wrap = Infinity) {\n this.width = 0;\n this.height = 0;\n this.lines = [];\n\n this.max_lines = max_lines;\n this.text_wrap = text_wrap;\n this.context = context;\n }\n\n createLine (line_height){\n if (this.lines.length < this.max_lines){\n return new Line(line_height, this.text_wrap);\n }\n else {\n return false;\n }\n }\n\n push (line){\n if (this.lines.length < this.max_lines){\n // measure line width\n let line_width = this.context.measureText(line.text).width;\n line.width = line_width;\n\n if (line_width > this.width){\n this.width = Math.ceil(line_width);\n }\n\n // add to lines and increment height\n this.lines.push(line);\n this.height += line.height;\n return true;\n }\n else {\n this.addEllipsis();\n return false;\n }\n }\n\n // pushes to the lines array and returns a new line if possible (false otherwise)\n advance (line, line_height) {\n let can_push = this.push(line);\n if (can_push){\n return this.createLine(line_height);\n }\n else {\n return false;\n }\n }\n\n addEllipsis (){\n let last_line = this.lines[this.lines.length - 1];\n let ellipsis_width = Math.ceil(this.context.measureText(MultiLine.ellipsis).width);\n\n last_line.append(MultiLine.ellipsis);\n last_line.width += ellipsis_width;\n\n if (last_line.width > this.width) {\n this.width = last_line.width;\n }\n }\n\n finish (line){\n if (line){\n this.push(line);\n }\n else {\n this.addEllipsis();\n }\n }\n\n static parse (str, text_wrap, max_lines, line_height, ctx) {\n // Word wrapping\n // Line breaks can be caused by:\n // - implicit line break when a maximum character threshold is exceeded per line (text_wrap)\n // - explicit line break in the label text (\\n)\n let words;\n if (typeof text_wrap === 'number') {\n words = str.split(' '); // split words on spaces\n }\n else {\n words = [str]; // no max line word wrapping (but new lines will still be in effect)\n }\n\n let multiline = new MultiLine(ctx, max_lines, text_wrap);\n let line = multiline.createLine(line_height);\n\n // First iterate on space-break groups (will be one if max line length off), then iterate on line-break groups\n for (let i = 0; i < words.length; i++) {\n let breaks = words[i].split('\\n'); // split on line breaks\n let new_line = (i === 0) ? true : false;\n\n for (let n=0; n < breaks.length; n++) {\n if (!line){\n break;\n }\n\n let word = breaks[n];\n\n // force punctuation (neutral chars) at the end of a RTL line, so they stay attached to original word\n if (isTextRTL(word) && isTextNeutral(word[word.length - 1])) {\n word += markRTL;\n }\n\n let spaced_word = (new_line) ? word : ' ' + word;\n\n // if adding current word would overflow, add a new line instead\n // first word (i === 0) always appends\n if (text_wrap && i > 0 && line.exceedsTextwrap(spaced_word)) {\n line = multiline.advance(line, line_height);\n if (!line){\n break;\n }\n line.append(word);\n new_line = true;\n }\n else {\n line.append(spaced_word);\n }\n\n // if line breaks present, add new line (unless on last line)\n if (n < breaks.length - 1) {\n line = multiline.advance(line, line_height);\n new_line = true;\n }\n }\n\n if (i === words.length - 1){\n multiline.finish(line);\n }\n }\n return multiline;\n }\n}\n\nMultiLine.ellipsis = '...';\n\n// A Private class used by MultiLine to contain the logic for a single line\n// including character count, width, height and text\nclass Line {\n constructor (height = 0, text_wrap = 0){\n this.chars = 0;\n this.text = '';\n\n this.height = Math.ceil(height);\n this.text_wrap = text_wrap;\n }\n\n append (text){\n this.chars += text.length;\n this.text += text;\n }\n\n exceedsTextwrap (text){\n return text.length + this.chars > this.text_wrap;\n }\n}\n", "/* global FontFace */\nimport log from '../../utils/log';\nimport Utils from '../../utils/utils';\nimport FontFaceObserver from 'fontfaceobserver';\n\nconst FontManager = {\n\n // Font detection\n fonts_loaded: Promise.resolve(), // resolves when all requested fonts have been detected\n last_loaded: null, // tracks last set of fonts loaded\n\n // Load set of custom font faces\n // `fonts` is an object where the key is a font family name, and the value is one or more font face\n // definitions. The value can be either a single object, or an array of such objects.\n // If the special string value 'external' is used, it indicates the the font will be loaded via external CSS.\n loadFonts (fonts) {\n let same = (JSON.stringify(fonts) === this.last_loaded);\n if (fonts && !same) {\n let queue = [];\n for (let family in fonts) {\n if (Array.isArray(fonts[family])) {\n fonts[family].forEach(face => queue.push(this.loadFontFace(family, face)));\n }\n else {\n queue.push(this.loadFontFace(family, fonts[family]));\n }\n }\n\n this.last_loaded = JSON.stringify(fonts);\n this.fonts_loaded = Promise.all(queue.filter(x => x));\n }\n return this.fonts_loaded;\n },\n\n // Load a single font face\n // `face` contains the font face definition, with optional parameters for `weight`, `style`, and `url`.\n // If the `url` is defined, the font is injected into the document as a CSS font-face.\n // If the object's value is the special string 'external', or if no `url` is defined, then the font face\n // is assumed is assumed to been loaded via external CSS. In either case, the function returns a promise\n // that resolves when the font face has loaded, or times out.\n loadFontFace (family, face) {\n if (face == null || (typeof face !== 'object' && face !== 'external')) {\n return;\n }\n\n let options = { family };\n let inject = Promise.resolve();\n\n if (typeof face === 'object') {\n Object.assign(options, face);\n\n // If URL is defined, inject font into document\n if (typeof face.url === 'string') {\n inject = this.injectFontFace(options);\n }\n }\n\n // Wait for font to load\n let observer = new FontFaceObserver(family, options);\n return inject.then(() => observer.load()).then(\n () => {\n // Promise resolves, font is available\n log('debug', `Font face '${family}' is available`, options);\n },\n () => {\n // Promise rejects, font is not available\n log('debug', `Font face '${family}' is NOT available`, options);\n }\n );\n },\n\n // Loads a font face via either the native FontFace API, or CSS injection\n // TODO: consider support for multiple format URLs per face, unicode ranges\n injectFontFace ({ family, url, weight, style }) {\n if (this.supports_native_font_loading === undefined) {\n this.supports_native_font_loading = (window.FontFace !== undefined);\n }\n\n // Convert blob URLs, depending on whether the native FontFace API will be used or not.\n //\n // When the FontFace API *is* supported, the blob URL is read into a raw data array.\n // NB: it's inefficient to be converting blob URLs into typed arrays here, since they originated\n // as raw data *before* they were converted into blob URLs. However, this process should be fast since\n // these are native browser functions and all data is local (no network request), and it keeps the\n // logic streamlined by allowing us to continue to use a URL-based interface for all scene resources.\n //\n // When the FontFace API is *not* supported, the blob URL data is converted to a base64 data URL.\n // This avoids security restricions in some browsers.\n // Also see https://github.com/bramstein/fontloader/blob/598e9399117bdc946ff786fa2c5007a6bd7d3b9e/src/fontface.js#L145-L153\n let preprocess = Promise.resolve(url);\n if (url.slice(0, 5) === 'blob:') {\n preprocess = Utils.io(url, 60000, 'arraybuffer').then(data => {\n let bytes = new Uint8Array(data);\n if (this.supports_native_font_loading) {\n return bytes; // use raw binary data\n }\n else {\n let str = '';\n for (let i = 0; i < bytes.length; i++) {\n str += String.fromCharCode(bytes[i]);\n }\n return 'data:font/opentype;base64,' + btoa(str); // base64 encode as data URL\n }\n });\n }\n\n return preprocess.then(data => {\n if (this.supports_native_font_loading) {\n // Use native FontFace API\n let face;\n if (typeof data === 'string') { // add as URL\n face = new FontFace(family, `url(${encodeURI(data)})`, { weight, style });\n }\n else if (data instanceof Uint8Array) { // add as binary data\n face = new FontFace(family, data, { weight, style });\n }\n document.fonts.add(face);\n log('trace', 'Adding FontFace to document.fonts:', face);\n }\n else {\n // Use CSS injection\n let css = `\n @font-face {\n font-family: '${family}';\n font-weight: ${weight || 'normal'};\n font-style: ${style || 'normal'};\n src: url(${encodeURI(data)});\n }\n `;\n\n let style_el = document.createElement('style');\n style_el.appendChild(document.createTextNode(\"\"));\n document.head.appendChild(style_el);\n style_el.sheet.insertRule(css, 0);\n log('trace', 'Injecting CSS font face:', css);\n }\n });\n }\n\n};\n\nexport default FontManager;\n", - "// Text rendering style\n\nimport Geo from '../../geo';\nimport {Style} from '../style';\nimport {Points} from '../points/points';\nimport Collision from '../../labels/collision';\nimport LabelPoint from '../../labels/label_point';\nimport LabelLine from '../../labels/label_line';\nimport gl from '../../gl/constants'; // web workers don't have access to GL context, so import all GL constants\n\nexport let TextStyle = Object.create(Points);\n\nObject.assign(TextStyle, {\n name: 'text',\n super: Points,\n built_in: true,\n\n init(options = {}) {\n let extra_attributes = [\n { name: 'a_angles', size: 4, type: gl.SHORT, normalized: false },\n { name: 'a_offsets', size: 4, type: gl.UNSIGNED_SHORT, normalized: false },\n { name: 'a_pre_angles', size: 4, type: gl.BYTE, normalized: false }\n ];\n\n this.super.init.call(this, options, extra_attributes);\n\n // Set texture/point config (override parent Point class)\n this.defines.TANGRAM_SHADER_POINT = false; // standalone text never draws a shader point\n\n // Indicate vertex shader should apply zoom-interpolated offsets and angles for curved labels\n this.defines.TANGRAM_CURVED_LABEL = true;\n\n // Fade out text when tile is zooming out, e.g. acting as proxy tiles\n this.defines.TANGRAM_FADE_ON_ZOOM_OUT = true;\n this.defines.TANGRAM_FADE_ON_ZOOM_OUT_RATE = 2; // fade at 2x, e.g. fully transparent at 0.5 zoom level away\n\n // Used to fade out curved labels\n this.defines.TANGRAM_FADE_ON_ZOOM_IN = true;\n this.defines.TANGRAM_FADE_ON_ZOOM_IN_RATE = 2; // fade at 2x, e.g. fully transparent at 0.5 zoom level away\n\n this.reset();\n },\n\n /**\n * A \"template\" that sets constant attibutes for each vertex, which is then modified per vertex or per feature.\n * A plain JS array matching the order of the vertex layout.\n */\n makeVertexTemplate(style){\n this.super.makeVertexTemplate.call(this, style);\n\n this.fillVertexTemplate('a_pre_angles', 0, { size: 4 });\n this.fillVertexTemplate('a_offsets', 0, { size: 4 });\n this.fillVertexTemplate('a_angles', 0, { size: 4 });\n\n return this.vertex_template;\n },\n\n reset() {\n this.queues = {};\n this.resetText();\n },\n\n // Override to queue features instead of processing immediately\n addFeature (feature, draw, context) {\n let tile = context.tile;\n if (tile.generation !== this.generation) {\n return;\n }\n\n let type = feature.geometry.type;\n draw.can_articulate = (type === \"LineString\" || type === \"MultiLineString\");\n\n // supersample text rendering for angled labels, to improve clarity\n draw.supersample_text = (type === \"LineString\" || type === \"MultiLineString\");\n\n let q = this.parseTextFeature(feature, draw, context, tile);\n if (!q) {\n return;\n }\n\n // text can be an array if a `left` or `right` orientation key is defined for the text source\n // in which case, push both text sources to the queue\n if (q instanceof Array){\n q.forEach(q => {\n q.feature = feature;\n q.context = context;\n q.layout.vertex = false; // vertex placement option not applicable to standalone labels\n this.queueFeature(q, tile); // queue the feature for later processing\n });\n }\n else {\n q.feature = feature;\n q.context = context;\n q.layout.vertex = false; // vertex placement option not applicable to standalone labels\n this.queueFeature(q, tile); // queue the feature for later processing\n }\n\n // Register with collision manager\n Collision.addStyle(this.name, tile.id);\n },\n\n // Override\n endData (tile) {\n let queue = this.queues[tile.id];\n delete this.queues[tile.id];\n\n return this.collideAndRenderTextLabels(tile, this.name, queue).\n then(({ labels, texts, textures }) => {\n if (labels && texts) {\n this.texts[tile.id] = texts;\n\n // Build queued features\n labels.forEach(q => {\n let text_settings_key = q.text_settings_key;\n let text_info =\n this.texts[tile.id][text_settings_key] &&\n this.texts[tile.id][text_settings_key][q.text];\n\n // setup styling object expected by Style class\n let style = this.feature_style;\n style.label = q.label;\n\n if (text_info.text_settings.can_articulate){\n // unpack logical sizes of each segment into an array for the style\n style.size = {};\n style.texcoords = {};\n\n if (q.label.type === 'straight'){\n style.size.straight = text_info.total_size.logical_size;\n style.texcoords.straight = text_info.texcoords.straight;\n style.label_texture = textures[text_info.texcoords.straight.texture_id];\n }\n else{\n style.size.curved = text_info.size.map(function(size){ return size.logical_size; });\n style.texcoords_stroke = text_info.texcoords_stroke;\n style.texcoords.curved = text_info.texcoords.curved;\n style.label_textures = text_info.texcoords.curved.map(t => textures[t.texture_id]);\n }\n }\n else {\n style.size = text_info.size.logical_size;\n style.texcoords = text_info.align[q.label.align].texcoords;\n style.label_texture = textures[text_info.align[q.label.align].texture_id];\n }\n\n Style.addFeature.call(this, q.feature, q.draw, q.context);\n });\n }\n this.freeText(tile);\n\n // Finish tile mesh\n return Style.endData.call(this, tile).then(tile_data => {\n if (tile_data) {\n // Attach tile-specific label atlas to mesh as a texture uniform\n if (textures && textures.length) {\n tile_data.textures.push(...textures); // assign texture ownership to tile\n }\n\n // Always apply shader blocks to standalone text\n for (let m in tile_data.meshes) {\n tile_data.meshes[m].uniforms.u_apply_color_blocks = true;\n }\n }\n\n return tile_data;\n });\n });\n },\n\n // Sets up caching for draw properties\n _preprocess (draw) {\n return this.preprocessText(draw);\n },\n\n // Implements label building for TextLabels mixin\n buildTextLabels (tile, feature_queue) {\n let labels = [];\n for (let f=0; f < feature_queue.length; f++) {\n let fq = feature_queue[f];\n let text_info = this.texts[tile.id][fq.text_settings_key][fq.text];\n let feature_labels;\n\n fq.layout.vertical_buffer = text_info.vertical_buffer;\n\n if (text_info.text_settings.can_articulate){\n var sizes = text_info.size.map(function(size){ return size.collision_size; });\n fq.layout.no_curving = text_info.no_curving;\n feature_labels = this.buildLabels(sizes, fq.feature.geometry, fq.layout, text_info.total_size.collision_size);\n }\n else {\n feature_labels = this.buildLabels(text_info.size.collision_size, fq.feature.geometry, fq.layout);\n }\n for (let i = 0; i < feature_labels.length; i++) {\n let fql = Object.create(fq);\n fql.label = feature_labels[i];\n labels.push(fql);\n }\n }\n return labels;\n },\n\n // Builds one or more labels for a geometry\n buildLabels (size, geometry, layout, total_size) {\n let labels = [];\n\n if (geometry.type === \"LineString\") {\n Array.prototype.push.apply(labels, this.buildLineLabels(geometry.coordinates, size, layout, total_size));\n } else if (geometry.type === \"MultiLineString\") {\n let lines = geometry.coordinates;\n for (let i = 0; i < lines.length; ++i) {\n Array.prototype.push.apply(labels, this.buildLineLabels(lines[i], size, layout, total_size));\n }\n } else if (geometry.type === \"Point\") {\n labels.push(new LabelPoint(geometry.coordinates, size, layout));\n } else if (geometry.type === \"MultiPoint\") {\n let points = geometry.coordinates;\n for (let i = 0; i < points.length; ++i) {\n labels.push(new LabelPoint(points[i], size, layout));\n }\n } else if (geometry.type === \"Polygon\") {\n let centroid = Geo.centroid(geometry.coordinates);\n labels.push(new LabelPoint(centroid, size, layout));\n } else if (geometry.type === \"MultiPolygon\") {\n let centroid = Geo.multiCentroid(geometry.coordinates);\n labels.push(new LabelPoint(centroid, size, layout));\n }\n\n return labels;\n },\n\n // Build one or more labels for a line geometry\n buildLineLabels (line, size, layout, total_size) {\n let labels = [];\n let subdiv = Math.min(layout.subdiv, line.length - 1);\n if (subdiv > 1) {\n // Create multiple labels for line, with each allotted a range of segments\n // in which it will attempt to place\n let seg_per_div = (line.length - 1) / subdiv;\n for (let i = 0; i < subdiv; i++) {\n let start = Math.floor(i * seg_per_div);\n let end = Math.floor((i + 1) * seg_per_div) + 1;\n let line_segment = line.slice(start, end);\n\n let label = LabelLine.create(size, total_size, line_segment, layout);\n if (label){\n labels.push(label);\n }\n }\n }\n else {\n let label = LabelLine.create(size, total_size, line, layout);\n if (label){\n labels.push(label);\n }\n }\n return labels;\n }\n});\n\nTextStyle.texture_id = 0; // namespaces per-tile label textures\n", + "// Text rendering style\n\nimport Geo from '../../geo';\nimport {Style} from '../style';\nimport {Points} from '../points/points';\nimport Collision from '../../labels/collision';\nimport LabelPoint from '../../labels/label_point';\nimport LabelLine from '../../labels/label_line';\nimport gl from '../../gl/constants'; // web workers don't have access to GL context, so import all GL constants\n\nexport let TextStyle = Object.create(Points);\n\nObject.assign(TextStyle, {\n name: 'text',\n super: Points,\n built_in: true,\n\n init(options = {}) {\n let extra_attributes = [\n { name: 'a_angles', size: 4, type: gl.SHORT, normalized: false },\n { name: 'a_offsets', size: 4, type: gl.UNSIGNED_SHORT, normalized: false },\n { name: 'a_pre_angles', size: 4, type: gl.BYTE, normalized: false }\n ];\n\n this.super.init.call(this, options, extra_attributes);\n\n // Set texture/point config (override parent Point class)\n this.defines.TANGRAM_SHADER_POINT = false; // standalone text never draws a shader point\n\n // Indicate vertex shader should apply zoom-interpolated offsets and angles for curved labels\n this.defines.TANGRAM_CURVED_LABEL = true;\n\n // Fade out text when tile is zooming out, e.g. acting as proxy tiles\n this.defines.TANGRAM_FADE_ON_ZOOM_OUT = true;\n this.defines.TANGRAM_FADE_ON_ZOOM_OUT_RATE = 2; // fade at 2x, e.g. fully transparent at 0.5 zoom level away\n\n // Used to fade out curved labels\n this.defines.TANGRAM_FADE_ON_ZOOM_IN = true;\n this.defines.TANGRAM_FADE_ON_ZOOM_IN_RATE = 2; // fade at 2x, e.g. fully transparent at 0.5 zoom level away\n\n this.reset();\n },\n\n /**\n * A \"template\" that sets constant attibutes for each vertex, which is then modified per vertex or per feature.\n * A plain JS array matching the order of the vertex layout.\n */\n makeVertexTemplate(style){\n this.super.makeVertexTemplate.call(this, style);\n\n this.fillVertexTemplate('a_pre_angles', 0, { size: 4 });\n this.fillVertexTemplate('a_offsets', 0, { size: 4 });\n this.fillVertexTemplate('a_angles', 0, { size: 4 });\n\n return this.vertex_template;\n },\n\n reset() {\n this.queues = {};\n this.resetText();\n },\n\n // Override to queue features instead of processing immediately\n addFeature (feature, draw, context) {\n let tile = context.tile;\n if (tile.generation !== this.generation) {\n return;\n }\n\n let type = feature.geometry.type;\n draw.can_articulate = (type === \"LineString\" || type === \"MultiLineString\");\n\n // supersample text rendering for angled labels, to improve clarity\n draw.supersample_text = (type === \"LineString\" || type === \"MultiLineString\");\n\n let q = this.parseTextFeature(feature, draw, context, tile);\n if (!q) {\n return;\n }\n\n // text can be an array if a `left` or `right` orientation key is defined for the text source\n // in which case, push both text sources to the queue\n if (q instanceof Array){\n q.forEach(q => {\n q.feature = feature;\n q.context = context;\n q.layout.vertex = false; // vertex placement option not applicable to standalone labels\n this.queueFeature(q, tile); // queue the feature for later processing\n });\n }\n else {\n q.feature = feature;\n q.context = context;\n q.layout.vertex = false; // vertex placement option not applicable to standalone labels\n this.queueFeature(q, tile); // queue the feature for later processing\n }\n\n // Register with collision manager\n Collision.addStyle(this.name, tile.id);\n },\n\n // Override\n endData (tile) {\n let queue = this.queues[tile.id];\n delete this.queues[tile.id];\n\n return this.collideAndRenderTextLabels(tile, this.name, queue).\n then(({ labels, texts, textures }) => {\n if (labels && texts) {\n this.texts[tile.id] = texts;\n\n // Build queued features\n labels.forEach(q => {\n let text_settings_key = q.text_settings_key;\n let text_info =\n this.texts[tile.id][text_settings_key] &&\n this.texts[tile.id][text_settings_key][q.text];\n\n // setup styling object expected by Style class\n let style = this.feature_style;\n style.label = q.label;\n\n if (text_info.text_settings.can_articulate){\n // unpack logical sizes of each segment into an array for the style\n style.size = {};\n style.texcoords = {};\n\n if (q.label.type === 'straight'){\n style.size.straight = text_info.size.logical_size;\n style.texcoords.straight = text_info.texcoords.straight;\n style.label_texture = textures[text_info.texcoords.straight.texture_id];\n }\n else{\n style.size.curved = text_info.segment_sizes.map(function(size){ return size.logical_size; });\n style.texcoords_stroke = text_info.texcoords_stroke;\n style.texcoords.curved = text_info.texcoords.curved;\n style.label_textures = text_info.texcoords.curved.map(t => textures[t.texture_id]);\n }\n }\n else {\n style.size = text_info.size.logical_size;\n style.texcoords = text_info.align[q.label.align].texcoords;\n style.label_texture = textures[text_info.align[q.label.align].texture_id];\n }\n\n Style.addFeature.call(this, q.feature, q.draw, q.context);\n });\n }\n this.freeText(tile);\n\n // Finish tile mesh\n return Style.endData.call(this, tile).then(tile_data => {\n if (tile_data) {\n // Attach tile-specific label atlas to mesh as a texture uniform\n if (textures && textures.length) {\n tile_data.textures.push(...textures); // assign texture ownership to tile\n }\n\n // Always apply shader blocks to standalone text\n for (let m in tile_data.meshes) {\n tile_data.meshes[m].uniforms.u_apply_color_blocks = true;\n }\n }\n\n return tile_data;\n });\n });\n },\n\n // Sets up caching for draw properties\n _preprocess (draw) {\n return this.preprocessText(draw);\n },\n\n // Implements label building for TextLabels mixin\n buildTextLabels (tile, feature_queue) {\n let labels = [];\n for (let f=0; f < feature_queue.length; f++) {\n let fq = feature_queue[f];\n let text_info = this.texts[tile.id][fq.text_settings_key][fq.text];\n let feature_labels;\n\n fq.layout.vertical_buffer = text_info.vertical_buffer;\n\n if (text_info.text_settings.can_articulate){\n var sizes = text_info.segment_sizes.map(size => size.collision_size);\n fq.layout.no_curving = text_info.no_curving;\n feature_labels = this.buildLabels(sizes, fq.feature.geometry, fq.layout, text_info.size.collision_size);\n }\n else {\n feature_labels = this.buildLabels(text_info.size.collision_size, fq.feature.geometry, fq.layout);\n }\n for (let i = 0; i < feature_labels.length; i++) {\n let fql = Object.create(fq);\n fql.label = feature_labels[i];\n labels.push(fql);\n }\n }\n return labels;\n },\n\n // Builds one or more labels for a geometry\n buildLabels (size, geometry, layout, total_size) {\n let labels = [];\n\n if (geometry.type === \"LineString\") {\n Array.prototype.push.apply(labels, this.buildLineLabels(geometry.coordinates, size, layout, total_size));\n } else if (geometry.type === \"MultiLineString\") {\n let lines = geometry.coordinates;\n for (let i = 0; i < lines.length; ++i) {\n Array.prototype.push.apply(labels, this.buildLineLabels(lines[i], size, layout, total_size));\n }\n } else if (geometry.type === \"Point\") {\n labels.push(new LabelPoint(geometry.coordinates, size, layout));\n } else if (geometry.type === \"MultiPoint\") {\n let points = geometry.coordinates;\n for (let i = 0; i < points.length; ++i) {\n labels.push(new LabelPoint(points[i], size, layout));\n }\n } else if (geometry.type === \"Polygon\") {\n let centroid = Geo.centroid(geometry.coordinates);\n labels.push(new LabelPoint(centroid, size, layout));\n } else if (geometry.type === \"MultiPolygon\") {\n let centroid = Geo.multiCentroid(geometry.coordinates);\n labels.push(new LabelPoint(centroid, size, layout));\n }\n\n return labels;\n },\n\n // Build one or more labels for a line geometry\n buildLineLabels (line, size, layout, total_size) {\n let labels = [];\n let subdiv = Math.min(layout.subdiv, line.length - 1);\n if (subdiv > 1) {\n // Create multiple labels for line, with each allotted a range of segments\n // in which it will attempt to place\n let seg_per_div = (line.length - 1) / subdiv;\n for (let i = 0; i < subdiv; i++) {\n let start = Math.floor(i * seg_per_div);\n let end = Math.floor((i + 1) * seg_per_div) + 1;\n let line_segment = line.slice(start, end);\n\n let label = LabelLine.create(size, total_size, line_segment, layout);\n if (label){\n labels.push(label);\n }\n }\n }\n\n // Consider full line for label placement if no subdivisions requested, or as last resort if not enough\n // labels placed (e.g. fewer than requested subdivisions)\n // TODO: refactor multiple label placements per line / move into label placement class for better effectiveness\n if (labels.length < subdiv) {\n let label = LabelLine.create(size, total_size, line, layout);\n if (label){\n labels.push(label);\n }\n }\n return labels;\n }\n});\n\nTextStyle.texture_id = 0; // namespaces per-tile label textures\n", "// Text label rendering methods, can be mixed into a rendering style\n\nimport {StyleParser} from '../style_parser';\nimport Geo from '../../geo';\nimport log from '../../utils/log';\nimport Thread from '../../utils/thread';\nimport WorkerBroker from '../../utils/worker_broker';\nimport Collision from '../../labels/collision';\nimport TextSettings from '../text/text_settings';\nimport CanvasText from '../text/canvas_text';\n\n// namespaces label textures (ensures new texture name when a tile is built multiple times)\nlet text_texture_id = 0;\n\nexport const TextLabels = {\n\n resetText () {\n if (Thread.is_main) {\n this.canvas = new CanvasText();\n }\n else if (Thread.is_worker) {\n this.texts = {}; // unique texts, grouped by tile, by style\n }\n },\n\n freeText (tile) {\n delete this.texts[tile.id];\n },\n\n parseTextFeature (feature, draw, context, tile) {\n // Compute label text\n let text = this.parseTextSource(feature, draw, context);\n\n if (text == null || text === '') {\n return; // no text for this feature\n }\n\n // Compute text style and layout settings for this feature label\n let text_settings = TextSettings.compute(feature, draw, context);\n let text_settings_key = TextSettings.key(text_settings);\n\n // first label in tile, or with this style?\n this.texts[tile.id] = this.texts[tile.id] || {};\n let sizes = this.texts[tile.id][text_settings_key] = this.texts[tile.id][text_settings_key] || {};\n\n if (text instanceof Object){\n let results = [];\n\n // add both left/right text elements to repeat group to improve repeat culling\n // avoids one component of a boundary label (e.g. Colorado) being culled too aggressively when it also\n // appears in nearby boundary labels (e.g. Colorado/Utah & Colorado/New Mexico repeat as separate groups)\n let repeat_group_prefix = text.left + '-' + text.right; // NB: should be all text keys, not just left/right\n\n for (let key in text){\n let current_text = text[key];\n if (!current_text) {\n continue;\n }\n\n let layout = this.computeTextLayout({}, feature, draw, context, tile, current_text, text_settings, repeat_group_prefix, key);\n if (!sizes[current_text]) {\n // first label with this text/style/tile combination, make a new label entry\n sizes[current_text] = {\n text_settings,\n ref: 0 // # of times this text/style combo appears in tile\n };\n }\n\n results.push({\n draw, text : current_text, text_settings_key, layout\n });\n }\n\n return (results.length > 0 && results); // return null if no boundary labels found\n }\n else {\n // unique text strings, grouped by text drawing style\n let layout = this.computeTextLayout({}, feature, draw, context, tile, text, text_settings);\n if (!sizes[text]) {\n // first label with this text/style/tile combination, make a new label entry\n sizes[text] = {\n text_settings,\n ref: 0 // # of times this text/style combo appears in tile\n };\n }\n\n return {\n draw, text, text_settings_key, layout\n };\n }\n },\n\n // Compute the label text, default is value of feature.properties.name\n // - String value indicates a feature property look-up, e.g. `short_name` means use feature.properties.short_name\n // - Function will use the return value as the label text (for custom labels)\n // - Array (of strings and/or functions) defines a list of fallbacks, evaluated according to the above rules,\n // with the first non-null value used as the label text\n // e.g. `[name:es, name:en, name]` prefers Spanish names, followed by English, and last the default local name\n parseTextSource (feature, draw, context) {\n let text;\n let source = draw.text_source || 'name';\n\n if (source != null && typeof source === 'object') {\n // left/right boundary labels\n text = {};\n for (let key in source) {\n text[key] = this.parseTextSourceValue(source[key], feature, context);\n }\n }\n else {\n // single label\n text = this.parseTextSourceValue(source, feature, context);\n }\n\n return text;\n },\n\n parseTextSourceValue (source, feature, context) {\n let text;\n if (Array.isArray(source)) {\n for (let s=0; s < source.length; s++) {\n if (typeof source[s] === 'string') {\n text = feature.properties[source[s]];\n } else if (typeof source[s] === 'function') {\n text = source[s](context);\n }\n\n if (text) {\n return text; // stop if we found a text property\n }\n }\n }\n else if (typeof source === 'string') {\n text = feature.properties[source];\n }\n else if (source instanceof Function) {\n text = source(context);\n }\n\n return text;\n },\n\n prepareTextLabels (tile, collision_group, queue) {\n if (Object.keys(this.texts[tile.id]||{}).length === 0) {\n return Promise.resolve([]);\n }\n\n // first call to main thread, ask for text pixel sizes\n return WorkerBroker.postMessage(this.main_thread_target+'.calcTextSizes', tile.id, this.texts[tile.id]).then(({ texts }) => {\n if (tile.canceled) {\n log('trace', `Style ${this.name}: stop tile build because tile was canceled: ${tile.key}, post-calcTextSizes()`);\n return [];\n }\n\n this.texts[tile.id] = texts || [];\n if (!texts) {\n Collision.abortTile(tile.id);\n return [];\n }\n\n return this.buildTextLabels(tile, queue);\n });\n },\n\n collideAndRenderTextLabels (tile, collision_group, queue) {\n return this.prepareTextLabels(tile, collision_group, queue).then(labels => {\n if (labels.length === 0) {\n Collision.collide([], collision_group, tile.id);\n return Promise.resolve({});\n }\n\n return Collision.collide(labels, collision_group, tile.id).then(labels => {\n if (tile.canceled) {\n log('trace', `stop tile build because tile was canceled: ${tile.key}, post-collide()`);\n return {};\n }\n\n let texts = this.texts[tile.id];\n if (texts == null || labels.length === 0) {\n return {};\n }\n\n this.cullTextStyles(texts, labels);\n\n // set alignments\n labels.forEach(q => {\n let text_settings_key = q.text_settings_key;\n let text_info = texts[text_settings_key] && texts[text_settings_key][q.text];\n if (!text_info.text_settings.can_articulate){\n text_info.align = text_info.align || {};\n text_info.align[q.label.align] = {};\n }\n else {\n // consider making it a set\n if (!text_info.type) {\n text_info.type = [];\n }\n\n if (text_info.type.indexOf(q.label.type) === -1){\n text_info.type.push(q.label.type);\n }\n }\n });\n\n // second call to main thread, for rasterizing the set of texts\n return WorkerBroker.postMessage(this.main_thread_target+'.rasterizeTexts', tile.id, tile.key, texts).then(({ texts, textures }) => {\n if (tile.canceled) {\n log('trace', `stop tile build because tile was canceled: ${tile.key}, post-rasterizeTexts()`);\n return {};\n }\n\n return { labels, texts, textures };\n });\n });\n });\n },\n\n // Remove unused text/style combinations to avoid unnecessary rasterization\n cullTextStyles(texts, labels) {\n // Count how many times each text/style combination is used\n for (let i=0; i < labels.length; i++) {\n let label = labels[i];\n texts[label.text_settings_key][label.text].ref++;\n }\n\n // Remove text/style combinations that have no visible labels\n for (let style in texts) {\n for (let text in texts[style]) {\n // no labels for this text\n if (texts[style][text].ref < 1) {\n delete texts[style][text];\n }\n }\n }\n\n for (let style in texts) {\n // no labels for this style\n if (Object.keys(texts[style]).length === 0) {\n delete texts[style];\n }\n }\n },\n\n // Called on main thread from worker, to compute the size of each text string,\n // were it to be rendered. This info is then used to perform initial label culling, *before*\n // labels are actually rendered.\n calcTextSizes (tile_id, texts) {\n return this.canvas.textSizes(tile_id, texts);\n },\n\n // Called on main thread from worker, to create atlas of labels for a tile\n rasterizeTexts (tile_id, tile_key, texts) {\n let canvas = new CanvasText(); // one per style per tile (style may be rendering multiple tiles at once)\n let max_texture_size = Math.min(this.max_texture_size, 2048); // cap each label texture at 2048x2048\n\n return canvas.setTextureTextPositions(texts, max_texture_size).then(({ textures }) => {\n if (!textures) {\n return {};\n }\n\n let texture_prefix = ['labels', this.name, tile_key, tile_id, text_texture_id, ''].join('-');\n text_texture_id++;\n\n return canvas.rasterize(texts, textures, tile_id, texture_prefix, this.gl).then(({ textures }) => {\n if (!textures) {\n return {};\n }\n return { texts, textures };\n });\n });\n },\n\n preprocessText (draw) {\n // Font settings are required\n if (!draw || !draw.font || typeof draw.font !== 'object') {\n return;\n }\n\n // Colors\n draw.font.fill = StyleParser.createPropertyCache(draw.font.fill);\n if (draw.font.stroke) {\n draw.font.stroke.color = StyleParser.createPropertyCache(draw.font.stroke.color);\n }\n\n // Convert font and text stroke sizes\n draw.font.px_size = StyleParser.createPropertyCache(draw.font.size || TextSettings.defaults.size, CanvasText.fontPixelSize);\n if (draw.font.stroke && draw.font.stroke.width != null) {\n draw.font.stroke.width = StyleParser.createPropertyCache(draw.font.stroke.width, parseFloat);\n }\n\n // Offset (2d array)\n draw.offset = StyleParser.createPropertyCache(draw.offset, v => (Array.isArray(v) && v.map(parseFloat)) || 0);\n\n // Buffer (1d value or or 2d array)\n draw.buffer = StyleParser.createPropertyCache(draw.buffer, v => (Array.isArray(v) ? v : [v, v]).map(parseFloat) || 0);\n\n // Repeat rules - for text labels, defaults to tile size\n draw.repeat_distance = StyleParser.createPropertyCache(draw.repeat_distance || Geo.tile_size, parseFloat);\n\n return draw;\n },\n\n // Additional text-specific layout settings\n computeTextLayout (target, feature, draw, context, tile, text, text_settings, repeat_group_prefix, orientation) {\n let layout = target || {};\n\n // common settings w/points\n layout = this.computeLayout(layout, feature, draw, context, tile);\n\n // tile boundary handling\n layout.cull_from_tile = (draw.cull_from_tile != null) ? draw.cull_from_tile : true;\n\n // standalone text can move into tile if specified\n layout.move_into_tile = (draw.move_into_tile != null) ? draw.move_into_tile : true;\n\n // repeat rules include the text\n if (layout.repeat_distance) {\n if (repeat_group_prefix) {\n layout.repeat_group += '/' + repeat_group_prefix;\n }\n layout.repeat_group += '/' + text;\n }\n\n // Max number of subdivisions to try\n layout.subdiv = tile.overzoom2;\n\n layout.align = draw.align;\n\n // used to fudge width value as text may overflow bounding box if it has italic, bold, etc style\n layout.italic = (text_settings.style !== 'normal');\n\n // used to determine orientation of text if the text_source has a `left` or `right` key\n if (orientation === 'right') {\n layout.orientation = 1;\n }\n else if (orientation === 'left'){\n layout.orientation = -1;\n }\n\n return layout;\n }\n\n};\n", "import Utils from '../../utils/utils';\nimport Geo from '../../geo';\nimport {StyleParser} from '../style_parser';\n\nvar TextSettings;\n\nexport default TextSettings = {\n\n // A key for grouping all labels of the same text style (e.g. same Canvas state, to minimize state changes)\n key (settings) {\n return [\n settings.style,\n settings.weight,\n settings.family,\n settings.px_size,\n settings.fill,\n settings.stroke,\n settings.stroke_width,\n settings.transform,\n settings.text_wrap,\n settings.max_lines,\n settings.supersample,\n Utils.device_pixel_ratio\n ].join('/');\n },\n\n defaults: {\n style: 'normal',\n weight: null,\n size: '12px',\n px_size: 12,\n family: 'Helvetica',\n fill: 'white',\n text_wrap: 15,\n max_lines: 5,\n align: 'center',\n stroke: null,\n stroke_width: 0\n },\n\n compute (feature, draw, context) {\n let style = {};\n\n draw.font = draw.font || this.defaults;\n\n // LineString labels can articulate while point labels cannot. Needed for future texture coordinate calculations.\n style.can_articulate = draw.can_articulate;\n\n // Use fill if specified, or default\n style.fill = (draw.font.fill && Utils.toCSSColor(StyleParser.evalCachedColorProperty(draw.font.fill, context))) || this.defaults.fill;\n\n // Font properties are modeled after CSS names:\n // - family: Helvetica, Futura, etc.\n // - size: in pt, px, or em\n // - style: normal, italic, oblique\n // - weight: normal, bold, etc.\n // - transform: capitalize, uppercase, lowercase\n style.style = draw.font.style || this.defaults.style;\n style.weight = draw.font.weight || this.defaults.weight;\n if (draw.font.family) {\n style.family = draw.font.family;\n if (style.family !== this.defaults.family) {\n style.family += ', ' + this.defaults.family;\n }\n }\n else {\n style.family = this.defaults.family;\n }\n\n style.transform = draw.font.transform;\n\n // original size (not currently used, but useful for debugging)\n style.size = draw.font.size || this.defaults.size;\n\n // calculated pixel size\n style.supersample = draw.supersample_text ? 1.5 : 1; // optionally render text at 150% to improve clarity\n style.px_size = StyleParser.evalCachedProperty(draw.font.px_size, context) * style.supersample;\n\n // Use stroke if specified\n if (draw.font.stroke && draw.font.stroke.color) {\n style.stroke = Utils.toCSSColor(StyleParser.evalCachedColorProperty(draw.font.stroke.color, context) || this.defaults.stroke);\n style.stroke_width = StyleParser.evalCachedProperty(draw.font.stroke.width, context) || this.defaults.stroke_width;\n }\n\n style.font_css = this.fontCSS(style);\n\n // Word wrap and text alignment\n // Not a font properties, but affect atlas of unique text textures\n let text_wrap = draw.text_wrap; // use explicitly set value\n\n if (text_wrap == null && Geo.geometryType(feature.geometry.type) !== 'line') {\n // point labels (for point and polygon features) have word wrap on w/default max length,\n // line labels default off\n text_wrap = true;\n }\n\n // setting to 'true' causes default wrap value to be used\n if (text_wrap === true) {\n text_wrap = this.defaults.text_wrap;\n }\n style.text_wrap = text_wrap;\n\n // max_lines setting to truncate very long labels with an ellipsis\n style.max_lines = draw.max_lines || this.defaults.max_lines;\n\n return style;\n },\n\n // Build CSS-style font string (to set Canvas draw state)\n fontCSS ({ style, weight, px_size, family }) {\n return [style, weight, px_size + 'px', family]\n .filter(x => x) // remove null props\n .join(' ');\n }\n\n};\n", "import log from './utils/log';\nimport Utils from './utils/utils';\nimport mergeObjects from './utils/merge';\nimport Geo from './geo';\nimport {addLayerDebugEntry} from './styles/style';\nimport {StyleParser} from './styles/style_parser';\nimport Collision from './labels/collision';\nimport WorkerBroker from './utils/worker_broker';\nimport Task from './utils/task';\nimport Texture from './gl/texture';\n\nimport {mat4, vec3} from './utils/gl-matrix';\n\nlet id = 0; // unique tile id\n\nexport default class Tile {\n\n /**\n Tile\n @constructor\n Required properties:\n coords: object with {x, y, z} properties identifying tile coordinate location\n worker: web worker to handle tile construction\n */\n constructor({ coords, style_zoom, source, worker, view }) {\n this.id = id++;\n this.worker = worker;\n this.view = view;\n this.source = source;\n this.generation = null;\n\n this.visible = false;\n this.proxy_for = null;\n this.proxy_depth = 0;\n this.proxied_as = null;\n this.fade_in = true;\n this.loading = false;\n this.loaded = false;\n this.built = false;\n this.error = null;\n this.debug = {};\n\n this.style_zoom = style_zoom; // zoom level to be used for styling\n this.coords = Tile.normalizedCoordinate(coords, this.source, this.style_zoom);\n this.key = Tile.key(this.coords, this.source, this.style_zoom);\n this.overzoom = Math.max(this.style_zoom - this.coords.z, 0); // number of levels of overzooming\n this.overzoom2 = Math.pow(2, this.overzoom);\n this.min = Geo.metersForTile(this.coords);\n this.max = Geo.metersForTile({x: this.coords.x + 1, y: this.coords.y + 1, z: this.coords.z }),\n this.span = { x: (this.max.x - this.min.x), y: (this.max.y - this.min.y) };\n this.bounds = { sw: { x: this.min.x, y: this.max.y }, ne: { x: this.max.x, y: this.min.y } };\n this.center_dist = 0;\n\n this.meters_per_pixel = Geo.metersPerPixel(this.style_zoom);\n this.meters_per_pixel_sq = this.meters_per_pixel * this.meters_per_pixel;\n this.units_per_pixel = Geo.units_per_pixel / this.overzoom2; // adjusted for overzoom\n this.units_per_meter_overzoom = Geo.unitsPerMeter(this.coords.z) * this.overzoom2; // adjusted for overzoom\n\n this.meshes = {}; // renderable VBO meshes keyed by style\n this.textures = []; // textures that the tile owns (labels, etc.)\n this.previous_textures = []; // textures retained by the tile in the previous build generation\n this.new_mesh_styles = []; // meshes that have been built so far in current build generation\n }\n\n static coord(c) {\n return {x: c.x, y: c.y, z: c.z, key: Tile.coordKey(c)};\n }\n\n static coordKey({x, y, z}) {\n return x + '/' + y + '/' + z;\n }\n\n static key (coords, source, style_zoom) {\n if (coords.y < 0 || coords.y >= (1 << coords.z) || coords.z < 0) {\n return; // cull tiles out of range (x will wrap)\n }\n return [source.name, style_zoom, coords.x, coords.y, coords.z].join('/');\n }\n\n static normalizedKey (coords, source, style_zoom) {\n return Tile.key(Tile.normalizedCoordinate(coords, source, style_zoom), source, style_zoom);\n }\n\n static normalizedCoordinate (coords, source, style_zoom) {\n if (source.zoom_bias) {\n coords = Tile.coordinateAtZoom(coords, Math.max(0, coords.z - source.zoom_bias)); // zoom can't go below zero\n }\n return Tile.coordinateWithMaxZoom(coords, source.max_zoom);\n }\n\n static coordinateAtZoom({x, y, z}, zoom) {\n if (z !== zoom) {\n let zscale = Math.pow(2, z - zoom);\n x = Math.floor(x / zscale);\n y = Math.floor(y / zscale);\n z = zoom;\n }\n return Tile.coord({x, y, z});\n }\n\n static coordinateWithMaxZoom({x, y, z}, max_zoom) {\n if (max_zoom !== undefined && z > max_zoom) {\n return Tile.coordinateAtZoom({x, y, z}, max_zoom);\n }\n return Tile.coord({x, y, z});\n }\n\n static childrenForCoordinate({x, y, z, key}) {\n if (!Tile.coord_children[key]) {\n z++;\n x *= 2;\n y *= 2;\n Tile.coord_children[key] = [\n Tile.coord({x, y, z}), Tile.coord({x: x+1, y, z}),\n Tile.coord({x, y: y+1, z}), Tile.coord({x: x+1, y: y+1, z})\n ];\n }\n return Tile.coord_children[key];\n }\n\n static isDescendant(parent, descendant) {\n if (descendant.z > parent.z) {\n let {x, y} = Tile.coordinateAtZoom(descendant, parent.z);\n return (parent.x === x && parent.y === y);\n }\n return false;\n }\n\n // Free resources owned by tile\n freeResources () {\n for (let m in this.meshes) {\n this.meshes[m].forEach(m => m.destroy());\n }\n this.meshes = {};\n\n this.textures.forEach(t => Texture.release(t));\n this.textures = [];\n\n this.previous_textures.forEach(t => Texture.release(t));\n this.previous_textures = [];\n }\n\n destroy() {\n Task.removeForTile(this.id);\n this.workerMessage('self.removeTile', this.key);\n this.freeResources();\n this.worker = null;\n }\n\n buildAsMessage() {\n return {\n id: this.id,\n key: this.key,\n source: this.source.name,\n coords: this.coords,\n min: this.min,\n max: this.max,\n units_per_pixel: this.units_per_pixel,\n meters_per_pixel: this.meters_per_pixel,\n meters_per_pixel_sq: this.meters_per_pixel_sq,\n units_per_meter_overzoom: this.units_per_meter_overzoom,\n style_zoom: this.style_zoom,\n overzoom: this.overzoom,\n overzoom2: this.overzoom2,\n generation: this.generation,\n debug: this.debug\n };\n }\n\n workerMessage (...message) {\n return WorkerBroker.postMessage(this.worker, ...message);\n }\n\n build(generation, { fade_in = true } = {}) {\n this.generation = generation;\n this.fade_in = fade_in;\n if (!this.loaded) {\n this.loading = true;\n this.built = false;\n }\n return this.workerMessage('self.buildTile', { tile: this.buildAsMessage() }).catch(e => { throw e; });\n }\n\n /**\n Called on worker to cancel loading\n Static method because the worker only has object representations of tile data, there is no\n tile instance created yet.\n */\n static cancel(tile) {\n if (tile) {\n tile.canceled = true;\n if (tile.source_data && tile.source_data.request_id) {\n Utils.cancelRequest(tile.source_data.request_id); // cancel pending tile network request\n tile.source_data.request_id = null;\n }\n\n Tile.abortBuild(tile);\n }\n }\n\n // Process geometry for tile - called by web worker\n // Returns a set of tile keys that should be sent to the main thread (so that we can minimize data exchange between worker and main thread)\n static buildGeometry (tile, { scene_id, layers, styles, global }) {\n let data = tile.source_data;\n\n tile.debug.rendering = +new Date();\n tile.debug.feature_count = 0;\n tile.debug.layers = null;\n\n Collision.startTile(tile.id);\n\n // Process each top-level layer\n for (let layer_name in layers) {\n let layer = layers[layer_name];\n // Skip layers with no data source defined\n if (!layer || !layer.config_data) {\n log('warn', `Layer ${layer_name} was defined without a geometry data source and will not be rendered.`);\n continue;\n }\n\n // Source names don't match\n if (layer.config_data.source !== tile.source) {\n continue;\n }\n\n // Get data for one or more layers from source\n let source_layers = Tile.getDataForSource(data, layer.config_data, layer_name);\n\n // Render features in layer\n for (let s=0; s < source_layers.length; s++) {\n let source_layer = source_layers[s];\n let geom = source_layer.geom;\n if (!geom) {\n continue;\n }\n\n for (let f = 0; f < geom.features.length; f++) {\n let feature = geom.features[f];\n if (feature.geometry == null) {\n continue; // skip features w/o geometry (valid GeoJSON)\n }\n\n let context = StyleParser.getFeatureParseContext(feature, tile, global);\n context.winding = tile.default_winding;\n context.source = tile.source; // add data source name\n context.layer = source_layer.layer; // add data source layer name\n\n // Get draw groups for this feature\n let draw_groups = layer.buildDrawGroups(context, true);\n if (!draw_groups) {\n continue;\n }\n\n // Render draw groups\n for (let group_name in draw_groups) {\n let group = draw_groups[group_name];\n\n // Add to style\n let style_name = group.style || group_name;\n let style = styles[style_name];\n\n if (!style) {\n log('warn', `Style '${style_name}' not found, skipping layer '${layer_name}':`, group, feature);\n continue;\n }\n\n group = style.preprocess(group);\n if (group == null || group.visible === false) {\n continue;\n }\n\n context.layers = group.layers; // add matching draw layers\n\n style.addFeature(feature, group, context);\n }\n\n tile.debug.feature_count++;\n }\n }\n }\n tile.debug.rendering = +new Date() - tile.debug.rendering;\n\n // Send styles back to main thread as they finish building, in two groups: collision vs. non-collision\n let tile_styles = this.stylesForTile(tile, styles).map(s => styles[s]);\n Tile.sendStyleGroups(tile, tile_styles, { scene_id }, style => style.collision ? 'collision' : 'non-collision');\n // Tile.sendStyleGroups(tile, tile_styles, { scene_id }, style => style.name); // call for each style\n // Tile.sendStyleGroups(tile, tile_styles, { scene_id }, style => 'styles'); // all styles in single call (previous behavior)\n }\n\n static stylesForTile (tile, styles) {\n let tile_styles = [];\n for (let s in styles) {\n if (styles[s].hasDataForTile(tile)) {\n tile_styles.push(s);\n }\n }\n return tile_styles;\n }\n\n // Send groups of styles back to main thread, asynchronously (as they finish building),\n // grouped by the provided function\n static sendStyleGroups(tile, styles, { scene_id }, group_by) {\n // Group styles\n let groups = {};\n styles.forEach(s => {\n let group_name = group_by(s);\n groups[group_name] = groups[group_name] || [];\n groups[group_name].push(s);\n });\n\n if (Object.keys(groups).length > 0) {\n let progress = { start: true };\n tile.mesh_data = {};\n\n for (let group_name in groups) {\n let group = groups[group_name];\n\n Promise.all(group.map(style => {\n return style.endData(tile).then(style_data => {\n if (style_data) {\n tile.mesh_data[style.name] = style_data;\n }\n });\n }))\n .then(() => {\n log('trace', `Finished style group '${group_name}' for tile ${tile.key}`);\n\n // Clear group and check if all groups finished\n groups[group_name] = [];\n if (Object.keys(groups).every(g => groups[g].length === 0)) {\n progress.done = true;\n }\n\n // Send meshes to main thread\n WorkerBroker.postMessage(\n `TileManager_${scene_id}.buildTileStylesCompleted`,\n WorkerBroker.withTransferables({ tile: Tile.slice(tile, ['mesh_data']), progress })\n );\n progress.start = null;\n tile.mesh_data = {}; // reset so each group sends separate set of style meshes\n\n if (progress.done) {\n Collision.resetTile(tile.id); // clear collision if we're done with the tile\n }\n })\n .catch((e) => {\n log('error', `Error for style group '${group_name}' for tile ${tile.key}`, e.stack);\n });\n }\n }\n else {\n // Nothing to build, return empty tile to main thread\n WorkerBroker.postMessage(\n `TileManager_${scene_id}.buildTileStylesCompleted`,\n WorkerBroker.withTransferables({ tile: Tile.slice(tile), progress: { start: true, done: true } })\n );\n Collision.resetTile(tile.id); // clear collision if we're done with the tile\n }\n }\n\n /**\n Retrieves geometry from a tile according to a data source definition\n Returns an array of objects with:\n layer: source layer name\n geom: GeoJSON FeatureCollection\n */\n static getDataForSource (source_data, source_config, default_layer = null) {\n var layers = [];\n\n if (source_config != null && source_data != null && source_data.layers != null) {\n // If no layer specified, and a default source layer exists\n if (!source_config.layer && source_data.layers._default) {\n layers.push({\n geom: source_data.layers._default\n });\n }\n // If no layer specified, and a default requested layer exists\n else if (!source_config.layer && default_layer) {\n layers.push({\n layer: default_layer,\n geom: source_data.layers[default_layer]\n });\n }\n // If a layer is specified by name, use it\n else if (typeof source_config.layer === 'string') {\n layers.push({\n layer: source_config.layer,\n geom: source_data.layers[source_config.layer]\n });\n }\n // If multiple layers are specified by name, combine them\n else if (Array.isArray(source_config.layer)) {\n source_config.layer.forEach(layer => {\n if (source_data.layers[layer] && source_data.layers[layer].features) {\n layers.push({\n layer,\n geom: source_data.layers[layer]\n });\n }\n });\n }\n }\n\n return layers;\n }\n\n /**\n Called on main thread when a web worker completes processing\n for a single tile.\n */\n buildMeshes(styles, progress) {\n if (this.error) {\n return;\n }\n\n // Debug\n if (progress.start) {\n this.debug.geometry_count = 0;\n this.debug.buffer_size = 0;\n }\n\n // Create VBOs\n let meshes = {}, textures = []; // new data to be added to tile\n let mesh_data = this.mesh_data;\n if (mesh_data) {\n for (let s in mesh_data) {\n for (let variant in mesh_data[s].meshes) {\n let mesh_variant = mesh_data[s].meshes[variant];\n if (mesh_variant.vertex_data) {\n if (!styles[s]) {\n log('warn', `Could not create mesh because style '${s}' not found, for tile ${this.key}, aborting tile`);\n break;\n }\n\n // first add style-level uniforms, then add any mesh-specific ones\n let mesh_options = Object.assign({}, mesh_data[s]);\n mesh_options.uniforms = Object.assign({}, mesh_options.uniforms, mesh_variant.uniforms);\n mesh_options.variant = mesh_variant.variant;\n\n let mesh = styles[s].makeMesh(mesh_variant.vertex_data, mesh_variant.vertex_elements, mesh_options);\n meshes[s] = meshes[s] || [];\n meshes[s].push(mesh);\n this.debug.buffer_size += mesh.buffer_size;\n this.debug.geometry_count += mesh.geometry_count;\n }\n }\n\n // Assign texture ownership to tiles\n // Note that it's valid for a single texture to be referenced from multiple styles\n // (e.g. same raster texture attached to multiple sources). This means the same\n // texture may be added to the tile's texture list more than once, which ensures\n // that it is properly released (to match its retain count).\n if (mesh_data[s].textures) {\n textures.push(...mesh_data[s].textures);\n }\n }\n }\n delete this.mesh_data;\n\n // Initialize tracking for this tile generation\n if (progress.start) {\n this.previous_textures = [...this.textures]; // copy old list of textures\n this.textures = [];\n }\n\n // New meshes\n for (let m in meshes) {\n if (this.meshes[m]) {\n this.meshes[m].forEach(m => m.destroy()); // free old meshes\n }\n this.meshes[m] = meshes[m]; // set new mesh\n this.new_mesh_styles.push(m);\n }\n\n // New textures\n this.textures.push(...textures);\n\n if (progress.done) {\n // Release un-replaced meshes (existing in previous generation, but weren't built for this one)\n for (let m in this.meshes) {\n if (this.new_mesh_styles.indexOf(m) === -1) {\n this.meshes[m].forEach(m => m.destroy());\n delete this.meshes[m];\n }\n }\n this.new_mesh_styles = [];\n\n // Release old textures\n this.previous_textures.forEach(t => Texture.release(t));\n this.previous_textures = [];\n\n this.debug.geometry_ratio = (this.debug.geometry_count / this.debug.feature_count).toFixed(1);\n this.printDebug();\n }\n }\n\n /**\n Called on main thread when web worker completes processing, but tile has since been discarded\n Frees resources that would have been transferred to the tile object.\n Static method because the tile object no longer exists (the tile data returned by the worker is passed instead).\n */\n static abortBuild (tile) {\n Task.removeForTile(tile.id);\n Collision.abortTile(tile.id);\n\n // Releases meshes\n if (tile.mesh_data) {\n for (let s in tile.mesh_data) {\n let textures = tile.mesh_data[s].textures;\n if (textures) {\n textures.forEach(t => {\n let texture = Texture.textures[t];\n if (texture) {\n log('trace', `releasing texture ${t} for tile ${tile.key}`);\n texture.release();\n }\n });\n }\n }\n }\n }\n\n // Set as a proxy tile for another tile\n setProxyFor (tile) {\n if (tile) {\n this.visible = true;\n this.proxy_for = this.proxy_for || [];\n this.proxy_for.push(tile);\n this.proxy_depth = 1; // draw proxies a half-layer back (order is scaled 2x to avoid integer truncation)\n tile.proxied_as = (tile.style_zoom > this.style_zoom ? 'child' : 'parent');\n }\n else {\n this.proxy_for = null;\n this.proxy_depth = 0;\n }\n }\n\n // Proxy tiles only need to render a specific style if any of the tiles they are proxying *for*\n // haven't finished loading that style yet. If all proxied tiles *have* data for that style, then it's\n // safe to hide the proxy tile's version.\n shouldProxyForStyle (style) {\n return !this.proxy_for || this.proxy_for.some(t => t.meshes[style] == null);\n }\n\n // Update model matrix and tile uniforms\n setupProgram ({ model, model32 }, program) {\n // Tile origin\n program.uniform('4fv', 'u_tile_origin', [this.min.x, this.min.y, this.style_zoom, this.coords.z]);\n program.uniform('1f', 'u_tile_proxy_depth', this.proxy_depth);\n\n // Model - transform tile space into world space (meters, absolute mercator position)\n mat4.identity(model);\n mat4.translate(model, model, vec3.fromValues(this.min.x, this.min.y, 0));\n mat4.scale(model, model, vec3.fromValues(this.span.x / Geo.tile_scale, -1 * this.span.y / Geo.tile_scale, 1)); // scale tile local coords to meters\n mat4.copy(model32, model);\n program.uniform('Matrix4fv', 'u_model', model32);\n\n // Fade in labels according to proxy status, avoiding \"flickering\" where\n // labels quickly go from invisible back to visible\n program.uniform('1i', 'u_tile_fade_in', this.fade_in && this.proxied_as !== 'child');\n }\n\n // Slice a subset of keys out of a tile\n // Includes a minimum set of pre-defined keys for load state, debug. etc.\n // We use this to send a subset of the tile back to the main thread, to minimize unnecessary data transfer\n // (e.g. very large items like feature geometry are not needed on the main thread)\n static slice (tile, keys) {\n let keep = [\n 'id',\n 'key',\n 'loading',\n 'loaded',\n 'generation',\n 'error',\n 'debug'\n ];\n if (Array.isArray(keys)) {\n keep.push(...keys);\n }\n\n // Build the tile subset\n var tile_subset = {};\n for (let k=0; k < keep.length; k++) {\n const key = keep[k];\n tile_subset[key] = tile[key];\n }\n\n return tile_subset;\n }\n\n merge (other) {\n this.loading = other.loading;\n this.loaded = other.loaded;\n this.generation = other.loaded;\n this.error = other.error;\n this.mesh_data = other.mesh_data;\n this.debug = mergeObjects(this.debug, other.debug);\n return this;\n }\n\n printDebug (exclude = ['layers']) {\n let copy = {};\n for (let key in this.debug) {\n if (exclude.indexOf(key) === -1) {\n copy[key] = this.debug[key];\n }\n }\n\n log('debug', `Tile: debug for ${this.key}: [ ${JSON.stringify(copy)} ]`);\n }\n\n // Sum up layer feature/geometry stats from a set of tiles\n static debugSumLayerStats (tiles) {\n let list = {}, tree = {};\n\n tiles.filter(tile => tile.debug.layers).forEach(tile => {\n // layer list\n Object.keys(tile.debug.layers.list).forEach(layer => {\n let counts = tile.debug.layers.list[layer];\n addLayerDebugEntry(list, layer, counts.features, counts.geoms, counts.styles, counts.base);\n });\n\n // layer tree\n addDebugLayers(tile.debug.layers.tree, tree);\n });\n\n return { list, tree };\n }\n\n}\n\nTile.coord_children = {}; // only allocate children coordinates once per coordinate\n\n// build debug stats layer tree\nfunction addDebugLayers (node, tree) {\n for (let layer in node) {\n let counts = node[layer];\n addLayerDebugEntry(tree, layer, counts.features, counts.geoms, counts.styles, counts.base);\n if (counts.layers) {\n tree[layer].layers = tree[layer].layers || {};\n addDebugLayers(counts.layers, tree[layer].layers); // process child layers\n }\n }\n}\n", diff --git a/dist/tangram.min.js b/dist/tangram.min.js index 7d7c95215..bfa31ec43 100644 --- a/dist/tangram.min.js +++ b/dist/tangram.min.js @@ -1,19 +1,19 @@ -!function(){var e=("undefined"==typeof self||!("undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope))&&("undefined"!=typeof module&&module.exports||"undefined"!=typeof window);if(e)var t=arguments.callee.toString(),r="undefined"!=typeof document&&void 0!==document.currentScript?document.currentScript.src:"",n="";!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var t;t="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,t.Tangram=e()}}(function(){var e;return function i(e,t,r){function n(a,s){if(!t[a]){if(!e[a]){var u="function"==typeof require&&require;if(!s&&u)return u(a,!0);if(o)return o(a,!0);var l=new Error("Cannot find module '"+a+"'");throw l.code="MODULE_NOT_FOUND",l}var c=t[a]={exports:{}};e[a][0].call(c.exports,function(t){var r=e[a][1][t];return n(r?r:t)},c,c.exports,i,e,t,r)}return t[a].exports}for(var o="function"==typeof require&&require,a=0;ac){for(var t=0,r=s.length-l;r>t;t++)s[t]=s[t+l];s.length-=l,l=0}}s.length=0,l=0,u=!1}function i(e){var t=1,r=new h(e),n=document.createTextNode("");return r.observe(n,{characterData:!0}),function(){t=-t,n.data=t}}function o(e){return function(){function t(){clearTimeout(r),clearInterval(n),e()}var r=setTimeout(t,0),n=setInterval(t,50)}}t.exports=r;var a,s=[],u=!1,l=0,c=1024,f="undefined"!=typeof e?e:self,h=f.MutationObserver||f.WebKitMutationObserver;a="function"==typeof h?i(n):o(n),r.requestFlush=a,r.makeRequestCallFromTimer=o}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],3:[function(e,t,r){"use strict";function n(e){var t=e.length;if(t%4>0)throw new Error("Invalid string. Length must be a multiple of 4");return"="===e[t-2]?2:"="===e[t-1]?1:0}function i(e){return 3*e.length/4-n(e)}function o(e){var t,r,i,o,a,s=e.length;o=n(e),a=new f(3*s/4-o),r=o>0?s-4:s;var u=0;for(t=0;r>t;t+=4)i=c[e.charCodeAt(t)]<<18|c[e.charCodeAt(t+1)]<<12|c[e.charCodeAt(t+2)]<<6|c[e.charCodeAt(t+3)],a[u++]=i>>16&255,a[u++]=i>>8&255,a[u++]=255&i;return 2===o?(i=c[e.charCodeAt(t)]<<2|c[e.charCodeAt(t+1)]>>4,a[u++]=255&i):1===o&&(i=c[e.charCodeAt(t)]<<10|c[e.charCodeAt(t+1)]<<4|c[e.charCodeAt(t+2)]>>2,a[u++]=i>>8&255,a[u++]=255&i),a}function a(e){return l[e>>18&63]+l[e>>12&63]+l[e>>6&63]+l[63&e]}function s(e,t,r){for(var n,i=[],o=t;r>o;o+=3)n=(e[o]<<16)+(e[o+1]<<8)+e[o+2],i.push(a(n));return i.join("")}function u(e){for(var t,r=e.length,n=r%3,i="",o=[],a=16383,u=0,c=r-n;c>u;u+=a)o.push(s(e,u,u+a>c?c:u+a));return 1===n?(t=e[r-1],i+=l[t>>2],i+=l[t<<4&63],i+="=="):2===n&&(t=(e[r-2]<<8)+e[r-1],i+=l[t>>10],i+=l[t>>4&63],i+=l[t<<2&63],i+="="),o.push(i),o.join("")}r.byteLength=i,r.toByteArray=o,r.fromByteArray=u;for(var l=[],c=[],f="undefined"!=typeof Uint8Array?Uint8Array:Array,h="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",d=0,p=h.length;p>d;++d)l[d]=h[d],c[h.charCodeAt(d)]=d;c["-".charCodeAt(0)]=62,c["_".charCodeAt(0)]=63},{}],4:[function(){},{}],5:[function(e,t,r){"use strict";function n(){try{var e=new Uint8Array(1);return e.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===e.foo()}catch(t){return!1}}function i(e){if(e>K)throw new RangeError("Invalid typed array length");var t=new Uint8Array(e);return t.__proto__=o.prototype,t}function o(e,t,r){if("number"==typeof e){if("string"==typeof t)throw new Error("If encoding is specified then the first argument must be a string");return l(e)}return a(e,t,r)}function a(e,t,r){if("number"==typeof e)throw new TypeError('"value" argument must not be a number');return Z(e)?h(e,t,r):"string"==typeof e?c(e,t):d(e)}function s(e){if("number"!=typeof e)throw new TypeError('"size" argument must be a number');if(0>e)throw new RangeError('"size" argument must not be negative')}function u(e,t,r){return s(e),0>=e?i(e):void 0!==t?"string"==typeof r?i(e).fill(t,r):i(e).fill(t):i(e)}function l(e){return s(e),i(0>e?0:0|p(e))}function c(e,t){if(("string"!=typeof t||""===t)&&(t="utf8"),!o.isEncoding(t))throw new TypeError('"encoding" must be a valid string encoding');var r=0|m(e,t),n=i(r),a=n.write(e,t);return a!==r&&(n=n.slice(0,a)),n}function f(e){for(var t=e.length<0?0:0|p(e.length),r=i(t),n=0;t>n;n+=1)r[n]=255&e[n];return r}function h(e,t,r){if(0>t||e.byteLength=K)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+K.toString(16)+" bytes");return 0|e}function _(e){return+e!=e&&(e=0),o.alloc(+e)}function m(e,t){if(o.isBuffer(e))return e.length;if(H(e)||Z(e))return e.byteLength;"string"!=typeof e&&(e=""+e);var r=e.length;if(0===r)return 0;for(var n=!1;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":case void 0:return B(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return q(e).length;default:if(n)return B(e).length;t=(""+t).toLowerCase(),n=!0}}function g(e,t,r){var n=!1;if((void 0===t||0>t)&&(t=0),t>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),0>=r)return"";if(r>>>=0,t>>>=0,t>=r)return"";for(e||(e="utf8");;)switch(e){case"hex":return P(this,t,r);case"utf8":case"utf-8":return R(this,t,r);case"ascii":return O(this,t,r);case"latin1":case"binary":return z(this,t,r);case"base64":return S(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return j(this,t,r);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}function v(e,t,r){var n=e[t];e[t]=e[r],e[r]=n}function y(e,t,r,n,i){if(0===e.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:-2147483648>r&&(r=-2147483648),r=+r,X(r)&&(r=i?0:e.length-1),0>r&&(r=e.length+r),r>=e.length){if(i)return-1;r=e.length-1}else if(0>r){if(!i)return-1;r=0}if("string"==typeof t&&(t=o.from(t,n)),o.isBuffer(t))return 0===t.length?-1:b(e,t,r,n,i);if("number"==typeof t)return t=255&t,"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):b(e,[t],r,n,i);throw new TypeError("val must be string, number or Buffer")}function b(e,t,r,n,i){function o(e,t){return 1===a?e[t]:e.readUInt16BE(t*a)}var a=1,s=e.length,u=t.length;if(void 0!==n&&(n=String(n).toLowerCase(),"ucs2"===n||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(e.length<2||t.length<2)return-1;a=2,s/=2,u/=2,r/=2}var l;if(i){var c=-1;for(l=r;s>l;l++)if(o(e,l)===o(t,-1===c?0:l-c)){if(-1===c&&(c=l),l-c+1===u)return c*a}else-1!==c&&(l-=l-c),c=-1}else for(r+u>s&&(r=s-u),l=r;l>=0;l--){for(var f=!0,h=0;u>h;h++)if(o(e,l+h)!==o(t,h)){f=!1;break}if(f)return l}return-1}function x(e,t,r,n){r=Number(r)||0;var i=e.length-r;n?(n=Number(n),n>i&&(n=i)):n=i;var o=t.length;if(o%2!==0)throw new TypeError("Invalid hex string");n>o/2&&(n=o/2);for(var a=0;n>a;++a){var s=parseInt(t.substr(2*a,2),16);if(X(s))return a;e[r+a]=s}return a}function w(e,t,r,n){return W(B(t,e.length-r),e,r,n)}function k(e,t,r,n){return W(G(t),e,r,n)}function A(e,t,r,n){return k(e,t,r,n)}function T(e,t,r,n){return W(q(t),e,r,n)}function E(e,t,r,n){return W(V(t,e.length-r),e,r,n)}function S(e,t,r){return Y.fromByteArray(0===t&&r===e.length?e:e.slice(t,r))}function R(e,t,r){r=Math.min(e.length,r);for(var n=[],i=t;r>i;){var o=e[i],a=null,s=o>239?4:o>223?3:o>191?2:1;if(r>=i+s){var u,l,c,f;switch(s){case 1:128>o&&(a=o);break;case 2:u=e[i+1],128===(192&u)&&(f=(31&o)<<6|63&u,f>127&&(a=f));break;case 3:u=e[i+1],l=e[i+2],128===(192&u)&&128===(192&l)&&(f=(15&o)<<12|(63&u)<<6|63&l,f>2047&&(55296>f||f>57343)&&(a=f));break;case 4:u=e[i+1],l=e[i+2],c=e[i+3],128===(192&u)&&128===(192&l)&&128===(192&c)&&(f=(15&o)<<18|(63&u)<<12|(63&l)<<6|63&c,f>65535&&1114112>f&&(a=f))}}null===a?(a=65533,s=1):a>65535&&(a-=65536,n.push(a>>>10&1023|55296),a=56320|1023&a),n.push(a),i+=s}return M(n)}function M(e){var t=e.length;if($>=t)return String.fromCharCode.apply(String,e);for(var r="",n=0;t>n;)r+=String.fromCharCode.apply(String,e.slice(n,n+=$));return r}function O(e,t,r){var n="";r=Math.min(e.length,r);for(var i=t;r>i;++i)n+=String.fromCharCode(127&e[i]);return n}function z(e,t,r){var n="";r=Math.min(e.length,r);for(var i=t;r>i;++i)n+=String.fromCharCode(e[i]);return n}function P(e,t,r){var n=e.length;(!t||0>t)&&(t=0),(!r||0>r||r>n)&&(r=n);for(var i="",o=t;r>o;++o)i+=D(e[o]);return i}function j(e,t,r){for(var n=e.slice(t,r),i="",o=0;oe)throw new RangeError("offset is not uint");if(e+t>r)throw new RangeError("Trying to access beyond buffer length")}function N(e,t,r,n,i,a){if(!o.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||a>t)throw new RangeError('"value" argument is out of bounds');if(r+n>e.length)throw new RangeError("Index out of range")}function I(e,t,r,n){if(r+n>e.length)throw new RangeError("Index out of range");if(0>r)throw new RangeError("Index out of range")}function C(e,t,r,n,i){return t=+t,r>>>=0,i||I(e,t,r,4,3.4028234663852886e38,-3.4028234663852886e38),J.write(e,t,r,n,23,4),r+4}function F(e,t,r,n,i){return t=+t,r>>>=0,i||I(e,t,r,8,1.7976931348623157e308,-1.7976931348623157e308),J.write(e,t,r,n,52,8),r+8}function U(e){if(e=e.trim().replace(Q,""),e.length<2)return"";for(;e.length%4!==0;)e+="=";return e}function D(e){return 16>e?"0"+e.toString(16):e.toString(16)}function B(e,t){t=t||1/0;for(var r,n=e.length,i=null,o=[],a=0;n>a;++a){if(r=e.charCodeAt(a),r>55295&&57344>r){if(!i){if(r>56319){(t-=3)>-1&&o.push(239,191,189);continue}if(a+1===n){(t-=3)>-1&&o.push(239,191,189);continue}i=r;continue}if(56320>r){(t-=3)>-1&&o.push(239,191,189),i=r;continue}r=(i-55296<<10|r-56320)+65536}else i&&(t-=3)>-1&&o.push(239,191,189);if(i=null,128>r){if((t-=1)<0)break;o.push(r)}else if(2048>r){if((t-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(65536>r){if((t-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(1114112>r))throw new Error("Invalid code point");if((t-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function G(e){for(var t=[],r=0;r>8,i=r%256,o.push(i),o.push(n);return o}function q(e){return Y.toByteArray(U(e))}function W(e,t,r,n){for(var i=0;n>i&&!(i+r>=t.length||i>=e.length);++i)t[i+r]=e[i];return i}function Z(e){return e instanceof ArrayBuffer||null!=e&&null!=e.constructor&&"ArrayBuffer"===e.constructor.name&&"number"==typeof e.byteLength}function H(e){return"function"==typeof ArrayBuffer.isView&&ArrayBuffer.isView(e)}function X(e){return e!==e}var Y=e("base64-js"),J=e("ieee754");r.Buffer=o,r.SlowBuffer=_,r.INSPECT_MAX_BYTES=50;var K=2147483647;r.kMaxLength=K,o.TYPED_ARRAY_SUPPORT=n(),o.TYPED_ARRAY_SUPPORT||"undefined"==typeof console||"function"!=typeof console.error||console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."),"undefined"!=typeof Symbol&&Symbol.species&&o[Symbol.species]===o&&Object.defineProperty(o,Symbol.species,{value:null,configurable:!0,enumerable:!1,writable:!1}),o.poolSize=8192,o.from=function(e,t,r){return a(e,t,r)},o.prototype.__proto__=Uint8Array.prototype,o.__proto__=Uint8Array,o.alloc=function(e,t,r){return u(e,t,r)},o.allocUnsafe=function(e){return l(e)},o.allocUnsafeSlow=function(e){return l(e)},o.isBuffer=function(e){return null!=e&&e._isBuffer===!0},o.compare=function(e,t){if(!o.isBuffer(e)||!o.isBuffer(t))throw new TypeError("Arguments must be Buffers");if(e===t)return 0;for(var r=e.length,n=t.length,i=0,a=Math.min(r,n);a>i;++i)if(e[i]!==t[i]){r=e[i],n=t[i];break}return n>r?-1:r>n?1:0},o.isEncoding=function(e){switch(String(e).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},o.concat=function(e,t){if(!Array.isArray(e))throw new TypeError('"list" argument must be an Array of Buffers');if(0===e.length)return o.alloc(0);var r;if(void 0===t)for(t=0,r=0;rt;t+=2)v(this,t,t+1);return this},o.prototype.swap32=function(){var e=this.length;if(e%4!==0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var t=0;e>t;t+=4)v(this,t,t+3),v(this,t+1,t+2);return this},o.prototype.swap64=function(){var e=this.length;if(e%8!==0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var t=0;e>t;t+=8)v(this,t,t+7),v(this,t+1,t+6),v(this,t+2,t+5),v(this,t+3,t+4);return this},o.prototype.toString=function(){var e=this.length;return 0===e?"":0===arguments.length?R(this,0,e):g.apply(this,arguments)},o.prototype.equals=function(e){if(!o.isBuffer(e))throw new TypeError("Argument must be a Buffer");return this===e?!0:0===o.compare(this,e)},o.prototype.inspect=function(){var e="",t=r.INSPECT_MAX_BYTES;return this.length>0&&(e=this.toString("hex",0,t).match(/.{2}/g).join(" "),this.length>t&&(e+=" ... ")),""},o.prototype.compare=function(e,t,r,n,i){if(!o.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===r&&(r=e?e.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),0>t||r>e.length||0>n||i>this.length)throw new RangeError("out of range index");if(n>=i&&t>=r)return 0;if(n>=i)return-1;if(t>=r)return 1;if(t>>>=0,r>>>=0,n>>>=0,i>>>=0,this===e)return 0;for(var a=i-n,s=r-t,u=Math.min(a,s),l=this.slice(n,i),c=e.slice(t,r),f=0;u>f;++f)if(l[f]!==c[f]){a=l[f],s=c[f];break}return s>a?-1:a>s?1:0},o.prototype.includes=function(e,t,r){return-1!==this.indexOf(e,t,r)},o.prototype.indexOf=function(e,t,r){return y(this,e,t,r,!0)},o.prototype.lastIndexOf=function(e,t,r){return y(this,e,t,r,!1)},o.prototype.write=function(e,t,r,n){if(void 0===t)n="utf8",r=this.length,t=0;else if(void 0===r&&"string"==typeof t)n=t,r=this.length,t=0;else{if(!isFinite(t))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");t>>>=0,isFinite(r)?(r>>>=0,void 0===n&&(n="utf8")):(n=r,r=void 0)}var i=this.length-t;if((void 0===r||r>i)&&(r=i),e.length>0&&(0>r||0>t)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var o=!1;;)switch(n){case"hex":return x(this,e,t,r);case"utf8":case"utf-8":return w(this,e,t,r);case"ascii":return k(this,e,t,r);case"latin1":case"binary":return A(this,e,t,r);case"base64":return T(this,e,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return E(this,e,t,r);default:if(o)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),o=!0}},o.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var $=4096;o.prototype.slice=function(e,t){var r=this.length;e=~~e,t=void 0===t?r:~~t,0>e?(e+=r,0>e&&(e=0)):e>r&&(e=r),0>t?(t+=r,0>t&&(t=0)):t>r&&(t=r),e>t&&(t=e);var n=this.subarray(e,t);return n.__proto__=o.prototype,n},o.prototype.readUIntLE=function(e,t,r){e>>>=0,t>>>=0,r||L(e,t,this.length);for(var n=this[e],i=1,o=0;++o>>=0,t>>>=0,r||L(e,t,this.length);for(var n=this[e+--t],i=1;t>0&&(i*=256);)n+=this[e+--t]*i;return n},o.prototype.readUInt8=function(e,t){return e>>>=0,t||L(e,1,this.length),this[e]},o.prototype.readUInt16LE=function(e,t){return e>>>=0,t||L(e,2,this.length),this[e]|this[e+1]<<8},o.prototype.readUInt16BE=function(e,t){return e>>>=0,t||L(e,2,this.length),this[e]<<8|this[e+1]},o.prototype.readUInt32LE=function(e,t){return e>>>=0,t||L(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},o.prototype.readUInt32BE=function(e,t){return e>>>=0,t||L(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},o.prototype.readIntLE=function(e,t,r){e>>>=0,t>>>=0,r||L(e,t,this.length);for(var n=this[e],i=1,o=0;++o=i&&(n-=Math.pow(2,8*t)),n},o.prototype.readIntBE=function(e,t,r){e>>>=0,t>>>=0,r||L(e,t,this.length);for(var n=t,i=1,o=this[e+--n];n>0&&(i*=256);)o+=this[e+--n]*i;return i*=128,o>=i&&(o-=Math.pow(2,8*t)),o},o.prototype.readInt8=function(e,t){return e>>>=0,t||L(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},o.prototype.readInt16LE=function(e,t){e>>>=0,t||L(e,2,this.length);var r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},o.prototype.readInt16BE=function(e,t){e>>>=0,t||L(e,2,this.length);var r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},o.prototype.readInt32LE=function(e,t){return e>>>=0,t||L(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},o.prototype.readInt32BE=function(e,t){return e>>>=0,t||L(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},o.prototype.readFloatLE=function(e,t){return e>>>=0,t||L(e,4,this.length),J.read(this,e,!0,23,4)},o.prototype.readFloatBE=function(e,t){return e>>>=0,t||L(e,4,this.length),J.read(this,e,!1,23,4)},o.prototype.readDoubleLE=function(e,t){return e>>>=0,t||L(e,8,this.length),J.read(this,e,!0,52,8)},o.prototype.readDoubleBE=function(e,t){return e>>>=0,t||L(e,8,this.length),J.read(this,e,!1,52,8)},o.prototype.writeUIntLE=function(e,t,r,n){if(e=+e,t>>>=0,r>>>=0,!n){var i=Math.pow(2,8*r)-1;N(this,e,t,r,i,0)}var o=1,a=0;for(this[t]=255&e;++a>>=0,r>>>=0,!n){var i=Math.pow(2,8*r)-1;N(this,e,t,r,i,0)}var o=r-1,a=1;for(this[t+o]=255&e;--o>=0&&(a*=256);)this[t+o]=e/a&255;return t+r},o.prototype.writeUInt8=function(e,t,r){return e=+e,t>>>=0,r||N(this,e,t,1,255,0),this[t]=255&e,t+1},o.prototype.writeUInt16LE=function(e,t,r){return e=+e,t>>>=0,r||N(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},o.prototype.writeUInt16BE=function(e,t,r){return e=+e,t>>>=0,r||N(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},o.prototype.writeUInt32LE=function(e,t,r){return e=+e,t>>>=0,r||N(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},o.prototype.writeUInt32BE=function(e,t,r){return e=+e,t>>>=0,r||N(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},o.prototype.writeIntLE=function(e,t,r,n){if(e=+e,t>>>=0,!n){var i=Math.pow(2,8*r-1);N(this,e,t,r,i-1,-i)}var o=0,a=1,s=0;for(this[t]=255&e;++oe&&0===s&&0!==this[t+o-1]&&(s=1),this[t+o]=(e/a>>0)-s&255;return t+r},o.prototype.writeIntBE=function(e,t,r,n){if(e=+e,t>>>=0,!n){var i=Math.pow(2,8*r-1);N(this,e,t,r,i-1,-i)}var o=r-1,a=1,s=0;for(this[t+o]=255&e;--o>=0&&(a*=256);)0>e&&0===s&&0!==this[t+o+1]&&(s=1),this[t+o]=(e/a>>0)-s&255;return t+r},o.prototype.writeInt8=function(e,t,r){return e=+e,t>>>=0,r||N(this,e,t,1,127,-128),0>e&&(e=255+e+1),this[t]=255&e,t+1},o.prototype.writeInt16LE=function(e,t,r){return e=+e,t>>>=0,r||N(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},o.prototype.writeInt16BE=function(e,t,r){return e=+e,t>>>=0,r||N(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},o.prototype.writeInt32LE=function(e,t,r){return e=+e,t>>>=0,r||N(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},o.prototype.writeInt32BE=function(e,t,r){return e=+e,t>>>=0,r||N(this,e,t,4,2147483647,-2147483648),0>e&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},o.prototype.writeFloatLE=function(e,t,r){return C(this,e,t,!0,r)},o.prototype.writeFloatBE=function(e,t,r){return C(this,e,t,!1,r)},o.prototype.writeDoubleLE=function(e,t,r){return F(this,e,t,!0,r)},o.prototype.writeDoubleBE=function(e,t,r){return F(this,e,t,!1,r)},o.prototype.copy=function(e,t,r,n){if(r||(r=0),n||0===n||(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&r>n&&(n=r),n===r)return 0;if(0===e.length||0===this.length)return 0;if(0>t)throw new RangeError("targetStart out of bounds");if(0>r||r>=this.length)throw new RangeError("sourceStart out of bounds");if(0>n)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),e.length-tr&&n>t)for(i=o-1;i>=0;--i)e[i+t]=this[i+r];else if(1e3>o)for(i=0;o>i;++i)e[i+t]=this[i+r];else Uint8Array.prototype.set.call(e,this.subarray(r,r+o),t);return o},o.prototype.fill=function(e,t,r,n){if("string"==typeof e){if("string"==typeof t?(n=t,t=0,r=this.length):"string"==typeof r&&(n=r,r=this.length),1===e.length){var i=e.charCodeAt(0);256>i&&(e=i)}if(void 0!==n&&"string"!=typeof n)throw new TypeError("encoding must be a string");if("string"==typeof n&&!o.isEncoding(n))throw new TypeError("Unknown encoding: "+n)}else"number"==typeof e&&(e=255&e);if(0>t||this.length=r)return this;t>>>=0,r=void 0===r?this.length:r>>>0,e||(e=0);var a;if("number"==typeof e)for(a=t;r>a;++a)this[a]=e;else{var s=o.isBuffer(e)?e:new o(e,n),u=s.length;for(a=0;r-t>a;++a)this[a+t]=s[a%u]}return this};var Q=/[^+\/0-9A-Za-z-_]/g},{"base64-js":3,ieee754:93}],6:[function(e,t){e("../modules/es6.object.to-string"),e("../modules/es6.string.iterator"),e("../modules/web.dom.iterable"),e("../modules/es6.promise"),t.exports=e("../modules/_core").Promise},{"../modules/_core":14,"../modules/es6.object.to-string":66,"../modules/es6.promise":67,"../modules/es6.string.iterator":68,"../modules/web.dom.iterable":69}],7:[function(e,t){t.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},{}],8:[function(e,t){var r=e("./_wks")("unscopables"),n=Array.prototype;void 0==n[r]&&e("./_hide")(n,r,{}),t.exports=function(e){n[r][e]=!0}},{"./_hide":25,"./_wks":63}],9:[function(e,t){t.exports=function(e,t,r,n){if(!(e instanceof t)||void 0!==n&&n in e)throw TypeError(r+": incorrect invocation!");return e}},{}],10:[function(e,t){var r=e("./_is-object");t.exports=function(e){if(!r(e))throw TypeError(e+" is not an object!");return e}},{"./_is-object":31}],11:[function(e,t){var r=e("./_to-iobject"),n=e("./_to-length"),i=e("./_to-index");t.exports=function(e){return function(t,o,a){var s,u=r(t),l=n(u.length),c=i(a,l);if(e&&o!=o){for(;l>c;)if(s=u[c++],s!=s)return!0}else for(;l>c;c++)if((e||c in u)&&u[c]===o)return e||c||0;return!e&&-1}}},{"./_to-index":56,"./_to-iobject":58,"./_to-length":59}],12:[function(e,t){var r=e("./_cof"),n=e("./_wks")("toStringTag"),i="Arguments"==r(function(){return arguments}()),o=function(e,t){try{return e[t]}catch(r){}};t.exports=function(e){var t,a,s;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(a=o(t=Object(e),n))?a:i?r(t):"Object"==(s=r(t))&&"function"==typeof t.callee?"Arguments":s}},{"./_cof":13,"./_wks":63}],13:[function(e,t){var r={}.toString;t.exports=function(e){return r.call(e).slice(8,-1)}},{}],14:[function(e,t){var r=t.exports={version:"2.4.0"};"number"==typeof __e&&(__e=r)},{}],15:[function(e,t){var r=e("./_a-function");t.exports=function(e,t,n){if(r(e),void 0===t)return e;switch(n){case 1:return function(r){return e.call(t,r)};case 2:return function(r,n){return e.call(t,r,n)};case 3:return function(r,n,i){return e.call(t,r,n,i)}}return function(){return e.apply(t,arguments)}}},{"./_a-function":7}],16:[function(e,t){t.exports=function(e){if(void 0==e)throw TypeError("Can't call method on "+e);return e}},{}],17:[function(e,t){t.exports=!e("./_fails")(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},{"./_fails":21}],18:[function(e,t){var r=e("./_is-object"),n=e("./_global").document,i=r(n)&&r(n.createElement);t.exports=function(e){return i?n.createElement(e):{}}},{"./_global":23,"./_is-object":31}],19:[function(e,t){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},{}],20:[function(e,t){var r=e("./_global"),n=e("./_core"),i=e("./_hide"),o=e("./_redefine"),a=e("./_ctx"),s="prototype",u=function(e,t,l){var c,f,h,d,p=e&u.F,_=e&u.G,m=e&u.S,g=e&u.P,v=e&u.B,y=_?r:m?r[t]||(r[t]={}):(r[t]||{})[s],b=_?n:n[t]||(n[t]={}),x=b[s]||(b[s]={});_&&(l=t);for(c in l)f=!p&&y&&void 0!==y[c],h=(f?y:l)[c],d=v&&f?a(h,r):g&&"function"==typeof h?a(Function.call,h):h,y&&o(y,c,h,e&u.U),b[c]!=h&&i(b,c,d),g&&x[c]!=h&&(x[c]=h)};r.core=n,u.F=1,u.G=2,u.S=4,u.P=8,u.B=16,u.W=32,u.U=64,u.R=128,t.exports=u},{"./_core":14,"./_ctx":15,"./_global":23,"./_hide":25,"./_redefine":48}],21:[function(e,t){t.exports=function(e){try{return!!e()}catch(t){return!0}}},{}],22:[function(e,t,r){var n=e("./_ctx"),i=e("./_iter-call"),o=e("./_is-array-iter"),a=e("./_an-object"),s=e("./_to-length"),u=e("./core.get-iterator-method"),l={},c={},r=t.exports=function(e,t,r,f,h){var d,p,_,m,g=h?function(){return e}:u(e),v=n(r,f,t?2:1),y=0;if("function"!=typeof g)throw TypeError(e+" is not iterable!");if(o(g)){for(d=s(e.length);d>y;y++)if(m=t?v(a(p=e[y])[0],p[1]):v(e[y]),m===l||m===c)return m}else for(_=g.call(e);!(p=_.next()).done;)if(m=i(_,v,p.value,t),m===l||m===c)return m};r.BREAK=l,r.RETURN=c},{"./_an-object":10,"./_ctx":15,"./_is-array-iter":30,"./_iter-call":32,"./_to-length":59,"./core.get-iterator-method":64}],23:[function(e,t){var r=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=r)},{}],24:[function(e,t){var r={}.hasOwnProperty;t.exports=function(e,t){return r.call(e,t)}},{}],25:[function(e,t){var r=e("./_object-dp"),n=e("./_property-desc");t.exports=e("./_descriptors")?function(e,t,i){return r.f(e,t,n(1,i))}:function(e,t,r){return e[t]=r,e}},{"./_descriptors":17,"./_object-dp":41,"./_property-desc":46}],26:[function(e,t){t.exports=e("./_global").document&&document.documentElement},{"./_global":23}],27:[function(e,t){t.exports=!e("./_descriptors")&&!e("./_fails")(function(){return 7!=Object.defineProperty(e("./_dom-create")("div"),"a",{get:function(){return 7}}).a})},{"./_descriptors":17,"./_dom-create":18,"./_fails":21}],28:[function(e,t){t.exports=function(e,t,r){var n=void 0===r;switch(t.length){case 0:return n?e():e.call(r);case 1:return n?e(t[0]):e.call(r,t[0]);case 2:return n?e(t[0],t[1]):e.call(r,t[0],t[1]);case 3:return n?e(t[0],t[1],t[2]):e.call(r,t[0],t[1],t[2]);case 4:return n?e(t[0],t[1],t[2],t[3]):e.call(r,t[0],t[1],t[2],t[3])}return e.apply(r,t)}},{}],29:[function(e,t){var r=e("./_cof");t.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==r(e)?e.split(""):Object(e)}},{"./_cof":13}],30:[function(e,t){var r=e("./_iterators"),n=e("./_wks")("iterator"),i=Array.prototype;t.exports=function(e){return void 0!==e&&(r.Array===e||i[n]===e)}},{"./_iterators":37,"./_wks":63}],31:[function(e,t){t.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},{}],32:[function(e,t){var r=e("./_an-object");t.exports=function(e,t,n,i){try{return i?t(r(n)[0],n[1]):t(n)}catch(o){var a=e["return"];throw void 0!==a&&r(a.call(e)),o}}},{"./_an-object":10}],33:[function(e,t){"use strict";var r=e("./_object-create"),n=e("./_property-desc"),i=e("./_set-to-string-tag"),o={};e("./_hide")(o,e("./_wks")("iterator"),function(){return this}),t.exports=function(e,t,a){e.prototype=r(o,{next:n(1,a)}),i(e,t+" Iterator")}},{"./_hide":25,"./_object-create":40,"./_property-desc":46,"./_set-to-string-tag":50,"./_wks":63}],34:[function(e,t){"use strict";var r=e("./_library"),n=e("./_export"),i=e("./_redefine"),o=e("./_hide"),a=e("./_has"),s=e("./_iterators"),u=e("./_iter-create"),l=e("./_set-to-string-tag"),c=e("./_object-gpo"),f=e("./_wks")("iterator"),h=!([].keys&&"next"in[].keys()),d="@@iterator",p="keys",_="values",m=function(){return this};t.exports=function(e,t,g,v,y,b,x){u(g,t,v);var w,k,A,T=function(e){if(!h&&e in M)return M[e];switch(e){case p:return function(){return new g(this,e)};case _:return function(){return new g(this,e)}}return function(){return new g(this,e)}},E=t+" Iterator",S=y==_,R=!1,M=e.prototype,O=M[f]||M[d]||y&&M[y],z=O||T(y),P=y?S?T("entries"):z:void 0,j="Array"==t?M.entries||O:O;if(j&&(A=c(j.call(new e)),A!==Object.prototype&&(l(A,E,!0),r||a(A,f)||o(A,f,m))),S&&O&&O.name!==_&&(R=!0,z=function(){return O.call(this)}),r&&!x||!h&&!R&&M[f]||o(M,f,z),s[t]=z,s[E]=m,y)if(w={values:S?z:T(_),keys:b?z:T(p),entries:P},x)for(k in w)k in M||i(M,k,w[k]);else n(n.P+n.F*(h||R),t,w);return w}},{"./_export":20,"./_has":24,"./_hide":25,"./_iter-create":33,"./_iterators":37,"./_library":38,"./_object-gpo":43,"./_redefine":48,"./_set-to-string-tag":50,"./_wks":63}],35:[function(e,t){var r=e("./_wks")("iterator"),n=!1;try{var i=[7][r]();i["return"]=function(){n=!0},Array.from(i,function(){throw 2})}catch(o){}t.exports=function(e,t){if(!t&&!n)return!1;var i=!1;try{var o=[7],a=o[r]();a.next=function(){return{done:i=!0}},o[r]=function(){return a},e(o)}catch(s){}return i}},{"./_wks":63}],36:[function(e,t){t.exports=function(e,t){return{value:t,done:!!e}}},{}],37:[function(e,t){t.exports={}},{}],38:[function(e,t){t.exports=!1},{}],39:[function(e,t){var r=e("./_global"),n=e("./_task").set,i=r.MutationObserver||r.WebKitMutationObserver,o=r.process,a=r.Promise,s="process"==e("./_cof")(o);t.exports=function(){var e,t,u,l=function(){var r,n;for(s&&(r=o.domain)&&r.exit();e;){n=e.fn,e=e.next;try{n()}catch(i){throw e?u():t=void 0,i}}t=void 0,r&&r.enter()};if(s)u=function(){o.nextTick(l)};else if(i){var c=!0,f=document.createTextNode("");new i(l).observe(f,{characterData:!0}),u=function(){f.data=c=!c}}else if(a&&a.resolve){var h=a.resolve();u=function(){h.then(l)}}else u=function(){n.call(r,l)};return function(r){var n={fn:r,next:void 0};t&&(t.next=n),e||(e=n,u()),t=n}}},{"./_cof":13,"./_global":23,"./_task":55}],40:[function(e,t){var r=e("./_an-object"),n=e("./_object-dps"),i=e("./_enum-bug-keys"),o=e("./_shared-key")("IE_PROTO"),a=function(){},s="prototype",u=function(){var t,r=e("./_dom-create")("iframe"),n=i.length,o="<",a=">";for(r.style.display="none",e("./_html").appendChild(r),r.src="javascript:",t=r.contentWindow.document,t.open(),t.write(o+"script"+a+"document.F=Object"+o+"/script"+a),t.close(),u=t.F;n--;)delete u[s][i[n]];return u()};t.exports=Object.create||function(e,t){var i;return null!==e?(a[s]=r(e),i=new a,a[s]=null,i[o]=e):i=u(),void 0===t?i:n(i,t)}},{"./_an-object":10,"./_dom-create":18,"./_enum-bug-keys":19,"./_html":26,"./_object-dps":42,"./_shared-key":51}],41:[function(e,t,r){var n=e("./_an-object"),i=e("./_ie8-dom-define"),o=e("./_to-primitive"),a=Object.defineProperty;r.f=e("./_descriptors")?Object.defineProperty:function(e,t,r){if(n(e),t=o(t,!0),n(r),i)try{return a(e,t,r) -}catch(s){}if("get"in r||"set"in r)throw TypeError("Accessors not supported!");return"value"in r&&(e[t]=r.value),e}},{"./_an-object":10,"./_descriptors":17,"./_ie8-dom-define":27,"./_to-primitive":61}],42:[function(e,t){var r=e("./_object-dp"),n=e("./_an-object"),i=e("./_object-keys");t.exports=e("./_descriptors")?Object.defineProperties:function(e,t){n(e);for(var o,a=i(t),s=a.length,u=0;s>u;)r.f(e,o=a[u++],t[o]);return e}},{"./_an-object":10,"./_descriptors":17,"./_object-dp":41,"./_object-keys":45}],43:[function(e,t){var r=e("./_has"),n=e("./_to-object"),i=e("./_shared-key")("IE_PROTO"),o=Object.prototype;t.exports=Object.getPrototypeOf||function(e){return e=n(e),r(e,i)?e[i]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?o:null}},{"./_has":24,"./_shared-key":51,"./_to-object":60}],44:[function(e,t){var r=e("./_has"),n=e("./_to-iobject"),i=e("./_array-includes")(!1),o=e("./_shared-key")("IE_PROTO");t.exports=function(e,t){var a,s=n(e),u=0,l=[];for(a in s)a!=o&&r(s,a)&&l.push(a);for(;t.length>u;)r(s,a=t[u++])&&(~i(l,a)||l.push(a));return l}},{"./_array-includes":11,"./_has":24,"./_shared-key":51,"./_to-iobject":58}],45:[function(e,t){var r=e("./_object-keys-internal"),n=e("./_enum-bug-keys");t.exports=Object.keys||function(e){return r(e,n)}},{"./_enum-bug-keys":19,"./_object-keys-internal":44}],46:[function(e,t){t.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},{}],47:[function(e,t){var r=e("./_redefine");t.exports=function(e,t,n){for(var i in t)r(e,i,t[i],n);return e}},{"./_redefine":48}],48:[function(e,t){var r=e("./_global"),n=e("./_hide"),i=e("./_has"),o=e("./_uid")("src"),a="toString",s=Function[a],u=(""+s).split(a);e("./_core").inspectSource=function(e){return s.call(e)},(t.exports=function(e,t,a,s){var l="function"==typeof a;l&&(i(a,"name")||n(a,"name",t)),e[t]!==a&&(l&&(i(a,o)||n(a,o,e[t]?""+e[t]:u.join(String(t)))),e===r?e[t]=a:s?e[t]?e[t]=a:n(e,t,a):(delete e[t],n(e,t,a)))})(Function.prototype,a,function(){return"function"==typeof this&&this[o]||s.call(this)})},{"./_core":14,"./_global":23,"./_has":24,"./_hide":25,"./_uid":62}],49:[function(e,t){"use strict";var r=e("./_global"),n=e("./_object-dp"),i=e("./_descriptors"),o=e("./_wks")("species");t.exports=function(e){var t=r[e];i&&t&&!t[o]&&n.f(t,o,{configurable:!0,get:function(){return this}})}},{"./_descriptors":17,"./_global":23,"./_object-dp":41,"./_wks":63}],50:[function(e,t){var r=e("./_object-dp").f,n=e("./_has"),i=e("./_wks")("toStringTag");t.exports=function(e,t,o){e&&!n(e=o?e:e.prototype,i)&&r(e,i,{configurable:!0,value:t})}},{"./_has":24,"./_object-dp":41,"./_wks":63}],51:[function(e,t){var r=e("./_shared")("keys"),n=e("./_uid");t.exports=function(e){return r[e]||(r[e]=n(e))}},{"./_shared":52,"./_uid":62}],52:[function(e,t){var r=e("./_global"),n="__core-js_shared__",i=r[n]||(r[n]={});t.exports=function(e){return i[e]||(i[e]={})}},{"./_global":23}],53:[function(e,t){var r=e("./_an-object"),n=e("./_a-function"),i=e("./_wks")("species");t.exports=function(e,t){var o,a=r(e).constructor;return void 0===a||void 0==(o=r(a)[i])?t:n(o)}},{"./_a-function":7,"./_an-object":10,"./_wks":63}],54:[function(e,t){var r=e("./_to-integer"),n=e("./_defined");t.exports=function(e){return function(t,i){var o,a,s=String(n(t)),u=r(i),l=s.length;return 0>u||u>=l?e?"":void 0:(o=s.charCodeAt(u),55296>o||o>56319||u+1===l||(a=s.charCodeAt(u+1))<56320||a>57343?e?s.charAt(u):o:e?s.slice(u,u+2):(o-55296<<10)+(a-56320)+65536)}}},{"./_defined":16,"./_to-integer":57}],55:[function(e,t){var r,n,i,o=e("./_ctx"),a=e("./_invoke"),s=e("./_html"),u=e("./_dom-create"),l=e("./_global"),c=l.process,f=l.setImmediate,h=l.clearImmediate,d=l.MessageChannel,p=0,_={},m="onreadystatechange",g=function(){var e=+this;if(_.hasOwnProperty(e)){var t=_[e];delete _[e],t()}},v=function(e){g.call(e.data)};f&&h||(f=function(e){for(var t=[],n=1;arguments.length>n;)t.push(arguments[n++]);return _[++p]=function(){a("function"==typeof e?e:Function(e),t)},r(p),p},h=function(e){delete _[e]},"process"==e("./_cof")(c)?r=function(e){c.nextTick(o(g,e,1))}:d?(n=new d,i=n.port2,n.port1.onmessage=v,r=o(i.postMessage,i,1)):l.addEventListener&&"function"==typeof postMessage&&!l.importScripts?(r=function(e){l.postMessage(e+"","*")},l.addEventListener("message",v,!1)):r=m in u("script")?function(e){s.appendChild(u("script"))[m]=function(){s.removeChild(this),g.call(e)}}:function(e){setTimeout(o(g,e,1),0)}),t.exports={set:f,clear:h}},{"./_cof":13,"./_ctx":15,"./_dom-create":18,"./_global":23,"./_html":26,"./_invoke":28}],56:[function(e,t){var r=e("./_to-integer"),n=Math.max,i=Math.min;t.exports=function(e,t){return e=r(e),0>e?n(e+t,0):i(e,t)}},{"./_to-integer":57}],57:[function(e,t){var r=Math.ceil,n=Math.floor;t.exports=function(e){return isNaN(e=+e)?0:(e>0?n:r)(e)}},{}],58:[function(e,t){var r=e("./_iobject"),n=e("./_defined");t.exports=function(e){return r(n(e))}},{"./_defined":16,"./_iobject":29}],59:[function(e,t){var r=e("./_to-integer"),n=Math.min;t.exports=function(e){return e>0?n(r(e),9007199254740991):0}},{"./_to-integer":57}],60:[function(e,t){var r=e("./_defined");t.exports=function(e){return Object(r(e))}},{"./_defined":16}],61:[function(e,t){var r=e("./_is-object");t.exports=function(e,t){if(!r(e))return e;var n,i;if(t&&"function"==typeof(n=e.toString)&&!r(i=n.call(e)))return i;if("function"==typeof(n=e.valueOf)&&!r(i=n.call(e)))return i;if(!t&&"function"==typeof(n=e.toString)&&!r(i=n.call(e)))return i;throw TypeError("Can't convert object to primitive value")}},{"./_is-object":31}],62:[function(e,t){var r=0,n=Math.random();t.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++r+n).toString(36))}},{}],63:[function(e,t){var r=e("./_shared")("wks"),n=e("./_uid"),i=e("./_global").Symbol,o="function"==typeof i,a=t.exports=function(e){return r[e]||(r[e]=o&&i[e]||(o?i:n)("Symbol."+e))};a.store=r},{"./_global":23,"./_shared":52,"./_uid":62}],64:[function(e,t){var r=e("./_classof"),n=e("./_wks")("iterator"),i=e("./_iterators");t.exports=e("./_core").getIteratorMethod=function(e){return void 0!=e?e[n]||e["@@iterator"]||i[r(e)]:void 0}},{"./_classof":12,"./_core":14,"./_iterators":37,"./_wks":63}],65:[function(e,t){"use strict";var r=e("./_add-to-unscopables"),n=e("./_iter-step"),i=e("./_iterators"),o=e("./_to-iobject");t.exports=e("./_iter-define")(Array,"Array",function(e,t){this._t=o(e),this._i=0,this._k=t},function(){var e=this._t,t=this._k,r=this._i++;return!e||r>=e.length?(this._t=void 0,n(1)):"keys"==t?n(0,r):"values"==t?n(0,e[r]):n(0,[r,e[r]])},"values"),i.Arguments=i.Array,r("keys"),r("values"),r("entries")},{"./_add-to-unscopables":8,"./_iter-define":34,"./_iter-step":36,"./_iterators":37,"./_to-iobject":58}],66:[function(e){"use strict";var t=e("./_classof"),r={};r[e("./_wks")("toStringTag")]="z",r+""!="[object z]"&&e("./_redefine")(Object.prototype,"toString",function(){return"[object "+t(this)+"]"},!0)},{"./_classof":12,"./_redefine":48,"./_wks":63}],67:[function(e){"use strict";var t,r,n,i=e("./_library"),o=e("./_global"),a=e("./_ctx"),s=e("./_classof"),u=e("./_export"),l=e("./_is-object"),c=e("./_a-function"),f=e("./_an-instance"),h=e("./_for-of"),d=e("./_species-constructor"),p=e("./_task").set,_=e("./_microtask")(),m="Promise",g=o.TypeError,v=o.process,y=o[m],v=o.process,b="process"==s(v),x=function(){},w=!!function(){try{var t=y.resolve(1),r=(t.constructor={})[e("./_wks")("species")]=function(e){e(x,x)};return(b||"function"==typeof PromiseRejectionEvent)&&t.then(x)instanceof r}catch(n){}}(),k=function(e,t){return e===t||e===y&&t===n},A=function(e){var t;return l(e)&&"function"==typeof(t=e.then)?t:!1},T=function(e){return k(y,e)?new E(e):new r(e)},E=r=function(e){var t,r;this.promise=new e(function(e,n){if(void 0!==t||void 0!==r)throw g("Bad Promise constructor");t=e,r=n}),this.resolve=c(t),this.reject=c(r)},S=function(e){try{e()}catch(t){return{error:t}}},R=function(e,t){if(!e._n){e._n=!0;var r=e._c;_(function(){for(var n=e._v,i=1==e._s,o=0,a=function(t){var r,o,a=i?t.ok:t.fail,s=t.resolve,u=t.reject,l=t.domain;try{a?(i||(2==e._h&&z(e),e._h=1),a===!0?r=n:(l&&l.enter(),r=a(n),l&&l.exit()),r===t.promise?u(g("Promise-chain cycle")):(o=A(r))?o.call(r,s,u):s(r)):u(n)}catch(c){u(c)}};r.length>o;)a(r[o++]);e._c=[],e._n=!1,t&&!e._h&&M(e)})}},M=function(e){p.call(o,function(){var t,r,n,i=e._v;if(O(e)&&(t=S(function(){b?v.emit("unhandledRejection",i,e):(r=o.onunhandledrejection)?r({promise:e,reason:i}):(n=o.console)&&n.error&&n.error("Unhandled promise rejection",i)}),e._h=b||O(e)?2:1),e._a=void 0,t)throw t.error})},O=function(e){if(1==e._h)return!1;for(var t,r=e._a||e._c,n=0;r.length>n;)if(t=r[n++],t.fail||!O(t.promise))return!1;return!0},z=function(e){p.call(o,function(){var t;b?v.emit("rejectionHandled",e):(t=o.onrejectionhandled)&&t({promise:e,reason:e._v})})},P=function(e){var t=this;t._d||(t._d=!0,t=t._w||t,t._v=e,t._s=2,t._a||(t._a=t._c.slice()),R(t,!0))},j=function(e){var t,r=this;if(!r._d){r._d=!0,r=r._w||r;try{if(r===e)throw g("Promise can't be resolved itself");(t=A(e))?_(function(){var n={_w:r,_d:!1};try{t.call(e,a(j,n,1),a(P,n,1))}catch(i){P.call(n,i)}}):(r._v=e,r._s=1,R(r,!1))}catch(n){P.call({_w:r,_d:!1},n)}}};w||(y=function(e){f(this,y,m,"_h"),c(e),t.call(this);try{e(a(j,this,1),a(P,this,1))}catch(r){P.call(this,r)}},t=function(){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1},t.prototype=e("./_redefine-all")(y.prototype,{then:function(e,t){var r=T(d(this,y));return r.ok="function"==typeof e?e:!0,r.fail="function"==typeof t&&t,r.domain=b?v.domain:void 0,this._c.push(r),this._a&&this._a.push(r),this._s&&R(this,!1),r.promise},"catch":function(e){return this.then(void 0,e)}}),E=function(){var e=new t;this.promise=e,this.resolve=a(j,e,1),this.reject=a(P,e,1)}),u(u.G+u.W+u.F*!w,{Promise:y}),e("./_set-to-string-tag")(y,m),e("./_set-species")(m),n=e("./_core")[m],u(u.S+u.F*!w,m,{reject:function(e){var t=T(this),r=t.reject;return r(e),t.promise}}),u(u.S+u.F*(i||!w),m,{resolve:function(e){if(e instanceof y&&k(e.constructor,this))return e;var t=T(this),r=t.resolve;return r(e),t.promise}}),u(u.S+u.F*!(w&&e("./_iter-detect")(function(e){y.all(e)["catch"](x)})),m,{all:function(e){var t=this,r=T(t),n=r.resolve,i=r.reject,o=S(function(){var r=[],o=0,a=1;h(e,!1,function(e){var s=o++,u=!1;r.push(void 0),a++,t.resolve(e).then(function(e){u||(u=!0,r[s]=e,--a||n(r))},i)}),--a||n(r)});return o&&i(o.error),r.promise},race:function(e){var t=this,r=T(t),n=r.reject,i=S(function(){h(e,!1,function(e){t.resolve(e).then(r.resolve,n)})});return i&&n(i.error),r.promise}})},{"./_a-function":7,"./_an-instance":9,"./_classof":12,"./_core":14,"./_ctx":15,"./_export":20,"./_for-of":22,"./_global":23,"./_is-object":31,"./_iter-detect":35,"./_library":38,"./_microtask":39,"./_redefine-all":47,"./_set-species":49,"./_set-to-string-tag":50,"./_species-constructor":53,"./_task":55,"./_wks":63}],68:[function(e){"use strict";var t=e("./_string-at")(!0);e("./_iter-define")(String,"String",function(e){this._t=String(e),this._i=0},function(){var e,r=this._t,n=this._i;return n>=r.length?{value:void 0,done:!0}:(e=t(r,n),this._i+=e.length,{value:e,done:!1})})},{"./_iter-define":34,"./_string-at":54}],69:[function(e){for(var t=e("./es6.array.iterator"),r=e("./_redefine"),n=e("./_global"),i=e("./_hide"),o=e("./_iterators"),a=e("./_wks"),s=a("iterator"),u=a("toStringTag"),l=o.Array,c=["NodeList","DOMTokenList","MediaList","StyleSheetList","CSSRuleList"],f=0;5>f;f++){var h,d=c[f],p=n[d],_=p&&p.prototype;if(_){_[s]||i(_,s,l),_[u]||i(_,u,d),o[d]=l;for(h in t)_[h]||r(_,h,t[h],!0)}}},{"./_global":23,"./_hide":25,"./_iterators":37,"./_redefine":48,"./_wks":63,"./es6.array.iterator":65}],70:[function(e,t,r){(function(e){function t(e){return Array.isArray?Array.isArray(e):"[object Array]"===m(e)}function n(e){return"boolean"==typeof e}function i(e){return null===e}function o(e){return null==e}function a(e){return"number"==typeof e}function s(e){return"string"==typeof e}function u(e){return"symbol"==typeof e}function l(e){return void 0===e}function c(e){return"[object RegExp]"===m(e)}function f(e){return"object"==typeof e&&null!==e}function h(e){return"[object Date]"===m(e)}function d(e){return"[object Error]"===m(e)||e instanceof Error}function p(e){return"function"==typeof e}function _(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"==typeof e||"undefined"==typeof e}function m(e){return Object.prototype.toString.call(e)}r.isArray=t,r.isBoolean=n,r.isNull=i,r.isNullOrUndefined=o,r.isNumber=a,r.isString=s,r.isSymbol=u,r.isUndefined=l,r.isRegExp=c,r.isObject=f,r.isDate=h,r.isError=d,r.isFunction=p,r.isPrimitive=_,r.isBuffer=e.isBuffer}).call(this,{isBuffer:e("../../is-buffer/index.js")})},{"../../is-buffer/index.js":95}],71:[function(e,t,r){function n(e){return e=Math.round(e),0>e?0:e>255?255:e}function i(e){return 0>e?0:e>1?1:e}function o(e){return n("%"===e[e.length-1]?parseFloat(e)/100*255:parseInt(e))}function a(e){return i("%"===e[e.length-1]?parseFloat(e)/100:parseFloat(e))}function s(e,t,r){return 0>r?r+=1:r>1&&(r-=1),1>6*r?e+(t-e)*r*6:1>2*r?t:2>3*r?e+(t-e)*(2/3-r)*6:e}function u(e){var t=e.replace(/ /g,"").toLowerCase();if(t in l)return l[t].slice();if("#"===t[0]){if(4===t.length){var r=parseInt(t.substr(1),16);return r>=0&&4095>=r?[(3840&r)>>4|(3840&r)>>8,240&r|(240&r)>>4,15&r|(15&r)<<4,1]:null}if(7===t.length){var r=parseInt(t.substr(1),16);return r>=0&&16777215>=r?[(16711680&r)>>16,(65280&r)>>8,255&r,1]:null}return null}var i=t.indexOf("("),u=t.indexOf(")");if(-1!==i&&u+1===t.length){var c=t.substr(0,i),f=t.substr(i+1,u-(i+1)).split(","),h=1;switch(c){case"rgba":if(4!==f.length)return null;h=a(f.pop());case"rgb":return 3!==f.length?null:[o(f[0]),o(f[1]),o(f[2]),h];case"hsla":if(4!==f.length)return null;h=a(f.pop());case"hsl":if(3!==f.length)return null;var d=(parseFloat(f[0])%360+360)%360/360,p=a(f[1]),_=a(f[2]),m=.5>=_?_*(p+1):_+p-_*p,g=2*_-m;return[n(255*s(g,m,d+1/3)),n(255*s(g,m,d)),n(255*s(g,m,d-1/3)),h];default:return null}}return null}var l={transparent:[0,0,0,0],aliceblue:[240,248,255,1],antiquewhite:[250,235,215,1],aqua:[0,255,255,1],aquamarine:[127,255,212,1],azure:[240,255,255,1],beige:[245,245,220,1],bisque:[255,228,196,1],black:[0,0,0,1],blanchedalmond:[255,235,205,1],blue:[0,0,255,1],blueviolet:[138,43,226,1],brown:[165,42,42,1],burlywood:[222,184,135,1],cadetblue:[95,158,160,1],chartreuse:[127,255,0,1],chocolate:[210,105,30,1],coral:[255,127,80,1],cornflowerblue:[100,149,237,1],cornsilk:[255,248,220,1],crimson:[220,20,60,1],cyan:[0,255,255,1],darkblue:[0,0,139,1],darkcyan:[0,139,139,1],darkgoldenrod:[184,134,11,1],darkgray:[169,169,169,1],darkgreen:[0,100,0,1],darkgrey:[169,169,169,1],darkkhaki:[189,183,107,1],darkmagenta:[139,0,139,1],darkolivegreen:[85,107,47,1],darkorange:[255,140,0,1],darkorchid:[153,50,204,1],darkred:[139,0,0,1],darksalmon:[233,150,122,1],darkseagreen:[143,188,143,1],darkslateblue:[72,61,139,1],darkslategray:[47,79,79,1],darkslategrey:[47,79,79,1],darkturquoise:[0,206,209,1],darkviolet:[148,0,211,1],deeppink:[255,20,147,1],deepskyblue:[0,191,255,1],dimgray:[105,105,105,1],dimgrey:[105,105,105,1],dodgerblue:[30,144,255,1],firebrick:[178,34,34,1],floralwhite:[255,250,240,1],forestgreen:[34,139,34,1],fuchsia:[255,0,255,1],gainsboro:[220,220,220,1],ghostwhite:[248,248,255,1],gold:[255,215,0,1],goldenrod:[218,165,32,1],gray:[128,128,128,1],green:[0,128,0,1],greenyellow:[173,255,47,1],grey:[128,128,128,1],honeydew:[240,255,240,1],hotpink:[255,105,180,1],indianred:[205,92,92,1],indigo:[75,0,130,1],ivory:[255,255,240,1],khaki:[240,230,140,1],lavender:[230,230,250,1],lavenderblush:[255,240,245,1],lawngreen:[124,252,0,1],lemonchiffon:[255,250,205,1],lightblue:[173,216,230,1],lightcoral:[240,128,128,1],lightcyan:[224,255,255,1],lightgoldenrodyellow:[250,250,210,1],lightgray:[211,211,211,1],lightgreen:[144,238,144,1],lightgrey:[211,211,211,1],lightpink:[255,182,193,1],lightsalmon:[255,160,122,1],lightseagreen:[32,178,170,1],lightskyblue:[135,206,250,1],lightslategray:[119,136,153,1],lightslategrey:[119,136,153,1],lightsteelblue:[176,196,222,1],lightyellow:[255,255,224,1],lime:[0,255,0,1],limegreen:[50,205,50,1],linen:[250,240,230,1],magenta:[255,0,255,1],maroon:[128,0,0,1],mediumaquamarine:[102,205,170,1],mediumblue:[0,0,205,1],mediumorchid:[186,85,211,1],mediumpurple:[147,112,219,1],mediumseagreen:[60,179,113,1],mediumslateblue:[123,104,238,1],mediumspringgreen:[0,250,154,1],mediumturquoise:[72,209,204,1],mediumvioletred:[199,21,133,1],midnightblue:[25,25,112,1],mintcream:[245,255,250,1],mistyrose:[255,228,225,1],moccasin:[255,228,181,1],navajowhite:[255,222,173,1],navy:[0,0,128,1],oldlace:[253,245,230,1],olive:[128,128,0,1],olivedrab:[107,142,35,1],orange:[255,165,0,1],orangered:[255,69,0,1],orchid:[218,112,214,1],palegoldenrod:[238,232,170,1],palegreen:[152,251,152,1],paleturquoise:[175,238,238,1],palevioletred:[219,112,147,1],papayawhip:[255,239,213,1],peachpuff:[255,218,185,1],peru:[205,133,63,1],pink:[255,192,203,1],plum:[221,160,221,1],powderblue:[176,224,230,1],purple:[128,0,128,1],rebeccapurple:[102,51,153,1],red:[255,0,0,1],rosybrown:[188,143,143,1],royalblue:[65,105,225,1],saddlebrown:[139,69,19,1],salmon:[250,128,114,1],sandybrown:[244,164,96,1],seagreen:[46,139,87,1],seashell:[255,245,238,1],sienna:[160,82,45,1],silver:[192,192,192,1],skyblue:[135,206,235,1],slateblue:[106,90,205,1],slategray:[112,128,144,1],slategrey:[112,128,144,1],snow:[255,250,250,1],springgreen:[0,255,127,1],steelblue:[70,130,180,1],tan:[210,180,140,1],teal:[0,128,128,1],thistle:[216,191,216,1],tomato:[255,99,71,1],turquoise:[64,224,208,1],violet:[238,130,238,1],wheat:[245,222,179,1],white:[255,255,255,1],whitesmoke:[245,245,245,1],yellow:[255,255,0,1],yellowgreen:[154,205,50,1]};try{r.parseCSSColor=u}catch(c){}},{}],72:[function(e,t){"use strict";function r(e,t,r){r=r||2;var i=t&&t.length,a=i?t[0]*r:e.length,s=n(e,0,a,r,!0),u=[];if(!s)return u;var l,f,h,d,p,_,m;if(i&&(s=c(e,t,s,r)),e.length>80*r){l=h=e[0],f=d=e[1];for(var g=r;a>g;g+=r)p=e[g],_=e[g+1],l>p&&(l=p),f>_&&(f=_),p>h&&(h=p),_>d&&(d=_);m=Math.max(h-l,d-f)}return o(s,u,r,l,f,m),u}function n(e,t,r,n,i){var o,a;if(i===O(e,t,r,n)>0)for(o=t;r>o;o+=n)a=S(o,e[o],e[o+1],a);else for(o=r-n;o>=t;o-=n)a=S(o,e[o],e[o+1],a);return a&&x(a,a.next)&&(R(a),a=a.next),a}function i(e,t){if(!e)return e;t||(t=e);var r,n=e;do if(r=!1,n.steiner||!x(n,n.next)&&0!==b(n.prev,n,n.next))n=n.next;else{if(R(n),n=t=n.prev,n===n.next)return null;r=!0}while(r||n!==t);return t}function o(e,t,r,n,c,f,h){if(e){!h&&f&&p(e,n,c,f);for(var d,_,m=e;e.prev!==e.next;)if(d=e.prev,_=e.next,f?s(e,n,c,f):a(e))t.push(d.i/r),t.push(e.i/r),t.push(_.i/r),R(e),e=_.next,m=_.next;else if(e=_,e===m){h?1===h?(e=u(e,t,r),o(e,t,r,n,c,f,2)):2===h&&l(e,t,r,n,c,f):o(i(e),t,r,n,c,f,1);break}}}function a(e){var t=e.prev,r=e,n=e.next;if(b(t,r,n)>=0)return!1;for(var i=e.next.next;i!==e.prev;){if(v(t.x,t.y,r.x,r.y,n.x,n.y,i.x,i.y)&&b(i.prev,i,i.next)>=0)return!1;i=i.next}return!0}function s(e,t,r,n){var i=e.prev,o=e,a=e.next;if(b(i,o,a)>=0)return!1;for(var s=i.xo.x?i.x>a.x?i.x:a.x:o.x>a.x?o.x:a.x,c=i.y>o.y?i.y>a.y?i.y:a.y:o.y>a.y?o.y:a.y,f=m(s,u,t,r,n),h=m(l,c,t,r,n),d=e.nextZ;d&&d.z<=h;){if(d!==e.prev&&d!==e.next&&v(i.x,i.y,o.x,o.y,a.x,a.y,d.x,d.y)&&b(d.prev,d,d.next)>=0)return!1;d=d.nextZ}for(d=e.prevZ;d&&d.z>=f;){if(d!==e.prev&&d!==e.next&&v(i.x,i.y,o.x,o.y,a.x,a.y,d.x,d.y)&&b(d.prev,d,d.next)>=0)return!1;d=d.prevZ}return!0}function u(e,t,r){var n=e;do{var i=n.prev,o=n.next.next;!x(i,o)&&w(i,n,n.next,o)&&A(i,o)&&A(o,i)&&(t.push(i.i/r),t.push(n.i/r),t.push(o.i/r),R(n),R(n.next),n=e=o),n=n.next}while(n!==e);return n}function l(e,t,r,n,a,s){var u=e;do{for(var l=u.next.next;l!==u.prev;){if(u.i!==l.i&&y(u,l)){var c=E(u,l);return u=i(u,u.next),c=i(c,c.next),o(u,t,r,n,a,s),void o(c,t,r,n,a,s)}l=l.next}u=u.next}while(u!==e)}function c(e,t,r,o){var a,s,u,l,c,d=[];for(a=0,s=t.length;s>a;a++)u=t[a]*o,l=s-1>a?t[a+1]*o:e.length,c=n(e,u,l,o,!1),c===c.next&&(c.steiner=!0),d.push(g(c));for(d.sort(f),a=0;a=n.next.y){var s=n.x+(o-n.y)*(n.next.x-n.x)/(n.next.y-n.y);if(i>=s&&s>a){if(a=s,s===i){if(o===n.y)return n;if(o===n.next.y)return n.next}r=n.x=n.x&&n.x>=c&&v(f>o?i:a,o,c,f,f>o?a:i,o,n.x,n.y)&&(u=Math.abs(o-n.y)/(i-n.x),(h>u||u===h&&n.x>r.x)&&A(n,e)&&(r=n,h=u)),n=n.next;return r}function p(e,t,r,n){var i=e;do null===i.z&&(i.z=m(i.x,i.y,t,r,n)),i.prevZ=i.prev,i.nextZ=i.next,i=i.next;while(i!==e);i.prevZ.nextZ=null,i.prevZ=null,_(i)}function _(e){var t,r,n,i,o,a,s,u,l=1;do{for(r=e,e=null,o=null,a=0;r;){for(a++,n=r,s=0,t=0;l>t&&(s++,n=n.nextZ,n);t++);for(u=l;s>0||u>0&&n;)0===s?(i=n,n=n.nextZ,u--):0!==u&&n?r.z<=n.z?(i=r,r=r.nextZ,s--):(i=n,n=n.nextZ,u--):(i=r,r=r.nextZ,s--),o?o.nextZ=i:e=i,i.prevZ=o,o=i;r=n}o.nextZ=null,l*=2}while(a>1);return e}function m(e,t,r,n,i){return e=32767*(e-r)/i,t=32767*(t-n)/i,e=16711935&(e|e<<8),e=252645135&(e|e<<4),e=858993459&(e|e<<2),e=1431655765&(e|e<<1),t=16711935&(t|t<<8),t=252645135&(t|t<<4),t=858993459&(t|t<<2),t=1431655765&(t|t<<1),e|t<<1}function g(e){var t=e,r=e;do t.x=0&&(e-a)*(n-s)-(r-a)*(t-s)>=0&&(r-a)*(o-s)-(i-a)*(n-s)>=0}function y(e,t){return e.next.i!==t.i&&e.prev.i!==t.i&&!k(e,t)&&A(e,t)&&A(t,e)&&T(e,t)}function b(e,t,r){return(t.y-e.y)*(r.x-t.x)-(t.x-e.x)*(r.y-t.y)}function x(e,t){return e.x===t.x&&e.y===t.y}function w(e,t,r,n){return x(e,t)&&x(r,n)||x(e,n)&&x(r,t)?!0:b(e,t,r)>0!=b(e,t,n)>0&&b(r,n,e)>0!=b(r,n,t)>0}function k(e,t){var r=e;do{if(r.i!==e.i&&r.next.i!==e.i&&r.i!==t.i&&r.next.i!==t.i&&w(r,r.next,e,t))return!0;r=r.next}while(r!==e);return!1}function A(e,t){return b(e.prev,e,e.next)<0?b(e,t,e.next)>=0&&b(e,e.prev,t)>=0:b(e,t,e.prev)<0||b(e,e.next,t)<0}function T(e,t){var r=e,n=!1,i=(e.x+t.x)/2,o=(e.y+t.y)/2;do r.y>o!=r.next.y>o&&i<(r.next.x-r.x)*(o-r.y)/(r.next.y-r.y)+r.x&&(n=!n),r=r.next;while(r!==e);return n}function E(e,t){var r=new M(e.i,e.x,e.y),n=new M(t.i,t.x,t.y),i=e.next,o=t.prev;return e.next=t,t.prev=e,r.next=i,i.prev=r,n.next=r,r.prev=n,o.next=n,n.prev=o,n}function S(e,t,r,n){var i=new M(e,t,r);return n?(i.next=n.next,i.prev=n,n.next.prev=i,n.next=i):(i.prev=i,i.next=i),i}function R(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ)}function M(e,t,r){this.i=e,this.x=t,this.y=r,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}function O(e,t,r,n){for(var i=0,o=t,a=r-n;r>o;o+=n)i+=(e[a]-e[o])*(e[o+1]+e[a+1]),a=o;return i}t.exports=r,r.deviation=function(e,t,r,n){var i=t&&t.length,o=i?t[0]*r:e.length,a=Math.abs(O(e,0,o,r));if(i)for(var s=0,u=t.length;u>s;s++){var l=t[s]*r,c=u-1>s?t[s+1]*r:e.length;a-=Math.abs(O(e,l,c,r))}var f=0;for(s=0;sa;a++)r.vertices.push(e[i][o][a]);i>0&&(n+=e[i-1].length,r.holes.push(n))}return r}},{}],73:[function(e,t){function r(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function n(e){return"function"==typeof e}function i(e){return"number"==typeof e}function o(e){return"object"==typeof e&&null!==e}function a(e){return void 0===e}t.exports=r,r.EventEmitter=r,r.prototype._events=void 0,r.prototype._maxListeners=void 0,r.defaultMaxListeners=10,r.prototype.setMaxListeners=function(e){if(!i(e)||0>e||isNaN(e))throw TypeError("n must be a positive number");return this._maxListeners=e,this},r.prototype.emit=function(e){var t,r,i,s,u,l;if(this._events||(this._events={}),"error"===e&&(!this._events.error||o(this._events.error)&&!this._events.error.length)){if(t=arguments[1],t instanceof Error)throw t;var c=new Error('Uncaught, unspecified "error" event. ('+t+")");throw c.context=t,c}if(r=this._events[e],a(r))return!1;if(n(r))switch(arguments.length){case 1:r.call(this);break;case 2:r.call(this,arguments[1]);break;case 3:r.call(this,arguments[1],arguments[2]);break;default:s=Array.prototype.slice.call(arguments,1),r.apply(this,s)}else if(o(r))for(s=Array.prototype.slice.call(arguments,1),l=r.slice(),i=l.length,u=0;i>u;u++)l[u].apply(this,s);return!0},r.prototype.addListener=function(e,t){var i;if(!n(t))throw TypeError("listener must be a function");return this._events||(this._events={}),this._events.newListener&&this.emit("newListener",e,n(t.listener)?t.listener:t),this._events[e]?o(this._events[e])?this._events[e].push(t):this._events[e]=[this._events[e],t]:this._events[e]=t,o(this._events[e])&&!this._events[e].warned&&(i=a(this._maxListeners)?r.defaultMaxListeners:this._maxListeners,i&&i>0&&this._events[e].length>i&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),"function"==typeof console.trace&&console.trace())),this},r.prototype.on=r.prototype.addListener,r.prototype.once=function(e,t){function r(){this.removeListener(e,r),i||(i=!0,t.apply(this,arguments))}if(!n(t))throw TypeError("listener must be a function");var i=!1;return r.listener=t,this.on(e,r),this},r.prototype.removeListener=function(e,t){var r,i,a,s;if(!n(t))throw TypeError("listener must be a function");if(!this._events||!this._events[e])return this;if(r=this._events[e],a=r.length,i=-1,r===t||n(r.listener)&&r.listener===t)delete this._events[e],this._events.removeListener&&this.emit("removeListener",e,t);else if(o(r)){for(s=a;s-->0;)if(r[s]===t||r[s].listener&&r[s].listener===t){i=s;break}if(0>i)return this;1===r.length?(r.length=0,delete this._events[e]):r.splice(i,1),this._events.removeListener&&this.emit("removeListener",e,t)}return this},r.prototype.removeAllListeners=function(e){var t,r;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(t in this._events)"removeListener"!==t&&this.removeAllListeners(t);return this.removeAllListeners("removeListener"),this._events={},this}if(r=this._events[e],n(r))this.removeListener(e,r);else if(r)for(;r.length;)this.removeListener(e,r[r.length-1]);return delete this._events[e],this},r.prototype.listeners=function(e){var t;return t=this._events&&this._events[e]?n(this._events[e])?[this._events[e]]:this._events[e].slice():[]},r.prototype.listenerCount=function(e){if(this._events){var t=this._events[e];if(n(t))return 1;if(t)return t.length}return 0},r.listenerCount=function(e,t){return e.listenerCount(t)}},{}],74:[function(e,t){!function(){function e(e,t){document.addEventListener?e.addEventListener("scroll",t,!1):e.attachEvent("scroll",t)}function r(e){document.body?e():document.addEventListener?document.addEventListener("DOMContentLoaded",function t(){document.removeEventListener("DOMContentLoaded",t),e()}):document.attachEvent("onreadystatechange",function r(){("interactive"==document.readyState||"complete"==document.readyState)&&(document.detachEvent("onreadystatechange",r),e())})}function n(e){this.a=document.createElement("div"),this.a.setAttribute("aria-hidden","true"),this.a.appendChild(document.createTextNode(e)),this.b=document.createElement("span"),this.c=document.createElement("span"),this.h=document.createElement("span"),this.f=document.createElement("span"),this.g=-1,this.b.style.cssText="max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;",this.c.style.cssText="max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;",this.f.style.cssText="max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;",this.h.style.cssText="display:inline-block;width:200%;height:200%;font-size:16px;max-width:none;",this.b.appendChild(this.h),this.c.appendChild(this.f),this.a.appendChild(this.b),this.a.appendChild(this.c)}function i(e,t){e.a.style.cssText="max-width:none;min-width:20px;min-height:20px;display:inline-block;overflow:hidden;position:absolute;width:auto;margin:0;padding:0;top:-999px;left:-999px;white-space:nowrap;font:"+t+";"}function o(e){var t=e.a.offsetWidth,r=t+100;return e.f.style.width=r+"px",e.c.scrollLeft=r,e.b.scrollLeft=e.b.scrollWidth+100,e.g!==t?(e.g=t,!0):!1}function a(t,r){function n(){var e=i;o(e)&&e.a.parentNode&&r(e.g)}var i=t;e(t.b,n),e(t.c,n),o(t)}function s(e,t){var r=t||{};this.family=e,this.style=r.style||"normal",this.weight=r.weight||"normal",this.stretch=r.stretch||"normal"}function u(){if(null===h){var e=document.createElement("div");try{e.style.font="condensed 100px sans-serif"}catch(t){}h=""!==e.style.font}return h}function l(e,t){return[e.style,e.weight,u()?e.stretch:"","100px",t].join(" ")}var c=null,f=null,h=null,d=null;s.prototype.load=function(e,t){var o=this,s=e||"BESbswy",u=0,h=t||3e3,p=(new Date).getTime();return new Promise(function(e,t){var _;if(null===d&&(d=!!document.fonts),(_=d)&&(null===f&&(f=/OS X.*Version\/10\..*Safari/.test(navigator.userAgent)&&/Apple/.test(navigator.vendor)),_=!f),_){_=new Promise(function(e,t){function r(){(new Date).getTime()-p>=h?t():document.fonts.load(l(o,'"'+o.family+'"'),s).then(function(t){1<=t.length?e():setTimeout(r,25)},function(){t()})}r()});var m=new Promise(function(e,t){u=setTimeout(t,h)});Promise.race([m,_]).then(function(){clearTimeout(u),e(o)},function(){t(o)})}else r(function(){function r(){var t;(t=-1!=g&&-1!=v||-1!=g&&-1!=y||-1!=v&&-1!=y)&&((t=g!=v&&g!=y&&v!=y)||(null===c&&(t=/AppleWebKit\/([0-9]+)(?:\.([0-9]+))/.exec(window.navigator.userAgent),c=!!t&&(536>parseInt(t[1],10)||536===parseInt(t[1],10)&&11>=parseInt(t[2],10))),t=c&&(g==b&&v==b&&y==b||g==x&&v==x&&y==x||g==w&&v==w&&y==w)),t=!t),t&&(k.parentNode&&k.parentNode.removeChild(k),clearTimeout(u),e(o))}function f(){if((new Date).getTime()-p>=h)k.parentNode&&k.parentNode.removeChild(k),t(o);else{var e=document.hidden;(!0===e||void 0===e)&&(g=d.a.offsetWidth,v=_.a.offsetWidth,y=m.a.offsetWidth,r()),u=setTimeout(f,50)}}var d=new n(s),_=new n(s),m=new n(s),g=-1,v=-1,y=-1,b=-1,x=-1,w=-1,k=document.createElement("div");k.dir="ltr",i(d,l(o,"sans-serif")),i(_,l(o,"serif")),i(m,l(o,"monospace")),k.appendChild(d.a),k.appendChild(_.a),k.appendChild(m.a),document.body.appendChild(k),b=d.a.offsetWidth,x=_.a.offsetWidth,w=m.a.offsetWidth,f(),a(d,function(e){g=e,r()}),i(d,l(o,'"'+o.family+'",sans-serif')),a(_,function(e){v=e,r()}),i(_,l(o,'"'+o.family+'",serif')),a(m,function(e){y=e,r()}),i(m,l(o,'"'+o.family+'",monospace'))})})},"undefined"!=typeof t?t.exports=s:(window.FontFaceObserver=s,window.FontFaceObserver.prototype.load=s.prototype.load)}()},{}],75:[function(e,t){"use strict";function r(e,t,r,o,s,u,l,c){if(r/=t,o/=t,l>=r&&o>=c)return e;if(l>o||r>c)return null;for(var f=[],h=0;h=r&&o>=p)f.push(_);else if(!(d>o||r>p)){var v=1===g?n(m,r,o,s):i(m,r,o,s,u,3===g);v.length&&f.push(a(_.tags,g,v,_.id))}}return f.length?f:null}function n(e,t,r,n){for(var i=[],o=0;o=t&&r>=s&&i.push(a)}return i}function i(e,t,r,n,i,a){for(var s=[],u=0;uc;c++)l=p||_[c],p=_[c+1],h=d||l[n],d=p[n],t>h?d>r?(b.push(i(l,p,t),i(l,p,r)),a||(b=o(s,b,m,g,v))):d>=t&&b.push(i(l,p,t)):h>r?t>d?(b.push(i(l,p,r),i(l,p,t)),a||(b=o(s,b,m,g,v))):r>=d&&b.push(i(l,p,r)):(b.push(l),t>d?(b.push(i(l,p,t)),a||(b=o(s,b,m,g,v))):d>r&&(b.push(i(l,p,r)),a||(b=o(s,b,m,g,v)))); -l=_[y-1],h=l[n],h>=t&&r>=h&&b.push(l),f=b[b.length-1],a&&f&&(b[0][0]!==f[0]||b[0][1]!==f[1])&&b.push(b[0]),o(s,b,m,g,v)}return s}function o(e,t,r,n,i){return t.length&&(t.area=r,t.dist=n,void 0!==i&&(t.outer=i),e.push(t)),[]}t.exports=r;var a=e("./feature")},{"./feature":77}],76:[function(e,t){"use strict";function r(e,t){var r=[];if("FeatureCollection"===e.type)for(var i=0;in?0:n>1?1:n,[r,n,0]}function a(e){for(var t,r,n=0,i=0,o=0;o1)return!1;var o=i.geometry[0].length;if(5!==o)return!1;for(var a=0;o>a;a++){var s=c.point(i.geometry[0][a],t,e.z2,e.x,e.y);if(s[0]!==-r&&s[0]!==t+r||s[1]!==-r&&s[1]!==t+r)return!1}return!0}t.exports=r;var l=e("./convert"),c=e("./transform"),f=e("./clip"),h=e("./wrap"),d=e("./tile");n.prototype.options={maxZoom:14,indexMaxZoom:5,indexMaxPoints:1e5,solidChildren:!1,tolerance:3,extent:4096,buffer:64,debug:0},n.prototype.splitTile=function(e,t,r,n,s,l,c){for(var h=[e,t,r,n],p=this.options,_=p.debug,m=null;h.length;){n=h.pop(),r=h.pop(),t=h.pop(),e=h.pop();var g=1<1&&console.time("creation"),y=this.tiles[v]=d(e,g,r,n,b,t===p.maxZoom),this.tileCoords.push({z:t,x:r,y:n}),_)){_>1&&(console.log("tile z%d-%d-%d (features: %d, points: %d, simplified: %d)",t,r,n,y.numFeatures,y.numPoints,y.numSimplified),console.timeEnd("creation"));var x="z"+t;this.stats[x]=(this.stats[x]||0)+1,this.total++}if(y.source=e,s){if(t===p.maxZoom||t===s)continue;var w=1<1&&console.time("clipping");var k,A,T,E,S,R,M=.5*p.buffer/p.extent,O=.5-M,z=.5+M,P=1+M;k=A=T=E=null,S=f(e,g,r-M,r+z,0,o,y.min[0],y.max[0]),R=f(e,g,r+O,r+P,0,o,y.min[0],y.max[0]),S&&(k=f(S,g,n-M,n+z,1,a,y.min[1],y.max[1]),A=f(S,g,n+O,n+P,1,a,y.min[1],y.max[1])),R&&(T=f(R,g,n-M,n+z,1,a,y.min[1],y.max[1]),E=f(R,g,n+O,n+P,1,a,y.min[1],y.max[1])),_>1&&console.timeEnd("clipping"),e.length&&(h.push(k||[],t+1,2*r,2*n),h.push(A||[],t+1,2*r,2*n+1),h.push(T||[],t+1,2*r+1,2*n),h.push(E||[],t+1,2*r+1,2*n+1))}else s&&(m=t)}return m},n.prototype.getTile=function(e,t,r){var n=this.options,o=n.extent,a=n.debug,s=1<1&&console.log("drilling down to z%d-%d-%d",e,t,r);for(var f,h=e,d=t,p=r;!f&&h>0;)h--,d=Math.floor(d/2),p=Math.floor(p/2),f=this.tiles[i(h,d,p)];if(!f||!f.source)return null;if(a>1&&console.log("found parent tile z%d-%d-%d",h,d,p),u(f,o,n.buffer))return c.tile(f,o);a>1&&console.time("drilling down");var _=this.splitTile(f.source,h,d,p,e,t,r);if(a>1&&console.timeEnd("drilling down"),null!==_){var m=1<r;r++)o=n(e[r],e[l],e[c]),o>i&&(a=r,i=o);i>s?(e[a][2]=i,f.push(l),f.push(a),l=a):(c=f.pop(),l=f.pop())}}function n(e,t,r){var n=t[0],i=t[1],o=r[0],a=r[1],s=e[0],u=e[1],l=o-n,c=a-i;if(0!==l||0!==c){var f=((s-n)*l+(u-i)*c)/(l*l+c*c);f>1?(n=o,i=a):f>0&&(n+=l*f,i+=c*f)}return l=s-n,c=u-i,l*l+c*c}t.exports=r},{}],80:[function(e,t){"use strict";function r(e,t,r,i,o,a){for(var s={features:[],numPoints:0,numSimplified:0,numFeatures:0,source:null,x:r,y:i,z2:t,transformed:!1,min:[2,1],max:[-1,0]},u=0;us.max[0]&&(s.max[0]=c[0]),c[1]>s.max[1]&&(s.max[1]=c[1])}return s}function n(e,t,r,n){var o,a,s,u,l=t.geometry,c=t.type,f=[],h=r*r;if(1===c)for(o=0;oh)&&(d.push(u),e.numSimplified++),e.numPoints++;3===c&&i(d,s.outer),f.push(d)}else e.numPoints+=s.length;if(f.length){var p={geometry:f,type:c,tags:t.tags||null};null!==t.id&&(p.id=t.id),e.features.push(p)}}function i(e,t){var r=o(e);0>r===t&&e.reverse()}function o(e){for(var t,r,n=0,i=0,o=e.length,a=o-1;o>i;a=i++)t=e[i],r=e[a],n+=(r[0]-t[0])*(t[1]+r[1]);return n}t.exports=r},{}],81:[function(e,t,r){"use strict";function n(e,t){if(e.transformed)return e;var r,n,o,a=e.z2,s=e.x,u=e.y;for(r=0;r>1,c=-7,f=r?i-1:0,h=r?-1:1,d=e[t+f];for(f+=h,o=d&(1<<-c)-1,d>>=-c,c+=s;c>0;o=256*o+e[t+f],f+=h,c-=8);for(a=o&(1<<-c)-1,o>>=-c,c+=n;c>0;a=256*a+e[t+f],f+=h,c-=8);if(0===o)o=1-l;else{if(o===u)return a?0/0:1/0*(d?-1:1);a+=Math.pow(2,n),o-=l}return(d?-1:1)*a*Math.pow(2,o-n)},r.write=function(e,t,r,n,i,o){var a,s,u,l=8*o-i-1,c=(1<>1,h=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,d=n?0:o-1,p=n?1:-1,_=0>t||0===t&&0>1/t?1:0;for(t=Math.abs(t),isNaN(t)||1/0===t?(s=isNaN(t)?1:0,a=c):(a=Math.floor(Math.log(t)/Math.LN2),t*(u=Math.pow(2,-a))<1&&(a--,u*=2),t+=a+f>=1?h/u:h*Math.pow(2,1-f),t*u>=2&&(a++,u/=2),a+f>=c?(s=0,a=c):a+f>=1?(s=(t*u-1)*Math.pow(2,i),a+=f):(s=t*Math.pow(2,f-1)*Math.pow(2,i),a=0));i>=8;e[r+d]=255&s,d+=p,s/=256,i-=8);for(a=a<0;e[r+d]=255&a,d+=p,a/=256,l-=8);e[r+d-p]|=128*_}},{}],94:[function(e,t){t.exports="function"==typeof Object.create?function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}:function(e,t){e.super_=t;var r=function(){};r.prototype=t.prototype,e.prototype=new r,e.prototype.constructor=e}},{}],95:[function(e,t){function r(e){return!!e.constructor&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}function n(e){return"function"==typeof e.readFloatLE&&"function"==typeof e.slice&&r(e.slice(0,0))}t.exports=function(e){return null!=e&&(r(e)||n(e)||!!e._isBuffer)}},{}],96:[function(e,t){var r={}.toString;t.exports=Array.isArray||function(e){return"[object Array]"==r.call(e)}},{}],97:[function(e,t){"use strict";var r=e("./lib/js-yaml.js");t.exports=r},{"./lib/js-yaml.js":98}],98:[function(e,t){"use strict";function r(e){return function(){throw new Error("Function "+e+" is deprecated and cannot be used.")}}var n=e("./js-yaml/loader");t.exports.Type=e("./js-yaml/type"),t.exports.Schema=e("./js-yaml/schema"),t.exports.FAILSAFE_SCHEMA=e("./js-yaml/schema/failsafe"),t.exports.JSON_SCHEMA=e("./js-yaml/schema/json"),t.exports.CORE_SCHEMA=e("./js-yaml/schema/core"),t.exports.DEFAULT_SAFE_SCHEMA=e("./js-yaml/schema/default_safe"),t.exports.DEFAULT_FULL_SCHEMA=e("./js-yaml/schema/default_full"),t.exports.load=n.load,t.exports.loadAll=n.loadAll,t.exports.safeLoad=n.safeLoad,t.exports.safeLoadAll=n.safeLoadAll,t.exports.YAMLException=e("./js-yaml/exception"),t.exports.MINIMAL_SCHEMA=e("./js-yaml/schema/failsafe"),t.exports.SAFE_SCHEMA=e("./js-yaml/schema/default_safe"),t.exports.DEFAULT_SCHEMA=e("./js-yaml/schema/default_full"),t.exports.scan=r("scan"),t.exports.parse=r("parse"),t.exports.compose=r("compose"),t.exports.addConstructor=r("addConstructor")},{"./js-yaml/exception":100,"./js-yaml/loader":101,"./js-yaml/schema":103,"./js-yaml/schema/core":104,"./js-yaml/schema/default_full":105,"./js-yaml/schema/default_safe":106,"./js-yaml/schema/failsafe":107,"./js-yaml/schema/json":108,"./js-yaml/type":109}],99:[function(e,t){"use strict";function r(e){return"undefined"==typeof e||null===e}function n(e){return"object"==typeof e&&null!==e}function i(e){return Array.isArray(e)?e:r(e)?[]:[e]}function o(e,t){var r,n,i,o;if(t)for(o=Object.keys(t),r=0,n=o.length;n>r;r+=1)i=o[r],e[i]=t[i];return e}function a(e,t){var r,n="";for(r=0;t>r;r+=1)n+=e;return n}function s(e){return 0===e&&Number.NEGATIVE_INFINITY===1/e}t.exports.isNothing=r,t.exports.isObject=n,t.exports.toArray=i,t.exports.repeat=a,t.exports.isNegativeZero=s,t.exports.extend=o},{}],100:[function(e,t){"use strict";function r(e,t){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack||"",this.name="YAMLException",this.reason=e,this.mark=t,this.message=(this.reason||"(unknown reason)")+(this.mark?" "+this.mark.toString():"")}r.prototype=Object.create(Error.prototype),r.prototype.constructor=r,r.prototype.toString=function(e){var t=this.name+": ";return t+=this.reason||"(unknown reason)",!e&&this.mark&&(t+=" "+this.mark.toString()),t},t.exports=r},{}],101:[function(e,t){"use strict";function r(e){return 10===e||13===e}function n(e){return 9===e||32===e}function i(e){return 9===e||32===e||10===e||13===e}function o(e){return 44===e||91===e||93===e||123===e||125===e}function a(e){var t;return e>=48&&57>=e?e-48:(t=32|e,t>=97&&102>=t?t-97+10:-1)}function s(e){return 120===e?2:117===e?4:85===e?8:0}function u(e){return e>=48&&57>=e?e-48:-1}function l(e){return 48===e?"\x00":97===e?"":98===e?"\b":116===e?" ":9===e?" ":110===e?"\n":118===e?" ":102===e?"\f":114===e?"\r":101===e?"":32===e?" ":34===e?'"':47===e?"/":92===e?"\\":78===e?"…":95===e?" ":76===e?"\u2028":80===e?"\u2029":""}function c(e){return 65535>=e?String.fromCharCode(e):String.fromCharCode((e-65536>>10)+55296,(e-65536&1023)+56320)}function f(e,t){this.input=e,this.filename=t.filename||null,this.schema=t.schema||V,this.onWarning=t.onWarning||null,this.legacy=t.legacy||!1,this.json=t.json||!1,this.listener=t.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=e.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.documents=[]}function h(e,t){return new D(t,new B(e.filename,e.input,e.position,e.line,e.position-e.lineStart))}function d(e,t){throw h(e,t)}function p(e,t){e.onWarning&&e.onWarning.call(null,h(e,t))}function _(e,t,r,n){var i,o,a,s;if(r>t){if(s=e.input.slice(t,r),n)for(i=0,o=s.length;o>i;i+=1)a=s.charCodeAt(i),9===a||a>=32&&1114111>=a||d(e,"expected valid JSON character");else $.test(s)&&d(e,"the stream contains non-printable characters");e.result+=s}}function m(e,t,r,n){var i,o,a,s;for(U.isObject(r)||d(e,"cannot merge mappings; the provided source object is unacceptable"),i=Object.keys(r),a=0,s=i.length;s>a;a+=1)o=i[a],q.call(t,o)||(t[o]=r[o],n[o]=!0)}function g(e,t,r,n,i,o){var a,s;if(i=String(i),null===t&&(t={}),"tag:yaml.org,2002:merge"===n)if(Array.isArray(o))for(a=0,s=o.length;s>a;a+=1)m(e,t,o[a],r);else m(e,t,o,r);else e.json||q.call(r,i)||!q.call(t,i)||d(e,"duplicated mapping key"),t[i]=o,delete r[i];return t}function v(e){var t;t=e.input.charCodeAt(e.position),10===t?e.position++:13===t?(e.position++,10===e.input.charCodeAt(e.position)&&e.position++):d(e,"a line break is expected"),e.line+=1,e.lineStart=e.position}function y(e,t,i){for(var o=0,a=e.input.charCodeAt(e.position);0!==a;){for(;n(a);)a=e.input.charCodeAt(++e.position);if(t&&35===a)do a=e.input.charCodeAt(++e.position);while(10!==a&&13!==a&&0!==a);if(!r(a))break;for(v(e),a=e.input.charCodeAt(e.position),o++,e.lineIndent=0;32===a;)e.lineIndent++,a=e.input.charCodeAt(++e.position)}return-1!==i&&0!==o&&e.lineIndent1&&(e.result+=U.repeat("\n",t-1))}function w(e,t,a){var s,u,l,c,f,h,d,p,m,g=e.kind,v=e.result;if(m=e.input.charCodeAt(e.position),i(m)||o(m)||35===m||38===m||42===m||33===m||124===m||62===m||39===m||34===m||37===m||64===m||96===m)return!1;if((63===m||45===m)&&(u=e.input.charCodeAt(e.position+1),i(u)||a&&o(u)))return!1;for(e.kind="scalar",e.result="",l=c=e.position,f=!1;0!==m;){if(58===m){if(u=e.input.charCodeAt(e.position+1),i(u)||a&&o(u))break}else if(35===m){if(s=e.input.charCodeAt(e.position-1),i(s))break}else{if(e.position===e.lineStart&&b(e)||a&&o(m))break;if(r(m)){if(h=e.line,d=e.lineStart,p=e.lineIndent,y(e,!1,-1),e.lineIndent>=t){f=!0,m=e.input.charCodeAt(e.position);continue}e.position=c,e.line=h,e.lineStart=d,e.lineIndent=p;break}}f&&(_(e,l,c,!1),x(e,e.line-h),l=c=e.position,f=!1),n(m)||(c=e.position+1),m=e.input.charCodeAt(++e.position)}return _(e,l,c,!1),e.result?!0:(e.kind=g,e.result=v,!1)}function k(e,t){var n,i,o;if(n=e.input.charCodeAt(e.position),39!==n)return!1;for(e.kind="scalar",e.result="",e.position++,i=o=e.position;0!==(n=e.input.charCodeAt(e.position));)if(39===n){if(_(e,i,e.position,!0),n=e.input.charCodeAt(++e.position),39!==n)return!0;i=o=e.position,e.position++}else r(n)?(_(e,i,o,!0),x(e,y(e,!1,t)),i=o=e.position):e.position===e.lineStart&&b(e)?d(e,"unexpected end of the document within a single quoted scalar"):(e.position++,o=e.position);d(e,"unexpected end of the stream within a single quoted scalar")}function A(e,t){var n,i,o,u,l,f;if(f=e.input.charCodeAt(e.position),34!==f)return!1;for(e.kind="scalar",e.result="",e.position++,n=i=e.position;0!==(f=e.input.charCodeAt(e.position));){if(34===f)return _(e,n,e.position,!0),e.position++,!0;if(92===f){if(_(e,n,e.position,!0),f=e.input.charCodeAt(++e.position),r(f))y(e,!1,t);else if(256>f&&nt[f])e.result+=it[f],e.position++;else if((l=s(f))>0){for(o=l,u=0;o>0;o--)f=e.input.charCodeAt(++e.position),(l=a(f))>=0?u=(u<<4)+l:d(e,"expected hexadecimal character");e.result+=c(u),e.position++}else d(e,"unknown escape sequence");n=i=e.position}else r(f)?(_(e,n,i,!0),x(e,y(e,!1,t)),n=i=e.position):e.position===e.lineStart&&b(e)?d(e,"unexpected end of the document within a double quoted scalar"):(e.position++,i=e.position)}d(e,"unexpected end of the stream within a double quoted scalar")}function T(e,t){var r,n,o,a,s,u,l,c,f,h,p,_=!0,m=e.tag,v=e.anchor,b={};if(p=e.input.charCodeAt(e.position),91===p)a=93,l=!1,n=[];else{if(123!==p)return!1;a=125,l=!0,n={}}for(null!==e.anchor&&(e.anchorMap[e.anchor]=n),p=e.input.charCodeAt(++e.position);0!==p;){if(y(e,!0,t),p=e.input.charCodeAt(e.position),p===a)return e.position++,e.tag=m,e.anchor=v,e.kind=l?"mapping":"sequence",e.result=n,!0;_||d(e,"missed comma between flow collection entries"),f=c=h=null,s=u=!1,63===p&&(o=e.input.charCodeAt(e.position+1),i(o)&&(s=u=!0,e.position++,y(e,!0,t))),r=e.line,P(e,t,W,!1,!0),f=e.tag,c=e.result,y(e,!0,t),p=e.input.charCodeAt(e.position),!u&&e.line!==r||58!==p||(s=!0,p=e.input.charCodeAt(++e.position),y(e,!0,t),P(e,t,W,!1,!0),h=e.result),l?g(e,n,b,f,c,h):n.push(s?g(e,null,b,f,c,h):c),y(e,!0,t),p=e.input.charCodeAt(e.position),44===p?(_=!0,p=e.input.charCodeAt(++e.position)):_=!1}d(e,"unexpected end of the stream within a flow collection")}function E(e,t){var i,o,a,s,l=Y,c=!1,f=t,h=0,p=!1;if(s=e.input.charCodeAt(e.position),124===s)o=!1;else{if(62!==s)return!1;o=!0}for(e.kind="scalar",e.result="";0!==s;)if(s=e.input.charCodeAt(++e.position),43===s||45===s)Y===l?l=43===s?K:J:d(e,"repeat of a chomping mode identifier");else{if(!((a=u(s))>=0))break;0===a?d(e,"bad explicit indentation width of a block scalar; it cannot be less than one"):c?d(e,"repeat of an indentation width identifier"):(f=t+a-1,c=!0)}if(n(s)){do s=e.input.charCodeAt(++e.position);while(n(s));if(35===s)do s=e.input.charCodeAt(++e.position);while(!r(s)&&0!==s)}for(;0!==s;){for(v(e),e.lineIndent=0,s=e.input.charCodeAt(e.position);(!c||e.lineIndentf&&(f=e.lineIndent),r(s))h++;else{if(e.lineIndentt)&&0!==o)d(e,"bad indentation of a sequence entry");else if(e.lineIndentt)&&(P(e,t,X,!0,a)&&(v?_=e.result:m=e.result),v||(g(e,f,h,p,_,m),p=_=m=null),y(e,!0,-1),u=e.input.charCodeAt(e.position)),e.lineIndent>t&&0!==u)d(e,"bad indentation of a mapping entry");else if(e.lineIndentt?p=1:e.lineIndent===t?p=0:e.lineIndentt?p=1:e.lineIndent===t?p=0:e.lineIndentu;u+=1)if(c=e.implicitTypes[u],c.resolve(e.result)){e.result=c.construct(e.result),e.tag=c.tag,null!==e.anchor&&(e.anchorMap[e.anchor]=e.result);break}}else q.call(e.typeMap,e.tag)?(c=e.typeMap[e.tag],null!==e.result&&c.kind!==e.kind&&d(e,"unacceptable node kind for !<"+e.tag+'> tag; it should be "'+c.kind+'", not "'+e.kind+'"'),c.resolve(e.result)?(e.result=c.construct(e.result),null!==e.anchor&&(e.anchorMap[e.anchor]=e.result)):d(e,"cannot resolve a node with !<"+e.tag+"> explicit tag")):d(e,"unknown tag !<"+e.tag+">");return null!==e.listener&&e.listener("close",e),null!==e.tag||null!==e.anchor||m}function j(e){var t,o,a,s,u=e.position,l=!1;for(e.version=null,e.checkLineBreaks=e.legacy,e.tagMap={},e.anchorMap={};0!==(s=e.input.charCodeAt(e.position))&&(y(e,!0,-1),s=e.input.charCodeAt(e.position),!(e.lineIndent>0||37!==s));){for(l=!0,s=e.input.charCodeAt(++e.position),t=e.position;0!==s&&!i(s);)s=e.input.charCodeAt(++e.position);for(o=e.input.slice(t,e.position),a=[],o.length<1&&d(e,"directive name must not be less than one character in length");0!==s;){for(;n(s);)s=e.input.charCodeAt(++e.position);if(35===s){do s=e.input.charCodeAt(++e.position);while(0!==s&&!r(s));break}if(r(s))break;for(t=e.position;0!==s&&!i(s);)s=e.input.charCodeAt(++e.position);a.push(e.input.slice(t,e.position))}0!==s&&v(e),q.call(at,o)?at[o](e,o,a):p(e,'unknown document directive "'+o+'"')}return y(e,!0,-1),0===e.lineIndent&&45===e.input.charCodeAt(e.position)&&45===e.input.charCodeAt(e.position+1)&&45===e.input.charCodeAt(e.position+2)?(e.position+=3,y(e,!0,-1)):l&&d(e,"directives end mark is expected"),P(e,e.lineIndent-1,X,!1,!0),y(e,!0,-1),e.checkLineBreaks&&Q.test(e.input.slice(u,e.position))&&p(e,"non-ASCII line breaks are interpreted as content"),e.documents.push(e.result),e.position===e.lineStart&&b(e)?void(46===e.input.charCodeAt(e.position)&&(e.position+=3,y(e,!0,-1))):void(e.positionn;n+=1)t(o[n])}function I(e,t){var r=L(e,t);if(0===r.length)return void 0;if(1===r.length)return r[0];throw new D("expected a single document in the stream, but found more")}function C(e,t,r){N(e,t,U.extend({schema:G},r))}function F(e,t){return I(e,U.extend({schema:G},t))}for(var U=e("./common"),D=e("./exception"),B=e("./mark"),G=e("./schema/default_safe"),V=e("./schema/default_full"),q=Object.prototype.hasOwnProperty,W=1,Z=2,H=3,X=4,Y=1,J=2,K=3,$=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,Q=/[\x85\u2028\u2029]/,et=/[,\[\]\{\}]/,tt=/^(?:!|!!|![a-z\-]+!)$/i,rt=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i,nt=new Array(256),it=new Array(256),ot=0;256>ot;ot++)nt[ot]=l(ot)?1:0,it[ot]=l(ot);var at={YAML:function(e,t,r){var n,i,o;null!==e.version&&d(e,"duplication of %YAML directive"),1!==r.length&&d(e,"YAML directive accepts exactly one argument"),n=/^([0-9]+)\.([0-9]+)$/.exec(r[0]),null===n&&d(e,"ill-formed argument of the YAML directive"),i=parseInt(n[1],10),o=parseInt(n[2],10),1!==i&&d(e,"unacceptable YAML version of the document"),e.version=r[0],e.checkLineBreaks=2>o,1!==o&&2!==o&&p(e,"unsupported YAML version of the document")},TAG:function(e,t,r){var n,i;2!==r.length&&d(e,"TAG directive accepts exactly two arguments"),n=r[0],i=r[1],tt.test(n)||d(e,"ill-formed tag handle (first argument) of the TAG directive"),q.call(e.tagMap,n)&&d(e,'there is a previously declared suffix for "'+n+'" tag handle'),rt.test(i)||d(e,"ill-formed tag prefix (second argument) of the TAG directive"),e.tagMap[n]=i}};t.exports.loadAll=N,t.exports.load=I,t.exports.safeLoadAll=C,t.exports.safeLoad=F},{"./common":99,"./exception":100,"./mark":102,"./schema/default_full":105,"./schema/default_safe":106}],102:[function(e,t){"use strict"; +!function(){var e=("undefined"==typeof self||!("undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope))&&("undefined"!=typeof module&&module.exports||"undefined"!=typeof window);if(e)var t=arguments.callee.toString(),r="undefined"!=typeof document&&void 0!==document.currentScript?document.currentScript.src:"",n="";!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var t;t="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,t.Tangram=e()}}(function(){var e;return function i(e,t,r){function n(a,s){if(!t[a]){if(!e[a]){var u="function"==typeof require&&require;if(!s&&u)return u(a,!0);if(o)return o(a,!0);var l=new Error("Cannot find module '"+a+"'");throw l.code="MODULE_NOT_FOUND",l}var c=t[a]={exports:{}};e[a][0].call(c.exports,function(t){var r=e[a][1][t];return n(r?r:t)},c,c.exports,i,e,t,r)}return t[a].exports}for(var o="function"==typeof require&&require,a=0;ac){for(var t=0,r=s.length-l;r>t;t++)s[t]=s[t+l];s.length-=l,l=0}}s.length=0,l=0,u=!1}function i(e){var t=1,r=new h(e),n=document.createTextNode("");return r.observe(n,{characterData:!0}),function(){t=-t,n.data=t}}function o(e){return function(){function t(){clearTimeout(r),clearInterval(n),e()}var r=setTimeout(t,0),n=setInterval(t,50)}}t.exports=r;var a,s=[],u=!1,l=0,c=1024,f="undefined"!=typeof e?e:self,h=f.MutationObserver||f.WebKitMutationObserver;a="function"==typeof h?i(n):o(n),r.requestFlush=a,r.makeRequestCallFromTimer=o}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],3:[function(e,t,r){"use strict";function n(e){var t=e.length;if(t%4>0)throw new Error("Invalid string. Length must be a multiple of 4");return"="===e[t-2]?2:"="===e[t-1]?1:0}function i(e){return 3*e.length/4-n(e)}function o(e){var t,r,i,o,a,s=e.length;o=n(e),a=new f(3*s/4-o),r=o>0?s-4:s;var u=0;for(t=0;r>t;t+=4)i=c[e.charCodeAt(t)]<<18|c[e.charCodeAt(t+1)]<<12|c[e.charCodeAt(t+2)]<<6|c[e.charCodeAt(t+3)],a[u++]=i>>16&255,a[u++]=i>>8&255,a[u++]=255&i;return 2===o?(i=c[e.charCodeAt(t)]<<2|c[e.charCodeAt(t+1)]>>4,a[u++]=255&i):1===o&&(i=c[e.charCodeAt(t)]<<10|c[e.charCodeAt(t+1)]<<4|c[e.charCodeAt(t+2)]>>2,a[u++]=i>>8&255,a[u++]=255&i),a}function a(e){return l[e>>18&63]+l[e>>12&63]+l[e>>6&63]+l[63&e]}function s(e,t,r){for(var n,i=[],o=t;r>o;o+=3)n=(e[o]<<16)+(e[o+1]<<8)+e[o+2],i.push(a(n));return i.join("")}function u(e){for(var t,r=e.length,n=r%3,i="",o=[],a=16383,u=0,c=r-n;c>u;u+=a)o.push(s(e,u,u+a>c?c:u+a));return 1===n?(t=e[r-1],i+=l[t>>2],i+=l[t<<4&63],i+="=="):2===n&&(t=(e[r-2]<<8)+e[r-1],i+=l[t>>10],i+=l[t>>4&63],i+=l[t<<2&63],i+="="),o.push(i),o.join("")}r.byteLength=i,r.toByteArray=o,r.fromByteArray=u;for(var l=[],c=[],f="undefined"!=typeof Uint8Array?Uint8Array:Array,h="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",d=0,p=h.length;p>d;++d)l[d]=h[d],c[h.charCodeAt(d)]=d;c["-".charCodeAt(0)]=62,c["_".charCodeAt(0)]=63},{}],4:[function(){},{}],5:[function(e,t,r){"use strict";function n(){try{var e=new Uint8Array(1);return e.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===e.foo()}catch(t){return!1}}function i(e){if(e>K)throw new RangeError("Invalid typed array length");var t=new Uint8Array(e);return t.__proto__=o.prototype,t}function o(e,t,r){if("number"==typeof e){if("string"==typeof t)throw new Error("If encoding is specified then the first argument must be a string");return l(e)}return a(e,t,r)}function a(e,t,r){if("number"==typeof e)throw new TypeError('"value" argument must not be a number');return Z(e)?h(e,t,r):"string"==typeof e?c(e,t):d(e)}function s(e){if("number"!=typeof e)throw new TypeError('"size" argument must be a number');if(0>e)throw new RangeError('"size" argument must not be negative')}function u(e,t,r){return s(e),0>=e?i(e):void 0!==t?"string"==typeof r?i(e).fill(t,r):i(e).fill(t):i(e)}function l(e){return s(e),i(0>e?0:0|p(e))}function c(e,t){if(("string"!=typeof t||""===t)&&(t="utf8"),!o.isEncoding(t))throw new TypeError('"encoding" must be a valid string encoding');var r=0|m(e,t),n=i(r),a=n.write(e,t);return a!==r&&(n=n.slice(0,a)),n}function f(e){for(var t=e.length<0?0:0|p(e.length),r=i(t),n=0;t>n;n+=1)r[n]=255&e[n];return r}function h(e,t,r){if(0>t||e.byteLength=K)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+K.toString(16)+" bytes");return 0|e}function _(e){return+e!=e&&(e=0),o.alloc(+e)}function m(e,t){if(o.isBuffer(e))return e.length;if(H(e)||Z(e))return e.byteLength;"string"!=typeof e&&(e=""+e);var r=e.length;if(0===r)return 0;for(var n=!1;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":case void 0:return B(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return q(e).length;default:if(n)return B(e).length;t=(""+t).toLowerCase(),n=!0}}function g(e,t,r){var n=!1;if((void 0===t||0>t)&&(t=0),t>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),0>=r)return"";if(r>>>=0,t>>>=0,t>=r)return"";for(e||(e="utf8");;)switch(e){case"hex":return P(this,t,r);case"utf8":case"utf-8":return R(this,t,r);case"ascii":return O(this,t,r);case"latin1":case"binary":return z(this,t,r);case"base64":return S(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return L(this,t,r);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}function v(e,t,r){var n=e[t];e[t]=e[r],e[r]=n}function y(e,t,r,n,i){if(0===e.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:-2147483648>r&&(r=-2147483648),r=+r,X(r)&&(r=i?0:e.length-1),0>r&&(r=e.length+r),r>=e.length){if(i)return-1;r=e.length-1}else if(0>r){if(!i)return-1;r=0}if("string"==typeof t&&(t=o.from(t,n)),o.isBuffer(t))return 0===t.length?-1:b(e,t,r,n,i);if("number"==typeof t)return t=255&t,"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):b(e,[t],r,n,i);throw new TypeError("val must be string, number or Buffer")}function b(e,t,r,n,i){function o(e,t){return 1===a?e[t]:e.readUInt16BE(t*a)}var a=1,s=e.length,u=t.length;if(void 0!==n&&(n=String(n).toLowerCase(),"ucs2"===n||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(e.length<2||t.length<2)return-1;a=2,s/=2,u/=2,r/=2}var l;if(i){var c=-1;for(l=r;s>l;l++)if(o(e,l)===o(t,-1===c?0:l-c)){if(-1===c&&(c=l),l-c+1===u)return c*a}else-1!==c&&(l-=l-c),c=-1}else for(r+u>s&&(r=s-u),l=r;l>=0;l--){for(var f=!0,h=0;u>h;h++)if(o(e,l+h)!==o(t,h)){f=!1;break}if(f)return l}return-1}function x(e,t,r,n){r=Number(r)||0;var i=e.length-r;n?(n=Number(n),n>i&&(n=i)):n=i;var o=t.length;if(o%2!==0)throw new TypeError("Invalid hex string");n>o/2&&(n=o/2);for(var a=0;n>a;++a){var s=parseInt(t.substr(2*a,2),16);if(X(s))return a;e[r+a]=s}return a}function w(e,t,r,n){return W(B(t,e.length-r),e,r,n)}function k(e,t,r,n){return W(G(t),e,r,n)}function A(e,t,r,n){return k(e,t,r,n)}function T(e,t,r,n){return W(q(t),e,r,n)}function E(e,t,r,n){return W(V(t,e.length-r),e,r,n)}function S(e,t,r){return Y.fromByteArray(0===t&&r===e.length?e:e.slice(t,r))}function R(e,t,r){r=Math.min(e.length,r);for(var n=[],i=t;r>i;){var o=e[i],a=null,s=o>239?4:o>223?3:o>191?2:1;if(r>=i+s){var u,l,c,f;switch(s){case 1:128>o&&(a=o);break;case 2:u=e[i+1],128===(192&u)&&(f=(31&o)<<6|63&u,f>127&&(a=f));break;case 3:u=e[i+1],l=e[i+2],128===(192&u)&&128===(192&l)&&(f=(15&o)<<12|(63&u)<<6|63&l,f>2047&&(55296>f||f>57343)&&(a=f));break;case 4:u=e[i+1],l=e[i+2],c=e[i+3],128===(192&u)&&128===(192&l)&&128===(192&c)&&(f=(15&o)<<18|(63&u)<<12|(63&l)<<6|63&c,f>65535&&1114112>f&&(a=f))}}null===a?(a=65533,s=1):a>65535&&(a-=65536,n.push(a>>>10&1023|55296),a=56320|1023&a),n.push(a),i+=s}return M(n)}function M(e){var t=e.length;if($>=t)return String.fromCharCode.apply(String,e);for(var r="",n=0;t>n;)r+=String.fromCharCode.apply(String,e.slice(n,n+=$));return r}function O(e,t,r){var n="";r=Math.min(e.length,r);for(var i=t;r>i;++i)n+=String.fromCharCode(127&e[i]);return n}function z(e,t,r){var n="";r=Math.min(e.length,r);for(var i=t;r>i;++i)n+=String.fromCharCode(e[i]);return n}function P(e,t,r){var n=e.length;(!t||0>t)&&(t=0),(!r||0>r||r>n)&&(r=n);for(var i="",o=t;r>o;++o)i+=D(e[o]);return i}function L(e,t,r){for(var n=e.slice(t,r),i="",o=0;oe)throw new RangeError("offset is not uint");if(e+t>r)throw new RangeError("Trying to access beyond buffer length")}function N(e,t,r,n,i,a){if(!o.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||a>t)throw new RangeError('"value" argument is out of bounds');if(r+n>e.length)throw new RangeError("Index out of range")}function I(e,t,r,n){if(r+n>e.length)throw new RangeError("Index out of range");if(0>r)throw new RangeError("Index out of range")}function C(e,t,r,n,i){return t=+t,r>>>=0,i||I(e,t,r,4,3.4028234663852886e38,-3.4028234663852886e38),J.write(e,t,r,n,23,4),r+4}function F(e,t,r,n,i){return t=+t,r>>>=0,i||I(e,t,r,8,1.7976931348623157e308,-1.7976931348623157e308),J.write(e,t,r,n,52,8),r+8}function U(e){if(e=e.trim().replace(Q,""),e.length<2)return"";for(;e.length%4!==0;)e+="=";return e}function D(e){return 16>e?"0"+e.toString(16):e.toString(16)}function B(e,t){t=t||1/0;for(var r,n=e.length,i=null,o=[],a=0;n>a;++a){if(r=e.charCodeAt(a),r>55295&&57344>r){if(!i){if(r>56319){(t-=3)>-1&&o.push(239,191,189);continue}if(a+1===n){(t-=3)>-1&&o.push(239,191,189);continue}i=r;continue}if(56320>r){(t-=3)>-1&&o.push(239,191,189),i=r;continue}r=(i-55296<<10|r-56320)+65536}else i&&(t-=3)>-1&&o.push(239,191,189);if(i=null,128>r){if((t-=1)<0)break;o.push(r)}else if(2048>r){if((t-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(65536>r){if((t-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(1114112>r))throw new Error("Invalid code point");if((t-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function G(e){for(var t=[],r=0;r>8,i=r%256,o.push(i),o.push(n);return o}function q(e){return Y.toByteArray(U(e))}function W(e,t,r,n){for(var i=0;n>i&&!(i+r>=t.length||i>=e.length);++i)t[i+r]=e[i];return i}function Z(e){return e instanceof ArrayBuffer||null!=e&&null!=e.constructor&&"ArrayBuffer"===e.constructor.name&&"number"==typeof e.byteLength}function H(e){return"function"==typeof ArrayBuffer.isView&&ArrayBuffer.isView(e)}function X(e){return e!==e}var Y=e("base64-js"),J=e("ieee754");r.Buffer=o,r.SlowBuffer=_,r.INSPECT_MAX_BYTES=50;var K=2147483647;r.kMaxLength=K,o.TYPED_ARRAY_SUPPORT=n(),o.TYPED_ARRAY_SUPPORT||"undefined"==typeof console||"function"!=typeof console.error||console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."),"undefined"!=typeof Symbol&&Symbol.species&&o[Symbol.species]===o&&Object.defineProperty(o,Symbol.species,{value:null,configurable:!0,enumerable:!1,writable:!1}),o.poolSize=8192,o.from=function(e,t,r){return a(e,t,r)},o.prototype.__proto__=Uint8Array.prototype,o.__proto__=Uint8Array,o.alloc=function(e,t,r){return u(e,t,r)},o.allocUnsafe=function(e){return l(e)},o.allocUnsafeSlow=function(e){return l(e)},o.isBuffer=function(e){return null!=e&&e._isBuffer===!0},o.compare=function(e,t){if(!o.isBuffer(e)||!o.isBuffer(t))throw new TypeError("Arguments must be Buffers");if(e===t)return 0;for(var r=e.length,n=t.length,i=0,a=Math.min(r,n);a>i;++i)if(e[i]!==t[i]){r=e[i],n=t[i];break}return n>r?-1:r>n?1:0},o.isEncoding=function(e){switch(String(e).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},o.concat=function(e,t){if(!Array.isArray(e))throw new TypeError('"list" argument must be an Array of Buffers');if(0===e.length)return o.alloc(0);var r;if(void 0===t)for(t=0,r=0;rt;t+=2)v(this,t,t+1);return this},o.prototype.swap32=function(){var e=this.length;if(e%4!==0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var t=0;e>t;t+=4)v(this,t,t+3),v(this,t+1,t+2);return this},o.prototype.swap64=function(){var e=this.length;if(e%8!==0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var t=0;e>t;t+=8)v(this,t,t+7),v(this,t+1,t+6),v(this,t+2,t+5),v(this,t+3,t+4);return this},o.prototype.toString=function(){var e=this.length;return 0===e?"":0===arguments.length?R(this,0,e):g.apply(this,arguments)},o.prototype.equals=function(e){if(!o.isBuffer(e))throw new TypeError("Argument must be a Buffer");return this===e?!0:0===o.compare(this,e)},o.prototype.inspect=function(){var e="",t=r.INSPECT_MAX_BYTES;return this.length>0&&(e=this.toString("hex",0,t).match(/.{2}/g).join(" "),this.length>t&&(e+=" ... ")),""},o.prototype.compare=function(e,t,r,n,i){if(!o.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===r&&(r=e?e.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),0>t||r>e.length||0>n||i>this.length)throw new RangeError("out of range index");if(n>=i&&t>=r)return 0;if(n>=i)return-1;if(t>=r)return 1;if(t>>>=0,r>>>=0,n>>>=0,i>>>=0,this===e)return 0;for(var a=i-n,s=r-t,u=Math.min(a,s),l=this.slice(n,i),c=e.slice(t,r),f=0;u>f;++f)if(l[f]!==c[f]){a=l[f],s=c[f];break}return s>a?-1:a>s?1:0},o.prototype.includes=function(e,t,r){return-1!==this.indexOf(e,t,r)},o.prototype.indexOf=function(e,t,r){return y(this,e,t,r,!0)},o.prototype.lastIndexOf=function(e,t,r){return y(this,e,t,r,!1)},o.prototype.write=function(e,t,r,n){if(void 0===t)n="utf8",r=this.length,t=0;else if(void 0===r&&"string"==typeof t)n=t,r=this.length,t=0;else{if(!isFinite(t))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");t>>>=0,isFinite(r)?(r>>>=0,void 0===n&&(n="utf8")):(n=r,r=void 0)}var i=this.length-t;if((void 0===r||r>i)&&(r=i),e.length>0&&(0>r||0>t)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var o=!1;;)switch(n){case"hex":return x(this,e,t,r);case"utf8":case"utf-8":return w(this,e,t,r);case"ascii":return k(this,e,t,r);case"latin1":case"binary":return A(this,e,t,r);case"base64":return T(this,e,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return E(this,e,t,r);default:if(o)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),o=!0}},o.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var $=4096;o.prototype.slice=function(e,t){var r=this.length;e=~~e,t=void 0===t?r:~~t,0>e?(e+=r,0>e&&(e=0)):e>r&&(e=r),0>t?(t+=r,0>t&&(t=0)):t>r&&(t=r),e>t&&(t=e);var n=this.subarray(e,t);return n.__proto__=o.prototype,n},o.prototype.readUIntLE=function(e,t,r){e>>>=0,t>>>=0,r||j(e,t,this.length);for(var n=this[e],i=1,o=0;++o>>=0,t>>>=0,r||j(e,t,this.length);for(var n=this[e+--t],i=1;t>0&&(i*=256);)n+=this[e+--t]*i;return n},o.prototype.readUInt8=function(e,t){return e>>>=0,t||j(e,1,this.length),this[e]},o.prototype.readUInt16LE=function(e,t){return e>>>=0,t||j(e,2,this.length),this[e]|this[e+1]<<8},o.prototype.readUInt16BE=function(e,t){return e>>>=0,t||j(e,2,this.length),this[e]<<8|this[e+1]},o.prototype.readUInt32LE=function(e,t){return e>>>=0,t||j(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},o.prototype.readUInt32BE=function(e,t){return e>>>=0,t||j(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},o.prototype.readIntLE=function(e,t,r){e>>>=0,t>>>=0,r||j(e,t,this.length);for(var n=this[e],i=1,o=0;++o=i&&(n-=Math.pow(2,8*t)),n},o.prototype.readIntBE=function(e,t,r){e>>>=0,t>>>=0,r||j(e,t,this.length);for(var n=t,i=1,o=this[e+--n];n>0&&(i*=256);)o+=this[e+--n]*i;return i*=128,o>=i&&(o-=Math.pow(2,8*t)),o},o.prototype.readInt8=function(e,t){return e>>>=0,t||j(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},o.prototype.readInt16LE=function(e,t){e>>>=0,t||j(e,2,this.length);var r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},o.prototype.readInt16BE=function(e,t){e>>>=0,t||j(e,2,this.length);var r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},o.prototype.readInt32LE=function(e,t){return e>>>=0,t||j(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},o.prototype.readInt32BE=function(e,t){return e>>>=0,t||j(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},o.prototype.readFloatLE=function(e,t){return e>>>=0,t||j(e,4,this.length),J.read(this,e,!0,23,4)},o.prototype.readFloatBE=function(e,t){return e>>>=0,t||j(e,4,this.length),J.read(this,e,!1,23,4)},o.prototype.readDoubleLE=function(e,t){return e>>>=0,t||j(e,8,this.length),J.read(this,e,!0,52,8)},o.prototype.readDoubleBE=function(e,t){return e>>>=0,t||j(e,8,this.length),J.read(this,e,!1,52,8)},o.prototype.writeUIntLE=function(e,t,r,n){if(e=+e,t>>>=0,r>>>=0,!n){var i=Math.pow(2,8*r)-1;N(this,e,t,r,i,0)}var o=1,a=0;for(this[t]=255&e;++a>>=0,r>>>=0,!n){var i=Math.pow(2,8*r)-1;N(this,e,t,r,i,0)}var o=r-1,a=1;for(this[t+o]=255&e;--o>=0&&(a*=256);)this[t+o]=e/a&255;return t+r},o.prototype.writeUInt8=function(e,t,r){return e=+e,t>>>=0,r||N(this,e,t,1,255,0),this[t]=255&e,t+1},o.prototype.writeUInt16LE=function(e,t,r){return e=+e,t>>>=0,r||N(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},o.prototype.writeUInt16BE=function(e,t,r){return e=+e,t>>>=0,r||N(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},o.prototype.writeUInt32LE=function(e,t,r){return e=+e,t>>>=0,r||N(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},o.prototype.writeUInt32BE=function(e,t,r){return e=+e,t>>>=0,r||N(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},o.prototype.writeIntLE=function(e,t,r,n){if(e=+e,t>>>=0,!n){var i=Math.pow(2,8*r-1);N(this,e,t,r,i-1,-i)}var o=0,a=1,s=0;for(this[t]=255&e;++oe&&0===s&&0!==this[t+o-1]&&(s=1),this[t+o]=(e/a>>0)-s&255;return t+r},o.prototype.writeIntBE=function(e,t,r,n){if(e=+e,t>>>=0,!n){var i=Math.pow(2,8*r-1);N(this,e,t,r,i-1,-i)}var o=r-1,a=1,s=0;for(this[t+o]=255&e;--o>=0&&(a*=256);)0>e&&0===s&&0!==this[t+o+1]&&(s=1),this[t+o]=(e/a>>0)-s&255;return t+r},o.prototype.writeInt8=function(e,t,r){return e=+e,t>>>=0,r||N(this,e,t,1,127,-128),0>e&&(e=255+e+1),this[t]=255&e,t+1},o.prototype.writeInt16LE=function(e,t,r){return e=+e,t>>>=0,r||N(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},o.prototype.writeInt16BE=function(e,t,r){return e=+e,t>>>=0,r||N(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},o.prototype.writeInt32LE=function(e,t,r){return e=+e,t>>>=0,r||N(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},o.prototype.writeInt32BE=function(e,t,r){return e=+e,t>>>=0,r||N(this,e,t,4,2147483647,-2147483648),0>e&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},o.prototype.writeFloatLE=function(e,t,r){return C(this,e,t,!0,r)},o.prototype.writeFloatBE=function(e,t,r){return C(this,e,t,!1,r)},o.prototype.writeDoubleLE=function(e,t,r){return F(this,e,t,!0,r)},o.prototype.writeDoubleBE=function(e,t,r){return F(this,e,t,!1,r)},o.prototype.copy=function(e,t,r,n){if(r||(r=0),n||0===n||(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&r>n&&(n=r),n===r)return 0;if(0===e.length||0===this.length)return 0;if(0>t)throw new RangeError("targetStart out of bounds");if(0>r||r>=this.length)throw new RangeError("sourceStart out of bounds");if(0>n)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),e.length-tr&&n>t)for(i=o-1;i>=0;--i)e[i+t]=this[i+r];else if(1e3>o)for(i=0;o>i;++i)e[i+t]=this[i+r];else Uint8Array.prototype.set.call(e,this.subarray(r,r+o),t);return o},o.prototype.fill=function(e,t,r,n){if("string"==typeof e){if("string"==typeof t?(n=t,t=0,r=this.length):"string"==typeof r&&(n=r,r=this.length),1===e.length){var i=e.charCodeAt(0);256>i&&(e=i)}if(void 0!==n&&"string"!=typeof n)throw new TypeError("encoding must be a string");if("string"==typeof n&&!o.isEncoding(n))throw new TypeError("Unknown encoding: "+n)}else"number"==typeof e&&(e=255&e);if(0>t||this.length=r)return this;t>>>=0,r=void 0===r?this.length:r>>>0,e||(e=0);var a;if("number"==typeof e)for(a=t;r>a;++a)this[a]=e;else{var s=o.isBuffer(e)?e:new o(e,n),u=s.length;for(a=0;r-t>a;++a)this[a+t]=s[a%u]}return this};var Q=/[^+\/0-9A-Za-z-_]/g},{"base64-js":3,ieee754:93}],6:[function(e,t){e("../modules/es6.object.to-string"),e("../modules/es6.string.iterator"),e("../modules/web.dom.iterable"),e("../modules/es6.promise"),t.exports=e("../modules/_core").Promise},{"../modules/_core":14,"../modules/es6.object.to-string":66,"../modules/es6.promise":67,"../modules/es6.string.iterator":68,"../modules/web.dom.iterable":69}],7:[function(e,t){t.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},{}],8:[function(e,t){var r=e("./_wks")("unscopables"),n=Array.prototype;void 0==n[r]&&e("./_hide")(n,r,{}),t.exports=function(e){n[r][e]=!0}},{"./_hide":25,"./_wks":63}],9:[function(e,t){t.exports=function(e,t,r,n){if(!(e instanceof t)||void 0!==n&&n in e)throw TypeError(r+": incorrect invocation!");return e}},{}],10:[function(e,t){var r=e("./_is-object");t.exports=function(e){if(!r(e))throw TypeError(e+" is not an object!");return e}},{"./_is-object":31}],11:[function(e,t){var r=e("./_to-iobject"),n=e("./_to-length"),i=e("./_to-index");t.exports=function(e){return function(t,o,a){var s,u=r(t),l=n(u.length),c=i(a,l);if(e&&o!=o){for(;l>c;)if(s=u[c++],s!=s)return!0}else for(;l>c;c++)if((e||c in u)&&u[c]===o)return e||c||0;return!e&&-1}}},{"./_to-index":56,"./_to-iobject":58,"./_to-length":59}],12:[function(e,t){var r=e("./_cof"),n=e("./_wks")("toStringTag"),i="Arguments"==r(function(){return arguments}()),o=function(e,t){try{return e[t]}catch(r){}};t.exports=function(e){var t,a,s;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(a=o(t=Object(e),n))?a:i?r(t):"Object"==(s=r(t))&&"function"==typeof t.callee?"Arguments":s}},{"./_cof":13,"./_wks":63}],13:[function(e,t){var r={}.toString;t.exports=function(e){return r.call(e).slice(8,-1)}},{}],14:[function(e,t){var r=t.exports={version:"2.4.0"};"number"==typeof __e&&(__e=r)},{}],15:[function(e,t){var r=e("./_a-function");t.exports=function(e,t,n){if(r(e),void 0===t)return e;switch(n){case 1:return function(r){return e.call(t,r)};case 2:return function(r,n){return e.call(t,r,n)};case 3:return function(r,n,i){return e.call(t,r,n,i)}}return function(){return e.apply(t,arguments)}}},{"./_a-function":7}],16:[function(e,t){t.exports=function(e){if(void 0==e)throw TypeError("Can't call method on "+e);return e}},{}],17:[function(e,t){t.exports=!e("./_fails")(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},{"./_fails":21}],18:[function(e,t){var r=e("./_is-object"),n=e("./_global").document,i=r(n)&&r(n.createElement);t.exports=function(e){return i?n.createElement(e):{}}},{"./_global":23,"./_is-object":31}],19:[function(e,t){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},{}],20:[function(e,t){var r=e("./_global"),n=e("./_core"),i=e("./_hide"),o=e("./_redefine"),a=e("./_ctx"),s="prototype",u=function(e,t,l){var c,f,h,d,p=e&u.F,_=e&u.G,m=e&u.S,g=e&u.P,v=e&u.B,y=_?r:m?r[t]||(r[t]={}):(r[t]||{})[s],b=_?n:n[t]||(n[t]={}),x=b[s]||(b[s]={});_&&(l=t);for(c in l)f=!p&&y&&void 0!==y[c],h=(f?y:l)[c],d=v&&f?a(h,r):g&&"function"==typeof h?a(Function.call,h):h,y&&o(y,c,h,e&u.U),b[c]!=h&&i(b,c,d),g&&x[c]!=h&&(x[c]=h)};r.core=n,u.F=1,u.G=2,u.S=4,u.P=8,u.B=16,u.W=32,u.U=64,u.R=128,t.exports=u},{"./_core":14,"./_ctx":15,"./_global":23,"./_hide":25,"./_redefine":48}],21:[function(e,t){t.exports=function(e){try{return!!e()}catch(t){return!0}}},{}],22:[function(e,t,r){var n=e("./_ctx"),i=e("./_iter-call"),o=e("./_is-array-iter"),a=e("./_an-object"),s=e("./_to-length"),u=e("./core.get-iterator-method"),l={},c={},r=t.exports=function(e,t,r,f,h){var d,p,_,m,g=h?function(){return e}:u(e),v=n(r,f,t?2:1),y=0;if("function"!=typeof g)throw TypeError(e+" is not iterable!");if(o(g)){for(d=s(e.length);d>y;y++)if(m=t?v(a(p=e[y])[0],p[1]):v(e[y]),m===l||m===c)return m}else for(_=g.call(e);!(p=_.next()).done;)if(m=i(_,v,p.value,t),m===l||m===c)return m};r.BREAK=l,r.RETURN=c},{"./_an-object":10,"./_ctx":15,"./_is-array-iter":30,"./_iter-call":32,"./_to-length":59,"./core.get-iterator-method":64}],23:[function(e,t){var r=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=r)},{}],24:[function(e,t){var r={}.hasOwnProperty;t.exports=function(e,t){return r.call(e,t)}},{}],25:[function(e,t){var r=e("./_object-dp"),n=e("./_property-desc");t.exports=e("./_descriptors")?function(e,t,i){return r.f(e,t,n(1,i))}:function(e,t,r){return e[t]=r,e}},{"./_descriptors":17,"./_object-dp":41,"./_property-desc":46}],26:[function(e,t){t.exports=e("./_global").document&&document.documentElement},{"./_global":23}],27:[function(e,t){t.exports=!e("./_descriptors")&&!e("./_fails")(function(){return 7!=Object.defineProperty(e("./_dom-create")("div"),"a",{get:function(){return 7}}).a})},{"./_descriptors":17,"./_dom-create":18,"./_fails":21}],28:[function(e,t){t.exports=function(e,t,r){var n=void 0===r;switch(t.length){case 0:return n?e():e.call(r);case 1:return n?e(t[0]):e.call(r,t[0]);case 2:return n?e(t[0],t[1]):e.call(r,t[0],t[1]);case 3:return n?e(t[0],t[1],t[2]):e.call(r,t[0],t[1],t[2]);case 4:return n?e(t[0],t[1],t[2],t[3]):e.call(r,t[0],t[1],t[2],t[3])}return e.apply(r,t)}},{}],29:[function(e,t){var r=e("./_cof");t.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==r(e)?e.split(""):Object(e)}},{"./_cof":13}],30:[function(e,t){var r=e("./_iterators"),n=e("./_wks")("iterator"),i=Array.prototype;t.exports=function(e){return void 0!==e&&(r.Array===e||i[n]===e)}},{"./_iterators":37,"./_wks":63}],31:[function(e,t){t.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},{}],32:[function(e,t){var r=e("./_an-object");t.exports=function(e,t,n,i){try{return i?t(r(n)[0],n[1]):t(n)}catch(o){var a=e["return"];throw void 0!==a&&r(a.call(e)),o}}},{"./_an-object":10}],33:[function(e,t){"use strict";var r=e("./_object-create"),n=e("./_property-desc"),i=e("./_set-to-string-tag"),o={};e("./_hide")(o,e("./_wks")("iterator"),function(){return this}),t.exports=function(e,t,a){e.prototype=r(o,{next:n(1,a)}),i(e,t+" Iterator")}},{"./_hide":25,"./_object-create":40,"./_property-desc":46,"./_set-to-string-tag":50,"./_wks":63}],34:[function(e,t){"use strict";var r=e("./_library"),n=e("./_export"),i=e("./_redefine"),o=e("./_hide"),a=e("./_has"),s=e("./_iterators"),u=e("./_iter-create"),l=e("./_set-to-string-tag"),c=e("./_object-gpo"),f=e("./_wks")("iterator"),h=!([].keys&&"next"in[].keys()),d="@@iterator",p="keys",_="values",m=function(){return this};t.exports=function(e,t,g,v,y,b,x){u(g,t,v);var w,k,A,T=function(e){if(!h&&e in M)return M[e];switch(e){case p:return function(){return new g(this,e)};case _:return function(){return new g(this,e)}}return function(){return new g(this,e)}},E=t+" Iterator",S=y==_,R=!1,M=e.prototype,O=M[f]||M[d]||y&&M[y],z=O||T(y),P=y?S?T("entries"):z:void 0,L="Array"==t?M.entries||O:O;if(L&&(A=c(L.call(new e)),A!==Object.prototype&&(l(A,E,!0),r||a(A,f)||o(A,f,m))),S&&O&&O.name!==_&&(R=!0,z=function(){return O.call(this)}),r&&!x||!h&&!R&&M[f]||o(M,f,z),s[t]=z,s[E]=m,y)if(w={values:S?z:T(_),keys:b?z:T(p),entries:P},x)for(k in w)k in M||i(M,k,w[k]);else n(n.P+n.F*(h||R),t,w);return w}},{"./_export":20,"./_has":24,"./_hide":25,"./_iter-create":33,"./_iterators":37,"./_library":38,"./_object-gpo":43,"./_redefine":48,"./_set-to-string-tag":50,"./_wks":63}],35:[function(e,t){var r=e("./_wks")("iterator"),n=!1;try{var i=[7][r]();i["return"]=function(){n=!0},Array.from(i,function(){throw 2})}catch(o){}t.exports=function(e,t){if(!t&&!n)return!1;var i=!1;try{var o=[7],a=o[r]();a.next=function(){return{done:i=!0}},o[r]=function(){return a},e(o)}catch(s){}return i}},{"./_wks":63}],36:[function(e,t){t.exports=function(e,t){return{value:t,done:!!e}}},{}],37:[function(e,t){t.exports={}},{}],38:[function(e,t){t.exports=!1},{}],39:[function(e,t){var r=e("./_global"),n=e("./_task").set,i=r.MutationObserver||r.WebKitMutationObserver,o=r.process,a=r.Promise,s="process"==e("./_cof")(o);t.exports=function(){var e,t,u,l=function(){var r,n;for(s&&(r=o.domain)&&r.exit();e;){n=e.fn,e=e.next;try{n()}catch(i){throw e?u():t=void 0,i}}t=void 0,r&&r.enter()};if(s)u=function(){o.nextTick(l)};else if(i){var c=!0,f=document.createTextNode("");new i(l).observe(f,{characterData:!0}),u=function(){f.data=c=!c}}else if(a&&a.resolve){var h=a.resolve();u=function(){h.then(l)}}else u=function(){n.call(r,l)};return function(r){var n={fn:r,next:void 0};t&&(t.next=n),e||(e=n,u()),t=n}}},{"./_cof":13,"./_global":23,"./_task":55}],40:[function(e,t){var r=e("./_an-object"),n=e("./_object-dps"),i=e("./_enum-bug-keys"),o=e("./_shared-key")("IE_PROTO"),a=function(){},s="prototype",u=function(){var t,r=e("./_dom-create")("iframe"),n=i.length,o="<",a=">";for(r.style.display="none",e("./_html").appendChild(r),r.src="javascript:",t=r.contentWindow.document,t.open(),t.write(o+"script"+a+"document.F=Object"+o+"/script"+a),t.close(),u=t.F;n--;)delete u[s][i[n]];return u()};t.exports=Object.create||function(e,t){var i;return null!==e?(a[s]=r(e),i=new a,a[s]=null,i[o]=e):i=u(),void 0===t?i:n(i,t)}},{"./_an-object":10,"./_dom-create":18,"./_enum-bug-keys":19,"./_html":26,"./_object-dps":42,"./_shared-key":51}],41:[function(e,t,r){var n=e("./_an-object"),i=e("./_ie8-dom-define"),o=e("./_to-primitive"),a=Object.defineProperty;r.f=e("./_descriptors")?Object.defineProperty:function(e,t,r){if(n(e),t=o(t,!0),n(r),i)try{return a(e,t,r) +}catch(s){}if("get"in r||"set"in r)throw TypeError("Accessors not supported!");return"value"in r&&(e[t]=r.value),e}},{"./_an-object":10,"./_descriptors":17,"./_ie8-dom-define":27,"./_to-primitive":61}],42:[function(e,t){var r=e("./_object-dp"),n=e("./_an-object"),i=e("./_object-keys");t.exports=e("./_descriptors")?Object.defineProperties:function(e,t){n(e);for(var o,a=i(t),s=a.length,u=0;s>u;)r.f(e,o=a[u++],t[o]);return e}},{"./_an-object":10,"./_descriptors":17,"./_object-dp":41,"./_object-keys":45}],43:[function(e,t){var r=e("./_has"),n=e("./_to-object"),i=e("./_shared-key")("IE_PROTO"),o=Object.prototype;t.exports=Object.getPrototypeOf||function(e){return e=n(e),r(e,i)?e[i]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?o:null}},{"./_has":24,"./_shared-key":51,"./_to-object":60}],44:[function(e,t){var r=e("./_has"),n=e("./_to-iobject"),i=e("./_array-includes")(!1),o=e("./_shared-key")("IE_PROTO");t.exports=function(e,t){var a,s=n(e),u=0,l=[];for(a in s)a!=o&&r(s,a)&&l.push(a);for(;t.length>u;)r(s,a=t[u++])&&(~i(l,a)||l.push(a));return l}},{"./_array-includes":11,"./_has":24,"./_shared-key":51,"./_to-iobject":58}],45:[function(e,t){var r=e("./_object-keys-internal"),n=e("./_enum-bug-keys");t.exports=Object.keys||function(e){return r(e,n)}},{"./_enum-bug-keys":19,"./_object-keys-internal":44}],46:[function(e,t){t.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},{}],47:[function(e,t){var r=e("./_redefine");t.exports=function(e,t,n){for(var i in t)r(e,i,t[i],n);return e}},{"./_redefine":48}],48:[function(e,t){var r=e("./_global"),n=e("./_hide"),i=e("./_has"),o=e("./_uid")("src"),a="toString",s=Function[a],u=(""+s).split(a);e("./_core").inspectSource=function(e){return s.call(e)},(t.exports=function(e,t,a,s){var l="function"==typeof a;l&&(i(a,"name")||n(a,"name",t)),e[t]!==a&&(l&&(i(a,o)||n(a,o,e[t]?""+e[t]:u.join(String(t)))),e===r?e[t]=a:s?e[t]?e[t]=a:n(e,t,a):(delete e[t],n(e,t,a)))})(Function.prototype,a,function(){return"function"==typeof this&&this[o]||s.call(this)})},{"./_core":14,"./_global":23,"./_has":24,"./_hide":25,"./_uid":62}],49:[function(e,t){"use strict";var r=e("./_global"),n=e("./_object-dp"),i=e("./_descriptors"),o=e("./_wks")("species");t.exports=function(e){var t=r[e];i&&t&&!t[o]&&n.f(t,o,{configurable:!0,get:function(){return this}})}},{"./_descriptors":17,"./_global":23,"./_object-dp":41,"./_wks":63}],50:[function(e,t){var r=e("./_object-dp").f,n=e("./_has"),i=e("./_wks")("toStringTag");t.exports=function(e,t,o){e&&!n(e=o?e:e.prototype,i)&&r(e,i,{configurable:!0,value:t})}},{"./_has":24,"./_object-dp":41,"./_wks":63}],51:[function(e,t){var r=e("./_shared")("keys"),n=e("./_uid");t.exports=function(e){return r[e]||(r[e]=n(e))}},{"./_shared":52,"./_uid":62}],52:[function(e,t){var r=e("./_global"),n="__core-js_shared__",i=r[n]||(r[n]={});t.exports=function(e){return i[e]||(i[e]={})}},{"./_global":23}],53:[function(e,t){var r=e("./_an-object"),n=e("./_a-function"),i=e("./_wks")("species");t.exports=function(e,t){var o,a=r(e).constructor;return void 0===a||void 0==(o=r(a)[i])?t:n(o)}},{"./_a-function":7,"./_an-object":10,"./_wks":63}],54:[function(e,t){var r=e("./_to-integer"),n=e("./_defined");t.exports=function(e){return function(t,i){var o,a,s=String(n(t)),u=r(i),l=s.length;return 0>u||u>=l?e?"":void 0:(o=s.charCodeAt(u),55296>o||o>56319||u+1===l||(a=s.charCodeAt(u+1))<56320||a>57343?e?s.charAt(u):o:e?s.slice(u,u+2):(o-55296<<10)+(a-56320)+65536)}}},{"./_defined":16,"./_to-integer":57}],55:[function(e,t){var r,n,i,o=e("./_ctx"),a=e("./_invoke"),s=e("./_html"),u=e("./_dom-create"),l=e("./_global"),c=l.process,f=l.setImmediate,h=l.clearImmediate,d=l.MessageChannel,p=0,_={},m="onreadystatechange",g=function(){var e=+this;if(_.hasOwnProperty(e)){var t=_[e];delete _[e],t()}},v=function(e){g.call(e.data)};f&&h||(f=function(e){for(var t=[],n=1;arguments.length>n;)t.push(arguments[n++]);return _[++p]=function(){a("function"==typeof e?e:Function(e),t)},r(p),p},h=function(e){delete _[e]},"process"==e("./_cof")(c)?r=function(e){c.nextTick(o(g,e,1))}:d?(n=new d,i=n.port2,n.port1.onmessage=v,r=o(i.postMessage,i,1)):l.addEventListener&&"function"==typeof postMessage&&!l.importScripts?(r=function(e){l.postMessage(e+"","*")},l.addEventListener("message",v,!1)):r=m in u("script")?function(e){s.appendChild(u("script"))[m]=function(){s.removeChild(this),g.call(e)}}:function(e){setTimeout(o(g,e,1),0)}),t.exports={set:f,clear:h}},{"./_cof":13,"./_ctx":15,"./_dom-create":18,"./_global":23,"./_html":26,"./_invoke":28}],56:[function(e,t){var r=e("./_to-integer"),n=Math.max,i=Math.min;t.exports=function(e,t){return e=r(e),0>e?n(e+t,0):i(e,t)}},{"./_to-integer":57}],57:[function(e,t){var r=Math.ceil,n=Math.floor;t.exports=function(e){return isNaN(e=+e)?0:(e>0?n:r)(e)}},{}],58:[function(e,t){var r=e("./_iobject"),n=e("./_defined");t.exports=function(e){return r(n(e))}},{"./_defined":16,"./_iobject":29}],59:[function(e,t){var r=e("./_to-integer"),n=Math.min;t.exports=function(e){return e>0?n(r(e),9007199254740991):0}},{"./_to-integer":57}],60:[function(e,t){var r=e("./_defined");t.exports=function(e){return Object(r(e))}},{"./_defined":16}],61:[function(e,t){var r=e("./_is-object");t.exports=function(e,t){if(!r(e))return e;var n,i;if(t&&"function"==typeof(n=e.toString)&&!r(i=n.call(e)))return i;if("function"==typeof(n=e.valueOf)&&!r(i=n.call(e)))return i;if(!t&&"function"==typeof(n=e.toString)&&!r(i=n.call(e)))return i;throw TypeError("Can't convert object to primitive value")}},{"./_is-object":31}],62:[function(e,t){var r=0,n=Math.random();t.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++r+n).toString(36))}},{}],63:[function(e,t){var r=e("./_shared")("wks"),n=e("./_uid"),i=e("./_global").Symbol,o="function"==typeof i,a=t.exports=function(e){return r[e]||(r[e]=o&&i[e]||(o?i:n)("Symbol."+e))};a.store=r},{"./_global":23,"./_shared":52,"./_uid":62}],64:[function(e,t){var r=e("./_classof"),n=e("./_wks")("iterator"),i=e("./_iterators");t.exports=e("./_core").getIteratorMethod=function(e){return void 0!=e?e[n]||e["@@iterator"]||i[r(e)]:void 0}},{"./_classof":12,"./_core":14,"./_iterators":37,"./_wks":63}],65:[function(e,t){"use strict";var r=e("./_add-to-unscopables"),n=e("./_iter-step"),i=e("./_iterators"),o=e("./_to-iobject");t.exports=e("./_iter-define")(Array,"Array",function(e,t){this._t=o(e),this._i=0,this._k=t},function(){var e=this._t,t=this._k,r=this._i++;return!e||r>=e.length?(this._t=void 0,n(1)):"keys"==t?n(0,r):"values"==t?n(0,e[r]):n(0,[r,e[r]])},"values"),i.Arguments=i.Array,r("keys"),r("values"),r("entries")},{"./_add-to-unscopables":8,"./_iter-define":34,"./_iter-step":36,"./_iterators":37,"./_to-iobject":58}],66:[function(e){"use strict";var t=e("./_classof"),r={};r[e("./_wks")("toStringTag")]="z",r+""!="[object z]"&&e("./_redefine")(Object.prototype,"toString",function(){return"[object "+t(this)+"]"},!0)},{"./_classof":12,"./_redefine":48,"./_wks":63}],67:[function(e){"use strict";var t,r,n,i=e("./_library"),o=e("./_global"),a=e("./_ctx"),s=e("./_classof"),u=e("./_export"),l=e("./_is-object"),c=e("./_a-function"),f=e("./_an-instance"),h=e("./_for-of"),d=e("./_species-constructor"),p=e("./_task").set,_=e("./_microtask")(),m="Promise",g=o.TypeError,v=o.process,y=o[m],v=o.process,b="process"==s(v),x=function(){},w=!!function(){try{var t=y.resolve(1),r=(t.constructor={})[e("./_wks")("species")]=function(e){e(x,x)};return(b||"function"==typeof PromiseRejectionEvent)&&t.then(x)instanceof r}catch(n){}}(),k=function(e,t){return e===t||e===y&&t===n},A=function(e){var t;return l(e)&&"function"==typeof(t=e.then)?t:!1},T=function(e){return k(y,e)?new E(e):new r(e)},E=r=function(e){var t,r;this.promise=new e(function(e,n){if(void 0!==t||void 0!==r)throw g("Bad Promise constructor");t=e,r=n}),this.resolve=c(t),this.reject=c(r)},S=function(e){try{e()}catch(t){return{error:t}}},R=function(e,t){if(!e._n){e._n=!0;var r=e._c;_(function(){for(var n=e._v,i=1==e._s,o=0,a=function(t){var r,o,a=i?t.ok:t.fail,s=t.resolve,u=t.reject,l=t.domain;try{a?(i||(2==e._h&&z(e),e._h=1),a===!0?r=n:(l&&l.enter(),r=a(n),l&&l.exit()),r===t.promise?u(g("Promise-chain cycle")):(o=A(r))?o.call(r,s,u):s(r)):u(n)}catch(c){u(c)}};r.length>o;)a(r[o++]);e._c=[],e._n=!1,t&&!e._h&&M(e)})}},M=function(e){p.call(o,function(){var t,r,n,i=e._v;if(O(e)&&(t=S(function(){b?v.emit("unhandledRejection",i,e):(r=o.onunhandledrejection)?r({promise:e,reason:i}):(n=o.console)&&n.error&&n.error("Unhandled promise rejection",i)}),e._h=b||O(e)?2:1),e._a=void 0,t)throw t.error})},O=function(e){if(1==e._h)return!1;for(var t,r=e._a||e._c,n=0;r.length>n;)if(t=r[n++],t.fail||!O(t.promise))return!1;return!0},z=function(e){p.call(o,function(){var t;b?v.emit("rejectionHandled",e):(t=o.onrejectionhandled)&&t({promise:e,reason:e._v})})},P=function(e){var t=this;t._d||(t._d=!0,t=t._w||t,t._v=e,t._s=2,t._a||(t._a=t._c.slice()),R(t,!0))},L=function(e){var t,r=this;if(!r._d){r._d=!0,r=r._w||r;try{if(r===e)throw g("Promise can't be resolved itself");(t=A(e))?_(function(){var n={_w:r,_d:!1};try{t.call(e,a(L,n,1),a(P,n,1))}catch(i){P.call(n,i)}}):(r._v=e,r._s=1,R(r,!1))}catch(n){P.call({_w:r,_d:!1},n)}}};w||(y=function(e){f(this,y,m,"_h"),c(e),t.call(this);try{e(a(L,this,1),a(P,this,1))}catch(r){P.call(this,r)}},t=function(){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1},t.prototype=e("./_redefine-all")(y.prototype,{then:function(e,t){var r=T(d(this,y));return r.ok="function"==typeof e?e:!0,r.fail="function"==typeof t&&t,r.domain=b?v.domain:void 0,this._c.push(r),this._a&&this._a.push(r),this._s&&R(this,!1),r.promise},"catch":function(e){return this.then(void 0,e)}}),E=function(){var e=new t;this.promise=e,this.resolve=a(L,e,1),this.reject=a(P,e,1)}),u(u.G+u.W+u.F*!w,{Promise:y}),e("./_set-to-string-tag")(y,m),e("./_set-species")(m),n=e("./_core")[m],u(u.S+u.F*!w,m,{reject:function(e){var t=T(this),r=t.reject;return r(e),t.promise}}),u(u.S+u.F*(i||!w),m,{resolve:function(e){if(e instanceof y&&k(e.constructor,this))return e;var t=T(this),r=t.resolve;return r(e),t.promise}}),u(u.S+u.F*!(w&&e("./_iter-detect")(function(e){y.all(e)["catch"](x)})),m,{all:function(e){var t=this,r=T(t),n=r.resolve,i=r.reject,o=S(function(){var r=[],o=0,a=1;h(e,!1,function(e){var s=o++,u=!1;r.push(void 0),a++,t.resolve(e).then(function(e){u||(u=!0,r[s]=e,--a||n(r))},i)}),--a||n(r)});return o&&i(o.error),r.promise},race:function(e){var t=this,r=T(t),n=r.reject,i=S(function(){h(e,!1,function(e){t.resolve(e).then(r.resolve,n)})});return i&&n(i.error),r.promise}})},{"./_a-function":7,"./_an-instance":9,"./_classof":12,"./_core":14,"./_ctx":15,"./_export":20,"./_for-of":22,"./_global":23,"./_is-object":31,"./_iter-detect":35,"./_library":38,"./_microtask":39,"./_redefine-all":47,"./_set-species":49,"./_set-to-string-tag":50,"./_species-constructor":53,"./_task":55,"./_wks":63}],68:[function(e){"use strict";var t=e("./_string-at")(!0);e("./_iter-define")(String,"String",function(e){this._t=String(e),this._i=0},function(){var e,r=this._t,n=this._i;return n>=r.length?{value:void 0,done:!0}:(e=t(r,n),this._i+=e.length,{value:e,done:!1})})},{"./_iter-define":34,"./_string-at":54}],69:[function(e){for(var t=e("./es6.array.iterator"),r=e("./_redefine"),n=e("./_global"),i=e("./_hide"),o=e("./_iterators"),a=e("./_wks"),s=a("iterator"),u=a("toStringTag"),l=o.Array,c=["NodeList","DOMTokenList","MediaList","StyleSheetList","CSSRuleList"],f=0;5>f;f++){var h,d=c[f],p=n[d],_=p&&p.prototype;if(_){_[s]||i(_,s,l),_[u]||i(_,u,d),o[d]=l;for(h in t)_[h]||r(_,h,t[h],!0)}}},{"./_global":23,"./_hide":25,"./_iterators":37,"./_redefine":48,"./_wks":63,"./es6.array.iterator":65}],70:[function(e,t,r){(function(e){function t(e){return Array.isArray?Array.isArray(e):"[object Array]"===m(e)}function n(e){return"boolean"==typeof e}function i(e){return null===e}function o(e){return null==e}function a(e){return"number"==typeof e}function s(e){return"string"==typeof e}function u(e){return"symbol"==typeof e}function l(e){return void 0===e}function c(e){return"[object RegExp]"===m(e)}function f(e){return"object"==typeof e&&null!==e}function h(e){return"[object Date]"===m(e)}function d(e){return"[object Error]"===m(e)||e instanceof Error}function p(e){return"function"==typeof e}function _(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"==typeof e||"undefined"==typeof e}function m(e){return Object.prototype.toString.call(e)}r.isArray=t,r.isBoolean=n,r.isNull=i,r.isNullOrUndefined=o,r.isNumber=a,r.isString=s,r.isSymbol=u,r.isUndefined=l,r.isRegExp=c,r.isObject=f,r.isDate=h,r.isError=d,r.isFunction=p,r.isPrimitive=_,r.isBuffer=e.isBuffer}).call(this,{isBuffer:e("../../is-buffer/index.js")})},{"../../is-buffer/index.js":95}],71:[function(e,t,r){function n(e){return e=Math.round(e),0>e?0:e>255?255:e}function i(e){return 0>e?0:e>1?1:e}function o(e){return n("%"===e[e.length-1]?parseFloat(e)/100*255:parseInt(e))}function a(e){return i("%"===e[e.length-1]?parseFloat(e)/100:parseFloat(e))}function s(e,t,r){return 0>r?r+=1:r>1&&(r-=1),1>6*r?e+(t-e)*r*6:1>2*r?t:2>3*r?e+(t-e)*(2/3-r)*6:e}function u(e){var t=e.replace(/ /g,"").toLowerCase();if(t in l)return l[t].slice();if("#"===t[0]){if(4===t.length){var r=parseInt(t.substr(1),16);return r>=0&&4095>=r?[(3840&r)>>4|(3840&r)>>8,240&r|(240&r)>>4,15&r|(15&r)<<4,1]:null}if(7===t.length){var r=parseInt(t.substr(1),16);return r>=0&&16777215>=r?[(16711680&r)>>16,(65280&r)>>8,255&r,1]:null}return null}var i=t.indexOf("("),u=t.indexOf(")");if(-1!==i&&u+1===t.length){var c=t.substr(0,i),f=t.substr(i+1,u-(i+1)).split(","),h=1;switch(c){case"rgba":if(4!==f.length)return null;h=a(f.pop());case"rgb":return 3!==f.length?null:[o(f[0]),o(f[1]),o(f[2]),h];case"hsla":if(4!==f.length)return null;h=a(f.pop());case"hsl":if(3!==f.length)return null;var d=(parseFloat(f[0])%360+360)%360/360,p=a(f[1]),_=a(f[2]),m=.5>=_?_*(p+1):_+p-_*p,g=2*_-m;return[n(255*s(g,m,d+1/3)),n(255*s(g,m,d)),n(255*s(g,m,d-1/3)),h];default:return null}}return null}var l={transparent:[0,0,0,0],aliceblue:[240,248,255,1],antiquewhite:[250,235,215,1],aqua:[0,255,255,1],aquamarine:[127,255,212,1],azure:[240,255,255,1],beige:[245,245,220,1],bisque:[255,228,196,1],black:[0,0,0,1],blanchedalmond:[255,235,205,1],blue:[0,0,255,1],blueviolet:[138,43,226,1],brown:[165,42,42,1],burlywood:[222,184,135,1],cadetblue:[95,158,160,1],chartreuse:[127,255,0,1],chocolate:[210,105,30,1],coral:[255,127,80,1],cornflowerblue:[100,149,237,1],cornsilk:[255,248,220,1],crimson:[220,20,60,1],cyan:[0,255,255,1],darkblue:[0,0,139,1],darkcyan:[0,139,139,1],darkgoldenrod:[184,134,11,1],darkgray:[169,169,169,1],darkgreen:[0,100,0,1],darkgrey:[169,169,169,1],darkkhaki:[189,183,107,1],darkmagenta:[139,0,139,1],darkolivegreen:[85,107,47,1],darkorange:[255,140,0,1],darkorchid:[153,50,204,1],darkred:[139,0,0,1],darksalmon:[233,150,122,1],darkseagreen:[143,188,143,1],darkslateblue:[72,61,139,1],darkslategray:[47,79,79,1],darkslategrey:[47,79,79,1],darkturquoise:[0,206,209,1],darkviolet:[148,0,211,1],deeppink:[255,20,147,1],deepskyblue:[0,191,255,1],dimgray:[105,105,105,1],dimgrey:[105,105,105,1],dodgerblue:[30,144,255,1],firebrick:[178,34,34,1],floralwhite:[255,250,240,1],forestgreen:[34,139,34,1],fuchsia:[255,0,255,1],gainsboro:[220,220,220,1],ghostwhite:[248,248,255,1],gold:[255,215,0,1],goldenrod:[218,165,32,1],gray:[128,128,128,1],green:[0,128,0,1],greenyellow:[173,255,47,1],grey:[128,128,128,1],honeydew:[240,255,240,1],hotpink:[255,105,180,1],indianred:[205,92,92,1],indigo:[75,0,130,1],ivory:[255,255,240,1],khaki:[240,230,140,1],lavender:[230,230,250,1],lavenderblush:[255,240,245,1],lawngreen:[124,252,0,1],lemonchiffon:[255,250,205,1],lightblue:[173,216,230,1],lightcoral:[240,128,128,1],lightcyan:[224,255,255,1],lightgoldenrodyellow:[250,250,210,1],lightgray:[211,211,211,1],lightgreen:[144,238,144,1],lightgrey:[211,211,211,1],lightpink:[255,182,193,1],lightsalmon:[255,160,122,1],lightseagreen:[32,178,170,1],lightskyblue:[135,206,250,1],lightslategray:[119,136,153,1],lightslategrey:[119,136,153,1],lightsteelblue:[176,196,222,1],lightyellow:[255,255,224,1],lime:[0,255,0,1],limegreen:[50,205,50,1],linen:[250,240,230,1],magenta:[255,0,255,1],maroon:[128,0,0,1],mediumaquamarine:[102,205,170,1],mediumblue:[0,0,205,1],mediumorchid:[186,85,211,1],mediumpurple:[147,112,219,1],mediumseagreen:[60,179,113,1],mediumslateblue:[123,104,238,1],mediumspringgreen:[0,250,154,1],mediumturquoise:[72,209,204,1],mediumvioletred:[199,21,133,1],midnightblue:[25,25,112,1],mintcream:[245,255,250,1],mistyrose:[255,228,225,1],moccasin:[255,228,181,1],navajowhite:[255,222,173,1],navy:[0,0,128,1],oldlace:[253,245,230,1],olive:[128,128,0,1],olivedrab:[107,142,35,1],orange:[255,165,0,1],orangered:[255,69,0,1],orchid:[218,112,214,1],palegoldenrod:[238,232,170,1],palegreen:[152,251,152,1],paleturquoise:[175,238,238,1],palevioletred:[219,112,147,1],papayawhip:[255,239,213,1],peachpuff:[255,218,185,1],peru:[205,133,63,1],pink:[255,192,203,1],plum:[221,160,221,1],powderblue:[176,224,230,1],purple:[128,0,128,1],rebeccapurple:[102,51,153,1],red:[255,0,0,1],rosybrown:[188,143,143,1],royalblue:[65,105,225,1],saddlebrown:[139,69,19,1],salmon:[250,128,114,1],sandybrown:[244,164,96,1],seagreen:[46,139,87,1],seashell:[255,245,238,1],sienna:[160,82,45,1],silver:[192,192,192,1],skyblue:[135,206,235,1],slateblue:[106,90,205,1],slategray:[112,128,144,1],slategrey:[112,128,144,1],snow:[255,250,250,1],springgreen:[0,255,127,1],steelblue:[70,130,180,1],tan:[210,180,140,1],teal:[0,128,128,1],thistle:[216,191,216,1],tomato:[255,99,71,1],turquoise:[64,224,208,1],violet:[238,130,238,1],wheat:[245,222,179,1],white:[255,255,255,1],whitesmoke:[245,245,245,1],yellow:[255,255,0,1],yellowgreen:[154,205,50,1]};try{r.parseCSSColor=u}catch(c){}},{}],72:[function(e,t){"use strict";function r(e,t,r){r=r||2;var i=t&&t.length,a=i?t[0]*r:e.length,s=n(e,0,a,r,!0),u=[];if(!s)return u;var l,f,h,d,p,_,m;if(i&&(s=c(e,t,s,r)),e.length>80*r){l=h=e[0],f=d=e[1];for(var g=r;a>g;g+=r)p=e[g],_=e[g+1],l>p&&(l=p),f>_&&(f=_),p>h&&(h=p),_>d&&(d=_);m=Math.max(h-l,d-f)}return o(s,u,r,l,f,m),u}function n(e,t,r,n,i){var o,a;if(i===O(e,t,r,n)>0)for(o=t;r>o;o+=n)a=S(o,e[o],e[o+1],a);else for(o=r-n;o>=t;o-=n)a=S(o,e[o],e[o+1],a);return a&&x(a,a.next)&&(R(a),a=a.next),a}function i(e,t){if(!e)return e;t||(t=e);var r,n=e;do if(r=!1,n.steiner||!x(n,n.next)&&0!==b(n.prev,n,n.next))n=n.next;else{if(R(n),n=t=n.prev,n===n.next)return null;r=!0}while(r||n!==t);return t}function o(e,t,r,n,c,f,h){if(e){!h&&f&&p(e,n,c,f);for(var d,_,m=e;e.prev!==e.next;)if(d=e.prev,_=e.next,f?s(e,n,c,f):a(e))t.push(d.i/r),t.push(e.i/r),t.push(_.i/r),R(e),e=_.next,m=_.next;else if(e=_,e===m){h?1===h?(e=u(e,t,r),o(e,t,r,n,c,f,2)):2===h&&l(e,t,r,n,c,f):o(i(e),t,r,n,c,f,1);break}}}function a(e){var t=e.prev,r=e,n=e.next;if(b(t,r,n)>=0)return!1;for(var i=e.next.next;i!==e.prev;){if(v(t.x,t.y,r.x,r.y,n.x,n.y,i.x,i.y)&&b(i.prev,i,i.next)>=0)return!1;i=i.next}return!0}function s(e,t,r,n){var i=e.prev,o=e,a=e.next;if(b(i,o,a)>=0)return!1;for(var s=i.xo.x?i.x>a.x?i.x:a.x:o.x>a.x?o.x:a.x,c=i.y>o.y?i.y>a.y?i.y:a.y:o.y>a.y?o.y:a.y,f=m(s,u,t,r,n),h=m(l,c,t,r,n),d=e.nextZ;d&&d.z<=h;){if(d!==e.prev&&d!==e.next&&v(i.x,i.y,o.x,o.y,a.x,a.y,d.x,d.y)&&b(d.prev,d,d.next)>=0)return!1;d=d.nextZ}for(d=e.prevZ;d&&d.z>=f;){if(d!==e.prev&&d!==e.next&&v(i.x,i.y,o.x,o.y,a.x,a.y,d.x,d.y)&&b(d.prev,d,d.next)>=0)return!1;d=d.prevZ}return!0}function u(e,t,r){var n=e;do{var i=n.prev,o=n.next.next;!x(i,o)&&w(i,n,n.next,o)&&A(i,o)&&A(o,i)&&(t.push(i.i/r),t.push(n.i/r),t.push(o.i/r),R(n),R(n.next),n=e=o),n=n.next}while(n!==e);return n}function l(e,t,r,n,a,s){var u=e;do{for(var l=u.next.next;l!==u.prev;){if(u.i!==l.i&&y(u,l)){var c=E(u,l);return u=i(u,u.next),c=i(c,c.next),o(u,t,r,n,a,s),void o(c,t,r,n,a,s)}l=l.next}u=u.next}while(u!==e)}function c(e,t,r,o){var a,s,u,l,c,d=[];for(a=0,s=t.length;s>a;a++)u=t[a]*o,l=s-1>a?t[a+1]*o:e.length,c=n(e,u,l,o,!1),c===c.next&&(c.steiner=!0),d.push(g(c));for(d.sort(f),a=0;a=n.next.y){var s=n.x+(o-n.y)*(n.next.x-n.x)/(n.next.y-n.y);if(i>=s&&s>a){if(a=s,s===i){if(o===n.y)return n;if(o===n.next.y)return n.next}r=n.x=n.x&&n.x>=c&&v(f>o?i:a,o,c,f,f>o?a:i,o,n.x,n.y)&&(u=Math.abs(o-n.y)/(i-n.x),(h>u||u===h&&n.x>r.x)&&A(n,e)&&(r=n,h=u)),n=n.next;return r}function p(e,t,r,n){var i=e;do null===i.z&&(i.z=m(i.x,i.y,t,r,n)),i.prevZ=i.prev,i.nextZ=i.next,i=i.next;while(i!==e);i.prevZ.nextZ=null,i.prevZ=null,_(i)}function _(e){var t,r,n,i,o,a,s,u,l=1;do{for(r=e,e=null,o=null,a=0;r;){for(a++,n=r,s=0,t=0;l>t&&(s++,n=n.nextZ,n);t++);for(u=l;s>0||u>0&&n;)0===s?(i=n,n=n.nextZ,u--):0!==u&&n?r.z<=n.z?(i=r,r=r.nextZ,s--):(i=n,n=n.nextZ,u--):(i=r,r=r.nextZ,s--),o?o.nextZ=i:e=i,i.prevZ=o,o=i;r=n}o.nextZ=null,l*=2}while(a>1);return e}function m(e,t,r,n,i){return e=32767*(e-r)/i,t=32767*(t-n)/i,e=16711935&(e|e<<8),e=252645135&(e|e<<4),e=858993459&(e|e<<2),e=1431655765&(e|e<<1),t=16711935&(t|t<<8),t=252645135&(t|t<<4),t=858993459&(t|t<<2),t=1431655765&(t|t<<1),e|t<<1}function g(e){var t=e,r=e;do t.x=0&&(e-a)*(n-s)-(r-a)*(t-s)>=0&&(r-a)*(o-s)-(i-a)*(n-s)>=0}function y(e,t){return e.next.i!==t.i&&e.prev.i!==t.i&&!k(e,t)&&A(e,t)&&A(t,e)&&T(e,t)}function b(e,t,r){return(t.y-e.y)*(r.x-t.x)-(t.x-e.x)*(r.y-t.y)}function x(e,t){return e.x===t.x&&e.y===t.y}function w(e,t,r,n){return x(e,t)&&x(r,n)||x(e,n)&&x(r,t)?!0:b(e,t,r)>0!=b(e,t,n)>0&&b(r,n,e)>0!=b(r,n,t)>0}function k(e,t){var r=e;do{if(r.i!==e.i&&r.next.i!==e.i&&r.i!==t.i&&r.next.i!==t.i&&w(r,r.next,e,t))return!0;r=r.next}while(r!==e);return!1}function A(e,t){return b(e.prev,e,e.next)<0?b(e,t,e.next)>=0&&b(e,e.prev,t)>=0:b(e,t,e.prev)<0||b(e,e.next,t)<0}function T(e,t){var r=e,n=!1,i=(e.x+t.x)/2,o=(e.y+t.y)/2;do r.y>o!=r.next.y>o&&i<(r.next.x-r.x)*(o-r.y)/(r.next.y-r.y)+r.x&&(n=!n),r=r.next;while(r!==e);return n}function E(e,t){var r=new M(e.i,e.x,e.y),n=new M(t.i,t.x,t.y),i=e.next,o=t.prev;return e.next=t,t.prev=e,r.next=i,i.prev=r,n.next=r,r.prev=n,o.next=n,n.prev=o,n}function S(e,t,r,n){var i=new M(e,t,r);return n?(i.next=n.next,i.prev=n,n.next.prev=i,n.next=i):(i.prev=i,i.next=i),i}function R(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ)}function M(e,t,r){this.i=e,this.x=t,this.y=r,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}function O(e,t,r,n){for(var i=0,o=t,a=r-n;r>o;o+=n)i+=(e[a]-e[o])*(e[o+1]+e[a+1]),a=o;return i}t.exports=r,r.deviation=function(e,t,r,n){var i=t&&t.length,o=i?t[0]*r:e.length,a=Math.abs(O(e,0,o,r));if(i)for(var s=0,u=t.length;u>s;s++){var l=t[s]*r,c=u-1>s?t[s+1]*r:e.length;a-=Math.abs(O(e,l,c,r))}var f=0;for(s=0;sa;a++)r.vertices.push(e[i][o][a]);i>0&&(n+=e[i-1].length,r.holes.push(n))}return r}},{}],73:[function(e,t){function r(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function n(e){return"function"==typeof e}function i(e){return"number"==typeof e}function o(e){return"object"==typeof e&&null!==e}function a(e){return void 0===e}t.exports=r,r.EventEmitter=r,r.prototype._events=void 0,r.prototype._maxListeners=void 0,r.defaultMaxListeners=10,r.prototype.setMaxListeners=function(e){if(!i(e)||0>e||isNaN(e))throw TypeError("n must be a positive number");return this._maxListeners=e,this},r.prototype.emit=function(e){var t,r,i,s,u,l;if(this._events||(this._events={}),"error"===e&&(!this._events.error||o(this._events.error)&&!this._events.error.length)){if(t=arguments[1],t instanceof Error)throw t;var c=new Error('Uncaught, unspecified "error" event. ('+t+")");throw c.context=t,c}if(r=this._events[e],a(r))return!1;if(n(r))switch(arguments.length){case 1:r.call(this);break;case 2:r.call(this,arguments[1]);break;case 3:r.call(this,arguments[1],arguments[2]);break;default:s=Array.prototype.slice.call(arguments,1),r.apply(this,s)}else if(o(r))for(s=Array.prototype.slice.call(arguments,1),l=r.slice(),i=l.length,u=0;i>u;u++)l[u].apply(this,s);return!0},r.prototype.addListener=function(e,t){var i;if(!n(t))throw TypeError("listener must be a function");return this._events||(this._events={}),this._events.newListener&&this.emit("newListener",e,n(t.listener)?t.listener:t),this._events[e]?o(this._events[e])?this._events[e].push(t):this._events[e]=[this._events[e],t]:this._events[e]=t,o(this._events[e])&&!this._events[e].warned&&(i=a(this._maxListeners)?r.defaultMaxListeners:this._maxListeners,i&&i>0&&this._events[e].length>i&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),"function"==typeof console.trace&&console.trace())),this},r.prototype.on=r.prototype.addListener,r.prototype.once=function(e,t){function r(){this.removeListener(e,r),i||(i=!0,t.apply(this,arguments))}if(!n(t))throw TypeError("listener must be a function");var i=!1;return r.listener=t,this.on(e,r),this},r.prototype.removeListener=function(e,t){var r,i,a,s;if(!n(t))throw TypeError("listener must be a function");if(!this._events||!this._events[e])return this;if(r=this._events[e],a=r.length,i=-1,r===t||n(r.listener)&&r.listener===t)delete this._events[e],this._events.removeListener&&this.emit("removeListener",e,t);else if(o(r)){for(s=a;s-->0;)if(r[s]===t||r[s].listener&&r[s].listener===t){i=s;break}if(0>i)return this;1===r.length?(r.length=0,delete this._events[e]):r.splice(i,1),this._events.removeListener&&this.emit("removeListener",e,t)}return this},r.prototype.removeAllListeners=function(e){var t,r;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(t in this._events)"removeListener"!==t&&this.removeAllListeners(t);return this.removeAllListeners("removeListener"),this._events={},this}if(r=this._events[e],n(r))this.removeListener(e,r);else if(r)for(;r.length;)this.removeListener(e,r[r.length-1]);return delete this._events[e],this},r.prototype.listeners=function(e){var t;return t=this._events&&this._events[e]?n(this._events[e])?[this._events[e]]:this._events[e].slice():[]},r.prototype.listenerCount=function(e){if(this._events){var t=this._events[e];if(n(t))return 1;if(t)return t.length}return 0},r.listenerCount=function(e,t){return e.listenerCount(t)}},{}],74:[function(e,t){!function(){function e(e,t){document.addEventListener?e.addEventListener("scroll",t,!1):e.attachEvent("scroll",t)}function r(e){document.body?e():document.addEventListener?document.addEventListener("DOMContentLoaded",function t(){document.removeEventListener("DOMContentLoaded",t),e()}):document.attachEvent("onreadystatechange",function r(){("interactive"==document.readyState||"complete"==document.readyState)&&(document.detachEvent("onreadystatechange",r),e())})}function n(e){this.a=document.createElement("div"),this.a.setAttribute("aria-hidden","true"),this.a.appendChild(document.createTextNode(e)),this.b=document.createElement("span"),this.c=document.createElement("span"),this.h=document.createElement("span"),this.f=document.createElement("span"),this.g=-1,this.b.style.cssText="max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;",this.c.style.cssText="max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;",this.f.style.cssText="max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;",this.h.style.cssText="display:inline-block;width:200%;height:200%;font-size:16px;max-width:none;",this.b.appendChild(this.h),this.c.appendChild(this.f),this.a.appendChild(this.b),this.a.appendChild(this.c)}function i(e,t){e.a.style.cssText="max-width:none;min-width:20px;min-height:20px;display:inline-block;overflow:hidden;position:absolute;width:auto;margin:0;padding:0;top:-999px;left:-999px;white-space:nowrap;font:"+t+";"}function o(e){var t=e.a.offsetWidth,r=t+100;return e.f.style.width=r+"px",e.c.scrollLeft=r,e.b.scrollLeft=e.b.scrollWidth+100,e.g!==t?(e.g=t,!0):!1}function a(t,r){function n(){var e=i;o(e)&&e.a.parentNode&&r(e.g)}var i=t;e(t.b,n),e(t.c,n),o(t)}function s(e,t){var r=t||{};this.family=e,this.style=r.style||"normal",this.weight=r.weight||"normal",this.stretch=r.stretch||"normal"}function u(){if(null===h){var e=document.createElement("div");try{e.style.font="condensed 100px sans-serif"}catch(t){}h=""!==e.style.font}return h}function l(e,t){return[e.style,e.weight,u()?e.stretch:"","100px",t].join(" ")}var c=null,f=null,h=null,d=null;s.prototype.load=function(e,t){var o=this,s=e||"BESbswy",u=0,h=t||3e3,p=(new Date).getTime();return new Promise(function(e,t){var _;if(null===d&&(d=!!document.fonts),(_=d)&&(null===f&&(f=/OS X.*Version\/10\..*Safari/.test(navigator.userAgent)&&/Apple/.test(navigator.vendor)),_=!f),_){_=new Promise(function(e,t){function r(){(new Date).getTime()-p>=h?t():document.fonts.load(l(o,'"'+o.family+'"'),s).then(function(t){1<=t.length?e():setTimeout(r,25)},function(){t()})}r()});var m=new Promise(function(e,t){u=setTimeout(t,h)});Promise.race([m,_]).then(function(){clearTimeout(u),e(o)},function(){t(o)})}else r(function(){function r(){var t;(t=-1!=g&&-1!=v||-1!=g&&-1!=y||-1!=v&&-1!=y)&&((t=g!=v&&g!=y&&v!=y)||(null===c&&(t=/AppleWebKit\/([0-9]+)(?:\.([0-9]+))/.exec(window.navigator.userAgent),c=!!t&&(536>parseInt(t[1],10)||536===parseInt(t[1],10)&&11>=parseInt(t[2],10))),t=c&&(g==b&&v==b&&y==b||g==x&&v==x&&y==x||g==w&&v==w&&y==w)),t=!t),t&&(k.parentNode&&k.parentNode.removeChild(k),clearTimeout(u),e(o))}function f(){if((new Date).getTime()-p>=h)k.parentNode&&k.parentNode.removeChild(k),t(o);else{var e=document.hidden;(!0===e||void 0===e)&&(g=d.a.offsetWidth,v=_.a.offsetWidth,y=m.a.offsetWidth,r()),u=setTimeout(f,50)}}var d=new n(s),_=new n(s),m=new n(s),g=-1,v=-1,y=-1,b=-1,x=-1,w=-1,k=document.createElement("div");k.dir="ltr",i(d,l(o,"sans-serif")),i(_,l(o,"serif")),i(m,l(o,"monospace")),k.appendChild(d.a),k.appendChild(_.a),k.appendChild(m.a),document.body.appendChild(k),b=d.a.offsetWidth,x=_.a.offsetWidth,w=m.a.offsetWidth,f(),a(d,function(e){g=e,r()}),i(d,l(o,'"'+o.family+'",sans-serif')),a(_,function(e){v=e,r()}),i(_,l(o,'"'+o.family+'",serif')),a(m,function(e){y=e,r()}),i(m,l(o,'"'+o.family+'",monospace'))})})},"undefined"!=typeof t?t.exports=s:(window.FontFaceObserver=s,window.FontFaceObserver.prototype.load=s.prototype.load)}()},{}],75:[function(e,t){"use strict";function r(e,t,r,o,s,u,l,c){if(r/=t,o/=t,l>=r&&o>=c)return e;if(l>o||r>c)return null;for(var f=[],h=0;h=r&&o>=p)f.push(_);else if(!(d>o||r>p)){var v=1===g?n(m,r,o,s):i(m,r,o,s,u,3===g);v.length&&f.push(a(_.tags,g,v,_.id))}}return f.length?f:null}function n(e,t,r,n){for(var i=[],o=0;o=t&&r>=s&&i.push(a)}return i}function i(e,t,r,n,i,a){for(var s=[],u=0;uc;c++)l=p||_[c],p=_[c+1],h=d||l[n],d=p[n],t>h?d>r?(b.push(i(l,p,t),i(l,p,r)),a||(b=o(s,b,m,g,v))):d>=t&&b.push(i(l,p,t)):h>r?t>d?(b.push(i(l,p,r),i(l,p,t)),a||(b=o(s,b,m,g,v))):r>=d&&b.push(i(l,p,r)):(b.push(l),t>d?(b.push(i(l,p,t)),a||(b=o(s,b,m,g,v))):d>r&&(b.push(i(l,p,r)),a||(b=o(s,b,m,g,v)))); +l=_[y-1],h=l[n],h>=t&&r>=h&&b.push(l),f=b[b.length-1],a&&f&&(b[0][0]!==f[0]||b[0][1]!==f[1])&&b.push(b[0]),o(s,b,m,g,v)}return s}function o(e,t,r,n,i){return t.length&&(t.area=r,t.dist=n,void 0!==i&&(t.outer=i),e.push(t)),[]}t.exports=r;var a=e("./feature")},{"./feature":77}],76:[function(e,t){"use strict";function r(e,t){var r=[];if("FeatureCollection"===e.type)for(var i=0;in?0:n>1?1:n,[r,n,0]}function a(e){for(var t,r,n=0,i=0,o=0;o1)return!1;var o=i.geometry[0].length;if(5!==o)return!1;for(var a=0;o>a;a++){var s=c.point(i.geometry[0][a],t,e.z2,e.x,e.y);if(s[0]!==-r&&s[0]!==t+r||s[1]!==-r&&s[1]!==t+r)return!1}return!0}t.exports=r;var l=e("./convert"),c=e("./transform"),f=e("./clip"),h=e("./wrap"),d=e("./tile");n.prototype.options={maxZoom:14,indexMaxZoom:5,indexMaxPoints:1e5,solidChildren:!1,tolerance:3,extent:4096,buffer:64,debug:0},n.prototype.splitTile=function(e,t,r,n,s,l,c){for(var h=[e,t,r,n],p=this.options,_=p.debug,m=null;h.length;){n=h.pop(),r=h.pop(),t=h.pop(),e=h.pop();var g=1<1&&console.time("creation"),y=this.tiles[v]=d(e,g,r,n,b,t===p.maxZoom),this.tileCoords.push({z:t,x:r,y:n}),_)){_>1&&(console.log("tile z%d-%d-%d (features: %d, points: %d, simplified: %d)",t,r,n,y.numFeatures,y.numPoints,y.numSimplified),console.timeEnd("creation"));var x="z"+t;this.stats[x]=(this.stats[x]||0)+1,this.total++}if(y.source=e,s){if(t===p.maxZoom||t===s)continue;var w=1<1&&console.time("clipping");var k,A,T,E,S,R,M=.5*p.buffer/p.extent,O=.5-M,z=.5+M,P=1+M;k=A=T=E=null,S=f(e,g,r-M,r+z,0,o,y.min[0],y.max[0]),R=f(e,g,r+O,r+P,0,o,y.min[0],y.max[0]),S&&(k=f(S,g,n-M,n+z,1,a,y.min[1],y.max[1]),A=f(S,g,n+O,n+P,1,a,y.min[1],y.max[1])),R&&(T=f(R,g,n-M,n+z,1,a,y.min[1],y.max[1]),E=f(R,g,n+O,n+P,1,a,y.min[1],y.max[1])),_>1&&console.timeEnd("clipping"),e.length&&(h.push(k||[],t+1,2*r,2*n),h.push(A||[],t+1,2*r,2*n+1),h.push(T||[],t+1,2*r+1,2*n),h.push(E||[],t+1,2*r+1,2*n+1))}else s&&(m=t)}return m},n.prototype.getTile=function(e,t,r){var n=this.options,o=n.extent,a=n.debug,s=1<1&&console.log("drilling down to z%d-%d-%d",e,t,r);for(var f,h=e,d=t,p=r;!f&&h>0;)h--,d=Math.floor(d/2),p=Math.floor(p/2),f=this.tiles[i(h,d,p)];if(!f||!f.source)return null;if(a>1&&console.log("found parent tile z%d-%d-%d",h,d,p),u(f,o,n.buffer))return c.tile(f,o);a>1&&console.time("drilling down");var _=this.splitTile(f.source,h,d,p,e,t,r);if(a>1&&console.timeEnd("drilling down"),null!==_){var m=1<r;r++)o=n(e[r],e[l],e[c]),o>i&&(a=r,i=o);i>s?(e[a][2]=i,f.push(l),f.push(a),l=a):(c=f.pop(),l=f.pop())}}function n(e,t,r){var n=t[0],i=t[1],o=r[0],a=r[1],s=e[0],u=e[1],l=o-n,c=a-i;if(0!==l||0!==c){var f=((s-n)*l+(u-i)*c)/(l*l+c*c);f>1?(n=o,i=a):f>0&&(n+=l*f,i+=c*f)}return l=s-n,c=u-i,l*l+c*c}t.exports=r},{}],80:[function(e,t){"use strict";function r(e,t,r,i,o,a){for(var s={features:[],numPoints:0,numSimplified:0,numFeatures:0,source:null,x:r,y:i,z2:t,transformed:!1,min:[2,1],max:[-1,0]},u=0;us.max[0]&&(s.max[0]=c[0]),c[1]>s.max[1]&&(s.max[1]=c[1])}return s}function n(e,t,r,n){var o,a,s,u,l=t.geometry,c=t.type,f=[],h=r*r;if(1===c)for(o=0;oh)&&(d.push(u),e.numSimplified++),e.numPoints++;3===c&&i(d,s.outer),f.push(d)}else e.numPoints+=s.length;if(f.length){var p={geometry:f,type:c,tags:t.tags||null};null!==t.id&&(p.id=t.id),e.features.push(p)}}function i(e,t){var r=o(e);0>r===t&&e.reverse()}function o(e){for(var t,r,n=0,i=0,o=e.length,a=o-1;o>i;a=i++)t=e[i],r=e[a],n+=(r[0]-t[0])*(t[1]+r[1]);return n}t.exports=r},{}],81:[function(e,t,r){"use strict";function n(e,t){if(e.transformed)return e;var r,n,o,a=e.z2,s=e.x,u=e.y;for(r=0;r>1,c=-7,f=r?i-1:0,h=r?-1:1,d=e[t+f];for(f+=h,o=d&(1<<-c)-1,d>>=-c,c+=s;c>0;o=256*o+e[t+f],f+=h,c-=8);for(a=o&(1<<-c)-1,o>>=-c,c+=n;c>0;a=256*a+e[t+f],f+=h,c-=8);if(0===o)o=1-l;else{if(o===u)return a?0/0:1/0*(d?-1:1);a+=Math.pow(2,n),o-=l}return(d?-1:1)*a*Math.pow(2,o-n)},r.write=function(e,t,r,n,i,o){var a,s,u,l=8*o-i-1,c=(1<>1,h=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,d=n?0:o-1,p=n?1:-1,_=0>t||0===t&&0>1/t?1:0;for(t=Math.abs(t),isNaN(t)||1/0===t?(s=isNaN(t)?1:0,a=c):(a=Math.floor(Math.log(t)/Math.LN2),t*(u=Math.pow(2,-a))<1&&(a--,u*=2),t+=a+f>=1?h/u:h*Math.pow(2,1-f),t*u>=2&&(a++,u/=2),a+f>=c?(s=0,a=c):a+f>=1?(s=(t*u-1)*Math.pow(2,i),a+=f):(s=t*Math.pow(2,f-1)*Math.pow(2,i),a=0));i>=8;e[r+d]=255&s,d+=p,s/=256,i-=8);for(a=a<0;e[r+d]=255&a,d+=p,a/=256,l-=8);e[r+d-p]|=128*_}},{}],94:[function(e,t){t.exports="function"==typeof Object.create?function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}:function(e,t){e.super_=t;var r=function(){};r.prototype=t.prototype,e.prototype=new r,e.prototype.constructor=e}},{}],95:[function(e,t){function r(e){return!!e.constructor&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}function n(e){return"function"==typeof e.readFloatLE&&"function"==typeof e.slice&&r(e.slice(0,0))}t.exports=function(e){return null!=e&&(r(e)||n(e)||!!e._isBuffer)}},{}],96:[function(e,t){var r={}.toString;t.exports=Array.isArray||function(e){return"[object Array]"==r.call(e)}},{}],97:[function(e,t){"use strict";var r=e("./lib/js-yaml.js");t.exports=r},{"./lib/js-yaml.js":98}],98:[function(e,t){"use strict";function r(e){return function(){throw new Error("Function "+e+" is deprecated and cannot be used.")}}var n=e("./js-yaml/loader");t.exports.Type=e("./js-yaml/type"),t.exports.Schema=e("./js-yaml/schema"),t.exports.FAILSAFE_SCHEMA=e("./js-yaml/schema/failsafe"),t.exports.JSON_SCHEMA=e("./js-yaml/schema/json"),t.exports.CORE_SCHEMA=e("./js-yaml/schema/core"),t.exports.DEFAULT_SAFE_SCHEMA=e("./js-yaml/schema/default_safe"),t.exports.DEFAULT_FULL_SCHEMA=e("./js-yaml/schema/default_full"),t.exports.load=n.load,t.exports.loadAll=n.loadAll,t.exports.safeLoad=n.safeLoad,t.exports.safeLoadAll=n.safeLoadAll,t.exports.YAMLException=e("./js-yaml/exception"),t.exports.MINIMAL_SCHEMA=e("./js-yaml/schema/failsafe"),t.exports.SAFE_SCHEMA=e("./js-yaml/schema/default_safe"),t.exports.DEFAULT_SCHEMA=e("./js-yaml/schema/default_full"),t.exports.scan=r("scan"),t.exports.parse=r("parse"),t.exports.compose=r("compose"),t.exports.addConstructor=r("addConstructor")},{"./js-yaml/exception":100,"./js-yaml/loader":101,"./js-yaml/schema":103,"./js-yaml/schema/core":104,"./js-yaml/schema/default_full":105,"./js-yaml/schema/default_safe":106,"./js-yaml/schema/failsafe":107,"./js-yaml/schema/json":108,"./js-yaml/type":109}],99:[function(e,t){"use strict";function r(e){return"undefined"==typeof e||null===e}function n(e){return"object"==typeof e&&null!==e}function i(e){return Array.isArray(e)?e:r(e)?[]:[e]}function o(e,t){var r,n,i,o;if(t)for(o=Object.keys(t),r=0,n=o.length;n>r;r+=1)i=o[r],e[i]=t[i];return e}function a(e,t){var r,n="";for(r=0;t>r;r+=1)n+=e;return n}function s(e){return 0===e&&Number.NEGATIVE_INFINITY===1/e}t.exports.isNothing=r,t.exports.isObject=n,t.exports.toArray=i,t.exports.repeat=a,t.exports.isNegativeZero=s,t.exports.extend=o},{}],100:[function(e,t){"use strict";function r(e,t){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack||"",this.name="YAMLException",this.reason=e,this.mark=t,this.message=(this.reason||"(unknown reason)")+(this.mark?" "+this.mark.toString():"")}r.prototype=Object.create(Error.prototype),r.prototype.constructor=r,r.prototype.toString=function(e){var t=this.name+": ";return t+=this.reason||"(unknown reason)",!e&&this.mark&&(t+=" "+this.mark.toString()),t},t.exports=r},{}],101:[function(e,t){"use strict";function r(e){return 10===e||13===e}function n(e){return 9===e||32===e}function i(e){return 9===e||32===e||10===e||13===e}function o(e){return 44===e||91===e||93===e||123===e||125===e}function a(e){var t;return e>=48&&57>=e?e-48:(t=32|e,t>=97&&102>=t?t-97+10:-1)}function s(e){return 120===e?2:117===e?4:85===e?8:0}function u(e){return e>=48&&57>=e?e-48:-1}function l(e){return 48===e?"\x00":97===e?"":98===e?"\b":116===e?" ":9===e?" ":110===e?"\n":118===e?" ":102===e?"\f":114===e?"\r":101===e?"":32===e?" ":34===e?'"':47===e?"/":92===e?"\\":78===e?"…":95===e?" ":76===e?"\u2028":80===e?"\u2029":""}function c(e){return 65535>=e?String.fromCharCode(e):String.fromCharCode((e-65536>>10)+55296,(e-65536&1023)+56320)}function f(e,t){this.input=e,this.filename=t.filename||null,this.schema=t.schema||V,this.onWarning=t.onWarning||null,this.legacy=t.legacy||!1,this.json=t.json||!1,this.listener=t.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=e.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.documents=[]}function h(e,t){return new D(t,new B(e.filename,e.input,e.position,e.line,e.position-e.lineStart))}function d(e,t){throw h(e,t)}function p(e,t){e.onWarning&&e.onWarning.call(null,h(e,t))}function _(e,t,r,n){var i,o,a,s;if(r>t){if(s=e.input.slice(t,r),n)for(i=0,o=s.length;o>i;i+=1)a=s.charCodeAt(i),9===a||a>=32&&1114111>=a||d(e,"expected valid JSON character");else $.test(s)&&d(e,"the stream contains non-printable characters");e.result+=s}}function m(e,t,r,n){var i,o,a,s;for(U.isObject(r)||d(e,"cannot merge mappings; the provided source object is unacceptable"),i=Object.keys(r),a=0,s=i.length;s>a;a+=1)o=i[a],q.call(t,o)||(t[o]=r[o],n[o]=!0)}function g(e,t,r,n,i,o){var a,s;if(i=String(i),null===t&&(t={}),"tag:yaml.org,2002:merge"===n)if(Array.isArray(o))for(a=0,s=o.length;s>a;a+=1)m(e,t,o[a],r);else m(e,t,o,r);else e.json||q.call(r,i)||!q.call(t,i)||d(e,"duplicated mapping key"),t[i]=o,delete r[i];return t}function v(e){var t;t=e.input.charCodeAt(e.position),10===t?e.position++:13===t?(e.position++,10===e.input.charCodeAt(e.position)&&e.position++):d(e,"a line break is expected"),e.line+=1,e.lineStart=e.position}function y(e,t,i){for(var o=0,a=e.input.charCodeAt(e.position);0!==a;){for(;n(a);)a=e.input.charCodeAt(++e.position);if(t&&35===a)do a=e.input.charCodeAt(++e.position);while(10!==a&&13!==a&&0!==a);if(!r(a))break;for(v(e),a=e.input.charCodeAt(e.position),o++,e.lineIndent=0;32===a;)e.lineIndent++,a=e.input.charCodeAt(++e.position)}return-1!==i&&0!==o&&e.lineIndent1&&(e.result+=U.repeat("\n",t-1))}function w(e,t,a){var s,u,l,c,f,h,d,p,m,g=e.kind,v=e.result;if(m=e.input.charCodeAt(e.position),i(m)||o(m)||35===m||38===m||42===m||33===m||124===m||62===m||39===m||34===m||37===m||64===m||96===m)return!1;if((63===m||45===m)&&(u=e.input.charCodeAt(e.position+1),i(u)||a&&o(u)))return!1;for(e.kind="scalar",e.result="",l=c=e.position,f=!1;0!==m;){if(58===m){if(u=e.input.charCodeAt(e.position+1),i(u)||a&&o(u))break}else if(35===m){if(s=e.input.charCodeAt(e.position-1),i(s))break}else{if(e.position===e.lineStart&&b(e)||a&&o(m))break;if(r(m)){if(h=e.line,d=e.lineStart,p=e.lineIndent,y(e,!1,-1),e.lineIndent>=t){f=!0,m=e.input.charCodeAt(e.position);continue}e.position=c,e.line=h,e.lineStart=d,e.lineIndent=p;break}}f&&(_(e,l,c,!1),x(e,e.line-h),l=c=e.position,f=!1),n(m)||(c=e.position+1),m=e.input.charCodeAt(++e.position)}return _(e,l,c,!1),e.result?!0:(e.kind=g,e.result=v,!1)}function k(e,t){var n,i,o;if(n=e.input.charCodeAt(e.position),39!==n)return!1;for(e.kind="scalar",e.result="",e.position++,i=o=e.position;0!==(n=e.input.charCodeAt(e.position));)if(39===n){if(_(e,i,e.position,!0),n=e.input.charCodeAt(++e.position),39!==n)return!0;i=o=e.position,e.position++}else r(n)?(_(e,i,o,!0),x(e,y(e,!1,t)),i=o=e.position):e.position===e.lineStart&&b(e)?d(e,"unexpected end of the document within a single quoted scalar"):(e.position++,o=e.position);d(e,"unexpected end of the stream within a single quoted scalar")}function A(e,t){var n,i,o,u,l,f;if(f=e.input.charCodeAt(e.position),34!==f)return!1;for(e.kind="scalar",e.result="",e.position++,n=i=e.position;0!==(f=e.input.charCodeAt(e.position));){if(34===f)return _(e,n,e.position,!0),e.position++,!0;if(92===f){if(_(e,n,e.position,!0),f=e.input.charCodeAt(++e.position),r(f))y(e,!1,t);else if(256>f&&nt[f])e.result+=it[f],e.position++;else if((l=s(f))>0){for(o=l,u=0;o>0;o--)f=e.input.charCodeAt(++e.position),(l=a(f))>=0?u=(u<<4)+l:d(e,"expected hexadecimal character");e.result+=c(u),e.position++}else d(e,"unknown escape sequence");n=i=e.position}else r(f)?(_(e,n,i,!0),x(e,y(e,!1,t)),n=i=e.position):e.position===e.lineStart&&b(e)?d(e,"unexpected end of the document within a double quoted scalar"):(e.position++,i=e.position)}d(e,"unexpected end of the stream within a double quoted scalar")}function T(e,t){var r,n,o,a,s,u,l,c,f,h,p,_=!0,m=e.tag,v=e.anchor,b={};if(p=e.input.charCodeAt(e.position),91===p)a=93,l=!1,n=[];else{if(123!==p)return!1;a=125,l=!0,n={}}for(null!==e.anchor&&(e.anchorMap[e.anchor]=n),p=e.input.charCodeAt(++e.position);0!==p;){if(y(e,!0,t),p=e.input.charCodeAt(e.position),p===a)return e.position++,e.tag=m,e.anchor=v,e.kind=l?"mapping":"sequence",e.result=n,!0;_||d(e,"missed comma between flow collection entries"),f=c=h=null,s=u=!1,63===p&&(o=e.input.charCodeAt(e.position+1),i(o)&&(s=u=!0,e.position++,y(e,!0,t))),r=e.line,P(e,t,W,!1,!0),f=e.tag,c=e.result,y(e,!0,t),p=e.input.charCodeAt(e.position),!u&&e.line!==r||58!==p||(s=!0,p=e.input.charCodeAt(++e.position),y(e,!0,t),P(e,t,W,!1,!0),h=e.result),l?g(e,n,b,f,c,h):n.push(s?g(e,null,b,f,c,h):c),y(e,!0,t),p=e.input.charCodeAt(e.position),44===p?(_=!0,p=e.input.charCodeAt(++e.position)):_=!1}d(e,"unexpected end of the stream within a flow collection")}function E(e,t){var i,o,a,s,l=Y,c=!1,f=t,h=0,p=!1;if(s=e.input.charCodeAt(e.position),124===s)o=!1;else{if(62!==s)return!1;o=!0}for(e.kind="scalar",e.result="";0!==s;)if(s=e.input.charCodeAt(++e.position),43===s||45===s)Y===l?l=43===s?K:J:d(e,"repeat of a chomping mode identifier");else{if(!((a=u(s))>=0))break;0===a?d(e,"bad explicit indentation width of a block scalar; it cannot be less than one"):c?d(e,"repeat of an indentation width identifier"):(f=t+a-1,c=!0)}if(n(s)){do s=e.input.charCodeAt(++e.position);while(n(s));if(35===s)do s=e.input.charCodeAt(++e.position);while(!r(s)&&0!==s)}for(;0!==s;){for(v(e),e.lineIndent=0,s=e.input.charCodeAt(e.position);(!c||e.lineIndentf&&(f=e.lineIndent),r(s))h++;else{if(e.lineIndentt)&&0!==o)d(e,"bad indentation of a sequence entry");else if(e.lineIndentt)&&(P(e,t,X,!0,a)&&(v?_=e.result:m=e.result),v||(g(e,f,h,p,_,m),p=_=m=null),y(e,!0,-1),u=e.input.charCodeAt(e.position)),e.lineIndent>t&&0!==u)d(e,"bad indentation of a mapping entry");else if(e.lineIndentt?p=1:e.lineIndent===t?p=0:e.lineIndentt?p=1:e.lineIndent===t?p=0:e.lineIndentu;u+=1)if(c=e.implicitTypes[u],c.resolve(e.result)){e.result=c.construct(e.result),e.tag=c.tag,null!==e.anchor&&(e.anchorMap[e.anchor]=e.result);break}}else q.call(e.typeMap,e.tag)?(c=e.typeMap[e.tag],null!==e.result&&c.kind!==e.kind&&d(e,"unacceptable node kind for !<"+e.tag+'> tag; it should be "'+c.kind+'", not "'+e.kind+'"'),c.resolve(e.result)?(e.result=c.construct(e.result),null!==e.anchor&&(e.anchorMap[e.anchor]=e.result)):d(e,"cannot resolve a node with !<"+e.tag+"> explicit tag")):d(e,"unknown tag !<"+e.tag+">");return null!==e.listener&&e.listener("close",e),null!==e.tag||null!==e.anchor||m}function L(e){var t,o,a,s,u=e.position,l=!1;for(e.version=null,e.checkLineBreaks=e.legacy,e.tagMap={},e.anchorMap={};0!==(s=e.input.charCodeAt(e.position))&&(y(e,!0,-1),s=e.input.charCodeAt(e.position),!(e.lineIndent>0||37!==s));){for(l=!0,s=e.input.charCodeAt(++e.position),t=e.position;0!==s&&!i(s);)s=e.input.charCodeAt(++e.position);for(o=e.input.slice(t,e.position),a=[],o.length<1&&d(e,"directive name must not be less than one character in length");0!==s;){for(;n(s);)s=e.input.charCodeAt(++e.position);if(35===s){do s=e.input.charCodeAt(++e.position);while(0!==s&&!r(s));break}if(r(s))break;for(t=e.position;0!==s&&!i(s);)s=e.input.charCodeAt(++e.position);a.push(e.input.slice(t,e.position))}0!==s&&v(e),q.call(at,o)?at[o](e,o,a):p(e,'unknown document directive "'+o+'"')}return y(e,!0,-1),0===e.lineIndent&&45===e.input.charCodeAt(e.position)&&45===e.input.charCodeAt(e.position+1)&&45===e.input.charCodeAt(e.position+2)?(e.position+=3,y(e,!0,-1)):l&&d(e,"directives end mark is expected"),P(e,e.lineIndent-1,X,!1,!0),y(e,!0,-1),e.checkLineBreaks&&Q.test(e.input.slice(u,e.position))&&p(e,"non-ASCII line breaks are interpreted as content"),e.documents.push(e.result),e.position===e.lineStart&&b(e)?void(46===e.input.charCodeAt(e.position)&&(e.position+=3,y(e,!0,-1))):void(e.positionn;n+=1)t(o[n])}function I(e,t){var r=j(e,t);if(0===r.length)return void 0;if(1===r.length)return r[0];throw new D("expected a single document in the stream, but found more")}function C(e,t,r){N(e,t,U.extend({schema:G},r))}function F(e,t){return I(e,U.extend({schema:G},t))}for(var U=e("./common"),D=e("./exception"),B=e("./mark"),G=e("./schema/default_safe"),V=e("./schema/default_full"),q=Object.prototype.hasOwnProperty,W=1,Z=2,H=3,X=4,Y=1,J=2,K=3,$=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,Q=/[\x85\u2028\u2029]/,et=/[,\[\]\{\}]/,tt=/^(?:!|!!|![a-z\-]+!)$/i,rt=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i,nt=new Array(256),it=new Array(256),ot=0;256>ot;ot++)nt[ot]=l(ot)?1:0,it[ot]=l(ot);var at={YAML:function(e,t,r){var n,i,o;null!==e.version&&d(e,"duplication of %YAML directive"),1!==r.length&&d(e,"YAML directive accepts exactly one argument"),n=/^([0-9]+)\.([0-9]+)$/.exec(r[0]),null===n&&d(e,"ill-formed argument of the YAML directive"),i=parseInt(n[1],10),o=parseInt(n[2],10),1!==i&&d(e,"unacceptable YAML version of the document"),e.version=r[0],e.checkLineBreaks=2>o,1!==o&&2!==o&&p(e,"unsupported YAML version of the document")},TAG:function(e,t,r){var n,i;2!==r.length&&d(e,"TAG directive accepts exactly two arguments"),n=r[0],i=r[1],tt.test(n)||d(e,"ill-formed tag handle (first argument) of the TAG directive"),q.call(e.tagMap,n)&&d(e,'there is a previously declared suffix for "'+n+'" tag handle'),rt.test(i)||d(e,"ill-formed tag prefix (second argument) of the TAG directive"),e.tagMap[n]=i}};t.exports.loadAll=N,t.exports.load=I,t.exports.safeLoadAll=C,t.exports.safeLoad=F},{"./common":99,"./exception":100,"./mark":102,"./schema/default_full":105,"./schema/default_safe":106}],102:[function(e,t){"use strict"; function r(e,t,r,n,i){this.name=e,this.buffer=t,this.position=r,this.line=n,this.column=i}var n=e("./common");r.prototype.getSnippet=function(e,t){var r,i,o,a,s;if(!this.buffer)return null;for(e=e||4,t=t||75,r="",i=this.position;i>0&&-1==="\x00\r\n…\u2028\u2029".indexOf(this.buffer.charAt(i-1));)if(i-=1,this.position-i>t/2-1){r=" ... ",i+=5;break}for(o="",a=this.position;at/2-1){o=" ... ",a-=5;break}return s=this.buffer.slice(i,a),n.repeat(" ",e)+r+s+o+"\n"+n.repeat(" ",e+this.position-i+r.length)+"^"},r.prototype.toString=function(e){var t,r="";return this.name&&(r+='in "'+this.name+'" '),r+="at line "+(this.line+1)+", column "+(this.column+1),e||(t=this.getSnippet(),t&&(r+=":\n"+t)),r},t.exports=r},{"./common":99}],103:[function(e,t){"use strict";function r(e,t,n){var i=[];return e.include.forEach(function(e){n=r(e,t,n)}),e[t].forEach(function(e){n.forEach(function(t,r){t.tag===e.tag&&i.push(r)}),n.push(e)}),n.filter(function(e,t){return-1===i.indexOf(t)})}function n(){function e(e){n[e.tag]=e}var t,r,n={};for(t=0,r=arguments.length;r>t;t+=1)arguments[t].forEach(e);return n}function i(e){this.include=e.include||[],this.implicit=e.implicit||[],this.explicit=e.explicit||[],this.implicit.forEach(function(e){if(e.loadKind&&"scalar"!==e.loadKind)throw new a("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.")}),this.compiledImplicit=r(this,"implicit",[]),this.compiledExplicit=r(this,"explicit",[]),this.compiledTypeMap=n(this.compiledImplicit,this.compiledExplicit)}var o=e("./common"),a=e("./exception"),s=e("./type");i.DEFAULT=null,i.create=function(){var e,t;switch(arguments.length){case 1:e=i.DEFAULT,t=arguments[0];break;case 2:e=arguments[0],t=arguments[1];break;default:throw new a("Wrong number of arguments for Schema.create function")}if(e=o.toArray(e),t=o.toArray(t),!e.every(function(e){return e instanceof i}))throw new a("Specified list of super schemas (or a single Schema object) contains a non-Schema object.");if(!t.every(function(e){return e instanceof s}))throw new a("Specified list of YAML types (or a single Type object) contains a non-Type object.");return new i({include:e,explicit:t})},t.exports=i},{"./common":99,"./exception":100,"./type":109}],104:[function(e,t){"use strict";var r=e("../schema");t.exports=new r({include:[e("./json")]})},{"../schema":103,"./json":108}],105:[function(e,t){"use strict";var r=e("../schema");t.exports=r.DEFAULT=new r({include:[e("./default_safe")],explicit:[e("../type/js/undefined"),e("../type/js/regexp"),e("../type/js/function")]})},{"../schema":103,"../type/js/function":114,"../type/js/regexp":115,"../type/js/undefined":116,"./default_safe":106}],106:[function(e,t){"use strict";var r=e("../schema");t.exports=new r({include:[e("./core")],implicit:[e("../type/timestamp"),e("../type/merge")],explicit:[e("../type/binary"),e("../type/omap"),e("../type/pairs"),e("../type/set")]})},{"../schema":103,"../type/binary":110,"../type/merge":118,"../type/omap":120,"../type/pairs":121,"../type/set":123,"../type/timestamp":125,"./core":104}],107:[function(e,t){"use strict";var r=e("../schema");t.exports=new r({explicit:[e("../type/str"),e("../type/seq"),e("../type/map")]})},{"../schema":103,"../type/map":117,"../type/seq":122,"../type/str":124}],108:[function(e,t){"use strict";var r=e("../schema");t.exports=new r({include:[e("./failsafe")],implicit:[e("../type/null"),e("../type/bool"),e("../type/int"),e("../type/float")]})},{"../schema":103,"../type/bool":111,"../type/float":112,"../type/int":113,"../type/null":119,"./failsafe":107}],109:[function(e,t){"use strict";function r(e){var t={};return null!==e&&Object.keys(e).forEach(function(r){e[r].forEach(function(e){t[String(e)]=r})}),t}function n(e,t){if(t=t||{},Object.keys(t).forEach(function(t){if(-1===o.indexOf(t))throw new i('Unknown option "'+t+'" is met in definition of "'+e+'" YAML type.')}),this.tag=e,this.kind=t.kind||null,this.resolve=t.resolve||function(){return!0},this.construct=t.construct||function(e){return e},this.instanceOf=t.instanceOf||null,this.predicate=t.predicate||null,this.represent=t.represent||null,this.defaultStyle=t.defaultStyle||null,this.styleAliases=r(t.styleAliases||null),-1===a.indexOf(this.kind))throw new i('Unknown kind "'+this.kind+'" is specified for "'+e+'" YAML type.')}var i=e("./exception"),o=["kind","resolve","construct","instanceOf","predicate","represent","defaultStyle","styleAliases"],a=["scalar","sequence","mapping"];t.exports=n},{"./exception":100}],110:[function(e,t){"use strict";function r(e){if(null===e)return!1;var t,r,n=0,i=e.length,o=u;for(r=0;i>r;r++)if(t=o.indexOf(e.charAt(r)),!(t>64)){if(0>t)return!1;n+=6}return n%8===0}function n(e){var t,r,n=e.replace(/[\r\n=]/g,""),i=n.length,o=u,s=0,l=[];for(t=0;i>t;t++)t%4===0&&t&&(l.push(s>>16&255),l.push(s>>8&255),l.push(255&s)),s=s<<6|o.indexOf(n.charAt(t));return r=i%4*6,0===r?(l.push(s>>16&255),l.push(s>>8&255),l.push(255&s)):18===r?(l.push(s>>10&255),l.push(s>>2&255)):12===r&&l.push(s>>4&255),a?new a(l):l}function i(e){var t,r,n="",i=0,o=e.length,a=u;for(t=0;o>t;t++)t%3===0&&t&&(n+=a[i>>18&63],n+=a[i>>12&63],n+=a[i>>6&63],n+=a[63&i]),i=(i<<8)+e[t];return r=o%3,0===r?(n+=a[i>>18&63],n+=a[i>>12&63],n+=a[i>>6&63],n+=a[63&i]):2===r?(n+=a[i>>10&63],n+=a[i>>4&63],n+=a[i<<2&63],n+=a[64]):1===r&&(n+=a[i>>2&63],n+=a[i<<4&63],n+=a[64],n+=a[64]),n}function o(e){return a&&a.isBuffer(e)}var a=e("buffer").Buffer,s=e("../type"),u="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r";t.exports=new s("tag:yaml.org,2002:binary",{kind:"scalar",resolve:r,construct:n,predicate:o,represent:i})},{"../type":109,buffer:4}],111:[function(e,t){"use strict";function r(e){if(null===e)return!1;var t=e.length;return 4===t&&("true"===e||"True"===e||"TRUE"===e)||5===t&&("false"===e||"False"===e||"FALSE"===e)}function n(e){return"true"===e||"True"===e||"TRUE"===e}function i(e){return"[object Boolean]"===Object.prototype.toString.call(e)}var o=e("../type");t.exports=new o("tag:yaml.org,2002:bool",{kind:"scalar",resolve:r,construct:n,predicate:i,represent:{lowercase:function(e){return e?"true":"false"},uppercase:function(e){return e?"TRUE":"FALSE"},camelcase:function(e){return e?"True":"False"}},defaultStyle:"lowercase"})},{"../type":109}],112:[function(e,t){"use strict";function r(e){return null===e?!1:u.test(e)?!0:!1}function n(e){var t,r,n,i;return t=e.replace(/_/g,"").toLowerCase(),r="-"===t[0]?-1:1,i=[],"+-".indexOf(t[0])>=0&&(t=t.slice(1)),".inf"===t?1===r?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:".nan"===t?0/0:t.indexOf(":")>=0?(t.split(":").forEach(function(e){i.unshift(parseFloat(e,10))}),t=0,n=1,i.forEach(function(e){t+=e*n,n*=60}),r*t):r*parseFloat(t,10)}function i(e,t){var r;if(isNaN(e))switch(t){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===e)switch(t){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===e)switch(t){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(a.isNegativeZero(e))return"-0.0";return r=e.toString(10),l.test(r)?r.replace("e",".e"):r}function o(e){return"[object Number]"===Object.prototype.toString.call(e)&&(e%1!==0||a.isNegativeZero(e))}var a=e("../common"),s=e("../type"),u=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)\\.[0-9_]*(?:[eE][-+][0-9]+)?|\\.[0-9_]+(?:[eE][-+][0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$"),l=/^[-+]?[0-9]+e/;t.exports=new s("tag:yaml.org,2002:float",{kind:"scalar",resolve:r,construct:n,predicate:o,represent:i,defaultStyle:"lowercase"})},{"../common":99,"../type":109}],113:[function(e,t){"use strict";function r(e){return e>=48&&57>=e||e>=65&&70>=e||e>=97&&102>=e}function n(e){return e>=48&&55>=e}function i(e){return e>=48&&57>=e}function o(e){if(null===e)return!1;var t,o=e.length,a=0,s=!1;if(!o)return!1;if(t=e[a],("-"===t||"+"===t)&&(t=e[++a]),"0"===t){if(a+1===o)return!0;if(t=e[++a],"b"===t){for(a++;o>a;a++)if(t=e[a],"_"!==t){if("0"!==t&&"1"!==t)return!1;s=!0}return s}if("x"===t){for(a++;o>a;a++)if(t=e[a],"_"!==t){if(!r(e.charCodeAt(a)))return!1;s=!0}return s}for(;o>a;a++)if(t=e[a],"_"!==t){if(!n(e.charCodeAt(a)))return!1;s=!0}return s}for(;o>a;a++)if(t=e[a],"_"!==t){if(":"===t)break;if(!i(e.charCodeAt(a)))return!1;s=!0}return s?":"!==t?!0:/^(:[0-5]?[0-9])+$/.test(e.slice(a)):!1}function a(e){var t,r,n=e,i=1,o=[];return-1!==n.indexOf("_")&&(n=n.replace(/_/g,"")),t=n[0],("-"===t||"+"===t)&&("-"===t&&(i=-1),n=n.slice(1),t=n[0]),"0"===n?0:"0"===t?"b"===n[1]?i*parseInt(n.slice(2),2):"x"===n[1]?i*parseInt(n,16):i*parseInt(n,8):-1!==n.indexOf(":")?(n.split(":").forEach(function(e){o.unshift(parseInt(e,10))}),n=0,r=1,o.forEach(function(e){n+=e*r,r*=60}),i*n):i*parseInt(n,10)}function s(e){return"[object Number]"===Object.prototype.toString.call(e)&&e%1===0&&!u.isNegativeZero(e)}var u=e("../common"),l=e("../type");t.exports=new l("tag:yaml.org,2002:int",{kind:"scalar",resolve:o,construct:a,predicate:s,represent:{binary:function(e){return"0b"+e.toString(2)},octal:function(e){return"0"+e.toString(8)},decimal:function(e){return e.toString(10)},hexadecimal:function(e){return"0x"+e.toString(16).toUpperCase()}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}})},{"../common":99,"../type":109}],114:[function(e,t){"use strict";function r(e){if(null===e)return!1;try{var t="("+e+")",r=a.parse(t,{range:!0});return"Program"!==r.type||1!==r.body.length||"ExpressionStatement"!==r.body[0].type||"FunctionExpression"!==r.body[0].expression.type?!1:!0}catch(n){return!1}}function n(e){var t,r="("+e+")",n=a.parse(r,{range:!0}),i=[];if("Program"!==n.type||1!==n.body.length||"ExpressionStatement"!==n.body[0].type||"FunctionExpression"!==n.body[0].expression.type)throw new Error("Failed to resolve function");return n.body[0].expression.params.forEach(function(e){i.push(e.name)}),t=n.body[0].expression.body.range,new Function(i,r.slice(t[0]+1,t[1]-1))}function i(e){return e.toString()}function o(e){return"[object Function]"===Object.prototype.toString.call(e)}var a;try{var s=e;a=s("esprima")}catch(u){"undefined"!=typeof window&&(a=window.esprima)}var l=e("../../type");t.exports=new l("tag:yaml.org,2002:js/function",{kind:"scalar",resolve:r,construct:n,predicate:o,represent:i})},{"../../type":109}],115:[function(e,t){"use strict";function r(e){if(null===e)return!1;if(0===e.length)return!1;var t=e,r=/\/([gim]*)$/.exec(e),n="";if("/"===t[0]){if(r&&(n=r[1]),n.length>3)return!1;if("/"!==t[t.length-n.length-1])return!1}return!0}function n(e){var t=e,r=/\/([gim]*)$/.exec(e),n="";return"/"===t[0]&&(r&&(n=r[1]),t=t.slice(1,t.length-n.length-1)),new RegExp(t,n)}function i(e){var t="/"+e.source+"/";return e.global&&(t+="g"),e.multiline&&(t+="m"),e.ignoreCase&&(t+="i"),t}function o(e){return"[object RegExp]"===Object.prototype.toString.call(e)}var a=e("../../type");t.exports=new a("tag:yaml.org,2002:js/regexp",{kind:"scalar",resolve:r,construct:n,predicate:o,represent:i})},{"../../type":109}],116:[function(e,t){"use strict";function r(){return!0}function n(){return void 0}function i(){return""}function o(e){return"undefined"==typeof e}var a=e("../../type");t.exports=new a("tag:yaml.org,2002:js/undefined",{kind:"scalar",resolve:r,construct:n,predicate:o,represent:i})},{"../../type":109}],117:[function(e,t){"use strict";var r=e("../type");t.exports=new r("tag:yaml.org,2002:map",{kind:"mapping",construct:function(e){return null!==e?e:{}}})},{"../type":109}],118:[function(e,t){"use strict";function r(e){return"<<"===e||null===e}var n=e("../type");t.exports=new n("tag:yaml.org,2002:merge",{kind:"scalar",resolve:r})},{"../type":109}],119:[function(e,t){"use strict";function r(e){if(null===e)return!0;var t=e.length;return 1===t&&"~"===e||4===t&&("null"===e||"Null"===e||"NULL"===e)}function n(){return null}function i(e){return null===e}var o=e("../type");t.exports=new o("tag:yaml.org,2002:null",{kind:"scalar",resolve:r,construct:n,predicate:i,represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"}},defaultStyle:"lowercase"})},{"../type":109}],120:[function(e,t){"use strict";function r(e){if(null===e)return!0;var t,r,n,i,s,u=[],l=e;for(t=0,r=l.length;r>t;t+=1){if(n=l[t],s=!1,"[object Object]"!==a.call(n))return!1;for(i in n)if(o.call(n,i)){if(s)return!1;s=!0}if(!s)return!1;if(-1!==u.indexOf(i))return!1;u.push(i)}return!0}function n(e){return null!==e?e:[]}var i=e("../type"),o=Object.prototype.hasOwnProperty,a=Object.prototype.toString;t.exports=new i("tag:yaml.org,2002:omap",{kind:"sequence",resolve:r,construct:n})},{"../type":109}],121:[function(e,t){"use strict";function r(e){if(null===e)return!0;var t,r,n,i,a,s=e;for(a=new Array(s.length),t=0,r=s.length;r>t;t+=1){if(n=s[t],"[object Object]"!==o.call(n))return!1;if(i=Object.keys(n),1!==i.length)return!1;a[t]=[i[0],n[i[0]]]}return!0}function n(e){if(null===e)return[];var t,r,n,i,o,a=e;for(o=new Array(a.length),t=0,r=a.length;r>t;t+=1)n=a[t],i=Object.keys(n),o[t]=[i[0],n[i[0]]];return o}var i=e("../type"),o=Object.prototype.toString;t.exports=new i("tag:yaml.org,2002:pairs",{kind:"sequence",resolve:r,construct:n})},{"../type":109}],122:[function(e,t){"use strict";var r=e("../type");t.exports=new r("tag:yaml.org,2002:seq",{kind:"sequence",construct:function(e){return null!==e?e:[]}})},{"../type":109}],123:[function(e,t){"use strict";function r(e){if(null===e)return!0;var t,r=e;for(t in r)if(o.call(r,t)&&null!==r[t])return!1;return!0}function n(e){return null!==e?e:{}}var i=e("../type"),o=Object.prototype.hasOwnProperty;t.exports=new i("tag:yaml.org,2002:set",{kind:"mapping",resolve:r,construct:n})},{"../type":109}],124:[function(e,t){"use strict";var r=e("../type");t.exports=new r("tag:yaml.org,2002:str",{kind:"scalar",construct:function(e){return null!==e?e:""}})},{"../type":109}],125:[function(e,t){"use strict";function r(e){return null===e?!1:null===a.exec(e)?!1:!0}function n(e){var t,r,n,i,o,s,u,l,c,f,h=0,d=null;if(t=a.exec(e),null===t)throw new Error("Date resolve error");if(r=+t[1],n=+t[2]-1,i=+t[3],!t[4])return new Date(Date.UTC(r,n,i));if(o=+t[4],s=+t[5],u=+t[6],t[7]){for(h=t[7].slice(0,3);h.length<3;)h+="0";h=+h}return t[9]&&(l=+t[10],c=+(t[11]||0),d=6e4*(60*l+c),"-"===t[9]&&(d=-d)),f=new Date(Date.UTC(r,n,i,o,s,u,h)),d&&f.setTime(f.getTime()-d),f}function i(e){return e.toISOString()}var o=e("../type"),a=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?)?$");t.exports=new o("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:r,construct:n,instanceOf:Date,represent:i})},{"../type":109}],126:[function(e,t,r){"use strict";var n=(e("./utils"),e("./support")),i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";r.decode=function(e){var t,r,o,a,s,u,l,c=0,f=0;e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");var h=3*e.length/4;e.charAt(e.length-1)===i.charAt(64)&&h--,e.charAt(e.length-2)===i.charAt(64)&&h--;var d;for(d=n.uint8array?new Uint8Array(h):new Array(h);c>4,r=(15&s)<<4|u>>2,o=(3&u)<<6|l,d[f++]=t,64!==u&&(d[f++]=r),64!==l&&(d[f++]=o);return d}},{"./support":152,"./utils":154}],127:[function(e,t){"use strict";function r(e,t,r,n,i){this.compressedSize=e,this.uncompressedSize=t,this.crc32=r,this.compression=n,this.compressedContent=i}var n=e("./external"),i=e("./stream/DataWorker"),o=e("./stream/DataLengthProbe"),a=e("./stream/Crc32Probe"),o=e("./stream/DataLengthProbe");r.prototype={getContentWorker:function(){var e=new i(n.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new o("data_length")),t=this;return e.on("end",function(){if(this.streamInfo.data_length!==t.uncompressedSize)throw new Error("Bug : uncompressed data size mismatch")}),e},getCompressedWorker:function(){return new i(n.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize",this.compressedSize).withStreamInfo("uncompressedSize",this.uncompressedSize).withStreamInfo("crc32",this.crc32).withStreamInfo("compression",this.compression)}},r.createWorkerFrom=function(e,t,r){return e.pipe(new a).pipe(new o("uncompressedSize")).pipe(t.compressWorker(r)).pipe(new o("compressedSize")).withStreamInfo("compression",t)},t.exports=r},{"./external":131,"./stream/Crc32Probe":147,"./stream/DataLengthProbe":148,"./stream/DataWorker":149}],128:[function(e,t,r){"use strict";var n=e("./stream/GenericWorker");r.STORE={magic:"\x00\x00",uncompressWorker:function(){return new n("STORE decompression")}},r.DEFLATE=e("./flate")},{"./flate":132,"./stream/GenericWorker":150}],129:[function(e,t){"use strict";function r(){for(var e,t=[],r=0;256>r;r++){e=r;for(var n=0;8>n;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}function n(e,t,r,n){var i=a,o=n+r;e=-1^e;for(var s=n;o>s;s++)e=e>>>8^i[255&(e^t[s])];return-1^e}function i(e,t,r,n){var i=a,o=n+r;e=-1^e;for(var s=n;o>s;s++)e=e>>>8^i[255&(e^t.charCodeAt(s))];return-1^e}var o=e("./utils"),a=r();t.exports=function(e,t){if("undefined"==typeof e||!e.length)return 0;var r="string"!==o.getTypeOf(e);return r?n(0|t,e,e.length,0):i(0|t,e,e.length,0)}},{"./utils":154}],130:[function(e,t,r){"use strict";r.base64=!1,r.binary=!1,r.dir=!1,r.createFolders=!0,r.date=null,r.compression=null,r.compressionOptions=null,r.comment=null,r.unixPermissions=null,r.dosPermissions=null},{}],131:[function(e,t){"use strict";t.exports={Promise:window.Promise}},{}],132:[function(e,t,r){"use strict";function n(e,t){s.call(this,"FlateWorker/"+e),this._pako=new o[e]({raw:!0,level:t.level||-1}),this.meta={};var r=this;this._pako.onData=function(e){r.push({data:e,meta:r.meta})}}var i="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Uint32Array,o=e("pako"),a=e("./utils"),s=e("./stream/GenericWorker"),u=i?"uint8array":"array";r.magic="\b\x00",a.inherits(n,s),n.prototype.processChunk=function(e){this.meta=e.meta,this._pako.push(a.transformTo(u,e.data),!1)},n.prototype.flush=function(){s.prototype.flush.call(this),this._pako.push([],!0)},n.prototype.cleanUp=function(){s.prototype.cleanUp.call(this),this._pako=null},r.compressWorker=function(e){return new n("Deflate",e)},r.uncompressWorker=function(){return new n("Inflate",{})}},{"./stream/GenericWorker":150,"./utils":154,pako:165}],133:[function(e,t){"use strict";function r(){if(!(this instanceof r))return new r;if(arguments.length)throw new Error("The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide.");this.files={},this.comment=null,this.root="",this.clone=function(){var e=new r;for(var t in this)"function"!=typeof this[t]&&(e[t]=this[t]);return e}}r.prototype=e("./object"),r.prototype.loadAsync=e("./load"),r.support=e("./support"),r.defaults=e("./defaults"),r.loadAsync=function(e,t){return(new r).loadAsync(e,t)},r.external=e("./external"),t.exports=r},{"./defaults":130,"./external":131,"./load":134,"./object":138,"./support":152}],134:[function(e,t){"use strict";function r(e){return new i.Promise(function(t,r){var n=e.decompressed.getContentWorker().pipe(new s);n.on("error",function(e){r(e)}).on("end",function(){n.streamInfo.crc32!==e.decompressed.crc32?r(new Error("Corrupted zip : CRC32 mismatch")):t()}).resume()})}var n=e("./utils"),i=e("./external"),o=e("./utf8"),n=e("./utils"),a=e("./zipEntries"),s=e("./stream/Crc32Probe"),u=e("./nodejsUtils");t.exports=function(e,t){var s=this;return t=n.extend(t||{},{base64:!1,checkCRC32:!1,optimizedBinaryString:!1,createFolders:!1,decodeFileName:o.utf8decode}),u.isNode&&u.isStream(e)?i.Promise.reject(new Error("JSZip can't accept a stream when loading a zip file.")):n.prepareContent("the loaded zip file",e,!0,t.optimizedBinaryString,t.base64).then(function(e){var r=new a(t);return r.load(e),r}).then(function(e){var n=[i.Promise.resolve(e)],o=e.files;if(t.checkCRC32)for(var a=0;a0?e.substring(0,t):""},h=function(e){return"/"!==e.slice(-1)&&(e+="/"),e},d=function(e,t){return t="undefined"!=typeof t?t:o.createFolders,e=h(e),this.files[e]||c.call(this,e,null,{dir:!0,createFolders:t}),this.files[e]},p={load:function(){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},forEach:function(e){var t,r,n;for(t in this.files)this.files.hasOwnProperty(t)&&(n=this.files[t],r=t.slice(this.root.length,t.length),r&&t.slice(0,this.root.length)===this.root&&e(r,n))},filter:function(e){var t=[];return this.forEach(function(r,n){e(r,n)&&t.push(n)}),t},file:function(e,t,n){if(1===arguments.length){if(r(e)){var i=e;return this.filter(function(e,t){return!t.dir&&i.test(e)})}var o=this.files[this.root+e];return o&&!o.dir?o:null}return e=this.root+e,c.call(this,e,t,n),this},folder:function(e){if(!e)return this;if(r(e))return this.filter(function(t,r){return r.dir&&e.test(t)});var t=this.root+e,n=d.call(this,t),i=this.clone();return i.root=n.name,i}};t.exports=p},{"./compressedObject":127,"./defaults":130,"./nodejs/NodejsStreamInputAdapter":135,"./nodejsUtils":137,"./stream/GenericWorker":150,"./utils":154,"./zipObject":157}],139:[function(e,t){"use strict";function r(e){n.call(this,e);for(var t=0;t=0;--o)if(this.data[o]===t&&this.data[o+1]===r&&this.data[o+2]===n&&this.data[o+3]===i)return o-this.zero;return-1},r.prototype.readAndCheckSignature=function(e){var t=e.charCodeAt(0),r=e.charCodeAt(1),n=e.charCodeAt(2),i=e.charCodeAt(3),o=this.readData(4);return t===o[0]&&r===o[1]&&n===o[2]&&i===o[3]},r.prototype.readData=function(e){if(this.checkOffset(e),0===e)return[];var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=r},{"../utils":154,"./DataReader":140}],140:[function(e,t){"use strict";function r(e){this.data=e,this.length=e.length,this.index=0,this.zero=0}var n=e("../utils");r.prototype={checkOffset:function(e){this.checkIndex(this.index+e)},checkIndex:function(e){if(this.lengthe)throw new Error("End of data reached (data length = "+this.length+", asked index = "+e+"). Corrupted zip ?")},setIndex:function(e){this.checkIndex(e),this.index=e},skip:function(e){this.setIndex(this.index+e)},byteAt:function(){},readInt:function(e){var t,r=0;for(this.checkOffset(e),t=this.index+e-1;t>=this.index;t--)r=(r<<8)+this.byteAt(t);return this.index+=e,r},readString:function(e){return n.transformTo("string",this.readData(e))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var e=this.readInt(4);return new Date(Date.UTC((e>>25&127)+1980,(e>>21&15)-1,e>>16&31,e>>11&31,e>>5&63,(31&e)<<1))}},t.exports=r},{"../utils":154}],141:[function(e,t){"use strict";function r(e){n.call(this,e)}var n=e("./Uint8ArrayReader"),i=e("../utils");i.inherits(r,n),r.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=r},{"../utils":154,"./Uint8ArrayReader":143}],142:[function(e,t){"use strict";function r(e){n.call(this,e)}var n=e("./DataReader"),i=e("../utils");i.inherits(r,n),r.prototype.byteAt=function(e){return this.data.charCodeAt(this.zero+e)},r.prototype.lastIndexOfSignature=function(e){return this.data.lastIndexOf(e)-this.zero},r.prototype.readAndCheckSignature=function(e){var t=this.readData(4);return e===t},r.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=r},{"../utils":154,"./DataReader":140}],143:[function(e,t){"use strict";function r(e){n.call(this,e)}var n=e("./ArrayReader"),i=e("../utils");i.inherits(r,n),r.prototype.readData=function(e){if(this.checkOffset(e),0===e)return new Uint8Array(0);var t=this.data.subarray(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=r},{"../utils":154,"./ArrayReader":139}],144:[function(e,t){"use strict";var r=e("../utils"),n=e("../support"),i=e("./ArrayReader"),o=e("./StringReader"),a=e("./NodeBufferReader"),s=e("./Uint8ArrayReader");t.exports=function(e){var t=r.getTypeOf(e);return r.checkSupport(t),"string"!==t||n.uint8array?"nodebuffer"===t?new a(e):n.uint8array?new s(r.transformTo("uint8array",e)):new i(r.transformTo("array",e)):new o(e)}},{"../support":152,"../utils":154,"./ArrayReader":139,"./NodeBufferReader":141,"./StringReader":142,"./Uint8ArrayReader":143}],145:[function(e,t,r){"use strict";r.LOCAL_FILE_HEADER="PK",r.CENTRAL_FILE_HEADER="PK",r.CENTRAL_DIRECTORY_END="PK",r.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK",r.ZIP64_CENTRAL_DIRECTORY_END="PK",r.DATA_DESCRIPTOR="PK\b"},{}],146:[function(e,t){"use strict";function r(e){n.call(this,"ConvertWorker to "+e),this.destType=e}var n=e("./GenericWorker"),i=e("../utils");i.inherits(r,n),r.prototype.processChunk=function(e){this.push({data:i.transformTo(this.destType,e.data),meta:e.meta})},t.exports=r},{"../utils":154,"./GenericWorker":150}],147:[function(e,t){"use strict";function r(){n.call(this,"Crc32Probe")}var n=e("./GenericWorker"),i=e("../crc32"),o=e("../utils");o.inherits(r,n),r.prototype.processChunk=function(e){this.streamInfo.crc32=i(e.data,this.streamInfo.crc32||0),this.push(e)},t.exports=r},{"../crc32":129,"../utils":154,"./GenericWorker":150}],148:[function(e,t){"use strict";function r(e){i.call(this,"DataLengthProbe for "+e),this.propName=e,this.withStreamInfo(e,0)}var n=e("../utils"),i=e("./GenericWorker");n.inherits(r,i),r.prototype.processChunk=function(e){if(e){var t=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=t+e.data.length}i.prototype.processChunk.call(this,e)},t.exports=r},{"../utils":154,"./GenericWorker":150}],149:[function(e,t){"use strict";function r(e){i.call(this,"DataWorker");var t=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type="",this._tickScheduled=!1,e.then(function(e){t.dataIsReady=!0,t.data=e,t.max=e&&e.length||0,t.type=n.getTypeOf(e),t.isPaused||t._tickAndRepeat()},function(e){t.error(e)})}var n=e("../utils"),i=e("./GenericWorker"),o=16384;n.inherits(r,i),r.prototype.cleanUp=function(){i.prototype.cleanUp.call(this),this.data=null},r.prototype.resume=function(){return i.prototype.resume.call(this)?(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,n.delay(this._tickAndRepeat,[],this)),!0):!1},r.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(n.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},r.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var e=o,t=null,r=Math.min(this.max,this.index+e);if(this.index>=this.max)return this.end();switch(this.type){case"string":t=this.data.substring(this.index,r);break;case"uint8array":t=this.data.subarray(this.index,r);break;case"array":case"nodebuffer":t=this.data.slice(this.index,r)}return this.index=r,this.push({data:t,meta:{percent:this.max?this.index/this.max*100:0}})},t.exports=r},{"../utils":154,"./GenericWorker":150}],150:[function(e,t){"use strict";function r(e){this.name=e||"default",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}r.prototype={push:function(e){this.emit("data",e)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit("end"),this.cleanUp(),this.isFinished=!0}catch(e){this.emit("error",e)}return!0},error:function(e){return this.isFinished?!1:(this.isPaused?this.generatedError=e:(this.isFinished=!0,this.emit("error",e),this.previous&&this.previous.error(e),this.cleanUp()),!0)},on:function(e,t){return this._listeners[e].push(t),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(e,t){if(this._listeners[e])for(var r=0;r "+e:e}},t.exports=r},{}],151:[function(e,t){(function(r){"use strict";function n(e,t,r){switch(e){case"blob":return s.newBlob(s.transformTo("arraybuffer",t),r);case"base64":return c.encode(t);default:return s.transformTo(e,t)}}function i(e,t){var n,i=0,o=null,a=0;for(n=0;nc;c++)l[c]=c>=252?6:c>=248?5:c>=240?4:c>=224?3:c>=192?2:1;l[254]=l[254]=1;var f=function(e){var t,r,n,i,o,s=e.length,u=0;for(i=0;s>i;i++)r=e.charCodeAt(i),55296===(64512&r)&&s>i+1&&(n=e.charCodeAt(i+1),56320===(64512&n)&&(r=65536+(r-55296<<10)+(n-56320),i++)),u+=128>r?1:2048>r?2:65536>r?3:4;for(t=a.uint8array?new Uint8Array(u):new Array(u),o=0,i=0;u>o;i++)r=e.charCodeAt(i),55296===(64512&r)&&s>i+1&&(n=e.charCodeAt(i+1),56320===(64512&n)&&(r=65536+(r-55296<<10)+(n-56320),i++)),128>r?t[o++]=r:2048>r?(t[o++]=192|r>>>6,t[o++]=128|63&r):65536>r?(t[o++]=224|r>>>12,t[o++]=128|r>>>6&63,t[o++]=128|63&r):(t[o++]=240|r>>>18,t[o++]=128|r>>>12&63,t[o++]=128|r>>>6&63,t[o++]=128|63&r);return t},h=function(e,t){var r;for(t=t||e.length,t>e.length&&(t=e.length),r=t-1;r>=0&&128===(192&e[r]);)r--;return 0>r?t:0===r?t:r+l[e[r]]>t?r:t},d=function(e){var t,r,n,i,a=e.length,s=new Array(2*a);for(r=0,t=0;a>t;)if(n=e[t++],128>n)s[r++]=n;else if(i=l[n],i>4)s[r++]=65533,t+=i-1;else{for(n&=2===i?31:3===i?15:7;i>1&&a>t;)n=n<<6|63&e[t++],i--;i>1?s[r++]=65533:65536>n?s[r++]=n:(n-=65536,s[r++]=55296|n>>10&1023,s[r++]=56320|1023&n)}return s.length!==r&&(s.subarray?s=s.subarray(0,r):s.length=r),o.applyFromCharCode(s)};r.utf8encode=function(e){return a.nodebuffer?s.newBuffer(e,"utf-8"):f(e)},r.utf8decode=function(e){return a.nodebuffer?o.transformTo("nodebuffer",e).toString("utf-8"):(e=o.transformTo(a.uint8array?"uint8array":"array",e),d(e))},o.inherits(n,u),n.prototype.processChunk=function(e){var t=o.transformTo(a.uint8array?"uint8array":"array",e.data);if(this.leftOver&&this.leftOver.length){if(a.uint8array){var n=t;t=new Uint8Array(n.length+this.leftOver.length),t.set(this.leftOver,0),t.set(n,this.leftOver.length)}else t=this.leftOver.concat(t);this.leftOver=null}var i=h(t),s=t;i!==t.length&&(a.uint8array?(s=t.subarray(0,i),this.leftOver=t.subarray(i,t.length)):(s=t.slice(0,i),this.leftOver=t.slice(i,t.length))),this.push({data:r.utf8decode(s),meta:e.meta})},n.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:r.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},r.Utf8DecodeWorker=n,o.inherits(i,u),i.prototype.processChunk=function(e){this.push({data:r.utf8encode(e.data),meta:e.meta})},r.Utf8EncodeWorker=i},{"./nodejsUtils":137,"./stream/GenericWorker":150,"./support":152,"./utils":154}],154:[function(e,t,r){"use strict";function n(e){var t=null;return t=u.uint8array?new Uint8Array(e.length):new Array(e.length),o(e,t)}function i(e){return e}function o(e,t){for(var r=0;r1;)try{return d.stringifyByChunk(e,n,t)}catch(o){t=Math.floor(t/2)}return d.stringifyByChar(e)}function s(e,t){for(var r=0;r=o)return String.fromCharCode.apply(null,e);for(;o>i;)n.push("array"===t||"nodebuffer"===t?String.fromCharCode.apply(null,e.slice(i,Math.min(i+r,o))):String.fromCharCode.apply(null,e.subarray(i,Math.min(i+r,o)))),i+=r;return n.join("")},stringifyByChar:function(e){for(var t="",r=0;rt?"0":"")+t.toString(16).toUpperCase();return n},r.delay=function(e,t,r){f(function(){e.apply(r||null,t||[])})},r.inherits=function(e,t){var r=function(){};r.prototype=t.prototype,e.prototype=new r},r.extend=function(){var e,t,r={};for(e=0;ei;)e=this.reader.readInt(2),t=this.reader.readInt(4),r=this.reader.readData(t),this.zip64ExtensibleData[e]={id:e,length:t,value:r}},readBlockZip64EndOfCentralLocator:function(){if(this.diskWithZip64CentralDirStart=this.reader.readInt(4),this.relativeOffsetEndOfZip64CentralDir=this.reader.readInt(8),this.disksCount=this.reader.readInt(4),this.disksCount>1)throw new Error("Multi-volumes zip are not supported")},readLocalFiles:function(){var e,t;for(e=0;ee){var t=!this.isSignature(0,o.LOCAL_FILE_HEADER);throw new Error(t?"Can't find end of central directory : is this a zip file ? If it is, see http://stuk.github.io/jszip/documentation/howto/read_zip.html":"Corrupted zip : can't find end of central directory")}this.reader.setIndex(e);var r=e;if(this.checkSignature(o.CENTRAL_DIRECTORY_END),this.readBlockEndOfCentral(),this.diskNumber===i.MAX_VALUE_16BITS||this.diskWithCentralDirStart===i.MAX_VALUE_16BITS||this.centralDirRecordsOnThisDisk===i.MAX_VALUE_16BITS||this.centralDirRecords===i.MAX_VALUE_16BITS||this.centralDirSize===i.MAX_VALUE_32BITS||this.centralDirOffset===i.MAX_VALUE_32BITS){if(this.zip64=!0,e=this.reader.lastIndexOfSignature(o.ZIP64_CENTRAL_DIRECTORY_LOCATOR),0>e)throw new Error("Corrupted zip : can't find the ZIP64 end of central directory locator");if(this.reader.setIndex(e),this.checkSignature(o.ZIP64_CENTRAL_DIRECTORY_LOCATOR),this.readBlockZip64EndOfCentralLocator(),!this.isSignature(this.relativeOffsetEndOfZip64CentralDir,o.ZIP64_CENTRAL_DIRECTORY_END)&&(this.relativeOffsetEndOfZip64CentralDir=this.reader.lastIndexOfSignature(o.ZIP64_CENTRAL_DIRECTORY_END),this.relativeOffsetEndOfZip64CentralDir<0))throw new Error("Corrupted zip : can't find the ZIP64 end of central directory");this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir),this.checkSignature(o.ZIP64_CENTRAL_DIRECTORY_END),this.readBlockZip64EndOfCentral()}var n=this.centralDirOffset+this.centralDirSize;this.zip64&&(n+=20,n+=12+this.zip64EndOfCentralSize);var a=r-n;if(a>0)this.isSignature(r,o.CENTRAL_FILE_HEADER)||(this.reader.zero=a);else if(0>a)throw new Error("Corrupted zip: missing "+Math.abs(a)+" bytes.")},prepareReader:function(e){this.reader=n(e)},load:function(e){this.prepareReader(e),this.readEndOfCentral(),this.readCentralDir(),this.readLocalFiles()}},t.exports=r},{"./reader/readerFor":144,"./signature":145,"./support":152,"./utf8":153,"./utils":154,"./zipEntry":156}],156:[function(e,t){"use strict";function r(e,t){this.options=e,this.loadOptions=t}var n=e("./reader/readerFor"),i=e("./utils"),o=e("./compressedObject"),a=e("./crc32"),s=e("./utf8"),u=e("./compressions"),l=e("./support"),c=0,f=3,h=function(e){for(var t in u)if(u.hasOwnProperty(t)&&u[t].magic===e)return u[t];return null};r.prototype={isEncrypted:function(){return 1===(1&this.bitFlag)},useUTF8:function(){return 2048===(2048&this.bitFlag)},readLocalPart:function(e){var t,r;if(e.skip(22),this.fileNameLength=e.readInt(2),r=e.readInt(2),this.fileName=e.readData(this.fileNameLength),e.skip(r),-1===this.compressedSize||-1===this.uncompressedSize)throw new Error("Bug or corrupted zip : didn't get enough informations from the central directory (compressedSize === -1 || uncompressedSize === -1)");if(t=h(this.compressionMethod),null===t)throw new Error("Corrupted zip : compression "+i.pretty(this.compressionMethod)+" unknown (inner file : "+i.transformTo("string",this.fileName)+")");this.decompressed=new o(this.compressedSize,this.uncompressedSize,this.crc32,t,e.readData(this.compressedSize))},readCentralPart:function(e){this.versionMadeBy=e.readInt(2),e.skip(2),this.bitFlag=e.readInt(2),this.compressionMethod=e.readString(2),this.date=e.readDate(),this.crc32=e.readInt(4),this.compressedSize=e.readInt(4),this.uncompressedSize=e.readInt(4);var t=e.readInt(2);if(this.extraFieldsLength=e.readInt(2),this.fileCommentLength=e.readInt(2),this.diskNumberStart=e.readInt(2),this.internalFileAttributes=e.readInt(2),this.externalFileAttributes=e.readInt(4),this.localHeaderOffset=e.readInt(4),this.isEncrypted())throw new Error("Encrypted zip are not supported");e.skip(t),this.readExtraFields(e),this.parseZIP64ExtraField(e),this.fileComment=e.readData(this.fileCommentLength)},processAttributes:function(){this.unixPermissions=null,this.dosPermissions=null;var e=this.versionMadeBy>>8;this.dir=16&this.externalFileAttributes?!0:!1,e===c&&(this.dosPermissions=63&this.externalFileAttributes),e===f&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||"/"!==this.fileNameStr.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var e=n(this.extraFields[1].value);this.uncompressedSize===i.MAX_VALUE_32BITS&&(this.uncompressedSize=e.readInt(8)),this.compressedSize===i.MAX_VALUE_32BITS&&(this.compressedSize=e.readInt(8)),this.localHeaderOffset===i.MAX_VALUE_32BITS&&(this.localHeaderOffset=e.readInt(8)),this.diskNumberStart===i.MAX_VALUE_32BITS&&(this.diskNumberStart=e.readInt(4))}},readExtraFields:function(e){var t,r,n,i=e.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});e.index0)if(t.ended&&!i){var s=new Error("stream.push() after EOF");e.emit("error",s)}else if(t.endEmitted&&i){var s=new Error("stream.unshift() after end event");e.emit("error",s)}else{var u;!t.decoder||i||n||(r=t.decoder.write(r),u=!t.objectMode&&0===r.length),i||(t.reading=!1),u||(t.flowing&&0===t.length&&!t.sync?(e.emit("data",r),e.read(0)):(t.length+=t.objectMode?1:r.length,i?t.buffer.unshift(r):t.buffer.push(r),t.needReadable&&f(e))),d(e,t)}else i||(t.reading=!1);return a(t)}function a(e){return!e.ended&&(e.needReadable||e.length=N?e=N:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}function u(e,t){return 0===t.length&&t.ended?0:t.objectMode?0===e?0:1:null===e||isNaN(e)?t.flowing&&t.buffer.length?t.buffer[0].length:t.length:0>=e?0:(e>t.highWaterMark&&(t.highWaterMark=s(e)),e>t.length?t.ended?t.length:(t.needReadable=!0,0):e)}function l(e,t){var r=null;return S.isBuffer(t)||"string"==typeof t||null===t||void 0===t||e.objectMode||(r=new TypeError("Invalid non-string/buffer chunk")),r}function c(e,t){if(!t.ended){if(t.decoder){var r=t.decoder.end();r&&r.length&&(t.buffer.push(r),t.length+=t.objectMode?1:r.length)}t.ended=!0,f(e)}}function f(e){var t=e._readableState;t.needReadable=!1,t.emittedReadable||(P("emitReadable",t.flowing),t.emittedReadable=!0,t.sync?T(h,e):h(e))}function h(e){P("emit readable"),e.emit("readable"),y(e)}function d(e,t){t.readingMore||(t.readingMore=!0,T(p,e,t))}function p(e,t){for(var r=t.length;!t.reading&&!t.flowing&&!t.ended&&t.length=i)r=o?n.join(""):1===n.length?n[0]:S.concat(n,i),n.length=0;else if(el&&e>u;l++){var s=n[0],f=Math.min(e-u,s.length);o?r+=s.slice(0,f):s.copy(r,u,0,f),f0)throw new Error("endReadable called on non-empty stream");t.endEmitted||(t.ended=!0,T(w,t,e))}function w(e,t){e.endEmitted||0!==e.length||(e.endEmitted=!0,t.readable=!1,t.emit("end"))}function k(e,t){for(var r=0,n=e.length;n>r;r++)t(e[r],r)}function A(e,t){for(var r=0,n=e.length;n>r;r++)if(e[r]===t)return r;return-1}t.exports=i;var T=e("process-nextick-args"),E=e("isarray"),S=e("buffer").Buffer;i.ReadableState=n;var R,M=(e("events"),function(e,t){return e.listeners(t).length});!function(){try{R=e("stream")}catch(t){}finally{R||(R=e("events").EventEmitter)}}();var S=e("buffer").Buffer,O=e("core-util-is");O.inherits=e("inherits");var z=e("util"),P=void 0;P=z&&z.debuglog?z.debuglog("stream"):function(){};var j;O.inherits(i,R);var L,L;i.prototype.push=function(e,t){var r=this._readableState;return r.objectMode||"string"!=typeof e||(t=t||r.defaultEncoding,t!==r.encoding&&(e=new S(e,t),t="")),o(this,r,e,t,!1)},i.prototype.unshift=function(e){var t=this._readableState;return o(this,t,e,"",!0)},i.prototype.isPaused=function(){return this._readableState.flowing===!1},i.prototype.setEncoding=function(t){return j||(j=e("string_decoder/").StringDecoder),this._readableState.decoder=new j(t),this._readableState.encoding=t,this};var N=8388608;i.prototype.read=function(e){P("read",e);var t=this._readableState,r=e;if(("number"!=typeof e||e>0)&&(t.emittedReadable=!1),0===e&&t.needReadable&&(t.length>=t.highWaterMark||t.ended))return P("read: emitReadable",t.length,t.ended),0===t.length&&t.ended?x(this):f(this),null;if(e=u(e,t),0===e&&t.ended)return 0===t.length&&x(this),null;var n=t.needReadable;P("need readable",n),(0===t.length||t.length-e0?b(e,t):null,null===i&&(t.needReadable=!0,e=0),t.length-=e,0!==t.length||t.ended||(t.needReadable=!0),r!==e&&t.ended&&0===t.length&&x(this),null!==i&&this.emit("data",i),i},i.prototype._read=function(){this.emit("error",new Error("not implemented"))},i.prototype.pipe=function(e,t){function n(e){P("onunpipe"),e===f&&o()}function i(){P("onend"),e.end()}function o(){P("cleanup"),e.removeListener("close",u),e.removeListener("finish",l),e.removeListener("drain",m),e.removeListener("error",s),e.removeListener("unpipe",n),f.removeListener("end",i),f.removeListener("end",o),f.removeListener("data",a),g=!0,!h.awaitDrain||e._writableState&&!e._writableState.needDrain||m()}function a(t){P("ondata");var r=e.write(t);!1===r&&(1!==h.pipesCount||h.pipes[0]!==e||1!==f.listenerCount("data")||g||(P("false write response, pause",f._readableState.awaitDrain),f._readableState.awaitDrain++),f.pause())}function s(t){P("onerror",t),c(),e.removeListener("error",s),0===M(e,"error")&&e.emit("error",t)}function u(){e.removeListener("finish",l),c()}function l(){P("onfinish"),e.removeListener("close",u),c()}function c(){P("unpipe"),f.unpipe(e)}var f=this,h=this._readableState;switch(h.pipesCount){case 0:h.pipes=e;break;case 1:h.pipes=[h.pipes,e];break;default:h.pipes.push(e)}h.pipesCount+=1,P("pipe count=%d opts=%j",h.pipesCount,t);var d=(!t||t.end!==!1)&&e!==r.stdout&&e!==r.stderr,p=d?i:o;h.endEmitted?T(p):f.once("end",p),e.on("unpipe",n);var m=_(f);e.on("drain",m);var g=!1;return f.on("data",a),e._events&&e._events.error?E(e._events.error)?e._events.error.unshift(s):e._events.error=[s,e._events.error]:e.on("error",s),e.once("close",u),e.once("finish",l),e.emit("pipe",f),h.flowing||(P("pipe resume"),f.resume()),e},i.prototype.unpipe=function(e){var t=this._readableState;if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes?this:(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this),this);if(!e){var r=t.pipes,n=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var i=0;n>i;i++)r[i].emit("unpipe",this);return this}var o=A(t.pipes,e);return-1===o?this:(t.pipes.splice(o,1),t.pipesCount-=1,1===t.pipesCount&&(t.pipes=t.pipes[0]),e.emit("unpipe",this),this)},i.prototype.on=function(e,t){var r=R.prototype.on.call(this,e,t);if("data"===e&&!1!==this._readableState.flowing&&this.resume(),"readable"===e&&!this._readableState.endEmitted){var n=this._readableState;n.readableListening||(n.readableListening=!0,n.emittedReadable=!1,n.needReadable=!0,n.reading?n.length&&f(this,n):T(m,this))}return r},i.prototype.addListener=i.prototype.on,i.prototype.resume=function(){var e=this._readableState;return e.flowing||(P("resume"),e.flowing=!0,g(this,e)),this},i.prototype.pause=function(){return P("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(P("pause"),this._readableState.flowing=!1,this.emit("pause")),this},i.prototype.wrap=function(e){var t=this._readableState,r=!1,n=this;e.on("end",function(){if(P("wrapped end"),t.decoder&&!t.ended){var e=t.decoder.end();e&&e.length&&n.push(e)}n.push(null)}),e.on("data",function(i){if(P("wrapped data"),t.decoder&&(i=t.decoder.write(i)),(!t.objectMode||null!==i&&void 0!==i)&&(t.objectMode||i&&i.length)){var o=n.push(i);o||(r=!0,e.pause())}});for(var i in e)void 0===this[i]&&"function"==typeof e[i]&&(this[i]=function(t){return function(){return e[t].apply(e,arguments)}}(i));var o=["error","close","destroy","pause","resume"];return k(o,function(t){e.on(t,n.emit.bind(n,t))}),n._read=function(t){P("wrapped _read",t),r&&(r=!1,e.resume())},n},i._fromList=b}).call(this,e("_process"))},{"./_stream_duplex":158,_process:185,buffer:5,"core-util-is":70,events:73,inherits:94,isarray:96,"process-nextick-args":184,"string_decoder/":164,util:4}],161:[function(e,t){"use strict";function r(e){this.afterTransform=function(t,r){return n(e,t,r)},this.needTransform=!1,this.transforming=!1,this.writecb=null,this.writechunk=null,this.writeencoding=null}function n(e,t,r){var n=e._transformState;n.transforming=!1;var i=n.writecb;if(!i)return e.emit("error",new Error("no writecb in Transform class"));n.writechunk=null,n.writecb=null,null!==r&&void 0!==r&&e.push(r),i(t);var o=e._readableState;o.reading=!1,(o.needReadable||o.length-1?setImmediate:k,T=e("buffer").Buffer;a.WritableState=o;var E=e("core-util-is");E.inherits=e("inherits");var S,R={deprecate:e("util-deprecate")};!function(){try{S=e("stream")}catch(t){}finally{S||(S=e("events").EventEmitter)}}();var T=e("buffer").Buffer;E.inherits(a,S);var M;o.prototype.getBuffer=function(){for(var e=this.bufferedRequest,t=[];e;)t.push(e),e=e.next;return t},function(){try{Object.defineProperty(o.prototype,"buffer",{get:R.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.")})}catch(e){}}();var M;a.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe. Not readable."))},a.prototype.write=function(e,t,r){var i=this._writableState,o=!1;return"function"==typeof t&&(r=t,t=null),T.isBuffer(e)?t="buffer":t||(t=i.defaultEncoding),"function"!=typeof r&&(r=n),i.ended?s(this,r):u(this,i,e,r)&&(i.pendingcb++,o=c(this,i,e,t,r)),o},a.prototype.cork=function(){var e=this._writableState;e.corked++},a.prototype.uncork=function(){var e=this._writableState;e.corked&&(e.corked--,e.writing||e.corked||e.finished||e.bufferProcessing||!e.bufferedRequest||g(this,e))},a.prototype.setDefaultEncoding=function(e){if("string"==typeof e&&(e=e.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((e+"").toLowerCase())>-1))throw new TypeError("Unknown encoding: "+e);this._writableState.defaultEncoding=e},a.prototype._write=function(e,t,r){r(new Error("not implemented"))},a.prototype._writev=null,a.prototype.end=function(e,t,r){var n=this._writableState;"function"==typeof e?(r=e,e=null,t=null):"function"==typeof t&&(r=t,t=null),null!==e&&void 0!==e&&this.write(e,t),n.corked&&(n.corked=1,this.uncork()),n.ending||n.finished||x(this,n,r)}}).call(this,e("_process"))},{"./_stream_duplex":158,_process:185,buffer:5,"core-util-is":70,events:73,inherits:94,"process-nextick-args":184,"util-deprecate":188}],163:[function(e,t,r){var n=function(){try{return e("stream")}catch(t){}}();r=t.exports=e("./lib/_stream_readable.js"),r.Stream=n||r,r.Readable=r,r.Writable=e("./lib/_stream_writable.js"),r.Duplex=e("./lib/_stream_duplex.js"),r.Transform=e("./lib/_stream_transform.js"),r.PassThrough=e("./lib/_stream_passthrough.js")},{"./lib/_stream_duplex.js":158,"./lib/_stream_passthrough.js":159,"./lib/_stream_readable.js":160,"./lib/_stream_transform.js":161,"./lib/_stream_writable.js":162}],164:[function(e,t,r){function n(e){if(e&&!u(e))throw new Error("Unknown encoding: "+e)}function i(e){return e.toString(this.encoding)}function o(e){this.charReceived=e.length%2,this.charLength=this.charReceived?2:0}function a(e){this.charReceived=e.length%3,this.charLength=this.charReceived?3:0}var s=e("buffer").Buffer,u=s.isEncoding||function(e){switch(e&&e.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}},l=r.StringDecoder=function(e){switch(this.encoding=(e||"utf8").toLowerCase().replace(/[-_]/,""),n(e),this.encoding){case"utf8":this.surrogateSize=3;break;case"ucs2":case"utf16le":this.surrogateSize=2,this.detectIncompleteChar=o;break;case"base64":this.surrogateSize=3,this.detectIncompleteChar=a;break;default:return void(this.write=i)}this.charBuffer=new s(6),this.charReceived=0,this.charLength=0};l.prototype.write=function(e){for(var t="";this.charLength;){var r=e.length>=this.charLength-this.charReceived?this.charLength-this.charReceived:e.length;if(e.copy(this.charBuffer,this.charReceived,0,r),this.charReceived+=r,this.charReceived=55296&&56319>=n)){if(this.charReceived=this.charLength=0,0===e.length)return t;break}this.charLength+=this.surrogateSize,t=""}this.detectIncompleteChar(e);var i=e.length;this.charLength&&(e.copy(this.charBuffer,0,e.length-this.charReceived,i),i-=this.charReceived),t+=e.toString(this.encoding,0,i);var i=t.length-1,n=t.charCodeAt(i);if(n>=55296&&56319>=n){var o=this.surrogateSize;return this.charLength+=o,this.charReceived+=o,this.charBuffer.copy(this.charBuffer,o,0,o),e.copy(this.charBuffer,0,0,o),t.substring(0,i)}return t},l.prototype.detectIncompleteChar=function(e){for(var t=e.length>=3?3:e.length;t>0;t--){var r=e[e.length-t];if(1==t&&r>>5==6){this.charLength=2;break}if(2>=t&&r>>4==14){this.charLength=3;break}if(3>=t&&r>>3==30){this.charLength=4;break}}this.charReceived=t},l.prototype.end=function(e){var t="";if(e&&e.length&&(t=this.write(e)),this.charReceived){var r=this.charReceived,n=this.charBuffer,i=this.encoding;t+=n.slice(0,r).toString(i)}return t}},{buffer:5}],165:[function(e,t){"use strict";var r=e("./lib/utils/common").assign,n=e("./lib/deflate"),i=e("./lib/inflate"),o=e("./lib/zlib/constants"),a={};r(a,n,i,o),t.exports=a},{"./lib/deflate":166,"./lib/inflate":167,"./lib/utils/common":168,"./lib/zlib/constants":171}],166:[function(e,t,r){"use strict";function n(e){if(!(this instanceof n))return new n(e);this.options=u.assign({level:v,method:b,chunkSize:16384,windowBits:15,memLevel:8,strategy:y,to:""},e||{});var t=this.options;t.raw&&t.windowBits>0?t.windowBits=-t.windowBits:t.gzip&&t.windowBits>0&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new f,this.strm.avail_out=0;var r=s.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(r!==_)throw new Error(c[r]);if(t.header&&s.deflateSetHeader(this.strm,t.header),t.dictionary){var i;if(i="string"==typeof t.dictionary?l.string2buf(t.dictionary):"[object ArrayBuffer]"===h.call(t.dictionary)?new Uint8Array(t.dictionary):t.dictionary,r=s.deflateSetDictionary(this.strm,i),r!==_)throw new Error(c[r]);this._dict_set=!0}}function i(e,t){var r=new n(t);if(r.push(e,!0),r.err)throw r.msg||c[r.err];return r.result}function o(e,t){return t=t||{},t.raw=!0,i(e,t)}function a(e,t){return t=t||{},t.gzip=!0,i(e,t)}var s=e("./zlib/deflate"),u=e("./utils/common"),l=e("./utils/strings"),c=e("./zlib/messages"),f=e("./zlib/zstream"),h=Object.prototype.toString,d=0,p=4,_=0,m=1,g=2,v=-1,y=0,b=8;n.prototype.push=function(e,t){var r,n,i=this.strm,o=this.options.chunkSize;if(this.ended)return!1;n=t===~~t?t:t===!0?p:d,i.input="string"==typeof e?l.string2buf(e):"[object ArrayBuffer]"===h.call(e)?new Uint8Array(e):e,i.next_in=0,i.avail_in=i.input.length;do{if(0===i.avail_out&&(i.output=new u.Buf8(o),i.next_out=0,i.avail_out=o),r=s.deflate(i,n),r!==m&&r!==_)return this.onEnd(r),this.ended=!0,!1;(0===i.avail_out||0===i.avail_in&&(n===p||n===g))&&this.onData("string"===this.options.to?l.buf2binstring(u.shrinkBuf(i.output,i.next_out)):u.shrinkBuf(i.output,i.next_out))}while((i.avail_in>0||0===i.avail_out)&&r!==m);return n===p?(r=s.deflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===_):n===g?(this.onEnd(_),i.avail_out=0,!0):!0},n.prototype.onData=function(e){this.chunks.push(e)},n.prototype.onEnd=function(e){e===_&&(this.result="string"===this.options.to?this.chunks.join(""):u.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},r.Deflate=n,r.deflate=i,r.deflateRaw=o,r.gzip=a},{"./utils/common":168,"./utils/strings":169,"./zlib/deflate":173,"./zlib/messages":178,"./zlib/zstream":180}],167:[function(e,t,r){"use strict";function n(e){if(!(this instanceof n))return new n(e);this.options=s.assign({chunkSize:16384,windowBits:0,to:""},e||{});var t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),!(t.windowBits>=0&&t.windowBits<16)||e&&e.windowBits||(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&0===(15&t.windowBits)&&(t.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new f,this.strm.avail_out=0;var r=a.inflateInit2(this.strm,t.windowBits);if(r!==l.Z_OK)throw new Error(c[r]);this.header=new h,a.inflateGetHeader(this.strm,this.header)}function i(e,t){var r=new n(t);if(r.push(e,!0),r.err)throw r.msg||c[r.err];return r.result}function o(e,t){return t=t||{},t.raw=!0,i(e,t)}var a=e("./zlib/inflate"),s=e("./utils/common"),u=e("./utils/strings"),l=e("./zlib/constants"),c=e("./zlib/messages"),f=e("./zlib/zstream"),h=e("./zlib/gzheader"),d=Object.prototype.toString;n.prototype.push=function(e,t){var r,n,i,o,c,f,h=this.strm,p=this.options.chunkSize,_=this.options.dictionary,m=!1;if(this.ended)return!1;n=t===~~t?t:t===!0?l.Z_FINISH:l.Z_NO_FLUSH,h.input="string"==typeof e?u.binstring2buf(e):"[object ArrayBuffer]"===d.call(e)?new Uint8Array(e):e,h.next_in=0,h.avail_in=h.input.length;do{if(0===h.avail_out&&(h.output=new s.Buf8(p),h.next_out=0,h.avail_out=p),r=a.inflate(h,l.Z_NO_FLUSH),r===l.Z_NEED_DICT&&_&&(f="string"==typeof _?u.string2buf(_):"[object ArrayBuffer]"===d.call(_)?new Uint8Array(_):_,r=a.inflateSetDictionary(this.strm,f)),r===l.Z_BUF_ERROR&&m===!0&&(r=l.Z_OK,m=!1),r!==l.Z_STREAM_END&&r!==l.Z_OK)return this.onEnd(r),this.ended=!0,!1;h.next_out&&(0===h.avail_out||r===l.Z_STREAM_END||0===h.avail_in&&(n===l.Z_FINISH||n===l.Z_SYNC_FLUSH))&&("string"===this.options.to?(i=u.utf8border(h.output,h.next_out),o=h.next_out-i,c=u.buf2string(h.output,i),h.next_out=o,h.avail_out=p-o,o&&s.arraySet(h.output,h.output,i,o,0),this.onData(c)):this.onData(s.shrinkBuf(h.output,h.next_out))),0===h.avail_in&&0===h.avail_out&&(m=!0)}while((h.avail_in>0||0===h.avail_out)&&r!==l.Z_STREAM_END);return r===l.Z_STREAM_END&&(n=l.Z_FINISH),n===l.Z_FINISH?(r=a.inflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===l.Z_OK):n===l.Z_SYNC_FLUSH?(this.onEnd(l.Z_OK),h.avail_out=0,!0):!0},n.prototype.onData=function(e){this.chunks.push(e)},n.prototype.onEnd=function(e){e===l.Z_OK&&(this.result="string"===this.options.to?this.chunks.join(""):s.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},r.Inflate=n,r.inflate=i,r.inflateRaw=o,r.ungzip=i},{"./utils/common":168,"./utils/strings":169,"./zlib/constants":171,"./zlib/gzheader":174,"./zlib/inflate":176,"./zlib/messages":178,"./zlib/zstream":180}],168:[function(e,t,r){"use strict";var n="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Int32Array;r.assign=function(e){for(var t=Array.prototype.slice.call(arguments,1);t.length;){var r=t.shift();if(r){if("object"!=typeof r)throw new TypeError(r+"must be non-object");for(var n in r)r.hasOwnProperty(n)&&(e[n]=r[n])}}return e},r.shrinkBuf=function(e,t){return e.length===t?e:e.subarray?e.subarray(0,t):(e.length=t,e)};var i={arraySet:function(e,t,r,n,i){if(t.subarray&&e.subarray)return void e.set(t.subarray(r,r+n),i);for(var o=0;n>o;o++)e[i+o]=t[r+o]},flattenChunks:function(e){var t,r,n,i,o,a;for(n=0,t=0,r=e.length;r>t;t++)n+=e[t].length;for(a=new Uint8Array(n),i=0,t=0,r=e.length;r>t;t++)o=e[t],a.set(o,i),i+=o.length;return a}},o={arraySet:function(e,t,r,n,i){for(var o=0;n>o;o++)e[i+o]=t[r+o]},flattenChunks:function(e){return[].concat.apply([],e)}};r.setTyped=function(e){e?(r.Buf8=Uint8Array,r.Buf16=Uint16Array,r.Buf32=Int32Array,r.assign(r,i)):(r.Buf8=Array,r.Buf16=Array,r.Buf32=Array,r.assign(r,o))},r.setTyped(n)},{}],169:[function(e,t,r){"use strict";function n(e,t){if(65537>t&&(e.subarray&&a||!e.subarray&&o))return String.fromCharCode.apply(null,i.shrinkBuf(e,t));for(var r="",n=0;t>n;n++)r+=String.fromCharCode(e[n]);return r}var i=e("./common"),o=!0,a=!0;try{String.fromCharCode.apply(null,[0])}catch(s){o=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(s){a=!1}for(var u=new i.Buf8(256),l=0;256>l;l++)u[l]=l>=252?6:l>=248?5:l>=240?4:l>=224?3:l>=192?2:1;u[254]=u[254]=1,r.string2buf=function(e){var t,r,n,o,a,s=e.length,u=0;for(o=0;s>o;o++)r=e.charCodeAt(o),55296===(64512&r)&&s>o+1&&(n=e.charCodeAt(o+1),56320===(64512&n)&&(r=65536+(r-55296<<10)+(n-56320),o++)),u+=128>r?1:2048>r?2:65536>r?3:4;for(t=new i.Buf8(u),a=0,o=0;u>a;o++)r=e.charCodeAt(o),55296===(64512&r)&&s>o+1&&(n=e.charCodeAt(o+1),56320===(64512&n)&&(r=65536+(r-55296<<10)+(n-56320),o++)),128>r?t[a++]=r:2048>r?(t[a++]=192|r>>>6,t[a++]=128|63&r):65536>r?(t[a++]=224|r>>>12,t[a++]=128|r>>>6&63,t[a++]=128|63&r):(t[a++]=240|r>>>18,t[a++]=128|r>>>12&63,t[a++]=128|r>>>6&63,t[a++]=128|63&r);return t},r.buf2binstring=function(e){return n(e,e.length)},r.binstring2buf=function(e){for(var t=new i.Buf8(e.length),r=0,n=t.length;n>r;r++)t[r]=e.charCodeAt(r);return t},r.buf2string=function(e,t){var r,i,o,a,s=t||e.length,l=new Array(2*s);for(i=0,r=0;s>r;)if(o=e[r++],128>o)l[i++]=o;else if(a=u[o],a>4)l[i++]=65533,r+=a-1;else{for(o&=2===a?31:3===a?15:7;a>1&&s>r;)o=o<<6|63&e[r++],a--;a>1?l[i++]=65533:65536>o?l[i++]=o:(o-=65536,l[i++]=55296|o>>10&1023,l[i++]=56320|1023&o)}return n(l,i)},r.utf8border=function(e,t){var r;for(t=t||e.length,t>e.length&&(t=e.length),r=t-1;r>=0&&128===(192&e[r]);)r--;return 0>r?t:0===r?t:r+u[e[r]]>t?r:t}},{"./common":168}],170:[function(e,t){"use strict";function r(e,t,r,n){for(var i=65535&e|0,o=e>>>16&65535|0,a=0;0!==r;){a=r>2e3?2e3:r,r-=a;do i=i+t[n++]|0,o=o+i|0;while(--a);i%=65521,o%=65521}return i|o<<16|0}t.exports=r},{}],171:[function(e,t){"use strict";t.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],172:[function(e,t){"use strict";function r(){for(var e,t=[],r=0;256>r;r++){e=r;for(var n=0;8>n;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}function n(e,t,r,n){var o=i,a=n+r;e^=-1;for(var s=n;a>s;s++)e=e>>>8^o[255&(e^t[s])];return-1^e}var i=r();t.exports=n},{}],173:[function(e,t,r){"use strict";function n(e,t){return e.msg=L[t],t}function i(e){return(e<<1)-(e>4?9:0)}function o(e){for(var t=e.length;--t>=0;)e[t]=0}function a(e){var t=e.state,r=t.pending;r>e.avail_out&&(r=e.avail_out),0!==r&&(O.arraySet(e.output,t.pending_buf,t.pending_out,r,e.next_out),e.next_out+=r,t.pending_out+=r,e.total_out+=r,e.avail_out-=r,t.pending-=r,0===t.pending&&(t.pending_out=0))}function s(e,t){z._tr_flush_block(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,a(e.strm)}function u(e,t){e.pending_buf[e.pending++]=t}function l(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function c(e,t,r,n){var i=e.avail_in;return i>n&&(i=n),0===i?0:(e.avail_in-=i,O.arraySet(t,e.input,e.next_in,i,r),1===e.state.wrap?e.adler=P(e.adler,t,i,r):2===e.state.wrap&&(e.adler=j(e.adler,t,i,r)),e.next_in+=i,e.total_in+=i,i)}function f(e,t){var r,n,i=e.max_chain_length,o=e.strstart,a=e.prev_length,s=e.nice_match,u=e.strstart>e.w_size-ft?e.strstart-(e.w_size-ft):0,l=e.window,c=e.w_mask,f=e.prev,h=e.strstart+ct,d=l[o+a-1],p=l[o+a];e.prev_length>=e.good_match&&(i>>=2),s>e.lookahead&&(s=e.lookahead);do if(r=t,l[r+a]===p&&l[r+a-1]===d&&l[r]===l[o]&&l[++r]===l[o+1]){o+=2,r++;do;while(l[++o]===l[++r]&&l[++o]===l[++r]&&l[++o]===l[++r]&&l[++o]===l[++r]&&l[++o]===l[++r]&&l[++o]===l[++r]&&l[++o]===l[++r]&&l[++o]===l[++r]&&h>o);if(n=ct-(h-o),o=h-ct,n>a){if(e.match_start=t,a=n,n>=s)break;d=l[o+a-1],p=l[o+a]}}while((t=f[t&c])>u&&0!==--i);return a<=e.lookahead?a:e.lookahead}function h(e){var t,r,n,i,o,a=e.w_size;do{if(i=e.window_size-e.lookahead-e.strstart,e.strstart>=a+(a-ft)){O.arraySet(e.window,e.window,a,a,0),e.match_start-=a,e.strstart-=a,e.block_start-=a,r=e.hash_size,t=r;do n=e.head[--t],e.head[t]=n>=a?n-a:0;while(--r);r=a,t=r;do n=e.prev[--t],e.prev[t]=n>=a?n-a:0;while(--r);i+=a}if(0===e.strm.avail_in)break;if(r=c(e.strm,e.window,e.strstart+e.lookahead,i),e.lookahead+=r,e.lookahead+e.insert>=lt)for(o=e.strstart-e.insert,e.ins_h=e.window[o],e.ins_h=(e.ins_h<e.pending_buf_size-5&&(r=e.pending_buf_size-5);;){if(e.lookahead<=1){if(h(e),0===e.lookahead&&t===N)return bt;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var n=e.block_start+r;if((0===e.strstart||e.strstart>=n)&&(e.lookahead=e.strstart-n,e.strstart=n,s(e,!1),0===e.strm.avail_out))return bt;if(e.strstart-e.block_start>=e.w_size-ft&&(s(e,!1),0===e.strm.avail_out))return bt}return e.insert=0,t===F?(s(e,!0),0===e.strm.avail_out?wt:kt):e.strstart>e.block_start&&(s(e,!1),0===e.strm.avail_out)?bt:bt}function p(e,t){for(var r,n;;){if(e.lookahead=lt&&(e.ins_h=(e.ins_h<=lt)if(n=z._tr_tally(e,e.strstart-e.match_start,e.match_length-lt),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=lt){e.match_length--;do e.strstart++,e.ins_h=(e.ins_h<=lt&&(e.ins_h=(e.ins_h<4096)&&(e.match_length=lt-1)),e.prev_length>=lt&&e.match_length<=e.prev_length){i=e.strstart+e.lookahead-lt,n=z._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-lt),e.lookahead-=e.prev_length-1,e.prev_length-=2;do++e.strstart<=i&&(e.ins_h=(e.ins_h<=lt&&e.strstart>0&&(i=e.strstart-1,n=a[i],n===a[++i]&&n===a[++i]&&n===a[++i])){o=e.strstart+ct;do;while(n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&o>i);e.match_length=ct-(o-i),e.match_length>e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=lt?(r=z._tr_tally(e,1,e.match_length-lt),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(r=z._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),r&&(s(e,!1),0===e.strm.avail_out))return bt}return e.insert=0,t===F?(s(e,!0),0===e.strm.avail_out?wt:kt):e.last_lit&&(s(e,!1),0===e.strm.avail_out)?bt:xt}function g(e,t){for(var r;;){if(0===e.lookahead&&(h(e),0===e.lookahead)){if(t===N)return bt;break}if(e.match_length=0,r=z._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,r&&(s(e,!1),0===e.strm.avail_out))return bt}return e.insert=0,t===F?(s(e,!0),0===e.strm.avail_out?wt:kt):e.last_lit&&(s(e,!1),0===e.strm.avail_out)?bt:xt}function v(e,t,r,n,i){this.good_length=e,this.max_lazy=t,this.nice_length=r,this.max_chain=n,this.func=i}function y(e){e.window_size=2*e.w_size,o(e.head),e.max_lazy_match=M[e.level].max_lazy,e.good_match=M[e.level].good_length,e.nice_match=M[e.level].nice_length,e.max_chain_length=M[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=lt-1,e.match_available=0,e.ins_h=0}function b(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=$,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new O.Buf16(2*st),this.dyn_dtree=new O.Buf16(2*(2*ot+1)),this.bl_tree=new O.Buf16(2*(2*at+1)),o(this.dyn_ltree),o(this.dyn_dtree),o(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new O.Buf16(ut+1),this.heap=new O.Buf16(2*it+1),o(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new O.Buf16(2*it+1),o(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function x(e){var t;return e&&e.state?(e.total_in=e.total_out=0,e.data_type=K,t=e.state,t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=t.wrap?dt:vt,e.adler=2===t.wrap?0:1,t.last_flush=N,z._tr_init(t),D):n(e,G)}function w(e){var t=x(e);return t===D&&y(e.state),t}function k(e,t){return e&&e.state?2!==e.state.wrap?G:(e.state.gzhead=t,D):G}function A(e,t,r,i,o,a){if(!e)return G;var s=1;if(t===W&&(t=6),0>i?(s=0,i=-i):i>15&&(s=2,i-=16),1>o||o>Q||r!==$||8>i||i>15||0>t||t>9||0>a||a>Y)return n(e,G);8===i&&(i=9);var u=new b;return e.state=u,u.strm=e,u.wrap=s,u.gzhead=null,u.w_bits=i,u.w_size=1<U||0>t)return e?n(e,G):G;if(s=e.state,!e.output||!e.input&&0!==e.avail_in||s.status===yt&&t!==F)return n(e,0===e.avail_out?q:G);if(s.strm=e,r=s.last_flush,s.last_flush=t,s.status===dt)if(2===s.wrap)e.adler=0,u(s,31),u(s,139),u(s,8),s.gzhead?(u(s,(s.gzhead.text?1:0)+(s.gzhead.hcrc?2:0)+(s.gzhead.extra?4:0)+(s.gzhead.name?8:0)+(s.gzhead.comment?16:0)),u(s,255&s.gzhead.time),u(s,s.gzhead.time>>8&255),u(s,s.gzhead.time>>16&255),u(s,s.gzhead.time>>24&255),u(s,9===s.level?2:s.strategy>=H||s.level<2?4:0),u(s,255&s.gzhead.os),s.gzhead.extra&&s.gzhead.extra.length&&(u(s,255&s.gzhead.extra.length),u(s,s.gzhead.extra.length>>8&255)),s.gzhead.hcrc&&(e.adler=j(e.adler,s.pending_buf,s.pending,0)),s.gzindex=0,s.status=pt):(u(s,0),u(s,0),u(s,0),u(s,0),u(s,0),u(s,9===s.level?2:s.strategy>=H||s.level<2?4:0),u(s,At),s.status=vt);else{var h=$+(s.w_bits-8<<4)<<8,d=-1;d=s.strategy>=H||s.level<2?0:s.level<6?1:6===s.level?2:3,h|=d<<6,0!==s.strstart&&(h|=ht),h+=31-h%31,s.status=vt,l(s,h),0!==s.strstart&&(l(s,e.adler>>>16),l(s,65535&e.adler)),e.adler=1}if(s.status===pt)if(s.gzhead.extra){for(c=s.pending;s.gzindex<(65535&s.gzhead.extra.length)&&(s.pending!==s.pending_buf_size||(s.gzhead.hcrc&&s.pending>c&&(e.adler=j(e.adler,s.pending_buf,s.pending-c,c)),a(e),c=s.pending,s.pending!==s.pending_buf_size));)u(s,255&s.gzhead.extra[s.gzindex]),s.gzindex++;s.gzhead.hcrc&&s.pending>c&&(e.adler=j(e.adler,s.pending_buf,s.pending-c,c)),s.gzindex===s.gzhead.extra.length&&(s.gzindex=0,s.status=_t)}else s.status=_t;if(s.status===_t)if(s.gzhead.name){c=s.pending;do{if(s.pending===s.pending_buf_size&&(s.gzhead.hcrc&&s.pending>c&&(e.adler=j(e.adler,s.pending_buf,s.pending-c,c)),a(e),c=s.pending,s.pending===s.pending_buf_size)){f=1;break}f=s.gzindexc&&(e.adler=j(e.adler,s.pending_buf,s.pending-c,c)),0===f&&(s.gzindex=0,s.status=mt)}else s.status=mt;if(s.status===mt)if(s.gzhead.comment){c=s.pending;do{if(s.pending===s.pending_buf_size&&(s.gzhead.hcrc&&s.pending>c&&(e.adler=j(e.adler,s.pending_buf,s.pending-c,c)),a(e),c=s.pending,s.pending===s.pending_buf_size)){f=1;break}f=s.gzindexc&&(e.adler=j(e.adler,s.pending_buf,s.pending-c,c)),0===f&&(s.status=gt)}else s.status=gt;if(s.status===gt&&(s.gzhead.hcrc?(s.pending+2>s.pending_buf_size&&a(e),s.pending+2<=s.pending_buf_size&&(u(s,255&e.adler),u(s,e.adler>>8&255),e.adler=0,s.status=vt)):s.status=vt),0!==s.pending){if(a(e),0===e.avail_out)return s.last_flush=-1,D}else if(0===e.avail_in&&i(t)<=i(r)&&t!==F)return n(e,q);if(s.status===yt&&0!==e.avail_in)return n(e,q);if(0!==e.avail_in||0!==s.lookahead||t!==N&&s.status!==yt){var p=s.strategy===H?g(s,t):s.strategy===X?m(s,t):M[s.level].func(s,t);if((p===wt||p===kt)&&(s.status=yt),p===bt||p===wt)return 0===e.avail_out&&(s.last_flush=-1),D;if(p===xt&&(t===I?z._tr_align(s):t!==U&&(z._tr_stored_block(s,0,0,!1),t===C&&(o(s.head),0===s.lookahead&&(s.strstart=0,s.block_start=0,s.insert=0))),a(e),0===e.avail_out))return s.last_flush=-1,D}return t!==F?D:s.wrap<=0?B:(2===s.wrap?(u(s,255&e.adler),u(s,e.adler>>8&255),u(s,e.adler>>16&255),u(s,e.adler>>24&255),u(s,255&e.total_in),u(s,e.total_in>>8&255),u(s,e.total_in>>16&255),u(s,e.total_in>>24&255)):(l(s,e.adler>>>16),l(s,65535&e.adler)),a(e),s.wrap>0&&(s.wrap=-s.wrap),0!==s.pending?D:B)}function S(e){var t;return e&&e.state?(t=e.state.status,t!==dt&&t!==pt&&t!==_t&&t!==mt&&t!==gt&&t!==vt&&t!==yt?n(e,G):(e.state=null,t===vt?n(e,V):D)):G}function R(e,t){var r,n,i,a,s,u,l,c,f=t.length;if(!e||!e.state)return G;if(r=e.state,a=r.wrap,2===a||1===a&&r.status!==dt||r.lookahead)return G;for(1===a&&(e.adler=P(e.adler,t,f,0)),r.wrap=0,f>=r.w_size&&(0===a&&(o(r.head),r.strstart=0,r.block_start=0,r.insert=0),c=new O.Buf8(r.w_size),O.arraySet(c,t,f-r.w_size,r.w_size,0),t=c,f=r.w_size),s=e.avail_in,u=e.next_in,l=e.input,e.avail_in=f,e.next_in=0,e.input=t,h(r);r.lookahead>=lt;){n=r.strstart,i=r.lookahead-(lt-1); -do r.ins_h=(r.ins_h<m&&(_+=S[o++]<>>24,_>>>=w,m-=w,w=x>>>16&255,0===w)R[s++]=65535&x;else{if(!(16&w)){if(0===(64&w)){x=g[(65535&x)+(_&(1<m&&(_+=S[o++]<>>=w,m-=w),15>m&&(_+=S[o++]<>>24,_>>>=w,m-=w,w=x>>>16&255,!(16&w)){if(0===(64&w)){x=v[(65535&x)+(_&(1<m&&(_+=S[o++]<m&&(_+=S[o++]<c){e.msg="invalid distance too far back",i.mode=r;break e}if(_>>>=w,m-=w,w=s-u,A>w){if(w=A-w,w>h&&i.sane){e.msg="invalid distance too far back",i.mode=r;break e}if(T=0,E=p,0===d){if(T+=f-w,k>w){k-=w;do R[s++]=p[T++];while(--w);T=s-A,E=R}}else if(w>d){if(T+=f+d-w,w-=d,k>w){k-=w;do R[s++]=p[T++];while(--w);if(T=0,k>d){w=d,k-=w;do R[s++]=p[T++];while(--w);T=s-A,E=R}}}else if(T+=d-w,k>w){k-=w;do R[s++]=p[T++];while(--w);T=s-A,E=R}for(;k>2;)R[s++]=E[T++],R[s++]=E[T++],R[s++]=E[T++],k-=3;k&&(R[s++]=E[T++],k>1&&(R[s++]=E[T++]))}else{T=s-A;do R[s++]=R[T++],R[s++]=R[T++],R[s++]=R[T++],k-=3;while(k>2);k&&(R[s++]=R[T++],k>1&&(R[s++]=R[T++]))}break}}break}}while(a>o&&l>s);k=m>>3,o-=k,m-=k<<3,_&=(1<o?5+(a-o):5-(o-a),e.avail_out=l>s?257+(l-s):257-(s-l),i.hold=_,i.bits=m}},{}],176:[function(e,t,r){"use strict";function n(e){return(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function i(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new v.Buf16(320),this.work=new v.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function o(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=C,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new v.Buf32(_t),t.distcode=t.distdyn=new v.Buf32(mt),t.sane=1,t.back=-1,M):P}function a(e){var t;return e&&e.state?(t=e.state,t.wsize=0,t.whave=0,t.wnext=0,o(e)):P}function s(e,t){var r,n;return e&&e.state?(n=e.state,0>t?(r=0,t=-t):(r=(t>>4)+1,48>t&&(t&=15)),t&&(8>t||t>15)?P:(null!==n.window&&n.wbits!==t&&(n.window=null),n.wrap=r,n.wbits=t,a(e))):P}function u(e,t){var r,n;return e?(n=new i,e.state=n,n.window=null,r=s(e,t),r!==M&&(e.state=null),r):P}function l(e){return u(e,vt)}function c(e){if(yt){var t;for(m=new v.Buf32(512),g=new v.Buf32(32),t=0;144>t;)e.lens[t++]=8;for(;256>t;)e.lens[t++]=9;for(;280>t;)e.lens[t++]=7;for(;288>t;)e.lens[t++]=8;for(w(A,e.lens,0,288,m,0,e.work,{bits:9}),t=0;32>t;)e.lens[t++]=5;w(T,e.lens,0,32,g,0,e.work,{bits:5}),yt=!1}e.lencode=m,e.lenbits=9,e.distcode=g,e.distbits=5}function f(e,t,r,n){var i,o=e.state;return null===o.window&&(o.wsize=1<=o.wsize?(v.arraySet(o.window,t,r-o.wsize,o.wsize,0),o.wnext=0,o.whave=o.wsize):(i=o.wsize-o.wnext,i>n&&(i=n),v.arraySet(o.window,t,r-n,i,o.wnext),n-=i,n?(v.arraySet(o.window,t,r-n,n,0),o.wnext=n,o.whave=o.wsize):(o.wnext+=i,o.wnext===o.wsize&&(o.wnext=0),o.whaved;){if(0===u)break e;u--,h+=i[a++]<>>8&255,r.check=b(r.check,St,2,0),h=0,d=0,r.mode=F;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&h)<<8)+(h>>8))%31){e.msg="incorrect header check",r.mode=ht;break}if((15&h)!==I){e.msg="unknown compression method",r.mode=ht;break}if(h>>>=4,d-=4,wt=(15&h)+8,0===r.wbits)r.wbits=wt;else if(wt>r.wbits){e.msg="invalid window size",r.mode=ht;break}r.dmax=1<d;){if(0===u)break e;u--,h+=i[a++]<>8&1),512&r.flags&&(St[0]=255&h,St[1]=h>>>8&255,r.check=b(r.check,St,2,0)),h=0,d=0,r.mode=U;case U:for(;32>d;){if(0===u)break e;u--,h+=i[a++]<>>8&255,St[2]=h>>>16&255,St[3]=h>>>24&255,r.check=b(r.check,St,4,0)),h=0,d=0,r.mode=D;case D:for(;16>d;){if(0===u)break e;u--,h+=i[a++]<>8),512&r.flags&&(St[0]=255&h,St[1]=h>>>8&255,r.check=b(r.check,St,2,0)),h=0,d=0,r.mode=B;case B:if(1024&r.flags){for(;16>d;){if(0===u)break e;u--,h+=i[a++]<>>8&255,r.check=b(r.check,St,2,0)),h=0,d=0}else r.head&&(r.head.extra=null);r.mode=G;case G:if(1024&r.flags&&(m=r.length,m>u&&(m=u),m&&(r.head&&(wt=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),v.arraySet(r.head.extra,i,a,m,wt)),512&r.flags&&(r.check=b(r.check,i,m,a)),u-=m,a+=m,r.length-=m),r.length))break e;r.length=0,r.mode=V;case V:if(2048&r.flags){if(0===u)break e;m=0;do wt=i[a+m++],r.head&&wt&&r.length<65536&&(r.head.name+=String.fromCharCode(wt));while(wt&&u>m);if(512&r.flags&&(r.check=b(r.check,i,m,a)),u-=m,a+=m,wt)break e}else r.head&&(r.head.name=null);r.length=0,r.mode=q;case q:if(4096&r.flags){if(0===u)break e;m=0;do wt=i[a+m++],r.head&&wt&&r.length<65536&&(r.head.comment+=String.fromCharCode(wt));while(wt&&u>m);if(512&r.flags&&(r.check=b(r.check,i,m,a)),u-=m,a+=m,wt)break e}else r.head&&(r.head.comment=null);r.mode=W;case W:if(512&r.flags){for(;16>d;){if(0===u)break e;u--,h+=i[a++]<>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=X;break;case Z:for(;32>d;){if(0===u)break e;u--,h+=i[a++]<>>=7&d,d-=7&d,r.mode=lt;break}for(;3>d;){if(0===u)break e;u--,h+=i[a++]<>>=1,d-=1,3&h){case 0:r.mode=J;break;case 1:if(c(r),r.mode=rt,t===R){h>>>=2,d-=2;break e}break;case 2:r.mode=Q;break;case 3:e.msg="invalid block type",r.mode=ht}h>>>=2,d-=2;break;case J:for(h>>>=7&d,d-=7&d;32>d;){if(0===u)break e;u--,h+=i[a++]<>>16^65535)){e.msg="invalid stored block lengths",r.mode=ht;break}if(r.length=65535&h,h=0,d=0,r.mode=K,t===R)break e;case K:r.mode=$;case $:if(m=r.length){if(m>u&&(m=u),m>l&&(m=l),0===m)break e;v.arraySet(o,i,a,m,s),u-=m,a+=m,l-=m,s+=m,r.length-=m;break}r.mode=X;break;case Q:for(;14>d;){if(0===u)break e;u--,h+=i[a++]<>>=5,d-=5,r.ndist=(31&h)+1,h>>>=5,d-=5,r.ncode=(15&h)+4,h>>>=4,d-=4,r.nlen>286||r.ndist>30){e.msg="too many length or distance symbols",r.mode=ht;break}r.have=0,r.mode=et;case et:for(;r.haved;){if(0===u)break e;u--,h+=i[a++]<>>=3,d-=3}for(;r.have<19;)r.lens[Rt[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,At={bits:r.lenbits},kt=w(k,r.lens,0,19,r.lencode,0,r.work,At),r.lenbits=At.bits,kt){e.msg="invalid code lengths set",r.mode=ht;break}r.have=0,r.mode=tt;case tt:for(;r.have>>24,gt=Et>>>16&255,vt=65535&Et,!(d>=mt);){if(0===u)break e;u--,h+=i[a++]<vt)h>>>=mt,d-=mt,r.lens[r.have++]=vt;else{if(16===vt){for(Tt=mt+2;Tt>d;){if(0===u)break e;u--,h+=i[a++]<>>=mt,d-=mt,0===r.have){e.msg="invalid bit length repeat",r.mode=ht;break}wt=r.lens[r.have-1],m=3+(3&h),h>>>=2,d-=2}else if(17===vt){for(Tt=mt+3;Tt>d;){if(0===u)break e;u--,h+=i[a++]<>>=mt,d-=mt,wt=0,m=3+(7&h),h>>>=3,d-=3}else{for(Tt=mt+7;Tt>d;){if(0===u)break e;u--,h+=i[a++]<>>=mt,d-=mt,wt=0,m=11+(127&h),h>>>=7,d-=7}if(r.have+m>r.nlen+r.ndist){e.msg="invalid bit length repeat",r.mode=ht;break}for(;m--;)r.lens[r.have++]=wt}}if(r.mode===ht)break;if(0===r.lens[256]){e.msg="invalid code -- missing end-of-block",r.mode=ht;break}if(r.lenbits=9,At={bits:r.lenbits},kt=w(A,r.lens,0,r.nlen,r.lencode,0,r.work,At),r.lenbits=At.bits,kt){e.msg="invalid literal/lengths set",r.mode=ht;break}if(r.distbits=6,r.distcode=r.distdyn,At={bits:r.distbits},kt=w(T,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,At),r.distbits=At.bits,kt){e.msg="invalid distances set",r.mode=ht;break}if(r.mode=rt,t===R)break e;case rt:r.mode=nt;case nt:if(u>=6&&l>=258){e.next_out=s,e.avail_out=l,e.next_in=a,e.avail_in=u,r.hold=h,r.bits=d,x(e,_),s=e.next_out,o=e.output,l=e.avail_out,a=e.next_in,i=e.input,u=e.avail_in,h=r.hold,d=r.bits,r.mode===X&&(r.back=-1);break}for(r.back=0;Et=r.lencode[h&(1<>>24,gt=Et>>>16&255,vt=65535&Et,!(d>=mt);){if(0===u)break e;u--,h+=i[a++]<>yt)],mt=Et>>>24,gt=Et>>>16&255,vt=65535&Et,!(d>=yt+mt);){if(0===u)break e;u--,h+=i[a++]<>>=yt,d-=yt,r.back+=yt}if(h>>>=mt,d-=mt,r.back+=mt,r.length=vt,0===gt){r.mode=ut;break}if(32>){r.back=-1,r.mode=X;break}if(64>){e.msg="invalid literal/length code",r.mode=ht;break}r.extra=15>,r.mode=it;case it:if(r.extra){for(Tt=r.extra;Tt>d;){if(0===u)break e;u--,h+=i[a++]<>>=r.extra,d-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=ot;case ot:for(;Et=r.distcode[h&(1<>>24,gt=Et>>>16&255,vt=65535&Et,!(d>=mt);){if(0===u)break e;u--,h+=i[a++]<>yt)],mt=Et>>>24,gt=Et>>>16&255,vt=65535&Et,!(d>=yt+mt);){if(0===u)break e;u--,h+=i[a++]<>>=yt,d-=yt,r.back+=yt}if(h>>>=mt,d-=mt,r.back+=mt,64>){e.msg="invalid distance code",r.mode=ht;break}r.offset=vt,r.extra=15>,r.mode=at;case at:if(r.extra){for(Tt=r.extra;Tt>d;){if(0===u)break e;u--,h+=i[a++]<>>=r.extra,d-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg="invalid distance too far back",r.mode=ht;break}r.mode=st;case st:if(0===l)break e;if(m=_-l,r.offset>m){if(m=r.offset-m,m>r.whave&&r.sane){e.msg="invalid distance too far back",r.mode=ht;break}m>r.wnext?(m-=r.wnext,g=r.wsize-m):g=r.wnext-m,m>r.length&&(m=r.length),_t=r.window}else _t=o,g=s-r.offset,m=r.length;m>l&&(m=l),l-=m,r.length-=m;do o[s++]=_t[g++];while(--m);0===r.length&&(r.mode=nt);break;case ut:if(0===l)break e;o[s++]=r.length,l--,r.mode=nt;break;case lt:if(r.wrap){for(;32>d;){if(0===u)break e;u--,h|=i[a++]<d;){if(0===u)break e;u--,h+=i[a++]<=M;M++)B[M]=0;for(O=0;p>O;O++)B[t[d+O]]++;for(j=R,P=n;P>=1&&0===B[P];P--);if(j>P&&(j=P),0===P)return _[m++]=20971520,_[m++]=20971520,v.bits=1,0;for(z=1;P>z&&0===B[z];z++);for(z>j&&(j=z),I=1,M=1;n>=M;M++)if(I<<=1,I-=B[M],0>I)return-1;if(I>0&&(e===a||1!==P))return-1;for(G[1]=0,M=1;n>M;M++)G[M+1]=G[M]+B[M];for(O=0;p>O;O++)0!==t[d+O]&&(g[G[t[d+O]]++]=O);if(e===a?(U=V=g,A=19):e===s?(U=l,D-=257,V=c,q-=257,A=256):(U=f,V=h,A=-1),F=0,O=0,M=z,k=m,L=j,N=0,x=-1,C=1<i||e===u&&C>o)return 1;for(;;){T=M-N,g[O]A?(E=V[q+g[O]],S=U[D+g[O]]):(E=96,S=0),y=1<>N)+b]=T<<24|E<<16|S|0;while(0!==b);for(y=1<>=1;if(0!==y?(F&=y-1,F+=y):F=0,O++,0===--B[M]){if(M===P)break;M=t[d+g[O]]}if(M>j&&(F&w)!==x){for(0===N&&(N=j),k+=z,L=M-N,I=1<L+N&&(I-=B[L+N],!(0>=I));)L++,I<<=1;if(C+=1<i||e===u&&C>o)return 1;x=F&w,_[x]=j<<24|L<<16|k-m|0}}return 0!==F&&(_[k+F]=M-N<<24|64<<16|0),v.bits=j,0}},{"../utils/common":168}],178:[function(e,t){"use strict";t.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],179:[function(e,t,r){"use strict";function n(e){for(var t=e.length;--t>=0;)e[t]=0}function i(e,t,r,n,i){this.static_tree=e,this.extra_bits=t,this.extra_base=r,this.elems=n,this.max_length=i,this.has_stree=e&&e.length}function o(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}function a(e){return 256>e?ut[e]:ut[256+(e>>>7)]}function s(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function u(e,t,r){e.bi_valid>Y-r?(e.bi_buf|=t<>Y-e.bi_valid,e.bi_valid+=r-Y):(e.bi_buf|=t<>>=1,r<<=1;while(--t>0);return r>>>1}function f(e){16===e.bi_valid?(s(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}function h(e,t){var r,n,i,o,a,s,u=t.dyn_tree,l=t.max_code,c=t.stat_desc.static_tree,f=t.stat_desc.has_stree,h=t.stat_desc.extra_bits,d=t.stat_desc.extra_base,p=t.stat_desc.max_length,_=0;for(o=0;X>=o;o++)e.bl_count[o]=0;for(u[2*e.heap[e.heap_max]+1]=0,r=e.heap_max+1;H>r;r++)n=e.heap[r],o=u[2*u[2*n+1]+1]+1,o>p&&(o=p,_++),u[2*n+1]=o,n>l||(e.bl_count[o]++,a=0,n>=d&&(a=h[n-d]),s=u[2*n],e.opt_len+=s*(o+a),f&&(e.static_len+=s*(c[2*n+1]+a)));if(0!==_){do{for(o=p-1;0===e.bl_count[o];)o--;e.bl_count[o]--,e.bl_count[o+1]+=2,e.bl_count[p]--,_-=2}while(_>0);for(o=p;0!==o;o--)for(n=e.bl_count[o];0!==n;)i=e.heap[--r],i>l||(u[2*i+1]!==o&&(e.opt_len+=(o-u[2*i+1])*u[2*i],u[2*i+1]=o),n--)}}function d(e,t,r){var n,i,o=new Array(X+1),a=0;for(n=1;X>=n;n++)o[n]=a=a+r[n-1]<<1;for(i=0;t>=i;i++){var s=e[2*i+1];0!==s&&(e[2*i]=c(o[s]++,s))}}function p(){var e,t,r,n,o,a=new Array(X+1);for(r=0,n=0;G-1>n;n++)for(ct[n]=r,e=0;e<1<n;n++)for(ft[n]=o,e=0;e<1<>=7;W>n;n++)for(ft[n]=o<<7,e=0;e<1<=t;t++)a[t]=0;for(e=0;143>=e;)at[2*e+1]=8,e++,a[8]++;for(;255>=e;)at[2*e+1]=9,e++,a[9]++;for(;279>=e;)at[2*e+1]=7,e++,a[7]++;for(;287>=e;)at[2*e+1]=8,e++,a[8]++;for(d(at,q+1,a),e=0;W>e;e++)st[2*e+1]=5,st[2*e]=c(e,5);ht=new i(at,tt,V+1,q,X),dt=new i(st,rt,0,W,X),pt=new i(new Array(0),nt,0,Z,J)}function _(e){var t;for(t=0;q>t;t++)e.dyn_ltree[2*t]=0;for(t=0;W>t;t++)e.dyn_dtree[2*t]=0;for(t=0;Z>t;t++)e.bl_tree[2*t]=0;e.dyn_ltree[2*K]=1,e.opt_len=e.static_len=0,e.last_lit=e.matches=0}function m(e){e.bi_valid>8?s(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0}function g(e,t,r,n){m(e),n&&(s(e,r),s(e,~r)),P.arraySet(e.pending_buf,e.window,t,r,e.pending),e.pending+=r}function v(e,t,r,n){var i=2*t,o=2*r;return e[i]r;r++)0!==o[2*r]?(e.heap[++e.heap_len]=l=r,e.depth[r]=0):o[2*r+1]=0;for(;e.heap_len<2;)i=e.heap[++e.heap_len]=2>l?++l:0,o[2*i]=1,e.depth[i]=0,e.opt_len--,s&&(e.static_len-=a[2*i+1]);for(t.max_code=l,r=e.heap_len>>1;r>=1;r--)y(e,o,r);i=u;do r=e.heap[1],e.heap[1]=e.heap[e.heap_len--],y(e,o,1),n=e.heap[1],e.heap[--e.heap_max]=r,e.heap[--e.heap_max]=n,o[2*i]=o[2*r]+o[2*n],e.depth[i]=(e.depth[r]>=e.depth[n]?e.depth[r]:e.depth[n])+1,o[2*r+1]=o[2*n+1]=i,e.heap[1]=i++,y(e,o,1);while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],h(e,t),d(o,l,e.bl_count)}function w(e,t,r){var n,i,o=-1,a=t[1],s=0,u=7,l=4;for(0===a&&(u=138,l=3),t[2*(r+1)+1]=65535,n=0;r>=n;n++)i=a,a=t[2*(n+1)+1],++ss?e.bl_tree[2*i]+=s:0!==i?(i!==o&&e.bl_tree[2*i]++,e.bl_tree[2*$]++):10>=s?e.bl_tree[2*Q]++:e.bl_tree[2*et]++,s=0,o=i,0===a?(u=138,l=3):i===a?(u=6,l=3):(u=7,l=4))}function k(e,t,r){var n,i,o=-1,a=t[1],s=0,c=7,f=4;for(0===a&&(c=138,f=3),n=0;r>=n;n++)if(i=a,a=t[2*(n+1)+1],!(++ss){do l(e,i,e.bl_tree);while(0!==--s)}else 0!==i?(i!==o&&(l(e,i,e.bl_tree),s--),l(e,$,e.bl_tree),u(e,s-3,2)):10>=s?(l(e,Q,e.bl_tree),u(e,s-3,3)):(l(e,et,e.bl_tree),u(e,s-11,7));s=0,o=i,0===a?(c=138,f=3):i===a?(c=6,f=3):(c=7,f=4)}}function A(e){var t;for(w(e,e.dyn_ltree,e.l_desc.max_code),w(e,e.dyn_dtree,e.d_desc.max_code),x(e,e.bl_desc),t=Z-1;t>=3&&0===e.bl_tree[2*it[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t}function T(e,t,r,n){var i;for(u(e,t-257,5),u(e,r-1,5),u(e,n-4,4),i=0;n>i;i++)u(e,e.bl_tree[2*it[i]+1],3);k(e,e.dyn_ltree,t-1),k(e,e.dyn_dtree,r-1)}function E(e){var t,r=4093624447;for(t=0;31>=t;t++,r>>>=1)if(1&r&&0!==e.dyn_ltree[2*t])return L;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return N;for(t=32;V>t;t++)if(0!==e.dyn_ltree[2*t])return N;return L}function S(e){_t||(p(),_t=!0),e.l_desc=new o(e.dyn_ltree,ht),e.d_desc=new o(e.dyn_dtree,dt),e.bl_desc=new o(e.bl_tree,pt),e.bi_buf=0,e.bi_valid=0,_(e)}function R(e,t,r,n){u(e,(C<<1)+(n?1:0),3),g(e,t,r,!0)}function M(e){u(e,F<<1,3),l(e,K,at),f(e)}function O(e,t,r,n){var i,o,a=0;e.level>0?(e.strm.data_type===I&&(e.strm.data_type=E(e)),x(e,e.l_desc),x(e,e.d_desc),a=A(e),i=e.opt_len+3+7>>>3,o=e.static_len+3+7>>>3,i>=o&&(i=o)):i=o=r+5,i>=r+4&&-1!==t?R(e,t,r,n):e.strategy===j||o===i?(u(e,(F<<1)+(n?1:0),3),b(e,at,st)):(u(e,(U<<1)+(n?1:0),3),T(e,e.l_desc.max_code+1,e.d_desc.max_code+1,a+1),b(e,e.dyn_ltree,e.dyn_dtree)),_(e),n&&m(e)}function z(e,t,r){return e.pending_buf[e.d_buf+2*e.last_lit]=t>>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&r,e.last_lit++,0===t?e.dyn_ltree[2*r]++:(e.matches++,t--,e.dyn_ltree[2*(lt[r]+V+1)]++,e.dyn_dtree[2*a(t)]++),e.last_lit===e.lit_bufsize-1}var P=e("../utils/common"),j=4,L=0,N=1,I=2,C=0,F=1,U=2,D=3,B=258,G=29,V=256,q=V+1+G,W=30,Z=19,H=2*q+1,X=15,Y=16,J=7,K=256,$=16,Q=17,et=18,tt=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],rt=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],nt=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],it=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],ot=512,at=new Array(2*(q+2));n(at);var st=new Array(2*W);n(st);var ut=new Array(ot);n(ut);var lt=new Array(B-D+1);n(lt);var ct=new Array(G);n(ct);var ft=new Array(W);n(ft);var ht,dt,pt,_t=!1;r._tr_init=S,r._tr_stored_block=R,r._tr_flush_block=O,r._tr_tally=z,r._tr_align=M},{"../utils/common":168}],180:[function(e,t){"use strict";function r(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}t.exports=r},{}],181:[function(e,t){"use strict";function r(e){var t;e&&e.length&&(t=e,e=t.length);var r=new Uint8Array(e||0);return t&&r.set(t),r.readUInt32LE=i.readUInt32LE,r.writeUInt32LE=i.writeUInt32LE,r.readInt32LE=i.readInt32LE,r.writeInt32LE=i.writeInt32LE,r.readFloatLE=i.readFloatLE,r.writeFloatLE=i.writeFloatLE,r.readDoubleLE=i.readDoubleLE,r.writeDoubleLE=i.writeDoubleLE,r.toString=i.toString,r.write=i.write,r.slice=i.slice,r.copy=i.copy,r._isBuffer=!0,r}function n(e){for(var t,r,n=e.length,i=[],o=0;n>o;o++){if(t=e.charCodeAt(o),t>55295&&57344>t){if(!r){t>56319||o+1===n?i.push(239,191,189):r=t;continue}if(56320>t){i.push(239,191,189),r=t;continue}t=r-55296<<10|t-56320|65536,r=null}else r&&(i.push(239,191,189),r=null);128>t?i.push(t):2048>t?i.push(t>>6|192,63&t|128):65536>t?i.push(t>>12|224,t>>6&63|128,63&t|128):i.push(t>>18|240,t>>12&63|128,t>>6&63|128,63&t|128)}return i}t.exports=r;var i,o,a,s=e("ieee754");i={readUInt32LE:function(e){return(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},writeUInt32LE:function(e,t){this[t]=e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24},readInt32LE:function(e){return(this[e]|this[e+1]<<8|this[e+2]<<16)+(this[e+3]<<24)},readFloatLE:function(e){return s.read(this,e,!0,23,4)},readDoubleLE:function(e){return s.read(this,e,!0,52,8)},writeFloatLE:function(e,t){return s.write(this,e,t,!0,23,4)},writeDoubleLE:function(e,t){return s.write(this,e,t,!0,52,8)},toString:function(e,t,r){var n="",i="";t=t||0,r=Math.min(this.length,r||this.length);for(var o=t;r>o;o++){var a=this[o];127>=a?(n+=decodeURIComponent(i)+String.fromCharCode(a),i=""):i+="%"+a.toString(16)}return n+=decodeURIComponent(i)},write:function(e,t){for(var r=e===o?a:n(e),i=0;ir)return e;if(r=n[t.pos++],e+=34359738368*(127&r),128>r)return e;if(r=n[t.pos++],e+=4398046511104*(127&r),128>r)return e;if(r=n[t.pos++],e+=562949953421312*(127&r),128>r)return e;if(r=n[t.pos++],e+=72057594037927940*(127&r),128>r)return e;if(r=n[t.pos++],e+=0x8000000000000000*(127&r),128>r)return e;throw new Error("Expected varint not more than 10 bytes")}function o(e,t){t.realloc(10);for(var r=t.pos+10;e>=1;){if(t.pos>=r)throw new Error("Given varint doesn't fit into 10 bytes");var n=255&e;t.buf[t.pos++]=n|(e>=128?128:0),e/=128}}function a(e,t,r){var n=16383>=t?1:2097151>=t?2:268435455>=t?3:Math.ceil(Math.log(t)/(7*Math.LN2));r.realloc(n);for(var i=r.pos-1;i>=e;i--)r.buf[i+n]=r.buf[i]}function s(e,t){for(var r=0;r>3,o=this.pos;e(i,t,this),this.pos===o&&this.skip(n)}return t},readMessage:function(e,t){return this.readFields(e,t,this.readVarint()+this.pos)},readFixed32:function(){var e=this.buf.readUInt32LE(this.pos);return this.pos+=4,e},readSFixed32:function(){var e=this.buf.readInt32LE(this.pos);return this.pos+=4,e},readFixed64:function(){var e=this.buf.readUInt32LE(this.pos)+this.buf.readUInt32LE(this.pos+4)*g;return this.pos+=8,e},readSFixed64:function(){var e=this.buf.readUInt32LE(this.pos)+this.buf.readInt32LE(this.pos+4)*g;return this.pos+=8,e},readFloat:function(){var e=this.buf.readFloatLE(this.pos);return this.pos+=4,e},readDouble:function(){var e=this.buf.readDoubleLE(this.pos);return this.pos+=8,e},readVarint:function(){var e,t,r=this.buf;return t=r[this.pos++],e=127&t,128>t?e:(t=r[this.pos++],e|=(127&t)<<7,128>t?e:(t=r[this.pos++],e|=(127&t)<<14,128>t?e:(t=r[this.pos++],e|=(127&t)<<21,128>t?e:i(e,this))))},readVarint64:function(){var e=this.pos,t=this.readVarint();if(y>t)return t;for(var r=this.pos-2;255===this.buf[r];)r--;e>r&&(r=e),t=0;for(var n=0;r-e+1>n;n++){var i=127&~this.buf[e+n];t+=4>n?i<<7*n:i*Math.pow(2,7*n)}return-t-1},readSVarint:function(){var e=this.readVarint();return e%2===1?(e+1)/-2:e/2},readBoolean:function(){return Boolean(this.readVarint())},readString:function(){var e=this.readVarint()+this.pos,t=this.buf.toString("utf8",this.pos,e);return this.pos=e,t},readBytes:function(){var e=this.readVarint()+this.pos,t=this.buf.slice(this.pos,e);return this.pos=e,t},readPackedVarint:function(){for(var e=this.readVarint()+this.pos,t=[];this.pos127;);else if(t===n.Bytes)this.pos=this.readVarint()+this.pos;else if(t===n.Fixed32)this.pos+=4;else{if(t!==n.Fixed64)throw new Error("Unimplemented type: "+t);this.pos+=8}},writeTag:function(e,t){this.writeVarint(e<<3|t)},realloc:function(e){for(var t=this.length||16;t268435455?void o(e,this):(this.realloc(4),this.buf[this.pos++]=127&e|(e>127?128:0),void(127>=e||(this.buf[this.pos++]=127&(e>>>=7)|(e>127?128:0),127>=e||(this.buf[this.pos++]=127&(e>>>=7)|(e>127?128:0),127>=e||(this.buf[this.pos++]=e>>>7&127)))))},writeSVarint:function(e){this.writeVarint(0>e?2*-e-1:2*e)},writeBoolean:function(e){this.writeVarint(Boolean(e))},writeString:function(e){e=String(e);var t=m.byteLength(e);this.writeVarint(t),this.realloc(t),this.buf.write(e,this.pos),this.pos+=t},writeFloat:function(e){this.realloc(4),this.buf.writeFloatLE(e,this.pos),this.pos+=4},writeDouble:function(e){this.realloc(8),this.buf.writeDoubleLE(e,this.pos),this.pos+=8},writeBytes:function(e){var t=e.length;this.writeVarint(t),this.realloc(t);for(var r=0;t>r;r++)this.buf[this.pos++]=e[r]},writeRawMessage:function(e,t){this.pos++;var r=this.pos; -e(t,this);var n=this.pos-r;n>=128&&a(r,n,this),this.pos=r-1,this.writeVarint(n),this.pos+=n},writeMessage:function(e,t,r){this.writeTag(e,n.Bytes),this.writeRawMessage(t,r)},writePackedVarint:function(e,t){this.writeMessage(e,s,t)},writePackedSVarint:function(e,t){this.writeMessage(e,u,t)},writePackedBoolean:function(e,t){this.writeMessage(e,f,t)},writePackedFloat:function(e,t){this.writeMessage(e,l,t)},writePackedDouble:function(e,t){this.writeMessage(e,c,t)},writePackedFixed32:function(e,t){this.writeMessage(e,h,t)},writePackedSFixed32:function(e,t){this.writeMessage(e,d,t)},writePackedFixed64:function(e,t){this.writeMessage(e,p,t)},writePackedSFixed64:function(e,t){this.writeMessage(e,_,t)},writeBytesField:function(e,t){this.writeTag(e,n.Bytes),this.writeBytes(t)},writeFixed32Field:function(e,t){this.writeTag(e,n.Fixed32),this.writeFixed32(t)},writeSFixed32Field:function(e,t){this.writeTag(e,n.Fixed32),this.writeSFixed32(t)},writeFixed64Field:function(e,t){this.writeTag(e,n.Fixed64),this.writeFixed64(t)},writeSFixed64Field:function(e,t){this.writeTag(e,n.Fixed64),this.writeSFixed64(t)},writeVarintField:function(e,t){this.writeTag(e,n.Varint),this.writeVarint(t)},writeSVarintField:function(e,t){this.writeTag(e,n.Varint),this.writeSVarint(t)},writeStringField:function(e,t){this.writeTag(e,n.Bytes),this.writeString(t)},writeFloatField:function(e,t){this.writeTag(e,n.Fixed32),this.writeFloat(t)},writeDoubleField:function(e,t){this.writeTag(e,n.Fixed64),this.writeDouble(t)},writeBooleanField:function(e,t){this.writeVarintField(e,Boolean(t))}}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./buffer":181}],183:[function(e,t){"use strict";function r(e,t){this.x=e,this.y=t}t.exports=r,r.prototype={clone:function(){return new r(this.x,this.y)},add:function(e){return this.clone()._add(e)},sub:function(e){return this.clone()._sub(e)},mult:function(e){return this.clone()._mult(e)},div:function(e){return this.clone()._div(e)},rotate:function(e){return this.clone()._rotate(e)},matMult:function(e){return this.clone()._matMult(e)},unit:function(){return this.clone()._unit()},perp:function(){return this.clone()._perp()},round:function(){return this.clone()._round()},mag:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},equals:function(e){return this.x===e.x&&this.y===e.y},dist:function(e){return Math.sqrt(this.distSqr(e))},distSqr:function(e){var t=e.x-this.x,r=e.y-this.y;return t*t+r*r},angle:function(){return Math.atan2(this.y,this.x)},angleTo:function(e){return Math.atan2(this.y-e.y,this.x-e.x)},angleWith:function(e){return this.angleWithSep(e.x,e.y)},angleWithSep:function(e,t){return Math.atan2(this.x*t-this.y*e,this.x*e+this.y*t)},_matMult:function(e){var t=e[0]*this.x+e[1]*this.y,r=e[2]*this.x+e[3]*this.y;return this.x=t,this.y=r,this},_add:function(e){return this.x+=e.x,this.y+=e.y,this},_sub:function(e){return this.x-=e.x,this.y-=e.y,this},_mult:function(e){return this.x*=e,this.y*=e,this},_div:function(e){return this.x/=e,this.y/=e,this},_unit:function(){return this._div(this.mag()),this},_perp:function(){var e=this.y;return this.y=this.x,this.x=-e,this},_rotate:function(e){var t=Math.cos(e),r=Math.sin(e),n=t*this.x-r*this.y,i=r*this.x+t*this.y;return this.x=n,this.y=i,this},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}},r.convert=function(e){return e instanceof r?e:Array.isArray(e)?new r(e[0],e[1]):e}},{}],184:[function(e,t){(function(e){"use strict";function r(t,r,n,i){if("function"!=typeof t)throw new TypeError('"callback" argument must be a function');var o,a,s=arguments.length;switch(s){case 0:case 1:return e.nextTick(t);case 2:return e.nextTick(function(){t.call(null,r)});case 3:return e.nextTick(function(){t.call(null,r,n)});case 4:return e.nextTick(function(){t.call(null,r,n,i)});default:for(o=new Array(s-1),a=0;a1)for(var r=1;re?~e:e],i=0,o=r.length;o>i;++i)t.push(c(r[i].slice(),i));0>e&&n(t,o)}function i(e){return c(e.slice())}function a(e){for(var t=[],n=0,i=e.length;i>n;++n)r(e[n],t);return t.length<2&&t.push(t[0].slice()),t}function s(e){for(var t=a(e);t.length<4;)t.push(t[0].slice());return t}function u(e){return e.map(s)}function l(e){var t,r=e.type;switch(r){case"GeometryCollection":return{type:r,geometries:e.geometries.map(l)};case"Point":t=i(e.coordinates);break;case"MultiPoint":t=e.coordinates.map(i);break;case"LineString":t=a(e.arcs);break;case"MultiLineString":t=e.arcs.map(a);break;case"Polygon":t=u(e.arcs);break;case"MultiPolygon":t=e.arcs.map(u);break;default:return null}return{type:r,coordinates:t}}var c=o(e),f=e.arcs;return l(t)}var n=function(e,t){for(var r,n=e.length,i=n-t;i<--n;)r=e[i],e[i++]=e[n],e[n]=r},i=function(e){return e},o=function(e){if(null==(t=e.transform))return i;var t,r,n,o=t.scale[0],a=t.scale[1],s=t.translate[0],u=t.translate[1];return function(e,t){return t||(r=n=0),e[0]=(r+=e[0])*o+s,e[1]=(n+=e[1])*a+u,e}},a=function(e,r){return"GeometryCollection"===r.type?{type:"FeatureCollection",features:r.geometries.map(function(r){return t(e,r)})}:t(e,r)};e.feature=a,Object.defineProperty(e,"__esModule",{value:!0})})},{}],188:[function(e,t){(function(e){function r(e,t){function r(){if(!i){if(n("throwDeprecation"))throw new Error(t);n("traceDeprecation")?console.trace(t):console.warn(t),i=!0}return e.apply(this,arguments)}if(n("noDeprecation"))return e;var i=!1;return r}function n(t){try{if(!e.localStorage)return!1}catch(r){return!1}var n=e.localStorage[t];return null==n?!1:"true"===String(n).toLowerCase()}t.exports=r}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],189:[function(e,t,r){arguments[4][94][0].apply(r,arguments)},{dup:94}],190:[function(e,t){t.exports=function(e){return e&&"object"==typeof e&&"function"==typeof e.copy&&"function"==typeof e.fill&&"function"==typeof e.readUInt8}},{}],191:[function(e,t,r){(function(t,n){function i(e,t){var n={seen:[],stylize:a};return arguments.length>=3&&(n.depth=arguments[2]),arguments.length>=4&&(n.colors=arguments[3]),_(t)?n.showHidden=t:t&&r._extend(n,t),x(n.showHidden)&&(n.showHidden=!1),x(n.depth)&&(n.depth=2),x(n.colors)&&(n.colors=!1),x(n.customInspect)&&(n.customInspect=!0),n.colors&&(n.stylize=o),u(n,e,n.depth)}function o(e,t){var r=i.styles[t];return r?"["+i.colors[r][0]+"m"+e+"["+i.colors[r][1]+"m":e}function a(e){return e}function s(e){var t={};return e.forEach(function(e){t[e]=!0}),t}function u(e,t,n){if(e.customInspect&&t&&E(t.inspect)&&t.inspect!==r.inspect&&(!t.constructor||t.constructor.prototype!==t)){var i=t.inspect(n,e);return y(i)||(i=u(e,i,n)),i}var o=l(e,t);if(o)return o;var a=Object.keys(t),_=s(a);if(e.showHidden&&(a=Object.getOwnPropertyNames(t)),T(t)&&(a.indexOf("message")>=0||a.indexOf("description")>=0))return c(t);if(0===a.length){if(E(t)){var m=t.name?": "+t.name:"";return e.stylize("[Function"+m+"]","special")}if(w(t))return e.stylize(RegExp.prototype.toString.call(t),"regexp");if(A(t))return e.stylize(Date.prototype.toString.call(t),"date");if(T(t))return c(t)}var g="",v=!1,b=["{","}"];if(p(t)&&(v=!0,b=["[","]"]),E(t)){var x=t.name?": "+t.name:"";g=" [Function"+x+"]"}if(w(t)&&(g=" "+RegExp.prototype.toString.call(t)),A(t)&&(g=" "+Date.prototype.toUTCString.call(t)),T(t)&&(g=" "+c(t)),0===a.length&&(!v||0==t.length))return b[0]+g+b[1];if(0>n)return w(t)?e.stylize(RegExp.prototype.toString.call(t),"regexp"):e.stylize("[Object]","special");e.seen.push(t);var k;return k=v?f(e,t,n,_,a):a.map(function(r){return h(e,t,n,_,r,v)}),e.seen.pop(),d(k,g,b)}function l(e,t){if(x(t))return e.stylize("undefined","undefined");if(y(t)){var r="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(r,"string")}return v(t)?e.stylize(""+t,"number"):_(t)?e.stylize(""+t,"boolean"):m(t)?e.stylize("null","null"):void 0}function c(e){return"["+Error.prototype.toString.call(e)+"]"}function f(e,t,r,n,i){for(var o=[],a=0,s=t.length;s>a;++a)o.push(z(t,String(a))?h(e,t,r,n,String(a),!0):"");return i.forEach(function(i){i.match(/^\d+$/)||o.push(h(e,t,r,n,i,!0))}),o}function h(e,t,r,n,i,o){var a,s,l;if(l=Object.getOwnPropertyDescriptor(t,i)||{value:t[i]},l.get?s=l.set?e.stylize("[Getter/Setter]","special"):e.stylize("[Getter]","special"):l.set&&(s=e.stylize("[Setter]","special")),z(n,i)||(a="["+i+"]"),s||(e.seen.indexOf(l.value)<0?(s=m(r)?u(e,l.value,null):u(e,l.value,r-1),s.indexOf("\n")>-1&&(s=o?s.split("\n").map(function(e){return" "+e}).join("\n").substr(2):"\n"+s.split("\n").map(function(e){return" "+e}).join("\n"))):s=e.stylize("[Circular]","special")),x(a)){if(o&&i.match(/^\d+$/))return s;a=JSON.stringify(""+i),a.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(a=a.substr(1,a.length-2),a=e.stylize(a,"name")):(a=a.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),a=e.stylize(a,"string"))}return a+": "+s}function d(e,t,r){var n=0,i=e.reduce(function(e,t){return n++,t.indexOf("\n")>=0&&n++,e+t.replace(/\u001b\[\d\d?m/g,"").length+1},0);return i>60?r[0]+(""===t?"":t+"\n ")+" "+e.join(",\n ")+" "+r[1]:r[0]+t+" "+e.join(", ")+" "+r[1]}function p(e){return Array.isArray(e)}function _(e){return"boolean"==typeof e}function m(e){return null===e}function g(e){return null==e}function v(e){return"number"==typeof e}function y(e){return"string"==typeof e}function b(e){return"symbol"==typeof e}function x(e){return void 0===e}function w(e){return k(e)&&"[object RegExp]"===R(e)}function k(e){return"object"==typeof e&&null!==e}function A(e){return k(e)&&"[object Date]"===R(e)}function T(e){return k(e)&&("[object Error]"===R(e)||e instanceof Error)}function E(e){return"function"==typeof e}function S(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"==typeof e||"undefined"==typeof e}function R(e){return Object.prototype.toString.call(e)}function M(e){return 10>e?"0"+e.toString(10):e.toString(10)}function O(){var e=new Date,t=[M(e.getHours()),M(e.getMinutes()),M(e.getSeconds())].join(":");return[e.getDate(),N[e.getMonth()],t].join(" ")}function z(e,t){return Object.prototype.hasOwnProperty.call(e,t)}var P=/%[sdj%]/g;r.format=function(e){if(!y(e)){for(var t=[],r=0;r=o)return e;switch(e){case"%s":return String(n[r++]);case"%d":return Number(n[r++]);case"%j":try{return JSON.stringify(n[r++])}catch(t){return"[Circular]"}default:return e}}),s=n[r];o>r;s=n[++r])a+=m(s)||!k(s)?" "+s:" "+i(s);return a},r.deprecate=function(e,i){function o(){if(!a){if(t.throwDeprecation)throw new Error(i);t.traceDeprecation?console.trace(i):console.error(i),a=!0}return e.apply(this,arguments)}if(x(n.process))return function(){return r.deprecate(e,i).apply(this,arguments)};if(t.noDeprecation===!0)return e;var a=!1;return o};var j,L={};r.debuglog=function(e){if(x(j)&&(j=t.env.NODE_DEBUG||""),e=e.toUpperCase(),!L[e])if(new RegExp("\\b"+e+"\\b","i").test(j)){var n=t.pid;L[e]=function(){var t=r.format.apply(r,arguments);console.error("%s %d: %s",e,n,t)}}else L[e]=function(){};return L[e]},r.inspect=i,i.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},i.styles={special:"cyan",number:"yellow","boolean":"yellow",undefined:"grey","null":"bold",string:"green",date:"magenta",regexp:"red"},r.isArray=p,r.isBoolean=_,r.isNull=m,r.isNullOrUndefined=g,r.isNumber=v,r.isString=y,r.isSymbol=b,r.isUndefined=x,r.isRegExp=w,r.isObject=k,r.isDate=A,r.isError=T,r.isFunction=E,r.isPrimitive=S,r.isBuffer=e("./support/isBuffer");var N=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];r.log=function(){console.log("%s - %s",O(),r.format.apply(r,arguments))},r.inherits=e("inherits"),r._extend=function(e,t){if(!t||!k(t))return e;for(var r=Object.keys(t),n=r.length;n--;)e[r[n]]=t[r[n]];return e}}).call(this,e("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./support/isBuffer":190,_process:185,inherits:189}],192:[function(e,t){t.exports.VectorTile=e("./lib/vectortile.js"),t.exports.VectorTileFeature=e("./lib/vectortilefeature.js"),t.exports.VectorTileLayer=e("./lib/vectortilelayer.js")},{"./lib/vectortile.js":193,"./lib/vectortilefeature.js":194,"./lib/vectortilelayer.js":195}],193:[function(e,t){"use strict";function r(e,t){this.layers=e.readFields(n,{},t)}function n(e,t,r){if(3===e){var n=new i(r,r.readVarint()+r.pos);n.length&&(t[n.name]=n)}}var i=e("./vectortilelayer");t.exports=r},{"./vectortilelayer":195}],194:[function(e,t){"use strict";function r(e,t,r,i,o){this.properties={},this.extent=r,this.type=0,this._pbf=e,this._geometry=-1,this._keys=i,this._values=o,e.readFields(n,this,t)}function n(e,t,r){1==e?t.id=r.readVarint():2==e?i(r,t):3==e?t.type=r.readVarint():4==e&&(t._geometry=r.pos)}function i(e,t){for(var r=e.readVarint()+e.pos;e.pos=t)return[e];for(var r,n,i=[],o=0;t>o;o++){var s=a(e[o]);0!==s&&(void 0===n&&(n=0>s),n===0>s?(r&&i.push(r),r=[e[o]]):r.push(e[o]))}return r&&i.push(r),i}function a(e){for(var t,r,n=0,i=0,o=e.length,a=o-1;o>i;a=i++)t=e[i],r=e[a],n+=(r.x-t.x)*(t.y+r.y);return n}var s=e("point-geometry");t.exports=r,r.types=["Unknown","Point","LineString","Polygon"],r.prototype.loadGeometry=function(){var e=this._pbf;e.pos=this._geometry;for(var t,r=e.readVarint()+e.pos,n=1,i=0,o=0,a=0,u=[];e.pos>3}if(i--,1===n||2===n)o+=e.readSVarint(),a+=e.readSVarint(),1===n&&(t&&u.push(t),t=[]),t.push(new s(o,a));else{if(7!==n)throw new Error("unknown command "+n);t&&t.push(t[0].clone())}}return t&&u.push(t),u},r.prototype.bbox=function(){var e=this._pbf;e.pos=this._geometry;for(var t=e.readVarint()+e.pos,r=1,n=0,i=0,o=0,a=1/0,s=-1/0,u=1/0,l=-1/0;e.pos>3}if(n--,1===r||2===r)i+=e.readSVarint(),o+=e.readSVarint(),a>i&&(a=i),i>s&&(s=i),u>o&&(u=o),o>l&&(l=o);else if(7!==r)throw new Error("unknown command "+r)}return[a,u,s,l]},r.prototype.toGeoJSON=function(e,t,n){function i(e){for(var t=0;t>3;t=1===n?e.readString():2===n?e.readFloat():3===n?e.readDouble():4===n?e.readVarint64():5===n?e.readVarint():6===n?e.readSVarint():7===n?e.readBoolean():null}return t}var o=e("./vectortilefeature.js");t.exports=r,r.prototype.feature=function(e){if(0>e||e>=this._features.length)throw new Error("feature index out of bounds");this._pbf.pos=this._features[e];var t=this._pbf.readVarint()+this._pbf.pos;return new o(this._pbf,t,this.extent,this._keys,this._values)}},{"./vectortilefeature.js":194}],196:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function i(e,t,r){var n=u[0],i=u[1];return e[0]<=n.x+r&&t[0]<=n.x+r||e[0]>=i.x-r&&t[0]>=i.x-r||e[1]>=n.y-r&&t[1]>=n.y-r||e[1]<=i.y+r&&t[1]<=i.y+r?!0:!1}function o(e,t){t=t||0;var r=u[0],n=u[1];return e[0]<=r.x+t||e[0]>=n.x-t||e[1]>=r.y-t||e[1]<=n.y+t}Object.defineProperty(r,"__esModule",{value:!0}),r.default_uvs=r.tile_bounds=void 0,r.outsideTile=i,r.isCoordOutsideTile=o;{var a=e("../geo"),s=n(a),u=r.tile_bounds=[{x:0,y:0},{x:s.default.tile_scale,y:-s.default.tile_scale}];r.default_uvs=[0,0,1,1]}},{"../geo":201}],197:[function(e,t,r){"use strict";function n(e,t,r,n,a){var s=n.texcoord_index,u=n.position_index,l=n.shape_index,c=n.offset_index,f=n.offsets_index,h=n.pre_angles_index,d=n.angles_index,p=a.quad,_=a.quad_normalize,m=a.offset,g=a.offsets,v=a.pre_angles,y=a.angle,b=a.angles,x=a.curve,w=a.texcoord_scale,k=a.texcoord_normalize,A=a.pre_angles_normalize,T=a.angles_normalize,E=a.offsets_normalize;_=_||1;var S=p[0]/2*_,R=p[1]/2*_,M=[[-S,-R],[S,-R],[S,R],[-S,R]],O=t.vertex_elements,z=t.vertex_count,P=void 0;if(s){k=k||1;var j=w||o.default_uvs,L=i(j,4),N=L[0],I=L[1],C=L[2],F=L[3];P=[[N,I],[C,I],[C,F],[N,F]]}for(var U=0,D=e.length,B=0;D>B;B++){for(var G=e[B],V=0;4>V;V++)s&&(r[s+0]=P[V][0]*k,r[s+1]=P[V][1]*k),r[u+0]=G[0],r[u+1]=G[1],r[l+0]=M[V][0],r[l+1]=M[V][1],r[l+2]=y,r[c+0]=m[0],r[c+1]=m[1],x&&(r[h+0]=A*v[0],r[h+1]=A*v[1],r[h+2]=A*v[2],r[h+3]=A*v[3],r[d+0]=T*b[0],r[d+1]=T*b[1],r[d+2]=T*b[2],r[d+3]=T*b[3],r[f+0]=E*g[0],r[f+1]=E*g[1],r[f+2]=E*g[2],r[f+3]=E*g[3]),t.addVertex(r);O.push(z+0),O.push(z+1),O.push(z+2),O.push(z+2),O.push(z+3),O.push(z+0),z+=4,U+=2}return U}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){var r=[],n=!0,i=!1,o=void 0;try{for(var a,s=e[Symbol.iterator]();!(n=(a=s.next()).done)&&(r.push(a.value),!t||r.length!==t);n=!0);}catch(u){i=!0,o=u}finally{try{!n&&s["return"]&&s["return"]()}finally{if(i)throw o}}return r}return function(t,r){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();r.buildQuadsForPoints=n;var o=e("./common")},{"./common":196}],198:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function i(e,t,r,n){var i=n.texcoord_index,o=n.texcoord_scale,u=n.texcoord_normalize,c=t.vertex_elements;if(i){u=u||1;var f=o||h.default_uvs,d=s(f,4),_=d[0],m=d[1],g=d[2],v=d[3]}for(var y=0,b=e.length,x=0;b>x;x++){var w=t.vertex_count,k=e[x];if(i)var A=l.default.findBoundingBox(k),T=s(A,4),E=T[0],S=T[1],R=T[2],M=T[3],O=R-E,z=M-S,P=(g-_)/O,j=(v-m)/z;for(var L=0;Lj;j++)for(var L=e[j],N=0;NN;N++){var I=N,C=N+1;if(k=e[I],A=e[C],!w.default.isEqual(k,A)){if(c&&T.outsideTile(k,A,_)){p(k,M,[1,O],t),p(k,w.default.neg(M),[0,O],t),d(1,t);var F=s(e,I+1,_);return void(F&&r.push(F))}E=M,M=w.default.normalize(w.default.perp(k,A)),n===R.miter?f(O,k,E,M,g,!1,t):h(n,O,k,E,M,!1,t),O+=m*w.default.length(w.default.sub(A,k))}}k=A,E=M,o?(M=w.default.normalize(w.default.perp(k,e[1])),l(k,E,M,n,O,t)):(p(k,E,[1,O],t),p(k,w.default.neg(E),[0,O],t),d(1,t),T.isCoordOutsideTile(k)||v(k,O,E,i,!1,t))}}}function a(e){if(T.isCoordOutsideTile(e[0]))return 0;for(var t=0;t=2?e.slice(n):!1}function u(e,t,r,n,i){if(void 0===n||T.isCoordOutsideTile(e))p(e,r,[1,0],i),p(e,w.default.neg(r),[0,0],i);else{var o=0;n===R.miter?f(o,e,t,r,i.miter_len_sq,!0,i):h(n,o,e,t,r,!0,i)}}function l(e,t,r,n,i,o){if(T.isCoordOutsideTile(e))p(e,t,[1,i],o),p(e,w.default.neg(t),[0,i],o),d(1,o);else{var a=c(t,r);n===R.miter&&w.default.lengthSq(a)>o.miter_len_sq&&(n=R.bevel),n===R.miter?(p(e,a,[1,i],o),p(e,w.default.neg(a),[0,i],o),d(1,o)):(p(e,t,[1,i],o),p(e,w.default.neg(t),[0,i],o),d(1,o))}}function c(e,t){var r=w.default.normalize(w.default.add(e,t)),n=2/(1+Math.abs(w.default.dot(e,r)));return w.default.mult(r,n*n)}function f(e,t,r,n,i,o,a){var s=c(r,n);w.default.lengthSq(s)>i?h(R.bevel,e,t,r,n,o,a):(p(t,s,[1,e],a),p(t,w.default.neg(s),[0,e],a),o||d(1,a))}function h(e,t,r,n,i,o,a){var s=c(n,i),u=i[0]*n[1]-i[1]*n[0]>0;u?(p(r,s,[1,t],a),p(r,w.default.neg(n),[0,t],a),o||d(1,a),e===R.bevel?g(r,w.default.neg(n),s,w.default.neg(i),[0,t],[1,t],[0,t],a):e===R.round&&m(r,w.default.neg(n),s,w.default.neg(i),[0,t],[1,t],[0,t],!1,a),p(r,s,[1,t],a),p(r,w.default.neg(i),[0,t],a)):(p(r,n,[1,t],a),p(r,w.default.neg(s),[0,t],a),o||d(1,a),e===R.bevel?g(r,n,w.default.neg(s),i,[1,t],[0,t],[1,t],a):e===R.round&&m(r,n,w.default.neg(s),i,[1,t],[0,t],[1,t],!1,a),p(r,i,[1,t],a),p(r,w.default.neg(s),[0,t],a))}function d(e,t){for(var r=t.vertex_data.vertex_elements,n=t.vertex_data.vertex_count,i=n-2*e-2,o=0;e>o;o++)r.push(i+2*o+2),r.push(i+2*o+1),r.push(i+2*o+0),r.push(i+2*o+2),r.push(i+2*o+3),r.push(i+2*o+1),t.geom_count+=2}function p(e,t,r,n){var i=n.vertex_template,o=n.vertex_data;_(i,e,r,t,n),o.addVertex(i)}function _(e,t,r,n,i){e[0]=t[0],e[1]=t[1],i.texcoord_index&&r&&(e[i.texcoord_index+0]=r[0]*i.texcoord_normalize,e[i.texcoord_index+1]=r[1]*i.texcoord_normalize),i.scaling_index&&(e[i.scaling_index+0]=n[0]*i.scaling_normalize,e[i.scaling_index+1]=n[1]*i.scaling_normalize,e[i.scaling_index+2]=i.half_width)}function m(e,t,r,n,i,o,a,s,u){for(var l=t[0]*n[1]-t[1]*n[0],c=w.default.dot(t,n),f=Math.atan2(l,c);f>=Math.PI;)f-=2*Math.PI;var h=y(f,u.half_width);if(!(1>h)){var d=u.vertex_data.vertex_count,_=u.vertex_data.vertex_elements;p(e,r,o,u),p(e,t,i,u);var m=t;if(void 0!==u.texcoord_index){var g;if(s){g=[];var v=w.default.sub(i,o)}else{g=w.default.set(i);var b=w.default.div(w.default.sub(a,i),h)}}for(var x=f/h,k=0;h>k;k++)m=w.default.rot(m,x),void 0!==u.texcoord_index&&(s?(v=w.default.rot(v,x),g[0]=v[0]+o[0],g[1]=v[1]*u.texcoord_width*u.v_scale+o[1]):g=w.default.add(g,b)),p(e,m,g,u),_.push(d+k+(l>0?2:1)),_.push(d),_.push(d+k+(l>0?1:2))}}function g(e,t,r,n,i,o,a,s){var u=s.vertex_data.vertex_count;p(e,r,o,s),p(e,t,i,s),p(e,n,a,s);var l=t[0]*n[1]-t[1]*n[0]>0,c=s.vertex_data.vertex_elements;l?(c.push(u+2),c.push(u+0),c.push(u+1)):(c.push(u+1),c.push(u+0),c.push(u+2))}function v(e,t,r,n,i,o){var a=w.default.neg(r);switch(n){case S.square:var s;i?(s=[r[1],-r[0]],p(e,w.default.add(r,s),[1,t],o),p(e,w.default.add(a,s),[0,t],o),t+=.5*o.texcoord_width*o.v_scale,p(e,r,[1,t],o),p(e,a,[0,t],o)):(s=[-r[1],r[0]],p(e,r,[1,t],o),p(e,a,[0,t],o),t+=.5*o.texcoord_width*o.v_scale,p(e,w.default.add(r,s),[1,t],o),p(e,w.default.add(a,s),[0,t],o)),d(1,o);break;case S.round:var u,l,c,f,h;i?(u=r,l=a,void 0!==o.texcoord_index&&(t+=.5*o.texcoord_width*o.v_scale,c=[1,t],f=[0,t],h=[.5,t])):(u=a,l=r,void 0!==o.texcoord_index&&(c=[0,t],f=[1,t],h=[.5,t])),m(e,u,E,l,c,h,f,!0,o);break;case S.butt:return}}function y(e,t){0>e&&(e=-e);var r=t>2*M.MIN_FAN_WIDTH?Math.log2(t/M.MIN_FAN_WIDTH):1;return Math.ceil(e/Math.PI*r)}function b(e,t){for(var r=[],n=0;n2&&void 0!==arguments[2]?arguments[2]:{};a(this,e),this.view=r,this.position=n.position,this.zoom=n.zoom}return u(e,[{key:"update",value:function(){}},{key:"setupProgram",value:function(){}},{key:"updateView",value:function(){if(this.position||this.zoom){var e={};this.position&&(e={lng:this.position[0],lat:this.position[1],zoom:this.position[2]}),this.zoom&&(e.zoom=this.zoom),this.view.setView(e)}}},{key:"setupMatrices",value:function(e,t){d.mat4.multiply(e.model_view32,this.view_matrix,e.model),t.uniform("Matrix4fv","u_modelView",e.model_view32),d.mat3.normalFromMat4(e.normal32,e.model_view32),d.mat3.invert(e.inverse_normal32,e.normal32),t.uniform("Matrix3fv","u_normalMatrix",e.normal32),t.uniform("Matrix3fv","u_inverseNormalMatrix",e.inverse_normal32) +}),e.on("end",function(){t.end()}),e.on("error",function(e){t.error(e)}),this},pause:function(){return this.isPaused||this.isFinished?!1:(this.isPaused=!0,this.previous&&this.previous.pause(),!0)},resume:function(){if(!this.isPaused||this.isFinished)return!1;this.isPaused=!1;var e=!1;return this.generatedError&&(this.error(this.generatedError),e=!0),this.previous&&this.previous.resume(),!e},flush:function(){},processChunk:function(e){this.push(e)},withStreamInfo:function(e,t){return this.extraStreamInfo[e]=t,this.mergeStreamInfo(),this},mergeStreamInfo:function(){for(var e in this.extraStreamInfo)this.extraStreamInfo.hasOwnProperty(e)&&(this.streamInfo[e]=this.extraStreamInfo[e])},lock:function(){if(this.isLocked)throw new Error("The stream '"+this+"' has already been used.");this.isLocked=!0,this.previous&&this.previous.lock()},toString:function(){var e="Worker "+this.name;return this.previous?this.previous+" -> "+e:e}},t.exports=r},{}],151:[function(e,t){(function(r){"use strict";function n(e,t,r){switch(e){case"blob":return s.newBlob(s.transformTo("arraybuffer",t),r);case"base64":return c.encode(t);default:return s.transformTo(e,t)}}function i(e,t){var n,i=0,o=null,a=0;for(n=0;nc;c++)l[c]=c>=252?6:c>=248?5:c>=240?4:c>=224?3:c>=192?2:1;l[254]=l[254]=1;var f=function(e){var t,r,n,i,o,s=e.length,u=0;for(i=0;s>i;i++)r=e.charCodeAt(i),55296===(64512&r)&&s>i+1&&(n=e.charCodeAt(i+1),56320===(64512&n)&&(r=65536+(r-55296<<10)+(n-56320),i++)),u+=128>r?1:2048>r?2:65536>r?3:4;for(t=a.uint8array?new Uint8Array(u):new Array(u),o=0,i=0;u>o;i++)r=e.charCodeAt(i),55296===(64512&r)&&s>i+1&&(n=e.charCodeAt(i+1),56320===(64512&n)&&(r=65536+(r-55296<<10)+(n-56320),i++)),128>r?t[o++]=r:2048>r?(t[o++]=192|r>>>6,t[o++]=128|63&r):65536>r?(t[o++]=224|r>>>12,t[o++]=128|r>>>6&63,t[o++]=128|63&r):(t[o++]=240|r>>>18,t[o++]=128|r>>>12&63,t[o++]=128|r>>>6&63,t[o++]=128|63&r);return t},h=function(e,t){var r;for(t=t||e.length,t>e.length&&(t=e.length),r=t-1;r>=0&&128===(192&e[r]);)r--;return 0>r?t:0===r?t:r+l[e[r]]>t?r:t},d=function(e){var t,r,n,i,a=e.length,s=new Array(2*a);for(r=0,t=0;a>t;)if(n=e[t++],128>n)s[r++]=n;else if(i=l[n],i>4)s[r++]=65533,t+=i-1;else{for(n&=2===i?31:3===i?15:7;i>1&&a>t;)n=n<<6|63&e[t++],i--;i>1?s[r++]=65533:65536>n?s[r++]=n:(n-=65536,s[r++]=55296|n>>10&1023,s[r++]=56320|1023&n)}return s.length!==r&&(s.subarray?s=s.subarray(0,r):s.length=r),o.applyFromCharCode(s)};r.utf8encode=function(e){return a.nodebuffer?s.newBuffer(e,"utf-8"):f(e)},r.utf8decode=function(e){return a.nodebuffer?o.transformTo("nodebuffer",e).toString("utf-8"):(e=o.transformTo(a.uint8array?"uint8array":"array",e),d(e))},o.inherits(n,u),n.prototype.processChunk=function(e){var t=o.transformTo(a.uint8array?"uint8array":"array",e.data);if(this.leftOver&&this.leftOver.length){if(a.uint8array){var n=t;t=new Uint8Array(n.length+this.leftOver.length),t.set(this.leftOver,0),t.set(n,this.leftOver.length)}else t=this.leftOver.concat(t);this.leftOver=null}var i=h(t),s=t;i!==t.length&&(a.uint8array?(s=t.subarray(0,i),this.leftOver=t.subarray(i,t.length)):(s=t.slice(0,i),this.leftOver=t.slice(i,t.length))),this.push({data:r.utf8decode(s),meta:e.meta})},n.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:r.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},r.Utf8DecodeWorker=n,o.inherits(i,u),i.prototype.processChunk=function(e){this.push({data:r.utf8encode(e.data),meta:e.meta})},r.Utf8EncodeWorker=i},{"./nodejsUtils":137,"./stream/GenericWorker":150,"./support":152,"./utils":154}],154:[function(e,t,r){"use strict";function n(e){var t=null;return t=u.uint8array?new Uint8Array(e.length):new Array(e.length),o(e,t)}function i(e){return e}function o(e,t){for(var r=0;r1;)try{return d.stringifyByChunk(e,n,t)}catch(o){t=Math.floor(t/2)}return d.stringifyByChar(e)}function s(e,t){for(var r=0;r=o)return String.fromCharCode.apply(null,e);for(;o>i;)n.push("array"===t||"nodebuffer"===t?String.fromCharCode.apply(null,e.slice(i,Math.min(i+r,o))):String.fromCharCode.apply(null,e.subarray(i,Math.min(i+r,o)))),i+=r;return n.join("")},stringifyByChar:function(e){for(var t="",r=0;rt?"0":"")+t.toString(16).toUpperCase();return n},r.delay=function(e,t,r){f(function(){e.apply(r||null,t||[])})},r.inherits=function(e,t){var r=function(){};r.prototype=t.prototype,e.prototype=new r},r.extend=function(){var e,t,r={};for(e=0;ei;)e=this.reader.readInt(2),t=this.reader.readInt(4),r=this.reader.readData(t),this.zip64ExtensibleData[e]={id:e,length:t,value:r}},readBlockZip64EndOfCentralLocator:function(){if(this.diskWithZip64CentralDirStart=this.reader.readInt(4),this.relativeOffsetEndOfZip64CentralDir=this.reader.readInt(8),this.disksCount=this.reader.readInt(4),this.disksCount>1)throw new Error("Multi-volumes zip are not supported")},readLocalFiles:function(){var e,t;for(e=0;ee){var t=!this.isSignature(0,o.LOCAL_FILE_HEADER);throw new Error(t?"Can't find end of central directory : is this a zip file ? If it is, see http://stuk.github.io/jszip/documentation/howto/read_zip.html":"Corrupted zip : can't find end of central directory")}this.reader.setIndex(e);var r=e;if(this.checkSignature(o.CENTRAL_DIRECTORY_END),this.readBlockEndOfCentral(),this.diskNumber===i.MAX_VALUE_16BITS||this.diskWithCentralDirStart===i.MAX_VALUE_16BITS||this.centralDirRecordsOnThisDisk===i.MAX_VALUE_16BITS||this.centralDirRecords===i.MAX_VALUE_16BITS||this.centralDirSize===i.MAX_VALUE_32BITS||this.centralDirOffset===i.MAX_VALUE_32BITS){if(this.zip64=!0,e=this.reader.lastIndexOfSignature(o.ZIP64_CENTRAL_DIRECTORY_LOCATOR),0>e)throw new Error("Corrupted zip : can't find the ZIP64 end of central directory locator");if(this.reader.setIndex(e),this.checkSignature(o.ZIP64_CENTRAL_DIRECTORY_LOCATOR),this.readBlockZip64EndOfCentralLocator(),!this.isSignature(this.relativeOffsetEndOfZip64CentralDir,o.ZIP64_CENTRAL_DIRECTORY_END)&&(this.relativeOffsetEndOfZip64CentralDir=this.reader.lastIndexOfSignature(o.ZIP64_CENTRAL_DIRECTORY_END),this.relativeOffsetEndOfZip64CentralDir<0))throw new Error("Corrupted zip : can't find the ZIP64 end of central directory");this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir),this.checkSignature(o.ZIP64_CENTRAL_DIRECTORY_END),this.readBlockZip64EndOfCentral()}var n=this.centralDirOffset+this.centralDirSize;this.zip64&&(n+=20,n+=12+this.zip64EndOfCentralSize);var a=r-n;if(a>0)this.isSignature(r,o.CENTRAL_FILE_HEADER)||(this.reader.zero=a);else if(0>a)throw new Error("Corrupted zip: missing "+Math.abs(a)+" bytes.")},prepareReader:function(e){this.reader=n(e)},load:function(e){this.prepareReader(e),this.readEndOfCentral(),this.readCentralDir(),this.readLocalFiles()}},t.exports=r},{"./reader/readerFor":144,"./signature":145,"./support":152,"./utf8":153,"./utils":154,"./zipEntry":156}],156:[function(e,t){"use strict";function r(e,t){this.options=e,this.loadOptions=t}var n=e("./reader/readerFor"),i=e("./utils"),o=e("./compressedObject"),a=e("./crc32"),s=e("./utf8"),u=e("./compressions"),l=e("./support"),c=0,f=3,h=function(e){for(var t in u)if(u.hasOwnProperty(t)&&u[t].magic===e)return u[t];return null};r.prototype={isEncrypted:function(){return 1===(1&this.bitFlag)},useUTF8:function(){return 2048===(2048&this.bitFlag)},readLocalPart:function(e){var t,r;if(e.skip(22),this.fileNameLength=e.readInt(2),r=e.readInt(2),this.fileName=e.readData(this.fileNameLength),e.skip(r),-1===this.compressedSize||-1===this.uncompressedSize)throw new Error("Bug or corrupted zip : didn't get enough informations from the central directory (compressedSize === -1 || uncompressedSize === -1)");if(t=h(this.compressionMethod),null===t)throw new Error("Corrupted zip : compression "+i.pretty(this.compressionMethod)+" unknown (inner file : "+i.transformTo("string",this.fileName)+")");this.decompressed=new o(this.compressedSize,this.uncompressedSize,this.crc32,t,e.readData(this.compressedSize))},readCentralPart:function(e){this.versionMadeBy=e.readInt(2),e.skip(2),this.bitFlag=e.readInt(2),this.compressionMethod=e.readString(2),this.date=e.readDate(),this.crc32=e.readInt(4),this.compressedSize=e.readInt(4),this.uncompressedSize=e.readInt(4);var t=e.readInt(2);if(this.extraFieldsLength=e.readInt(2),this.fileCommentLength=e.readInt(2),this.diskNumberStart=e.readInt(2),this.internalFileAttributes=e.readInt(2),this.externalFileAttributes=e.readInt(4),this.localHeaderOffset=e.readInt(4),this.isEncrypted())throw new Error("Encrypted zip are not supported");e.skip(t),this.readExtraFields(e),this.parseZIP64ExtraField(e),this.fileComment=e.readData(this.fileCommentLength)},processAttributes:function(){this.unixPermissions=null,this.dosPermissions=null;var e=this.versionMadeBy>>8;this.dir=16&this.externalFileAttributes?!0:!1,e===c&&(this.dosPermissions=63&this.externalFileAttributes),e===f&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||"/"!==this.fileNameStr.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var e=n(this.extraFields[1].value);this.uncompressedSize===i.MAX_VALUE_32BITS&&(this.uncompressedSize=e.readInt(8)),this.compressedSize===i.MAX_VALUE_32BITS&&(this.compressedSize=e.readInt(8)),this.localHeaderOffset===i.MAX_VALUE_32BITS&&(this.localHeaderOffset=e.readInt(8)),this.diskNumberStart===i.MAX_VALUE_32BITS&&(this.diskNumberStart=e.readInt(4))}},readExtraFields:function(e){var t,r,n,i=e.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});e.index0)if(t.ended&&!i){var s=new Error("stream.push() after EOF");e.emit("error",s)}else if(t.endEmitted&&i){var s=new Error("stream.unshift() after end event");e.emit("error",s)}else{var u;!t.decoder||i||n||(r=t.decoder.write(r),u=!t.objectMode&&0===r.length),i||(t.reading=!1),u||(t.flowing&&0===t.length&&!t.sync?(e.emit("data",r),e.read(0)):(t.length+=t.objectMode?1:r.length,i?t.buffer.unshift(r):t.buffer.push(r),t.needReadable&&f(e))),d(e,t)}else i||(t.reading=!1);return a(t)}function a(e){return!e.ended&&(e.needReadable||e.length=N?e=N:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}function u(e,t){return 0===t.length&&t.ended?0:t.objectMode?0===e?0:1:null===e||isNaN(e)?t.flowing&&t.buffer.length?t.buffer[0].length:t.length:0>=e?0:(e>t.highWaterMark&&(t.highWaterMark=s(e)),e>t.length?t.ended?t.length:(t.needReadable=!0,0):e)}function l(e,t){var r=null;return S.isBuffer(t)||"string"==typeof t||null===t||void 0===t||e.objectMode||(r=new TypeError("Invalid non-string/buffer chunk")),r}function c(e,t){if(!t.ended){if(t.decoder){var r=t.decoder.end();r&&r.length&&(t.buffer.push(r),t.length+=t.objectMode?1:r.length)}t.ended=!0,f(e)}}function f(e){var t=e._readableState;t.needReadable=!1,t.emittedReadable||(P("emitReadable",t.flowing),t.emittedReadable=!0,t.sync?T(h,e):h(e))}function h(e){P("emit readable"),e.emit("readable"),y(e)}function d(e,t){t.readingMore||(t.readingMore=!0,T(p,e,t))}function p(e,t){for(var r=t.length;!t.reading&&!t.flowing&&!t.ended&&t.length=i)r=o?n.join(""):1===n.length?n[0]:S.concat(n,i),n.length=0;else if(el&&e>u;l++){var s=n[0],f=Math.min(e-u,s.length);o?r+=s.slice(0,f):s.copy(r,u,0,f),f0)throw new Error("endReadable called on non-empty stream");t.endEmitted||(t.ended=!0,T(w,t,e))}function w(e,t){e.endEmitted||0!==e.length||(e.endEmitted=!0,t.readable=!1,t.emit("end"))}function k(e,t){for(var r=0,n=e.length;n>r;r++)t(e[r],r)}function A(e,t){for(var r=0,n=e.length;n>r;r++)if(e[r]===t)return r;return-1}t.exports=i;var T=e("process-nextick-args"),E=e("isarray"),S=e("buffer").Buffer;i.ReadableState=n;var R,M=(e("events"),function(e,t){return e.listeners(t).length});!function(){try{R=e("stream")}catch(t){}finally{R||(R=e("events").EventEmitter)}}();var S=e("buffer").Buffer,O=e("core-util-is");O.inherits=e("inherits");var z=e("util"),P=void 0;P=z&&z.debuglog?z.debuglog("stream"):function(){};var L;O.inherits(i,R);var j,j;i.prototype.push=function(e,t){var r=this._readableState;return r.objectMode||"string"!=typeof e||(t=t||r.defaultEncoding,t!==r.encoding&&(e=new S(e,t),t="")),o(this,r,e,t,!1)},i.prototype.unshift=function(e){var t=this._readableState;return o(this,t,e,"",!0)},i.prototype.isPaused=function(){return this._readableState.flowing===!1},i.prototype.setEncoding=function(t){return L||(L=e("string_decoder/").StringDecoder),this._readableState.decoder=new L(t),this._readableState.encoding=t,this};var N=8388608;i.prototype.read=function(e){P("read",e);var t=this._readableState,r=e;if(("number"!=typeof e||e>0)&&(t.emittedReadable=!1),0===e&&t.needReadable&&(t.length>=t.highWaterMark||t.ended))return P("read: emitReadable",t.length,t.ended),0===t.length&&t.ended?x(this):f(this),null;if(e=u(e,t),0===e&&t.ended)return 0===t.length&&x(this),null;var n=t.needReadable;P("need readable",n),(0===t.length||t.length-e0?b(e,t):null,null===i&&(t.needReadable=!0,e=0),t.length-=e,0!==t.length||t.ended||(t.needReadable=!0),r!==e&&t.ended&&0===t.length&&x(this),null!==i&&this.emit("data",i),i},i.prototype._read=function(){this.emit("error",new Error("not implemented"))},i.prototype.pipe=function(e,t){function n(e){P("onunpipe"),e===f&&o()}function i(){P("onend"),e.end()}function o(){P("cleanup"),e.removeListener("close",u),e.removeListener("finish",l),e.removeListener("drain",m),e.removeListener("error",s),e.removeListener("unpipe",n),f.removeListener("end",i),f.removeListener("end",o),f.removeListener("data",a),g=!0,!h.awaitDrain||e._writableState&&!e._writableState.needDrain||m()}function a(t){P("ondata");var r=e.write(t);!1===r&&(1!==h.pipesCount||h.pipes[0]!==e||1!==f.listenerCount("data")||g||(P("false write response, pause",f._readableState.awaitDrain),f._readableState.awaitDrain++),f.pause())}function s(t){P("onerror",t),c(),e.removeListener("error",s),0===M(e,"error")&&e.emit("error",t)}function u(){e.removeListener("finish",l),c()}function l(){P("onfinish"),e.removeListener("close",u),c()}function c(){P("unpipe"),f.unpipe(e)}var f=this,h=this._readableState;switch(h.pipesCount){case 0:h.pipes=e;break;case 1:h.pipes=[h.pipes,e];break;default:h.pipes.push(e)}h.pipesCount+=1,P("pipe count=%d opts=%j",h.pipesCount,t);var d=(!t||t.end!==!1)&&e!==r.stdout&&e!==r.stderr,p=d?i:o;h.endEmitted?T(p):f.once("end",p),e.on("unpipe",n);var m=_(f);e.on("drain",m);var g=!1;return f.on("data",a),e._events&&e._events.error?E(e._events.error)?e._events.error.unshift(s):e._events.error=[s,e._events.error]:e.on("error",s),e.once("close",u),e.once("finish",l),e.emit("pipe",f),h.flowing||(P("pipe resume"),f.resume()),e},i.prototype.unpipe=function(e){var t=this._readableState;if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes?this:(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this),this);if(!e){var r=t.pipes,n=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var i=0;n>i;i++)r[i].emit("unpipe",this);return this}var o=A(t.pipes,e);return-1===o?this:(t.pipes.splice(o,1),t.pipesCount-=1,1===t.pipesCount&&(t.pipes=t.pipes[0]),e.emit("unpipe",this),this)},i.prototype.on=function(e,t){var r=R.prototype.on.call(this,e,t);if("data"===e&&!1!==this._readableState.flowing&&this.resume(),"readable"===e&&!this._readableState.endEmitted){var n=this._readableState;n.readableListening||(n.readableListening=!0,n.emittedReadable=!1,n.needReadable=!0,n.reading?n.length&&f(this,n):T(m,this))}return r},i.prototype.addListener=i.prototype.on,i.prototype.resume=function(){var e=this._readableState;return e.flowing||(P("resume"),e.flowing=!0,g(this,e)),this},i.prototype.pause=function(){return P("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(P("pause"),this._readableState.flowing=!1,this.emit("pause")),this},i.prototype.wrap=function(e){var t=this._readableState,r=!1,n=this;e.on("end",function(){if(P("wrapped end"),t.decoder&&!t.ended){var e=t.decoder.end();e&&e.length&&n.push(e)}n.push(null)}),e.on("data",function(i){if(P("wrapped data"),t.decoder&&(i=t.decoder.write(i)),(!t.objectMode||null!==i&&void 0!==i)&&(t.objectMode||i&&i.length)){var o=n.push(i);o||(r=!0,e.pause())}});for(var i in e)void 0===this[i]&&"function"==typeof e[i]&&(this[i]=function(t){return function(){return e[t].apply(e,arguments)}}(i));var o=["error","close","destroy","pause","resume"];return k(o,function(t){e.on(t,n.emit.bind(n,t))}),n._read=function(t){P("wrapped _read",t),r&&(r=!1,e.resume())},n},i._fromList=b}).call(this,e("_process"))},{"./_stream_duplex":158,_process:185,buffer:5,"core-util-is":70,events:73,inherits:94,isarray:96,"process-nextick-args":184,"string_decoder/":164,util:4}],161:[function(e,t){"use strict";function r(e){this.afterTransform=function(t,r){return n(e,t,r)},this.needTransform=!1,this.transforming=!1,this.writecb=null,this.writechunk=null,this.writeencoding=null}function n(e,t,r){var n=e._transformState;n.transforming=!1;var i=n.writecb;if(!i)return e.emit("error",new Error("no writecb in Transform class"));n.writechunk=null,n.writecb=null,null!==r&&void 0!==r&&e.push(r),i(t);var o=e._readableState;o.reading=!1,(o.needReadable||o.length-1?setImmediate:k,T=e("buffer").Buffer;a.WritableState=o;var E=e("core-util-is");E.inherits=e("inherits");var S,R={deprecate:e("util-deprecate")};!function(){try{S=e("stream")}catch(t){}finally{S||(S=e("events").EventEmitter)}}();var T=e("buffer").Buffer;E.inherits(a,S);var M;o.prototype.getBuffer=function(){for(var e=this.bufferedRequest,t=[];e;)t.push(e),e=e.next;return t},function(){try{Object.defineProperty(o.prototype,"buffer",{get:R.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.")})}catch(e){}}();var M;a.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe. Not readable."))},a.prototype.write=function(e,t,r){var i=this._writableState,o=!1;return"function"==typeof t&&(r=t,t=null),T.isBuffer(e)?t="buffer":t||(t=i.defaultEncoding),"function"!=typeof r&&(r=n),i.ended?s(this,r):u(this,i,e,r)&&(i.pendingcb++,o=c(this,i,e,t,r)),o},a.prototype.cork=function(){var e=this._writableState;e.corked++},a.prototype.uncork=function(){var e=this._writableState;e.corked&&(e.corked--,e.writing||e.corked||e.finished||e.bufferProcessing||!e.bufferedRequest||g(this,e))},a.prototype.setDefaultEncoding=function(e){if("string"==typeof e&&(e=e.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((e+"").toLowerCase())>-1))throw new TypeError("Unknown encoding: "+e);this._writableState.defaultEncoding=e},a.prototype._write=function(e,t,r){r(new Error("not implemented"))},a.prototype._writev=null,a.prototype.end=function(e,t,r){var n=this._writableState;"function"==typeof e?(r=e,e=null,t=null):"function"==typeof t&&(r=t,t=null),null!==e&&void 0!==e&&this.write(e,t),n.corked&&(n.corked=1,this.uncork()),n.ending||n.finished||x(this,n,r)}}).call(this,e("_process"))},{"./_stream_duplex":158,_process:185,buffer:5,"core-util-is":70,events:73,inherits:94,"process-nextick-args":184,"util-deprecate":188}],163:[function(e,t,r){var n=function(){try{return e("stream")}catch(t){}}();r=t.exports=e("./lib/_stream_readable.js"),r.Stream=n||r,r.Readable=r,r.Writable=e("./lib/_stream_writable.js"),r.Duplex=e("./lib/_stream_duplex.js"),r.Transform=e("./lib/_stream_transform.js"),r.PassThrough=e("./lib/_stream_passthrough.js")},{"./lib/_stream_duplex.js":158,"./lib/_stream_passthrough.js":159,"./lib/_stream_readable.js":160,"./lib/_stream_transform.js":161,"./lib/_stream_writable.js":162}],164:[function(e,t,r){function n(e){if(e&&!u(e))throw new Error("Unknown encoding: "+e)}function i(e){return e.toString(this.encoding)}function o(e){this.charReceived=e.length%2,this.charLength=this.charReceived?2:0}function a(e){this.charReceived=e.length%3,this.charLength=this.charReceived?3:0}var s=e("buffer").Buffer,u=s.isEncoding||function(e){switch(e&&e.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}},l=r.StringDecoder=function(e){switch(this.encoding=(e||"utf8").toLowerCase().replace(/[-_]/,""),n(e),this.encoding){case"utf8":this.surrogateSize=3;break;case"ucs2":case"utf16le":this.surrogateSize=2,this.detectIncompleteChar=o;break;case"base64":this.surrogateSize=3,this.detectIncompleteChar=a;break;default:return void(this.write=i)}this.charBuffer=new s(6),this.charReceived=0,this.charLength=0};l.prototype.write=function(e){for(var t="";this.charLength;){var r=e.length>=this.charLength-this.charReceived?this.charLength-this.charReceived:e.length;if(e.copy(this.charBuffer,this.charReceived,0,r),this.charReceived+=r,this.charReceived=55296&&56319>=n)){if(this.charReceived=this.charLength=0,0===e.length)return t;break}this.charLength+=this.surrogateSize,t=""}this.detectIncompleteChar(e);var i=e.length;this.charLength&&(e.copy(this.charBuffer,0,e.length-this.charReceived,i),i-=this.charReceived),t+=e.toString(this.encoding,0,i);var i=t.length-1,n=t.charCodeAt(i);if(n>=55296&&56319>=n){var o=this.surrogateSize;return this.charLength+=o,this.charReceived+=o,this.charBuffer.copy(this.charBuffer,o,0,o),e.copy(this.charBuffer,0,0,o),t.substring(0,i)}return t},l.prototype.detectIncompleteChar=function(e){for(var t=e.length>=3?3:e.length;t>0;t--){var r=e[e.length-t];if(1==t&&r>>5==6){this.charLength=2;break}if(2>=t&&r>>4==14){this.charLength=3;break}if(3>=t&&r>>3==30){this.charLength=4;break}}this.charReceived=t},l.prototype.end=function(e){var t="";if(e&&e.length&&(t=this.write(e)),this.charReceived){var r=this.charReceived,n=this.charBuffer,i=this.encoding;t+=n.slice(0,r).toString(i)}return t}},{buffer:5}],165:[function(e,t){"use strict";var r=e("./lib/utils/common").assign,n=e("./lib/deflate"),i=e("./lib/inflate"),o=e("./lib/zlib/constants"),a={};r(a,n,i,o),t.exports=a},{"./lib/deflate":166,"./lib/inflate":167,"./lib/utils/common":168,"./lib/zlib/constants":171}],166:[function(e,t,r){"use strict";function n(e){if(!(this instanceof n))return new n(e);this.options=u.assign({level:v,method:b,chunkSize:16384,windowBits:15,memLevel:8,strategy:y,to:""},e||{});var t=this.options;t.raw&&t.windowBits>0?t.windowBits=-t.windowBits:t.gzip&&t.windowBits>0&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new f,this.strm.avail_out=0;var r=s.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(r!==_)throw new Error(c[r]);if(t.header&&s.deflateSetHeader(this.strm,t.header),t.dictionary){var i;if(i="string"==typeof t.dictionary?l.string2buf(t.dictionary):"[object ArrayBuffer]"===h.call(t.dictionary)?new Uint8Array(t.dictionary):t.dictionary,r=s.deflateSetDictionary(this.strm,i),r!==_)throw new Error(c[r]);this._dict_set=!0}}function i(e,t){var r=new n(t);if(r.push(e,!0),r.err)throw r.msg||c[r.err];return r.result}function o(e,t){return t=t||{},t.raw=!0,i(e,t)}function a(e,t){return t=t||{},t.gzip=!0,i(e,t)}var s=e("./zlib/deflate"),u=e("./utils/common"),l=e("./utils/strings"),c=e("./zlib/messages"),f=e("./zlib/zstream"),h=Object.prototype.toString,d=0,p=4,_=0,m=1,g=2,v=-1,y=0,b=8;n.prototype.push=function(e,t){var r,n,i=this.strm,o=this.options.chunkSize;if(this.ended)return!1;n=t===~~t?t:t===!0?p:d,i.input="string"==typeof e?l.string2buf(e):"[object ArrayBuffer]"===h.call(e)?new Uint8Array(e):e,i.next_in=0,i.avail_in=i.input.length;do{if(0===i.avail_out&&(i.output=new u.Buf8(o),i.next_out=0,i.avail_out=o),r=s.deflate(i,n),r!==m&&r!==_)return this.onEnd(r),this.ended=!0,!1;(0===i.avail_out||0===i.avail_in&&(n===p||n===g))&&this.onData("string"===this.options.to?l.buf2binstring(u.shrinkBuf(i.output,i.next_out)):u.shrinkBuf(i.output,i.next_out))}while((i.avail_in>0||0===i.avail_out)&&r!==m);return n===p?(r=s.deflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===_):n===g?(this.onEnd(_),i.avail_out=0,!0):!0},n.prototype.onData=function(e){this.chunks.push(e)},n.prototype.onEnd=function(e){e===_&&(this.result="string"===this.options.to?this.chunks.join(""):u.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},r.Deflate=n,r.deflate=i,r.deflateRaw=o,r.gzip=a},{"./utils/common":168,"./utils/strings":169,"./zlib/deflate":173,"./zlib/messages":178,"./zlib/zstream":180}],167:[function(e,t,r){"use strict";function n(e){if(!(this instanceof n))return new n(e);this.options=s.assign({chunkSize:16384,windowBits:0,to:""},e||{});var t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),!(t.windowBits>=0&&t.windowBits<16)||e&&e.windowBits||(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&0===(15&t.windowBits)&&(t.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new f,this.strm.avail_out=0;var r=a.inflateInit2(this.strm,t.windowBits);if(r!==l.Z_OK)throw new Error(c[r]);this.header=new h,a.inflateGetHeader(this.strm,this.header)}function i(e,t){var r=new n(t);if(r.push(e,!0),r.err)throw r.msg||c[r.err];return r.result}function o(e,t){return t=t||{},t.raw=!0,i(e,t)}var a=e("./zlib/inflate"),s=e("./utils/common"),u=e("./utils/strings"),l=e("./zlib/constants"),c=e("./zlib/messages"),f=e("./zlib/zstream"),h=e("./zlib/gzheader"),d=Object.prototype.toString;n.prototype.push=function(e,t){var r,n,i,o,c,f,h=this.strm,p=this.options.chunkSize,_=this.options.dictionary,m=!1;if(this.ended)return!1;n=t===~~t?t:t===!0?l.Z_FINISH:l.Z_NO_FLUSH,h.input="string"==typeof e?u.binstring2buf(e):"[object ArrayBuffer]"===d.call(e)?new Uint8Array(e):e,h.next_in=0,h.avail_in=h.input.length;do{if(0===h.avail_out&&(h.output=new s.Buf8(p),h.next_out=0,h.avail_out=p),r=a.inflate(h,l.Z_NO_FLUSH),r===l.Z_NEED_DICT&&_&&(f="string"==typeof _?u.string2buf(_):"[object ArrayBuffer]"===d.call(_)?new Uint8Array(_):_,r=a.inflateSetDictionary(this.strm,f)),r===l.Z_BUF_ERROR&&m===!0&&(r=l.Z_OK,m=!1),r!==l.Z_STREAM_END&&r!==l.Z_OK)return this.onEnd(r),this.ended=!0,!1;h.next_out&&(0===h.avail_out||r===l.Z_STREAM_END||0===h.avail_in&&(n===l.Z_FINISH||n===l.Z_SYNC_FLUSH))&&("string"===this.options.to?(i=u.utf8border(h.output,h.next_out),o=h.next_out-i,c=u.buf2string(h.output,i),h.next_out=o,h.avail_out=p-o,o&&s.arraySet(h.output,h.output,i,o,0),this.onData(c)):this.onData(s.shrinkBuf(h.output,h.next_out))),0===h.avail_in&&0===h.avail_out&&(m=!0)}while((h.avail_in>0||0===h.avail_out)&&r!==l.Z_STREAM_END);return r===l.Z_STREAM_END&&(n=l.Z_FINISH),n===l.Z_FINISH?(r=a.inflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===l.Z_OK):n===l.Z_SYNC_FLUSH?(this.onEnd(l.Z_OK),h.avail_out=0,!0):!0},n.prototype.onData=function(e){this.chunks.push(e)},n.prototype.onEnd=function(e){e===l.Z_OK&&(this.result="string"===this.options.to?this.chunks.join(""):s.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},r.Inflate=n,r.inflate=i,r.inflateRaw=o,r.ungzip=i},{"./utils/common":168,"./utils/strings":169,"./zlib/constants":171,"./zlib/gzheader":174,"./zlib/inflate":176,"./zlib/messages":178,"./zlib/zstream":180}],168:[function(e,t,r){"use strict";var n="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Int32Array;r.assign=function(e){for(var t=Array.prototype.slice.call(arguments,1);t.length;){var r=t.shift();if(r){if("object"!=typeof r)throw new TypeError(r+"must be non-object");for(var n in r)r.hasOwnProperty(n)&&(e[n]=r[n])}}return e},r.shrinkBuf=function(e,t){return e.length===t?e:e.subarray?e.subarray(0,t):(e.length=t,e)};var i={arraySet:function(e,t,r,n,i){if(t.subarray&&e.subarray)return void e.set(t.subarray(r,r+n),i);for(var o=0;n>o;o++)e[i+o]=t[r+o]},flattenChunks:function(e){var t,r,n,i,o,a;for(n=0,t=0,r=e.length;r>t;t++)n+=e[t].length;for(a=new Uint8Array(n),i=0,t=0,r=e.length;r>t;t++)o=e[t],a.set(o,i),i+=o.length;return a}},o={arraySet:function(e,t,r,n,i){for(var o=0;n>o;o++)e[i+o]=t[r+o]},flattenChunks:function(e){return[].concat.apply([],e)}};r.setTyped=function(e){e?(r.Buf8=Uint8Array,r.Buf16=Uint16Array,r.Buf32=Int32Array,r.assign(r,i)):(r.Buf8=Array,r.Buf16=Array,r.Buf32=Array,r.assign(r,o))},r.setTyped(n)},{}],169:[function(e,t,r){"use strict";function n(e,t){if(65537>t&&(e.subarray&&a||!e.subarray&&o))return String.fromCharCode.apply(null,i.shrinkBuf(e,t));for(var r="",n=0;t>n;n++)r+=String.fromCharCode(e[n]);return r}var i=e("./common"),o=!0,a=!0;try{String.fromCharCode.apply(null,[0])}catch(s){o=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(s){a=!1}for(var u=new i.Buf8(256),l=0;256>l;l++)u[l]=l>=252?6:l>=248?5:l>=240?4:l>=224?3:l>=192?2:1;u[254]=u[254]=1,r.string2buf=function(e){var t,r,n,o,a,s=e.length,u=0;for(o=0;s>o;o++)r=e.charCodeAt(o),55296===(64512&r)&&s>o+1&&(n=e.charCodeAt(o+1),56320===(64512&n)&&(r=65536+(r-55296<<10)+(n-56320),o++)),u+=128>r?1:2048>r?2:65536>r?3:4;for(t=new i.Buf8(u),a=0,o=0;u>a;o++)r=e.charCodeAt(o),55296===(64512&r)&&s>o+1&&(n=e.charCodeAt(o+1),56320===(64512&n)&&(r=65536+(r-55296<<10)+(n-56320),o++)),128>r?t[a++]=r:2048>r?(t[a++]=192|r>>>6,t[a++]=128|63&r):65536>r?(t[a++]=224|r>>>12,t[a++]=128|r>>>6&63,t[a++]=128|63&r):(t[a++]=240|r>>>18,t[a++]=128|r>>>12&63,t[a++]=128|r>>>6&63,t[a++]=128|63&r);return t},r.buf2binstring=function(e){return n(e,e.length)},r.binstring2buf=function(e){for(var t=new i.Buf8(e.length),r=0,n=t.length;n>r;r++)t[r]=e.charCodeAt(r);return t},r.buf2string=function(e,t){var r,i,o,a,s=t||e.length,l=new Array(2*s);for(i=0,r=0;s>r;)if(o=e[r++],128>o)l[i++]=o;else if(a=u[o],a>4)l[i++]=65533,r+=a-1;else{for(o&=2===a?31:3===a?15:7;a>1&&s>r;)o=o<<6|63&e[r++],a--;a>1?l[i++]=65533:65536>o?l[i++]=o:(o-=65536,l[i++]=55296|o>>10&1023,l[i++]=56320|1023&o)}return n(l,i)},r.utf8border=function(e,t){var r;for(t=t||e.length,t>e.length&&(t=e.length),r=t-1;r>=0&&128===(192&e[r]);)r--;return 0>r?t:0===r?t:r+u[e[r]]>t?r:t}},{"./common":168}],170:[function(e,t){"use strict";function r(e,t,r,n){for(var i=65535&e|0,o=e>>>16&65535|0,a=0;0!==r;){a=r>2e3?2e3:r,r-=a;do i=i+t[n++]|0,o=o+i|0;while(--a);i%=65521,o%=65521}return i|o<<16|0}t.exports=r},{}],171:[function(e,t){"use strict";t.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],172:[function(e,t){"use strict";function r(){for(var e,t=[],r=0;256>r;r++){e=r;for(var n=0;8>n;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}function n(e,t,r,n){var o=i,a=n+r;e^=-1;for(var s=n;a>s;s++)e=e>>>8^o[255&(e^t[s])];return-1^e}var i=r();t.exports=n},{}],173:[function(e,t,r){"use strict";function n(e,t){return e.msg=j[t],t}function i(e){return(e<<1)-(e>4?9:0)}function o(e){for(var t=e.length;--t>=0;)e[t]=0}function a(e){var t=e.state,r=t.pending;r>e.avail_out&&(r=e.avail_out),0!==r&&(O.arraySet(e.output,t.pending_buf,t.pending_out,r,e.next_out),e.next_out+=r,t.pending_out+=r,e.total_out+=r,e.avail_out-=r,t.pending-=r,0===t.pending&&(t.pending_out=0))}function s(e,t){z._tr_flush_block(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,a(e.strm)}function u(e,t){e.pending_buf[e.pending++]=t}function l(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function c(e,t,r,n){var i=e.avail_in;return i>n&&(i=n),0===i?0:(e.avail_in-=i,O.arraySet(t,e.input,e.next_in,i,r),1===e.state.wrap?e.adler=P(e.adler,t,i,r):2===e.state.wrap&&(e.adler=L(e.adler,t,i,r)),e.next_in+=i,e.total_in+=i,i)}function f(e,t){var r,n,i=e.max_chain_length,o=e.strstart,a=e.prev_length,s=e.nice_match,u=e.strstart>e.w_size-ft?e.strstart-(e.w_size-ft):0,l=e.window,c=e.w_mask,f=e.prev,h=e.strstart+ct,d=l[o+a-1],p=l[o+a];e.prev_length>=e.good_match&&(i>>=2),s>e.lookahead&&(s=e.lookahead);do if(r=t,l[r+a]===p&&l[r+a-1]===d&&l[r]===l[o]&&l[++r]===l[o+1]){o+=2,r++;do;while(l[++o]===l[++r]&&l[++o]===l[++r]&&l[++o]===l[++r]&&l[++o]===l[++r]&&l[++o]===l[++r]&&l[++o]===l[++r]&&l[++o]===l[++r]&&l[++o]===l[++r]&&h>o);if(n=ct-(h-o),o=h-ct,n>a){if(e.match_start=t,a=n,n>=s)break;d=l[o+a-1],p=l[o+a]}}while((t=f[t&c])>u&&0!==--i);return a<=e.lookahead?a:e.lookahead}function h(e){var t,r,n,i,o,a=e.w_size;do{if(i=e.window_size-e.lookahead-e.strstart,e.strstart>=a+(a-ft)){O.arraySet(e.window,e.window,a,a,0),e.match_start-=a,e.strstart-=a,e.block_start-=a,r=e.hash_size,t=r;do n=e.head[--t],e.head[t]=n>=a?n-a:0;while(--r);r=a,t=r;do n=e.prev[--t],e.prev[t]=n>=a?n-a:0;while(--r);i+=a}if(0===e.strm.avail_in)break;if(r=c(e.strm,e.window,e.strstart+e.lookahead,i),e.lookahead+=r,e.lookahead+e.insert>=lt)for(o=e.strstart-e.insert,e.ins_h=e.window[o],e.ins_h=(e.ins_h<e.pending_buf_size-5&&(r=e.pending_buf_size-5);;){if(e.lookahead<=1){if(h(e),0===e.lookahead&&t===N)return bt;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var n=e.block_start+r;if((0===e.strstart||e.strstart>=n)&&(e.lookahead=e.strstart-n,e.strstart=n,s(e,!1),0===e.strm.avail_out))return bt;if(e.strstart-e.block_start>=e.w_size-ft&&(s(e,!1),0===e.strm.avail_out))return bt}return e.insert=0,t===F?(s(e,!0),0===e.strm.avail_out?wt:kt):e.strstart>e.block_start&&(s(e,!1),0===e.strm.avail_out)?bt:bt}function p(e,t){for(var r,n;;){if(e.lookahead=lt&&(e.ins_h=(e.ins_h<=lt)if(n=z._tr_tally(e,e.strstart-e.match_start,e.match_length-lt),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=lt){e.match_length--;do e.strstart++,e.ins_h=(e.ins_h<=lt&&(e.ins_h=(e.ins_h<4096)&&(e.match_length=lt-1)),e.prev_length>=lt&&e.match_length<=e.prev_length){i=e.strstart+e.lookahead-lt,n=z._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-lt),e.lookahead-=e.prev_length-1,e.prev_length-=2;do++e.strstart<=i&&(e.ins_h=(e.ins_h<=lt&&e.strstart>0&&(i=e.strstart-1,n=a[i],n===a[++i]&&n===a[++i]&&n===a[++i])){o=e.strstart+ct;do;while(n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&o>i);e.match_length=ct-(o-i),e.match_length>e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=lt?(r=z._tr_tally(e,1,e.match_length-lt),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(r=z._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),r&&(s(e,!1),0===e.strm.avail_out))return bt}return e.insert=0,t===F?(s(e,!0),0===e.strm.avail_out?wt:kt):e.last_lit&&(s(e,!1),0===e.strm.avail_out)?bt:xt}function g(e,t){for(var r;;){if(0===e.lookahead&&(h(e),0===e.lookahead)){if(t===N)return bt;break}if(e.match_length=0,r=z._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,r&&(s(e,!1),0===e.strm.avail_out))return bt}return e.insert=0,t===F?(s(e,!0),0===e.strm.avail_out?wt:kt):e.last_lit&&(s(e,!1),0===e.strm.avail_out)?bt:xt}function v(e,t,r,n,i){this.good_length=e,this.max_lazy=t,this.nice_length=r,this.max_chain=n,this.func=i}function y(e){e.window_size=2*e.w_size,o(e.head),e.max_lazy_match=M[e.level].max_lazy,e.good_match=M[e.level].good_length,e.nice_match=M[e.level].nice_length,e.max_chain_length=M[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=lt-1,e.match_available=0,e.ins_h=0}function b(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=$,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new O.Buf16(2*st),this.dyn_dtree=new O.Buf16(2*(2*ot+1)),this.bl_tree=new O.Buf16(2*(2*at+1)),o(this.dyn_ltree),o(this.dyn_dtree),o(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new O.Buf16(ut+1),this.heap=new O.Buf16(2*it+1),o(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new O.Buf16(2*it+1),o(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function x(e){var t;return e&&e.state?(e.total_in=e.total_out=0,e.data_type=K,t=e.state,t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=t.wrap?dt:vt,e.adler=2===t.wrap?0:1,t.last_flush=N,z._tr_init(t),D):n(e,G)}function w(e){var t=x(e);return t===D&&y(e.state),t}function k(e,t){return e&&e.state?2!==e.state.wrap?G:(e.state.gzhead=t,D):G}function A(e,t,r,i,o,a){if(!e)return G;var s=1;if(t===W&&(t=6),0>i?(s=0,i=-i):i>15&&(s=2,i-=16),1>o||o>Q||r!==$||8>i||i>15||0>t||t>9||0>a||a>Y)return n(e,G);8===i&&(i=9);var u=new b;return e.state=u,u.strm=e,u.wrap=s,u.gzhead=null,u.w_bits=i,u.w_size=1<U||0>t)return e?n(e,G):G;if(s=e.state,!e.output||!e.input&&0!==e.avail_in||s.status===yt&&t!==F)return n(e,0===e.avail_out?q:G);if(s.strm=e,r=s.last_flush,s.last_flush=t,s.status===dt)if(2===s.wrap)e.adler=0,u(s,31),u(s,139),u(s,8),s.gzhead?(u(s,(s.gzhead.text?1:0)+(s.gzhead.hcrc?2:0)+(s.gzhead.extra?4:0)+(s.gzhead.name?8:0)+(s.gzhead.comment?16:0)),u(s,255&s.gzhead.time),u(s,s.gzhead.time>>8&255),u(s,s.gzhead.time>>16&255),u(s,s.gzhead.time>>24&255),u(s,9===s.level?2:s.strategy>=H||s.level<2?4:0),u(s,255&s.gzhead.os),s.gzhead.extra&&s.gzhead.extra.length&&(u(s,255&s.gzhead.extra.length),u(s,s.gzhead.extra.length>>8&255)),s.gzhead.hcrc&&(e.adler=L(e.adler,s.pending_buf,s.pending,0)),s.gzindex=0,s.status=pt):(u(s,0),u(s,0),u(s,0),u(s,0),u(s,0),u(s,9===s.level?2:s.strategy>=H||s.level<2?4:0),u(s,At),s.status=vt);else{var h=$+(s.w_bits-8<<4)<<8,d=-1;d=s.strategy>=H||s.level<2?0:s.level<6?1:6===s.level?2:3,h|=d<<6,0!==s.strstart&&(h|=ht),h+=31-h%31,s.status=vt,l(s,h),0!==s.strstart&&(l(s,e.adler>>>16),l(s,65535&e.adler)),e.adler=1}if(s.status===pt)if(s.gzhead.extra){for(c=s.pending;s.gzindex<(65535&s.gzhead.extra.length)&&(s.pending!==s.pending_buf_size||(s.gzhead.hcrc&&s.pending>c&&(e.adler=L(e.adler,s.pending_buf,s.pending-c,c)),a(e),c=s.pending,s.pending!==s.pending_buf_size));)u(s,255&s.gzhead.extra[s.gzindex]),s.gzindex++;s.gzhead.hcrc&&s.pending>c&&(e.adler=L(e.adler,s.pending_buf,s.pending-c,c)),s.gzindex===s.gzhead.extra.length&&(s.gzindex=0,s.status=_t)}else s.status=_t;if(s.status===_t)if(s.gzhead.name){c=s.pending;do{if(s.pending===s.pending_buf_size&&(s.gzhead.hcrc&&s.pending>c&&(e.adler=L(e.adler,s.pending_buf,s.pending-c,c)),a(e),c=s.pending,s.pending===s.pending_buf_size)){f=1;break}f=s.gzindexc&&(e.adler=L(e.adler,s.pending_buf,s.pending-c,c)),0===f&&(s.gzindex=0,s.status=mt)}else s.status=mt;if(s.status===mt)if(s.gzhead.comment){c=s.pending;do{if(s.pending===s.pending_buf_size&&(s.gzhead.hcrc&&s.pending>c&&(e.adler=L(e.adler,s.pending_buf,s.pending-c,c)),a(e),c=s.pending,s.pending===s.pending_buf_size)){f=1;break}f=s.gzindexc&&(e.adler=L(e.adler,s.pending_buf,s.pending-c,c)),0===f&&(s.status=gt)}else s.status=gt;if(s.status===gt&&(s.gzhead.hcrc?(s.pending+2>s.pending_buf_size&&a(e),s.pending+2<=s.pending_buf_size&&(u(s,255&e.adler),u(s,e.adler>>8&255),e.adler=0,s.status=vt)):s.status=vt),0!==s.pending){if(a(e),0===e.avail_out)return s.last_flush=-1,D}else if(0===e.avail_in&&i(t)<=i(r)&&t!==F)return n(e,q);if(s.status===yt&&0!==e.avail_in)return n(e,q);if(0!==e.avail_in||0!==s.lookahead||t!==N&&s.status!==yt){var p=s.strategy===H?g(s,t):s.strategy===X?m(s,t):M[s.level].func(s,t);if((p===wt||p===kt)&&(s.status=yt),p===bt||p===wt)return 0===e.avail_out&&(s.last_flush=-1),D;if(p===xt&&(t===I?z._tr_align(s):t!==U&&(z._tr_stored_block(s,0,0,!1),t===C&&(o(s.head),0===s.lookahead&&(s.strstart=0,s.block_start=0,s.insert=0))),a(e),0===e.avail_out))return s.last_flush=-1,D}return t!==F?D:s.wrap<=0?B:(2===s.wrap?(u(s,255&e.adler),u(s,e.adler>>8&255),u(s,e.adler>>16&255),u(s,e.adler>>24&255),u(s,255&e.total_in),u(s,e.total_in>>8&255),u(s,e.total_in>>16&255),u(s,e.total_in>>24&255)):(l(s,e.adler>>>16),l(s,65535&e.adler)),a(e),s.wrap>0&&(s.wrap=-s.wrap),0!==s.pending?D:B)}function S(e){var t;return e&&e.state?(t=e.state.status,t!==dt&&t!==pt&&t!==_t&&t!==mt&&t!==gt&&t!==vt&&t!==yt?n(e,G):(e.state=null,t===vt?n(e,V):D)):G}function R(e,t){var r,n,i,a,s,u,l,c,f=t.length;if(!e||!e.state)return G;if(r=e.state,a=r.wrap,2===a||1===a&&r.status!==dt||r.lookahead)return G;for(1===a&&(e.adler=P(e.adler,t,f,0)),r.wrap=0,f>=r.w_size&&(0===a&&(o(r.head),r.strstart=0,r.block_start=0,r.insert=0),c=new O.Buf8(r.w_size),O.arraySet(c,t,f-r.w_size,r.w_size,0),t=c,f=r.w_size),s=e.avail_in,u=e.next_in,l=e.input,e.avail_in=f,e.next_in=0,e.input=t,h(r);r.lookahead>=lt;){n=r.strstart,i=r.lookahead-(lt-1); +do r.ins_h=(r.ins_h<m&&(_+=S[o++]<>>24,_>>>=w,m-=w,w=x>>>16&255,0===w)R[s++]=65535&x;else{if(!(16&w)){if(0===(64&w)){x=g[(65535&x)+(_&(1<m&&(_+=S[o++]<>>=w,m-=w),15>m&&(_+=S[o++]<>>24,_>>>=w,m-=w,w=x>>>16&255,!(16&w)){if(0===(64&w)){x=v[(65535&x)+(_&(1<m&&(_+=S[o++]<m&&(_+=S[o++]<c){e.msg="invalid distance too far back",i.mode=r;break e}if(_>>>=w,m-=w,w=s-u,A>w){if(w=A-w,w>h&&i.sane){e.msg="invalid distance too far back",i.mode=r;break e}if(T=0,E=p,0===d){if(T+=f-w,k>w){k-=w;do R[s++]=p[T++];while(--w);T=s-A,E=R}}else if(w>d){if(T+=f+d-w,w-=d,k>w){k-=w;do R[s++]=p[T++];while(--w);if(T=0,k>d){w=d,k-=w;do R[s++]=p[T++];while(--w);T=s-A,E=R}}}else if(T+=d-w,k>w){k-=w;do R[s++]=p[T++];while(--w);T=s-A,E=R}for(;k>2;)R[s++]=E[T++],R[s++]=E[T++],R[s++]=E[T++],k-=3;k&&(R[s++]=E[T++],k>1&&(R[s++]=E[T++]))}else{T=s-A;do R[s++]=R[T++],R[s++]=R[T++],R[s++]=R[T++],k-=3;while(k>2);k&&(R[s++]=R[T++],k>1&&(R[s++]=R[T++]))}break}}break}}while(a>o&&l>s);k=m>>3,o-=k,m-=k<<3,_&=(1<o?5+(a-o):5-(o-a),e.avail_out=l>s?257+(l-s):257-(s-l),i.hold=_,i.bits=m}},{}],176:[function(e,t,r){"use strict";function n(e){return(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function i(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new v.Buf16(320),this.work=new v.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function o(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=C,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new v.Buf32(_t),t.distcode=t.distdyn=new v.Buf32(mt),t.sane=1,t.back=-1,M):P}function a(e){var t;return e&&e.state?(t=e.state,t.wsize=0,t.whave=0,t.wnext=0,o(e)):P}function s(e,t){var r,n;return e&&e.state?(n=e.state,0>t?(r=0,t=-t):(r=(t>>4)+1,48>t&&(t&=15)),t&&(8>t||t>15)?P:(null!==n.window&&n.wbits!==t&&(n.window=null),n.wrap=r,n.wbits=t,a(e))):P}function u(e,t){var r,n;return e?(n=new i,e.state=n,n.window=null,r=s(e,t),r!==M&&(e.state=null),r):P}function l(e){return u(e,vt)}function c(e){if(yt){var t;for(m=new v.Buf32(512),g=new v.Buf32(32),t=0;144>t;)e.lens[t++]=8;for(;256>t;)e.lens[t++]=9;for(;280>t;)e.lens[t++]=7;for(;288>t;)e.lens[t++]=8;for(w(A,e.lens,0,288,m,0,e.work,{bits:9}),t=0;32>t;)e.lens[t++]=5;w(T,e.lens,0,32,g,0,e.work,{bits:5}),yt=!1}e.lencode=m,e.lenbits=9,e.distcode=g,e.distbits=5}function f(e,t,r,n){var i,o=e.state;return null===o.window&&(o.wsize=1<=o.wsize?(v.arraySet(o.window,t,r-o.wsize,o.wsize,0),o.wnext=0,o.whave=o.wsize):(i=o.wsize-o.wnext,i>n&&(i=n),v.arraySet(o.window,t,r-n,i,o.wnext),n-=i,n?(v.arraySet(o.window,t,r-n,n,0),o.wnext=n,o.whave=o.wsize):(o.wnext+=i,o.wnext===o.wsize&&(o.wnext=0),o.whaved;){if(0===u)break e;u--,h+=i[a++]<>>8&255,r.check=b(r.check,St,2,0),h=0,d=0,r.mode=F;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&h)<<8)+(h>>8))%31){e.msg="incorrect header check",r.mode=ht;break}if((15&h)!==I){e.msg="unknown compression method",r.mode=ht;break}if(h>>>=4,d-=4,wt=(15&h)+8,0===r.wbits)r.wbits=wt;else if(wt>r.wbits){e.msg="invalid window size",r.mode=ht;break}r.dmax=1<d;){if(0===u)break e;u--,h+=i[a++]<>8&1),512&r.flags&&(St[0]=255&h,St[1]=h>>>8&255,r.check=b(r.check,St,2,0)),h=0,d=0,r.mode=U;case U:for(;32>d;){if(0===u)break e;u--,h+=i[a++]<>>8&255,St[2]=h>>>16&255,St[3]=h>>>24&255,r.check=b(r.check,St,4,0)),h=0,d=0,r.mode=D;case D:for(;16>d;){if(0===u)break e;u--,h+=i[a++]<>8),512&r.flags&&(St[0]=255&h,St[1]=h>>>8&255,r.check=b(r.check,St,2,0)),h=0,d=0,r.mode=B;case B:if(1024&r.flags){for(;16>d;){if(0===u)break e;u--,h+=i[a++]<>>8&255,r.check=b(r.check,St,2,0)),h=0,d=0}else r.head&&(r.head.extra=null);r.mode=G;case G:if(1024&r.flags&&(m=r.length,m>u&&(m=u),m&&(r.head&&(wt=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),v.arraySet(r.head.extra,i,a,m,wt)),512&r.flags&&(r.check=b(r.check,i,m,a)),u-=m,a+=m,r.length-=m),r.length))break e;r.length=0,r.mode=V;case V:if(2048&r.flags){if(0===u)break e;m=0;do wt=i[a+m++],r.head&&wt&&r.length<65536&&(r.head.name+=String.fromCharCode(wt));while(wt&&u>m);if(512&r.flags&&(r.check=b(r.check,i,m,a)),u-=m,a+=m,wt)break e}else r.head&&(r.head.name=null);r.length=0,r.mode=q;case q:if(4096&r.flags){if(0===u)break e;m=0;do wt=i[a+m++],r.head&&wt&&r.length<65536&&(r.head.comment+=String.fromCharCode(wt));while(wt&&u>m);if(512&r.flags&&(r.check=b(r.check,i,m,a)),u-=m,a+=m,wt)break e}else r.head&&(r.head.comment=null);r.mode=W;case W:if(512&r.flags){for(;16>d;){if(0===u)break e;u--,h+=i[a++]<>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=X;break;case Z:for(;32>d;){if(0===u)break e;u--,h+=i[a++]<>>=7&d,d-=7&d,r.mode=lt;break}for(;3>d;){if(0===u)break e;u--,h+=i[a++]<>>=1,d-=1,3&h){case 0:r.mode=J;break;case 1:if(c(r),r.mode=rt,t===R){h>>>=2,d-=2;break e}break;case 2:r.mode=Q;break;case 3:e.msg="invalid block type",r.mode=ht}h>>>=2,d-=2;break;case J:for(h>>>=7&d,d-=7&d;32>d;){if(0===u)break e;u--,h+=i[a++]<>>16^65535)){e.msg="invalid stored block lengths",r.mode=ht;break}if(r.length=65535&h,h=0,d=0,r.mode=K,t===R)break e;case K:r.mode=$;case $:if(m=r.length){if(m>u&&(m=u),m>l&&(m=l),0===m)break e;v.arraySet(o,i,a,m,s),u-=m,a+=m,l-=m,s+=m,r.length-=m;break}r.mode=X;break;case Q:for(;14>d;){if(0===u)break e;u--,h+=i[a++]<>>=5,d-=5,r.ndist=(31&h)+1,h>>>=5,d-=5,r.ncode=(15&h)+4,h>>>=4,d-=4,r.nlen>286||r.ndist>30){e.msg="too many length or distance symbols",r.mode=ht;break}r.have=0,r.mode=et;case et:for(;r.haved;){if(0===u)break e;u--,h+=i[a++]<>>=3,d-=3}for(;r.have<19;)r.lens[Rt[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,At={bits:r.lenbits},kt=w(k,r.lens,0,19,r.lencode,0,r.work,At),r.lenbits=At.bits,kt){e.msg="invalid code lengths set",r.mode=ht;break}r.have=0,r.mode=tt;case tt:for(;r.have>>24,gt=Et>>>16&255,vt=65535&Et,!(d>=mt);){if(0===u)break e;u--,h+=i[a++]<vt)h>>>=mt,d-=mt,r.lens[r.have++]=vt;else{if(16===vt){for(Tt=mt+2;Tt>d;){if(0===u)break e;u--,h+=i[a++]<>>=mt,d-=mt,0===r.have){e.msg="invalid bit length repeat",r.mode=ht;break}wt=r.lens[r.have-1],m=3+(3&h),h>>>=2,d-=2}else if(17===vt){for(Tt=mt+3;Tt>d;){if(0===u)break e;u--,h+=i[a++]<>>=mt,d-=mt,wt=0,m=3+(7&h),h>>>=3,d-=3}else{for(Tt=mt+7;Tt>d;){if(0===u)break e;u--,h+=i[a++]<>>=mt,d-=mt,wt=0,m=11+(127&h),h>>>=7,d-=7}if(r.have+m>r.nlen+r.ndist){e.msg="invalid bit length repeat",r.mode=ht;break}for(;m--;)r.lens[r.have++]=wt}}if(r.mode===ht)break;if(0===r.lens[256]){e.msg="invalid code -- missing end-of-block",r.mode=ht;break}if(r.lenbits=9,At={bits:r.lenbits},kt=w(A,r.lens,0,r.nlen,r.lencode,0,r.work,At),r.lenbits=At.bits,kt){e.msg="invalid literal/lengths set",r.mode=ht;break}if(r.distbits=6,r.distcode=r.distdyn,At={bits:r.distbits},kt=w(T,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,At),r.distbits=At.bits,kt){e.msg="invalid distances set",r.mode=ht;break}if(r.mode=rt,t===R)break e;case rt:r.mode=nt;case nt:if(u>=6&&l>=258){e.next_out=s,e.avail_out=l,e.next_in=a,e.avail_in=u,r.hold=h,r.bits=d,x(e,_),s=e.next_out,o=e.output,l=e.avail_out,a=e.next_in,i=e.input,u=e.avail_in,h=r.hold,d=r.bits,r.mode===X&&(r.back=-1);break}for(r.back=0;Et=r.lencode[h&(1<>>24,gt=Et>>>16&255,vt=65535&Et,!(d>=mt);){if(0===u)break e;u--,h+=i[a++]<>yt)],mt=Et>>>24,gt=Et>>>16&255,vt=65535&Et,!(d>=yt+mt);){if(0===u)break e;u--,h+=i[a++]<>>=yt,d-=yt,r.back+=yt}if(h>>>=mt,d-=mt,r.back+=mt,r.length=vt,0===gt){r.mode=ut;break}if(32>){r.back=-1,r.mode=X;break}if(64>){e.msg="invalid literal/length code",r.mode=ht;break}r.extra=15>,r.mode=it;case it:if(r.extra){for(Tt=r.extra;Tt>d;){if(0===u)break e;u--,h+=i[a++]<>>=r.extra,d-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=ot;case ot:for(;Et=r.distcode[h&(1<>>24,gt=Et>>>16&255,vt=65535&Et,!(d>=mt);){if(0===u)break e;u--,h+=i[a++]<>yt)],mt=Et>>>24,gt=Et>>>16&255,vt=65535&Et,!(d>=yt+mt);){if(0===u)break e;u--,h+=i[a++]<>>=yt,d-=yt,r.back+=yt}if(h>>>=mt,d-=mt,r.back+=mt,64>){e.msg="invalid distance code",r.mode=ht;break}r.offset=vt,r.extra=15>,r.mode=at;case at:if(r.extra){for(Tt=r.extra;Tt>d;){if(0===u)break e;u--,h+=i[a++]<>>=r.extra,d-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg="invalid distance too far back",r.mode=ht;break}r.mode=st;case st:if(0===l)break e;if(m=_-l,r.offset>m){if(m=r.offset-m,m>r.whave&&r.sane){e.msg="invalid distance too far back",r.mode=ht;break}m>r.wnext?(m-=r.wnext,g=r.wsize-m):g=r.wnext-m,m>r.length&&(m=r.length),_t=r.window}else _t=o,g=s-r.offset,m=r.length;m>l&&(m=l),l-=m,r.length-=m;do o[s++]=_t[g++];while(--m);0===r.length&&(r.mode=nt);break;case ut:if(0===l)break e;o[s++]=r.length,l--,r.mode=nt;break;case lt:if(r.wrap){for(;32>d;){if(0===u)break e;u--,h|=i[a++]<d;){if(0===u)break e;u--,h+=i[a++]<=M;M++)B[M]=0;for(O=0;p>O;O++)B[t[d+O]]++;for(L=R,P=n;P>=1&&0===B[P];P--);if(L>P&&(L=P),0===P)return _[m++]=20971520,_[m++]=20971520,v.bits=1,0;for(z=1;P>z&&0===B[z];z++);for(z>L&&(L=z),I=1,M=1;n>=M;M++)if(I<<=1,I-=B[M],0>I)return-1;if(I>0&&(e===a||1!==P))return-1;for(G[1]=0,M=1;n>M;M++)G[M+1]=G[M]+B[M];for(O=0;p>O;O++)0!==t[d+O]&&(g[G[t[d+O]]++]=O);if(e===a?(U=V=g,A=19):e===s?(U=l,D-=257,V=c,q-=257,A=256):(U=f,V=h,A=-1),F=0,O=0,M=z,k=m,j=L,N=0,x=-1,C=1<i||e===u&&C>o)return 1;for(;;){T=M-N,g[O]A?(E=V[q+g[O]],S=U[D+g[O]]):(E=96,S=0),y=1<>N)+b]=T<<24|E<<16|S|0;while(0!==b);for(y=1<>=1;if(0!==y?(F&=y-1,F+=y):F=0,O++,0===--B[M]){if(M===P)break;M=t[d+g[O]]}if(M>L&&(F&w)!==x){for(0===N&&(N=L),k+=z,j=M-N,I=1<j+N&&(I-=B[j+N],!(0>=I));)j++,I<<=1;if(C+=1<i||e===u&&C>o)return 1;x=F&w,_[x]=L<<24|j<<16|k-m|0}}return 0!==F&&(_[k+F]=M-N<<24|64<<16|0),v.bits=L,0}},{"../utils/common":168}],178:[function(e,t){"use strict";t.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],179:[function(e,t,r){"use strict";function n(e){for(var t=e.length;--t>=0;)e[t]=0}function i(e,t,r,n,i){this.static_tree=e,this.extra_bits=t,this.extra_base=r,this.elems=n,this.max_length=i,this.has_stree=e&&e.length}function o(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}function a(e){return 256>e?ut[e]:ut[256+(e>>>7)]}function s(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function u(e,t,r){e.bi_valid>Y-r?(e.bi_buf|=t<>Y-e.bi_valid,e.bi_valid+=r-Y):(e.bi_buf|=t<>>=1,r<<=1;while(--t>0);return r>>>1}function f(e){16===e.bi_valid?(s(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}function h(e,t){var r,n,i,o,a,s,u=t.dyn_tree,l=t.max_code,c=t.stat_desc.static_tree,f=t.stat_desc.has_stree,h=t.stat_desc.extra_bits,d=t.stat_desc.extra_base,p=t.stat_desc.max_length,_=0;for(o=0;X>=o;o++)e.bl_count[o]=0;for(u[2*e.heap[e.heap_max]+1]=0,r=e.heap_max+1;H>r;r++)n=e.heap[r],o=u[2*u[2*n+1]+1]+1,o>p&&(o=p,_++),u[2*n+1]=o,n>l||(e.bl_count[o]++,a=0,n>=d&&(a=h[n-d]),s=u[2*n],e.opt_len+=s*(o+a),f&&(e.static_len+=s*(c[2*n+1]+a)));if(0!==_){do{for(o=p-1;0===e.bl_count[o];)o--;e.bl_count[o]--,e.bl_count[o+1]+=2,e.bl_count[p]--,_-=2}while(_>0);for(o=p;0!==o;o--)for(n=e.bl_count[o];0!==n;)i=e.heap[--r],i>l||(u[2*i+1]!==o&&(e.opt_len+=(o-u[2*i+1])*u[2*i],u[2*i+1]=o),n--)}}function d(e,t,r){var n,i,o=new Array(X+1),a=0;for(n=1;X>=n;n++)o[n]=a=a+r[n-1]<<1;for(i=0;t>=i;i++){var s=e[2*i+1];0!==s&&(e[2*i]=c(o[s]++,s))}}function p(){var e,t,r,n,o,a=new Array(X+1);for(r=0,n=0;G-1>n;n++)for(ct[n]=r,e=0;e<1<n;n++)for(ft[n]=o,e=0;e<1<>=7;W>n;n++)for(ft[n]=o<<7,e=0;e<1<=t;t++)a[t]=0;for(e=0;143>=e;)at[2*e+1]=8,e++,a[8]++;for(;255>=e;)at[2*e+1]=9,e++,a[9]++;for(;279>=e;)at[2*e+1]=7,e++,a[7]++;for(;287>=e;)at[2*e+1]=8,e++,a[8]++;for(d(at,q+1,a),e=0;W>e;e++)st[2*e+1]=5,st[2*e]=c(e,5);ht=new i(at,tt,V+1,q,X),dt=new i(st,rt,0,W,X),pt=new i(new Array(0),nt,0,Z,J)}function _(e){var t;for(t=0;q>t;t++)e.dyn_ltree[2*t]=0;for(t=0;W>t;t++)e.dyn_dtree[2*t]=0;for(t=0;Z>t;t++)e.bl_tree[2*t]=0;e.dyn_ltree[2*K]=1,e.opt_len=e.static_len=0,e.last_lit=e.matches=0}function m(e){e.bi_valid>8?s(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0}function g(e,t,r,n){m(e),n&&(s(e,r),s(e,~r)),P.arraySet(e.pending_buf,e.window,t,r,e.pending),e.pending+=r}function v(e,t,r,n){var i=2*t,o=2*r;return e[i]r;r++)0!==o[2*r]?(e.heap[++e.heap_len]=l=r,e.depth[r]=0):o[2*r+1]=0;for(;e.heap_len<2;)i=e.heap[++e.heap_len]=2>l?++l:0,o[2*i]=1,e.depth[i]=0,e.opt_len--,s&&(e.static_len-=a[2*i+1]);for(t.max_code=l,r=e.heap_len>>1;r>=1;r--)y(e,o,r);i=u;do r=e.heap[1],e.heap[1]=e.heap[e.heap_len--],y(e,o,1),n=e.heap[1],e.heap[--e.heap_max]=r,e.heap[--e.heap_max]=n,o[2*i]=o[2*r]+o[2*n],e.depth[i]=(e.depth[r]>=e.depth[n]?e.depth[r]:e.depth[n])+1,o[2*r+1]=o[2*n+1]=i,e.heap[1]=i++,y(e,o,1);while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],h(e,t),d(o,l,e.bl_count)}function w(e,t,r){var n,i,o=-1,a=t[1],s=0,u=7,l=4;for(0===a&&(u=138,l=3),t[2*(r+1)+1]=65535,n=0;r>=n;n++)i=a,a=t[2*(n+1)+1],++ss?e.bl_tree[2*i]+=s:0!==i?(i!==o&&e.bl_tree[2*i]++,e.bl_tree[2*$]++):10>=s?e.bl_tree[2*Q]++:e.bl_tree[2*et]++,s=0,o=i,0===a?(u=138,l=3):i===a?(u=6,l=3):(u=7,l=4))}function k(e,t,r){var n,i,o=-1,a=t[1],s=0,c=7,f=4;for(0===a&&(c=138,f=3),n=0;r>=n;n++)if(i=a,a=t[2*(n+1)+1],!(++ss){do l(e,i,e.bl_tree);while(0!==--s)}else 0!==i?(i!==o&&(l(e,i,e.bl_tree),s--),l(e,$,e.bl_tree),u(e,s-3,2)):10>=s?(l(e,Q,e.bl_tree),u(e,s-3,3)):(l(e,et,e.bl_tree),u(e,s-11,7));s=0,o=i,0===a?(c=138,f=3):i===a?(c=6,f=3):(c=7,f=4)}}function A(e){var t;for(w(e,e.dyn_ltree,e.l_desc.max_code),w(e,e.dyn_dtree,e.d_desc.max_code),x(e,e.bl_desc),t=Z-1;t>=3&&0===e.bl_tree[2*it[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t}function T(e,t,r,n){var i;for(u(e,t-257,5),u(e,r-1,5),u(e,n-4,4),i=0;n>i;i++)u(e,e.bl_tree[2*it[i]+1],3);k(e,e.dyn_ltree,t-1),k(e,e.dyn_dtree,r-1)}function E(e){var t,r=4093624447;for(t=0;31>=t;t++,r>>>=1)if(1&r&&0!==e.dyn_ltree[2*t])return j;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return N;for(t=32;V>t;t++)if(0!==e.dyn_ltree[2*t])return N;return j}function S(e){_t||(p(),_t=!0),e.l_desc=new o(e.dyn_ltree,ht),e.d_desc=new o(e.dyn_dtree,dt),e.bl_desc=new o(e.bl_tree,pt),e.bi_buf=0,e.bi_valid=0,_(e)}function R(e,t,r,n){u(e,(C<<1)+(n?1:0),3),g(e,t,r,!0)}function M(e){u(e,F<<1,3),l(e,K,at),f(e)}function O(e,t,r,n){var i,o,a=0;e.level>0?(e.strm.data_type===I&&(e.strm.data_type=E(e)),x(e,e.l_desc),x(e,e.d_desc),a=A(e),i=e.opt_len+3+7>>>3,o=e.static_len+3+7>>>3,i>=o&&(i=o)):i=o=r+5,i>=r+4&&-1!==t?R(e,t,r,n):e.strategy===L||o===i?(u(e,(F<<1)+(n?1:0),3),b(e,at,st)):(u(e,(U<<1)+(n?1:0),3),T(e,e.l_desc.max_code+1,e.d_desc.max_code+1,a+1),b(e,e.dyn_ltree,e.dyn_dtree)),_(e),n&&m(e)}function z(e,t,r){return e.pending_buf[e.d_buf+2*e.last_lit]=t>>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&r,e.last_lit++,0===t?e.dyn_ltree[2*r]++:(e.matches++,t--,e.dyn_ltree[2*(lt[r]+V+1)]++,e.dyn_dtree[2*a(t)]++),e.last_lit===e.lit_bufsize-1}var P=e("../utils/common"),L=4,j=0,N=1,I=2,C=0,F=1,U=2,D=3,B=258,G=29,V=256,q=V+1+G,W=30,Z=19,H=2*q+1,X=15,Y=16,J=7,K=256,$=16,Q=17,et=18,tt=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],rt=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],nt=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],it=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],ot=512,at=new Array(2*(q+2));n(at);var st=new Array(2*W);n(st);var ut=new Array(ot);n(ut);var lt=new Array(B-D+1);n(lt);var ct=new Array(G);n(ct);var ft=new Array(W);n(ft);var ht,dt,pt,_t=!1;r._tr_init=S,r._tr_stored_block=R,r._tr_flush_block=O,r._tr_tally=z,r._tr_align=M},{"../utils/common":168}],180:[function(e,t){"use strict";function r(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}t.exports=r},{}],181:[function(e,t){"use strict";function r(e){var t;e&&e.length&&(t=e,e=t.length);var r=new Uint8Array(e||0);return t&&r.set(t),r.readUInt32LE=i.readUInt32LE,r.writeUInt32LE=i.writeUInt32LE,r.readInt32LE=i.readInt32LE,r.writeInt32LE=i.writeInt32LE,r.readFloatLE=i.readFloatLE,r.writeFloatLE=i.writeFloatLE,r.readDoubleLE=i.readDoubleLE,r.writeDoubleLE=i.writeDoubleLE,r.toString=i.toString,r.write=i.write,r.slice=i.slice,r.copy=i.copy,r._isBuffer=!0,r}function n(e){for(var t,r,n=e.length,i=[],o=0;n>o;o++){if(t=e.charCodeAt(o),t>55295&&57344>t){if(!r){t>56319||o+1===n?i.push(239,191,189):r=t;continue}if(56320>t){i.push(239,191,189),r=t;continue}t=r-55296<<10|t-56320|65536,r=null}else r&&(i.push(239,191,189),r=null);128>t?i.push(t):2048>t?i.push(t>>6|192,63&t|128):65536>t?i.push(t>>12|224,t>>6&63|128,63&t|128):i.push(t>>18|240,t>>12&63|128,t>>6&63|128,63&t|128)}return i}t.exports=r;var i,o,a,s=e("ieee754");i={readUInt32LE:function(e){return(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},writeUInt32LE:function(e,t){this[t]=e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24},readInt32LE:function(e){return(this[e]|this[e+1]<<8|this[e+2]<<16)+(this[e+3]<<24)},readFloatLE:function(e){return s.read(this,e,!0,23,4)},readDoubleLE:function(e){return s.read(this,e,!0,52,8)},writeFloatLE:function(e,t){return s.write(this,e,t,!0,23,4)},writeDoubleLE:function(e,t){return s.write(this,e,t,!0,52,8)},toString:function(e,t,r){var n="",i="";t=t||0,r=Math.min(this.length,r||this.length);for(var o=t;r>o;o++){var a=this[o];127>=a?(n+=decodeURIComponent(i)+String.fromCharCode(a),i=""):i+="%"+a.toString(16)}return n+=decodeURIComponent(i)},write:function(e,t){for(var r=e===o?a:n(e),i=0;ir)return e;if(r=n[t.pos++],e+=34359738368*(127&r),128>r)return e;if(r=n[t.pos++],e+=4398046511104*(127&r),128>r)return e;if(r=n[t.pos++],e+=562949953421312*(127&r),128>r)return e;if(r=n[t.pos++],e+=72057594037927940*(127&r),128>r)return e;if(r=n[t.pos++],e+=0x8000000000000000*(127&r),128>r)return e;throw new Error("Expected varint not more than 10 bytes")}function o(e,t){t.realloc(10);for(var r=t.pos+10;e>=1;){if(t.pos>=r)throw new Error("Given varint doesn't fit into 10 bytes");var n=255&e;t.buf[t.pos++]=n|(e>=128?128:0),e/=128}}function a(e,t,r){var n=16383>=t?1:2097151>=t?2:268435455>=t?3:Math.ceil(Math.log(t)/(7*Math.LN2));r.realloc(n);for(var i=r.pos-1;i>=e;i--)r.buf[i+n]=r.buf[i]}function s(e,t){for(var r=0;r>3,o=this.pos;e(i,t,this),this.pos===o&&this.skip(n)}return t},readMessage:function(e,t){return this.readFields(e,t,this.readVarint()+this.pos)},readFixed32:function(){var e=this.buf.readUInt32LE(this.pos);return this.pos+=4,e},readSFixed32:function(){var e=this.buf.readInt32LE(this.pos);return this.pos+=4,e},readFixed64:function(){var e=this.buf.readUInt32LE(this.pos)+this.buf.readUInt32LE(this.pos+4)*g;return this.pos+=8,e},readSFixed64:function(){var e=this.buf.readUInt32LE(this.pos)+this.buf.readInt32LE(this.pos+4)*g;return this.pos+=8,e},readFloat:function(){var e=this.buf.readFloatLE(this.pos);return this.pos+=4,e},readDouble:function(){var e=this.buf.readDoubleLE(this.pos);return this.pos+=8,e},readVarint:function(){var e,t,r=this.buf;return t=r[this.pos++],e=127&t,128>t?e:(t=r[this.pos++],e|=(127&t)<<7,128>t?e:(t=r[this.pos++],e|=(127&t)<<14,128>t?e:(t=r[this.pos++],e|=(127&t)<<21,128>t?e:i(e,this))))},readVarint64:function(){var e=this.pos,t=this.readVarint();if(y>t)return t;for(var r=this.pos-2;255===this.buf[r];)r--;e>r&&(r=e),t=0;for(var n=0;r-e+1>n;n++){var i=127&~this.buf[e+n];t+=4>n?i<<7*n:i*Math.pow(2,7*n)}return-t-1},readSVarint:function(){var e=this.readVarint();return e%2===1?(e+1)/-2:e/2},readBoolean:function(){return Boolean(this.readVarint())},readString:function(){var e=this.readVarint()+this.pos,t=this.buf.toString("utf8",this.pos,e);return this.pos=e,t},readBytes:function(){var e=this.readVarint()+this.pos,t=this.buf.slice(this.pos,e);return this.pos=e,t},readPackedVarint:function(){for(var e=this.readVarint()+this.pos,t=[];this.pos127;);else if(t===n.Bytes)this.pos=this.readVarint()+this.pos;else if(t===n.Fixed32)this.pos+=4;else{if(t!==n.Fixed64)throw new Error("Unimplemented type: "+t);this.pos+=8}},writeTag:function(e,t){this.writeVarint(e<<3|t)},realloc:function(e){for(var t=this.length||16;t268435455?void o(e,this):(this.realloc(4),this.buf[this.pos++]=127&e|(e>127?128:0),void(127>=e||(this.buf[this.pos++]=127&(e>>>=7)|(e>127?128:0),127>=e||(this.buf[this.pos++]=127&(e>>>=7)|(e>127?128:0),127>=e||(this.buf[this.pos++]=e>>>7&127)))))},writeSVarint:function(e){this.writeVarint(0>e?2*-e-1:2*e)},writeBoolean:function(e){this.writeVarint(Boolean(e))},writeString:function(e){e=String(e);var t=m.byteLength(e);this.writeVarint(t),this.realloc(t),this.buf.write(e,this.pos),this.pos+=t},writeFloat:function(e){this.realloc(4),this.buf.writeFloatLE(e,this.pos),this.pos+=4},writeDouble:function(e){this.realloc(8),this.buf.writeDoubleLE(e,this.pos),this.pos+=8},writeBytes:function(e){var t=e.length;this.writeVarint(t),this.realloc(t);for(var r=0;t>r;r++)this.buf[this.pos++]=e[r]},writeRawMessage:function(e,t){this.pos++;var r=this.pos; +e(t,this);var n=this.pos-r;n>=128&&a(r,n,this),this.pos=r-1,this.writeVarint(n),this.pos+=n},writeMessage:function(e,t,r){this.writeTag(e,n.Bytes),this.writeRawMessage(t,r)},writePackedVarint:function(e,t){this.writeMessage(e,s,t)},writePackedSVarint:function(e,t){this.writeMessage(e,u,t)},writePackedBoolean:function(e,t){this.writeMessage(e,f,t)},writePackedFloat:function(e,t){this.writeMessage(e,l,t)},writePackedDouble:function(e,t){this.writeMessage(e,c,t)},writePackedFixed32:function(e,t){this.writeMessage(e,h,t)},writePackedSFixed32:function(e,t){this.writeMessage(e,d,t)},writePackedFixed64:function(e,t){this.writeMessage(e,p,t)},writePackedSFixed64:function(e,t){this.writeMessage(e,_,t)},writeBytesField:function(e,t){this.writeTag(e,n.Bytes),this.writeBytes(t)},writeFixed32Field:function(e,t){this.writeTag(e,n.Fixed32),this.writeFixed32(t)},writeSFixed32Field:function(e,t){this.writeTag(e,n.Fixed32),this.writeSFixed32(t)},writeFixed64Field:function(e,t){this.writeTag(e,n.Fixed64),this.writeFixed64(t)},writeSFixed64Field:function(e,t){this.writeTag(e,n.Fixed64),this.writeSFixed64(t)},writeVarintField:function(e,t){this.writeTag(e,n.Varint),this.writeVarint(t)},writeSVarintField:function(e,t){this.writeTag(e,n.Varint),this.writeSVarint(t)},writeStringField:function(e,t){this.writeTag(e,n.Bytes),this.writeString(t)},writeFloatField:function(e,t){this.writeTag(e,n.Fixed32),this.writeFloat(t)},writeDoubleField:function(e,t){this.writeTag(e,n.Fixed64),this.writeDouble(t)},writeBooleanField:function(e,t){this.writeVarintField(e,Boolean(t))}}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./buffer":181}],183:[function(e,t){"use strict";function r(e,t){this.x=e,this.y=t}t.exports=r,r.prototype={clone:function(){return new r(this.x,this.y)},add:function(e){return this.clone()._add(e)},sub:function(e){return this.clone()._sub(e)},mult:function(e){return this.clone()._mult(e)},div:function(e){return this.clone()._div(e)},rotate:function(e){return this.clone()._rotate(e)},matMult:function(e){return this.clone()._matMult(e)},unit:function(){return this.clone()._unit()},perp:function(){return this.clone()._perp()},round:function(){return this.clone()._round()},mag:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},equals:function(e){return this.x===e.x&&this.y===e.y},dist:function(e){return Math.sqrt(this.distSqr(e))},distSqr:function(e){var t=e.x-this.x,r=e.y-this.y;return t*t+r*r},angle:function(){return Math.atan2(this.y,this.x)},angleTo:function(e){return Math.atan2(this.y-e.y,this.x-e.x)},angleWith:function(e){return this.angleWithSep(e.x,e.y)},angleWithSep:function(e,t){return Math.atan2(this.x*t-this.y*e,this.x*e+this.y*t)},_matMult:function(e){var t=e[0]*this.x+e[1]*this.y,r=e[2]*this.x+e[3]*this.y;return this.x=t,this.y=r,this},_add:function(e){return this.x+=e.x,this.y+=e.y,this},_sub:function(e){return this.x-=e.x,this.y-=e.y,this},_mult:function(e){return this.x*=e,this.y*=e,this},_div:function(e){return this.x/=e,this.y/=e,this},_unit:function(){return this._div(this.mag()),this},_perp:function(){var e=this.y;return this.y=this.x,this.x=-e,this},_rotate:function(e){var t=Math.cos(e),r=Math.sin(e),n=t*this.x-r*this.y,i=r*this.x+t*this.y;return this.x=n,this.y=i,this},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}},r.convert=function(e){return e instanceof r?e:Array.isArray(e)?new r(e[0],e[1]):e}},{}],184:[function(e,t){(function(e){"use strict";function r(t,r,n,i){if("function"!=typeof t)throw new TypeError('"callback" argument must be a function');var o,a,s=arguments.length;switch(s){case 0:case 1:return e.nextTick(t);case 2:return e.nextTick(function(){t.call(null,r)});case 3:return e.nextTick(function(){t.call(null,r,n)});case 4:return e.nextTick(function(){t.call(null,r,n,i)});default:for(o=new Array(s-1),a=0;a1)for(var r=1;re?~e:e],i=0,o=r.length;o>i;++i)t.push(c(r[i].slice(),i));0>e&&n(t,o)}function i(e){return c(e.slice())}function a(e){for(var t=[],n=0,i=e.length;i>n;++n)r(e[n],t);return t.length<2&&t.push(t[0].slice()),t}function s(e){for(var t=a(e);t.length<4;)t.push(t[0].slice());return t}function u(e){return e.map(s)}function l(e){var t,r=e.type;switch(r){case"GeometryCollection":return{type:r,geometries:e.geometries.map(l)};case"Point":t=i(e.coordinates);break;case"MultiPoint":t=e.coordinates.map(i);break;case"LineString":t=a(e.arcs);break;case"MultiLineString":t=e.arcs.map(a);break;case"Polygon":t=u(e.arcs);break;case"MultiPolygon":t=e.arcs.map(u);break;default:return null}return{type:r,coordinates:t}}var c=o(e),f=e.arcs;return l(t)}var n=function(e,t){for(var r,n=e.length,i=n-t;i<--n;)r=e[i],e[i++]=e[n],e[n]=r},i=function(e){return e},o=function(e){if(null==(t=e.transform))return i;var t,r,n,o=t.scale[0],a=t.scale[1],s=t.translate[0],u=t.translate[1];return function(e,t){return t||(r=n=0),e[0]=(r+=e[0])*o+s,e[1]=(n+=e[1])*a+u,e}},a=function(e,r){return"GeometryCollection"===r.type?{type:"FeatureCollection",features:r.geometries.map(function(r){return t(e,r)})}:t(e,r)};e.feature=a,Object.defineProperty(e,"__esModule",{value:!0})})},{}],188:[function(e,t){(function(e){function r(e,t){function r(){if(!i){if(n("throwDeprecation"))throw new Error(t);n("traceDeprecation")?console.trace(t):console.warn(t),i=!0}return e.apply(this,arguments)}if(n("noDeprecation"))return e;var i=!1;return r}function n(t){try{if(!e.localStorage)return!1}catch(r){return!1}var n=e.localStorage[t];return null==n?!1:"true"===String(n).toLowerCase()}t.exports=r}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],189:[function(e,t,r){arguments[4][94][0].apply(r,arguments)},{dup:94}],190:[function(e,t){t.exports=function(e){return e&&"object"==typeof e&&"function"==typeof e.copy&&"function"==typeof e.fill&&"function"==typeof e.readUInt8}},{}],191:[function(e,t,r){(function(t,n){function i(e,t){var n={seen:[],stylize:a};return arguments.length>=3&&(n.depth=arguments[2]),arguments.length>=4&&(n.colors=arguments[3]),_(t)?n.showHidden=t:t&&r._extend(n,t),x(n.showHidden)&&(n.showHidden=!1),x(n.depth)&&(n.depth=2),x(n.colors)&&(n.colors=!1),x(n.customInspect)&&(n.customInspect=!0),n.colors&&(n.stylize=o),u(n,e,n.depth)}function o(e,t){var r=i.styles[t];return r?"["+i.colors[r][0]+"m"+e+"["+i.colors[r][1]+"m":e}function a(e){return e}function s(e){var t={};return e.forEach(function(e){t[e]=!0}),t}function u(e,t,n){if(e.customInspect&&t&&E(t.inspect)&&t.inspect!==r.inspect&&(!t.constructor||t.constructor.prototype!==t)){var i=t.inspect(n,e);return y(i)||(i=u(e,i,n)),i}var o=l(e,t);if(o)return o;var a=Object.keys(t),_=s(a);if(e.showHidden&&(a=Object.getOwnPropertyNames(t)),T(t)&&(a.indexOf("message")>=0||a.indexOf("description")>=0))return c(t);if(0===a.length){if(E(t)){var m=t.name?": "+t.name:"";return e.stylize("[Function"+m+"]","special")}if(w(t))return e.stylize(RegExp.prototype.toString.call(t),"regexp");if(A(t))return e.stylize(Date.prototype.toString.call(t),"date");if(T(t))return c(t)}var g="",v=!1,b=["{","}"];if(p(t)&&(v=!0,b=["[","]"]),E(t)){var x=t.name?": "+t.name:"";g=" [Function"+x+"]"}if(w(t)&&(g=" "+RegExp.prototype.toString.call(t)),A(t)&&(g=" "+Date.prototype.toUTCString.call(t)),T(t)&&(g=" "+c(t)),0===a.length&&(!v||0==t.length))return b[0]+g+b[1];if(0>n)return w(t)?e.stylize(RegExp.prototype.toString.call(t),"regexp"):e.stylize("[Object]","special");e.seen.push(t);var k;return k=v?f(e,t,n,_,a):a.map(function(r){return h(e,t,n,_,r,v)}),e.seen.pop(),d(k,g,b)}function l(e,t){if(x(t))return e.stylize("undefined","undefined");if(y(t)){var r="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(r,"string")}return v(t)?e.stylize(""+t,"number"):_(t)?e.stylize(""+t,"boolean"):m(t)?e.stylize("null","null"):void 0}function c(e){return"["+Error.prototype.toString.call(e)+"]"}function f(e,t,r,n,i){for(var o=[],a=0,s=t.length;s>a;++a)o.push(z(t,String(a))?h(e,t,r,n,String(a),!0):"");return i.forEach(function(i){i.match(/^\d+$/)||o.push(h(e,t,r,n,i,!0))}),o}function h(e,t,r,n,i,o){var a,s,l;if(l=Object.getOwnPropertyDescriptor(t,i)||{value:t[i]},l.get?s=l.set?e.stylize("[Getter/Setter]","special"):e.stylize("[Getter]","special"):l.set&&(s=e.stylize("[Setter]","special")),z(n,i)||(a="["+i+"]"),s||(e.seen.indexOf(l.value)<0?(s=m(r)?u(e,l.value,null):u(e,l.value,r-1),s.indexOf("\n")>-1&&(s=o?s.split("\n").map(function(e){return" "+e}).join("\n").substr(2):"\n"+s.split("\n").map(function(e){return" "+e}).join("\n"))):s=e.stylize("[Circular]","special")),x(a)){if(o&&i.match(/^\d+$/))return s;a=JSON.stringify(""+i),a.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(a=a.substr(1,a.length-2),a=e.stylize(a,"name")):(a=a.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),a=e.stylize(a,"string"))}return a+": "+s}function d(e,t,r){var n=0,i=e.reduce(function(e,t){return n++,t.indexOf("\n")>=0&&n++,e+t.replace(/\u001b\[\d\d?m/g,"").length+1},0);return i>60?r[0]+(""===t?"":t+"\n ")+" "+e.join(",\n ")+" "+r[1]:r[0]+t+" "+e.join(", ")+" "+r[1]}function p(e){return Array.isArray(e)}function _(e){return"boolean"==typeof e}function m(e){return null===e}function g(e){return null==e}function v(e){return"number"==typeof e}function y(e){return"string"==typeof e}function b(e){return"symbol"==typeof e}function x(e){return void 0===e}function w(e){return k(e)&&"[object RegExp]"===R(e)}function k(e){return"object"==typeof e&&null!==e}function A(e){return k(e)&&"[object Date]"===R(e)}function T(e){return k(e)&&("[object Error]"===R(e)||e instanceof Error)}function E(e){return"function"==typeof e}function S(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"==typeof e||"undefined"==typeof e}function R(e){return Object.prototype.toString.call(e)}function M(e){return 10>e?"0"+e.toString(10):e.toString(10)}function O(){var e=new Date,t=[M(e.getHours()),M(e.getMinutes()),M(e.getSeconds())].join(":");return[e.getDate(),N[e.getMonth()],t].join(" ")}function z(e,t){return Object.prototype.hasOwnProperty.call(e,t)}var P=/%[sdj%]/g;r.format=function(e){if(!y(e)){for(var t=[],r=0;r=o)return e;switch(e){case"%s":return String(n[r++]);case"%d":return Number(n[r++]);case"%j":try{return JSON.stringify(n[r++])}catch(t){return"[Circular]"}default:return e}}),s=n[r];o>r;s=n[++r])a+=m(s)||!k(s)?" "+s:" "+i(s);return a},r.deprecate=function(e,i){function o(){if(!a){if(t.throwDeprecation)throw new Error(i);t.traceDeprecation?console.trace(i):console.error(i),a=!0}return e.apply(this,arguments)}if(x(n.process))return function(){return r.deprecate(e,i).apply(this,arguments)};if(t.noDeprecation===!0)return e;var a=!1;return o};var L,j={};r.debuglog=function(e){if(x(L)&&(L=t.env.NODE_DEBUG||""),e=e.toUpperCase(),!j[e])if(new RegExp("\\b"+e+"\\b","i").test(L)){var n=t.pid;j[e]=function(){var t=r.format.apply(r,arguments);console.error("%s %d: %s",e,n,t)}}else j[e]=function(){};return j[e]},r.inspect=i,i.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},i.styles={special:"cyan",number:"yellow","boolean":"yellow",undefined:"grey","null":"bold",string:"green",date:"magenta",regexp:"red"},r.isArray=p,r.isBoolean=_,r.isNull=m,r.isNullOrUndefined=g,r.isNumber=v,r.isString=y,r.isSymbol=b,r.isUndefined=x,r.isRegExp=w,r.isObject=k,r.isDate=A,r.isError=T,r.isFunction=E,r.isPrimitive=S,r.isBuffer=e("./support/isBuffer");var N=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];r.log=function(){console.log("%s - %s",O(),r.format.apply(r,arguments))},r.inherits=e("inherits"),r._extend=function(e,t){if(!t||!k(t))return e;for(var r=Object.keys(t),n=r.length;n--;)e[r[n]]=t[r[n]];return e}}).call(this,e("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./support/isBuffer":190,_process:185,inherits:189}],192:[function(e,t){t.exports.VectorTile=e("./lib/vectortile.js"),t.exports.VectorTileFeature=e("./lib/vectortilefeature.js"),t.exports.VectorTileLayer=e("./lib/vectortilelayer.js")},{"./lib/vectortile.js":193,"./lib/vectortilefeature.js":194,"./lib/vectortilelayer.js":195}],193:[function(e,t){"use strict";function r(e,t){this.layers=e.readFields(n,{},t)}function n(e,t,r){if(3===e){var n=new i(r,r.readVarint()+r.pos);n.length&&(t[n.name]=n)}}var i=e("./vectortilelayer");t.exports=r},{"./vectortilelayer":195}],194:[function(e,t){"use strict";function r(e,t,r,i,o){this.properties={},this.extent=r,this.type=0,this._pbf=e,this._geometry=-1,this._keys=i,this._values=o,e.readFields(n,this,t)}function n(e,t,r){1==e?t.id=r.readVarint():2==e?i(r,t):3==e?t.type=r.readVarint():4==e&&(t._geometry=r.pos)}function i(e,t){for(var r=e.readVarint()+e.pos;e.pos=t)return[e];for(var r,n,i=[],o=0;t>o;o++){var s=a(e[o]);0!==s&&(void 0===n&&(n=0>s),n===0>s?(r&&i.push(r),r=[e[o]]):r.push(e[o]))}return r&&i.push(r),i}function a(e){for(var t,r,n=0,i=0,o=e.length,a=o-1;o>i;a=i++)t=e[i],r=e[a],n+=(r.x-t.x)*(t.y+r.y);return n}var s=e("point-geometry");t.exports=r,r.types=["Unknown","Point","LineString","Polygon"],r.prototype.loadGeometry=function(){var e=this._pbf;e.pos=this._geometry;for(var t,r=e.readVarint()+e.pos,n=1,i=0,o=0,a=0,u=[];e.pos>3}if(i--,1===n||2===n)o+=e.readSVarint(),a+=e.readSVarint(),1===n&&(t&&u.push(t),t=[]),t.push(new s(o,a));else{if(7!==n)throw new Error("unknown command "+n);t&&t.push(t[0].clone())}}return t&&u.push(t),u},r.prototype.bbox=function(){var e=this._pbf;e.pos=this._geometry;for(var t=e.readVarint()+e.pos,r=1,n=0,i=0,o=0,a=1/0,s=-1/0,u=1/0,l=-1/0;e.pos>3}if(n--,1===r||2===r)i+=e.readSVarint(),o+=e.readSVarint(),a>i&&(a=i),i>s&&(s=i),u>o&&(u=o),o>l&&(l=o);else if(7!==r)throw new Error("unknown command "+r)}return[a,u,s,l]},r.prototype.toGeoJSON=function(e,t,n){function i(e){for(var t=0;t>3;t=1===n?e.readString():2===n?e.readFloat():3===n?e.readDouble():4===n?e.readVarint64():5===n?e.readVarint():6===n?e.readSVarint():7===n?e.readBoolean():null}return t}var o=e("./vectortilefeature.js");t.exports=r,r.prototype.feature=function(e){if(0>e||e>=this._features.length)throw new Error("feature index out of bounds");this._pbf.pos=this._features[e];var t=this._pbf.readVarint()+this._pbf.pos;return new o(this._pbf,t,this.extent,this._keys,this._values)}},{"./vectortilefeature.js":194}],196:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function i(e,t,r){var n=u[0],i=u[1];return e[0]<=n.x+r&&t[0]<=n.x+r||e[0]>=i.x-r&&t[0]>=i.x-r||e[1]>=n.y-r&&t[1]>=n.y-r||e[1]<=i.y+r&&t[1]<=i.y+r?!0:!1}function o(e,t){t=t||0;var r=u[0],n=u[1];return e[0]<=r.x+t||e[0]>=n.x-t||e[1]>=r.y-t||e[1]<=n.y+t}Object.defineProperty(r,"__esModule",{value:!0}),r.default_uvs=r.tile_bounds=void 0,r.outsideTile=i,r.isCoordOutsideTile=o;{var a=e("../geo"),s=n(a),u=r.tile_bounds=[{x:0,y:0},{x:s.default.tile_scale,y:-s.default.tile_scale}];r.default_uvs=[0,0,1,1]}},{"../geo":201}],197:[function(e,t,r){"use strict";function n(e,t,r,n,a){var s=n.texcoord_index,u=n.position_index,l=n.shape_index,c=n.offset_index,f=n.offsets_index,h=n.pre_angles_index,d=n.angles_index,p=a.quad,_=a.quad_normalize,m=a.offset,g=a.offsets,v=a.pre_angles,y=a.angle,b=a.angles,x=a.curve,w=a.texcoord_scale,k=a.texcoord_normalize,A=a.pre_angles_normalize,T=a.angles_normalize,E=a.offsets_normalize;_=_||1;var S=p[0]/2*_,R=p[1]/2*_,M=[[-S,-R],[S,-R],[S,R],[-S,R]],O=t.vertex_elements,z=t.vertex_count,P=void 0;if(s){k=k||1;var L=w||o.default_uvs,j=i(L,4),N=j[0],I=j[1],C=j[2],F=j[3];P=[[N,I],[C,I],[C,F],[N,F]]}for(var U=0,D=e.length,B=0;D>B;B++){for(var G=e[B],V=0;4>V;V++)s&&(r[s+0]=P[V][0]*k,r[s+1]=P[V][1]*k),r[u+0]=G[0],r[u+1]=G[1],r[l+0]=M[V][0],r[l+1]=M[V][1],r[l+2]=y,r[c+0]=m[0],r[c+1]=m[1],x&&(r[h+0]=A*v[0],r[h+1]=A*v[1],r[h+2]=A*v[2],r[h+3]=A*v[3],r[d+0]=T*b[0],r[d+1]=T*b[1],r[d+2]=T*b[2],r[d+3]=T*b[3],r[f+0]=E*g[0],r[f+1]=E*g[1],r[f+2]=E*g[2],r[f+3]=E*g[3]),t.addVertex(r);O.push(z+0),O.push(z+1),O.push(z+2),O.push(z+2),O.push(z+3),O.push(z+0),z+=4,U+=2}return U}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){var r=[],n=!0,i=!1,o=void 0;try{for(var a,s=e[Symbol.iterator]();!(n=(a=s.next()).done)&&(r.push(a.value),!t||r.length!==t);n=!0);}catch(u){i=!0,o=u}finally{try{!n&&s["return"]&&s["return"]()}finally{if(i)throw o}}return r}return function(t,r){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();r.buildQuadsForPoints=n;var o=e("./common")},{"./common":196}],198:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function i(e,t,r,n){var i=n.texcoord_index,o=n.texcoord_scale,u=n.texcoord_normalize,c=t.vertex_elements;if(i){u=u||1;var f=o||h.default_uvs,d=s(f,4),_=d[0],m=d[1],g=d[2],v=d[3]}for(var y=0,b=e.length,x=0;b>x;x++){var w=t.vertex_count,k=e[x];if(i)var A=l.default.findBoundingBox(k),T=s(A,4),E=T[0],S=T[1],R=T[2],M=T[3],O=R-E,z=M-S,P=(g-_)/O,L=(v-m)/z;for(var j=0;jL;L++)for(var j=e[L],N=0;NN;N++){var I=N,C=N+1;if(k=e[I],A=e[C],!w.default.isEqual(k,A)){if(c&&T.outsideTile(k,A,_)){p(k,M,[1,O],t),p(k,w.default.neg(M),[0,O],t),d(1,t);var F=s(e,I+1,_);return void(F&&r.push(F))}E=M,M=w.default.normalize(w.default.perp(k,A)),n===R.miter?f(O,k,E,M,g,!1,t):h(n,O,k,E,M,!1,t),O+=m*w.default.length(w.default.sub(A,k))}}k=A,E=M,o?(M=w.default.normalize(w.default.perp(k,e[1])),l(k,E,M,n,O,t)):(p(k,E,[1,O],t),p(k,w.default.neg(E),[0,O],t),d(1,t),T.isCoordOutsideTile(k)||v(k,O,E,i,!1,t))}}}function a(e){if(T.isCoordOutsideTile(e[0]))return 0;for(var t=0;t=2?e.slice(n):!1}function u(e,t,r,n,i){if(void 0===n||T.isCoordOutsideTile(e))p(e,r,[1,0],i),p(e,w.default.neg(r),[0,0],i);else{var o=0;n===R.miter?f(o,e,t,r,i.miter_len_sq,!0,i):h(n,o,e,t,r,!0,i)}}function l(e,t,r,n,i,o){if(T.isCoordOutsideTile(e))p(e,t,[1,i],o),p(e,w.default.neg(t),[0,i],o),d(1,o);else{var a=c(t,r);n===R.miter&&w.default.lengthSq(a)>o.miter_len_sq&&(n=R.bevel),n===R.miter?(p(e,a,[1,i],o),p(e,w.default.neg(a),[0,i],o),d(1,o)):(p(e,t,[1,i],o),p(e,w.default.neg(t),[0,i],o),d(1,o))}}function c(e,t){var r=w.default.normalize(w.default.add(e,t)),n=2/(1+Math.abs(w.default.dot(e,r)));return w.default.mult(r,n*n)}function f(e,t,r,n,i,o,a){var s=c(r,n);w.default.lengthSq(s)>i?h(R.bevel,e,t,r,n,o,a):(p(t,s,[1,e],a),p(t,w.default.neg(s),[0,e],a),o||d(1,a))}function h(e,t,r,n,i,o,a){var s=c(n,i),u=i[0]*n[1]-i[1]*n[0]>0;u?(p(r,s,[1,t],a),p(r,w.default.neg(n),[0,t],a),o||d(1,a),e===R.bevel?g(r,w.default.neg(n),s,w.default.neg(i),[0,t],[1,t],[0,t],a):e===R.round&&m(r,w.default.neg(n),s,w.default.neg(i),[0,t],[1,t],[0,t],!1,a),p(r,s,[1,t],a),p(r,w.default.neg(i),[0,t],a)):(p(r,n,[1,t],a),p(r,w.default.neg(s),[0,t],a),o||d(1,a),e===R.bevel?g(r,n,w.default.neg(s),i,[1,t],[0,t],[1,t],a):e===R.round&&m(r,n,w.default.neg(s),i,[1,t],[0,t],[1,t],!1,a),p(r,i,[1,t],a),p(r,w.default.neg(s),[0,t],a))}function d(e,t){for(var r=t.vertex_data.vertex_elements,n=t.vertex_data.vertex_count,i=n-2*e-2,o=0;e>o;o++)r.push(i+2*o+2),r.push(i+2*o+1),r.push(i+2*o+0),r.push(i+2*o+2),r.push(i+2*o+3),r.push(i+2*o+1),t.geom_count+=2}function p(e,t,r,n){var i=n.vertex_template,o=n.vertex_data;_(i,e,r,t,n),o.addVertex(i)}function _(e,t,r,n,i){e[0]=t[0],e[1]=t[1],i.texcoord_index&&r&&(e[i.texcoord_index+0]=r[0]*i.texcoord_normalize,e[i.texcoord_index+1]=r[1]*i.texcoord_normalize),i.scaling_index&&(e[i.scaling_index+0]=n[0]*i.scaling_normalize,e[i.scaling_index+1]=n[1]*i.scaling_normalize,e[i.scaling_index+2]=i.half_width)}function m(e,t,r,n,i,o,a,s,u){for(var l=t[0]*n[1]-t[1]*n[0],c=w.default.dot(t,n),f=Math.atan2(l,c);f>=Math.PI;)f-=2*Math.PI;var h=y(f,u.half_width);if(!(1>h)){var d=u.vertex_data.vertex_count,_=u.vertex_data.vertex_elements;p(e,r,o,u),p(e,t,i,u);var m=t;if(void 0!==u.texcoord_index){var g;if(s){g=[];var v=w.default.sub(i,o)}else{g=w.default.set(i);var b=w.default.div(w.default.sub(a,i),h)}}for(var x=f/h,k=0;h>k;k++)m=w.default.rot(m,x),void 0!==u.texcoord_index&&(s?(v=w.default.rot(v,x),g[0]=v[0]+o[0],g[1]=v[1]*u.texcoord_width*u.v_scale+o[1]):g=w.default.add(g,b)),p(e,m,g,u),_.push(d+k+(l>0?2:1)),_.push(d),_.push(d+k+(l>0?1:2))}}function g(e,t,r,n,i,o,a,s){var u=s.vertex_data.vertex_count;p(e,r,o,s),p(e,t,i,s),p(e,n,a,s);var l=t[0]*n[1]-t[1]*n[0]>0,c=s.vertex_data.vertex_elements;l?(c.push(u+2),c.push(u+0),c.push(u+1)):(c.push(u+1),c.push(u+0),c.push(u+2))}function v(e,t,r,n,i,o){var a=w.default.neg(r);switch(n){case S.square:var s;i?(s=[r[1],-r[0]],p(e,w.default.add(r,s),[1,t],o),p(e,w.default.add(a,s),[0,t],o),t+=.5*o.texcoord_width*o.v_scale,p(e,r,[1,t],o),p(e,a,[0,t],o)):(s=[-r[1],r[0]],p(e,r,[1,t],o),p(e,a,[0,t],o),t+=.5*o.texcoord_width*o.v_scale,p(e,w.default.add(r,s),[1,t],o),p(e,w.default.add(a,s),[0,t],o)),d(1,o);break;case S.round:var u,l,c,f,h;i?(u=r,l=a,void 0!==o.texcoord_index&&(t+=.5*o.texcoord_width*o.v_scale,c=[1,t],f=[0,t],h=[.5,t])):(u=a,l=r,void 0!==o.texcoord_index&&(c=[0,t],f=[1,t],h=[.5,t])),m(e,u,E,l,c,h,f,!0,o);break;case S.butt:return}}function y(e,t){0>e&&(e=-e);var r=t>2*M.MIN_FAN_WIDTH?Math.log2(t/M.MIN_FAN_WIDTH):1;return Math.ceil(e/Math.PI*r)}function b(e,t){for(var r=[],n=0;n2&&void 0!==arguments[2]?arguments[2]:{};a(this,e),this.view=r,this.position=n.position,this.zoom=n.zoom}return u(e,[{key:"update",value:function(){}},{key:"setupProgram",value:function(){}},{key:"updateView",value:function(){if(this.position||this.zoom){var e={};this.position&&(e={lng:this.position[0],lat:this.position[1],zoom:this.position[2]}),this.zoom&&(e.zoom=this.zoom),this.view.setView(e)}}},{key:"setupMatrices",value:function(e,t){d.mat4.multiply(e.model_view32,this.view_matrix,e.model),t.uniform("Matrix4fv","u_modelView",e.model_view32),d.mat3.normalFromMat4(e.normal32,e.model_view32),d.mat3.invert(e.inverse_normal32,e.normal32),t.uniform("Matrix3fv","u_normalMatrix",e.normal32),t.uniform("Matrix3fv","u_inverseNormalMatrix",e.inverse_normal32) }}],[{key:"create",value:function(e,t,r){switch(r.type){case"isometric":return new m(e,t,r);case"flat":return new g(e,t,r);case"perspective":default:return new _(e,t,r)}}}]),e}();r.default=p;var _=function(e){function t(e,r){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};a(this,t);var o=i(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,r,n));return o.type="perspective",o.focal_length=n.focal_length,o.fov=n.fov,o.focal_length||o.fov||(o.focal_length=[[16,2],[17,2.5],[18,3],[19,4],[20,6]]),o.vanishing_point=n.vanishing_point||[0,0],o.vanishing_point=o.vanishing_point.map(parseFloat),o.vanishing_point_skew=[],o.position_meters=null,o.view_matrix=new Float64Array(16),o.projection_matrix=new Float32Array(16),h.default.replaceBlock("camera","\n uniform mat4 u_projection;\n uniform vec3 u_eye;\n uniform vec2 u_vanishing_point;\n\n void cameraProjection (inout vec4 position) {\n position = u_projection * position;\n }"),o}return o(t,e),u(t,[{key:"constrainCamera",value:function(e){var t=e.view_height,r=e.height,n=e.focal_length,i=e.fov;return r?(n=2*r/t,i=2*Math.atan(1/n)):(n?i=2*Math.atan(1/n):i&&(i=i*Math.PI/180,n=1/Math.tan(i/2)),r=t/2*n),{view_height:t,height:r,focal_length:n,fov:i}}},{key:"updateMatrices",value:function(){var e=this.view.size.css.height*this.view.meters_per_pixel,t=this.constrainCamera({view_height:e,focal_length:c.default.interpolate(this.view.zoom,this.focal_length),fov:c.default.interpolate(this.view.zoom,this.fov)}),r=t.height,n=t.fov,i=[this.view.center.meters.x,this.view.center.meters.y,r];this.position_meters=i,d.mat4.lookAt(this.view_matrix,d.vec3.fromValues(i[0],i[1],0),d.vec3.fromValues(i[0],i[1],-1),d.vec3.fromValues(0,1,0)),d.mat4.perspective(this.projection_matrix,n,this.view.aspect,1,2*r),this.vanishing_point_skew[0]=this.vanishing_point[0]/this.view.size.css.width,this.vanishing_point_skew[1]=this.vanishing_point[1]/this.view.size.css.height,this.projection_matrix[8]=2*-this.vanishing_point_skew[0],this.projection_matrix[9]=2*-this.vanishing_point_skew[1],d.mat4.translate(this.projection_matrix,this.projection_matrix,d.vec3.fromValues(e/2*this.view.aspect*2*-this.vanishing_point_skew[0],e/2*2*-this.vanishing_point_skew[1],0)),d.mat4.translate(this.projection_matrix,this.projection_matrix,d.vec3.fromValues(0,0,-r))}},{key:"update",value:function(){s(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"update",this).call(this),this.updateMatrices()}},{key:"setupProgram",value:function(e){e.uniform("Matrix4fv","u_projection",this.projection_matrix),e.uniform("3f","u_eye",[0,0,this.position_meters[2]]),e.uniform("2fv","u_vanishing_point",this.vanishing_point_skew)}}]),t}(p),m=function(e){function t(e,r){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};a(this,t);var o=i(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,r,n));return o.type="isometric",o.axis=n.axis||{x:0,y:1},2===o.axis.length&&(o.axis={x:o.axis[0],y:o.axis[1]}),o.position_meters=null,o.viewport_height=null,o.view_matrix=new Float64Array(16),o.projection_matrix=new Float32Array(16),h.default.replaceBlock("camera","\n uniform mat4 u_projection;\n uniform vec3 u_eye;\n uniform vec2 u_vanishing_point;\n\n void cameraProjection (inout vec4 position) {\n position = u_projection * position;\n // position.xy += position.z * u_isometric_axis;\n\n // Reverse z for depth buffer so up is negative,\n // and scale down values so objects higher than one screen height will not get clipped\n // pull forward slightly to avoid going past far clipping plane\n position.z = -position.z / 100. + 1. - 0.001;\n }"),o}return o(t,e),u(t,[{key:"update",value:function(){s(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"update",this).call(this),this.viewport_height=this.view.size.css.height*this.view.meters_per_pixel;var e=[this.view.center.meters.x,this.view.center.meters.y,this.viewport_height];this.position_meters=e,d.mat4.identity(this.view_matrix),d.mat4.translate(this.view_matrix,this.view_matrix,d.vec3.fromValues(-e[0],-e[1],0)),d.mat4.identity(this.projection_matrix),this.projection_matrix[8]=this.axis.x/this.view.aspect,this.projection_matrix[9]=this.axis.y,d.mat4.scale(this.projection_matrix,this.projection_matrix,d.vec3.fromValues(2/this.view.size.meters.x,2/this.view.size.meters.y,2/this.view.size.meters.y))}},{key:"setupProgram",value:function(e){e.uniform("Matrix4fv","u_projection",this.projection_matrix),e.uniform("3fv","u_eye",[0,0,this.viewport_height]),e.uniform("2fv","u_vanishing_point",[0,0])}}]),t}(p),g=function(e){function t(e,r){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};a(this,t);var o=i(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,r,n));return o.type="flat",o}return o(t,e),u(t,[{key:"update",value:function(){this.axis.x=0,this.axis.y=0,s(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"update",this).call(this)}}]),t}(m)},{"./gl/shader_program":207,"./utils/gl-matrix":257,"./utils/utils":269}],201:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n,i=function(){function e(e,t){var r=[],n=!0,i=!1,o=void 0;try{for(var a,s=e[Symbol.iterator]();!(n=(a=s.next()).done)&&(r.push(a.value),!t||r.length!==t);n=!0);}catch(u){i=!0,o=u}finally{try{!n&&s["return"]&&s["return"]()}finally{if(i)throw o}}return r}return function(t,r){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();r.default=n={},n.default_source_max_zoom=18,n.default_view_max_zoom=20,n.tile_size=256,n.half_circumference_meters=20037508.342789244,n.circumference_meters=2*n.half_circumference_meters,n.min_zoom_meters_per_pixel=n.circumference_meters/n.tile_size;var o=[];n.metersPerPixel=function(e){return o[e]=o[e]||n.min_zoom_meters_per_pixel/Math.pow(2,e),o[e]};var a=[];n.metersPerTile=function(e){return a[e]=a[e]||n.circumference_meters/Math.pow(2,e),a[e]},n.tile_scale=4096,n.units_per_pixel=n.tile_scale/n.tile_size,n.height_scale=16;var s=[];n.unitsPerMeter=function(e){return s[e]=s[e]||n.tile_scale/(n.tile_size*n.metersPerPixel(e)),s[e]},n.metersForTile=function(e){return{x:e.x*n.circumference_meters/Math.pow(2,e.z)-n.half_circumference_meters,y:-(e.y*n.circumference_meters/Math.pow(2,e.z)-n.half_circumference_meters)}},n.tileForMeters=function(e,t){var r=i(e,2),o=r[0],a=r[1];return{x:Math.floor((o+n.half_circumference_meters)/(n.circumference_meters/Math.pow(2,t))),y:Math.floor((-a+n.half_circumference_meters)/(n.circumference_meters/Math.pow(2,t))),z:t}},n.wrapTile=function(e){var t=e.x,r=e.y,n=e.z,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{x:!0,y:!1},o=(1<e.ne.x||t.ne.xe.ne.y||t.ne.ya;a++){var s=e[0][a];s[0]r&&(r=s[0]),s[1]>i&&(i=s[1])}return[t,n,r,i]},n.geometryType=function(e){return"Polygon"===e||"MultiPolygon"===e?"polygon":"LineString"===e||"MultiLineString"===e?"line":"Point"===e||"MultiPoint"===e?"point":void 0},n.centroid=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:!0;if(e&&0!==e.length){var r=0,n=0,i=0,o=e[0],a=o.length,s=void 0;t&&(s=o[0],o=o.map(function(e){return[e[0]-s[0],e[1]-s[1]]}));for(var u=0,l=a-1;a>u;l=u,u++){var c=o[u],f=o[l],h=c[1]*f[0]-f[1]*c[0];r+=(c[0]+f[0])*h,n+=(c[1]+f[1])*h,i+=3*h}var d=[r/i,n/i];return t&&(d[0]+=s[0],d[1]+=s[1]),d}},n.multiCentroid=function(e){for(var t=e.length,r=[0,0],i=0;in;n++){var i=e[n],o=e[n+1];t+=i[0]*o[1]-o[0]*i[1]}return t+=e[r-1][0]*e[0][1]-e[0][0]*e[r-1][1]},n.polygonRingArea=function(e){return Math.abs(n.signedPolygonRingAreaSum(e))/2},n.polygonArea=function(e){return e?n.polygonRingArea(e[0]):void 0},n.multiPolygonArea=function(e){for(var t=0,r=0;r0?"CW":0>t?"CCW":void 0}},{}],202:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n;r.default=n={},n.BYTE=5120,n.UNSIGNED_BYTE=5121,n.SHORT=5122,n.UNSIGNED_SHORT=5123,n.INT=5124,n.UNSIGNED_INT=5125,n.FLOAT=5126},{}],203:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n;r.default=n={};var i=0;n.getContext=function(e,t){var r=!1;null==e&&(e=document.createElement("canvas"),e.style.position="absolute",e.style.top=0,e.style.left=0,e.style.zIndex=-1,document.body.appendChild(e),r=!0);var o=e.getContext("webgl",t)||e.getContext("experimental-webgl",t);if(!o)throw new Error("Couldn't create WebGL context.");return o._tangram_id=i++,r?(n.resize(o,window.innerWidth,window.innerHeight,t.device_pixel_ratio),window.addEventListener("resize",function(){n.resize(o,window.innerWidth,window.innerHeight,t.device_pixel_ratio)})):n.resize(o,parseFloat(e.style.width),parseFloat(e.style.height),t.device_pixel_ratio),o},n.resize=function(e,t,r,n){n=n||window.devicePixelRatio||1,e.canvas.style.width=t+"px",e.canvas.style.height=r+"px",e.canvas.width=Math.round(t*n),e.canvas.height=Math.round(r*n),e.bindFramebuffer(e.FRAMEBUFFER,null),e.viewport(0,0,e.canvas.width,e.canvas.height)}},{}],204:[function(e,t,r){"use strict";function n(e,t){var r=i.filter(function(t){return t[0]===e})[0];return r=r&&r[1],r||(i.push([e,{}]),r=i[i.length-1][1]),r[t]||(r[t]=e.getExtension(t)),r[t]}Object.defineProperty(r,"__esModule",{value:!0}),r.default=n;var i=[]},{}],205:[function(e,t,r){"use strict";function n(e){if(Array.isArray(e)){for(var t=0,r=Array(e.length);t=2&&o.length<=4?t.push({type:"vec"+o.length,method:o.length+"fv",name:r,value:o,key:i,uniforms:e}):o.length>4&&t.push({type:"float[]",method:"1fv",name:r+"[0]",value:o,key:i,uniforms:e});else if("string"==typeof o[0])for(n=0;n=2&&o[0].length<=4)for(n=0;n=2&&t.length<=4?r="vec"+t.length:(r="float",n=t.length):"string"==typeof t[0]&&(r="sampler2D",n=t.length);else if("boolean"==typeof t)r="bool";else{if("string"!=typeof t)return;r="sampler2D"}var i="";return i+=r+" "+e,n&&(i+="["+n+"]"),i+=";\n"},i.defineUniform=function(e,t){var r=i.defineVariable(e,t);if(r)return"uniform "+r},i.isUniformDefined=function(e,t){var r=new RegExp("uniform[^;]+(?:{[\\s\\S]*})?[^;]*\\b"+e+"\\b","g");return t.match(r)?!0:!1},i.isSymbolReferenced=function(e,t){var r=new RegExp("\\b"+e+"\\b","g");return t.search(r)>=0?!0:!1},i.expandVec3=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,r=void 0;if(Array.isArray(e)){if(2!==e.length)return e;r=[].concat(n(e),[t]).map(parseFloat)}else r=[e,e,e].map(parseFloat);return r&&r.every(function(e){return"number"==typeof e&&!isNaN(e)})?r:void 0},i.expandVec4=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,r=void 0;if(Array.isArray(e)){if(3!==e.length)return e;r=[].concat(n(e),[t]).map(parseFloat)}else r=[e,e,e,t].map(parseFloat);return r&&r.every(function(e){return"number"==typeof e&&!isNaN(e)})?r:void 0}},{}],206:[function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r0?"precision highp float;\n":"precision mediump float;\n",i.TANGRAM_VERTEX_SHADER=!0,i.TANGRAM_FRAGMENT_SHADER=!1,this.computed_vertex_source=f+e.buildDefineString(i)+this.computed_vertex_source,i.TANGRAM_VERTEX_SHADER=!1,i.TANGRAM_FRAGMENT_SHADER=!0,this.computed_fragment_source=e.buildExtensionString(n)+f+e.buildDefineString(i)+this.computed_fragment_source,this.computed_vertex_source=this.computed_vertex_source.replace(w,""),this.computed_fragment_source=this.computed_fragment_source.replace(w,"");try{this.program=e.updateProgram(this.gl,this.program,this.computed_vertex_source,this.computed_fragment_source),this.compiled=!0,this.compiling=!1}catch(d){throw this.program=null,this.compiled=!1,this.compiling=!1,this.error=d,("vertex"===d.type||"fragment"===d.type)&&(this.shader_errors=d.errors,this.shader_errors.forEach(function(e){e.type=d.type,e.block=t.block(d.type,e.line)})),d}this.computed_vertex_source=null,this.computed_fragment_source=null,this.use(),this.refreshUniforms(),this.refreshAttributes()}},{key:"buildDefineList",value:function(){var t,r={};for(t in e.defines)r[t]=e.defines[t];for(t in this.defines)r[t]=this.defines[t];return r}},{key:"buildShaderBlockList",value:function(){var t=void 0,r={};for(t in e.blocks)if(r[t]=[],Array.isArray(e.blocks[t])){var n;(n=r[t]).push.apply(n,i(e.blocks[t].map(function(e,r){return{key:t,source:e,num:r,scope:"ShaderProgram"}})))}else r[t]=[{key:t,source:e.blocks[t],num:0,scope:"ShaderProgram"}];for(t in this.blocks)if(r[t]=r[t]||[],Array.isArray(this.blocks[t]))for(var o=this.block_scopes&&this.block_scopes[t]||[],a=null,s=0,u=0;u0&&(this.computed_vertex_source=i.join("\n")+this.computed_vertex_source),o.length>0&&(this.computed_fragment_source=o.join("\n")+this.computed_fragment_source)}}},{key:"setUniforms",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:!0;if(this.compiled){t&&(this.texture_unit=0);for(var r=c.default.parseUniforms(e),n=0;ni&&i1?r={scope:a[1],name:a[2],num:a[3]}:(a=o.match(/\/\/ tangram-block-end: ([A-Za-z0-9_-]+), ([A-Za-z0-9_-]+), (\d+)/),a&&a.length>1&&(r=null)),r&&(r.line=null==r.line?-1:r.line+1,r.source=o)}return r}},{key:"checkExtensions",value:function(){var e=this,t=[];return this.extensions.forEach(function(r){var n=p.default(e.gl,r),i="TANGRAM_EXTENSION_"+r;e.defines[i]=null!=n,n?t.push(r):u.default("debug","Could not enable extension '"+r+"'")}),t}}]),e}();r.default=k,k.id=0,k.current=null,k.defines={},k.blocks={},k.reset=function(){k.programs_by_source={},k.shaders_by_source={}},k.reset(),k.buildDefineString=function(e){var t="";for(var r in e)null!=e[r]&&e[r]!==!1&&(t+="boolean"==typeof e[r]&&e[r]===!0?"#define "+r+"\n":"number"==typeof e[r]&&Math.floor(e[r])===e[r]?"#define "+r+" "+e[r].toFixed(1)+"\n":"#define "+r+" "+e[r]+"\n");return t},k.buildExtensionString=function(e){e=e||[];var t="";return e.forEach(function(e){t+="#ifdef GL_"+e+"\n#extension GL_"+e+" : enable\n#endif\n"}),t},k.addBlock=function(e){var t;k.blocks[e]=k.blocks[e]||[];for(var r=arguments.length,n=Array(r>1?r-1:0),i=1;r>i;i++)n[i-1]=arguments[i];(t=k.blocks[e]).push.apply(t,n)},k.removeBlock=function(e){k.blocks[e]=[]},k.replaceBlock=function(e){k.removeBlock(e);for(var t=arguments.length,r=Array(t>1?t-1:0),n=1;t>n;n++)r[n-1]=arguments[n];k.addBlock.apply(k,[e].concat(r))},k.updateProgram=function(e,t,r,n){var i=m.default(e._tangram_id+"::"+r+"::"+n);if(k.programs_by_source[i])return u.default("trace","Reusing identical source GL program object"),k.programs_by_source[i];var o=k.createShader(e,r,e.VERTEX_SHADER),a=k.createShader(e,n,e.FRAGMENT_SHADER);if(e.useProgram(null),null!=t)for(var s=e.getAttachedShaders(t),l=0;l2&&void 0!==arguments[2]?arguments[2]:{};i(this,e),n=e.sliceOptions(n),this.gl=t,this.texture=t.createTexture(),this.texture&&(this.valid=!0),this.bind(),this.name=r,this.retain_count=0,this.config_type=null,this.loading=null,this.loaded=!1,this.filtering=n.filtering,this.sprites=n.sprites,this.texcoords={},this.sizes={},this.setData(1,1,new Uint8Array([0,0,0,255]),{filtering:"nearest"}),e.textures[this.name]&&(this.retain_count=e.textures[this.name].retain_count,e.textures[this.name].retain_count=0,e.textures[this.name].destroy()),e.textures[this.name]=this,e.texture_configs[this.name]=JSON.stringify(Object.assign({name:r},n)),this.load(n),s.default("trace","creating Texture "+this.name)}return o(e,[{key:"destroy",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=t.force;return this.retain_count>0&&!r?void s.default("error","Texture '"+this.name+"': destroying texture with retain count of '"+this.retain_count+"'"):void(this.valid&&(this.gl.deleteTexture(this.texture),this.texture=null,delete this.data,this.data=null,delete e.textures[this.name],delete e.texture_configs[this.name],this.valid=!1,s.default("trace","destroying Texture "+this.name)))}},{key:"retain",value:function(){this.retain_count++}},{key:"release",value:function(){this.retain_count<=0&&s.default("error","Texture '"+this.name+"': releasing texture with retain count of '"+this.retain_count+"'"),this.retain_count--,this.retain_count<=0&&this.destroy()}},{key:"bind",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;this.valid&&(e.activeUnit!==t&&(this.gl.activeTexture(this.gl.TEXTURE0+t),e.activeUnit=t,e.boundTexture=null),e.boundTexture!==this.texture&&(this.gl.bindTexture(this.gl.TEXTURE_2D,this.texture),e.boundTexture=this.texture))}},{key:"load",value:function(e){var t=this;return e?(this.loading=null,"string"==typeof e.url?(this.config_type="url",this.setUrl(e.url,e)):e.element?(this.config_type="element",this.setElement(e.element,e)):e.data&&e.width&&e.height&&(this.config_type="data",this.setData(e.width,e.height,e.data,e)),this.loading=this.loading&&this.loading.then(function(){return t.calculateSprites(),t})||Promise.resolve(this),this.loading):this.loading||Promise.resolve(this)}},{key:"setUrl",value:function(t){var r=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.valid?(this.url=t,this.loading=new Promise(function(t){var i=new Image;i.onload=function(){try{r.setElement(i,n)}catch(o){r.loaded=!1,s.default("warn","Texture '"+r.name+"': failed to load url: '"+r.url+"'",o,n),e.trigger("warning",{message:"Failed to load texture from "+r.url,error:o,texture:n})}r.loaded=!0,t(r)},i.onerror=function(i){r.loaded=!1,s.default("warn","Texture '"+r.name+"': failed to load url: '"+r.url+"'",i,n),e.trigger("warning",{message:"Failed to load texture from "+r.url,error:i,texture:n}),t(r)},l.default.isSafari()&&"data:"===r.url.slice(0,5)||(i.crossOrigin="anonymous"),i.src=r.url}),this.loading):void 0}},{key:"setData",value:function(e,t,r){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return this.width=e,this.height=t,Array.isArray(r)&&(r=new Uint8Array(r)),this.update(r,n),this.setFiltering(n),this.loaded=!0,this.loading=Promise.resolve(this),this.loading}},{key:"setElement",value:function(t,r){var n=t;if("string"==typeof t&&(t=document.querySelector(t)),t instanceof HTMLCanvasElement||t instanceof HTMLImageElement||t instanceof HTMLVideoElement)this.update(t,r),this.setFiltering(r);else{this.loaded=!1;var i="the 'element' parameter (`element: "+JSON.stringify(n)+"`) must be a CSS ";i+="selector string, or a , or