{"version":3,"file":"protocol.68fdd897.mjs","sources":["../../src/proto/google/protobuf/duration.ts","../../src/proto/stream.ts","../../src/proto/testing.ts","../../src/common.ts","../../src/stream.ts","../../src/config.ts"],"sourcesContent":["// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v1.176.0\n//   protoc               unknown\n// source: google/protobuf/duration.proto\n\n/* eslint-disable */\nimport Long from \"long\";\nimport _m0 from \"protobufjs/minimal.js\";\n\nexport const protobufPackage = \"google.protobuf\";\n\n/**\n * A Duration represents a signed, fixed-length span of time represented\n * as a count of seconds and fractions of seconds at nanosecond\n * resolution. It is independent of any calendar and concepts like \"day\"\n * or \"month\". It is related to Timestamp in that the difference between\n * two Timestamp values is a Duration and it can be added or subtracted\n * from a Timestamp. Range is approximately +-10,000 years.\n *\n * # Examples\n *\n * Example 1: Compute Duration from two Timestamps in pseudo code.\n *\n *     Timestamp start = ...;\n *     Timestamp end = ...;\n *     Duration duration = ...;\n *\n *     duration.seconds = end.seconds - start.seconds;\n *     duration.nanos = end.nanos - start.nanos;\n *\n *     if (duration.seconds < 0 && duration.nanos > 0) {\n *       duration.seconds += 1;\n *       duration.nanos -= 1000000000;\n *     } else if (duration.seconds > 0 && duration.nanos < 0) {\n *       duration.seconds -= 1;\n *       duration.nanos += 1000000000;\n *     }\n *\n * Example 2: Compute Timestamp from Timestamp + Duration in pseudo code.\n *\n *     Timestamp start = ...;\n *     Duration duration = ...;\n *     Timestamp end = ...;\n *\n *     end.seconds = start.seconds + duration.seconds;\n *     end.nanos = start.nanos + duration.nanos;\n *\n *     if (end.nanos < 0) {\n *       end.seconds -= 1;\n *       end.nanos += 1000000000;\n *     } else if (end.nanos >= 1000000000) {\n *       end.seconds += 1;\n *       end.nanos -= 1000000000;\n *     }\n *\n * Example 3: Compute Duration from datetime.timedelta in Python.\n *\n *     td = datetime.timedelta(days=3, minutes=10)\n *     duration = Duration()\n *     duration.FromTimedelta(td)\n *\n * # JSON Mapping\n *\n * In JSON format, the Duration type is encoded as a string rather than an\n * object, where the string ends in the suffix \"s\" (indicating seconds) and\n * is preceded by the number of seconds, with nanoseconds expressed as\n * fractional seconds. For example, 3 seconds with 0 nanoseconds should be\n * encoded in JSON format as \"3s\", while 3 seconds and 1 nanosecond should\n * be expressed in JSON format as \"3.000000001s\", and 3 seconds and 1\n * microsecond should be expressed in JSON format as \"3.000001s\".\n */\nexport interface Duration {\n  /**\n   * Signed seconds of the span of time. Must be from -315,576,000,000\n   * to +315,576,000,000 inclusive. Note: these bounds are computed from:\n   * 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years\n   */\n  readonly seconds?:\n    | bigint\n    | undefined;\n  /**\n   * Signed fractions of a second at nanosecond resolution of the span\n   * of time. Durations less than one second are represented with a 0\n   * `seconds` field and a positive or negative `nanos` field. For durations\n   * of one second or more, a non-zero value for the `nanos` field must be\n   * of the same sign as the `seconds` field. Must be from -999,999,999\n   * to +999,999,999 inclusive.\n   */\n  readonly nanos?: number | undefined;\n}\n\nfunction createBaseDuration(): Duration {\n  return { seconds: BigInt(\"0\"), nanos: 0 };\n}\n\nexport const Duration = {\n  encode(message: Duration, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n    if (message.seconds !== undefined && message.seconds !== BigInt(\"0\")) {\n      if (BigInt.asIntN(64, message.seconds) !== message.seconds) {\n        throw new globalThis.Error(\"value provided for field message.seconds of type int64 too large\");\n      }\n      writer.uint32(8).int64(message.seconds.toString());\n    }\n    if (message.nanos !== undefined && message.nanos !== 0) {\n      writer.uint32(16).int32(message.nanos);\n    }\n    return writer;\n  },\n\n  decode(input: _m0.Reader | Uint8Array, length?: number): Duration {\n    const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseDuration() as any;\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1:\n          if (tag !== 8) {\n            break;\n          }\n\n          message.seconds = longToBigint(reader.int64() as Long);\n          continue;\n        case 2:\n          if (tag !== 16) {\n            break;\n          }\n\n          message.nanos = reader.int32();\n          continue;\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skipType(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Duration {\n    return {\n      seconds: isSet(object.seconds) ? BigInt(object.seconds) : BigInt(\"0\"),\n      nanos: isSet(object.nanos) ? globalThis.Number(object.nanos) : 0,\n    };\n  },\n\n  toJSON(message: Duration): unknown {\n    const obj: any = {};\n    if (message.seconds !== undefined && message.seconds !== BigInt(\"0\")) {\n      obj.seconds = message.seconds.toString();\n    }\n    if (message.nanos !== undefined && message.nanos !== 0) {\n      obj.nanos = Math.round(message.nanos);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Duration>): Duration {\n    return Duration.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Duration>): Duration {\n    const message = createBaseDuration() as any;\n    message.seconds = object.seconds ?? BigInt(\"0\");\n    message.nanos = object.nanos ?? 0;\n    return message;\n  },\n};\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | bigint | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends { readonly $case: string }\n    ? { [K in keyof Omit<T, \"$case\">]?: DeepPartial<T[K]> } & { readonly $case: T[\"$case\"] }\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction longToBigint(long: Long) {\n  return BigInt(long.toString());\n}\n\nif (_m0.util.Long !== Long) {\n  _m0.util.Long = Long as any;\n  _m0.configure();\n}\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n","// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v1.176.0\n//   protoc               unknown\n// source: stream.proto\n\n/* eslint-disable */\nimport Long from \"long\";\nimport { type CallContext, type CallOptions } from \"nice-grpc-common\";\nimport _m0 from \"protobufjs/minimal.js\";\nimport { Duration } from \"./google/protobuf/duration.js\";\n\nexport const protobufPackage = \"dna.v2.stream\";\n\n/** Apibara DNA server V2 */\n\n/** Data finality. */\nexport enum DataFinality {\n  UNKNOWN = 0,\n  /** PENDING - Data was received, but is not part of the canonical chain yet. */\n  PENDING = 1,\n  /** ACCEPTED - Data is now part of the canonical chain, but could still be invalidated. */\n  ACCEPTED = 2,\n  /** FINALIZED - Data is finalized and cannot be invalidated. */\n  FINALIZED = 3,\n  UNRECOGNIZED = -1,\n}\n\nexport function dataFinalityFromJSON(object: any): DataFinality {\n  switch (object) {\n    case 0:\n    case \"DATA_FINALITY_UNKNOWN\":\n      return DataFinality.UNKNOWN;\n    case 1:\n    case \"DATA_FINALITY_PENDING\":\n      return DataFinality.PENDING;\n    case 2:\n    case \"DATA_FINALITY_ACCEPTED\":\n      return DataFinality.ACCEPTED;\n    case 3:\n    case \"DATA_FINALITY_FINALIZED\":\n      return DataFinality.FINALIZED;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return DataFinality.UNRECOGNIZED;\n  }\n}\n\nexport function dataFinalityToJSON(object: DataFinality): string {\n  switch (object) {\n    case DataFinality.UNKNOWN:\n      return \"DATA_FINALITY_UNKNOWN\";\n    case DataFinality.PENDING:\n      return \"DATA_FINALITY_PENDING\";\n    case DataFinality.ACCEPTED:\n      return \"DATA_FINALITY_ACCEPTED\";\n    case DataFinality.FINALIZED:\n      return \"DATA_FINALITY_FINALIZED\";\n    case DataFinality.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\n/** Data production mode. */\nexport enum DataProduction {\n  UNKNOWN = 0,\n  /** BACKFILL - Data is for a backfilled block. */\n  BACKFILL = 1,\n  /** LIVE - Data is for a live block. */\n  LIVE = 2,\n  UNRECOGNIZED = -1,\n}\n\nexport function dataProductionFromJSON(object: any): DataProduction {\n  switch (object) {\n    case 0:\n    case \"DATA_PRODUCTION_UNKNOWN\":\n      return DataProduction.UNKNOWN;\n    case 1:\n    case \"DATA_PRODUCTION_BACKFILL\":\n      return DataProduction.BACKFILL;\n    case 2:\n    case \"DATA_PRODUCTION_LIVE\":\n      return DataProduction.LIVE;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return DataProduction.UNRECOGNIZED;\n  }\n}\n\nexport function dataProductionToJSON(object: DataProduction): string {\n  switch (object) {\n    case DataProduction.UNKNOWN:\n      return \"DATA_PRODUCTION_UNKNOWN\";\n    case DataProduction.BACKFILL:\n      return \"DATA_PRODUCTION_BACKFILL\";\n    case DataProduction.LIVE:\n      return \"DATA_PRODUCTION_LIVE\";\n    case DataProduction.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\n/** A cursor over the stream content. */\nexport interface Cursor {\n  /**\n   * Key used for ordering messages in the stream.\n   *\n   * This is usually the block or slot number.\n   */\n  readonly orderKey?:\n    | bigint\n    | undefined;\n  /**\n   * Key used to discriminate branches in the stream.\n   *\n   * This is usually the hash of the block.\n   */\n  readonly uniqueKey?: Uint8Array | undefined;\n}\n\n/** Request for the `Status` method. */\nexport interface StatusRequest {\n}\n\n/** Response for the `Status` method. */\nexport interface StatusResponse {\n  /** The current head of the chain. */\n  readonly currentHead?:\n    | Cursor\n    | undefined;\n  /** The last cursor that was ingested by the node. */\n  readonly lastIngested?:\n    | Cursor\n    | undefined;\n  /** The finalized block. */\n  readonly finalized?:\n    | Cursor\n    | undefined;\n  /** The first block available. */\n  readonly starting?: Cursor | undefined;\n}\n\n/** Request data to be streamed. */\nexport interface StreamDataRequest {\n  /**\n   * Cursor to start streaming from.\n   *\n   * If not specified, starts from the genesis block.\n   * Use the data's message `end_cursor` field to resume streaming.\n   */\n  readonly startingCursor?:\n    | Cursor\n    | undefined;\n  /**\n   * Return data with the specified finality.\n   *\n   * If not specified, defaults to `DATA_FINALITY_ACCEPTED`.\n   */\n  readonly finality?:\n    | DataFinality\n    | undefined;\n  /** Filters used to generate data. */\n  readonly filter?:\n    | readonly Uint8Array[]\n    | undefined;\n  /**\n   * Heartbeat interval.\n   *\n   * Value must be between 10 and 60 seconds.\n   * If not specified, defaults to 30 seconds.\n   */\n  readonly heartbeatInterval?: Duration | undefined;\n}\n\n/** Contains a piece of streamed data. */\nexport interface StreamDataResponse {\n  readonly message?:\n    | { readonly $case: \"data\"; readonly data: Data }\n    | { readonly $case: \"invalidate\"; readonly invalidate: Invalidate }\n    | { readonly $case: \"finalize\"; readonly finalize: Finalize }\n    | { readonly $case: \"heartbeat\"; readonly heartbeat: Heartbeat }\n    | { readonly $case: \"systemMessage\"; readonly systemMessage: SystemMessage }\n    | undefined;\n}\n\n/** Invalidate data after the given cursor. */\nexport interface Invalidate {\n  /**\n   * The cursor of the new chain's head.\n   *\n   * All data after this cursor should be considered invalid.\n   */\n  readonly cursor?:\n    | Cursor\n    | undefined;\n  /** List of blocks that were removed from the chain. */\n  readonly removed?: readonly Cursor[] | undefined;\n}\n\n/** Move the finalized block forward. */\nexport interface Finalize {\n  /**\n   * The cursor of the new finalized block.\n   *\n   * All data before this cursor cannot be invalidated.\n   */\n  readonly cursor?: Cursor | undefined;\n}\n\n/**\n * A single block of data.\n *\n * If the request specified multiple filters, the `data` field will contain the\n * data for each filter in the same order as the filters were specified in the\n * request.\n * If no data is available for a filter, the corresponding data field will be\n * empty.\n */\nexport interface Data {\n  /** Cursor that generated this block of data. */\n  readonly cursor?:\n    | Cursor\n    | undefined;\n  /** Block cursor. Use this cursor to resume the stream. */\n  readonly endCursor?:\n    | Cursor\n    | undefined;\n  /** The finality status of the block. */\n  readonly finality?:\n    | DataFinality\n    | undefined;\n  /**\n   * The block data.\n   *\n   * This message contains chain-specific data serialized using protobuf.\n   */\n  readonly data?:\n    | readonly Uint8Array[]\n    | undefined;\n  /** The production mode of the block. */\n  readonly production?: DataProduction | undefined;\n}\n\n/** Sent to clients to check if stream is still connected. */\nexport interface Heartbeat {\n}\n\n/** Message from the server to the client. */\nexport interface SystemMessage {\n  readonly output?: { readonly $case: \"stdout\"; readonly stdout: string } | {\n    readonly $case: \"stderr\";\n    readonly stderr: string;\n  } | undefined;\n}\n\nfunction createBaseCursor(): Cursor {\n  return { orderKey: BigInt(\"0\"), uniqueKey: new Uint8Array(0) };\n}\n\nexport const Cursor = {\n  encode(message: Cursor, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n    if (message.orderKey !== undefined && message.orderKey !== BigInt(\"0\")) {\n      if (BigInt.asUintN(64, message.orderKey) !== message.orderKey) {\n        throw new globalThis.Error(\"value provided for field message.orderKey of type uint64 too large\");\n      }\n      writer.uint32(8).uint64(message.orderKey.toString());\n    }\n    if (message.uniqueKey !== undefined && message.uniqueKey.length !== 0) {\n      writer.uint32(18).bytes(message.uniqueKey);\n    }\n    return writer;\n  },\n\n  decode(input: _m0.Reader | Uint8Array, length?: number): Cursor {\n    const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseCursor() as any;\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1:\n          if (tag !== 8) {\n            break;\n          }\n\n          message.orderKey = longToBigint(reader.uint64() as Long);\n          continue;\n        case 2:\n          if (tag !== 18) {\n            break;\n          }\n\n          message.uniqueKey = reader.bytes();\n          continue;\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skipType(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Cursor {\n    return {\n      orderKey: isSet(object.orderKey) ? BigInt(object.orderKey) : BigInt(\"0\"),\n      uniqueKey: isSet(object.uniqueKey) ? bytesFromBase64(object.uniqueKey) : new Uint8Array(0),\n    };\n  },\n\n  toJSON(message: Cursor): unknown {\n    const obj: any = {};\n    if (message.orderKey !== undefined && message.orderKey !== BigInt(\"0\")) {\n      obj.orderKey = message.orderKey.toString();\n    }\n    if (message.uniqueKey !== undefined && message.uniqueKey.length !== 0) {\n      obj.uniqueKey = base64FromBytes(message.uniqueKey);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Cursor>): Cursor {\n    return Cursor.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Cursor>): Cursor {\n    const message = createBaseCursor() as any;\n    message.orderKey = object.orderKey ?? BigInt(\"0\");\n    message.uniqueKey = object.uniqueKey ?? new Uint8Array(0);\n    return message;\n  },\n};\n\nfunction createBaseStatusRequest(): StatusRequest {\n  return {};\n}\n\nexport const StatusRequest = {\n  encode(_: StatusRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n    return writer;\n  },\n\n  decode(input: _m0.Reader | Uint8Array, length?: number): StatusRequest {\n    const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseStatusRequest() as any;\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skipType(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(_: any): StatusRequest {\n    return {};\n  },\n\n  toJSON(_: StatusRequest): unknown {\n    const obj: any = {};\n    return obj;\n  },\n\n  create(base?: DeepPartial<StatusRequest>): StatusRequest {\n    return StatusRequest.fromPartial(base ?? {});\n  },\n  fromPartial(_: DeepPartial<StatusRequest>): StatusRequest {\n    const message = createBaseStatusRequest() as any;\n    return message;\n  },\n};\n\nfunction createBaseStatusResponse(): StatusResponse {\n  return { currentHead: undefined, lastIngested: undefined, finalized: undefined, starting: undefined };\n}\n\nexport const StatusResponse = {\n  encode(message: StatusResponse, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n    if (message.currentHead !== undefined) {\n      Cursor.encode(message.currentHead, writer.uint32(10).fork()).ldelim();\n    }\n    if (message.lastIngested !== undefined) {\n      Cursor.encode(message.lastIngested, writer.uint32(18).fork()).ldelim();\n    }\n    if (message.finalized !== undefined) {\n      Cursor.encode(message.finalized, writer.uint32(26).fork()).ldelim();\n    }\n    if (message.starting !== undefined) {\n      Cursor.encode(message.starting, writer.uint32(34).fork()).ldelim();\n    }\n    return writer;\n  },\n\n  decode(input: _m0.Reader | Uint8Array, length?: number): StatusResponse {\n    const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseStatusResponse() as any;\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1:\n          if (tag !== 10) {\n            break;\n          }\n\n          message.currentHead = Cursor.decode(reader, reader.uint32());\n          continue;\n        case 2:\n          if (tag !== 18) {\n            break;\n          }\n\n          message.lastIngested = Cursor.decode(reader, reader.uint32());\n          continue;\n        case 3:\n          if (tag !== 26) {\n            break;\n          }\n\n          message.finalized = Cursor.decode(reader, reader.uint32());\n          continue;\n        case 4:\n          if (tag !== 34) {\n            break;\n          }\n\n          message.starting = Cursor.decode(reader, reader.uint32());\n          continue;\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skipType(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): StatusResponse {\n    return {\n      currentHead: isSet(object.currentHead) ? Cursor.fromJSON(object.currentHead) : undefined,\n      lastIngested: isSet(object.lastIngested) ? Cursor.fromJSON(object.lastIngested) : undefined,\n      finalized: isSet(object.finalized) ? Cursor.fromJSON(object.finalized) : undefined,\n      starting: isSet(object.starting) ? Cursor.fromJSON(object.starting) : undefined,\n    };\n  },\n\n  toJSON(message: StatusResponse): unknown {\n    const obj: any = {};\n    if (message.currentHead !== undefined) {\n      obj.currentHead = Cursor.toJSON(message.currentHead);\n    }\n    if (message.lastIngested !== undefined) {\n      obj.lastIngested = Cursor.toJSON(message.lastIngested);\n    }\n    if (message.finalized !== undefined) {\n      obj.finalized = Cursor.toJSON(message.finalized);\n    }\n    if (message.starting !== undefined) {\n      obj.starting = Cursor.toJSON(message.starting);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<StatusResponse>): StatusResponse {\n    return StatusResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<StatusResponse>): StatusResponse {\n    const message = createBaseStatusResponse() as any;\n    message.currentHead = (object.currentHead !== undefined && object.currentHead !== null)\n      ? Cursor.fromPartial(object.currentHead)\n      : undefined;\n    message.lastIngested = (object.lastIngested !== undefined && object.lastIngested !== null)\n      ? Cursor.fromPartial(object.lastIngested)\n      : undefined;\n    message.finalized = (object.finalized !== undefined && object.finalized !== null)\n      ? Cursor.fromPartial(object.finalized)\n      : undefined;\n    message.starting = (object.starting !== undefined && object.starting !== null)\n      ? Cursor.fromPartial(object.starting)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseStreamDataRequest(): StreamDataRequest {\n  return { startingCursor: undefined, finality: undefined, filter: [], heartbeatInterval: undefined };\n}\n\nexport const StreamDataRequest = {\n  encode(message: StreamDataRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n    if (message.startingCursor !== undefined) {\n      Cursor.encode(message.startingCursor, writer.uint32(10).fork()).ldelim();\n    }\n    if (message.finality !== undefined) {\n      writer.uint32(16).int32(message.finality);\n    }\n    if (message.filter !== undefined && message.filter.length !== 0) {\n      for (const v of message.filter) {\n        writer.uint32(26).bytes(v!);\n      }\n    }\n    if (message.heartbeatInterval !== undefined) {\n      Duration.encode(message.heartbeatInterval, writer.uint32(34).fork()).ldelim();\n    }\n    return writer;\n  },\n\n  decode(input: _m0.Reader | Uint8Array, length?: number): StreamDataRequest {\n    const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseStreamDataRequest() as any;\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1:\n          if (tag !== 10) {\n            break;\n          }\n\n          message.startingCursor = Cursor.decode(reader, reader.uint32());\n          continue;\n        case 2:\n          if (tag !== 16) {\n            break;\n          }\n\n          message.finality = reader.int32() as any;\n          continue;\n        case 3:\n          if (tag !== 26) {\n            break;\n          }\n\n          message.filter!.push(reader.bytes());\n          continue;\n        case 4:\n          if (tag !== 34) {\n            break;\n          }\n\n          message.heartbeatInterval = Duration.decode(reader, reader.uint32());\n          continue;\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skipType(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): StreamDataRequest {\n    return {\n      startingCursor: isSet(object.startingCursor) ? Cursor.fromJSON(object.startingCursor) : undefined,\n      finality: isSet(object.finality) ? dataFinalityFromJSON(object.finality) : undefined,\n      filter: globalThis.Array.isArray(object?.filter) ? object.filter.map((e: any) => bytesFromBase64(e)) : [],\n      heartbeatInterval: isSet(object.heartbeatInterval) ? Duration.fromJSON(object.heartbeatInterval) : undefined,\n    };\n  },\n\n  toJSON(message: StreamDataRequest): unknown {\n    const obj: any = {};\n    if (message.startingCursor !== undefined) {\n      obj.startingCursor = Cursor.toJSON(message.startingCursor);\n    }\n    if (message.finality !== undefined) {\n      obj.finality = dataFinalityToJSON(message.finality);\n    }\n    if (message.filter?.length) {\n      obj.filter = message.filter.map((e) => base64FromBytes(e));\n    }\n    if (message.heartbeatInterval !== undefined) {\n      obj.heartbeatInterval = Duration.toJSON(message.heartbeatInterval);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<StreamDataRequest>): StreamDataRequest {\n    return StreamDataRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<StreamDataRequest>): StreamDataRequest {\n    const message = createBaseStreamDataRequest() as any;\n    message.startingCursor = (object.startingCursor !== undefined && object.startingCursor !== null)\n      ? Cursor.fromPartial(object.startingCursor)\n      : undefined;\n    message.finality = object.finality ?? undefined;\n    message.filter = object.filter?.map((e) => e) || [];\n    message.heartbeatInterval = (object.heartbeatInterval !== undefined && object.heartbeatInterval !== null)\n      ? Duration.fromPartial(object.heartbeatInterval)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseStreamDataResponse(): StreamDataResponse {\n  return { message: undefined };\n}\n\nexport const StreamDataResponse = {\n  encode(message: StreamDataResponse, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n    switch (message.message?.$case) {\n      case \"data\":\n        Data.encode(message.message.data, writer.uint32(10).fork()).ldelim();\n        break;\n      case \"invalidate\":\n        Invalidate.encode(message.message.invalidate, writer.uint32(18).fork()).ldelim();\n        break;\n      case \"finalize\":\n        Finalize.encode(message.message.finalize, writer.uint32(26).fork()).ldelim();\n        break;\n      case \"heartbeat\":\n        Heartbeat.encode(message.message.heartbeat, writer.uint32(34).fork()).ldelim();\n        break;\n      case \"systemMessage\":\n        SystemMessage.encode(message.message.systemMessage, writer.uint32(42).fork()).ldelim();\n        break;\n    }\n    return writer;\n  },\n\n  decode(input: _m0.Reader | Uint8Array, length?: number): StreamDataResponse {\n    const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseStreamDataResponse() as any;\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1:\n          if (tag !== 10) {\n            break;\n          }\n\n          message.message = { $case: \"data\", data: Data.decode(reader, reader.uint32()) };\n          continue;\n        case 2:\n          if (tag !== 18) {\n            break;\n          }\n\n          message.message = { $case: \"invalidate\", invalidate: Invalidate.decode(reader, reader.uint32()) };\n          continue;\n        case 3:\n          if (tag !== 26) {\n            break;\n          }\n\n          message.message = { $case: \"finalize\", finalize: Finalize.decode(reader, reader.uint32()) };\n          continue;\n        case 4:\n          if (tag !== 34) {\n            break;\n          }\n\n          message.message = { $case: \"heartbeat\", heartbeat: Heartbeat.decode(reader, reader.uint32()) };\n          continue;\n        case 5:\n          if (tag !== 42) {\n            break;\n          }\n\n          message.message = { $case: \"systemMessage\", systemMessage: SystemMessage.decode(reader, reader.uint32()) };\n          continue;\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skipType(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): StreamDataResponse {\n    return {\n      message: isSet(object.data)\n        ? { $case: \"data\", data: Data.fromJSON(object.data) }\n        : isSet(object.invalidate)\n        ? { $case: \"invalidate\", invalidate: Invalidate.fromJSON(object.invalidate) }\n        : isSet(object.finalize)\n        ? { $case: \"finalize\", finalize: Finalize.fromJSON(object.finalize) }\n        : isSet(object.heartbeat)\n        ? { $case: \"heartbeat\", heartbeat: Heartbeat.fromJSON(object.heartbeat) }\n        : isSet(object.systemMessage)\n        ? { $case: \"systemMessage\", systemMessage: SystemMessage.fromJSON(object.systemMessage) }\n        : undefined,\n    };\n  },\n\n  toJSON(message: StreamDataResponse): unknown {\n    const obj: any = {};\n    if (message.message?.$case === \"data\") {\n      obj.data = Data.toJSON(message.message.data);\n    }\n    if (message.message?.$case === \"invalidate\") {\n      obj.invalidate = Invalidate.toJSON(message.message.invalidate);\n    }\n    if (message.message?.$case === \"finalize\") {\n      obj.finalize = Finalize.toJSON(message.message.finalize);\n    }\n    if (message.message?.$case === \"heartbeat\") {\n      obj.heartbeat = Heartbeat.toJSON(message.message.heartbeat);\n    }\n    if (message.message?.$case === \"systemMessage\") {\n      obj.systemMessage = SystemMessage.toJSON(message.message.systemMessage);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<StreamDataResponse>): StreamDataResponse {\n    return StreamDataResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<StreamDataResponse>): StreamDataResponse {\n    const message = createBaseStreamDataResponse() as any;\n    if (object.message?.$case === \"data\" && object.message?.data !== undefined && object.message?.data !== null) {\n      message.message = { $case: \"data\", data: Data.fromPartial(object.message.data) };\n    }\n    if (\n      object.message?.$case === \"invalidate\" &&\n      object.message?.invalidate !== undefined &&\n      object.message?.invalidate !== null\n    ) {\n      message.message = { $case: \"invalidate\", invalidate: Invalidate.fromPartial(object.message.invalidate) };\n    }\n    if (\n      object.message?.$case === \"finalize\" &&\n      object.message?.finalize !== undefined &&\n      object.message?.finalize !== null\n    ) {\n      message.message = { $case: \"finalize\", finalize: Finalize.fromPartial(object.message.finalize) };\n    }\n    if (\n      object.message?.$case === \"heartbeat\" &&\n      object.message?.heartbeat !== undefined &&\n      object.message?.heartbeat !== null\n    ) {\n      message.message = { $case: \"heartbeat\", heartbeat: Heartbeat.fromPartial(object.message.heartbeat) };\n    }\n    if (\n      object.message?.$case === \"systemMessage\" &&\n      object.message?.systemMessage !== undefined &&\n      object.message?.systemMessage !== null\n    ) {\n      message.message = {\n        $case: \"systemMessage\",\n        systemMessage: SystemMessage.fromPartial(object.message.systemMessage),\n      };\n    }\n    return message;\n  },\n};\n\nfunction createBaseInvalidate(): Invalidate {\n  return { cursor: undefined, removed: [] };\n}\n\nexport const Invalidate = {\n  encode(message: Invalidate, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n    if (message.cursor !== undefined) {\n      Cursor.encode(message.cursor, writer.uint32(10).fork()).ldelim();\n    }\n    if (message.removed !== undefined && message.removed.length !== 0) {\n      for (const v of message.removed) {\n        Cursor.encode(v!, writer.uint32(18).fork()).ldelim();\n      }\n    }\n    return writer;\n  },\n\n  decode(input: _m0.Reader | Uint8Array, length?: number): Invalidate {\n    const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseInvalidate() as any;\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1:\n          if (tag !== 10) {\n            break;\n          }\n\n          message.cursor = Cursor.decode(reader, reader.uint32());\n          continue;\n        case 2:\n          if (tag !== 18) {\n            break;\n          }\n\n          message.removed!.push(Cursor.decode(reader, reader.uint32()));\n          continue;\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skipType(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Invalidate {\n    return {\n      cursor: isSet(object.cursor) ? Cursor.fromJSON(object.cursor) : undefined,\n      removed: globalThis.Array.isArray(object?.removed) ? object.removed.map((e: any) => Cursor.fromJSON(e)) : [],\n    };\n  },\n\n  toJSON(message: Invalidate): unknown {\n    const obj: any = {};\n    if (message.cursor !== undefined) {\n      obj.cursor = Cursor.toJSON(message.cursor);\n    }\n    if (message.removed?.length) {\n      obj.removed = message.removed.map((e) => Cursor.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Invalidate>): Invalidate {\n    return Invalidate.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Invalidate>): Invalidate {\n    const message = createBaseInvalidate() as any;\n    message.cursor = (object.cursor !== undefined && object.cursor !== null)\n      ? Cursor.fromPartial(object.cursor)\n      : undefined;\n    message.removed = object.removed?.map((e) => Cursor.fromPartial(e)) || [];\n    return message;\n  },\n};\n\nfunction createBaseFinalize(): Finalize {\n  return { cursor: undefined };\n}\n\nexport const Finalize = {\n  encode(message: Finalize, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n    if (message.cursor !== undefined) {\n      Cursor.encode(message.cursor, writer.uint32(10).fork()).ldelim();\n    }\n    return writer;\n  },\n\n  decode(input: _m0.Reader | Uint8Array, length?: number): Finalize {\n    const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseFinalize() as any;\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1:\n          if (tag !== 10) {\n            break;\n          }\n\n          message.cursor = Cursor.decode(reader, reader.uint32());\n          continue;\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skipType(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Finalize {\n    return { cursor: isSet(object.cursor) ? Cursor.fromJSON(object.cursor) : undefined };\n  },\n\n  toJSON(message: Finalize): unknown {\n    const obj: any = {};\n    if (message.cursor !== undefined) {\n      obj.cursor = Cursor.toJSON(message.cursor);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Finalize>): Finalize {\n    return Finalize.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Finalize>): Finalize {\n    const message = createBaseFinalize() as any;\n    message.cursor = (object.cursor !== undefined && object.cursor !== null)\n      ? Cursor.fromPartial(object.cursor)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseData(): Data {\n  return { cursor: undefined, endCursor: undefined, finality: 0, data: [], production: 0 };\n}\n\nexport const Data = {\n  encode(message: Data, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n    if (message.cursor !== undefined) {\n      Cursor.encode(message.cursor, writer.uint32(10).fork()).ldelim();\n    }\n    if (message.endCursor !== undefined) {\n      Cursor.encode(message.endCursor, writer.uint32(18).fork()).ldelim();\n    }\n    if (message.finality !== undefined && message.finality !== 0) {\n      writer.uint32(24).int32(message.finality);\n    }\n    if (message.data !== undefined && message.data.length !== 0) {\n      for (const v of message.data) {\n        writer.uint32(34).bytes(v!);\n      }\n    }\n    if (message.production !== undefined && message.production !== 0) {\n      writer.uint32(40).int32(message.production);\n    }\n    return writer;\n  },\n\n  decode(input: _m0.Reader | Uint8Array, length?: number): Data {\n    const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseData() as any;\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1:\n          if (tag !== 10) {\n            break;\n          }\n\n          message.cursor = Cursor.decode(reader, reader.uint32());\n          continue;\n        case 2:\n          if (tag !== 18) {\n            break;\n          }\n\n          message.endCursor = Cursor.decode(reader, reader.uint32());\n          continue;\n        case 3:\n          if (tag !== 24) {\n            break;\n          }\n\n          message.finality = reader.int32() as any;\n          continue;\n        case 4:\n          if (tag !== 34) {\n            break;\n          }\n\n          message.data!.push(reader.bytes());\n          continue;\n        case 5:\n          if (tag !== 40) {\n            break;\n          }\n\n          message.production = reader.int32() as any;\n          continue;\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skipType(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Data {\n    return {\n      cursor: isSet(object.cursor) ? Cursor.fromJSON(object.cursor) : undefined,\n      endCursor: isSet(object.endCursor) ? Cursor.fromJSON(object.endCursor) : undefined,\n      finality: isSet(object.finality) ? dataFinalityFromJSON(object.finality) : 0,\n      data: globalThis.Array.isArray(object?.data) ? object.data.map((e: any) => bytesFromBase64(e)) : [],\n      production: isSet(object.production) ? dataProductionFromJSON(object.production) : 0,\n    };\n  },\n\n  toJSON(message: Data): unknown {\n    const obj: any = {};\n    if (message.cursor !== undefined) {\n      obj.cursor = Cursor.toJSON(message.cursor);\n    }\n    if (message.endCursor !== undefined) {\n      obj.endCursor = Cursor.toJSON(message.endCursor);\n    }\n    if (message.finality !== undefined && message.finality !== 0) {\n      obj.finality = dataFinalityToJSON(message.finality);\n    }\n    if (message.data?.length) {\n      obj.data = message.data.map((e) => base64FromBytes(e));\n    }\n    if (message.production !== undefined && message.production !== 0) {\n      obj.production = dataProductionToJSON(message.production);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Data>): Data {\n    return Data.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Data>): Data {\n    const message = createBaseData() as any;\n    message.cursor = (object.cursor !== undefined && object.cursor !== null)\n      ? Cursor.fromPartial(object.cursor)\n      : undefined;\n    message.endCursor = (object.endCursor !== undefined && object.endCursor !== null)\n      ? Cursor.fromPartial(object.endCursor)\n      : undefined;\n    message.finality = object.finality ?? 0;\n    message.data = object.data?.map((e) => e) || [];\n    message.production = object.production ?? 0;\n    return message;\n  },\n};\n\nfunction createBaseHeartbeat(): Heartbeat {\n  return {};\n}\n\nexport const Heartbeat = {\n  encode(_: Heartbeat, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n    return writer;\n  },\n\n  decode(input: _m0.Reader | Uint8Array, length?: number): Heartbeat {\n    const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseHeartbeat() as any;\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skipType(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(_: any): Heartbeat {\n    return {};\n  },\n\n  toJSON(_: Heartbeat): unknown {\n    const obj: any = {};\n    return obj;\n  },\n\n  create(base?: DeepPartial<Heartbeat>): Heartbeat {\n    return Heartbeat.fromPartial(base ?? {});\n  },\n  fromPartial(_: DeepPartial<Heartbeat>): Heartbeat {\n    const message = createBaseHeartbeat() as any;\n    return message;\n  },\n};\n\nfunction createBaseSystemMessage(): SystemMessage {\n  return { output: undefined };\n}\n\nexport const SystemMessage = {\n  encode(message: SystemMessage, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n    switch (message.output?.$case) {\n      case \"stdout\":\n        writer.uint32(10).string(message.output.stdout);\n        break;\n      case \"stderr\":\n        writer.uint32(18).string(message.output.stderr);\n        break;\n    }\n    return writer;\n  },\n\n  decode(input: _m0.Reader | Uint8Array, length?: number): SystemMessage {\n    const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseSystemMessage() as any;\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1:\n          if (tag !== 10) {\n            break;\n          }\n\n          message.output = { $case: \"stdout\", stdout: reader.string() };\n          continue;\n        case 2:\n          if (tag !== 18) {\n            break;\n          }\n\n          message.output = { $case: \"stderr\", stderr: reader.string() };\n          continue;\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skipType(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): SystemMessage {\n    return {\n      output: isSet(object.stdout)\n        ? { $case: \"stdout\", stdout: globalThis.String(object.stdout) }\n        : isSet(object.stderr)\n        ? { $case: \"stderr\", stderr: globalThis.String(object.stderr) }\n        : undefined,\n    };\n  },\n\n  toJSON(message: SystemMessage): unknown {\n    const obj: any = {};\n    if (message.output?.$case === \"stdout\") {\n      obj.stdout = message.output.stdout;\n    }\n    if (message.output?.$case === \"stderr\") {\n      obj.stderr = message.output.stderr;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<SystemMessage>): SystemMessage {\n    return SystemMessage.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<SystemMessage>): SystemMessage {\n    const message = createBaseSystemMessage() as any;\n    if (object.output?.$case === \"stdout\" && object.output?.stdout !== undefined && object.output?.stdout !== null) {\n      message.output = { $case: \"stdout\", stdout: object.output.stdout };\n    }\n    if (object.output?.$case === \"stderr\" && object.output?.stderr !== undefined && object.output?.stderr !== null) {\n      message.output = { $case: \"stderr\", stderr: object.output.stderr };\n    }\n    return message;\n  },\n};\n\nexport type DnaStreamDefinition = typeof DnaStreamDefinition;\nexport const DnaStreamDefinition = {\n  name: \"DnaStream\",\n  fullName: \"dna.v2.stream.DnaStream\",\n  methods: {\n    /** Stream data from the server. */\n    streamData: {\n      name: \"StreamData\",\n      requestType: StreamDataRequest,\n      requestStream: false,\n      responseType: StreamDataResponse,\n      responseStream: true,\n      options: {},\n    },\n    /** Get DNA server status. */\n    status: {\n      name: \"Status\",\n      requestType: StatusRequest,\n      requestStream: false,\n      responseType: StatusResponse,\n      responseStream: false,\n      options: {},\n    },\n  },\n} as const;\n\nexport interface DnaStreamServiceImplementation<CallContextExt = {}> {\n  /** Stream data from the server. */\n  streamData(\n    request: StreamDataRequest,\n    context: CallContext & CallContextExt,\n  ): ServerStreamingMethodResult<DeepPartial<StreamDataResponse>>;\n  /** Get DNA server status. */\n  status(request: StatusRequest, context: CallContext & CallContextExt): Promise<DeepPartial<StatusResponse>>;\n}\n\nexport interface DnaStreamClient<CallOptionsExt = {}> {\n  /** Stream data from the server. */\n  streamData(\n    request: DeepPartial<StreamDataRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): AsyncIterable<StreamDataResponse>;\n  /** Get DNA server status. */\n  status(request: DeepPartial<StatusRequest>, options?: CallOptions & CallOptionsExt): Promise<StatusResponse>;\n}\n\nfunction bytesFromBase64(b64: string): Uint8Array {\n  if ((globalThis as any).Buffer) {\n    return Uint8Array.from(globalThis.Buffer.from(b64, \"base64\"));\n  } else {\n    const bin = globalThis.atob(b64);\n    const arr = new Uint8Array(bin.length);\n    for (let i = 0; i < bin.length; ++i) {\n      arr[i] = bin.charCodeAt(i);\n    }\n    return arr;\n  }\n}\n\nfunction base64FromBytes(arr: Uint8Array): string {\n  if ((globalThis as any).Buffer) {\n    return globalThis.Buffer.from(arr).toString(\"base64\");\n  } else {\n    const bin: string[] = [];\n    arr.forEach((byte) => {\n      bin.push(globalThis.String.fromCharCode(byte));\n    });\n    return globalThis.btoa(bin.join(\"\"));\n  }\n}\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | bigint | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends { readonly $case: string }\n    ? { [K in keyof Omit<T, \"$case\">]?: DeepPartial<T[K]> } & { readonly $case: T[\"$case\"] }\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction longToBigint(long: Long) {\n  return BigInt(long.toString());\n}\n\nif (_m0.util.Long !== Long) {\n  _m0.util.Long = Long as any;\n  _m0.configure();\n}\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n\nexport type ServerStreamingMethodResult<Response> = { [Symbol.asyncIterator](): AsyncIterator<Response, void> };\n","// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v1.176.0\n//   protoc               unknown\n// source: testing.proto\n\n/* eslint-disable */\nimport _m0 from \"protobufjs/minimal.js\";\n\nexport const protobufPackage = \"dna.v2.testing\";\n\nexport interface MockFilter {\n  readonly filter?: string | undefined;\n}\n\nexport interface MockBlock {\n  readonly data?: string | undefined;\n}\n\nfunction createBaseMockFilter(): MockFilter {\n  return { filter: undefined };\n}\n\nexport const MockFilter = {\n  encode(message: MockFilter, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n    if (message.filter !== undefined) {\n      writer.uint32(10).string(message.filter);\n    }\n    return writer;\n  },\n\n  decode(input: _m0.Reader | Uint8Array, length?: number): MockFilter {\n    const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseMockFilter() as any;\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1:\n          if (tag !== 10) {\n            break;\n          }\n\n          message.filter = reader.string();\n          continue;\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skipType(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): MockFilter {\n    return { filter: isSet(object.filter) ? globalThis.String(object.filter) : undefined };\n  },\n\n  toJSON(message: MockFilter): unknown {\n    const obj: any = {};\n    if (message.filter !== undefined) {\n      obj.filter = message.filter;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<MockFilter>): MockFilter {\n    return MockFilter.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<MockFilter>): MockFilter {\n    const message = createBaseMockFilter() as any;\n    message.filter = object.filter ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseMockBlock(): MockBlock {\n  return { data: undefined };\n}\n\nexport const MockBlock = {\n  encode(message: MockBlock, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n    if (message.data !== undefined) {\n      writer.uint32(10).string(message.data);\n    }\n    return writer;\n  },\n\n  decode(input: _m0.Reader | Uint8Array, length?: number): MockBlock {\n    const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseMockBlock() as any;\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1:\n          if (tag !== 10) {\n            break;\n          }\n\n          message.data = reader.string();\n          continue;\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skipType(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): MockBlock {\n    return { data: isSet(object.data) ? globalThis.String(object.data) : undefined };\n  },\n\n  toJSON(message: MockBlock): unknown {\n    const obj: any = {};\n    if (message.data !== undefined) {\n      obj.data = message.data;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<MockBlock>): MockBlock {\n    return MockBlock.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<MockBlock>): MockBlock {\n    const message = createBaseMockBlock() as any;\n    message.data = object.data ?? undefined;\n    return message;\n  },\n};\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | bigint | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends { readonly $case: string }\n    ? { [K in keyof Omit<T, \"$case\">]?: DeepPartial<T[K]> } & { readonly $case: T[\"$case\"] }\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n","import { hexToBytes, toHex } from \"viem\";\n\nimport type { Codec, CodecProto, CodecType } from \"./codec\";\nimport * as proto from \"./proto\";\n\n/** Bytes encoded as a 0x-prefixed hex string. */\nexport type Bytes = `0x${string}`;\n\nexport const BytesFromUint8Array: Codec<\n  `0x${string}` | undefined,\n  Uint8Array | undefined\n> = {\n  decode(value) {\n    if (!value || value?.length === 0) {\n      return undefined;\n    }\n    return toHex(value);\n  },\n  encode(value) {\n    if (value === undefined) {\n      return new Uint8Array(0);\n    }\n    return hexToBytes(value);\n  },\n};\n\ntype _CursorApp = {\n  orderKey: bigint;\n  uniqueKey?: Bytes | undefined;\n};\n\ntype _CursorProto = proto.stream.Cursor;\n\n/** Represent a position in the stream. */\nexport const Cursor: Codec<_CursorApp, _CursorProto> = {\n  decode(value) {\n    const { orderKey, uniqueKey } = value;\n    return {\n      orderKey: orderKey ?? 0n,\n      uniqueKey: BytesFromUint8Array.decode(uniqueKey),\n    };\n  },\n  encode(value) {\n    const { orderKey, uniqueKey } = value;\n    return {\n      orderKey,\n      uniqueKey: BytesFromUint8Array.encode(uniqueKey),\n    };\n  },\n};\n/** The Cursor protobuf representation. */\nexport type CursorProto = CodecProto<typeof Cursor>;\nexport type Cursor = CodecType<typeof Cursor>;\nexport const createCursor = (props: Cursor) => props;\n\nexport const CursorFromBytes: Codec<Cursor, Uint8Array> = {\n  encode(value) {\n    const { orderKey, uniqueKey } = value;\n    return proto.stream.Cursor.encode({\n      orderKey,\n      uniqueKey: BytesFromUint8Array.encode(uniqueKey),\n    }).finish();\n  },\n  decode(value) {\n    const { orderKey, uniqueKey } = proto.stream.Cursor.decode(value);\n    return {\n      orderKey: orderKey ?? 0n,\n      uniqueKey: BytesFromUint8Array.decode(uniqueKey),\n    };\n  },\n};\n\nexport function isCursor(value: unknown): value is Cursor {\n  if (typeof value !== \"object\" || value === null) {\n    return false;\n  }\n\n  const { orderKey, uniqueKey } = value as Cursor;\n\n  return (\n    typeof orderKey === \"bigint\" &&\n    (uniqueKey === null ||\n      uniqueKey === undefined ||\n      (typeof uniqueKey === \"string\" && uniqueKey.startsWith(\"0x\")))\n  );\n}\n\n/** Normalize a cursor.\n *\n * The challenge is that the `Cursor` validator expects `uniqueKey` to be either a `0x${string}`\n * or not present at all. Setting the field to `undefined` will result in a validation error.\n *\n * @param cursor The cursor to normalize\n */\nexport function normalizeCursor(cursor: {\n  orderKey: bigint;\n  uniqueKey: string | null;\n}): Cursor {\n  if (cursor.uniqueKey !== null && cursor.uniqueKey.length > 0) {\n    const uniqueKey = cursor.uniqueKey as `0x${string}`;\n    return {\n      orderKey: BigInt(cursor.orderKey),\n      uniqueKey,\n    };\n  }\n\n  return {\n    orderKey: BigInt(cursor.orderKey),\n  };\n}\n","import {\n  ArrayCodec,\n  BigIntCodec,\n  type Codec,\n  type CodecType,\n  MessageCodec,\n  MutableArrayCodec,\n  NumberCodec,\n  OneOfCodec,\n  OptionalCodec,\n  StringCodec,\n  UndefinedCodec,\n} from \"./codec\";\nimport { Cursor } from \"./common\";\nimport * as proto from \"./proto\";\n\n/** Data finality. */\nexport const DataFinality: Codec<\n  \"finalized\" | \"accepted\" | \"pending\" | \"unknown\",\n  proto.stream.DataFinality\n> = {\n  encode(x) {\n    const enumMap = {\n      finalized: proto.stream.DataFinality.FINALIZED,\n      accepted: proto.stream.DataFinality.ACCEPTED,\n      pending: proto.stream.DataFinality.PENDING,\n      unknown: proto.stream.DataFinality.UNKNOWN,\n    };\n\n    return enumMap[x] ?? proto.stream.DataFinality.UNKNOWN;\n  },\n  decode(p) {\n    const enumMap = {\n      [proto.stream.DataFinality.FINALIZED]: \"finalized\",\n      [proto.stream.DataFinality.ACCEPTED]: \"accepted\",\n      [proto.stream.DataFinality.PENDING]: \"pending\",\n      [proto.stream.DataFinality.UNKNOWN]: \"unknown\",\n      [proto.stream.DataFinality.UNRECOGNIZED]: \"unknown\",\n    } as const;\n\n    return enumMap[p] ?? \"unknown\";\n  },\n};\n\nexport type DataFinality = CodecType<typeof DataFinality>;\n\n/** Data production mode. */\nexport const DataProduction: Codec<\n  \"backfill\" | \"live\" | \"unknown\",\n  proto.stream.DataProduction\n> = {\n  encode(x) {\n    switch (x) {\n      case \"backfill\":\n        return proto.stream.DataProduction.BACKFILL;\n      case \"live\":\n        return proto.stream.DataProduction.LIVE;\n      case \"unknown\":\n        return proto.stream.DataProduction.UNKNOWN;\n      default:\n        return proto.stream.DataProduction.UNRECOGNIZED;\n    }\n  },\n  decode(p) {\n    const enumMap = {\n      [proto.stream.DataProduction.BACKFILL]: \"backfill\",\n      [proto.stream.DataProduction.LIVE]: \"live\",\n      [proto.stream.DataProduction.UNKNOWN]: \"unknown\",\n      [proto.stream.DataProduction.UNRECOGNIZED]: \"unknown\",\n    } as const;\n\n    return enumMap[p] ?? \"unknown\";\n  },\n};\n\nexport type DataProduction = CodecType<typeof DataProduction>;\n\nexport const DurationCodec = MessageCodec({\n  seconds: BigIntCodec,\n  nanos: NumberCodec,\n});\n\nexport type Duration = CodecType<typeof DurationCodec>;\n\n/** Create a `StreamDataRequest` with the given filter schema. */\nexport const StreamDataRequest = <TA>(filter: Codec<TA, Uint8Array>) =>\n  MessageCodec({\n    finality: OptionalCodec(DataFinality),\n    startingCursor: OptionalCodec(Cursor),\n    filter: MutableArrayCodec(filter),\n    heartbeatInterval: OptionalCodec(DurationCodec),\n  });\n\nexport type StreamDataRequest<TA> = CodecType<\n  ReturnType<typeof StreamDataRequest<TA>>\n>;\n\nexport const Invalidate = MessageCodec({\n  cursor: OptionalCodec(Cursor),\n});\n\nexport type Invalidate = CodecType<typeof Invalidate>;\n\nexport const Finalize = MessageCodec({\n  cursor: OptionalCodec(Cursor),\n});\n\nexport type Finalize = CodecType<typeof Finalize>;\n\n// TODO: Double check this; This is a hack to make the heartbeat variant undefined\nexport const Heartbeat = UndefinedCodec;\n\nexport type Heartbeat = CodecType<typeof Heartbeat>;\n\nexport const StdOut = StringCodec;\n\nexport type StdOut = CodecType<typeof StdOut>;\n\nexport const StdErr = StringCodec;\n\nexport type StdErr = CodecType<typeof StdErr>;\n\nexport const SystemMessage = MessageCodec({\n  output: OneOfCodec({\n    stdout: StdOut,\n    stderr: StdErr,\n  }),\n});\n\nexport type SystemMessage = CodecType<typeof SystemMessage>;\n\nconst _DataOrNull = <TA>(\n  schema: Codec<TA, Uint8Array>,\n): Codec<TA | null, Uint8Array> => ({\n  encode(x) {\n    if (x === null) {\n      return new Uint8Array();\n    }\n    return schema.encode(x);\n  },\n  decode(p) {\n    if (p.length === 0) {\n      return null;\n    }\n    return schema.decode(p);\n  },\n});\n\nexport const Data = <TA>(schema: Codec<TA | null, Uint8Array>) =>\n  MessageCodec({\n    cursor: OptionalCodec(Cursor),\n    endCursor: Cursor,\n    finality: DataFinality,\n    production: DataProduction,\n    data: ArrayCodec(_DataOrNull(schema)),\n  });\n\nexport type Data<TA> = CodecType<ReturnType<typeof Data<TA>>>;\n\nexport const StreamDataResponse = <TA>(schema: Codec<TA | null, Uint8Array>) =>\n  OneOfCodec({\n    data: Data(schema),\n    invalidate: Invalidate,\n    finalize: Finalize,\n    heartbeat: Heartbeat,\n    systemMessage: SystemMessage,\n  });\n\nexport const ResponseWithoutData = OneOfCodec({\n  invalidate: Invalidate,\n  finalize: Finalize,\n  heartbeat: Heartbeat,\n  systemMessage: SystemMessage,\n});\n\nexport type ResponseWithoutData = CodecType<typeof ResponseWithoutData>;\n\nexport type StreamDataResponse<TA> = CodecType<\n  ReturnType<typeof StreamDataResponse<TA>>\n>;\n","import type { Codec } from \"./codec\";\nimport { StreamDataRequest, StreamDataResponse } from \"./stream\";\n\n/** Configure a DNA stream. */\nexport class StreamConfig<TFilter, TBlock> {\n  private request;\n  private response;\n\n  constructor(\n    private filter: Codec<TFilter, Uint8Array>,\n    private block: Codec<TBlock | null, Uint8Array>,\n    public mergeFilter: (a: TFilter, b: TFilter) => TFilter,\n    public name: string,\n  ) {\n    this.request = StreamDataRequest(this.filter);\n    this.response = StreamDataResponse(this.block);\n  }\n\n  /** Filter schema. */\n  get Filter() {\n    return this.filter;\n  }\n\n  /** Block schema. */\n  get Block() {\n    return this.block;\n  }\n\n  /** Stream data request schema. */\n  get Request() {\n    return this.request;\n  }\n\n  /** Stream data response schema. */\n  get Response() {\n    return this.response;\n  }\n}\n"],"names":["longToBigint","isSet","protobufPackage","DataFinality","DataProduction","Cursor","StreamDataRequest","StreamDataResponse","Data","Invalidate","Finalize","Heartbeat","SystemMessage","proto.stream.Cursor","proto.stream.DataFinality","proto.stream.DataProduction"],"mappings":";;;;;AA4FA,SAAS,kBAA+B,GAAA;AACtC,EAAA,OAAO,EAAE,OAAS,EAAA,MAAA,CAAO,GAAG,CAAA,EAAG,OAAO,CAAE,EAAA,CAAA;AAC1C,CAAA;AAEO,MAAM,QAAW,GAAA;AAAA,EACtB,OAAO,OAAmB,EAAA,MAAA,GAAqB,GAAI,CAAA,MAAA,CAAO,QAAsB,EAAA;AAC9E,IAAA,IAAI,QAAQ,OAAY,KAAA,KAAA,CAAA,IAAa,QAAQ,OAAY,KAAA,MAAA,CAAO,GAAG,CAAG,EAAA;AACpE,MAAA,IAAI,OAAO,MAAO,CAAA,EAAA,EAAI,QAAQ,OAAO,CAAA,KAAM,QAAQ,OAAS,EAAA;AAC1D,QAAM,MAAA,IAAI,UAAW,CAAA,KAAA,CAAM,kEAAkE,CAAA,CAAA;AAAA,OAC/F;AACA,MAAA,MAAA,CAAO,OAAO,CAAC,CAAA,CAAE,MAAM,OAAQ,CAAA,OAAA,CAAQ,UAAU,CAAA,CAAA;AAAA,KACnD;AACA,IAAA,IAAI,OAAQ,CAAA,KAAA,KAAU,KAAa,CAAA,IAAA,OAAA,CAAQ,UAAU,CAAG,EAAA;AACtD,MAAA,MAAA,CAAO,MAAO,CAAA,EAAE,CAAE,CAAA,KAAA,CAAM,QAAQ,KAAK,CAAA,CAAA;AAAA,KACvC;AACA,IAAO,OAAA,MAAA,CAAA;AAAA,GACT;AAAA,EAEA,MAAA,CAAO,OAAgC,MAA2B,EAAA;AAChE,IAAM,MAAA,MAAA,GAAS,iBAAiB,GAAI,CAAA,MAAA,GAAS,QAAQ,GAAI,CAAA,MAAA,CAAO,OAAO,KAAK,CAAA,CAAA;AAC5E,IAAA,IAAI,MAAM,MAAW,KAAA,KAAA,CAAA,GAAY,MAAO,CAAA,GAAA,GAAM,OAAO,GAAM,GAAA,MAAA,CAAA;AAC3D,IAAA,MAAM,UAAU,kBAAmB,EAAA,CAAA;AACnC,IAAO,OAAA,MAAA,CAAO,MAAM,GAAK,EAAA;AACvB,MAAM,MAAA,GAAA,GAAM,OAAO,MAAO,EAAA,CAAA;AAC1B,MAAA,QAAQ,QAAQ,CAAG;AAAA,QACjB,KAAK,CAAA;AACH,UAAA,IAAI,QAAQ,CAAG,EAAA;AACb,YAAA,MAAA;AAAA,WACF;AAEA,UAAA,OAAA,CAAQ,OAAU,GAAAA,cAAA,CAAa,MAAO,CAAA,KAAA,EAAe,CAAA,CAAA;AACrD,UAAA,SAAA;AAAA,QACF,KAAK,CAAA;AACH,UAAA,IAAI,QAAQ,EAAI,EAAA;AACd,YAAA,MAAA;AAAA,WACF;AAEA,UAAQ,OAAA,CAAA,KAAA,GAAQ,OAAO,KAAM,EAAA,CAAA;AAC7B,UAAA,SAAA;AAAA,OACJ;AACA,MAAA,IAAA,CAAK,GAAM,GAAA,CAAA,MAAO,CAAK,IAAA,GAAA,KAAQ,CAAG,EAAA;AAChC,QAAA,MAAA;AAAA,OACF;AACA,MAAO,MAAA,CAAA,QAAA,CAAS,MAAM,CAAC,CAAA,CAAA;AAAA,KACzB;AACA,IAAO,OAAA,OAAA,CAAA;AAAA,GACT;AAAA,EAEA,SAAS,MAAuB,EAAA;AAC9B,IAAO,OAAA;AAAA,MACL,OAAA,EAASC,OAAM,CAAA,MAAA,CAAO,OAAO,CAAA,GAAI,OAAO,MAAO,CAAA,OAAO,CAAI,GAAA,MAAA,CAAO,GAAG,CAAA;AAAA,MACpE,KAAA,EAAOA,QAAM,MAAO,CAAA,KAAK,IAAI,UAAW,CAAA,MAAA,CAAO,MAAO,CAAA,KAAK,CAAI,GAAA,CAAA;AAAA,KACjE,CAAA;AAAA,GACF;AAAA,EAEA,OAAO,OAA4B,EAAA;AACjC,IAAA,MAAM,MAAW,EAAC,CAAA;AAClB,IAAA,IAAI,QAAQ,OAAY,KAAA,KAAA,CAAA,IAAa,QAAQ,OAAY,KAAA,MAAA,CAAO,GAAG,CAAG,EAAA;AACpE,MAAI,GAAA,CAAA,OAAA,GAAU,OAAQ,CAAA,OAAA,CAAQ,QAAS,EAAA,CAAA;AAAA,KACzC;AACA,IAAA,IAAI,OAAQ,CAAA,KAAA,KAAU,KAAa,CAAA,IAAA,OAAA,CAAQ,UAAU,CAAG,EAAA;AACtD,MAAA,GAAA,CAAI,KAAQ,GAAA,IAAA,CAAK,KAAM,CAAA,OAAA,CAAQ,KAAK,CAAA,CAAA;AAAA,KACtC;AACA,IAAO,OAAA,GAAA,CAAA;AAAA,GACT;AAAA,EAEA,OAAO,IAAwC,EAAA;AAC7C,IAAA,OAAO,QAAS,CAAA,WAAA,CAAY,IAAQ,IAAA,EAAE,CAAA,CAAA;AAAA,GACxC;AAAA,EACA,YAAY,MAAyC,EAAA;AACnD,IAAA,MAAM,UAAU,kBAAmB,EAAA,CAAA;AACnC,IAAA,OAAA,CAAQ,OAAU,GAAA,MAAA,CAAO,OAAW,IAAA,MAAA,CAAO,GAAG,CAAA,CAAA;AAC9C,IAAQ,OAAA,CAAA,KAAA,GAAQ,OAAO,KAAS,IAAA,CAAA,CAAA;AAChC,IAAO,OAAA,OAAA,CAAA;AAAA,GACT;AACF,CAAA,CAAA;AAYA,SAASD,eAAa,IAAY,EAAA;AAChC,EAAO,OAAA,MAAA,CAAO,IAAK,CAAA,QAAA,EAAU,CAAA,CAAA;AAC/B,CAAA;AAEA,IAAI,GAAA,CAAI,IAAK,CAAA,IAAA,KAAS,IAAM,EAAA;AAC1B,EAAA,GAAA,CAAI,KAAK,IAAO,GAAA,IAAA,CAAA;AAChB,EAAA,GAAA,CAAI,SAAU,EAAA,CAAA;AAChB,CAAA;AAEA,SAASC,QAAM,KAAqB,EAAA;AAClC,EAAO,OAAA,KAAA,KAAU,QAAQ,KAAU,KAAA,KAAA,CAAA,CAAA;AACrC;;AClLO,MAAMC,iBAAkB,GAAA,eAAA,CAAA;AAKnB,IAAAC,cAAA,qBAAAA,aAAL,KAAA;AACL,EAAAA,aAAAA,CAAAA,aAAAA,CAAA,aAAU,CAAV,CAAA,GAAA,SAAA,CAAA;AAEA,EAAAA,aAAAA,CAAAA,aAAAA,CAAA,aAAU,CAAV,CAAA,GAAA,SAAA,CAAA;AAEA,EAAAA,aAAAA,CAAAA,aAAAA,CAAA,cAAW,CAAX,CAAA,GAAA,UAAA,CAAA;AAEA,EAAAA,aAAAA,CAAAA,aAAAA,CAAA,eAAY,CAAZ,CAAA,GAAA,WAAA,CAAA;AACA,EAAAA,aAAAA,CAAAA,aAAAA,CAAA,kBAAe,CAAf,CAAA,CAAA,GAAA,cAAA,CAAA;AARU,EAAAA,OAAAA,aAAAA,CAAAA;AAAA,CAAA,EAAAA,cAAA,IAAA,EAAA,CAAA,CAAA;AAWL,SAAS,qBAAqB,MAA2B,EAAA;AAC9D,EAAA,QAAQ,MAAQ;AAAA,IACd,KAAK,CAAA,CAAA;AAAA,IACL,KAAK,uBAAA;AACH,MAAO,OAAA,CAAA,eAAA;AAAA,IACT,KAAK,CAAA,CAAA;AAAA,IACL,KAAK,uBAAA;AACH,MAAO,OAAA,CAAA,eAAA;AAAA,IACT,KAAK,CAAA,CAAA;AAAA,IACL,KAAK,wBAAA;AACH,MAAO,OAAA,CAAA,gBAAA;AAAA,IACT,KAAK,CAAA,CAAA;AAAA,IACL,KAAK,yBAAA;AACH,MAAO,OAAA,CAAA,iBAAA;AAAA,IACT,KAAK,CAAA,CAAA,CAAA;AAAA,IACL,KAAK,cAAA,CAAA;AAAA,IACL;AACE,MAAO,OAAA,CAAA,CAAA,oBAAA;AAAA,GACX;AACF,CAAA;AAEO,SAAS,mBAAmB,MAA8B,EAAA;AAC/D,EAAA,QAAQ,MAAQ;AAAA,IACd,KAAK,CAAA;AACH,MAAO,OAAA,uBAAA,CAAA;AAAA,IACT,KAAK,CAAA;AACH,MAAO,OAAA,uBAAA,CAAA;AAAA,IACT,KAAK,CAAA;AACH,MAAO,OAAA,wBAAA,CAAA;AAAA,IACT,KAAK,CAAA;AACH,MAAO,OAAA,yBAAA,CAAA;AAAA,IACT,KAAK,CAAA,CAAA,oBAAA;AAAA,IACL;AACE,MAAO,OAAA,cAAA,CAAA;AAAA,GACX;AACF,CAAA;AAGY,IAAAC,gBAAA,qBAAAA,eAAL,KAAA;AACL,EAAAA,eAAAA,CAAAA,eAAAA,CAAA,aAAU,CAAV,CAAA,GAAA,SAAA,CAAA;AAEA,EAAAA,eAAAA,CAAAA,eAAAA,CAAA,cAAW,CAAX,CAAA,GAAA,UAAA,CAAA;AAEA,EAAAA,eAAAA,CAAAA,eAAAA,CAAA,UAAO,CAAP,CAAA,GAAA,MAAA,CAAA;AACA,EAAAA,eAAAA,CAAAA,eAAAA,CAAA,kBAAe,CAAf,CAAA,CAAA,GAAA,cAAA,CAAA;AANU,EAAAA,OAAAA,eAAAA,CAAAA;AAAA,CAAA,EAAAA,gBAAA,IAAA,EAAA,CAAA,CAAA;AASL,SAAS,uBAAuB,MAA6B,EAAA;AAClE,EAAA,QAAQ,MAAQ;AAAA,IACd,KAAK,CAAA,CAAA;AAAA,IACL,KAAK,yBAAA;AACH,MAAO,OAAA,CAAA,eAAA;AAAA,IACT,KAAK,CAAA,CAAA;AAAA,IACL,KAAK,0BAAA;AACH,MAAO,OAAA,CAAA,gBAAA;AAAA,IACT,KAAK,CAAA,CAAA;AAAA,IACL,KAAK,sBAAA;AACH,MAAO,OAAA,CAAA,YAAA;AAAA,IACT,KAAK,CAAA,CAAA,CAAA;AAAA,IACL,KAAK,cAAA,CAAA;AAAA,IACL;AACE,MAAO,OAAA,CAAA,CAAA,oBAAA;AAAA,GACX;AACF,CAAA;AAEO,SAAS,qBAAqB,MAAgC,EAAA;AACnE,EAAA,QAAQ,MAAQ;AAAA,IACd,KAAK,CAAA;AACH,MAAO,OAAA,yBAAA,CAAA;AAAA,IACT,KAAK,CAAA;AACH,MAAO,OAAA,0BAAA,CAAA;AAAA,IACT,KAAK,CAAA;AACH,MAAO,OAAA,sBAAA,CAAA;AAAA,IACT,KAAK,CAAA,CAAA,oBAAA;AAAA,IACL;AACE,MAAO,OAAA,cAAA,CAAA;AAAA,GACX;AACF,CAAA;AA2JA,SAAS,gBAA2B,GAAA;AAClC,EAAO,OAAA,EAAE,UAAU,MAAO,CAAA,GAAG,GAAG,SAAW,EAAA,IAAI,UAAW,CAAA,CAAC,CAAE,EAAA,CAAA;AAC/D,CAAA;AAEO,MAAMC,QAAS,GAAA;AAAA,EACpB,OAAO,OAAiB,EAAA,MAAA,GAAqB,GAAI,CAAA,MAAA,CAAO,QAAsB,EAAA;AAC5E,IAAA,IAAI,QAAQ,QAAa,KAAA,KAAA,CAAA,IAAa,QAAQ,QAAa,KAAA,MAAA,CAAO,GAAG,CAAG,EAAA;AACtE,MAAA,IAAI,OAAO,OAAQ,CAAA,EAAA,EAAI,QAAQ,QAAQ,CAAA,KAAM,QAAQ,QAAU,EAAA;AAC7D,QAAM,MAAA,IAAI,UAAW,CAAA,KAAA,CAAM,oEAAoE,CAAA,CAAA;AAAA,OACjG;AACA,MAAA,MAAA,CAAO,OAAO,CAAC,CAAA,CAAE,OAAO,OAAQ,CAAA,QAAA,CAAS,UAAU,CAAA,CAAA;AAAA,KACrD;AACA,IAAA,IAAI,QAAQ,SAAc,KAAA,KAAA,CAAA,IAAa,OAAQ,CAAA,SAAA,CAAU,WAAW,CAAG,EAAA;AACrE,MAAA,MAAA,CAAO,MAAO,CAAA,EAAE,CAAE,CAAA,KAAA,CAAM,QAAQ,SAAS,CAAA,CAAA;AAAA,KAC3C;AACA,IAAO,OAAA,MAAA,CAAA;AAAA,GACT;AAAA,EAEA,MAAA,CAAO,OAAgC,MAAyB,EAAA;AAC9D,IAAM,MAAA,MAAA,GAAS,iBAAiB,GAAI,CAAA,MAAA,GAAS,QAAQ,GAAI,CAAA,MAAA,CAAO,OAAO,KAAK,CAAA,CAAA;AAC5E,IAAA,IAAI,MAAM,MAAW,KAAA,KAAA,CAAA,GAAY,MAAO,CAAA,GAAA,GAAM,OAAO,GAAM,GAAA,MAAA,CAAA;AAC3D,IAAA,MAAM,UAAU,gBAAiB,EAAA,CAAA;AACjC,IAAO,OAAA,MAAA,CAAO,MAAM,GAAK,EAAA;AACvB,MAAM,MAAA,GAAA,GAAM,OAAO,MAAO,EAAA,CAAA;AAC1B,MAAA,QAAQ,QAAQ,CAAG;AAAA,QACjB,KAAK,CAAA;AACH,UAAA,IAAI,QAAQ,CAAG,EAAA;AACb,YAAA,MAAA;AAAA,WACF;AAEA,UAAA,OAAA,CAAQ,QAAW,GAAA,YAAA,CAAa,MAAO,CAAA,MAAA,EAAgB,CAAA,CAAA;AACvD,UAAA,SAAA;AAAA,QACF,KAAK,CAAA;AACH,UAAA,IAAI,QAAQ,EAAI,EAAA;AACd,YAAA,MAAA;AAAA,WACF;AAEA,UAAQ,OAAA,CAAA,SAAA,GAAY,OAAO,KAAM,EAAA,CAAA;AACjC,UAAA,SAAA;AAAA,OACJ;AACA,MAAA,IAAA,CAAK,GAAM,GAAA,CAAA,MAAO,CAAK,IAAA,GAAA,KAAQ,CAAG,EAAA;AAChC,QAAA,MAAA;AAAA,OACF;AACA,MAAO,MAAA,CAAA,QAAA,CAAS,MAAM,CAAC,CAAA,CAAA;AAAA,KACzB;AACA,IAAO,OAAA,OAAA,CAAA;AAAA,GACT;AAAA,EAEA,SAAS,MAAqB,EAAA;AAC5B,IAAO,OAAA;AAAA,MACL,QAAA,EAAUJ,OAAM,CAAA,MAAA,CAAO,QAAQ,CAAA,GAAI,OAAO,MAAO,CAAA,QAAQ,CAAI,GAAA,MAAA,CAAO,GAAG,CAAA;AAAA,MACvE,SAAA,EAAWA,OAAM,CAAA,MAAA,CAAO,SAAS,CAAA,GAAI,eAAgB,CAAA,MAAA,CAAO,SAAS,CAAA,GAAI,IAAI,UAAA,CAAW,CAAC,CAAA;AAAA,KAC3F,CAAA;AAAA,GACF;AAAA,EAEA,OAAO,OAA0B,EAAA;AAC/B,IAAA,MAAM,MAAW,EAAC,CAAA;AAClB,IAAA,IAAI,QAAQ,QAAa,KAAA,KAAA,CAAA,IAAa,QAAQ,QAAa,KAAA,MAAA,CAAO,GAAG,CAAG,EAAA;AACtE,MAAI,GAAA,CAAA,QAAA,GAAW,OAAQ,CAAA,QAAA,CAAS,QAAS,EAAA,CAAA;AAAA,KAC3C;AACA,IAAA,IAAI,QAAQ,SAAc,KAAA,KAAA,CAAA,IAAa,OAAQ,CAAA,SAAA,CAAU,WAAW,CAAG,EAAA;AACrE,MAAI,GAAA,CAAA,SAAA,GAAY,eAAgB,CAAA,OAAA,CAAQ,SAAS,CAAA,CAAA;AAAA,KACnD;AACA,IAAO,OAAA,GAAA,CAAA;AAAA,GACT;AAAA,EAEA,OAAO,IAAoC,EAAA;AACzC,IAAA,OAAOI,QAAO,CAAA,WAAA,CAAY,IAAQ,IAAA,EAAE,CAAA,CAAA;AAAA,GACtC;AAAA,EACA,YAAY,MAAqC,EAAA;AAC/C,IAAA,MAAM,UAAU,gBAAiB,EAAA,CAAA;AACjC,IAAA,OAAA,CAAQ,QAAW,GAAA,MAAA,CAAO,QAAY,IAAA,MAAA,CAAO,GAAG,CAAA,CAAA;AAChD,IAAA,OAAA,CAAQ,SAAY,GAAA,MAAA,CAAO,SAAa,IAAA,IAAI,WAAW,CAAC,CAAA,CAAA;AACxD,IAAO,OAAA,OAAA,CAAA;AAAA,GACT;AACF,CAAA,CAAA;AAEA,SAAS,uBAAyC,GAAA;AAChD,EAAA,OAAO,EAAC,CAAA;AACV,CAAA;AAEO,MAAM,aAAgB,GAAA;AAAA,EAC3B,OAAO,CAAkB,EAAA,MAAA,GAAqB,GAAI,CAAA,MAAA,CAAO,QAAsB,EAAA;AAC7E,IAAO,OAAA,MAAA,CAAA;AAAA,GACT;AAAA,EAEA,MAAA,CAAO,OAAgC,MAAgC,EAAA;AACrE,IAAM,MAAA,MAAA,GAAS,iBAAiB,GAAI,CAAA,MAAA,GAAS,QAAQ,GAAI,CAAA,MAAA,CAAO,OAAO,KAAK,CAAA,CAAA;AAC5E,IAAA,IAAI,MAAM,MAAW,KAAA,KAAA,CAAA,GAAY,MAAO,CAAA,GAAA,GAAM,OAAO,GAAM,GAAA,MAAA,CAAA;AAC3D,IAAA,MAAM,UAAU,uBAAwB,EAAA,CAAA;AACxC,IAAO,OAAA,MAAA,CAAO,MAAM,GAAK,EAAA;AACvB,MAAM,MAAA,GAAA,GAAM,OAAO,MAAO,EAAA,CAAA;AAG1B,MAAA,IAAA,CAAK,GAAM,GAAA,CAAA,MAAO,CAAK,IAAA,GAAA,KAAQ,CAAG,EAAA;AAChC,QAAA,MAAA;AAAA,OACF;AACA,MAAO,MAAA,CAAA,QAAA,CAAS,MAAM,CAAC,CAAA,CAAA;AAAA,KACzB;AACA,IAAO,OAAA,OAAA,CAAA;AAAA,GACT;AAAA,EAEA,SAAS,CAAuB,EAAA;AAC9B,IAAA,OAAO,EAAC,CAAA;AAAA,GACV;AAAA,EAEA,OAAO,CAA2B,EAAA;AAChC,IAAA,MAAM,MAAW,EAAC,CAAA;AAClB,IAAO,OAAA,GAAA,CAAA;AAAA,GACT;AAAA,EAEA,OAAO,IAAkD,EAAA;AACvD,IAAA,OAAO,aAAc,CAAA,WAAA,CAAY,IAAQ,IAAA,EAAE,CAAA,CAAA;AAAA,GAC7C;AAAA,EACA,YAAY,CAA8C,EAAA;AACxD,IAAA,MAAM,UAAU,uBAAwB,EAAA,CAAA;AACxC,IAAO,OAAA,OAAA,CAAA;AAAA,GACT;AACF,CAAA,CAAA;AAEA,SAAS,wBAA2C,GAAA;AAClD,EAAO,OAAA,EAAE,aAAa,KAAW,CAAA,EAAA,YAAA,EAAc,QAAW,SAAW,EAAA,KAAA,CAAA,EAAW,UAAU,KAAU,CAAA,EAAA,CAAA;AACtG,CAAA;AAEO,MAAM,cAAiB,GAAA;AAAA,EAC5B,OAAO,OAAyB,EAAA,MAAA,GAAqB,GAAI,CAAA,MAAA,CAAO,QAAsB,EAAA;AACpF,IAAI,IAAA,OAAA,CAAQ,gBAAgB,KAAW,CAAA,EAAA;AACrC,MAAOA,QAAA,CAAA,MAAA,CAAO,OAAQ,CAAA,WAAA,EAAa,MAAO,CAAA,MAAA,CAAO,EAAE,CAAE,CAAA,IAAA,EAAM,CAAA,CAAE,MAAO,EAAA,CAAA;AAAA,KACtE;AACA,IAAI,IAAA,OAAA,CAAQ,iBAAiB,KAAW,CAAA,EAAA;AACtC,MAAOA,QAAA,CAAA,MAAA,CAAO,OAAQ,CAAA,YAAA,EAAc,MAAO,CAAA,MAAA,CAAO,EAAE,CAAE,CAAA,IAAA,EAAM,CAAA,CAAE,MAAO,EAAA,CAAA;AAAA,KACvE;AACA,IAAI,IAAA,OAAA,CAAQ,cAAc,KAAW,CAAA,EAAA;AACnC,MAAOA,QAAA,CAAA,MAAA,CAAO,OAAQ,CAAA,SAAA,EAAW,MAAO,CAAA,MAAA,CAAO,EAAE,CAAE,CAAA,IAAA,EAAM,CAAA,CAAE,MAAO,EAAA,CAAA;AAAA,KACpE;AACA,IAAI,IAAA,OAAA,CAAQ,aAAa,KAAW,CAAA,EAAA;AAClC,MAAOA,QAAA,CAAA,MAAA,CAAO,OAAQ,CAAA,QAAA,EAAU,MAAO,CAAA,MAAA,CAAO,EAAE,CAAE,CAAA,IAAA,EAAM,CAAA,CAAE,MAAO,EAAA,CAAA;AAAA,KACnE;AACA,IAAO,OAAA,MAAA,CAAA;AAAA,GACT;AAAA,EAEA,MAAA,CAAO,OAAgC,MAAiC,EAAA;AACtE,IAAM,MAAA,MAAA,GAAS,iBAAiB,GAAI,CAAA,MAAA,GAAS,QAAQ,GAAI,CAAA,MAAA,CAAO,OAAO,KAAK,CAAA,CAAA;AAC5E,IAAA,IAAI,MAAM,MAAW,KAAA,KAAA,CAAA,GAAY,MAAO,CAAA,GAAA,GAAM,OAAO,GAAM,GAAA,MAAA,CAAA;AAC3D,IAAA,MAAM,UAAU,wBAAyB,EAAA,CAAA;AACzC,IAAO,OAAA,MAAA,CAAO,MAAM,GAAK,EAAA;AACvB,MAAM,MAAA,GAAA,GAAM,OAAO,MAAO,EAAA,CAAA;AAC1B,MAAA,QAAQ,QAAQ,CAAG;AAAA,QACjB,KAAK,CAAA;AACH,UAAA,IAAI,QAAQ,EAAI,EAAA;AACd,YAAA,MAAA;AAAA,WACF;AAEA,UAAA,OAAA,CAAQ,cAAcA,QAAO,CAAA,MAAA,CAAO,MAAQ,EAAA,MAAA,CAAO,QAAQ,CAAA,CAAA;AAC3D,UAAA,SAAA;AAAA,QACF,KAAK,CAAA;AACH,UAAA,IAAI,QAAQ,EAAI,EAAA;AACd,YAAA,MAAA;AAAA,WACF;AAEA,UAAA,OAAA,CAAQ,eAAeA,QAAO,CAAA,MAAA,CAAO,MAAQ,EAAA,MAAA,CAAO,QAAQ,CAAA,CAAA;AAC5D,UAAA,SAAA;AAAA,QACF,KAAK,CAAA;AACH,UAAA,IAAI,QAAQ,EAAI,EAAA;AACd,YAAA,MAAA;AAAA,WACF;AAEA,UAAA,OAAA,CAAQ,YAAYA,QAAO,CAAA,MAAA,CAAO,MAAQ,EAAA,MAAA,CAAO,QAAQ,CAAA,CAAA;AACzD,UAAA,SAAA;AAAA,QACF,KAAK,CAAA;AACH,UAAA,IAAI,QAAQ,EAAI,EAAA;AACd,YAAA,MAAA;AAAA,WACF;AAEA,UAAA,OAAA,CAAQ,WAAWA,QAAO,CAAA,MAAA,CAAO,MAAQ,EAAA,MAAA,CAAO,QAAQ,CAAA,CAAA;AACxD,UAAA,SAAA;AAAA,OACJ;AACA,MAAA,IAAA,CAAK,GAAM,GAAA,CAAA,MAAO,CAAK,IAAA,GAAA,KAAQ,CAAG,EAAA;AAChC,QAAA,MAAA;AAAA,OACF;AACA,MAAO,MAAA,CAAA,QAAA,CAAS,MAAM,CAAC,CAAA,CAAA;AAAA,KACzB;AACA,IAAO,OAAA,OAAA,CAAA;AAAA,GACT;AAAA,EAEA,SAAS,MAA6B,EAAA;AACpC,IAAO,OAAA;AAAA,MACL,WAAA,EAAaJ,QAAM,MAAO,CAAA,WAAW,IAAII,QAAO,CAAA,QAAA,CAAS,MAAO,CAAA,WAAW,CAAI,GAAA,KAAA,CAAA;AAAA,MAC/E,YAAA,EAAcJ,QAAM,MAAO,CAAA,YAAY,IAAII,QAAO,CAAA,QAAA,CAAS,MAAO,CAAA,YAAY,CAAI,GAAA,KAAA,CAAA;AAAA,MAClF,SAAA,EAAWJ,QAAM,MAAO,CAAA,SAAS,IAAII,QAAO,CAAA,QAAA,CAAS,MAAO,CAAA,SAAS,CAAI,GAAA,KAAA,CAAA;AAAA,MACzE,QAAA,EAAUJ,QAAM,MAAO,CAAA,QAAQ,IAAII,QAAO,CAAA,QAAA,CAAS,MAAO,CAAA,QAAQ,CAAI,GAAA,KAAA,CAAA;AAAA,KACxE,CAAA;AAAA,GACF;AAAA,EAEA,OAAO,OAAkC,EAAA;AACvC,IAAA,MAAM,MAAW,EAAC,CAAA;AAClB,IAAI,IAAA,OAAA,CAAQ,gBAAgB,KAAW,CAAA,EAAA;AACrC,MAAA,GAAA,CAAI,WAAc,GAAAA,QAAA,CAAO,MAAO,CAAA,OAAA,CAAQ,WAAW,CAAA,CAAA;AAAA,KACrD;AACA,IAAI,IAAA,OAAA,CAAQ,iBAAiB,KAAW,CAAA,EAAA;AACtC,MAAA,GAAA,CAAI,YAAe,GAAAA,QAAA,CAAO,MAAO,CAAA,OAAA,CAAQ,YAAY,CAAA,CAAA;AAAA,KACvD;AACA,IAAI,IAAA,OAAA,CAAQ,cAAc,KAAW,CAAA,EAAA;AACnC,MAAA,GAAA,CAAI,SAAY,GAAAA,QAAA,CAAO,MAAO,CAAA,OAAA,CAAQ,SAAS,CAAA,CAAA;AAAA,KACjD;AACA,IAAI,IAAA,OAAA,CAAQ,aAAa,KAAW,CAAA,EAAA;AAClC,MAAA,GAAA,CAAI,QAAW,GAAAA,QAAA,CAAO,MAAO,CAAA,OAAA,CAAQ,QAAQ,CAAA,CAAA;AAAA,KAC/C;AACA,IAAO,OAAA,GAAA,CAAA;AAAA,GACT;AAAA,EAEA,OAAO,IAAoD,EAAA;AACzD,IAAA,OAAO,cAAe,CAAA,WAAA,CAAY,IAAQ,IAAA,EAAE,CAAA,CAAA;AAAA,GAC9C;AAAA,EACA,YAAY,MAAqD,EAAA;AAC/D,IAAA,MAAM,UAAU,wBAAyB,EAAA,CAAA;AACzC,IAAQ,OAAA,CAAA,WAAA,GAAe,MAAO,CAAA,WAAA,KAAgB,KAAa,CAAA,IAAA,MAAA,CAAO,WAAgB,KAAA,IAAA,GAC9EA,QAAO,CAAA,WAAA,CAAY,MAAO,CAAA,WAAW,CACrC,GAAA,KAAA,CAAA,CAAA;AACJ,IAAQ,OAAA,CAAA,YAAA,GAAgB,MAAO,CAAA,YAAA,KAAiB,KAAa,CAAA,IAAA,MAAA,CAAO,YAAiB,KAAA,IAAA,GACjFA,QAAO,CAAA,WAAA,CAAY,MAAO,CAAA,YAAY,CACtC,GAAA,KAAA,CAAA,CAAA;AACJ,IAAQ,OAAA,CAAA,SAAA,GAAa,MAAO,CAAA,SAAA,KAAc,KAAa,CAAA,IAAA,MAAA,CAAO,SAAc,KAAA,IAAA,GACxEA,QAAO,CAAA,WAAA,CAAY,MAAO,CAAA,SAAS,CACnC,GAAA,KAAA,CAAA,CAAA;AACJ,IAAQ,OAAA,CAAA,QAAA,GAAY,MAAO,CAAA,QAAA,KAAa,KAAa,CAAA,IAAA,MAAA,CAAO,QAAa,KAAA,IAAA,GACrEA,QAAO,CAAA,WAAA,CAAY,MAAO,CAAA,QAAQ,CAClC,GAAA,KAAA,CAAA,CAAA;AACJ,IAAO,OAAA,OAAA,CAAA;AAAA,GACT;AACF,CAAA,CAAA;AAEA,SAAS,2BAAiD,GAAA;AACxD,EAAO,OAAA,EAAE,gBAAgB,KAAW,CAAA,EAAA,QAAA,EAAU,QAAW,MAAQ,EAAA,EAAI,EAAA,iBAAA,EAAmB,KAAU,CAAA,EAAA,CAAA;AACpG,CAAA;AAEO,MAAMC,mBAAoB,GAAA;AAAA,EAC/B,OAAO,OAA4B,EAAA,MAAA,GAAqB,GAAI,CAAA,MAAA,CAAO,QAAsB,EAAA;AACvF,IAAI,IAAA,OAAA,CAAQ,mBAAmB,KAAW,CAAA,EAAA;AACxC,MAAOD,QAAA,CAAA,MAAA,CAAO,OAAQ,CAAA,cAAA,EAAgB,MAAO,CAAA,MAAA,CAAO,EAAE,CAAE,CAAA,IAAA,EAAM,CAAA,CAAE,MAAO,EAAA,CAAA;AAAA,KACzE;AACA,IAAI,IAAA,OAAA,CAAQ,aAAa,KAAW,CAAA,EAAA;AAClC,MAAA,MAAA,CAAO,MAAO,CAAA,EAAE,CAAE,CAAA,KAAA,CAAM,QAAQ,QAAQ,CAAA,CAAA;AAAA,KAC1C;AACA,IAAA,IAAI,QAAQ,MAAW,KAAA,KAAA,CAAA,IAAa,OAAQ,CAAA,MAAA,CAAO,WAAW,CAAG,EAAA;AAC/D,MAAW,KAAA,MAAA,CAAA,IAAK,QAAQ,MAAQ,EAAA;AAC9B,QAAA,MAAA,CAAO,MAAO,CAAA,EAAE,CAAE,CAAA,KAAA,CAAM,CAAE,CAAA,CAAA;AAAA,OAC5B;AAAA,KACF;AACA,IAAI,IAAA,OAAA,CAAQ,sBAAsB,KAAW,CAAA,EAAA;AAC3C,MAAS,QAAA,CAAA,MAAA,CAAO,OAAQ,CAAA,iBAAA,EAAmB,MAAO,CAAA,MAAA,CAAO,EAAE,CAAE,CAAA,IAAA,EAAM,CAAA,CAAE,MAAO,EAAA,CAAA;AAAA,KAC9E;AACA,IAAO,OAAA,MAAA,CAAA;AAAA,GACT;AAAA,EAEA,MAAA,CAAO,OAAgC,MAAoC,EAAA;AACzE,IAAM,MAAA,MAAA,GAAS,iBAAiB,GAAI,CAAA,MAAA,GAAS,QAAQ,GAAI,CAAA,MAAA,CAAO,OAAO,KAAK,CAAA,CAAA;AAC5E,IAAA,IAAI,MAAM,MAAW,KAAA,KAAA,CAAA,GAAY,MAAO,CAAA,GAAA,GAAM,OAAO,GAAM,GAAA,MAAA,CAAA;AAC3D,IAAA,MAAM,UAAU,2BAA4B,EAAA,CAAA;AAC5C,IAAO,OAAA,MAAA,CAAO,MAAM,GAAK,EAAA;AACvB,MAAM,MAAA,GAAA,GAAM,OAAO,MAAO,EAAA,CAAA;AAC1B,MAAA,QAAQ,QAAQ,CAAG;AAAA,QACjB,KAAK,CAAA;AACH,UAAA,IAAI,QAAQ,EAAI,EAAA;AACd,YAAA,MAAA;AAAA,WACF;AAEA,UAAA,OAAA,CAAQ,iBAAiBA,QAAO,CAAA,MAAA,CAAO,MAAQ,EAAA,MAAA,CAAO,QAAQ,CAAA,CAAA;AAC9D,UAAA,SAAA;AAAA,QACF,KAAK,CAAA;AACH,UAAA,IAAI,QAAQ,EAAI,EAAA;AACd,YAAA,MAAA;AAAA,WACF;AAEA,UAAQ,OAAA,CAAA,QAAA,GAAW,OAAO,KAAM,EAAA,CAAA;AAChC,UAAA,SAAA;AAAA,QACF,KAAK,CAAA;AACH,UAAA,IAAI,QAAQ,EAAI,EAAA;AACd,YAAA,MAAA;AAAA,WACF;AAEA,UAAA,OAAA,CAAQ,MAAQ,CAAA,IAAA,CAAK,MAAO,CAAA,KAAA,EAAO,CAAA,CAAA;AACnC,UAAA,SAAA;AAAA,QACF,KAAK,CAAA;AACH,UAAA,IAAI,QAAQ,EAAI,EAAA;AACd,YAAA,MAAA;AAAA,WACF;AAEA,UAAA,OAAA,CAAQ,oBAAoB,QAAS,CAAA,MAAA,CAAO,MAAQ,EAAA,MAAA,CAAO,QAAQ,CAAA,CAAA;AACnE,UAAA,SAAA;AAAA,OACJ;AACA,MAAA,IAAA,CAAK,GAAM,GAAA,CAAA,MAAO,CAAK,IAAA,GAAA,KAAQ,CAAG,EAAA;AAChC,QAAA,MAAA;AAAA,OACF;AACA,MAAO,MAAA,CAAA,QAAA,CAAS,MAAM,CAAC,CAAA,CAAA;AAAA,KACzB;AACA,IAAO,OAAA,OAAA,CAAA;AAAA,GACT;AAAA,EAEA,SAAS,MAAgC,EAAA;AACvC,IAAO,OAAA;AAAA,MACL,cAAA,EAAgBJ,QAAM,MAAO,CAAA,cAAc,IAAII,QAAO,CAAA,QAAA,CAAS,MAAO,CAAA,cAAc,CAAI,GAAA,KAAA,CAAA;AAAA,MACxF,QAAA,EAAUJ,QAAM,MAAO,CAAA,QAAQ,IAAI,oBAAqB,CAAA,MAAA,CAAO,QAAQ,CAAI,GAAA,KAAA,CAAA;AAAA,MAC3E,QAAQ,UAAW,CAAA,KAAA,CAAM,OAAQ,CAAA,MAAA,EAAQ,MAAM,CAAI,GAAA,MAAA,CAAO,MAAO,CAAA,GAAA,CAAI,CAAC,CAAW,KAAA,eAAA,CAAgB,CAAC,CAAC,IAAI,EAAC;AAAA,MACxG,iBAAA,EAAmBA,QAAM,MAAO,CAAA,iBAAiB,IAAI,QAAS,CAAA,QAAA,CAAS,MAAO,CAAA,iBAAiB,CAAI,GAAA,KAAA,CAAA;AAAA,KACrG,CAAA;AAAA,GACF;AAAA,EAEA,OAAO,OAAqC,EAAA;AAC1C,IAAA,MAAM,MAAW,EAAC,CAAA;AAClB,IAAI,IAAA,OAAA,CAAQ,mBAAmB,KAAW,CAAA,EAAA;AACxC,MAAA,GAAA,CAAI,cAAiB,GAAAI,QAAA,CAAO,MAAO,CAAA,OAAA,CAAQ,cAAc,CAAA,CAAA;AAAA,KAC3D;AACA,IAAI,IAAA,OAAA,CAAQ,aAAa,KAAW,CAAA,EAAA;AAClC,MAAI,GAAA,CAAA,QAAA,GAAW,kBAAmB,CAAA,OAAA,CAAQ,QAAQ,CAAA,CAAA;AAAA,KACpD;AACA,IAAI,IAAA,OAAA,CAAQ,QAAQ,MAAQ,EAAA;AAC1B,MAAI,GAAA,CAAA,MAAA,GAAS,QAAQ,MAAO,CAAA,GAAA,CAAI,CAAC,CAAM,KAAA,eAAA,CAAgB,CAAC,CAAC,CAAA,CAAA;AAAA,KAC3D;AACA,IAAI,IAAA,OAAA,CAAQ,sBAAsB,KAAW,CAAA,EAAA;AAC3C,MAAA,GAAA,CAAI,iBAAoB,GAAA,QAAA,CAAS,MAAO,CAAA,OAAA,CAAQ,iBAAiB,CAAA,CAAA;AAAA,KACnE;AACA,IAAO,OAAA,GAAA,CAAA;AAAA,GACT;AAAA,EAEA,OAAO,IAA0D,EAAA;AAC/D,IAAA,OAAOC,mBAAkB,CAAA,WAAA,CAAY,IAAQ,IAAA,EAAE,CAAA,CAAA;AAAA,GACjD;AAAA,EACA,YAAY,MAA2D,EAAA;AACrE,IAAA,MAAM,UAAU,2BAA4B,EAAA,CAAA;AAC5C,IAAQ,OAAA,CAAA,cAAA,GAAkB,MAAO,CAAA,cAAA,KAAmB,KAAa,CAAA,IAAA,MAAA,CAAO,cAAmB,KAAA,IAAA,GACvFD,QAAO,CAAA,WAAA,CAAY,MAAO,CAAA,cAAc,CACxC,GAAA,KAAA,CAAA,CAAA;AACJ,IAAQ,OAAA,CAAA,QAAA,GAAW,OAAO,QAAY,IAAA,KAAA,CAAA,CAAA;AACtC,IAAQ,OAAA,CAAA,MAAA,GAAS,OAAO,MAAQ,EAAA,GAAA,CAAI,CAAC,CAAM,KAAA,CAAC,KAAK,EAAC,CAAA;AAClD,IAAQ,OAAA,CAAA,iBAAA,GAAqB,MAAO,CAAA,iBAAA,KAAsB,KAAa,CAAA,IAAA,MAAA,CAAO,iBAAsB,KAAA,IAAA,GAChG,QAAS,CAAA,WAAA,CAAY,MAAO,CAAA,iBAAiB,CAC7C,GAAA,KAAA,CAAA,CAAA;AACJ,IAAO,OAAA,OAAA,CAAA;AAAA,GACT;AACF,CAAA,CAAA;AAEA,SAAS,4BAAmD,GAAA;AAC1D,EAAO,OAAA,EAAE,SAAS,KAAU,CAAA,EAAA,CAAA;AAC9B,CAAA;AAEO,MAAME,oBAAqB,GAAA;AAAA,EAChC,OAAO,OAA6B,EAAA,MAAA,GAAqB,GAAI,CAAA,MAAA,CAAO,QAAsB,EAAA;AACxF,IAAQ,QAAA,OAAA,CAAQ,SAAS,KAAO;AAAA,MAC9B,KAAK,MAAA;AACH,QAAKC,MAAA,CAAA,MAAA,CAAO,OAAQ,CAAA,OAAA,CAAQ,IAAM,EAAA,MAAA,CAAO,MAAO,CAAA,EAAE,CAAE,CAAA,IAAA,EAAM,CAAA,CAAE,MAAO,EAAA,CAAA;AACnE,QAAA,MAAA;AAAA,MACF,KAAK,YAAA;AACH,QAAWC,YAAA,CAAA,MAAA,CAAO,OAAQ,CAAA,OAAA,CAAQ,UAAY,EAAA,MAAA,CAAO,MAAO,CAAA,EAAE,CAAE,CAAA,IAAA,EAAM,CAAA,CAAE,MAAO,EAAA,CAAA;AAC/E,QAAA,MAAA;AAAA,MACF,KAAK,UAAA;AACH,QAASC,UAAA,CAAA,MAAA,CAAO,OAAQ,CAAA,OAAA,CAAQ,QAAU,EAAA,MAAA,CAAO,MAAO,CAAA,EAAE,CAAE,CAAA,IAAA,EAAM,CAAA,CAAE,MAAO,EAAA,CAAA;AAC3E,QAAA,MAAA;AAAA,MACF,KAAK,WAAA;AACH,QAAUC,WAAA,CAAA,MAAA,CAAO,OAAQ,CAAA,OAAA,CAAQ,SAAW,EAAA,MAAA,CAAO,MAAO,CAAA,EAAE,CAAE,CAAA,IAAA,EAAM,CAAA,CAAE,MAAO,EAAA,CAAA;AAC7E,QAAA,MAAA;AAAA,MACF,KAAK,eAAA;AACH,QAAcC,eAAA,CAAA,MAAA,CAAO,OAAQ,CAAA,OAAA,CAAQ,aAAe,EAAA,MAAA,CAAO,MAAO,CAAA,EAAE,CAAE,CAAA,IAAA,EAAM,CAAA,CAAE,MAAO,EAAA,CAAA;AACrF,QAAA,MAAA;AAAA,KACJ;AACA,IAAO,OAAA,MAAA,CAAA;AAAA,GACT;AAAA,EAEA,MAAA,CAAO,OAAgC,MAAqC,EAAA;AAC1E,IAAM,MAAA,MAAA,GAAS,iBAAiB,GAAI,CAAA,MAAA,GAAS,QAAQ,GAAI,CAAA,MAAA,CAAO,OAAO,KAAK,CAAA,CAAA;AAC5E,IAAA,IAAI,MAAM,MAAW,KAAA,KAAA,CAAA,GAAY,MAAO,CAAA,GAAA,GAAM,OAAO,GAAM,GAAA,MAAA,CAAA;AAC3D,IAAA,MAAM,UAAU,4BAA6B,EAAA,CAAA;AAC7C,IAAO,OAAA,MAAA,CAAO,MAAM,GAAK,EAAA;AACvB,MAAM,MAAA,GAAA,GAAM,OAAO,MAAO,EAAA,CAAA;AAC1B,MAAA,QAAQ,QAAQ,CAAG;AAAA,QACjB,KAAK,CAAA;AACH,UAAA,IAAI,QAAQ,EAAI,EAAA;AACd,YAAA,MAAA;AAAA,WACF;AAEA,UAAQ,OAAA,CAAA,OAAA,GAAU,EAAE,KAAA,EAAO,MAAQ,EAAA,IAAA,EAAMJ,MAAK,CAAA,MAAA,CAAO,MAAQ,EAAA,MAAA,CAAO,MAAO,EAAC,CAAE,EAAA,CAAA;AAC9E,UAAA,SAAA;AAAA,QACF,KAAK,CAAA;AACH,UAAA,IAAI,QAAQ,EAAI,EAAA;AACd,YAAA,MAAA;AAAA,WACF;AAEA,UAAQ,OAAA,CAAA,OAAA,GAAU,EAAE,KAAA,EAAO,YAAc,EAAA,UAAA,EAAYC,YAAW,CAAA,MAAA,CAAO,MAAQ,EAAA,MAAA,CAAO,MAAO,EAAC,CAAE,EAAA,CAAA;AAChG,UAAA,SAAA;AAAA,QACF,KAAK,CAAA;AACH,UAAA,IAAI,QAAQ,EAAI,EAAA;AACd,YAAA,MAAA;AAAA,WACF;AAEA,UAAQ,OAAA,CAAA,OAAA,GAAU,EAAE,KAAA,EAAO,UAAY,EAAA,QAAA,EAAUC,UAAS,CAAA,MAAA,CAAO,MAAQ,EAAA,MAAA,CAAO,MAAO,EAAC,CAAE,EAAA,CAAA;AAC1F,UAAA,SAAA;AAAA,QACF,KAAK,CAAA;AACH,UAAA,IAAI,QAAQ,EAAI,EAAA;AACd,YAAA,MAAA;AAAA,WACF;AAEA,UAAQ,OAAA,CAAA,OAAA,GAAU,EAAE,KAAA,EAAO,WAAa,EAAA,SAAA,EAAWC,WAAU,CAAA,MAAA,CAAO,MAAQ,EAAA,MAAA,CAAO,MAAO,EAAC,CAAE,EAAA,CAAA;AAC7F,UAAA,SAAA;AAAA,QACF,KAAK,CAAA;AACH,UAAA,IAAI,QAAQ,EAAI,EAAA;AACd,YAAA,MAAA;AAAA,WACF;AAEA,UAAQ,OAAA,CAAA,OAAA,GAAU,EAAE,KAAA,EAAO,eAAiB,EAAA,aAAA,EAAeC,eAAc,CAAA,MAAA,CAAO,MAAQ,EAAA,MAAA,CAAO,MAAO,EAAC,CAAE,EAAA,CAAA;AACzG,UAAA,SAAA;AAAA,OACJ;AACA,MAAA,IAAA,CAAK,GAAM,GAAA,CAAA,MAAO,CAAK,IAAA,GAAA,KAAQ,CAAG,EAAA;AAChC,QAAA,MAAA;AAAA,OACF;AACA,MAAO,MAAA,CAAA,QAAA,CAAS,MAAM,CAAC,CAAA,CAAA;AAAA,KACzB;AACA,IAAO,OAAA,OAAA,CAAA;AAAA,GACT;AAAA,EAEA,SAAS,MAAiC,EAAA;AACxC,IAAO,OAAA;AAAA,MACL,OAAS,EAAAX,OAAA,CAAM,MAAO,CAAA,IAAI,IACtB,EAAE,KAAA,EAAO,MAAQ,EAAA,IAAA,EAAMO,MAAK,CAAA,QAAA,CAAS,MAAO,CAAA,IAAI,GAChD,GAAAP,OAAA,CAAM,MAAO,CAAA,UAAU,CACvB,GAAA,EAAE,KAAO,EAAA,YAAA,EAAc,YAAYQ,YAAW,CAAA,QAAA,CAAS,MAAO,CAAA,UAAU,GACxE,GAAAR,OAAA,CAAM,MAAO,CAAA,QAAQ,IACrB,EAAE,KAAA,EAAO,UAAY,EAAA,QAAA,EAAUS,UAAS,CAAA,QAAA,CAAS,MAAO,CAAA,QAAQ,GAChE,GAAAT,OAAA,CAAM,MAAO,CAAA,SAAS,CACtB,GAAA,EAAE,KAAO,EAAA,WAAA,EAAa,WAAWU,WAAU,CAAA,QAAA,CAAS,MAAO,CAAA,SAAS,CAAE,EAAA,GACtEV,OAAM,CAAA,MAAA,CAAO,aAAa,CAC1B,GAAA,EAAE,KAAO,EAAA,eAAA,EAAiB,eAAeW,eAAc,CAAA,QAAA,CAAS,MAAO,CAAA,aAAa,GACpF,GAAA,KAAA,CAAA;AAAA,KACN,CAAA;AAAA,GACF;AAAA,EAEA,OAAO,OAAsC,EAAA;AAC3C,IAAA,MAAM,MAAW,EAAC,CAAA;AAClB,IAAI,IAAA,OAAA,CAAQ,OAAS,EAAA,KAAA,KAAU,MAAQ,EAAA;AACrC,MAAA,GAAA,CAAI,IAAO,GAAAJ,MAAA,CAAK,MAAO,CAAA,OAAA,CAAQ,QAAQ,IAAI,CAAA,CAAA;AAAA,KAC7C;AACA,IAAI,IAAA,OAAA,CAAQ,OAAS,EAAA,KAAA,KAAU,YAAc,EAAA;AAC3C,MAAA,GAAA,CAAI,UAAa,GAAAC,YAAA,CAAW,MAAO,CAAA,OAAA,CAAQ,QAAQ,UAAU,CAAA,CAAA;AAAA,KAC/D;AACA,IAAI,IAAA,OAAA,CAAQ,OAAS,EAAA,KAAA,KAAU,UAAY,EAAA;AACzC,MAAA,GAAA,CAAI,QAAW,GAAAC,UAAA,CAAS,MAAO,CAAA,OAAA,CAAQ,QAAQ,QAAQ,CAAA,CAAA;AAAA,KACzD;AACA,IAAI,IAAA,OAAA,CAAQ,OAAS,EAAA,KAAA,KAAU,WAAa,EAAA;AAC1C,MAAA,GAAA,CAAI,SAAY,GAAAC,WAAA,CAAU,MAAO,CAAA,OAAA,CAAQ,QAAQ,SAAS,CAAA,CAAA;AAAA,KAC5D;AACA,IAAI,IAAA,OAAA,CAAQ,OAAS,EAAA,KAAA,KAAU,eAAiB,EAAA;AAC9C,MAAA,GAAA,CAAI,aAAgB,GAAAC,eAAA,CAAc,MAAO,CAAA,OAAA,CAAQ,QAAQ,aAAa,CAAA,CAAA;AAAA,KACxE;AACA,IAAO,OAAA,GAAA,CAAA;AAAA,GACT;AAAA,EAEA,OAAO,IAA4D,EAAA;AACjE,IAAA,OAAOL,oBAAmB,CAAA,WAAA,CAAY,IAAQ,IAAA,EAAE,CAAA,CAAA;AAAA,GAClD;AAAA,EACA,YAAY,MAA6D,EAAA;AACvE,IAAA,MAAM,UAAU,4BAA6B,EAAA,CAAA;AAC7C,IAAI,IAAA,MAAA,CAAO,OAAS,EAAA,KAAA,KAAU,MAAU,IAAA,MAAA,CAAO,OAAS,EAAA,IAAA,KAAS,KAAa,CAAA,IAAA,MAAA,CAAO,OAAS,EAAA,IAAA,KAAS,IAAM,EAAA;AAC3G,MAAQ,OAAA,CAAA,OAAA,GAAU,EAAE,KAAA,EAAO,MAAQ,EAAA,IAAA,EAAMC,OAAK,WAAY,CAAA,MAAA,CAAO,OAAQ,CAAA,IAAI,CAAE,EAAA,CAAA;AAAA,KACjF;AACA,IACE,IAAA,MAAA,CAAO,OAAS,EAAA,KAAA,KAAU,YAC1B,IAAA,MAAA,CAAO,OAAS,EAAA,UAAA,KAAe,KAC/B,CAAA,IAAA,MAAA,CAAO,OAAS,EAAA,UAAA,KAAe,IAC/B,EAAA;AACA,MAAQ,OAAA,CAAA,OAAA,GAAU,EAAE,KAAA,EAAO,YAAc,EAAA,UAAA,EAAYC,aAAW,WAAY,CAAA,MAAA,CAAO,OAAQ,CAAA,UAAU,CAAE,EAAA,CAAA;AAAA,KACzG;AACA,IACE,IAAA,MAAA,CAAO,OAAS,EAAA,KAAA,KAAU,UAC1B,IAAA,MAAA,CAAO,OAAS,EAAA,QAAA,KAAa,KAC7B,CAAA,IAAA,MAAA,CAAO,OAAS,EAAA,QAAA,KAAa,IAC7B,EAAA;AACA,MAAQ,OAAA,CAAA,OAAA,GAAU,EAAE,KAAA,EAAO,UAAY,EAAA,QAAA,EAAUC,WAAS,WAAY,CAAA,MAAA,CAAO,OAAQ,CAAA,QAAQ,CAAE,EAAA,CAAA;AAAA,KACjG;AACA,IACE,IAAA,MAAA,CAAO,OAAS,EAAA,KAAA,KAAU,WAC1B,IAAA,MAAA,CAAO,OAAS,EAAA,SAAA,KAAc,KAC9B,CAAA,IAAA,MAAA,CAAO,OAAS,EAAA,SAAA,KAAc,IAC9B,EAAA;AACA,MAAQ,OAAA,CAAA,OAAA,GAAU,EAAE,KAAA,EAAO,WAAa,EAAA,SAAA,EAAWC,YAAU,WAAY,CAAA,MAAA,CAAO,OAAQ,CAAA,SAAS,CAAE,EAAA,CAAA;AAAA,KACrG;AACA,IACE,IAAA,MAAA,CAAO,OAAS,EAAA,KAAA,KAAU,eAC1B,IAAA,MAAA,CAAO,OAAS,EAAA,aAAA,KAAkB,KAClC,CAAA,IAAA,MAAA,CAAO,OAAS,EAAA,aAAA,KAAkB,IAClC,EAAA;AACA,MAAA,OAAA,CAAQ,OAAU,GAAA;AAAA,QAChB,KAAO,EAAA,eAAA;AAAA,QACP,aAAe,EAAAC,eAAA,CAAc,WAAY,CAAA,MAAA,CAAO,QAAQ,aAAa,CAAA;AAAA,OACvE,CAAA;AAAA,KACF;AACA,IAAO,OAAA,OAAA,CAAA;AAAA,GACT;AACF,CAAA,CAAA;AAEA,SAAS,oBAAmC,GAAA;AAC1C,EAAA,OAAO,EAAE,MAAA,EAAQ,KAAW,CAAA,EAAA,OAAA,EAAS,EAAG,EAAA,CAAA;AAC1C,CAAA;AAEO,MAAMH,YAAa,GAAA;AAAA,EACxB,OAAO,OAAqB,EAAA,MAAA,GAAqB,GAAI,CAAA,MAAA,CAAO,QAAsB,EAAA;AAChF,IAAI,IAAA,OAAA,CAAQ,WAAW,KAAW,CAAA,EAAA;AAChC,MAAOJ,QAAA,CAAA,MAAA,CAAO,OAAQ,CAAA,MAAA,EAAQ,MAAO,CAAA,MAAA,CAAO,EAAE,CAAE,CAAA,IAAA,EAAM,CAAA,CAAE,MAAO,EAAA,CAAA;AAAA,KACjE;AACA,IAAA,IAAI,QAAQ,OAAY,KAAA,KAAA,CAAA,IAAa,OAAQ,CAAA,OAAA,CAAQ,WAAW,CAAG,EAAA;AACjE,MAAW,KAAA,MAAA,CAAA,IAAK,QAAQ,OAAS,EAAA;AAC/B,QAAOA,QAAA,CAAA,MAAA,CAAO,GAAI,MAAO,CAAA,MAAA,CAAO,EAAE,CAAE,CAAA,IAAA,EAAM,CAAA,CAAE,MAAO,EAAA,CAAA;AAAA,OACrD;AAAA,KACF;AACA,IAAO,OAAA,MAAA,CAAA;AAAA,GACT;AAAA,EAEA,MAAA,CAAO,OAAgC,MAA6B,EAAA;AAClE,IAAM,MAAA,MAAA,GAAS,iBAAiB,GAAI,CAAA,MAAA,GAAS,QAAQ,GAAI,CAAA,MAAA,CAAO,OAAO,KAAK,CAAA,CAAA;AAC5E,IAAA,IAAI,MAAM,MAAW,KAAA,KAAA,CAAA,GAAY,MAAO,CAAA,GAAA,GAAM,OAAO,GAAM,GAAA,MAAA,CAAA;AAC3D,IAAA,MAAM,UAAU,oBAAqB,EAAA,CAAA;AACrC,IAAO,OAAA,MAAA,CAAO,MAAM,GAAK,EAAA;AACvB,MAAM,MAAA,GAAA,GAAM,OAAO,MAAO,EAAA,CAAA;AAC1B,MAAA,QAAQ,QAAQ,CAAG;AAAA,QACjB,KAAK,CAAA;AACH,UAAA,IAAI,QAAQ,EAAI,EAAA;AACd,YAAA,MAAA;AAAA,WACF;AAEA,UAAA,OAAA,CAAQ,SAASA,QAAO,CAAA,MAAA,CAAO,MAAQ,EAAA,MAAA,CAAO,QAAQ,CAAA,CAAA;AACtD,UAAA,SAAA;AAAA,QACF,KAAK,CAAA;AACH,UAAA,IAAI,QAAQ,EAAI,EAAA;AACd,YAAA,MAAA;AAAA,WACF;AAEA,UAAQ,OAAA,CAAA,OAAA,CAAS,KAAKA,QAAO,CAAA,MAAA,CAAO,QAAQ,MAAO,CAAA,MAAA,EAAQ,CAAC,CAAA,CAAA;AAC5D,UAAA,SAAA;AAAA,OACJ;AACA,MAAA,IAAA,CAAK,GAAM,GAAA,CAAA,MAAO,CAAK,IAAA,GAAA,KAAQ,CAAG,EAAA;AAChC,QAAA,MAAA;AAAA,OACF;AACA,MAAO,MAAA,CAAA,QAAA,CAAS,MAAM,CAAC,CAAA,CAAA;AAAA,KACzB;AACA,IAAO,OAAA,OAAA,CAAA;AAAA,GACT;AAAA,EAEA,SAAS,MAAyB,EAAA;AAChC,IAAO,OAAA;AAAA,MACL,MAAA,EAAQJ,QAAM,MAAO,CAAA,MAAM,IAAII,QAAO,CAAA,QAAA,CAAS,MAAO,CAAA,MAAM,CAAI,GAAA,KAAA,CAAA;AAAA,MAChE,SAAS,UAAW,CAAA,KAAA,CAAM,OAAQ,CAAA,MAAA,EAAQ,OAAO,CAAI,GAAA,MAAA,CAAO,OAAQ,CAAA,GAAA,CAAI,CAAC,CAAW,KAAAA,QAAA,CAAO,SAAS,CAAC,CAAC,IAAI,EAAC;AAAA,KAC7G,CAAA;AAAA,GACF;AAAA,EAEA,OAAO,OAA8B,EAAA;AACnC,IAAA,MAAM,MAAW,EAAC,CAAA;AAClB,IAAI,IAAA,OAAA,CAAQ,WAAW,KAAW,CAAA,EAAA;AAChC,MAAA,GAAA,CAAI,MAAS,GAAAA,QAAA,CAAO,MAAO,CAAA,OAAA,CAAQ,MAAM,CAAA,CAAA;AAAA,KAC3C;AACA,IAAI,IAAA,OAAA,CAAQ,SAAS,MAAQ,EAAA;AAC3B,MAAI,GAAA,CAAA,OAAA,GAAU,QAAQ,OAAQ,CAAA,GAAA,CAAI,CAAC,CAAM,KAAAA,QAAA,CAAO,MAAO,CAAA,CAAC,CAAC,CAAA,CAAA;AAAA,KAC3D;AACA,IAAO,OAAA,GAAA,CAAA;AAAA,GACT;AAAA,EAEA,OAAO,IAA4C,EAAA;AACjD,IAAA,OAAOI,YAAW,CAAA,WAAA,CAAY,IAAQ,IAAA,EAAE,CAAA,CAAA;AAAA,GAC1C;AAAA,EACA,YAAY,MAA6C,EAAA;AACvD,IAAA,MAAM,UAAU,oBAAqB,EAAA,CAAA;AACrC,IAAQ,OAAA,CAAA,MAAA,GAAU,MAAO,CAAA,MAAA,KAAW,KAAa,CAAA,IAAA,MAAA,CAAO,MAAW,KAAA,IAAA,GAC/DJ,QAAO,CAAA,WAAA,CAAY,MAAO,CAAA,MAAM,CAChC,GAAA,KAAA,CAAA,CAAA;AACJ,IAAQ,OAAA,CAAA,OAAA,GAAU,MAAO,CAAA,OAAA,EAAS,GAAI,CAAA,CAAC,CAAM,KAAAA,QAAA,CAAO,WAAY,CAAA,CAAC,CAAC,CAAA,IAAK,EAAC,CAAA;AACxE,IAAO,OAAA,OAAA,CAAA;AAAA,GACT;AACF,CAAA,CAAA;AAEA,SAAS,kBAA+B,GAAA;AACtC,EAAO,OAAA,EAAE,QAAQ,KAAU,CAAA,EAAA,CAAA;AAC7B,CAAA;AAEO,MAAMK,UAAW,GAAA;AAAA,EACtB,OAAO,OAAmB,EAAA,MAAA,GAAqB,GAAI,CAAA,MAAA,CAAO,QAAsB,EAAA;AAC9E,IAAI,IAAA,OAAA,CAAQ,WAAW,KAAW,CAAA,EAAA;AAChC,MAAOL,QAAA,CAAA,MAAA,CAAO,OAAQ,CAAA,MAAA,EAAQ,MAAO,CAAA,MAAA,CAAO,EAAE,CAAE,CAAA,IAAA,EAAM,CAAA,CAAE,MAAO,EAAA,CAAA;AAAA,KACjE;AACA,IAAO,OAAA,MAAA,CAAA;AAAA,GACT;AAAA,EAEA,MAAA,CAAO,OAAgC,MAA2B,EAAA;AAChE,IAAM,MAAA,MAAA,GAAS,iBAAiB,GAAI,CAAA,MAAA,GAAS,QAAQ,GAAI,CAAA,MAAA,CAAO,OAAO,KAAK,CAAA,CAAA;AAC5E,IAAA,IAAI,MAAM,MAAW,KAAA,KAAA,CAAA,GAAY,MAAO,CAAA,GAAA,GAAM,OAAO,GAAM,GAAA,MAAA,CAAA;AAC3D,IAAA,MAAM,UAAU,kBAAmB,EAAA,CAAA;AACnC,IAAO,OAAA,MAAA,CAAO,MAAM,GAAK,EAAA;AACvB,MAAM,MAAA,GAAA,GAAM,OAAO,MAAO,EAAA,CAAA;AAC1B,MAAA,QAAQ,QAAQ,CAAG;AAAA,QACjB,KAAK,CAAA;AACH,UAAA,IAAI,QAAQ,EAAI,EAAA;AACd,YAAA,MAAA;AAAA,WACF;AAEA,UAAA,OAAA,CAAQ,SAASA,QAAO,CAAA,MAAA,CAAO,MAAQ,EAAA,MAAA,CAAO,QAAQ,CAAA,CAAA;AACtD,UAAA,SAAA;AAAA,OACJ;AACA,MAAA,IAAA,CAAK,GAAM,GAAA,CAAA,MAAO,CAAK,IAAA,GAAA,KAAQ,CAAG,EAAA;AAChC,QAAA,MAAA;AAAA,OACF;AACA,MAAO,MAAA,CAAA,QAAA,CAAS,MAAM,CAAC,CAAA,CAAA;AAAA,KACzB;AACA,IAAO,OAAA,OAAA,CAAA;AAAA,GACT;AAAA,EAEA,SAAS,MAAuB,EAAA;AAC9B,IAAO,OAAA,EAAE,MAAQ,EAAAJ,OAAA,CAAM,MAAO,CAAA,MAAM,CAAI,GAAAI,QAAA,CAAO,QAAS,CAAA,MAAA,CAAO,MAAM,CAAA,GAAI,KAAU,CAAA,EAAA,CAAA;AAAA,GACrF;AAAA,EAEA,OAAO,OAA4B,EAAA;AACjC,IAAA,MAAM,MAAW,EAAC,CAAA;AAClB,IAAI,IAAA,OAAA,CAAQ,WAAW,KAAW,CAAA,EAAA;AAChC,MAAA,GAAA,CAAI,MAAS,GAAAA,QAAA,CAAO,MAAO,CAAA,OAAA,CAAQ,MAAM,CAAA,CAAA;AAAA,KAC3C;AACA,IAAO,OAAA,GAAA,CAAA;AAAA,GACT;AAAA,EAEA,OAAO,IAAwC,EAAA;AAC7C,IAAA,OAAOK,UAAS,CAAA,WAAA,CAAY,IAAQ,IAAA,EAAE,CAAA,CAAA;AAAA,GACxC;AAAA,EACA,YAAY,MAAyC,EAAA;AACnD,IAAA,MAAM,UAAU,kBAAmB,EAAA,CAAA;AACnC,IAAQ,OAAA,CAAA,MAAA,GAAU,MAAO,CAAA,MAAA,KAAW,KAAa,CAAA,IAAA,MAAA,CAAO,MAAW,KAAA,IAAA,GAC/DL,QAAO,CAAA,WAAA,CAAY,MAAO,CAAA,MAAM,CAChC,GAAA,KAAA,CAAA,CAAA;AACJ,IAAO,OAAA,OAAA,CAAA;AAAA,GACT;AACF,CAAA,CAAA;AAEA,SAAS,cAAuB,GAAA;AAC9B,EAAO,OAAA,EAAE,MAAQ,EAAA,KAAA,CAAA,EAAW,SAAW,EAAA,KAAA,CAAA,EAAW,QAAU,EAAA,CAAA,EAAG,IAAM,EAAA,EAAI,EAAA,UAAA,EAAY,CAAE,EAAA,CAAA;AACzF,CAAA;AAEO,MAAMG,MAAO,GAAA;AAAA,EAClB,OAAO,OAAe,EAAA,MAAA,GAAqB,GAAI,CAAA,MAAA,CAAO,QAAsB,EAAA;AAC1E,IAAI,IAAA,OAAA,CAAQ,WAAW,KAAW,CAAA,EAAA;AAChC,MAAOH,QAAA,CAAA,MAAA,CAAO,OAAQ,CAAA,MAAA,EAAQ,MAAO,CAAA,MAAA,CAAO,EAAE,CAAE,CAAA,IAAA,EAAM,CAAA,CAAE,MAAO,EAAA,CAAA;AAAA,KACjE;AACA,IAAI,IAAA,OAAA,CAAQ,cAAc,KAAW,CAAA,EAAA;AACnC,MAAOA,QAAA,CAAA,MAAA,CAAO,OAAQ,CAAA,SAAA,EAAW,MAAO,CAAA,MAAA,CAAO,EAAE,CAAE,CAAA,IAAA,EAAM,CAAA,CAAE,MAAO,EAAA,CAAA;AAAA,KACpE;AACA,IAAA,IAAI,OAAQ,CAAA,QAAA,KAAa,KAAa,CAAA,IAAA,OAAA,CAAQ,aAAa,CAAG,EAAA;AAC5D,MAAA,MAAA,CAAO,MAAO,CAAA,EAAE,CAAE,CAAA,KAAA,CAAM,QAAQ,QAAQ,CAAA,CAAA;AAAA,KAC1C;AACA,IAAA,IAAI,QAAQ,IAAS,KAAA,KAAA,CAAA,IAAa,OAAQ,CAAA,IAAA,CAAK,WAAW,CAAG,EAAA;AAC3D,MAAW,KAAA,MAAA,CAAA,IAAK,QAAQ,IAAM,EAAA;AAC5B,QAAA,MAAA,CAAO,MAAO,CAAA,EAAE,CAAE,CAAA,KAAA,CAAM,CAAE,CAAA,CAAA;AAAA,OAC5B;AAAA,KACF;AACA,IAAA,IAAI,OAAQ,CAAA,UAAA,KAAe,KAAa,CAAA,IAAA,OAAA,CAAQ,eAAe,CAAG,EAAA;AAChE,MAAA,MAAA,CAAO,MAAO,CAAA,EAAE,CAAE,CAAA,KAAA,CAAM,QAAQ,UAAU,CAAA,CAAA;AAAA,KAC5C;AACA,IAAO,OAAA,MAAA,CAAA;AAAA,GACT;AAAA,EAEA,MAAA,CAAO,OAAgC,MAAuB,EAAA;AAC5D,IAAM,MAAA,MAAA,GAAS,iBAAiB,GAAI,CAAA,MAAA,GAAS,QAAQ,GAAI,CAAA,MAAA,CAAO,OAAO,KAAK,CAAA,CAAA;AAC5E,IAAA,IAAI,MAAM,MAAW,KAAA,KAAA,CAAA,GAAY,MAAO,CAAA,GAAA,GAAM,OAAO,GAAM,GAAA,MAAA,CAAA;AAC3D,IAAA,MAAM,UAAU,cAAe,EAAA,CAAA;AAC/B,IAAO,OAAA,MAAA,CAAO,MAAM,GAAK,EAAA;AACvB,MAAM,MAAA,GAAA,GAAM,OAAO,MAAO,EAAA,CAAA;AAC1B,MAAA,QAAQ,QAAQ,CAAG;AAAA,QACjB,KAAK,CAAA;AACH,UAAA,IAAI,QAAQ,EAAI,EAAA;AACd,YAAA,MAAA;AAAA,WACF;AAEA,UAAA,OAAA,CAAQ,SAASA,QAAO,CAAA,MAAA,CAAO,MAAQ,EAAA,MAAA,CAAO,QAAQ,CAAA,CAAA;AACtD,UAAA,SAAA;AAAA,QACF,KAAK,CAAA;AACH,UAAA,IAAI,QAAQ,EAAI,EAAA;AACd,YAAA,MAAA;AAAA,WACF;AAEA,UAAA,OAAA,CAAQ,YAAYA,QAAO,CAAA,MAAA,CAAO,MAAQ,EAAA,MAAA,CAAO,QAAQ,CAAA,CAAA;AACzD,UAAA,SAAA;AAAA,QACF,KAAK,CAAA;AACH,UAAA,IAAI,QAAQ,EAAI,EAAA;AACd,YAAA,MAAA;AAAA,WACF;AAEA,UAAQ,OAAA,CAAA,QAAA,GAAW,OAAO,KAAM,EAAA,CAAA;AAChC,UAAA,SAAA;AAAA,QACF,KAAK,CAAA;AACH,UAAA,IAAI,QAAQ,EAAI,EAAA;AACd,YAAA,MAAA;AAAA,WACF;AAEA,UAAA,OAAA,CAAQ,IAAM,CAAA,IAAA,CAAK,MAAO,CAAA,KAAA,EAAO,CAAA,CAAA;AACjC,UAAA,SAAA;AAAA,QACF,KAAK,CAAA;AACH,UAAA,IAAI,QAAQ,EAAI,EAAA;AACd,YAAA,MAAA;AAAA,WACF;AAEA,UAAQ,OAAA,CAAA,UAAA,GAAa,OAAO,KAAM,EAAA,CAAA;AAClC,UAAA,SAAA;AAAA,OACJ;AACA,MAAA,IAAA,CAAK,GAAM,GAAA,CAAA,MAAO,CAAK,IAAA,GAAA,KAAQ,CAAG,EAAA;AAChC,QAAA,MAAA;AAAA,OACF;AACA,MAAO,MAAA,CAAA,QAAA,CAAS,MAAM,CAAC,CAAA,CAAA;AAAA,KACzB;AACA,IAAO,OAAA,OAAA,CAAA;AAAA,GACT;AAAA,EAEA,SAAS,MAAmB,EAAA;AAC1B,IAAO,OAAA;AAAA,MACL,MAAA,EAAQJ,QAAM,MAAO,CAAA,MAAM,IAAII,QAAO,CAAA,QAAA,CAAS,MAAO,CAAA,MAAM,CAAI,GAAA,KAAA,CAAA;AAAA,MAChE,SAAA,EAAWJ,QAAM,MAAO,CAAA,SAAS,IAAII,QAAO,CAAA,QAAA,CAAS,MAAO,CAAA,SAAS,CAAI,GAAA,KAAA,CAAA;AAAA,MACzE,QAAA,EAAUJ,QAAM,MAAO,CAAA,QAAQ,IAAI,oBAAqB,CAAA,MAAA,CAAO,QAAQ,CAAI,GAAA,CAAA;AAAA,MAC3E,MAAM,UAAW,CAAA,KAAA,CAAM,OAAQ,CAAA,MAAA,EAAQ,IAAI,CAAI,GAAA,MAAA,CAAO,IAAK,CAAA,GAAA,CAAI,CAAC,CAAW,KAAA,eAAA,CAAgB,CAAC,CAAC,IAAI,EAAC;AAAA,MAClG,UAAA,EAAYA,QAAM,MAAO,CAAA,UAAU,IAAI,sBAAuB,CAAA,MAAA,CAAO,UAAU,CAAI,GAAA,CAAA;AAAA,KACrF,CAAA;AAAA,GACF;AAAA,EAEA,OAAO,OAAwB,EAAA;AAC7B,IAAA,MAAM,MAAW,EAAC,CAAA;AAClB,IAAI,IAAA,OAAA,CAAQ,WAAW,KAAW,CAAA,EAAA;AAChC,MAAA,GAAA,CAAI,MAAS,GAAAI,QAAA,CAAO,MAAO,CAAA,OAAA,CAAQ,MAAM,CAAA,CAAA;AAAA,KAC3C;AACA,IAAI,IAAA,OAAA,CAAQ,cAAc,KAAW,CAAA,EAAA;AACnC,MAAA,GAAA,CAAI,SAAY,GAAAA,QAAA,CAAO,MAAO,CAAA,OAAA,CAAQ,SAAS,CAAA,CAAA;AAAA,KACjD;AACA,IAAA,IAAI,OAAQ,CAAA,QAAA,KAAa,KAAa,CAAA,IAAA,OAAA,CAAQ,aAAa,CAAG,EAAA;AAC5D,MAAI,GAAA,CAAA,QAAA,GAAW,kBAAmB,CAAA,OAAA,CAAQ,QAAQ,CAAA,CAAA;AAAA,KACpD;AACA,IAAI,IAAA,OAAA,CAAQ,MAAM,MAAQ,EAAA;AACxB,MAAI,GAAA,CAAA,IAAA,GAAO,QAAQ,IAAK,CAAA,GAAA,CAAI,CAAC,CAAM,KAAA,eAAA,CAAgB,CAAC,CAAC,CAAA,CAAA;AAAA,KACvD;AACA,IAAA,IAAI,OAAQ,CAAA,UAAA,KAAe,KAAa,CAAA,IAAA,OAAA,CAAQ,eAAe,CAAG,EAAA;AAChE,MAAI,GAAA,CAAA,UAAA,GAAa,oBAAqB,CAAA,OAAA,CAAQ,UAAU,CAAA,CAAA;AAAA,KAC1D;AACA,IAAO,OAAA,GAAA,CAAA;AAAA,GACT;AAAA,EAEA,OAAO,IAAgC,EAAA;AACrC,IAAA,OAAOG,MAAK,CAAA,WAAA,CAAY,IAAQ,IAAA,EAAE,CAAA,CAAA;AAAA,GACpC;AAAA,EACA,YAAY,MAAiC,EAAA;AAC3C,IAAA,MAAM,UAAU,cAAe,EAAA,CAAA;AAC/B,IAAQ,OAAA,CAAA,MAAA,GAAU,MAAO,CAAA,MAAA,KAAW,KAAa,CAAA,IAAA,MAAA,CAAO,MAAW,KAAA,IAAA,GAC/DH,QAAO,CAAA,WAAA,CAAY,MAAO,CAAA,MAAM,CAChC,GAAA,KAAA,CAAA,CAAA;AACJ,IAAQ,OAAA,CAAA,SAAA,GAAa,MAAO,CAAA,SAAA,KAAc,KAAa,CAAA,IAAA,MAAA,CAAO,SAAc,KAAA,IAAA,GACxEA,QAAO,CAAA,WAAA,CAAY,MAAO,CAAA,SAAS,CACnC,GAAA,KAAA,CAAA,CAAA;AACJ,IAAQ,OAAA,CAAA,QAAA,GAAW,OAAO,QAAY,IAAA,CAAA,CAAA;AACtC,IAAQ,OAAA,CAAA,IAAA,GAAO,OAAO,IAAM,EAAA,GAAA,CAAI,CAAC,CAAM,KAAA,CAAC,KAAK,EAAC,CAAA;AAC9C,IAAQ,OAAA,CAAA,UAAA,GAAa,OAAO,UAAc,IAAA,CAAA,CAAA;AAC1C,IAAO,OAAA,OAAA,CAAA;AAAA,GACT;AACF,CAAA,CAAA;AAEA,SAAS,mBAAiC,GAAA;AACxC,EAAA,OAAO,EAAC,CAAA;AACV,CAAA;AAEO,MAAMM,WAAY,GAAA;AAAA,EACvB,OAAO,CAAc,EAAA,MAAA,GAAqB,GAAI,CAAA,MAAA,CAAO,QAAsB,EAAA;AACzE,IAAO,OAAA,MAAA,CAAA;AAAA,GACT;AAAA,EAEA,MAAA,CAAO,OAAgC,MAA4B,EAAA;AACjE,IAAM,MAAA,MAAA,GAAS,iBAAiB,GAAI,CAAA,MAAA,GAAS,QAAQ,GAAI,CAAA,MAAA,CAAO,OAAO,KAAK,CAAA,CAAA;AAC5E,IAAA,IAAI,MAAM,MAAW,KAAA,KAAA,CAAA,GAAY,MAAO,CAAA,GAAA,GAAM,OAAO,GAAM,GAAA,MAAA,CAAA;AAC3D,IAAA,MAAM,UAAU,mBAAoB,EAAA,CAAA;AACpC,IAAO,OAAA,MAAA,CAAO,MAAM,GAAK,EAAA;AACvB,MAAM,MAAA,GAAA,GAAM,OAAO,MAAO,EAAA,CAAA;AAG1B,MAAA,IAAA,CAAK,GAAM,GAAA,CAAA,MAAO,CAAK,IAAA,GAAA,KAAQ,CAAG,EAAA;AAChC,QAAA,MAAA;AAAA,OACF;AACA,MAAO,MAAA,CAAA,QAAA,CAAS,MAAM,CAAC,CAAA,CAAA;AAAA,KACzB;AACA,IAAO,OAAA,OAAA,CAAA;AAAA,GACT;AAAA,EAEA,SAAS,CAAmB,EAAA;AAC1B,IAAA,OAAO,EAAC,CAAA;AAAA,GACV;AAAA,EAEA,OAAO,CAAuB,EAAA;AAC5B,IAAA,MAAM,MAAW,EAAC,CAAA;AAClB,IAAO,OAAA,GAAA,CAAA;AAAA,GACT;AAAA,EAEA,OAAO,IAA0C,EAAA;AAC/C,IAAA,OAAOA,WAAU,CAAA,WAAA,CAAY,IAAQ,IAAA,EAAE,CAAA,CAAA;AAAA,GACzC;AAAA,EACA,YAAY,CAAsC,EAAA;AAChD,IAAA,MAAM,UAAU,mBAAoB,EAAA,CAAA;AACpC,IAAO,OAAA,OAAA,CAAA;AAAA,GACT;AACF,CAAA,CAAA;AAEA,SAAS,uBAAyC,GAAA;AAChD,EAAO,OAAA,EAAE,QAAQ,KAAU,CAAA,EAAA,CAAA;AAC7B,CAAA;AAEO,MAAMC,eAAgB,GAAA;AAAA,EAC3B,OAAO,OAAwB,EAAA,MAAA,GAAqB,GAAI,CAAA,MAAA,CAAO,QAAsB,EAAA;AACnF,IAAQ,QAAA,OAAA,CAAQ,QAAQ,KAAO;AAAA,MAC7B,KAAK,QAAA;AACH,QAAA,MAAA,CAAO,OAAO,EAAE,CAAA,CAAE,MAAO,CAAA,OAAA,CAAQ,OAAO,MAAM,CAAA,CAAA;AAC9C,QAAA,MAAA;AAAA,MACF,KAAK,QAAA;AACH,QAAA,MAAA,CAAO,OAAO,EAAE,CAAA,CAAE,MAAO,CAAA,OAAA,CAAQ,OAAO,MAAM,CAAA,CAAA;AAC9C,QAAA,MAAA;AAAA,KACJ;AACA,IAAO,OAAA,MAAA,CAAA;AAAA,GACT;AAAA,EAEA,MAAA,CAAO,OAAgC,MAAgC,EAAA;AACrE,IAAM,MAAA,MAAA,GAAS,iBAAiB,GAAI,CAAA,MAAA,GAAS,QAAQ,GAAI,CAAA,MAAA,CAAO,OAAO,KAAK,CAAA,CAAA;AAC5E,IAAA,IAAI,MAAM,MAAW,KAAA,KAAA,CAAA,GAAY,MAAO,CAAA,GAAA,GAAM,OAAO,GAAM,GAAA,MAAA,CAAA;AAC3D,IAAA,MAAM,UAAU,uBAAwB,EAAA,CAAA;AACxC,IAAO,OAAA,MAAA,CAAO,MAAM,GAAK,EAAA;AACvB,MAAM,MAAA,GAAA,GAAM,OAAO,MAAO,EAAA,CAAA;AAC1B,MAAA,QAAQ,QAAQ,CAAG;AAAA,QACjB,KAAK,CAAA;AACH,UAAA,IAAI,QAAQ,EAAI,EAAA;AACd,YAAA,MAAA;AAAA,WACF;AAEA,UAAA,OAAA,CAAQ,SAAS,EAAE,KAAA,EAAO,UAAU,MAAQ,EAAA,MAAA,CAAO,QAAS,EAAA,CAAA;AAC5D,UAAA,SAAA;AAAA,QACF,KAAK,CAAA;AACH,UAAA,IAAI,QAAQ,EAAI,EAAA;AACd,YAAA,MAAA;AAAA,WACF;AAEA,UAAA,OAAA,CAAQ,SAAS,EAAE,KAAA,EAAO,UAAU,MAAQ,EAAA,MAAA,CAAO,QAAS,EAAA,CAAA;AAC5D,UAAA,SAAA;AAAA,OACJ;AACA,MAAA,IAAA,CAAK,GAAM,GAAA,CAAA,MAAO,CAAK,IAAA,GAAA,KAAQ,CAAG,EAAA;AAChC,QAAA,MAAA;AAAA,OACF;AACA,MAAO,MAAA,CAAA,QAAA,CAAS,MAAM,CAAC,CAAA,CAAA;AAAA,KACzB;AACA,IAAO,OAAA,OAAA,CAAA;AAAA,GACT;AAAA,EAEA,SAAS,MAA4B,EAAA;AACnC,IAAO,OAAA;AAAA,MACL,MAAQ,EAAAX,OAAA,CAAM,MAAO,CAAA,MAAM,CACvB,GAAA,EAAE,KAAO,EAAA,QAAA,EAAU,MAAQ,EAAA,UAAA,CAAW,MAAO,CAAA,MAAA,CAAO,MAAM,CAAA,EAC1D,GAAAA,OAAA,CAAM,MAAO,CAAA,MAAM,CACnB,GAAA,EAAE,KAAO,EAAA,QAAA,EAAU,MAAQ,EAAA,UAAA,CAAW,MAAO,CAAA,MAAA,CAAO,MAAM,CAAA,EAC1D,GAAA,KAAA,CAAA;AAAA,KACN,CAAA;AAAA,GACF;AAAA,EAEA,OAAO,OAAiC,EAAA;AACtC,IAAA,MAAM,MAAW,EAAC,CAAA;AAClB,IAAI,IAAA,OAAA,CAAQ,MAAQ,EAAA,KAAA,KAAU,QAAU,EAAA;AACtC,MAAI,GAAA,CAAA,MAAA,GAAS,QAAQ,MAAO,CAAA,MAAA,CAAA;AAAA,KAC9B;AACA,IAAI,IAAA,OAAA,CAAQ,MAAQ,EAAA,KAAA,KAAU,QAAU,EAAA;AACtC,MAAI,GAAA,CAAA,MAAA,GAAS,QAAQ,MAAO,CAAA,MAAA,CAAA;AAAA,KAC9B;AACA,IAAO,OAAA,GAAA,CAAA;AAAA,GACT;AAAA,EAEA,OAAO,IAAkD,EAAA;AACvD,IAAA,OAAOW,eAAc,CAAA,WAAA,CAAY,IAAQ,IAAA,EAAE,CAAA,CAAA;AAAA,GAC7C;AAAA,EACA,YAAY,MAAmD,EAAA;AAC7D,IAAA,MAAM,UAAU,uBAAwB,EAAA,CAAA;AACxC,IAAI,IAAA,MAAA,CAAO,MAAQ,EAAA,KAAA,KAAU,QAAY,IAAA,MAAA,CAAO,MAAQ,EAAA,MAAA,KAAW,KAAa,CAAA,IAAA,MAAA,CAAO,MAAQ,EAAA,MAAA,KAAW,IAAM,EAAA;AAC9G,MAAA,OAAA,CAAQ,SAAS,EAAE,KAAA,EAAO,UAAU,MAAQ,EAAA,MAAA,CAAO,OAAO,MAAO,EAAA,CAAA;AAAA,KACnE;AACA,IAAI,IAAA,MAAA,CAAO,MAAQ,EAAA,KAAA,KAAU,QAAY,IAAA,MAAA,CAAO,MAAQ,EAAA,MAAA,KAAW,KAAa,CAAA,IAAA,MAAA,CAAO,MAAQ,EAAA,MAAA,KAAW,IAAM,EAAA;AAC9G,MAAA,OAAA,CAAQ,SAAS,EAAE,KAAA,EAAO,UAAU,MAAQ,EAAA,MAAA,CAAO,OAAO,MAAO,EAAA,CAAA;AAAA,KACnE;AACA,IAAO,OAAA,OAAA,CAAA;AAAA,GACT;AACF,CAAA,CAAA;AAGO,MAAM,mBAAsB,GAAA;AAAA,EACjC,IAAM,EAAA,WAAA;AAAA,EACN,QAAU,EAAA,yBAAA;AAAA,EACV,OAAS,EAAA;AAAA;AAAA,IAEP,UAAY,EAAA;AAAA,MACV,IAAM,EAAA,YAAA;AAAA,MACN,WAAa,EAAAN,mBAAA;AAAA,MACb,aAAe,EAAA,KAAA;AAAA,MACf,YAAc,EAAAC,oBAAA;AAAA,MACd,cAAgB,EAAA,IAAA;AAAA,MAChB,SAAS,EAAC;AAAA,KACZ;AAAA;AAAA,IAEA,MAAQ,EAAA;AAAA,MACN,IAAM,EAAA,QAAA;AAAA,MACN,WAAa,EAAA,aAAA;AAAA,MACb,aAAe,EAAA,KAAA;AAAA,MACf,YAAc,EAAA,cAAA;AAAA,MACd,cAAgB,EAAA,KAAA;AAAA,MAChB,SAAS,EAAC;AAAA,KACZ;AAAA,GACF;AACF,EAAA;AAsBA,SAAS,gBAAgB,GAAyB,EAAA;AAChD,EAAA,IAAK,WAAmB,MAAQ,EAAA;AAC9B,IAAA,OAAO,WAAW,IAAK,CAAA,UAAA,CAAW,OAAO,IAAK,CAAA,GAAA,EAAK,QAAQ,CAAC,CAAA,CAAA;AAAA,GACvD,MAAA;AACL,IAAM,MAAA,GAAA,GAAM,UAAW,CAAA,IAAA,CAAK,GAAG,CAAA,CAAA;AAC/B,IAAA,MAAM,GAAM,GAAA,IAAI,UAAW,CAAA,GAAA,CAAI,MAAM,CAAA,CAAA;AACrC,IAAA,KAAA,IAAS,IAAI,CAAG,EAAA,CAAA,GAAI,GAAI,CAAA,MAAA,EAAQ,EAAE,CAAG,EAAA;AACnC,MAAA,GAAA,CAAI,CAAC,CAAA,GAAI,GAAI,CAAA,UAAA,CAAW,CAAC,CAAA,CAAA;AAAA,KAC3B;AACA,IAAO,OAAA,GAAA,CAAA;AAAA,GACT;AACF,CAAA;AAEA,SAAS,gBAAgB,GAAyB,EAAA;AAChD,EAAA,IAAK,WAAmB,MAAQ,EAAA;AAC9B,IAAA,OAAO,WAAW,MAAO,CAAA,IAAA,CAAK,GAAG,CAAA,CAAE,SAAS,QAAQ,CAAA,CAAA;AAAA,GAC/C,MAAA;AACL,IAAA,MAAM,MAAgB,EAAC,CAAA;AACvB,IAAI,GAAA,CAAA,OAAA,CAAQ,CAAC,IAAS,KAAA;AACpB,MAAA,GAAA,CAAI,IAAK,CAAA,UAAA,CAAW,MAAO,CAAA,YAAA,CAAa,IAAI,CAAC,CAAA,CAAA;AAAA,KAC9C,CAAA,CAAA;AACD,IAAA,OAAO,UAAW,CAAA,IAAA,CAAK,GAAI,CAAA,IAAA,CAAK,EAAE,CAAC,CAAA,CAAA;AAAA,GACrC;AACF,CAAA;AAYA,SAAS,aAAa,IAAY,EAAA;AAChC,EAAO,OAAA,MAAA,CAAO,IAAK,CAAA,QAAA,EAAU,CAAA,CAAA;AAC/B,CAAA;AAEA,IAAI,GAAA,CAAI,IAAK,CAAA,IAAA,KAAS,IAAM,EAAA;AAC1B,EAAA,GAAA,CAAI,KAAK,IAAO,GAAA,IAAA,CAAA;AAChB,EAAA,GAAA,CAAI,SAAU,EAAA,CAAA;AAChB,CAAA;AAEA,SAASN,QAAM,KAAqB,EAAA;AAClC,EAAO,OAAA,KAAA,KAAU,QAAQ,KAAU,KAAA,KAAA,CAAA,CAAA;AACrC;;;;;;;;;;;;;;;;;;;;;;;;AC7sCO,MAAM,eAAkB,GAAA,gBAAA,CAAA;AAU/B,SAAS,oBAAmC,GAAA;AAC1C,EAAO,OAAA,EAAE,QAAQ,KAAU,CAAA,EAAA,CAAA;AAC7B,CAAA;AAEO,MAAM,UAAa,GAAA;AAAA,EACxB,OAAO,OAAqB,EAAA,MAAA,GAAqB,GAAI,CAAA,MAAA,CAAO,QAAsB,EAAA;AAChF,IAAI,IAAA,OAAA,CAAQ,WAAW,KAAW,CAAA,EAAA;AAChC,MAAA,MAAA,CAAO,MAAO,CAAA,EAAE,CAAE,CAAA,MAAA,CAAO,QAAQ,MAAM,CAAA,CAAA;AAAA,KACzC;AACA,IAAO,OAAA,MAAA,CAAA;AAAA,GACT;AAAA,EAEA,MAAA,CAAO,OAAgC,MAA6B,EAAA;AAClE,IAAM,MAAA,MAAA,GAAS,iBAAiB,GAAI,CAAA,MAAA,GAAS,QAAQ,GAAI,CAAA,MAAA,CAAO,OAAO,KAAK,CAAA,CAAA;AAC5E,IAAA,IAAI,MAAM,MAAW,KAAA,KAAA,CAAA,GAAY,MAAO,CAAA,GAAA,GAAM,OAAO,GAAM,GAAA,MAAA,CAAA;AAC3D,IAAA,MAAM,UAAU,oBAAqB,EAAA,CAAA;AACrC,IAAO,OAAA,MAAA,CAAO,MAAM,GAAK,EAAA;AACvB,MAAM,MAAA,GAAA,GAAM,OAAO,MAAO,EAAA,CAAA;AAC1B,MAAA,QAAQ,QAAQ,CAAG;AAAA,QACjB,KAAK,CAAA;AACH,UAAA,IAAI,QAAQ,EAAI,EAAA;AACd,YAAA,MAAA;AAAA,WACF;AAEA,UAAQ,OAAA,CAAA,MAAA,GAAS,OAAO,MAAO,EAAA,CAAA;AAC/B,UAAA,SAAA;AAAA,OACJ;AACA,MAAA,IAAA,CAAK,GAAM,GAAA,CAAA,MAAO,CAAK,IAAA,GAAA,KAAQ,CAAG,EAAA;AAChC,QAAA,MAAA;AAAA,OACF;AACA,MAAO,MAAA,CAAA,QAAA,CAAS,MAAM,CAAC,CAAA,CAAA;AAAA,KACzB;AACA,IAAO,OAAA,OAAA,CAAA;AAAA,GACT;AAAA,EAEA,SAAS,MAAyB,EAAA;AAChC,IAAO,OAAA,EAAE,MAAQ,EAAA,KAAA,CAAM,MAAO,CAAA,MAAM,CAAI,GAAA,UAAA,CAAW,MAAO,CAAA,MAAA,CAAO,MAAM,CAAA,GAAI,KAAU,CAAA,EAAA,CAAA;AAAA,GACvF;AAAA,EAEA,OAAO,OAA8B,EAAA;AACnC,IAAA,MAAM,MAAW,EAAC,CAAA;AAClB,IAAI,IAAA,OAAA,CAAQ,WAAW,KAAW,CAAA,EAAA;AAChC,MAAA,GAAA,CAAI,SAAS,OAAQ,CAAA,MAAA,CAAA;AAAA,KACvB;AACA,IAAO,OAAA,GAAA,CAAA;AAAA,GACT;AAAA,EAEA,OAAO,IAA4C,EAAA;AACjD,IAAA,OAAO,UAAW,CAAA,WAAA,CAAY,IAAQ,IAAA,EAAE,CAAA,CAAA;AAAA,GAC1C;AAAA,EACA,YAAY,MAA6C,EAAA;AACvD,IAAA,MAAM,UAAU,oBAAqB,EAAA,CAAA;AACrC,IAAQ,OAAA,CAAA,MAAA,GAAS,OAAO,MAAU,IAAA,KAAA,CAAA,CAAA;AAClC,IAAO,OAAA,OAAA,CAAA;AAAA,GACT;AACF,EAAA;AAEA,SAAS,mBAAiC,GAAA;AACxC,EAAO,OAAA,EAAE,MAAM,KAAU,CAAA,EAAA,CAAA;AAC3B,CAAA;AAEO,MAAM,SAAY,GAAA;AAAA,EACvB,OAAO,OAAoB,EAAA,MAAA,GAAqB,GAAI,CAAA,MAAA,CAAO,QAAsB,EAAA;AAC/E,IAAI,IAAA,OAAA,CAAQ,SAAS,KAAW,CAAA,EAAA;AAC9B,MAAA,MAAA,CAAO,MAAO,CAAA,EAAE,CAAE,CAAA,MAAA,CAAO,QAAQ,IAAI,CAAA,CAAA;AAAA,KACvC;AACA,IAAO,OAAA,MAAA,CAAA;AAAA,GACT;AAAA,EAEA,MAAA,CAAO,OAAgC,MAA4B,EAAA;AACjE,IAAM,MAAA,MAAA,GAAS,iBAAiB,GAAI,CAAA,MAAA,GAAS,QAAQ,GAAI,CAAA,MAAA,CAAO,OAAO,KAAK,CAAA,CAAA;AAC5E,IAAA,IAAI,MAAM,MAAW,KAAA,KAAA,CAAA,GAAY,MAAO,CAAA,GAAA,GAAM,OAAO,GAAM,GAAA,MAAA,CAAA;AAC3D,IAAA,MAAM,UAAU,mBAAoB,EAAA,CAAA;AACpC,IAAO,OAAA,MAAA,CAAO,MAAM,GAAK,EAAA;AACvB,MAAM,MAAA,GAAA,GAAM,OAAO,MAAO,EAAA,CAAA;AAC1B,MAAA,QAAQ,QAAQ,CAAG;AAAA,QACjB,KAAK,CAAA;AACH,UAAA,IAAI,QAAQ,EAAI,EAAA;AACd,YAAA,MAAA;AAAA,WACF;AAEA,UAAQ,OAAA,CAAA,IAAA,GAAO,OAAO,MAAO,EAAA,CAAA;AAC7B,UAAA,SAAA;AAAA,OACJ;AACA,MAAA,IAAA,CAAK,GAAM,GAAA,CAAA,MAAO,CAAK,IAAA,GAAA,KAAQ,CAAG,EAAA;AAChC,QAAA,MAAA;AAAA,OACF;AACA,MAAO,MAAA,CAAA,QAAA,CAAS,MAAM,CAAC,CAAA,CAAA;AAAA,KACzB;AACA,IAAO,OAAA,OAAA,CAAA;AAAA,GACT;AAAA,EAEA,SAAS,MAAwB,EAAA;AAC/B,IAAO,OAAA,EAAE,IAAM,EAAA,KAAA,CAAM,MAAO,CAAA,IAAI,CAAI,GAAA,UAAA,CAAW,MAAO,CAAA,MAAA,CAAO,IAAI,CAAA,GAAI,KAAU,CAAA,EAAA,CAAA;AAAA,GACjF;AAAA,EAEA,OAAO,OAA6B,EAAA;AAClC,IAAA,MAAM,MAAW,EAAC,CAAA;AAClB,IAAI,IAAA,OAAA,CAAQ,SAAS,KAAW,CAAA,EAAA;AAC9B,MAAA,GAAA,CAAI,OAAO,OAAQ,CAAA,IAAA,CAAA;AAAA,KACrB;AACA,IAAO,OAAA,GAAA,CAAA;AAAA,GACT;AAAA,EAEA,OAAO,IAA0C,EAAA;AAC/C,IAAA,OAAO,SAAU,CAAA,WAAA,CAAY,IAAQ,IAAA,EAAE,CAAA,CAAA;AAAA,GACzC;AAAA,EACA,YAAY,MAA2C,EAAA;AACrD,IAAA,MAAM,UAAU,mBAAoB,EAAA,CAAA;AACpC,IAAQ,OAAA,CAAA,IAAA,GAAO,OAAO,IAAQ,IAAA,KAAA,CAAA,CAAA;AAC9B,IAAO,OAAA,OAAA,CAAA;AAAA,GACT;AACF,EAAA;AAYA,SAAS,MAAM,KAAqB,EAAA;AAClC,EAAO,OAAA,KAAA,KAAU,QAAQ,KAAU,KAAA,KAAA,CAAA,CAAA;AACrC;;;;;;;;;ACzIO,MAAM,mBAGT,GAAA;AAAA,EACF,OAAO,KAAO,EAAA;AACZ,IAAA,IAAI,CAAC,KAAA,IAAS,KAAO,EAAA,MAAA,KAAW,CAAG,EAAA;AACjC,MAAO,OAAA,KAAA,CAAA,CAAA;AAAA,KACT;AACA,IAAA,OAAO,MAAM,KAAK,CAAA,CAAA;AAAA,GACpB;AAAA,EACA,OAAO,KAAO,EAAA;AACZ,IAAA,IAAI,UAAU,KAAW,CAAA,EAAA;AACvB,MAAO,OAAA,IAAI,WAAW,CAAC,CAAA,CAAA;AAAA,KACzB;AACA,IAAA,OAAO,WAAW,KAAK,CAAA,CAAA;AAAA,GACzB;AACF,EAAA;AAUO,MAAM,MAA0C,GAAA;AAAA,EACrD,OAAO,KAAO,EAAA;AACZ,IAAM,MAAA,EAAE,QAAU,EAAA,SAAA,EAAc,GAAA,KAAA,CAAA;AAChC,IAAO,OAAA;AAAA,MACL,UAAU,QAAY,IAAA,EAAA;AAAA,MACtB,SAAA,EAAW,mBAAoB,CAAA,MAAA,CAAO,SAAS,CAAA;AAAA,KACjD,CAAA;AAAA,GACF;AAAA,EACA,OAAO,KAAO,EAAA;AACZ,IAAM,MAAA,EAAE,QAAU,EAAA,SAAA,EAAc,GAAA,KAAA,CAAA;AAChC,IAAO,OAAA;AAAA,MACL,QAAA;AAAA,MACA,SAAA,EAAW,mBAAoB,CAAA,MAAA,CAAO,SAAS,CAAA;AAAA,KACjD,CAAA;AAAA,GACF;AACF,EAAA;AAIa,MAAA,YAAA,GAAe,CAAC,KAAkB,KAAA,MAAA;AAExC,MAAM,eAA6C,GAAA;AAAA,EACxD,OAAO,KAAO,EAAA;AACZ,IAAM,MAAA,EAAE,QAAU,EAAA,SAAA,EAAc,GAAA,KAAA,CAAA;AAChC,IAAO,OAAAY,QAAa,CAAO,MAAO,CAAA;AAAA,MAChC,QAAA;AAAA,MACA,SAAA,EAAW,mBAAoB,CAAA,MAAA,CAAO,SAAS,CAAA;AAAA,KAChD,EAAE,MAAO,EAAA,CAAA;AAAA,GACZ;AAAA,EACA,OAAO,KAAO,EAAA;AACZ,IAAM,MAAA,EAAE,UAAU,SAAU,EAAA,GAAIA,QAAa,CAAO,OAAO,KAAK,CAAA,CAAA;AAChE,IAAO,OAAA;AAAA,MACL,UAAU,QAAY,IAAA,EAAA;AAAA,MACtB,SAAA,EAAW,mBAAoB,CAAA,MAAA,CAAO,SAAS,CAAA;AAAA,KACjD,CAAA;AAAA,GACF;AACF,EAAA;AAEO,SAAS,SAAS,KAAiC,EAAA;AACxD,EAAA,IAAI,OAAO,KAAA,KAAU,QAAY,IAAA,KAAA,KAAU,IAAM,EAAA;AAC/C,IAAO,OAAA,KAAA,CAAA;AAAA,GACT;AAEA,EAAM,MAAA,EAAE,QAAU,EAAA,SAAA,EAAc,GAAA,KAAA,CAAA;AAEhC,EAAA,OACE,OAAO,QAAA,KAAa,QACnB,KAAA,SAAA,KAAc,IACb,IAAA,SAAA,KAAc,KACb,CAAA,IAAA,OAAO,SAAc,KAAA,QAAA,IAAY,SAAU,CAAA,UAAA,CAAW,IAAI,CAAA,CAAA,CAAA;AAEjE,CAAA;AASO,SAAS,gBAAgB,MAGrB,EAAA;AACT,EAAA,IAAI,OAAO,SAAc,KAAA,IAAA,IAAQ,MAAO,CAAA,SAAA,CAAU,SAAS,CAAG,EAAA;AAC5D,IAAA,MAAM,YAAY,MAAO,CAAA,SAAA,CAAA;AACzB,IAAO,OAAA;AAAA,MACL,QAAA,EAAU,MAAO,CAAA,MAAA,CAAO,QAAQ,CAAA;AAAA,MAChC,SAAA;AAAA,KACF,CAAA;AAAA,GACF;AAEA,EAAO,OAAA;AAAA,IACL,QAAA,EAAU,MAAO,CAAA,MAAA,CAAO,QAAQ,CAAA;AAAA,GAClC,CAAA;AACF;;AC5FO,MAAM,YAGT,GAAA;AAAA,EACF,OAAO,CAAG,EAAA;AACR,IAAA,MAAM,OAAU,GAAA;AAAA,MACd,SAAA,EAAWC,cAA0B,CAAA,SAAA;AAAA,MACrC,QAAA,EAAUA,cAA0B,CAAA,QAAA;AAAA,MACpC,OAAA,EAASA,cAA0B,CAAA,OAAA;AAAA,MACnC,OAAA,EAASA,cAA0B,CAAA,OAAA;AAAA,KACrC,CAAA;AAEA,IAAA,OAAO,OAAQ,CAAA,CAAC,CAAK,IAAAA,cAA0B,CAAA,OAAA,CAAA;AAAA,GACjD;AAAA,EACA,OAAO,CAAG,EAAA;AACR,IAAA,MAAM,OAAU,GAAA;AAAA,MACd,CAACA,cAAa,CAAa,SAAS,GAAG,WAAA;AAAA,MACvC,CAACA,cAAa,CAAa,QAAQ,GAAG,UAAA;AAAA,MACtC,CAACA,cAAa,CAAa,OAAO,GAAG,SAAA;AAAA,MACrC,CAACA,cAAa,CAAa,OAAO,GAAG,SAAA;AAAA,MACrC,CAACA,cAAa,CAAa,YAAY,GAAG,SAAA;AAAA,KAC5C,CAAA;AAEA,IAAO,OAAA,OAAA,CAAQ,CAAC,CAAK,IAAA,SAAA,CAAA;AAAA,GACvB;AACF,EAAA;AAKO,MAAM,cAGT,GAAA;AAAA,EACF,OAAO,CAAG,EAAA;AACR,IAAA,QAAQ,CAAG;AAAA,MACT,KAAK,UAAA;AACH,QAAO,OAAAC,gBAA4B,CAAA,QAAA,CAAA;AAAA,MACrC,KAAK,MAAA;AACH,QAAO,OAAAA,gBAA4B,CAAA,IAAA,CAAA;AAAA,MACrC,KAAK,SAAA;AACH,QAAO,OAAAA,gBAA4B,CAAA,OAAA,CAAA;AAAA,MACrC;AACE,QAAO,OAAAA,gBAA4B,CAAA,YAAA,CAAA;AAAA,KACvC;AAAA,GACF;AAAA,EACA,OAAO,CAAG,EAAA;AACR,IAAA,MAAM,OAAU,GAAA;AAAA,MACd,CAACA,gBAAa,CAAe,QAAQ,GAAG,UAAA;AAAA,MACxC,CAACA,gBAAa,CAAe,IAAI,GAAG,MAAA;AAAA,MACpC,CAACA,gBAAa,CAAe,OAAO,GAAG,SAAA;AAAA,MACvC,CAACA,gBAAa,CAAe,YAAY,GAAG,SAAA;AAAA,KAC9C,CAAA;AAEA,IAAO,OAAA,OAAA,CAAQ,CAAC,CAAK,IAAA,SAAA,CAAA;AAAA,GACvB;AACF,EAAA;AAIO,MAAM,gBAAgB,YAAa,CAAA;AAAA,EACxC,OAAS,EAAA,WAAA;AAAA,EACT,KAAO,EAAA,WAAA;AACT,CAAC,EAAA;AAKY,MAAA,iBAAA,GAAoB,CAAK,MAAA,KACpC,YAAa,CAAA;AAAA,EACX,QAAA,EAAU,cAAc,YAAY,CAAA;AAAA,EACpC,cAAA,EAAgB,cAAc,MAAM,CAAA;AAAA,EACpC,MAAA,EAAQ,kBAAkB,MAAM,CAAA;AAAA,EAChC,iBAAA,EAAmB,cAAc,aAAa,CAAA;AAChD,CAAC,EAAA;AAMI,MAAM,aAAa,YAAa,CAAA;AAAA,EACrC,MAAA,EAAQ,cAAc,MAAM,CAAA;AAC9B,CAAC,EAAA;AAIM,MAAM,WAAW,YAAa,CAAA;AAAA,EACnC,MAAA,EAAQ,cAAc,MAAM,CAAA;AAC9B,CAAC,EAAA;AAKM,MAAM,SAAY,GAAA,eAAA;AAIlB,MAAM,MAAS,GAAA,YAAA;AAIf,MAAM,MAAS,GAAA,YAAA;AAIf,MAAM,gBAAgB,YAAa,CAAA;AAAA,EACxC,QAAQ,UAAW,CAAA;AAAA,IACjB,MAAQ,EAAA,MAAA;AAAA,IACR,MAAQ,EAAA,MAAA;AAAA,GACT,CAAA;AACH,CAAC,EAAA;AAID,MAAM,WAAA,GAAc,CAClB,MACkC,MAAA;AAAA,EAClC,OAAO,CAAG,EAAA;AACR,IAAA,IAAI,MAAM,IAAM,EAAA;AACd,MAAA,OAAO,IAAI,UAAW,EAAA,CAAA;AAAA,KACxB;AACA,IAAO,OAAA,MAAA,CAAO,OAAO,CAAC,CAAA,CAAA;AAAA,GACxB;AAAA,EACA,OAAO,CAAG,EAAA;AACR,IAAI,IAAA,CAAA,CAAE,WAAW,CAAG,EAAA;AAClB,MAAO,OAAA,IAAA,CAAA;AAAA,KACT;AACA,IAAO,OAAA,MAAA,CAAO,OAAO,CAAC,CAAA,CAAA;AAAA,GACxB;AACF,CAAA,CAAA,CAAA;AAEa,MAAA,IAAA,GAAO,CAAK,MAAA,KACvB,YAAa,CAAA;AAAA,EACX,MAAA,EAAQ,cAAc,MAAM,CAAA;AAAA,EAC5B,SAAW,EAAA,MAAA;AAAA,EACX,QAAU,EAAA,YAAA;AAAA,EACV,UAAY,EAAA,cAAA;AAAA,EACZ,IAAM,EAAA,UAAA,CAAW,WAAY,CAAA,MAAM,CAAC,CAAA;AACtC,CAAC,EAAA;AAIU,MAAA,kBAAA,GAAqB,CAAK,MAAA,KACrC,UAAW,CAAA;AAAA,EACT,IAAA,EAAM,KAAK,MAAM,CAAA;AAAA,EACjB,UAAY,EAAA,UAAA;AAAA,EACZ,QAAU,EAAA,QAAA;AAAA,EACV,SAAW,EAAA,SAAA;AAAA,EACX,aAAe,EAAA,aAAA;AACjB,CAAC,EAAA;AAEI,MAAM,sBAAsB,UAAW,CAAA;AAAA,EAC5C,UAAY,EAAA,UAAA;AAAA,EACZ,QAAU,EAAA,QAAA;AAAA,EACV,SAAW,EAAA,SAAA;AAAA,EACX,aAAe,EAAA,aAAA;AACjB,CAAC;;;;;;;;ACzKM,MAAM,YAA8B,CAAA;AAAA,EAIzC,WACU,CAAA,MAAA,EACA,KACD,EAAA,WAAA,EACA,IACP,EAAA;AAJQ,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA,CAAA;AACA,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA,CAAA;AACD,IAAA,IAAA,CAAA,WAAA,GAAA,WAAA,CAAA;AACA,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA,CAAA;AAPT,IAAQ,aAAA,CAAA,IAAA,EAAA,SAAA,CAAA,CAAA;AACR,IAAQ,aAAA,CAAA,IAAA,EAAA,UAAA,CAAA,CAAA;AAQN,IAAK,IAAA,CAAA,OAAA,GAAU,iBAAkB,CAAA,IAAA,CAAK,MAAM,CAAA,CAAA;AAC5C,IAAK,IAAA,CAAA,QAAA,GAAW,kBAAmB,CAAA,IAAA,CAAK,KAAK,CAAA,CAAA;AAAA,GAC/C;AAAA;AAAA,EAGA,IAAI,MAAS,GAAA;AACX,IAAA,OAAO,IAAK,CAAA,MAAA,CAAA;AAAA,GACd;AAAA;AAAA,EAGA,IAAI,KAAQ,GAAA;AACV,IAAA,OAAO,IAAK,CAAA,KAAA,CAAA;AAAA,GACd;AAAA;AAAA,EAGA,IAAI,OAAU,GAAA;AACZ,IAAA,OAAO,IAAK,CAAA,OAAA,CAAA;AAAA,GACd;AAAA;AAAA,EAGA,IAAI,QAAW,GAAA;AACb,IAAA,OAAO,IAAK,CAAA,QAAA,CAAA;AAAA,GACd;AACF;;;;"}