@dooboostore/simple-boot-http-server 1.0.27 → 1.0.29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/README.md +44 -9
  2. package/dist/cjs/SimpleBootHttpServer.js +15 -2
  3. package/dist/cjs/SimpleBootHttpServer.js.map +2 -2
  4. package/dist/cjs/decorators/MethodMapping.js.map +2 -2
  5. package/dist/cjs/models/RequestResponse.js +52 -0
  6. package/dist/cjs/models/RequestResponse.js.map +3 -3
  7. package/dist/cjs/proxy/RequestResponseInjectProxy.js +35 -0
  8. package/dist/cjs/proxy/RequestResponseInjectProxy.js.map +7 -0
  9. package/dist/cjs/proxy/SymbolIntentApiServiceProxy.js +1 -1
  10. package/dist/cjs/proxy/SymbolIntentApiServiceProxy.js.map +2 -2
  11. package/dist/cjs/proxy/index.js +3 -1
  12. package/dist/cjs/proxy/index.js.map +2 -2
  13. package/dist/cjs/resolvers/Resolver.js.map +1 -1
  14. package/dist/esm/SimpleBootHttpServer.js +16 -3
  15. package/dist/esm/SimpleBootHttpServer.js.map +2 -2
  16. package/dist/esm/decorators/MethodMapping.js.map +2 -2
  17. package/dist/esm/models/RequestResponse.js +52 -0
  18. package/dist/esm/models/RequestResponse.js.map +2 -2
  19. package/dist/esm/proxy/RequestResponseInjectProxy.js +12 -0
  20. package/dist/esm/proxy/RequestResponseInjectProxy.js.map +7 -0
  21. package/dist/esm/proxy/SymbolIntentApiServiceProxy.js +1 -1
  22. package/dist/esm/proxy/SymbolIntentApiServiceProxy.js.map +2 -2
  23. package/dist/esm/proxy/index.js +1 -0
  24. package/dist/esm/proxy/index.js.map +2 -2
  25. package/dist/esm-bundle/dooboostore-simple-boot-http-server.esm.js +5565 -640
  26. package/dist/esm-bundle/dooboostore-simple-boot-http-server.esm.js.map +4 -4
  27. package/dist/types/SimpleBootHttpServer.d.ts.map +1 -1
  28. package/dist/types/decorators/MethodMapping.d.ts +13 -16
  29. package/dist/types/decorators/MethodMapping.d.ts.map +1 -1
  30. package/dist/types/models/RequestResponse.d.ts +9 -0
  31. package/dist/types/models/RequestResponse.d.ts.map +1 -1
  32. package/dist/types/proxy/RequestResponseInjectProxy.d.ts +22 -0
  33. package/dist/types/proxy/RequestResponseInjectProxy.d.ts.map +1 -0
  34. package/dist/types/proxy/index.d.ts +1 -0
  35. package/dist/types/proxy/index.d.ts.map +1 -1
  36. package/dist/types/resolvers/Resolver.d.ts +2 -1
  37. package/dist/types/resolvers/Resolver.d.ts.map +1 -1
  38. package/dist/umd-bundle/dooboostore-simple-boot-http-server.umd.js +5565 -640
  39. package/dist/umd-bundle/dooboostore-simple-boot-http-server.umd.js.map +4 -4
  40. package/dist/umd-bundle/websocket-client.umd.js +106 -140
  41. package/dist/umd-bundle/websocket-client.umd.js.map +2 -2
  42. package/package.json +7 -7
  43. package/src/SimpleBootHttpServer.ts +19 -3
  44. package/src/decorators/MethodMapping.ts +151 -159
  45. package/src/models/RequestResponse.ts +50 -0
  46. package/src/proxy/RequestResponseInjectProxy.ts +30 -0
  47. package/src/proxy/SymbolIntentApiServiceProxy.ts +1 -1
  48. package/src/proxy/index.ts +1 -0
  49. package/src/resolvers/Resolver.ts +2 -1
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/websocket/WebSocketClient.ts", "../../../core/src/valid/ValidUtils.ts", "../../../core/src/array/ArrayUtils.ts", "../../../core/src/types.ts", "../../../core/src/parser/path/ObjectPathParser.ts", "../../../core/src/object/ObjectUtils.ts", "../../../core/src/string/StringUtils.ts", "../../../core/src/date/DateUtils.ts", "../../../core/src/entity/Point2D.ts", "../../../core/src/entity/Vector.ts", "../../../core/src/entity/Point3D.ts", "../../../core/src/entity/SizeType.ts", "../../../core/src/entity/Rect.ts", "../../../core/src/entity/object/obj/Obj.ts", "../../../core/src/math/MathUtil.ts", "../../../core/src/convert/ConvertUtils.ts", "../../../core/src/random/RandomUtils.ts", "../../../core/src/message/Subscription.ts", "../../../core/src/message/Subscriber.ts", "../../../core/src/message/Observable.ts", "../../../core/src/message/Subject.ts", "../../../core/src/message/BehaviorSubject.ts", "../../../core/src/message/ReplaySubject.ts", "../../../core/src/message/ReplayForwardSubject.ts", "../../../core/src/message/AutoCloseSubscription.ts", "../../../core/src/message/internal/interval.ts", "../../../core/src/message/internal/take.ts", "../../../core/src/message/internal/lastValueFrom.ts", "../../../core/src/message/internal/firstValueFrom.ts", "../../../core/src/message/internal/timer.ts", "../../../core/src/message/internal/of.ts", "../../../core/src/message/internal/fromArray.ts", "../../../core/src/message/internal/fromPromise.ts", "../../../core/src/message/internal/empty.ts", "../../../core/src/message/internal/never.ts", "../../../core/src/message/internal/throwError.ts", "../../../core/src/message/internal/range.ts", "../../../core/src/message/internal/defer.ts", "../../../core/src/message/internal/skip.ts", "../../../core/src/message/internal/takeWhile.ts", "../../../core/src/message/internal/startWith.ts", "../../../core/src/message/internal/concat.ts", "../../../core/src/message/internal/merge.ts", "../../../core/src/message/internal/fromEvent.ts", "../../../core/src/message/internal/toPromise.ts", "../../../core/src/message/index.ts", "../../../core/src/promise/AbortablePromise.ts", "../../../core/src/promise/Promises.ts", "../../../core/src/validators/Validator.ts", "../../../core/src/validators/NonPassValidator.ts", "../../../core/src/validators/ValidatorArray.ts", "../../../core/src/validators/AllCheckedValidatorArray.ts", "../../../core/src/validators/AllUnCheckedValidatorArray.ts", "../../../core/src/validators/CheckedValidator.ts", "../../../core/src/validators/CountEqualsCheckedValidatorArray.ts", "../../../core/src/validators/CountEqualsUnCheckedValidatorArray.ts", "../../../core/src/validators/CountGreaterThanCheckedValidatorArray.ts", "../../../core/src/validators/CountGreaterThanEqualsCheckedValidatorArray.ts", "../../../core/src/validators/CountGreaterThanEqualsUnCheckedValidatorArray.ts", "../../../core/src/validators/CountGreaterThanUnCheckedValidatorArray.ts", "../../../core/src/validators/CountLessThanCheckedValidatorArray.ts", "../../../core/src/validators/CountLessThanEqualsCheckedValidatorArray.ts", "../../../core/src/validators/CountLessThanEqualsUnCheckedValidatorArray.ts", "../../../core/src/validators/CountLessThanUnCheckedValidatorArray.ts", "../../../core/src/validators/CountUnCheckedValidatorArray.ts", "../../../core/src/validators/EmptyValidator.ts", "../../../core/src/validators/ExcludeCheckedValidatorArray.ts", "../../../core/src/validators/FormValidator.ts", "../../../core/src/validators/IncludeCheckedValidatorArray.ts", "../../../core/src/validators/MultipleValidator.ts", "../../../core/src/validators/NotEmptyValidator.ts", "../../../core/src/validators/NotRegExpTestValidator.ts", "../../../core/src/validators/PassValidator.ts", "../../../core/src/validators/RegExpTestValidator.ts", "../../../core/src/validators/RequiredValidator.ts", "../../../core/src/validators/UnCheckedValidator.ts", "../../../core/src/validators/ValidMultipleValidator.ts", "../../../core/src/validators/ValidValidator.ts", "../../../core/src/validators/ValidValidatorArray.ts", "../../../core/src/fetch/Fetcher.ts", "../../../core/src/fetch/HttpFetcher.ts", "../../../core/src/fetch/HttpJsonFetcher.ts", "../../../core/src/entity/Ellipse.ts", "../../../core/src/entity/Point2Ds.ts", "../../../core/src/entity/Point2DType.ts", "../../../core/src/entity/Point3Ds.ts", "../../../core/src/entity/Point3DType.ts", "../../../core/src/entity/Polygon.ts", "../../../core/src/entity/Scalar.ts", "../../../core/src/entity/WrapPolygons.ts", "../../../core/src/entity/WrapRects.ts", "../../../core/src/entity/object/grid/grid/LenGrid.ts", "../../../core/src/entity/object/grid/grid/SizeGrid.ts", "../../../core/src/entity/object/obj/RenderDrawObj.ts", "../../../core/src/entity/object/obj/RenderTransactionDrawObj.ts", "../../../core/src/runs/AutoStartRunner.ts", "../../../core/src/runs/RunnableLoader.ts", "../../../core/src/runs/StoreRunnableLoader.ts", "../../../core/src/transaction/TransactionManager.ts", "../../../core/src/schedule/Schedule.ts", "../../../core/src/store/StoreLoader.ts", "../../../core/src/url/UrlUtils.ts", "../../../core/src/logger/Logger.ts", "../../../core/src/storage/MemoryStorage.ts", "../../../core/src/storage/StorageUtils.ts", "../../../core/src/reflect/ReflectUtils.ts", "../../../core/src/function/FunctionUtils.ts", "../../../core/src/optional/Optional.ts", "../../../core/src/optional/OptionalUtils.ts", "../../../core/src/iterators/Range.ts", "../../../core/src/queues/AsyncBlockingQueue.ts", "../../../core/src/parser/css/CssParser.ts", "../../../core/src/advice/Advice.ts", "../../../core/src/code/IOS3166_1.ts", "../../../core/src/image/ImageUtils.ts", "../../../core/src/expression/Expression.ts", "../../../core/src/expression/ActionExpression.ts", "../../../core/src/hash/HashUtils.ts", "../../../core/src/message/operators/filter.ts"],
4
- "sourcesContent": ["import {RandomUtils} from '@dooboostore/core';\nimport {TopicRequest, TopicResponse, TopicServerEventRequest, TopicServerEventResponse, TopicServerEventUnSubscribeRequest, TopicSubscribeRequest, TopicType, TopicUnsubscribeRequest} from './WebSocketManager';\nimport {Observable, Subject} from '@dooboostore/core';\nimport { filter } from '@dooboostore/core/message/operators';\n\nexport * from '@dooboostore/core';\n\ntype TopicObserverNextCallBack<T> = <R = any>(data: T, meta: { socket: WebSocket }) => void;\ntype TopicObserverEventCallBack = { [event: string]: <T, R = any>(data: T, meta: { socket: WebSocket }) => Promise<R> | void | any } | (<T, R = any>(event: string, data: T, meta: { socket: WebSocket }) => Promise<R> | void | any);\ntype TopicObserverErrorCallBack = <R = any>(err: any) => void;\nexport type TopicObserverCallBack<T> = { next: TopicObserverNextCallBack<T>; event?: TopicObserverEventCallBack; error?: TopicObserverErrorCallBack; complete?: () => void } | TopicObserverNextCallBack<T>;\n\nexport interface WebSocketClientConfig {\n retryConnectionCount?: number;\n retryConnectionDelay?: number;\n maxPendingMessages?: number;\n maxPendingBinaryMessages?: number;\n}\n\ntype OnUnsubscribeCallback = (type: 'server' | 'manual') => void;\nexport type Subscription = {\n closed: boolean;\n unsubscribe: () => void;\n};\n\nexport class WebSocketClient {\n private websocket: WebSocket;\n private topics = new Map<string, { observer: TopicObserverCallBack<any>; subscription: Subscription; onUnsubscribes: OnUnsubscribeCallback[]; target: string }>();\n private observer?: (data: TopicResponse | TopicServerEventRequest | TopicServerEventUnSubscribeRequest) => void;\n private pendingMessages: any[] = [];\n private pendingBinaryMessages: Array<ArrayBuffer | Blob | Uint8Array> = [];\n private isConnected = false;\n private onOpenCallback: () => void;\n private onCloseCallback: () => void;\n private _subject = new Subject<TopicResponse | TopicServerEventRequest | TopicServerEventUnSubscribeRequest>();\n // Reconnection properties\n private connectionUrl: string | URL;\n private connectionProtocols?: string | string[];\n private retryConnectionCount: number;\n private retryConnectionDelay: number;\n private currentRetryCount = 0;\n private reconnectTimeout?: number;\n private isManualClose = false;\n private isConnecting = false;\n private maxPendingMessages: number;\n private maxPendingBinaryMessages: number;\n\n constructor(connection: { url: string | URL; protocols?: string | string[] }, config?: WebSocketClientConfig);\n constructor(connection: string, config?: WebSocketClientConfig);\n constructor(connection: URL, config?: WebSocketClientConfig);\n constructor(connection: { url: string | URL; protocols?: string | string[] } | string | URL, config?: WebSocketClientConfig) {\n // Store connection info for reconnection\n if (typeof connection === 'string' || connection instanceof URL) {\n this.connectionUrl = connection;\n } else {\n this.connectionUrl = connection.url;\n this.connectionProtocols = connection.protocols;\n }\n\n // Set config with defaults\n this.retryConnectionCount = config?.retryConnectionCount ?? 0;\n this.retryConnectionDelay = config?.retryConnectionDelay ?? 1000;\n this.maxPendingMessages = config?.maxPendingMessages ?? 1000;\n this.maxPendingBinaryMessages = config?.maxPendingBinaryMessages ?? 100;\n\n this.connect();\n }\n\n private get observable() {\n return this._subject.asObservable();\n }\n\n private connect() {\n if (this.isConnecting) {\n return;\n }\n if (this.websocket && (this.websocket.readyState === WebSocket.OPEN || this.websocket.readyState === WebSocket.CONNECTING)) {\n return;\n }\n this.isConnecting = true;\n if (this.connectionProtocols) {\n this.websocket = new WebSocket(this.connectionUrl, this.connectionProtocols);\n } else {\n this.websocket = new WebSocket(this.connectionUrl);\n }\n\n this.websocket.binaryType = 'arraybuffer';\n\n this.websocket.addEventListener('open', () => {\n this.isConnecting = false;\n this.isConnected = true;\n this.currentRetryCount = 0; // Reset retry count on successful connection\n if (this.reconnectTimeout) {\n clearTimeout(this.reconnectTimeout);\n this.reconnectTimeout = undefined;\n }\n console.log('WebSocket connected');\n this.onOpenCallback?.();\n\n // Re-subscribe to all existing topics after reconnection\n this.topics.forEach((topicData, uuid) => {\n // closed\uB41C subscription\uC740 \uC7AC\uAD6C\uB3C5\uD558\uC9C0 \uC54A\uC74C\n if (!topicData.subscription.closed) {\n const subscribeTopic: TopicSubscribeRequest = {\n type: 'subscribe',\n uuid,\n target: topicData.target\n };\n // console.log('????')\n this.websocket.send(JSON.stringify(subscribeTopic));\n }\n });\n\n // \uB300\uAE30 \uC911\uC778 \uBAA8\uB4E0 \uBA54\uC2DC\uC9C0 \uC804\uC1A1\n while (this.pendingMessages.length > 0) {\n const message = this.pendingMessages.shift();\n this.websocket.send(JSON.stringify(message));\n }\n\n while (this.pendingBinaryMessages.length > 0) {\n const message = this.pendingBinaryMessages.shift();\n if (message) {\n this.websocket.send(message);\n }\n }\n });\n\n this.websocket.addEventListener('close', event => {\n this.isConnecting = false;\n this.isConnected = false;\n console.log('WebSocket closed', event.code, event.reason);\n this.onCloseCallback?.();\n\n // Attempt reconnection if not manually closed\n if (!this.isManualClose) {\n this.attemptReconnect();\n }\n });\n\n this.websocket.addEventListener('error', error => {\n console.error('WebSocket error:', error);\n });\n\n this.websocket.addEventListener('message', async event => {\n const topic = await this.parseIncomingTopic(event.data);\n if (!topic) {\n return;\n }\n this._subject.next(topic);\n this.observer?.(topic);\n if (topic.uuid) {\n const topicData = this.topics.get(topic.uuid);\n if (topicData) {\n const observer = topicData.observer;\n const nextCallback = typeof observer === 'function' ? observer : observer.next;\n const errorCallback = typeof observer === 'function' ? undefined : observer.error;\n const eventCallback = typeof observer === 'function' ? undefined : observer.event;\n if ('state' in topic && topic.state === 'success') {\n await nextCallback(topic.body, { socket: this.websocket });\n } else if ('state' in topic && topic.state === 'error' && errorCallback) {\n await errorCallback(topic.body);\n } else if ('type' in topic && topic.type === 'unsubscribe') {\n topicData.subscription.closed = true;\n this.topics.delete(topic.uuid);\n topicData.onUnsubscribes.forEach(it => it('server'));\n } else if ('type' in topic && topic.type === 'event' && eventCallback) {\n /////////// event ///////////\n let eventResponse = typeof eventCallback === 'function' ? await eventCallback(topic.event, topic.body, { socket: this.websocket }) : await eventCallback[topic.event]?.(topic.body, { socket: this.websocket });\n\n if (eventResponse !== undefined && eventResponse !== null) {\n const value: TopicServerEventResponse = {\n uuid: topic.uuid,\n eventUUID: topic.eventUUID,\n type: topic.type,\n body: eventResponse\n };\n this.websocket.send(JSON.stringify(value));\n }\n }\n }\n }\n });\n }\n\n private attemptReconnect() {\n if (this.currentRetryCount >= this.retryConnectionCount) {\n console.error(`WebSocket reconnection failed after ${this.retryConnectionCount} attempts`);\n return;\n }\n if (this.reconnectTimeout) {\n return;\n }\n\n this.currentRetryCount++;\n console.log(`Attempting to reconnect... (${this.currentRetryCount}/${this.retryConnectionCount})`);\n\n this.reconnectTimeout = window.setTimeout(() => {\n this.reconnectTimeout = undefined;\n this.connect();\n // Subscribe messages are already in pendingMessages and will be sent automatically\n }, this.retryConnectionDelay);\n }\n\n private sendMessage(message: TopicRequest | TopicUnsubscribeRequest | TopicSubscribeRequest) {\n if (this.isConnected && this.websocket.readyState === WebSocket.OPEN) {\n this.websocket.send(JSON.stringify(message));\n return;\n }\n if (message.type === 'subscribe' || message.type === 'unsubscribe') {\n return;\n }\n if (this.maxPendingMessages <= 0) {\n return;\n }\n if (this.pendingMessages.length >= this.maxPendingMessages) {\n this.pendingMessages.shift();\n }\n this.pendingMessages.push(message);\n }\n\n sendBinary(data: ArrayBuffer | Blob | Uint8Array) {\n if (this.isConnected && this.websocket.readyState === WebSocket.OPEN) {\n this.websocket.send(data);\n return;\n }\n if (this.maxPendingBinaryMessages <= 0) {\n return;\n }\n if (this.pendingBinaryMessages.length >= this.maxPendingBinaryMessages) {\n this.pendingBinaryMessages.shift();\n }\n this.pendingBinaryMessages.push(data);\n }\n\n private async parseIncomingTopic(data: any): Promise<TopicResponse | TopicServerEventRequest | TopicServerEventUnSubscribeRequest | undefined> {\n if (typeof data === 'string') {\n try {\n return JSON.parse(data);\n } catch (error) {\n console.warn('Invalid WebSocket payload:', error);\n return undefined;\n }\n }\n\n if (data instanceof ArrayBuffer) {\n return this.parseBinaryTopic(data);\n }\n\n if (typeof Blob !== 'undefined' && data instanceof Blob) {\n const buffer = await data.arrayBuffer();\n return this.parseBinaryTopic(buffer);\n }\n\n return undefined;\n }\n\n private parseBinaryTopic(data: ArrayBuffer): TopicResponse | TopicServerEventRequest | TopicServerEventUnSubscribeRequest | undefined {\n if (data.byteLength < 4) {\n return undefined;\n }\n const view = new DataView(data);\n const jsonLength = view.getUint32(0, true);\n const jsonStart = 4;\n const jsonEnd = jsonStart + jsonLength;\n if (data.byteLength < jsonEnd) {\n return undefined;\n }\n\n const jsonBytes = new Uint8Array(data, jsonStart, jsonLength);\n let meta: any;\n try {\n const decoder = new TextDecoder();\n meta = JSON.parse(decoder.decode(jsonBytes));\n } catch (error) {\n console.warn('Invalid WebSocket binary payload:', error);\n return undefined;\n }\n\n const filesMeta = Array.isArray(meta.files) ? meta.files : [];\n const fileMap = new Map<string, any>();\n filesMeta.forEach((file: any) => {\n if (!file || typeof file.id !== 'string' || typeof file.size !== 'number' || typeof file.offset !== 'number') {\n return;\n }\n const start = jsonEnd + file.offset;\n const end = start + file.size;\n if (start < jsonEnd || end > data.byteLength) {\n return;\n }\n const slice = data.slice(start, end);\n const mime = file.mime || 'application/octet-stream';\n let fileValue: any;\n if (typeof File !== 'undefined') {\n fileValue = new File([slice], file.name || 'file', { type: mime });\n } else {\n fileValue = { name: file.name || 'file', mime, size: file.size, buffer: slice };\n }\n fileMap.set(file.id, fileValue);\n });\n\n const replaceFileRefs = (value: any): any => {\n if (value && typeof value === 'object' && '$file' in value && typeof value.$file === 'string') {\n const file = fileMap.get(value.$file);\n if (file) {\n return file;\n }\n }\n if (Array.isArray(value)) {\n return value.map(item => replaceFileRefs(item));\n }\n if (value && typeof value === 'object') {\n const result: Record<string, any> = {};\n Object.keys(value).forEach(key => {\n result[key] = replaceFileRefs(value[key]);\n });\n return result;\n }\n return value;\n };\n\n meta.body = replaceFileRefs(meta.body);\n return meta as TopicResponse | TopicServerEventRequest | TopicServerEventUnSubscribeRequest;\n }\n\n private isBinaryPayload(value: any) {\n if (!value) {\n return false;\n }\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return true;\n }\n if (typeof Uint8Array !== 'undefined' && value instanceof Uint8Array) {\n return true;\n }\n if (typeof Blob !== 'undefined' && value instanceof Blob) {\n return true;\n }\n if (value && typeof value === 'object' && 'buffer' in value) {\n const bufferValue = (value as any).buffer;\n return this.isBinaryPayload(bufferValue);\n }\n return false;\n }\n\n private hasBinaryPayload(value: any): boolean {\n if (this.isBinaryPayload(value)) {\n return true;\n }\n if (Array.isArray(value)) {\n return value.some(item => this.hasBinaryPayload(item));\n }\n if (value && typeof value === 'object') {\n return Object.keys(value).some(key => this.hasBinaryPayload(value[key]));\n }\n return false;\n }\n\n private async buildBinaryMessage(body: any, meta: { type?: TopicType; uuid: string; requestUUID: string }) {\n const fileRefs = new Map<any, string>();\n const fileEntries: Array<{ id: string; name: string; mime: string; buffer: Promise<ArrayBuffer | SharedArrayBuffer> }> = [];\n let fileIndex = 0;\n\n const registerFile = (value: any) => {\n const existing = fileRefs.get(value);\n if (existing) {\n return existing;\n }\n const id = `f${++fileIndex}`;\n fileRefs.set(value, id);\n\n let name = 'file';\n let mime = 'application/octet-stream';\n let buffer: Promise<ArrayBuffer | SharedArrayBuffer>;\n\n if (typeof Blob !== 'undefined' && value instanceof Blob) {\n const fileLike = value as File | Blob;\n if ('name' in fileLike && typeof (fileLike as File).name === 'string') {\n name = (fileLike as File).name || name;\n }\n mime = fileLike.type || mime;\n buffer = fileLike.arrayBuffer();\n } else if (value && typeof value === 'object' && 'buffer' in value) {\n const fileLike = value as any;\n if (typeof fileLike.name === 'string') {\n name = fileLike.name || name;\n }\n if (typeof fileLike.mime === 'string') {\n mime = fileLike.mime || mime;\n }\n const innerBuffer = fileLike.buffer;\n if (typeof Blob !== 'undefined' && innerBuffer instanceof Blob) {\n buffer = innerBuffer.arrayBuffer();\n } else if (typeof Uint8Array !== 'undefined' && innerBuffer instanceof Uint8Array) {\n const sliced = innerBuffer.buffer.slice(innerBuffer.byteOffset, innerBuffer.byteOffset + innerBuffer.byteLength);\n buffer = Promise.resolve(sliced instanceof ArrayBuffer ? sliced : new Uint8Array(sliced).buffer);\n } else if (typeof ArrayBuffer !== 'undefined' && innerBuffer instanceof ArrayBuffer) {\n buffer = Promise.resolve(innerBuffer as ArrayBuffer);\n } else {\n buffer = Promise.resolve(new ArrayBuffer(0));\n }\n } else if (typeof Uint8Array !== 'undefined' && value instanceof Uint8Array) {\n const view = value as Uint8Array;\n const sliced = view.buffer.slice(view.byteOffset, view.byteOffset + view.byteLength);\n buffer = Promise.resolve(sliced instanceof ArrayBuffer ? sliced : new Uint8Array(sliced).buffer);\n } else if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n buffer = Promise.resolve(value as ArrayBuffer);\n } else {\n buffer = Promise.resolve(new ArrayBuffer(0));\n }\n\n fileEntries.push({ id, name, mime, buffer });\n return id;\n };\n\n const replaceFiles = (value: any): any => {\n if (this.isBinaryPayload(value)) {\n const id = registerFile(value);\n return { $file: id };\n }\n if (Array.isArray(value)) {\n return value.map(item => replaceFiles(item));\n }\n if (value && typeof value === 'object') {\n const result: Record<string, any> = {};\n Object.keys(value).forEach(key => {\n result[key] = replaceFiles(value[key]);\n });\n return result;\n }\n return value;\n };\n\n const payload = replaceFiles(body);\n const buffers = await Promise.all(fileEntries.map(entry => entry.buffer));\n\n let offset = 0;\n const files = fileEntries.map((entry, index) => {\n const size = buffers[index].byteLength;\n const fileMeta = {\n id: entry.id,\n name: entry.name,\n mime: entry.mime,\n size,\n offset\n };\n offset += size;\n return fileMeta;\n });\n\n const json = JSON.stringify({\n type: meta.type,\n uuid: meta.uuid,\n requestUUID: meta.requestUUID,\n body: payload,\n files\n });\n\n const encoder = new TextEncoder();\n const jsonBytes = encoder.encode(json);\n const header = new Uint8Array(4);\n new DataView(header.buffer).setUint32(0, jsonBytes.byteLength, true);\n\n const totalSize = header.byteLength + jsonBytes.byteLength + offset;\n const combined = new Uint8Array(totalSize);\n combined.set(header, 0);\n combined.set(jsonBytes, header.byteLength);\n\n let cursor = header.byteLength + jsonBytes.byteLength;\n buffers.forEach(buffer => {\n const view = buffer instanceof ArrayBuffer ? new Uint8Array(buffer) : new Uint8Array(buffer);\n combined.set(view, cursor);\n cursor += buffer.byteLength;\n });\n\n return combined.buffer;\n }\n\n subject(target: string, option?: { type?: TopicType; subScribeBody?: any; observer?: TopicObserverCallBack<any>; onUnsubscribe?: OnUnsubscribeCallback }) {\n const self = this;\n const uuid = RandomUtils.uuid4();\n const onUnsubscribes: OnUnsubscribeCallback[] = [];\n if (option?.onUnsubscribe) {\n onUnsubscribes.push(option.onUnsubscribe);\n }\n if (option?.observer && typeof option.observer !== 'function' && option.observer.complete) {\n onUnsubscribes.push(() => (option.observer as any).complete());\n }\n const topicSubject = new Subject<any>();\n onUnsubscribes.push(() => topicSubject.complete());\n\n let isClosed = false;\n let activeSubscription: Subscription | undefined;\n\n const unsubscribeLogic = () => {\n if (isClosed) return;\n const unSubscribeTopic: TopicUnsubscribeRequest = { type: 'unsubscribe', uuid };\n self.sendMessage(unSubscribeTopic);\n isClosed = true;\n self.topics.delete(uuid);\n onUnsubscribes.forEach(it => it('manual'));\n if (activeSubscription) {\n activeSubscription.closed = true;\n }\n };\n\n const doSubscribe = <T>(observer?: TopicObserverCallBack<T>) => {\n const subscription: Subscription = {\n closed: isClosed,\n unsubscribe: unsubscribeLogic\n };\n\n const wrappedObserver: TopicObserverCallBack<T> = {\n next: (data, meta) => {\n topicSubject.next(data);\n if (observer) {\n return typeof observer === 'function' ? observer(data, meta) : observer.next(data, meta);\n }\n },\n error: err => {\n topicSubject.error(err);\n if (observer && typeof observer !== 'function' && observer.error) {\n observer.error(err);\n }\n },\n event: observer && typeof observer !== 'function' ? observer.event : undefined\n };\n\n self.topics.set(uuid, { observer: wrappedObserver, target, subscription, onUnsubscribes });\n const subscribeTopic: TopicSubscribeRequest = { type: 'subscribe', uuid, target: target, body: option?.subScribeBody };\n\n self.sendMessage(subscribeTopic);\n // console.log('----------')\n activeSubscription = subscription;\n return subscription;\n };\n\n if (option?.observer) {\n doSubscribe(option.observer);\n }\n\n return {\n get closed() {\n return isClosed;\n },\n unsubscribe: unsubscribeLogic,\n get observable() {\n return new Observable<any>(subscriber => {\n if (!activeSubscription && !isClosed) {\n doSubscribe();\n }\n return topicSubject.subscribe({\n next: value => subscriber.next(value),\n error: err => subscriber.error(err),\n complete: () => subscriber.complete()\n });\n });\n },\n send: (body?: any) => {\n if (!activeSubscription && !self.topics.has(uuid) && !isClosed) {\n doSubscribe();\n }\n const requestUUID = RandomUtils.uuid4();\n if (self.hasBinaryPayload(body)) {\n self.buildBinaryMessage(body, { type: option?.type, uuid, requestUUID }).then(buffer => self.sendBinary(buffer));\n } else {\n const value: TopicRequest = { type: option?.type, uuid, requestUUID, body: body };\n self.sendMessage(value);\n }\n return topicSubject.pipe(filter(data => data && data.requestUUID === requestUUID));\n },\n onUnsubscribe: (callback: OnUnsubscribeCallback) => {\n onUnsubscribes.push(callback);\n }\n };\n }\n\n onOpen(callback: () => void) {\n this.onOpenCallback = callback;\n }\n\n onClose(callback: () => void) {\n this.onCloseCallback = callback;\n }\n\n subscribe<T = any>(observer: (data: TopicResponse<T> | TopicServerEventRequest<T>) => void) {\n this.observer = observer;\n }\n\n close() {\n this.isManualClose = true;\n if (this.reconnectTimeout) {\n clearTimeout(this.reconnectTimeout);\n this.reconnectTimeout = undefined;\n }\n this.pendingMessages = [];\n this.pendingBinaryMessages = [];\n this.isConnecting = false;\n this.topics.forEach(topicData => {\n topicData.subscription.closed = true;\n topicData.onUnsubscribes.forEach(it => it('manual'));\n });\n this.topics.clear();\n this.websocket.close();\n }\n\n reconnect() {\n // \uAE30\uC874 \uC5F0\uACB0 \uC885\uB8CC\n this.isManualClose = true;\n if (this.reconnectTimeout) {\n clearTimeout(this.reconnectTimeout);\n }\n\n // close \uC774\uBCA4\uD2B8 \uD6C4\uC5D0 \uC7AC\uC5F0\uACB0\uD558\uB3C4\uB85D \uC124\uC815\n const reconnectAfterClose = () => {\n console.log('close websocket');\n this.isManualClose = false;\n this.currentRetryCount = 0;\n this.connect();\n };\n\n // \uC774\uBBF8 \uB2EB\uD600\uC788\uC73C\uBA74 \uBC14\uB85C \uC7AC\uC5F0\uACB0\n if (this.websocket.readyState === WebSocket.CLOSED || this.websocket.readyState === WebSocket.CLOSING) {\n reconnectAfterClose();\n } else {\n // \uC5F0\uACB0\uC774 \uB2EB\uD790 \uB54C\uAE4C\uC9C0 \uAE30\uB2E4\uB838\uB2E4\uAC00 \uC7AC\uC5F0\uACB0\n this.websocket.addEventListener('close', reconnectAfterClose, { once: true });\n this.websocket.close();\n }\n }\n\n getReadyState(): number {\n return this.websocket.readyState;\n }\n\n isConnectionOpen(): boolean {\n return this.isConnected && this.websocket.readyState === WebSocket.OPEN;\n }\n}\n", "import {ClassType, ConstructorType, FilterFalsy, FilterNullish, NonNullable, Nullable, Nullish, NullOrUndefined} from '../types';\n\nexport namespace ValidUtils {\n\n export const isArrowFunction = (fn: any): fn is Function => {\n // 1. \uD568\uC218\uAC00 \uC544\uB2C8\uBA74 false\n if (typeof fn !== 'function') {\n return false;\n }\n // 2. prototype \uC18D\uC131\uC774 \uC5C6\uC73C\uBA74 \uD654\uC0B4\uD45C \uD568\uC218 (\uB610\uB294 prototype\uC774 \uC5C6\uB294 \uB2E4\uB978 callable)\n // 3. \uD074\uB798\uC2A4\uB294 'class' \uD0A4\uC6CC\uB4DC\uB85C \uC2DC\uC791\uD558\uBBC0\uB85C \uC81C\uC678\n return typeof fn.prototype === 'undefined' && !fn.toString().startsWith('class');\n }\n\n export const isPlainObject = (obj: any): boolean => {\n return obj !== null && typeof obj === 'object' && obj.constructor === Object;\n }\n\n const isConstructorLike = (fn: any): boolean => {\n // 1. \uD568\uC218\uC5EC\uC57C \uD558\uACE0,\n // 2. prototype \uC18D\uC131\uC744 \uAC00\uC838\uC57C \uD568\n return typeof fn === 'function' && typeof fn.prototype !== 'undefined';\n }\n\n export const isUrl = (str: string): boolean => {\n try {\n new URL(str);\n return true;\n } catch (_) {\n return false;\n }\n }\n\n export const isFrozen = (obj: any): boolean => {\n return Object.isFrozen(obj);\n }\n export const isSealed = (obj: any): boolean => {\n return Object.isSealed(obj)\n }\n export const isFrozenOrSealed = (obj: any): boolean => {\n return ValidUtils.isFrozen(obj) || ValidUtils.isSealed(obj);\n }\n export const isFrozenAndSealed = (obj: any): boolean => {\n return ValidUtils.isFrozen(obj) && ValidUtils.isSealed(obj);\n }\n export const isNotFrozen = (obj: any): boolean => {\n return !Object.isFrozen(obj);\n }\n export const isNotSealed = (obj: any): boolean => {\n return !Object.isSealed(obj)\n }\n export const isNotFrozenOrSealed = (obj: any): boolean => {\n return !ValidUtils.isFrozen(obj) && !ValidUtils.isSealed(obj);\n }\n export const isNotFrozenAndSealed = (obj: any): boolean => {\n return !ValidUtils.isFrozen(obj) || !ValidUtils.isSealed(obj);\n }\n\n export const isNullOrUndefined = (data: unknown): data is (null | undefined) => {\n return data == null || undefined === data;\n }\n\n // \uAD6C\uBD84 \uD568\uC218\n export const isClassType = (obj: any): obj is ClassType => {\n return typeof obj === 'function' && /^\\s*class\\s+/.test(obj.toString());\n };\n\n // \uBB54\uAC00.. \uC774\uAC70 \uC880 \uC218\uC815\uD574\uC57C\uB420\uAC83\uAC19\uC740\uB370 \uADF8\uB0E5 function() \uC774\uAC83\uB3C4 true\uAC00 \uB098\uC624\uB294\uAC8C \uB9DE\uB098?\uB9DE\uC744\uB77C\uB098\uD6D4..\n // export const isConstructor = (obj: ConstructorType<any> | Function | ((e: any) => void)): obj is ConstructorType<any> => {\n // // \uD568\uC218\uC774\uBA74\uC11C prototype \uC18D\uC131\uC774 \uC788\uACE0 prototype\uC774 \uAC1D\uCCB4\uC778\uC9C0 \uD655\uC778\n // return typeof obj === 'function'\n // && obj.prototype !== undefined\n // && obj.prototype.constructor === obj\n // // && Object.getOwnPropertyNames(obj.prototype).length > 1; // constructor \uC678\uC5D0 \uB2E4\uB978 \uC18D\uC131\uC774 \uC788\uB294\uC9C0 \uD655\uC778\n // }\n export const isFunctionType = (obj: ConstructorType<any> | Function | ((e: any) => void)): obj is ((e: any) => void) => {\n return typeof obj === 'function';\n }\n // \uC774\uAC83\uB3C4 \uC218\uC815\uC774\uB418\uC5B4\uC57C \uD558\uB098? function(){} \uB123\uC73C\uBA74 false\uB098\uC62C\uAC83\uAC19\uC740\uB370\n // export const isFunction = (obj: ConstructorType<any> | Function | ((e: any) => void)): obj is ((e: any) => void) => {\n // return typeof obj === 'function' && !isConstructor(obj);\n // }\n export const isNullish = <T = any>(data: T | null | undefined): data is null | undefined => {\n return ValidUtils.isNotNullish(data);\n }\n export const isNotNullish = <T>(data: T | null | undefined): data is NonNullable<T> => {\n if ((Array.isArray(data) || ValidUtils.isString(data))) {\n return data.length > 0;\n }\n\n if (data instanceof Set || data instanceof Map) {\n return data.size > 0;\n }\n\n if (typeof data === 'object' && data !== null) {\n return Object.keys(data).length > 0;\n }\n\n return data !== null && data !== undefined;\n }\n\n export function isDefined<T>(value: T | null | undefined): value is NonNullable<T>;\n export function isDefined<K extends string, V>(entry: [K, V] | null | undefined): entry is [K, V];\n export function isDefined(value: unknown): boolean {\n return value !== null && value !== undefined;\n }\n\n export const isNotNullUndefined = <T>(data: T | null | undefined): data is NonNullable<T> => {\n return isDefined(data);\n }\n\n export const isNormalAttrEntry = <T>(entry: [string, T] | undefined | null): entry is [string, T] => {\n return isDefined(entry);\n }\n\n export const isStringEntry = (entry: [string, string] | undefined | null): entry is [string, string] => {\n return isDefined(entry);\n }\n\n export const isNull = (data: any): data is null => {\n return data === null;\n }\n\n export const isUndefined = (data: any): data is undefined => {\n return data === undefined;\n }\n\n export const isArray = (object_o: any): boolean => {\n if (ValidUtils.isNullOrUndefined(object_o)) {\n return false\n } else {\n return Object.prototype.toString.call(object_o).trim() === '[object Array]'\n }\n }\n\n export const isStringNumber = (value: string | number): boolean => {\n if (typeof value === 'number') {\n return !isNaN(value);\n }\n return typeof value === 'string' && value.trim() !== '' && !isNaN(Number(value));\n }\n\n export const isNumber = (object_o: any): boolean => {\n if (ValidUtils.isNullOrUndefined(object_o)) {\n return false\n } else {\n return Object.prototype.toString.call(object_o).trim() === '[object Number]'\n }\n }\n\n export const isIterator = <T>(object_o: any): object_o is Iterable<T> => {\n return object_o != null && typeof object_o[Symbol.iterator] === 'function';\n };\n\n export const isString = (object_o: any): object_o is string => {\n if (ValidUtils.isNullOrUndefined(object_o)) {\n return false\n } else {\n return Object.prototype.toString.call(object_o).trim() === '[object String]'\n }\n }\n\n // export const isFunction = (object_o: any): boolean => {\n // if (ValidUtils.isNullOrUndefined(object_o)) {\n // return false\n // } else {\n // return Object.prototype.toString.call(object_o).trim() === '[object Function]'\n // }\n // // if (typeof object_o === 'function') {\n // // return true;\n // // }else {\n // // return false;\n // // }\n // }\n\n export const isObject = (object_o: any): boolean => {\n if (ValidUtils.isNullOrUndefined(object_o)) {\n return false\n } else {\n return Object.prototype.toString.call(object_o).trim() === '[object Object]'\n }\n }\n\n export const isMap = (object_o: any): boolean => {\n if (ValidUtils.isNullOrUndefined(object_o)) {\n return false\n } else {\n return Object.prototype.toString.call(object_o).trim() === '[object Map]'\n }\n }\n\n\n export const isEmpty = (object_o: any): boolean => {\n if (ValidUtils.isNullOrUndefined(object_o)) {\n return true;\n } else if (ValidUtils.isArray(object_o)) {\n return object_o.length === 0;\n } else if (ValidUtils.isString(object_o)) {\n return object_o.trim().length === 0;\n } else if (ValidUtils.isMap(object_o)) {\n return object_o.size === 0;\n } else if (ValidUtils.isObject(object_o)) {\n return Object.keys(object_o).length === 0;\n } else {\n return false;\n }\n };\n\n\n export const isSet = <T = any>(data: any): data is Set<T> => {\n return data instanceof Set;\n };\n\n export const isNullishFiltered = <T>(value: unknown): value is FilterNullish<T> => {\n if (Array.isArray(value)) {\n return value.every(it => it !== undefined && it !== null);\n }\n return value !== undefined && value !== null;\n };\n\n export const isFalsyFiltered = <T>(value: unknown): value is FilterFalsy<T> => {\n if (Array.isArray(value)) {\n return value.every(it => {\n return it;\n });\n }\n return !!value;\n };\n\n export const includeValue = (obj: object, value: any): boolean => {\n return Object.values(obj).includes(value);\n };\n export const includeKey = (obj: object, key: string): boolean => {\n return Object.keys(obj).includes(key);\n };\n\n /** \uC885\uC131\uC774 \uC788\uB294\uC9C0 \uD655\uC778\uD558\uB294 \uD568\uC218 */\n export const lastConsonantLetter = (value: string): boolean => {\n const lastLetter = value.charCodeAt(value.length - 1);\n return (lastLetter - 0xac00) % 28 > 0;\n };\n\n export const inRange = (value: number, min: number, max: number) => {\n return min <= value && value <= max;\n };\n\n export const isBase64 = (inputString: string) => {\n // data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAA\n // const isValidBase64 = /^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/;\n // return isValidBase64.test(base64String);\n\n let base64Data = inputString;\n\n // Data URL \uC811\uB450\uC0AC \uC81C\uAC70 (\uC608: \"data:image/png;base64,\")\n const parts = inputString.split(';base64,');\n if (parts.length > 1) {\n base64Data = parts[1];\n } else {\n // \"data:\"\uB9CC \uC788\uACE0 \";base64,\"\uAC00 \uC5C6\uB294 \uACBD\uC6B0\uB3C4 \uACE0\uB824 (\uC5C4\uBC00\uD788\uB294 base64\uAC00 \uC544\uB2D0 \uC218 \uC788\uC74C)\n if (inputString.startsWith('data:')) {\n // \uC774 \uACBD\uC6B0\uB294 \uC720\uD6A8\uD55C base64\uB85C \uAC04\uC8FC\uD560\uC9C0 \uC815\uCC45\uC5D0 \uB530\uB77C \uB2E4\uB984\n // \uC5EC\uAE30\uC11C\uB294 \uC77C\uB2E8 base64 \uBD80\uBD84\uC774 \uC5C6\uB2E4\uACE0 \uAC00\uC815\uD558\uACE0 false \uCC98\uB9AC\n // return false;\n // \uB610\uB294 \uC811\uB450\uC0AC\uB9CC \uC81C\uAC70\uD558\uACE0 \uB0A8\uC740 \uBD80\uBD84\uC744 \uD14C\uC2A4\uD2B8\uD560 \uC218\uB3C4 \uC788\uC74C\n const commaIndex = inputString.indexOf(',');\n if (commaIndex > -1) {\n base64Data = inputString.substring(commaIndex + 1);\n } else {\n // \uC21C\uC218 base64\uAC00 \uC544\uB2D0 \uAC00\uB2A5\uC131 \uB192\uC74C\n // return false;\n }\n }\n }\n\n\n // Base64 \uC720\uD6A8\uC131 \uAC80\uC0AC \uC815\uADDC\uC2DD\n // - \uBB38\uC790\uC5F4 \uAE38\uC774\uB294 4\uC758 \uBC30\uC218\uC5EC\uC57C \uD568 (\uD328\uB529 \uC81C\uC678)\n // - \uD328\uB529 '='\uB294 \uCD5C\uB300 2\uAC1C\uAE4C\uC9C0 \uBB38\uC790\uC5F4 \uB05D\uC5D0\uB9CC \uC62C \uC218 \uC788\uC74C\n // - \uD328\uB529\uC774 1\uAC1C\uC77C \uACBD\uC6B0, \uADF8 \uC55E \uBB38\uC790\uB294 [A-Za-z0-9+/]\n // - \uD328\uB529\uC774 2\uAC1C\uC77C \uACBD\uC6B0, \uADF8 \uC55E \uB450 \uBB38\uC790\uB294 [A-Za-z0-9+/]\n // \uC870\uAE08 \uB354 \uC5C4\uACA9\uD558\uACE0 \uD6A8\uC728\uC801\uC778 \uC815\uADDC\uC2DD:\n const base64Regex = /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/;\n\n // \uCD94\uAC00\uC801\uC73C\uB85C, \uC2E4\uC81C base64 \uBB38\uC790\uC5F4\uC740 \uD328\uB529\uC744 \uC81C\uC678\uD55C \uAE38\uC774\uAC00 4\uC758 \uBC30\uC218\uC5EC\uC57C \uD569\uB2C8\uB2E4.\n // \uC815\uADDC\uC2DD\uB9CC\uC73C\uB85C\uB294 \uC774 \uBD80\uBD84\uC744 \uC644\uBCBD\uD788 \uCEE4\uBC84\uD558\uAE30 \uC5B4\uB824\uC6B8 \uC218 \uC788\uC5B4, \uAE38\uC774 \uCCB4\uD06C\uB97C \uCD94\uAC00\uD558\uB294 \uAC83\uC774 \uC88B\uC2B5\uB2C8\uB2E4.\n // \uD558\uC9C0\uB9CC \uD604\uC7AC \uC81C\uACF5\uB41C \uC815\uADDC\uC2DD\uC740 \uC774 \uBD80\uBD84\uC744 \uC5B4\uB290 \uC815\uB3C4 \uACE0\uB824\uD558\uACE0 \uC788\uC2B5\uB2C8\uB2E4.\n // (([A-Za-z0-9+/]{4})* \uBD80\uBD84\uACFC \uD328\uB529 \uBD80\uBD84)\n\n if (base64Data === '' || base64Data.length % 4 !== 0) {\n // \uBE48 \uBB38\uC790\uC5F4\uC774\uAC70\uB098, \uAE38\uC774\uAC00 4\uC758 \uBC30\uC218\uAC00 \uC544\uB2C8\uBA74 (\uC77C\uBC18\uC801\uC73C\uB85C) \uC720\uD6A8\uD55C base64\uAC00 \uC544\uB2D8.\n // (\uB2E8, \uC77C\uBD80 \uB77C\uC774\uBE0C\uB7EC\uB9AC\uB294 \uD328\uB529\uC774 \uC5C6\uB294 base64\uB3C4 \uD5C8\uC6A9\uD558\uBBC0\uB85C, \uC5C4\uACA9\uD55C \uAE30\uC900\uC5D0 \uB530\uB77C \uB2E4\uB984)\n // \uD604\uC7AC \uC815\uADDC\uC2DD\uC740 \uD328\uB529\uC774 \uC62C\uBC14\uB974\uAC8C \uC801\uC6A9\uB41C \uACBD\uC6B0 \uAE38\uC774\uAC00 4\uC758 \uBC30\uC218\uAC00 \uC544\uB2CC \uACBD\uC6B0\uB3C4 \uD1B5\uACFC\uC2DC\uD0AC \uC218 \uC788\uC74C\n // \uC608: \"QQ\" (\uAE38\uC774 2) -> false, \"QQQ\" (\uAE38\uC774 3) -> false\n // \"QQ==\" (\uAE38\uC774 4) -> true, \"QQQ=\" (\uAE38\uC774 4) -> true\n // \"QQQ\"\uB294 `base64Regex.test(\"QQQ\")`\uB294 false\uC774\uC9C0\uB9CC, `Buffer.from(\"QQQ\", \"base64\").toString(\"base64\")`\uB294 \"QQ==\"\uB97C \uBC18\uD658.\n // \uC5C4\uBC00\uD558\uAC8C\uB294 \uB514\uCF54\uB529 \uC2DC\uB3C4 \uD6C4 \uB2E4\uC2DC \uC778\uCF54\uB529\uD574\uC11C \uC6D0\uBCF8\uACFC \uAC19\uC740\uC9C0 \uBE44\uAD50\uD558\uB294 \uAC83\uC774 \uAC00\uC7A5 \uD655\uC2E4\uD558\uC9C0\uB9CC, \uC131\uB2A5 \uC774\uC288\uAC00 \uC788\uC744 \uC218 \uC788\uC74C.\n }\n\n\n return base64Regex.test(base64Data);\n }\n}\n", "export namespace ArrayUtils {\n export type PickChanceType<T> = { data: T, chance: number };\n // export const uniqueBy = <T>(array: T[], predicate: (a: T, b: T) => boolean): T[] => {\n // return array.filter((item, index, self) =>\n // index === self.findIndex((other) => predicate(item, other))\n // );\n // };\n export const split = <T>(data: T[], length: number) => {\n const result: T[][] = [];\n for (let i = 0; i < data.length; i += length) {\n result.push(data.slice(i, i + length));\n }\n return result;\n }\n\n export const create2DArray = <T>(rows: number, cols: number, initialValue: T | ((row: number, cols: number) => T)): T[][] => {\n const array: T[][] = [];\n for (let row = 0; row < rows; row++) {\n const rowArray: T[] = [];\n for (let col = 0; col < cols; col++) {\n if (typeof initialValue === 'function') {\n rowArray.push((initialValue as (row: number, col: number) => T)(row, col));\n } else {\n rowArray.push(initialValue as T);\n }\n }\n array.push(rowArray);\n }\n return array;\n\n }\n export const toShuffle = <T>(data: T[]): T[] => {\n const array = [...data];\n for (let i = array.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n [array[i], array[j]] = [array[j], array[i]];\n }\n return array;\n };\n\n // export function maxLength<T>(array: T[]): number;\n // export function maxLength<T>(array: T[][]): { maxRows: number; maxCols: number };\n // export function maxLength<T>(array: T[][][] ): { maxRows: number; maxCols: number };\n // export function maxLength <T>(array: T[] | T[][] | T[][][] ): { maxRows: number; maxCols: number } | number {\n // if (Array.isArray(array[0])) {\n // return { maxRows: array.length, maxCols: Math.max(...array.map(row => row.length), 0) };\n // } else {\n // return array.length;\n // }\n // }\n\n // export type Space = { x: number, y: number, w: number, h: number };\n // export const pickRandomSpace = (array: Space[], where: { w: number, h: number }): { x: number, y: number } | undefined => {\n // const minmax = ConvertUtils.minMaxCenterAvg(array ?? [])\n // // 2\uCC28 \uBC30\uC5F4\uB85C \uBCC0\uD658, \uACB9\uCE58\uB294 \uC601\uC5ED\uC774 \uC788\uC73C\uBA74 3\uCC28 \uBC30\uC5F4\uB85C \uCD94\uAC00\n // const cellSizes2D: Space[][][] = Array.from({length: minmax.y?.max ?? 0}, () =>\n // Array.from({length: minmax.x?.max ?? 0}, () => [])\n // );\n //\n // array.forEach(it => {\n // cellSizes2D[it.y] = cellSizes2D[it.y] || [];\n // if (!cellSizes2D[it.y][it.x]) {\n // // @ts-ignore\n // cellSizes2D[it.y][it.x] = it;\n // } else {\n // // \uC774\uBBF8 \uAC12\uC774 \uC788\uC73C\uBA74 3\uCC28 \uBC30\uC5F4\uB85C \uACB9\uCE58\uB294 \uAC12 \uCD94\uAC00\n // if (!Array.isArray(cellSizes2D[it.y][it.x])) {\n // // @ts-ignore\n // cellSizes2D[it.y][it.x] = [cellSizes2D[it.y][it.x]];\n // }\n // (cellSizes2D[it.y][it.x]).push(it);\n // }\n // });\n // const cellSizes = cellSizes2D.flatMap((it, y) => it.map((it, x) => {\n // const minmax = ConvertUtils.minMaxCenterAvg(Array.isArray(it) ? it : [it])\n // return {\n // x: x,\n // y: y,\n // w: minmax.w?.max ?? 0,\n // h: minmax.h?.max ?? 0,\n // overlay: 0,\n // }\n // }));\n //\n // // const cellSizes = array.map(it=> ({...it, overlay: 0}));\n //\n //\n // cellSizes.filter(it => it.w > 0 && it.h > 0).forEach(it => {\n // const wantW = it.w - 1; // \uC790\uAE30\uC790\uC2E0\uD3EC\uD568\uD574\uC11Cw\uB2C8\uAE50 -1\n // const wantH = it.h - 1;\n // const finds = cellSizes.filter(cit =>\n // (cit.x <= (it.x + wantW)) && (cit.x >= it.x) &&\n // (cit.y <= (it.y + wantH)) && (cit.y >= it.y)\n // );\n // finds.forEach(it => it.overlay++);\n // })\n //\n // const wantW = where.w - 1;\n // const wantH = where.h - 1; // \uC790\uAE30\uC790\uC2E0 \uD3EC\uD568\uBD80\uD130\uB2C8\uAE50 -1 \uD574\uC900\uB2E4\n // const targetCells = cellSizes.filter(it => it.overlay <= 0)\n // const targetCellsEmpty: { x: number, y: number }[] = [];\n // for (let targetCell of targetCells) {\n // const filter = cellSizes.filter(it =>\n // (it.x <= (targetCell.x + wantW)) && (it.x >= targetCell.x) &&\n // (it.y <= (targetCell.y + wantH)) && (it.y >= targetCell.y)\n // );\n // const overlaySum = MathUtil.sum(filter.map(it => it.overlay ?? 0));\n // // console.log('------>!!!!',filter.length, targetCell,where.w, where.h, (where.w * where.h), overlaySum)\n // if (filter.length === where.w * where.h && overlaySum === 0) {\n // targetCellsEmpty.push(targetCell);\n // }\n // }\n // return ArrayUtils.pick(targetCellsEmpty);\n // }\n\n\n export const popPick = <T>(array: T[]): T => {\n const index = Math.floor(Math.random() * array.length);\n return array.splice(index, 1)[0];\n }\n\n export const chancePick = <T>(array: PickChanceType<T>[], config?: {}): T => {\n const totalChance = array.reduce((sum, item) => sum + item.chance, 0);\n let randomValue = Math.random() * totalChance;\n\n for (const item of array) {\n if (randomValue < item.chance) {\n return item.data;\n }\n randomValue -= item.chance;\n }\n return pick(array.map(it => it.data))\n }\n\n export function pick<T>(array: T[], count: number): T[];\n export function pick<T>(array: T[]): T | undefined;\n export function pick<T>(array: T[][]): T[] | undefined;\n export function pick<T>(array: T[], count?: number): T[] | T | undefined {\n if (array.length === 0 && count !== undefined) {\n return [];\n }\n\n if (count === undefined) {\n return array[Math.floor(Math.random() * array.length)];\n }\n\n const result: T[] = [];\n const usedIndices = new Set<number>();\n while (result.length < count && usedIndices.size < array.length) {\n const randomIndex = Math.floor(Math.random() * array.length);\n if (!usedIndices.has(randomIndex)) {\n result.push(array[randomIndex]);\n usedIndices.add(randomIndex);\n }\n }\n return result;\n }\n\n export function maxLength<T>(array?: T[][]): { maxRows: number; maxCols: number, maxRowsCols: number, total: number; } {\n if (!array) {\n return {maxRows: 0, maxCols: 0, maxRowsCols: 0, total: 0};\n }\n const maxRows = array.length;\n const maxCols = Math.max(...array.map(row => row.length), 0);\n return {\n maxRows: maxRows,\n maxCols: maxCols,\n maxRowsCols: Math.max(maxCols, maxRows),\n total: array.reduce((total, row) => total + row.length, 0)\n }\n }\n\n // export const include = <T>(array:T[] | null = []) => {\n //\n // }\n export const toPush = <T>(array: T[] | null = [], ...data: T[]) => {\n return [...(array ?? []), ...data];\n }\n\n export const toRemove = <T>(array: T[] | null = [], ...data: T[]) => {\n return (array ?? []).filter(item => !data.includes(item));\n }\n\n export const toFilterOut = <T>(array: T[] | null = [], predicate: (item: T) => boolean): T[] => {\n return (array ?? []).filter(item => !predicate(item));\n }\n\n export const toFilter = <T>(array: T[] | null = [], predicate: (item: T) => boolean): T[] => {\n return (array ?? []).filter(item => predicate(item));\n }\n\n export const hasAll = <T>(array: T[] | null = [], ...targetArray: T[]): boolean => {\n return targetArray.every(item => (array ?? []).includes(item));\n }\n\n export const has = <T>(array: T[] | null = [], ...targetArray: T[]): boolean => {\n return targetArray.some(item => (array ?? []).includes(item));\n }\n\n export const hasNot = <T>(array: T[] | null = [], ...targetArray: T[]): boolean => {\n return targetArray.some(item => !(array ?? []).includes(item));\n }\n\n export const hasAllNot = <T>(array: T[] | null = [], ...targetArray: T[]): boolean => {\n return targetArray.every(item => !(array ?? []).includes(item));\n }\n\n// \uC5EC\uB7EC \uBC30\uC5F4\uC758 \uAD50\uC9D1\uD569, \uD569\uC9D1\uD569, \uCC28\uC9D1\uD569, \uB300\uCE6D \uCC28\uC9D1\uD569\uC744 \uACC4\uC0B0\uD558\uB294 \uD568\uC218\n export const relation = <T>(...arrays: T[][]): {\n intersection: T[];\n union: T[];\n difference: T[];\n symmetricDifference: T[];\n } => {\n // \uBC30\uC5F4\uC774 \uC5C6\uAC70\uB098 \uBE48 \uACBD\uC6B0 \uCC98\uB9AC\n if (arrays.length === 0) {\n return {\n intersection: [],\n union: [],\n difference: [],\n symmetricDifference: []\n };\n }\n\n // \uBC30\uC5F4\uC744 Set \uBC30\uC5F4\uB85C \uBCC0\uD658 (\uC911\uBCF5 \uC81C\uAC70)\n const sets = arrays.map((arr) => new Set<T>(arr));\n\n // \uAD50\uC9D1\uD569: \uBAA8\uB4E0 \uBC30\uC5F4\uC5D0 \uACF5\uD1B5\uC73C\uB85C \uC874\uC7AC\uD558\uB294 \uC694\uC18C\n // @ts-ignore\n const intersection = [...sets[0]].filter((item) =>\n sets.every((set) => set.has(item))\n );\n // const intersection = [...sets.reduce((acc, set) =>\n // new Set([...acc].filter((item) => set.has(item)))\n // )];\n\n\n // \uD569\uC9D1\uD569: \uBAA8\uB4E0 \uBC30\uC5F4\uC758 \uC694\uC18C\uB97C \uD569\uCE5C \uD6C4 \uC911\uBCF5 \uC81C\uAC70\n // @ts-ignore\n const union = [...new Set(arrays.flat())];\n\n // \uCC28\uC9D1\uD569: \uCCAB \uBC88\uC9F8 \uBC30\uC5F4\uC5D0\uC11C \uB098\uBA38\uC9C0 \uBC30\uC5F4\uC5D0 \uC5C6\uB294 \uC694\uC18C\n // @ts-ignore\n const difference = [...sets[0]].filter((item) =>\n sets.slice(1).every((set) => !set.has(item))\n );\n\n // \uB300\uCE6D \uCC28\uC9D1\uD569: \uAC01 \uBC30\uC5F4\uC5D0\uC11C \uB2E4\uB978 \uBC30\uC5F4\uC5D0 \uC5C6\uB294 \uC694\uC18C\uB4E4\uC758 \uD569\uC9D1\uD569\n const allUniqueElements = new Set<T>();\n for (let i = 0; i < sets.length; i++) {\n const currentSet = sets[i];\n const otherSetsUnion = new Set<T>(\n arrays\n .filter((_, index) => index !== i)\n .flat()\n );\n // @ts-ignore\n const uniqueToCurrent = [...currentSet].filter(\n (item) => !otherSetsUnion.has(item)\n );\n uniqueToCurrent.forEach((item) => allUniqueElements.add(item));\n }\n // @ts-ignore\n const symmetricDifference = [...allUniqueElements];\n\n return {\n intersection,\n union,\n difference,\n symmetricDifference\n };\n };\n}", "import {ValidUtils} from \"./valid\";\n// \uD074\uB798\uC2A4 \uD0C0\uC785 \uC815\uC758\nexport type ClassType<T = any> = abstract new (...args: any[]) => T;\nexport type WithRequiredProperty<Type, Key extends keyof Type> = Type & {\n [Property in Key]-?: Type[Property];\n};\n\nexport type OptionalType<T, K extends keyof T> = Pick<Partial<T>, K> & Omit<T, K>;\nexport type KeysWithValsOfType<T, V> = keyof { [P in keyof T as T[P] extends V ? P : never]: P };\nexport type PropType<T> = {\n [P in keyof T]: T[P];\n};\nexport type ArrayElementType<T> = T extends (infer U)[] ? U : never;\nexport type PickMix<T, M, K extends keyof T> = {\n [P in K]: T[P] & M;\n};\nexport type PickArrayElementMix<T, M, K extends keyof T> = {\n [P in K]: (ArrayElementType<T[P]> & M)[];\n};\nexport type ChangeArrayElement<T, M> = T extends (infer U)[] ? M[] : never;\nexport type ChangeArrayElementMix<T, M> = T extends (infer U)[] ? (U & M)[] : never;\nexport type ChangePickArrayElementMix<T, M, K extends keyof T> = Omit<T, K> & PickArrayElementMix<T, M, K>;\n\n// InstanceType\nexport interface ConstructorType<T> {\n new (...args: any[]): T;\n}\nexport type Method = (...args: any[]) => any; // Function\nexport type MethodKeys<T> = { [K in keyof T]: T[K] extends Function ? K : never }[keyof T];\nexport type NonMethodKeys<T> = { [K in keyof T]: T[K] extends Function ? never : K }[keyof T];\nexport type GenericClassDecorator<T> = (target: T) => void;\n// declare type ClassDecorator = <TFunction extends Function>(target: TFunction) => TFunction | void;\n// export type ReflectField = PropertyDecorator\n// export type ReflectMethod = MethodDecorator\nexport type MethodParameter = (target: Object, propertyKey: string | symbol, parameterIndex: number) => void;\n\ntype Reverse<TupleType extends any[], ReversedTupleType extends any[] = []> = {\n 0: ReversedTupleType;\n 1: TupleType extends [infer Head, ...infer Tail] ? Reverse<Tail, [Head, ...ReversedTupleType]> : never;\n}[TupleType extends [] ? 0 : 1];\n\n//\ntype UnionToIntersection<U> = (U extends unknown ? (arg: U) => 0 : never) extends (arg: infer I) => 0 ? I : never;\n\n/**\n * LastInUnion<1 | 2> = 2.\n */\ntype LastInUnion<U> =\n UnionToIntersection<U extends unknown ? (x: U) => 0 : never> extends (x: infer L) => 0 ? L : never;\n\n/**\n * UnionToTuple<1 | 2> = [1, 2].\n */\nexport type UnionToTuple<U, Last = LastInUnion<U>> = [U] extends [never]\n ? []\n : [...UnionToTuple<Exclude<U, Last>>, Last];\n\nexport type FilterUndefined<T extends unknown[]> = T extends []\n ? []\n : T extends [infer H, ...infer R]\n ? H extends undefined\n ? FilterUndefined<R>\n : [H, ...FilterUndefined<R>]\n : T;\n\nexport type FilterNever<T extends unknown[]> = T extends []\n ? []\n : T extends [infer H, ...infer R]\n ? H extends never\n ? FilterUndefined<R>\n : [H, ...FilterUndefined<R>]\n : T;\n\nexport type Mutable<T> = {\n -readonly [P in keyof T]: T[P];\n};\nexport type ExtractNotNullish<T> = T extends null | undefined ? never : T;\nexport type FilterNullish<T> = T extends [infer E, ...infer Rest]\n ? [ExtractNotNullish<E>, ...FilterNullish<Rest>]\n : T extends (infer E)[]\n ? ExtractNotNullish<E>[]\n : ExtractNotNullish<T>;\n\nexport type ExtractNotFalsy<T> = T extends false ? never : T;\nexport type FilterFalsy<T> = T extends [infer E, ...infer Rest]\n ? [ExtractNotFalsy<E>, ...FilterFalsy<Rest>]\n : T extends (infer E)[]\n ? ExtractNotFalsy<E>[]\n : ExtractNotFalsy<T>;\nexport type FieldType<T, F> = Record<keyof T, F>;\nexport type FieldUnionType<T, F> = {\n [P in keyof T]: T[P] | F;\n};\nexport type FieldReplaceType<T, F extends keyof T, R> = Omit<T, F> & {\n [P in F]: R;\n};\nexport type FieldPartialType<T, F extends keyof T> = Omit<T, F> & {\n [P in F]?: T[P];\n};\nexport type FieldRequiredType<T, F extends keyof T> = Omit<T, F> & {\n [P in F]-?: T[P];\n};\nexport type FieldReadonlyType<T, F extends keyof T> = Omit<T, F> & {\n readonly [P in F]: T[P];\n};\nexport type FieldMutableType<T, F extends keyof T> = Omit<T, F> & {\n -readonly [P in F]: T[P];\n};\n\n\n\nexport type Dictionary<T = any> = Record<string | number, T>;\ntype GetKeys<T> = T extends unknown[]\n ? T extends [] // special case empty tuple => no keys\n ? never\n : '0' extends keyof T // any tuple with at least one element\n ? Exclude<keyof T, keyof []>\n : number // other array\n : keyof T; // not an array\nexport type Stringify<T> = T extends string | number ? `${T}` : never;\nexport type FlattenObjectKeys<T extends Dictionary | any[]> =\n Stringify<GetKeys<T>> extends infer StringKey extends string | number\n ? [StringKey] extends [never]\n ? never\n : StringKey extends keyof T\n ? T[StringKey] extends Dictionary | any[]\n ?\n | StringKey\n | `${StringKey}.${FlattenObjectKeys<T[StringKey]>}`\n | `${StringKey}[${keyof T[StringKey] & number}]`\n | `${StringKey}[${keyof T[StringKey] & number}].${FlattenObjectKeys<T[StringKey][number]>}`\n : StringKey\n : never\n : never;\n\ntype GetType<T, K> = K extends keyof T ? T[K] : K extends `${number}` ? (T extends any[] ? T[number] : never) : never;\nexport type FlattenObjectType<T, Path = Stringify<keyof T>> =\n Stringify<keyof T> extends infer StringKey extends string | number\n ? [StringKey] extends [never]\n ? never\n : Path extends `${infer FirstKey}[${infer Index}].${infer Rest}`\n ? FlattenObjectType<GetType<GetType<T, FirstKey>, Index>, Rest>\n : Path extends `${infer FirstKey}.${infer Rest}`\n ? FlattenObjectType<GetType<T, FirstKey>, Rest>\n : Path extends `${infer FirstKey}[${infer Rest}]`\n ? FlattenObjectType<GetType<T, FirstKey>, Rest>\n : GetType<T, Path>\n : never;\n\nexport type FlattenObject<T extends Dictionary> = {\n [FlattenKey in FlattenObjectKeys<T>]: FlattenObjectType<T, FlattenKey>;\n};\n\nexport type FilterTuple<T extends any[]> = '0' extends keyof T ? never : T;\n\nexport type MaybeArray<T> = T | T[];\nexport type With<T extends MaybeArray<Dictionary>, V extends Dictionary> = T extends (infer U)[] ? Array<U & V> : T & V;\n\nexport type Nullable<T> = T | null;\nexport type Nullish<T> = Nullable<T> | undefined;\nexport type NullableObject<T> = {\n [P in keyof T]: Nullable<T[P]>;\n};\nexport type NullableProperty<T, K extends keyof T> = {\n [P in K]: Nullable<T[P]>;\n};\nexport type NullOrUndefined<T> = null | undefined;\nexport type NotNullOrUndefined<T> = T extends null | undefined ? never : T;\nexport type NonNullable<T> = T extends null | undefined ? never : T;\nexport type NonNullableObject<T> = {\n [P in keyof T]-?: NonNullable<T[P]>;\n};\nexport type NonNullableProperty<T, K extends keyof T> = {\n [P in K]-?: NonNullable<T[P]>;\n};\n\nexport type GroupBy<T extends Dictionary, K extends keyof T> = {\n [P in T[K]]: T[];\n};\n\nexport type InferPromise<T> = T extends Promise<infer U> ? U : never;\n\nexport type JoinKeys<T> = {\n [K in keyof T]: K extends string ? `${K}` | `${K}-${JoinKeys<T[K]>}` : never;\n}[keyof T];\n\nexport type FilteredFirstKeys<T, FIRST extends string> = {\n [K in keyof T as K extends `${FIRST}${string}` ? K : never]: T[K];\n};\nexport type ExcludeFilteredFirstKeys<T, FIRST extends string> = {\n [K in keyof T as K extends `${FIRST}${string}` ? never : K]: T[K];\n};\n\nexport type GetDotPath<T, P extends string> = P extends `${infer K}.${infer R}`\n ? K extends keyof T\n ? GetDotPath<T[K], R>\n : never\n : P extends keyof T\n ? T[P]\n : P extends string\n ? T\n : never;\n\nexport type FlatJoinKey<T, J = '.'> = {\n [P in keyof T as T[P] extends object\n ? // @ts-ignore\n `${P}${J}${keyof FlatJoinDotKey<T[P]>}` | `${P}`\n : // @ts-ignore\n `${P}`]: unknown;\n};\nexport type FlatJoinDotKey<T> = {\n [P in keyof T as T[P] extends object\n ? // @ts-ignore\n `${P}.${keyof FlatJoinDotKey<T[P]>}` | `${P}`\n : // @ts-ignore\n `${P}`]: unknown;\n};\nexport type FlatJoinDotKeyType<T> = keyof FlatJoinDotKey<T>;\nexport type FlatJoinKeyType<T, J> = keyof FlatJoinKey<T, J>;\nexport type FlatJoinDotKeyFieldType<T, D> = FieldType<FlatJoinDotKey<T>,D>;\nexport type FlatJoinDotKeyTypePartial<T, D> = Partial<FieldType<FlatJoinDotKey<T>,D>>;\nexport type FlatJoinDotKeyExcludeStartWithUnderBar<T> = {\n [P in keyof T as T[P] extends any\n ? // @ts-ignore\n P extends `_${string}`\n ? never\n : // @ts-ignore\n `${P}.${keyof FlatJoinDotKeyExcludeStartWithUnderBar<T[P]>}` | `${P}`\n : // @ts-ignore\n `${P}`]: unknown;\n};\nexport type FlatJoinSlashKey<T> = {\n [P in keyof T as T[P] extends object\n ? // @ts-ignore\n `${P}/${keyof FlatJoinDotKey<T[P]>}` | `${P}`\n : // @ts-ignore\n `${P}`]: unknown;\n};\nexport type FlatJoinSlashKeyExcludeStartWithUnderBar<T> = {\n [P in keyof T as T[P] extends any\n ? // @ts-ignore\n P extends `_${string}`\n ? never\n : // @ts-ignore\n `${P}/${keyof FlatJoinSlashKeyExcludeStartWithUnderBar<T[P]>}` | `${P}`\n : // @ts-ignore\n `${P}`]: unknown;\n};\nexport type FlatJoinKeyExcludeStartWith<T, J extends string, E extends string> = {\n [P in keyof T as T[P] extends any\n ? // @ts-ignore\n P extends `${E}${string}`\n ? never\n : // @ts-ignore\n `${P}${J}${keyof FlatJoinSlashKeyExcludeStartWithUnderBar<T[P]>}` | `${P}`\n : // @ts-ignore\n `${P}`]: unknown;\n};\n\n\n// https://amit08255.medium.com/the-most-mind-blowing-thing-ive-learned-in-typescript-930926ce848a\nexport type ParseRoute<T extends string> = T extends `/${infer Segment}/${infer Rest}`\n ? Segment extends `:${infer Param}`\n ? { [K in Param]: string } & ParseRoute<`/${Rest}`>\n : ParseRoute<`/${Rest}`>\n : T extends `/:${infer Param}`\n ? { [K in Param]: string }\n : {}\n// type UserRoute = ParseRoute<'/users/:id/posts/:postId'>\n// type UserRoute = { id: string; postId: string }\n// const user:UserRoute = { id: '1', postId: '2' };\n\n\nexport type ParsePath<T extends string> = T extends `/${infer Segment}/${infer Rest}`\n ? [Segment, ...ParsePath<`/${Rest}`>]\n : T extends `/${infer Segment}`\n ? [Segment]\n : []\n// type ApiRoute = ParsePath<\"/api/users/123\"> // [\"api\", \"users\", \"123\"]\n// type InvalidRoute = ParsePath<\"missing-slash\"> // []\n\n\n\nexport type StringValue<T> = {\n [K in keyof T]: T[K] extends object ? StringValue<T[K]> : string;\n};\n\n\n// index\nexport interface ConstructorType<T> {\n new (...args: any[]): T;\n}\n\n// infer\uC640 \uC870\uAC74\uBD80 \uD0C0\uC785\uC73C\uB85C \uD749\uB0B4\uB0B4\uAE30\n// \uAC00\uB054 \"\uC0C1\uC704 \uD0C0\uC785\"\uC73C\uB85C \uC81C\uC57D\uC744 \uB450\uACE0 \uC2F6\uC744 \uB54C\uB294 \uC870\uAC74\uBD80 \uD0C0\uC785\uC744 \uC501\uB2C8\uB2E4:\n// let fn: Super<HttpResponseError<any>>;\n// fn \uC740 HttpResponseError<any> \uC758 \uC0C1\uC704 \uD0C0\uC785 \uD30C\uB77C\uBBF8\uD130\uB3C4 \uBC1B\uC744 \uC218 \uC788\uC74C\n// type Super<T> = T extends HttpResponseError<infer U> ? HttpResponseError<any> : never;\nexport type Super<T> = (arg: T) => void;\n\n// export type GenericClassDecorator<T> = (target: T) => void;\n// export type MethodParameter = (target: Object, propertyKey: string | symbol, parameterIndex: number) => void;\n// export type ExtractNotFalsy<T> = T extends false ? never : T;\n// export type FilterFalsy<T> = T extends [infer E, ...infer Rest]\n// ? [ExtractNotFalsy<E>, ...FilterFalsy<Rest>]\n// : T extends (infer E)[]\n// ? ExtractNotFalsy<E>[]\n// : ExtractNotFalsy<T>;\n//\n// export type Mutable<T> = {\n// -readonly [P in keyof T]: T[P];\n// };\n// NonNullable\nexport type MethodOnlyFieldPostFix<T, S extends string> = {\n [key in keyof T as `${string & key}${S}`]: T[key] extends (...args: any[]) => any ? T[key] : never;\n};\nexport type MethodOnlyFieldPerFix<T, S extends string> = {\n [key in keyof T as `${S}${string & key}`]: T[key] extends (...args: any[]) => any ? T[key] : never;\n};\n// export const isDefined = <T>(value: T | undefined | null): value is T => value !== undefined && value !== null;\n// export const isDefined = <T>(value: T | undefined | null): value is NonNullable<T> => value !== undefined && value !== null;\n// export const isDefined = <T>(value: T | undefined | null): value is T => value !== undefined && value !== null;\nexport const isDefined = ValidUtils.isDefined\n/*\ndeclare type ClassDecorator = <TFunction extends Function>(target: TFunction) => TFunction | void;\ndeclare type PropertyDecorator = (target: Object, propertyKey: string | symbol) => void;\ndeclare type MethodDecorator = <T>(target: Object, propertyKey: string | symbol, descriptor: TypedPropertyDescriptor<T>) => TypedPropertyDescriptor<T> | void;\ndeclare type ParameterDecorator = (target: Object, propertyKey: string | symbol, parameterIndex: number) => void;\n */\n\ndeclare global {\n namespace Reflect {\n function metadata(metadataKey: any, target: Object, propertyKey?: string | symbol): any;\n function getMetadata(metadataKey: any, target: Object, propertyKey?: string | symbol): any;\n function defineMetadata(metadataKey: any, value: any, target: Object, propertyKey?: string | symbol): void;\n function getOwnMetadata(metadataKey: any, target: Object, propertyKey?: string | symbol): any;\n function getMetadataKeys(target: Object): any[];\n }\n}\nexport {};\n", "/**\n * ObjectPathParser - JavaScript \uACBD\uB85C \uD45C\uD604\uC2DD\uC744 \uD30C\uC2F1\uD558\uACE0 Optional Chaining\uC73C\uB85C \uBCC0\uD658\uD558\uB294 \uD30C\uC11C\n * \n * \uD2B8\uB9AC \uAD6C\uC870\uC758 \uD1A0\uD070\uC744 \uC0DD\uC131\uD558\uC5EC \uACC4\uCE35\uC801 \uD45C\uD604\uC2DD\uC744 \uC9C0\uC6D0\n * \n * \uC0AC\uC6A9\uBC95:\n * const parser = new ObjectPathParser('this.obj.func(a.b[0])');\n * const root = parser.getRoot();\n * root.children.forEach(child => console.log(child.type));\n */\n\n// --- Token Types ---\nexport enum TokenType {\n // Leaf tokens\n IDENTIFIER = 'identifier',\n STRING = 'string',\n NUMBER = 'number',\n TEMPLATE_LITERAL = 'template_literal',\n OPERATOR = 'operator',\n WHITESPACE = 'whitespace',\n \n // Structural tokens (can have children)\n MEMBER_EXPRESSION = 'member_expression',\n PROPERTY_ACCESS = 'property_access',\n BRACKET_ACCESS = 'bracket_access',\n FUNCTION_CALL = 'function_call',\n PARENTHESIZED = 'parenthesized',\n OBJECT_LITERAL = 'object_literal',\n ARRAY_LITERAL = 'array_literal',\n TERNARY = 'ternary',\n BINARY = 'binary',\n \n // Root\n ROOT = 'root',\n EOF = 'eof',\n}\n\n// --- Base Token Class ---\nexport class Token {\n public type: TokenType;\n public value: string;\n public start: number;\n public end: number;\n public parent: Token | null = null;\n public children: Token[] = [];\n public isOptional: boolean = false;\n // \uC5F0\uC0B0\uC790 \uC8FC\uBCC0 \uACF5\uBC31 \uBCF4\uC874\uC6A9\n public leftSpace: string = '';\n public rightSpace: string = '';\n\n constructor(type: TokenType, value: string, start: number, end: number) {\n this.type = type;\n this.value = value;\n this.start = start;\n this.end = end;\n }\n\n // --- Child management ---\n addChild(child: Token): this {\n child.parent = this;\n this.children.push(child);\n return this;\n }\n\n getChildren(): Token[] {\n return this.children;\n }\n\n hasChildren(): boolean {\n return this.children.length > 0;\n }\n\n getParent(): Token | null {\n return this.parent;\n }\n\n // --- Type checks ---\n isIdentifier(): boolean { return this.type === TokenType.IDENTIFIER; }\n isString(): boolean { return this.type === TokenType.STRING; }\n isNumber(): boolean { return this.type === TokenType.NUMBER; }\n isTemplateLiteral(): boolean { return this.type === TokenType.TEMPLATE_LITERAL; }\n isOperator(): boolean { return this.type === TokenType.OPERATOR; }\n isWhitespace(): boolean { return this.type === TokenType.WHITESPACE; }\n isMemberExpression(): boolean { return this.type === TokenType.MEMBER_EXPRESSION; }\n isPropertyAccess(): boolean { return this.type === TokenType.PROPERTY_ACCESS; }\n isBracketAccess(): boolean { return this.type === TokenType.BRACKET_ACCESS; }\n isFunctionCall(): boolean { return this.type === TokenType.FUNCTION_CALL; }\n isParenthesized(): boolean { return this.type === TokenType.PARENTHESIZED; }\n isObjectLiteral(): boolean { return this.type === TokenType.OBJECT_LITERAL; }\n isArrayLiteral(): boolean { return this.type === TokenType.ARRAY_LITERAL; }\n isTernary(): boolean { return this.type === TokenType.TERNARY; }\n isBinary(): boolean { return this.type === TokenType.BINARY; }\n isRoot(): boolean { return this.type === TokenType.ROOT; }\n isEOF(): boolean { return this.type === TokenType.EOF; }\n\n // --- Keyword check for identifiers ---\n isKeyword(): boolean {\n if (this.type !== TokenType.IDENTIFIER) return false;\n return ['true', 'false', 'null', 'undefined', 'this', 'window', 'document'].includes(this.value);\n }\n\n // --- Operator checks ---\n isLogicalOperator(): boolean {\n return this.type === TokenType.OPERATOR && (this.value === '||' || this.value === '&&');\n }\n\n isNullishOperator(): boolean {\n return this.type === TokenType.OPERATOR && this.value === '??';\n }\n\n isComparisonOperator(): boolean {\n return this.type === TokenType.OPERATOR && \n ['===', '!==', '==', '!=', '<', '>', '<=', '>='].includes(this.value);\n }\n\n isArithmeticOperator(): boolean {\n return this.type === TokenType.OPERATOR && ['+', '-', '*', '/', '%'].includes(this.value);\n }\n\n // --- Stringify ---\n stringify(): string {\n if (this.children.length === 0) {\n return this.value;\n }\n return this.children.map(c => c.stringify()).join('');\n }\n\n // --- Optional chain conversion ---\n toOptionalChain(isFirst: boolean = false): string {\n switch (this.type) {\n case TokenType.PROPERTY_ACCESS:\n return `?.${this.children.map(c => c.toOptionalChain()).join('')}`;\n \n case TokenType.BRACKET_ACCESS:\n // \uCCAB \uBC88\uC9F8 \uC694\uC18C\uC778 \uACBD\uC6B0 ?. \uCD94\uAC00\uD558\uC9C0 \uC54A\uC74C\n if (isFirst) {\n return `[${this.children.map(c => c.toOptionalChain()).join('')}]`;\n }\n return `?.[${this.children.map(c => c.toOptionalChain()).join('')}]`;\n \n case TokenType.FUNCTION_CALL:\n return `?.(${this.children.map(c => c.toOptionalChain()).join('')})`;\n \n case TokenType.MEMBER_EXPRESSION:\n if (this.children.length === 0) return this.value;\n let result = '';\n for (let i = 0; i < this.children.length; i++) {\n const child = this.children[i];\n // \uCCAB \uBC88\uC9F8 \uC790\uC2DD\uC5D0\uAC8C isFirst=true \uC804\uB2EC\n result += child.toOptionalChain(i === 0);\n }\n return result;\n\n case TokenType.PARENTHESIZED:\n // isOptional\uC774 \uC124\uC815\uB418\uC5B4 \uC788\uC73C\uBA74 ?. \uC811\uADFC\uC73C\uB85C \uCC98\uB9AC\n if (this.isOptional) {\n return `?.(${this.children.map(c => c.toOptionalChain()).join('')})`;\n }\n // \uBD80\uBAA8\uAC00 MEMBER_EXPRESSION\uC774\uACE0 \uCCAB \uBC88\uC9F8 \uC790\uC2DD\uC774 \uC544\uB2C8\uBA74 ?. \uCD94\uAC00\n if (this.parent?.type === TokenType.MEMBER_EXPRESSION && !isFirst) {\n return `?.(${this.children.map(c => c.toOptionalChain()).join('')})`;\n }\n return `(${this.children.map(c => c.toOptionalChain()).join('')})`;\n \n case TokenType.TERNARY:\n // children: [condition, trueBranch, falseBranch]\n if (this.children.length >= 3) {\n return `${this.children[0].toOptionalChain()} ? ${this.children[1].toOptionalChain()} : ${this.children[2].toOptionalChain()}`;\n }\n return this.stringify();\n \n case TokenType.BINARY:\n // children: [left, right], value contains operator\n if (this.children.length >= 2) {\n const op = this.value;\n // \uC6D0\uBCF8 \uACF5\uBC31 \uBCF4\uC874\n const leftSp = this.leftSpace;\n const rightSp = this.rightSpace;\n return `${this.children[0].toOptionalChain()}${leftSp}${op}${rightSp}${this.children[1].toOptionalChain()}`;\n }\n return this.stringify();\n \n case TokenType.ROOT:\n return this.children.map(c => c.toOptionalChain()).join('');\n \n case TokenType.OBJECT_LITERAL:\n case TokenType.ARRAY_LITERAL:\n case TokenType.STRING:\n case TokenType.NUMBER:\n case TokenType.TEMPLATE_LITERAL:\n return this.value;\n \n case TokenType.OPERATOR:\n // Unary operator with children (e.g., !expr)\n if (this.children.length > 0) {\n return `${this.value}${this.children.map(c => c.toOptionalChain()).join('')}`;\n }\n return this.value;\n \n default:\n return this.value;\n }\n }\n\n // --- Tree traversal ---\n walk(callback: (token: Token, depth: number) => void, depth: number = 0): void {\n callback(this, depth);\n for (const child of this.children) {\n child.walk(callback, depth + 1);\n }\n }\n\n find(predicate: (token: Token) => boolean): Token | null {\n if (predicate(this)) return this;\n for (const child of this.children) {\n const found = child.find(predicate);\n if (found) return found;\n }\n return null;\n }\n\n findAll(predicate: (token: Token) => boolean): Token[] {\n const results: Token[] = [];\n this.walk((token) => {\n if (predicate(token)) results.push(token);\n });\n return results;\n }\n}\n\n\n// --- ObjectPathParser Class ---\nexport class ObjectPathParser {\n private input: string;\n private pos: number = 0;\n private root: Token;\n\n constructor(input: string = '') {\n this.input = input;\n this.root = new Token(TokenType.ROOT, '', 0, input.length);\n if (input) {\n this.parse();\n }\n }\n\n // --- Getters ---\n getInput(): string {\n return this.input;\n }\n\n getRoot(): Token {\n return this.root;\n }\n\n getTokens(): Token[] {\n return this.root.children;\n }\n\n // --- Flat token list (for backward compatibility) ---\n getFlatTokens(): Token[] {\n const tokens: Token[] = [];\n this.root.walk((token) => {\n if (token.type !== TokenType.ROOT) {\n tokens.push(token);\n }\n });\n return tokens;\n }\n\n // --- Helper methods ---\n isFunctionScript(): boolean {\n return this.input.trim().startsWith('function');\n }\n\n isArrowFunctionScript(): boolean {\n return /^\\s*\\([^)]*\\)\\s*=>/.test(this.input);\n }\n\n isObjectLiteralInput(): boolean {\n const trimmed = this.input.trim();\n return trimmed.startsWith('{') && trimmed.endsWith('}');\n }\n\n\n // --- Tokenizer helpers ---\n private peek(offset: number = 0): string {\n return this.input[this.pos + offset] || '';\n }\n\n private advance(): string {\n return this.input[this.pos++] || '';\n }\n\n private isEOF(): boolean {\n return this.pos >= this.input.length;\n }\n\n private skipWhitespace(): void {\n while (!this.isEOF() && /\\s/.test(this.peek())) {\n this.advance();\n }\n }\n\n // --- Main parse method ---\n private parse(): void {\n this.pos = 0;\n this.root = new Token(TokenType.ROOT, '', 0, this.input.length);\n \n while (!this.isEOF()) {\n this.skipWhitespace();\n if (this.isEOF()) break;\n \n const token = this.parseExpression();\n if (token) {\n this.root.addChild(token);\n }\n }\n }\n\n private parseExpression(): Token | null {\n this.skipWhitespace();\n if (this.isEOF()) return null;\n\n // Check for ternary operator at top level\n const ternary = this.tryParseTernary();\n if (ternary) return ternary;\n\n // Check for binary operators\n const binary = this.tryParseBinary();\n if (binary) return binary;\n\n // Parse primary expression (member expression, literal, etc.)\n return this.parsePrimaryExpression();\n }\n\n\n private parsePrimaryExpression(): Token | null {\n this.skipWhitespace();\n if (this.isEOF()) return null;\n\n const start = this.pos;\n const char = this.peek();\n\n // String literal\n if (char === \"'\" || char === '\"') {\n return this.parseString(char);\n }\n\n // Template literal\n if (char === '`') {\n return this.parseTemplateLiteral();\n }\n\n // Object literal\n if (char === '{') {\n return this.parseObjectLiteral();\n }\n\n // Array literal or bracket access at start\n if (char === '[') {\n return this.parseArrayOrBracket();\n }\n\n // Parenthesized expression\n if (char === '(') {\n return this.parseParenthesized();\n }\n\n // Number\n if (/\\d/.test(char)) {\n return this.parseNumber();\n }\n\n // Identifier (start of member expression)\n if (/[a-zA-Z_$]/.test(char)) {\n return this.parseMemberExpression();\n }\n\n // Unary NOT operator (!)\n if (char === '!') {\n return this.parseUnaryNot();\n }\n\n // Operator\n if (this.isOperatorChar(char)) {\n return this.parseOperator();\n }\n\n // Unknown - skip\n this.advance();\n return null;\n }\n\n // Parse unary NOT operator (!expr)\n private parseUnaryNot(): Token {\n const start = this.pos;\n this.advance(); // consume !\n \n this.skipWhitespace();\n \n // Parse the expression after !\n const expr = this.parsePrimaryExpression();\n if (expr) {\n // Create a unary token that wraps the expression\n const unary = new Token(TokenType.OPERATOR, '!', start, this.pos);\n unary.addChild(expr);\n return unary;\n }\n \n return new Token(TokenType.OPERATOR, '!', start, this.pos);\n }\n\n\n private parseMemberExpression(): Token {\n const start = this.pos;\n const memberExpr = new Token(TokenType.MEMBER_EXPRESSION, '', start, start);\n\n // Parse the base identifier\n const identifier = this.parseIdentifier();\n memberExpr.addChild(identifier);\n\n // Parse chain of accesses\n while (!this.isEOF()) {\n const char = this.peek();\n\n // Optional chaining: ?.\n if (char === '?' && this.peek(1) === '.') {\n this.advance(); this.advance(); // consume ?.\n \n if (this.peek() === '[') {\n // ?.[\n const bracket = this.parseBracketAccess(true);\n memberExpr.addChild(bracket);\n } else if (this.peek() === '(') {\n // ?.(\n const funcCall = this.parseFunctionCall(true);\n memberExpr.addChild(funcCall);\n } else {\n // ?.property\n const prop = this.parsePropertyAccess(true);\n memberExpr.addChild(prop);\n }\n }\n // Regular dot access\n else if (char === '.') {\n this.advance(); // consume .\n // Check if next is parenthesis (e.g., a.(b).c)\n if (this.peek() === '(') {\n const paren = this.parseParenthesizedAccess(false);\n memberExpr.addChild(paren);\n } else {\n const prop = this.parsePropertyAccess(false);\n memberExpr.addChild(prop);\n }\n }\n // Bracket access\n else if (char === '[') {\n const bracket = this.parseBracketAccess(false);\n memberExpr.addChild(bracket);\n }\n // Function call\n else if (char === '(') {\n const funcCall = this.parseFunctionCall(false);\n memberExpr.addChild(funcCall);\n }\n else {\n break;\n }\n }\n\n memberExpr.end = this.pos;\n memberExpr.value = this.input.substring(start, this.pos);\n return memberExpr;\n }\n\n // \uAD04\uD638\uB85C \uAC10\uC2F8\uC9C4 \uC18D\uC131 \uC811\uADFC (e.g., a.(b).c)\n private parseParenthesizedAccess(isOptional: boolean): Token {\n const start = this.pos;\n this.advance(); // consume (\n \n const paren = new Token(TokenType.PARENTHESIZED, '', start, start);\n paren.isOptional = isOptional;\n \n let depth = 1;\n let content = '';\n \n while (!this.isEOF() && depth > 0) {\n const char = this.peek();\n if (char === '(') depth++;\n else if (char === ')') {\n depth--;\n if (depth === 0) break;\n }\n content += this.advance();\n }\n \n if (content.trim()) {\n const innerParser = new ObjectPathParser(content);\n for (const child of innerParser.getTokens()) {\n paren.addChild(child);\n }\n }\n \n if (this.peek() === ')') this.advance(); // consume )\n \n paren.end = this.pos;\n paren.value = this.input.substring(start, this.pos);\n return paren;\n }\n\n\n private parseIdentifier(): Token {\n const start = this.pos;\n let value = '';\n while (!this.isEOF() && /[a-zA-Z0-9_$]/.test(this.peek())) {\n value += this.advance();\n }\n return new Token(TokenType.IDENTIFIER, value, start, this.pos);\n }\n\n private parsePropertyAccess(isOptional: boolean): Token {\n const start = this.pos;\n const prop = new Token(TokenType.PROPERTY_ACCESS, '', start, start);\n prop.isOptional = isOptional;\n \n const identifier = this.parseIdentifier();\n prop.addChild(identifier);\n \n prop.end = this.pos;\n prop.value = this.input.substring(start, this.pos);\n return prop;\n }\n\n private parseBracketAccess(isOptional: boolean): Token {\n const start = this.pos;\n this.advance(); // consume [\n \n const bracket = new Token(TokenType.BRACKET_ACCESS, '', start, start);\n bracket.isOptional = isOptional;\n \n // Parse content inside brackets\n const contentStart = this.pos;\n let depth = 1;\n let content = '';\n \n while (!this.isEOF() && depth > 0) {\n const char = this.peek();\n if (char === '[') depth++;\n else if (char === ']') {\n depth--;\n if (depth === 0) break;\n }\n content += this.advance();\n }\n \n // Parse the content as expression\n if (content.trim()) {\n const innerParser = new ObjectPathParser(content);\n for (const child of innerParser.getTokens()) {\n bracket.addChild(child);\n }\n }\n \n if (this.peek() === ']') this.advance(); // consume ]\n \n bracket.end = this.pos;\n bracket.value = this.input.substring(start, this.pos);\n return bracket;\n }\n\n\n private parseFunctionCall(isOptional: boolean): Token {\n const start = this.pos;\n this.advance(); // consume (\n \n const funcCall = new Token(TokenType.FUNCTION_CALL, '', start, start);\n funcCall.isOptional = isOptional;\n \n // Parse arguments\n let depth = 1;\n let content = '';\n \n while (!this.isEOF() && depth > 0) {\n const char = this.peek();\n if (char === '(') depth++;\n else if (char === ')') {\n depth--;\n if (depth === 0) break;\n }\n content += this.advance();\n }\n \n // Parse arguments as expressions\n if (content.trim()) {\n const innerParser = new ObjectPathParser(content);\n for (const child of innerParser.getTokens()) {\n funcCall.addChild(child);\n }\n }\n \n if (this.peek() === ')') this.advance(); // consume )\n \n funcCall.end = this.pos;\n funcCall.value = this.input.substring(start, this.pos);\n return funcCall;\n }\n\n private parseParenthesized(): Token {\n const start = this.pos;\n this.advance(); // consume (\n \n const paren = new Token(TokenType.PARENTHESIZED, '', start, start);\n \n let depth = 1;\n let content = '';\n \n while (!this.isEOF() && depth > 0) {\n const char = this.peek();\n if (char === '(') depth++;\n else if (char === ')') {\n depth--;\n if (depth === 0) break;\n }\n content += this.advance();\n }\n \n if (content.trim()) {\n const innerParser = new ObjectPathParser(content);\n for (const child of innerParser.getTokens()) {\n paren.addChild(child);\n }\n }\n \n if (this.peek() === ')') this.advance(); // consume )\n \n paren.end = this.pos;\n paren.value = this.input.substring(start, this.pos);\n \n // Check if followed by member access (e.g., (expr).prop or (expr)[0] or (expr)?.prop)\n if (this.peek() === '.' || this.peek() === '[' || (this.peek() === '?' && this.peek(1) === '.')) {\n const memberExpr = new Token(TokenType.MEMBER_EXPRESSION, '', start, start);\n memberExpr.addChild(paren);\n \n while (!this.isEOF()) {\n const char = this.peek();\n // Optional chaining: ?.\n if (char === '?' && this.peek(1) === '.') {\n this.advance(); this.advance(); // consume ?.\n if (this.peek() === '[') {\n const bracket = this.parseBracketAccess(true);\n memberExpr.addChild(bracket);\n } else if (this.peek() === '(') {\n const funcCall = this.parseFunctionCall(true);\n memberExpr.addChild(funcCall);\n } else {\n const prop = this.parsePropertyAccess(true);\n memberExpr.addChild(prop);\n }\n } else if (char === '.') {\n this.advance(); // consume .\n if (this.peek() === '(') {\n const parenAccess = this.parseParenthesizedAccess(false);\n memberExpr.addChild(parenAccess);\n } else {\n const prop = this.parsePropertyAccess(false);\n memberExpr.addChild(prop);\n }\n } else if (char === '[') {\n const bracket = this.parseBracketAccess(false);\n memberExpr.addChild(bracket);\n } else {\n break;\n }\n }\n \n memberExpr.end = this.pos;\n memberExpr.value = this.input.substring(start, this.pos);\n return memberExpr;\n }\n \n return paren;\n }\n\n\n private parseString(quote: string): Token {\n const start = this.pos;\n let value = this.advance(); // opening quote\n \n while (!this.isEOF() && this.peek() !== quote) {\n if (this.peek() === '\\\\') {\n value += this.advance();\n if (!this.isEOF()) value += this.advance();\n } else {\n value += this.advance();\n }\n }\n \n if (!this.isEOF()) value += this.advance(); // closing quote\n \n return new Token(TokenType.STRING, value, start, this.pos);\n }\n\n private parseTemplateLiteral(): Token {\n const start = this.pos;\n let value = this.advance(); // opening `\n let depth = 0;\n \n while (!this.isEOF()) {\n const char = this.peek();\n \n if (char === '`' && depth === 0) {\n value += this.advance();\n break;\n }\n \n // Handle ${...} expressions - process them for optional chaining\n if (char === '$' && this.peek(1) === '{') {\n value += this.advance(); // $\n value += this.advance(); // {\n depth++;\n \n // Collect the expression inside ${...}\n let exprContent = '';\n let exprDepth = 1;\n while (!this.isEOF() && exprDepth > 0) {\n const c = this.peek();\n if (c === '{') exprDepth++;\n else if (c === '}') {\n exprDepth--;\n if (exprDepth === 0) break;\n }\n exprContent += this.advance();\n }\n \n // Process the expression for optional chaining\n if (exprContent.trim()) {\n const innerParser = new ObjectPathParser(exprContent);\n value += innerParser.toOptionalChainPath();\n }\n \n if (this.peek() === '}') {\n value += this.advance(); // }\n depth--;\n }\n continue;\n }\n \n if (char === '\\\\') {\n value += this.advance();\n if (!this.isEOF()) value += this.advance();\n } else {\n value += this.advance();\n }\n }\n \n return new Token(TokenType.TEMPLATE_LITERAL, value, start, this.pos);\n }\n\n private parseNumber(): Token {\n const start = this.pos;\n let value = '';\n while (!this.isEOF() && /[\\d.]/.test(this.peek())) {\n value += this.advance();\n }\n return new Token(TokenType.NUMBER, value, start, this.pos);\n }\n\n\n private parseObjectLiteral(): Token {\n const start = this.pos;\n this.advance(); // consume {\n \n let depth = 1;\n let content = '{';\n \n while (!this.isEOF() && depth > 0) {\n const char = this.peek();\n if (char === '{') depth++;\n else if (char === '}') depth--;\n content += this.advance();\n }\n \n return new Token(TokenType.OBJECT_LITERAL, content, start, this.pos);\n }\n\n private parseArrayOrBracket(): Token {\n const start = this.pos;\n this.advance(); // consume [\n \n let depth = 1;\n let content = '';\n \n while (!this.isEOF() && depth > 0) {\n const char = this.peek();\n if (char === '[') depth++;\n else if (char === ']') {\n depth--;\n if (depth === 0) break;\n }\n content += this.advance();\n }\n \n if (this.peek() === ']') this.advance();\n \n // Check if this is followed by member access (then it's bracket access at start)\n if (this.peek() === '.' || this.peek() === '[') {\n const bracket = new Token(TokenType.BRACKET_ACCESS, `[${content}]`, start, this.pos);\n if (content.trim()) {\n const innerParser = new ObjectPathParser(content);\n for (const child of innerParser.getTokens()) {\n bracket.addChild(child);\n }\n }\n \n // Continue parsing as member expression\n const memberExpr = new Token(TokenType.MEMBER_EXPRESSION, '', start, start);\n memberExpr.addChild(bracket);\n \n while (!this.isEOF()) {\n const char = this.peek();\n if (char === '.') {\n this.advance();\n memberExpr.addChild(this.parsePropertyAccess(false));\n } else if (char === '[') {\n memberExpr.addChild(this.parseBracketAccess(false));\n } else {\n break;\n }\n }\n \n memberExpr.end = this.pos;\n memberExpr.value = this.input.substring(start, this.pos);\n return memberExpr;\n }\n \n // Otherwise it's an array literal\n return new Token(TokenType.ARRAY_LITERAL, `[${content}]`, start, this.pos);\n }\n\n\n private isOperatorChar(char: string): boolean {\n return ['+', '-', '*', '/', '%', '=', '!', '<', '>', '&', '|', '?'].includes(char);\n }\n\n private parseOperator(): Token {\n const start = this.pos;\n let value = this.advance();\n \n const next = this.peek();\n // Multi-char operators\n if ((value === '=' || value === '!' || value === '<' || value === '>') && next === '=') {\n value += this.advance();\n if (this.peek() === '=') value += this.advance();\n } else if ((value === '&' && next === '&') || (value === '|' && next === '|')) {\n value += this.advance();\n } else if (value === '?' && next === '?') {\n value += this.advance();\n }\n \n return new Token(TokenType.OPERATOR, value, start, this.pos);\n }\n\n private tryParseTernary(): Token | null {\n // Look ahead for ternary pattern: expr ? expr : expr\n const savedPos = this.pos;\n const remaining = this.input.substring(this.pos);\n \n // Find ternary operator at depth 0, respecting string literals\n let depth = 0;\n let inString = false;\n let stringChar = '';\n let questionIdx = -1;\n let colonIdx = -1;\n \n for (let i = 0; i < remaining.length; i++) {\n const char = remaining[i];\n const prevChar = i > 0 ? remaining[i - 1] : '';\n \n // Track string state (handle escape characters)\n if ((char === '\"' || char === \"'\" || char === '`') && prevChar !== '\\\\') {\n if (!inString) {\n inString = true;\n stringChar = char;\n } else if (char === stringChar) {\n inString = false;\n stringChar = '';\n }\n }\n \n if (inString) continue;\n \n // Track depth for parentheses, brackets, braces\n if (char === '(' || char === '[' || char === '{') depth++;\n else if (char === ')' || char === ']' || char === '}') depth--;\n \n // Find ternary ? at depth 0\n if (depth === 0 && char === '?') {\n const nextChar = remaining[i + 1] || '';\n // Skip optional chaining (?.) and nullish coalescing (??)\n if (nextChar === '.' || nextChar === '?') continue;\n // Ternary ? should be followed by whitespace or expression\n questionIdx = i;\n }\n \n // Find ternary : at depth 0 (only after finding ?)\n if (depth === 0 && char === ':' && questionIdx >= 0 && colonIdx < 0) {\n colonIdx = i;\n break;\n }\n }\n \n // Not a ternary expression\n if (questionIdx < 0 || colonIdx < 0) return null;\n \n const condStr = remaining.substring(0, questionIdx).trim();\n const trueStr = remaining.substring(questionIdx + 1, colonIdx).trim();\n const falseStr = remaining.substring(colonIdx + 1).trim();\n \n if (!condStr || !trueStr || !falseStr) return null;\n \n const ternary = new Token(TokenType.TERNARY, remaining, savedPos, savedPos + remaining.length);\n \n const condParser = new ObjectPathParser(condStr);\n const trueParser = new ObjectPathParser(trueStr);\n const falseParser = new ObjectPathParser(falseStr);\n \n for (const child of condParser.getTokens()) ternary.addChild(child);\n for (const child of trueParser.getTokens()) ternary.addChild(child);\n for (const child of falseParser.getTokens()) ternary.addChild(child);\n \n this.pos = this.input.length; // consume all\n return ternary;\n }\n\n\n private tryParseBinary(): Token | null {\n // Look for binary operators at top level\n const remaining = this.input.substring(this.pos);\n \n // Check operators in order of precedence (lowest to highest)\n // This ensures we parse correctly: a < b - c => a < (b - c), not (a < b) - c\n const operatorGroups = [\n ['||'], // Logical OR (lowest precedence)\n ['&&'], // Logical AND\n ['??'], // Nullish coalescing\n ['<', '>', '<=', '>='], // Comparison\n ['===', '!==', '==', '!='], // Equality\n ['+', '-'], // Addition/Subtraction\n ['*', '/', '%'] // Multiplication/Division (highest precedence)\n ];\n \n // Search from lowest to highest precedence\n for (const operators of operatorGroups) {\n for (const op of operators) {\n let depth = 0;\n let inString = false;\n let stringChar = '';\n let lastMatchIndex = -1;\n \n // Find the LAST occurrence of this operator at depth 0 (right-to-left for left-associative)\n for (let i = 0; i < remaining.length - op.length + 1; i++) {\n const char = remaining[i];\n \n // Track string state\n if ((char === '\"' || char === \"'\" || char === '`') && (i === 0 || remaining[i-1] !== '\\\\')) {\n if (!inString) {\n inString = true;\n stringChar = char;\n } else if (char === stringChar) {\n inString = false;\n }\n }\n \n if (inString) continue;\n \n // Track depth\n if (char === '(' || char === '[' || char === '{') depth++;\n else if (char === ')' || char === ']' || char === '}') depth--;\n \n // Check for operator at depth 0\n if (depth === 0 && remaining.substring(i, i + op.length) === op) {\n // Make sure it's not part of optional chaining\n if (op === '?' && remaining[i + 1] === '.') continue;\n \n // For - operator, make sure it's not a negative number\n if (op === '-') {\n // Look back to find the last non-whitespace character\n let lastNonSpace = '';\n for (let j = i - 1; j >= 0; j--) {\n if (remaining[j].trim()) {\n lastNonSpace = remaining[j];\n break;\n }\n }\n // Skip if it looks like a negative number (after operator, comma, or opening bracket/paren, or at start)\n if (!lastNonSpace || /[+\\-*\\/%=<>!&|,(\\[]/.test(lastNonSpace)) {\n continue;\n }\n }\n \n // For comparison/equality operators, make sure we're not matching part of a longer operator\n if (['<', '>', '=', '!'].includes(op)) {\n const nextChar = remaining[i + op.length] || '';\n if (nextChar === '=') continue; // Skip < if it's part of <=\n }\n \n lastMatchIndex = i;\n }\n }\n \n // If we found a match, split there\n if (lastMatchIndex >= 0) {\n const i = lastMatchIndex;\n const leftRaw = remaining.substring(0, i);\n const rightRaw = remaining.substring(i + op.length);\n const leftStr = leftRaw.trim();\n const rightStr = rightRaw.trim();\n \n if (leftStr && rightStr) {\n const binary = new Token(TokenType.BINARY, op, this.pos, this.pos + remaining.length);\n \n // \uC5F0\uC0B0\uC790 \uC8FC\uBCC0 \uACF5\uBC31 \uBCF4\uC874\n const leftTrailingSpace = leftRaw.substring(leftStr.length);\n const rightLeadingSpace = rightRaw.substring(0, rightRaw.length - rightRaw.trimStart().length);\n binary.leftSpace = leftTrailingSpace;\n binary.rightSpace = rightLeadingSpace;\n \n const leftParser = new ObjectPathParser(leftStr);\n const rightParser = new ObjectPathParser(rightStr);\n \n // Binary token should have exactly 2 children: left and right\n // Wrap the parsed results in containers that preserve the original structure\n const leftContainer = new Token(TokenType.ROOT, leftStr, 0, leftStr.length);\n for (const child of leftParser.getTokens()) leftContainer.addChild(child);\n binary.addChild(leftContainer);\n \n const rightContainer = new Token(TokenType.ROOT, rightStr, 0, rightStr.length);\n for (const child of rightParser.getTokens()) rightContainer.addChild(child);\n binary.addChild(rightContainer);\n \n this.pos = this.input.length;\n return binary;\n }\n }\n }\n }\n \n return null;\n }\n\n\n // --- Main conversion method ---\n toOptionalChainPath(): string {\n if (!this.input) return '';\n \n // \uAC1D\uCCB4 \uB9AC\uD130\uB7F4\uC740 \uBCC0\uD658\uD558\uC9C0 \uC54A\uC74C\n if (this.isObjectLiteralInput()) return this.input;\n \n // \uD568\uC218 \uC2A4\uD06C\uB9BD\uD2B8\uB294 \uBCC0\uD658\uD558\uC9C0 \uC54A\uC74C\n if (this.isFunctionScript() || this.isArrowFunctionScript()) return this.input;\n \n return this.root.toOptionalChain();\n }\n\n removeOptionalChainOperator(): string {\n if (!this.input) return '';\n return this.input.replace(/\\?\\./g, '.').replace(/\\.\\[/g, '[');\n }\n\n stringify(): string {\n return this.root.stringify();\n }\n\n // --- Static factory methods ---\n static parse(input: string): ObjectPathParser {\n return new ObjectPathParser(input);\n }\n\n static isFunctionScript(script: string): boolean {\n return script.trim().startsWith('function');\n }\n\n static isArrowFunctionScript(script: string): boolean {\n return /^\\s*\\([^)]*\\)\\s*=>/.test(script);\n }\n\n static isObjectLiteral(script: string): boolean {\n const trimmed = script.trim();\n return trimmed.startsWith('{') && trimmed.endsWith('}');\n }\n}\n", "import { ValidUtils } from '../valid/ValidUtils';\nimport type { ConstructorType } from '../types';\nimport { isDefined } from '../types';\nimport { ObjectPathParser } from '../parser/path/ObjectPathParser';\n\nexport namespace ObjectUtils {\n export const constructorName = (target: any): string | undefined => {\n if (target && target.constructor && target.constructor.name) {\n return target.constructor.name;\n } else if (target && target.name) {\n return target.name;\n }\n };\n export const deepCopy = <T = any>(obj: T): T => {\n if (obj instanceof Map) {\n return new Map<any, any>(JSON.parse(JSON.stringify(Array.from(obj.entries())))) as T;\n } else if (obj instanceof Set) {\n return new Set<any>(JSON.parse(JSON.stringify(Array.from(obj.values())))) as T;\n } else if (ValidUtils.isNullOrUndefined(obj)) {\n return obj;\n }\n\n return JSON.parse(JSON.stringify(obj));\n };\n export const allProtoTypeName = (target?: any, filter?: (pathString: string, pathValue: any) => boolean): string[] => {\n let data: string[] = [];\n if (target) {\n const proto = Object.getPrototypeOf(target);\n if (proto && (data = Object.keys(proto) || []).length > 0) {\n data = data.concat(ObjectUtils.allProtoTypeName(proto, filter));\n }\n }\n let result = data.filter(it => it !== 'constructor');\n\n if (filter && target) {\n const proto = Object.getPrototypeOf(target);\n result = result.filter(key => filter(key, proto?.[key]));\n }\n\n return result;\n };\n\n export const uniqueKeys = (obj: object[] | object) => {\n const allKeys = Array.from(new Set((Array.isArray(obj) ? obj : [obj]).flatMap(item => Object.keys(item))));\n return allKeys;\n };\n\n export const ownPropertyNames = (target?: any): string[] => {\n const data: string[] = [];\n if (target) {\n if (!target.prototype) {\n const a = Object.getPrototypeOf(target);\n data.push(...Object.getOwnPropertyNames(a));\n } else {\n data.push(...Object.getOwnPropertyNames(Object.getPrototypeOf(target)));\n }\n }\n return data.filter(it => it !== 'constructor');\n };\n\n export const protoTypeName = (target?: any): string[] => {\n let data: string[] = [];\n if (target) {\n const proto = Object.getPrototypeOf(target);\n data = Object.keys(proto) || [];\n }\n return data.filter(it => it !== 'constructor');\n };\n\n export const protoTypes = (target?: any): Function[] => {\n const data: Function[] = [];\n if (target) {\n const proto = Object.getPrototypeOf(target);\n (Object.keys(proto) || [])\n .filter(it => it !== 'constructor')\n .forEach(it => {\n data.push(proto[it]);\n });\n }\n return data;\n };\n\n export const seal = <T>(target: T): T => {\n return Object.seal(target);\n };\n\n /*\n Object.prototype.isPrototypeOf()\n isPrototypeOf() 메소드는 해당 객체가 다른 객체의 프로토타입 체인에 속한 객체인지 확인하기 위해 사용됩니다.\n */\n export const isPrototypeOfTarget = (start: ConstructorType<any> | Function | null | undefined, target: any | null | undefined): boolean => {\n if (start && target) {\n return Object.prototype.isPrototypeOf.call(start.prototype, target);\n } else {\n return false;\n }\n };\n\n export const prototypeOfDepth = (target: any, dest: ConstructorType<any> | Function | null | undefined): object[] => {\n let object: any = target;\n const r: any[] = [];\n if (dest) {\n do {\n object = Object.getPrototypeOf(object);\n if (object?.constructor === dest) {\n break;\n }\n r.push(object);\n } while (object);\n }\n return r;\n };\n\n export const allProtoType = (start: ConstructorType<any> | Function): (ConstructorType<any> | Function)[] => {\n const depth = (target: ConstructorType<any> | Function, bowl: (ConstructorType<any> | Function)[] = []) => {\n if (target.prototype) {\n bowl.push(target);\n depth(Object.getPrototypeOf(target), bowl);\n }\n return bowl;\n };\n const d = depth(start);\n return d;\n // const protos: (ConstructorType<any> | Function)[] = []\n // while (start) {\n // protos.push(start);\n // start = Object.getPrototypeOf(start)\n // }\n // return protos;\n };\n\n export const prototypeOf = (start: any) => {\n return Object.getPrototypeOf(start);\n };\n\n export const prototypeKeyMap = (target: any): Map<Function, string> => {\n const data = new Map<Function, string>();\n if (target) {\n const proto = Object.getPrototypeOf(target);\n (Object.keys(proto) || [])\n .filter(it => it !== 'constructor')\n .forEach(it => {\n data.set(proto[it], it);\n });\n }\n return data;\n };\n\n export const prototypeName = (target: any, fnc: Function): string | undefined => {\n return ObjectUtils.prototypeKeyMap(target).get(fnc);\n };\n\n export const pickRandomKey = <T>(target: T): keyof T => {\n const keys = Object.keys(target as any) as Array<keyof T>;\n return keys[Math.floor(Math.random() * keys.length)];\n };\n\n export const pickRandomValue = <T>(target: T): T[keyof T] => {\n const keys = Object.keys(target as any) as Array<keyof T>;\n return target[keys[Math.floor(Math.random() * keys.length)]];\n };\n\n export const pickRandomKeyValue = <T>(target: T): { key: keyof T; value: T[keyof T] } => {\n const keys = Object.keys(target as any) as Array<keyof T>;\n const key = keys[Math.floor(Math.random() * keys.length)];\n return { key, value: target[key] };\n };\n\n export const keyValues = <T>(target: T): { key: keyof T; value: T[keyof T] }[] => {\n const keys = Object.keys(target as any) as Array<keyof T>;\n return keys.map(key => ({ key, value: target[key] }));\n };\n\n export const entries = <T>(target: T): [keyof T, T[keyof T]][] => {\n return Object.entries(target as any) as [keyof T, T[keyof T]][];\n };\n\n export const values = <T>(target: T): T[keyof T][] => {\n return Object.values(target as any);\n };\n\n export const keys = <T>(target: T): (keyof T)[] => {\n return Object.keys(target as any) as (keyof T)[];\n };\n\n export const keyLength = <T>(target: T): number => {\n return ObjectUtils.keys(target).length;\n };\n\n export const toDeleteUndefinedAndNull = <T>(target: T, config?: { deep?: boolean }): T => {\n const cleanValue = (value: any): any => {\n if (Array.isArray(value)) {\n return value.filter(item => item !== undefined && item !== null).map(cleanValue);\n } else if (value && typeof value === 'object') {\n if (config?.deep) {\n return Object.fromEntries(\n Object.entries(value)\n .filter(([_, v]) => v !== undefined && v !== null)\n .map(([k, v]) => [k, cleanValue(v)])\n );\n } else {\n return Object.fromEntries(Object.entries(value).filter(([_, v]) => v !== undefined && v !== null));\n }\n }\n return value;\n };\n\n return cleanValue(target) as T;\n };\n\n export namespace Path {\n export const isFunctionScript = (script: string): boolean => {\n return ObjectPathParser.isFunctionScript(script);\n };\n\n export const isArrowFunctionScript = (script: string): boolean => {\n return ObjectPathParser.isArrowFunctionScript(script);\n };\n\n export const toOptionalChainPath = (path: string): string => {\n if (!path) {\n return '';\n }\n const parser = new ObjectPathParser(path);\n return parser.toOptionalChainPath();\n };\n\n export const removeOptionalChainOperator = (path: string): string => {\n if (!path) {\n return '';\n }\n const parser = new ObjectPathParser(path);\n return parser.removeOptionalChainOperator();\n };\n\n const parsePath = (path: string): (string | number)[] => {\n const result: (string | number)[] = [];\n const regex = /\\.([^.\\[]+)|\\[(\\d+)\\]|\\[(['\"])(.*?)\\3\\]/g;\n let match;\n let lastIndex = 0;\n\n const firstMatch = path.match(regex);\n if (firstMatch && (firstMatch?.index ?? 0) > 0) {\n result.push(path.substring(0, firstMatch.index));\n lastIndex = firstMatch.index as number;\n } else if (!firstMatch && path.length > 0) {\n result.push(path);\n return result;\n }\n\n while ((match = regex.exec(path)) !== null) {\n if (match.index > lastIndex) {\n const segment = path.substring(lastIndex, match.index);\n if (segment.startsWith('.')) {\n result.push(segment.substring(1));\n } else {\n result.push(segment);\n }\n }\n\n if (match[1]) {\n result.push(match[1]);\n } else if (match[2]) {\n result.push(parseInt(match[2], 10));\n } else if (match[4]) {\n result.push(match[4]);\n }\n lastIndex = regex.lastIndex;\n }\n\n if (lastIndex < path.length) {\n const remaining = path.substring(lastIndex);\n if (remaining.startsWith('.')) {\n result.push(remaining.substring(1));\n } else {\n result.push(remaining);\n }\n }\n\n return result;\n };\n\n export const to = <T = any>(obj: any) => {\n const destination: T = {} as any;\n Object.entries(obj).forEach(([path, value]) => {\n Path.set(destination, path, value);\n });\n return destination;\n };\n\n export const set = (obj: any, path: string, value: any) => {\n const pathParts = parsePath(path);\n let current = obj;\n\n for (let i = 0; i < pathParts.length; i++) {\n const part = pathParts[i];\n const isLastPart = i === pathParts.length - 1;\n\n if (isLastPart) {\n current[part] = value;\n } else {\n // Ensure current[part] is of the correct type for the next part\n const nextPart = pathParts[i + 1];\n\n if (typeof nextPart === 'number') {\n // Next part is an array index\n if (!Array.isArray(current[part])) {\n current[part] = [];\n }\n // Fill holes if current[part] is an array and nextPart is a skipped index\n if (Array.isArray(current[part])) {\n while (current[part].length <= nextPart) {\n current[part].push({}); // Fill with empty objects\n }\n }\n } else {\n // Next part is a string (object property)\n if (typeof current[part] !== 'object' || current[part] === null) {\n current[part] = {};\n }\n }\n current = current[part];\n }\n }\n };\n\n export const get = (obj: any, path: string, defaultValue?: any): any => {\n const pathParts = parsePath(path);\n let current = obj;\n\n for (let i = 0; i < pathParts.length; i++) {\n const part = pathParts[i];\n\n if (current === null || current === undefined) {\n return defaultValue;\n }\n\n // Check if the current object has the property/index\n if (typeof current === 'object' && current !== null && part in current) {\n current = current[part];\n } else {\n // Property/index not found\n return defaultValue;\n }\n }\n\n return current;\n };\n\n export const deletePath = (obj: any, path: string): boolean => {\n const pathParts = parsePath(path);\n if (pathParts.length === 0) {\n return false;\n }\n\n let current = obj;\n\n // Navigate to the parent of the target property\n for (let i = 0; i < pathParts.length - 1; i++) {\n const part = pathParts[i];\n\n if (current === null || current === undefined) {\n return false;\n }\n\n if (typeof current === 'object' && current !== null && part in current) {\n current = current[part];\n } else {\n return false;\n }\n }\n\n // Delete the final property\n const finalPart = pathParts[pathParts.length - 1];\n if (current !== null && typeof current === 'object' && finalPart in current) {\n if (Array.isArray(current) && typeof finalPart === 'number') {\n current.splice(finalPart, 1);\n } else {\n delete current[finalPart];\n }\n return true;\n }\n\n return false;\n };\n\n export const availablePath = (obj: any, filter?: (pathString: string, pathValue: any) => boolean): string[] => {\n const paths: string[] = [];\n\n const formatKey = (key: string | number): string => {\n if (typeof key === 'number') {\n return '[' + key + ']'; // Array index\n }\n // Check if the key is a valid JavaScript identifier.\n // If not, it needs to be quoted.\n // A valid identifier starts with a letter, _, or $, followed by letters, digits, _, or $.\n // This regex checks for characters that are NOT valid in an identifier.\n if (!/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(key)) {\n // If it's not a valid identifier, quote it.\n // Use single quotes without escaping for test compatibility\n return \"['\" + key + \"']\";\n }\n return key;\n };\n\n const traverse = (current: any, currentPath: string, visited: Set<any>) => {\n if (current === null || typeof current !== 'object') {\n return;\n }\n\n // Detect circular references\n if (visited.has(current)) {\n return;\n }\n visited.add(current);\n\n if (Array.isArray(current)) {\n current.forEach((item: any, index: number) => {\n const formattedIndex = formatKey(index); // This will be [index]\n const newPath = currentPath ? `${currentPath}${formattedIndex}` : formattedIndex;\n\n // Apply filter if provided\n if (!filter || filter(newPath, item)) {\n paths.push(newPath);\n }\n\n traverse(item, newPath, visited);\n });\n } else {\n Object.keys(current).forEach(key => {\n const formattedKey = formatKey(key);\n let newPath: string;\n\n // If the key needs brackets (special characters), don't add a dot before brackets\n if (formattedKey.startsWith('[')) {\n newPath = currentPath ? `${currentPath}${formattedKey}` : formattedKey;\n } else {\n newPath = currentPath ? `${currentPath}.${formattedKey}` : formattedKey;\n }\n\n // Apply filter if provided\n if (!filter || filter(newPath, current[key])) {\n paths.push(newPath);\n }\n\n traverse(current[key], newPath, visited);\n });\n }\n };\n\n traverse(obj, '', new Set());\n return paths;\n };\n\n /**\n * 스크립트에서 사용되는 변수 경로들을 감지합니다.\n * 프록시를 사용하여 스크립트 실행 중 접근되는 모든 속성 경로를 추적합니다.\n *\n * @param script 분석할 JavaScript 스크립트 문자열\n * @param options 감지 옵션\n * @param options.excludeThis true일 경우 'this' 키워드를 결과에서 제외\n * @returns 스크립트에서 사용된 변수 경로들의 Set\n */\n export const detectPathFromScript = (script: string, options?: { excludeThis?: boolean }): Set<string> => {\n const usingVars = new Set<string>();\n\n class GetDetectProxy implements ProxyHandler<any> {\n public usingVars = usingVars;\n\n constructor(public prefix?: string) {}\n\n set(target: any, p: string | symbol, value: any, receiver: any): boolean {\n return true;\n }\n\n get(target: any, p: string | symbol, receiver: any): any {\n // Symbol 속성들은 무시 (toString, valueOf 등)\n if (typeof p === 'symbol') {\n return this.createSafeProxy(this.prefix);\n }\n\n let items: string | undefined;\n const propStr = String(p);\n\n // 숫자 인덱스 처리\n if (!isNaN(Number(propStr))) {\n items = this.prefix ? `${this.prefix}[${propStr}]` : propStr;\n }\n // 일반 속성 처리\n else {\n items = this.prefix ? `${this.prefix}.${propStr}` : propStr;\n }\n\n // 유효한 변수 경로만 추가\n if (items) {\n this.usingVars.add(items);\n }\n\n return this.createSafeProxy(items);\n }\n\n apply(target: any, thisArg: any, argArray?: any): any {\n // 함수 호출 시에도 안전한 프록시 반환 (체이닝 가능)\n return this.createSafeProxy(this.prefix);\n }\n\n private createSafeProxy(prefix?: string): any {\n const dummyFunction = () => {};\n const handler = new GetDetectProxy(prefix);\n\n return new Proxy(dummyFunction, {\n get: (target, prop, receiver) => {\n if (prop === Symbol.toPrimitive) {\n return () => '';\n }\n if (prop === 'valueOf') {\n return () => handler.createSafeProxy(prefix);\n }\n if (prop === 'toString') {\n return () => '';\n }\n return handler.get(target, prop, receiver);\n },\n set: handler.set.bind(handler),\n apply: handler.apply.bind(handler)\n });\n }\n }\n\n // 전역 변수들을 안전하게 처리하기 위한 컨텍스트 생성\n const globalContext = {\n window: new Proxy(() => {}, new GetDetectProxy('window')),\n document: new Proxy(() => {}, new GetDetectProxy('document')),\n console: new Proxy(() => {}, new GetDetectProxy('console'))\n // this는 destUser 자체가 됨\n };\n\n const destUser = new Proxy(() => {}, new GetDetectProxy('this'));\n\n try {\n // [아키텍트님의 정석] #...# 형태의 템플릿 변수는 JS 문법 에러(Private Field)를 유발하므로\n // 감지 단계에서는 안전한 문자열로 마스킹 처리합니다.\n const maskedScript = script.replace(/#([^#]+)#/g, '__DOMRENDER_VAR_$1__');\n // 전역 컨텍스트와 함께 실행\n const func = new Function('window', 'document', 'console', `\"use strict\"; ${maskedScript}; `);\n func.call(destUser, globalContext.window, globalContext.document, globalContext.console);\n // console.log('------->', script);\n } catch (e) {\n console.error('detectPathFromScript error:', script, e);\n }\n\n // excludeThis 옵션이 true면 'this'로 시작하는 경로에서 'this' 제거\n if (options?.excludeThis) {\n const filteredVars = new Set<string>();\n usingVars.forEach(path => {\n if (path === 'this') {\n // 'this' 자체는 제외\n return;\n } else if (path.startsWith('this.')) {\n // 'this.'로 시작하는 경우 'this.' 부분 제거\n filteredVars.add(path.substring(5));\n } else {\n // 그 외는 그대로 추가\n filteredVars.add(path);\n }\n });\n return filteredVars;\n }\n\n return usingVars;\n };\n }\n\n export const toDeleteKey = (obj: any, keys: (null | string)[]) => {\n const target = { ...obj };\n ObjectUtils.deleteKey(target, keys);\n return target;\n };\n export const deleteKey = (obj: any, keys: (null | string)[]) => {\n keys\n .filter(it => isDefined(it))\n .forEach(it => {\n delete obj[it];\n });\n };\n\n export namespace Script {\n /**\n * JavaScript 스크립트를 실행하고 결과를 반환합니다.\n *\n * @param script 실행할 스크립트 문자열 또는 {bodyScript, returnScript} 객체\n * @param thisTarget 스크립트 실행 시 this로 바인딩될 객체\n * @returns 스크립트 실행 결과\n */\n export const evaluateReturn = <T = any>(script: string | { bodyScript: string; returnScript: string }, thisTarget: any = {}): T => {\n let bodyScript = '';\n let returnScript = '';\n if (typeof script === 'object') {\n bodyScript = script.bodyScript;\n returnScript = script.returnScript;\n } else {\n returnScript = script;\n }\n return evaluate(`${bodyScript}; return ${returnScript} `, thisTarget) as T;\n };\n\n /**\n * JavaScript 스크립트를 안전하게 실행합니다.\n *\n * @param script 실행할 스크립트 문자열\n * @param thisTarget 스크립트 실행 시 this로 바인딩될 객체\n * @returns 스크립트 실행 결과 또는 undefined (에러 시)\n */\n // @ts-ignore\n export const evaluate = <T = any>(script: string, thisTarget: any = {}): T | undefined => {\n // new Function('event', 'console.log(event)').call(window, {a:2});\n // new Function('event', '$data', newValue).call(this, event, event.detail);\n // 첫번쨰 인자는 this로 바인딩될 객체, 이후 인자들은 스크립트에서 사용할 매개변수로 전달됩니다.\n try {\n return Function(`\"use strict\"; ${script} `).bind(thisTarget)() as T;\n } catch (e) {\n console.error('eval error', e);\n console.error(script);\n return undefined;\n }\n };\n }\n}\n", "import { Dictionary } from '../types';\nimport { ValidUtils } from '../valid/ValidUtils';\n\nexport namespace StringUtils {\n export const deleteEnter = (data: string) => {\n return data.replace(/\\r?\\n/g, '')\n }\n\n export const pickEmoji = (data: string) => {\n return data.match(/[\\p{Emoji}]/gu) ?? [];\n }\n\n\n export const regexExec = (regex: RegExp, text: string) => {\n let varExec = regex.exec(text)\n const usingVars: any[] = [];\n while (varExec) {\n usingVars.push(varExec)\n varExec = regex.exec(varExec.input)\n }\n return usingVars;\n }\n\n \n\n export const escapeSpecialCharacterRegExp = (data: string) => {\n return data.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n }\n\n export const trim = (data: string) => data.trim();\n\n export const rsubString = (data_s: string, blen_n: number): string =>\n data_s.substring(data_s.length - blen_n, data_s.length);\n\n export const lsubString = (data_s: string, alen_n: number): string => data_s.substring(0, alen_n);\n\n export const lpad = (fill_s: string, len_n: number, full_s: string): string => {\n while (len_n > full_s.length) {\n full_s = fill_s + full_s;\n }\n return StringUtils.rsubString(full_s, len_n);\n };\n export const rpad = (fill_s: string, len_n: number, full_s: string): string => {\n while (len_n > full_s.length) {\n full_s += fill_s;\n }\n return StringUtils.lsubString(full_s, len_n);\n };\n\n export const lappend = (count_n: number, input_s: string): string => {\n let s = '';\n let i = 0;\n while (i++ < count_n) {\n s += input_s;\n }\n return s;\n };\n\n\n export const unescape = (html: string): string => {\n if (!html) return '';\n\n const htmlEntity: Dictionary<string> = {\n quot: '\"',\n amp: '&',\n apos: \"'\",\n lt: '<',\n gt: '>',\n nbsp: '\\u00A0',\n iexcl: '\u00A1',\n cent: '\u00A2',\n pound: '\u00A3',\n curren: '\u00A4',\n yen: '\u00A5',\n brvbar: '\u00A6',\n sect: '\u00A7',\n uml: '\u00A8',\n copy: '\u00A9',\n ordf: '\u00AA',\n laquo: '\u00AB',\n not: '\u00AC',\n shy: '\\u00AD',\n reg: '\u00AE',\n macr: '\u00AF',\n deg: '\u00B0',\n plusmn: '\u00B1',\n sup2: '\u00B2',\n sup3: '\u00B3',\n acute: '\u00B4',\n micro: '\u00B5',\n para: '\u00B6',\n middot: '\u00B7',\n cedil: '\u00B8',\n sup1: '\u00B9',\n ordm: '\u00BA',\n raquo: '\u00BB',\n frac14: '\u00BC',\n frac12: '\u00BD',\n frac34: '\u00BE',\n iquest: '\u00BF',\n '#x27': \"'\"\n };\n\n return html.replace(/&((?:(?:[a-z0-9]+|#[0-9]{1,6}|#x[0-9a-fA-F]{1,6});?)+);/gi, (match, entity) => {\n const entities: string[] = entity.toLowerCase().split(';');\n return entities.map(it => (it in htmlEntity ? htmlEntity[it] : match)).join('');\n });\n };\n\n export const executeExpression = (formatString: string, object: Record<string, string | number>) => {\n return formatString.replace(/\\${([^{}]*)}/g, (matched, piece) => String(object[piece] ?? matched));\n };\n\n export const ellipsis = (text: string, length: number) => {\n if (text.length > length) return `${text.slice(0, length)}...`;\n return text;\n };\n/*\nconst str = 'dr-class:set(\"MycLasS\")'; // \uB610\uB294 'dr-class'\nconst regex = /^([^\\s:]+)(?::(\\w+)\\(\"([^\"]+)\"\\))?$/;\nconst match = str.match(regex);\n\nif (match) {\n const className = match[1]; // dr-class\n const functionName = match[2] || ''; // set \uB610\uB294 ''\n const argument = match[3] || ''; // MycLasS \uB610\uB294 ''\n console.log('Class Name:', className);\n console.log('Function Name:', functionName);\n console.log('Argument:', argument);\n} else {\n console.log('Invalid format');\n}\n */\n // type Postposition =\n /**\n * Appends a postposition to the given text based on the provided options.\n * @param {string} text - The text to append the postposition to.\n * @param {object} options - The options for postposition.\n * @param {string} options.vowel - The postposition to append if the text ends with a vowel(\uBAA8\uC74C).\n * @param {string} options.consonant - The postposition to append if the text ends with a consonant(\uC790\uC74C).\n * @returns {string} - The text with the appropriate postposition appended.\n */\n export const appendPostposition = (text: string, { vowel, consonant }: {\n vowel: string;\n consonant: string;\n }): string => {\n return `${text}${ValidUtils.lastConsonantLetter(text) ? consonant : vowel}`;\n };\n\n export interface SequentialReplacement {\n regex: RegExp;\n callback: (matched: string) => string;\n }\n\n export const replaceSequentially = (\n text: string,\n replacements: SequentialReplacement[]\n ): string => {\n let remainingText = text;\n let result = '';\n // console.log('Executing replaceSequentially with robust fix');\n\n while (remainingText.length > 0) {\n let bestMatch: {\n index: number;\n match: RegExpExecArray;\n replacement: SequentialReplacement;\n } | null = null;\n\n // Find the earliest match in the remaining text\n for (const replacement of replacements) {\n const newRegex = new RegExp(replacement.regex);\n const match = newRegex.exec(remainingText);\n if (match) {\n if (bestMatch === null || match.index < bestMatch.index) {\n bestMatch = { index: match.index, match, replacement };\n }\n }\n }\n\n if (bestMatch) {\n const { index, match, replacement } = bestMatch;\n const matchedString = match[0];\n\n // Append the text before the match and the replacement\n result += remainingText.substring(0, index);\n result += replacement.callback(matchedString);\n\n // Update remainingText to be the part after the match\n remainingText = remainingText.substring(index + matchedString.length);\n } else {\n // No more matches, append the rest of the text and finish\n result += remainingText;\n break;\n }\n }\n\n return result;\n };\n}\n", "export namespace DateUtils {\n\n export const create = (data: string): Date => new Date(data);\n\n export const dayZeroTime = (data?: Date | string | number) => {\n const date = data ? new Date(data) : new Date();\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n export const fullMilliSecond = (): number => new Date().getTime();\n\n export const fullSecond = (): number => new Date().getTime() / 1000;\n\n export const milliSecond = (): number => new Date().getMilliseconds();\n\n export const format = (date: Date, format = 'yyyy-MM-dd HH:mm:ss'): string => {\n const pad = (num) => String(num).padStart(2, '0');\n const year = date.getFullYear();\n const month = pad(date.getMonth() + 1);\n const day = pad(date.getDate());\n const hours = pad(date.getHours());\n const minutes = pad(date.getMinutes());\n const seconds = pad(date.getSeconds());\n\n return format\n .replace('yyyy', String(year))\n .replace('MM', month)\n .replace('dd', day)\n .replace('HH', hours)\n .replace('mm', minutes)\n .replace('ss', seconds);\n };\n\n export const isSameDate = (date1: Date, date2: Date) =>\n date1.getFullYear() === date2.getFullYear() &&\n date1.getMonth() === date2.getMonth() &&\n date1.getDate() === date2.getDate();\n\n export const compare = (date1: Date, date2: Date) =>\n date1.getTime() < date2.getTime() ? -1 : date1.getTime() > date2.getTime() ? 1 : 0;\n\n export const weekCountOfYear = (date: Date) => {\n // Copy date so it's not modified\n const currentDate = new Date(date.getTime());\n // Set to nearest Thursday: current date + 4 - current day number (from 0 to 6)\n // Make Sunday's day number 7\n currentDate.setDate(currentDate.getDate() + 4 - (currentDate.getDay() || 7));\n // January 1st of the year\n const yearStart = new Date(currentDate.getFullYear(), 0, 1);\n // Calculate full weeks to nearest Thursday\n const weekNo = Math.ceil(((currentDate.getTime() - yearStart.getTime()) / 86400000 + 1) / 7);\n return weekNo;\n };\n export const age = (dateOfBirth: Date, until: Date = new Date()) => {\n let age = until.getFullYear() - dateOfBirth.getFullYear();\n const m = until.getMonth() - dateOfBirth.getMonth();\n\n if (m < 0 || (m === 0 && until.getDate() < dateOfBirth.getDate())) {\n age--;\n }\n\n return Math.max(age, 0);\n }\n\n export const countingAge = (dateOfBirth: Date, until: Date = new Date()) => {\n return Math.max(until.getFullYear() - dateOfBirth.getFullYear(), 0) + 1;\n }\n\n export const add = ({years = 0, months = 0, days = 0, minutes = 0, seconds = 0, milliSecond = 0}: { years?: number; months?: number; days?: number; minutes?: number; seconds?: number, milliSecond?: number }, date?: Date | string | number,): Date => {\n const result = date ? new Date(date) : new Date();\n if (years) result.setFullYear(result.getFullYear() + years);\n if (months) result.setMonth(result.getMonth() + months);\n if (days) result.setDate(result.getDate() + days);\n if (minutes) result.setMinutes(result.getMinutes() + minutes);\n if (seconds) result.setSeconds(result.getSeconds() + seconds);\n if (milliSecond) result.setMilliseconds(result.getMilliseconds() + milliSecond);\n return result;\n };\n\n\n export const toDate = (date: Date | string | number): Date => {\n if (date instanceof Date) {\n return date;\n } else if (typeof date === 'string' || typeof date === 'number') {\n return new Date(date);\n } else {\n throw new Error('Invalid date type. Expected Date, string, or number.');\n }\n }\n\n export const sinceSeconds = (date: Date): number => Math.floor((Date.now() - date.getTime()) / 1000);\n\n export const toSeconds = (date: Date = new Date()): number => Math.floor(date.getTime() / 1000);\n\n export const toMilliseconds = (date: Date = new Date()): number => date.getTime();\n\n export const fromSeconds = (seconds: number): Date => new Date(seconds * 1000);\n\n export const fromMilliseconds = (milliseconds: number): Date => new Date(milliseconds);\n\n export const toISOString = (date: Date = new Date()): string => date.toISOString();\n\n export const fromISOString = (isoString: string): Date => new Date(isoString);\n\n export const formatDuration = (timeSecond: number, locale: string = getDefaultLocale()) => {\n const rtf = new Intl.RelativeTimeFormat(locale, { numeric: 'always', style: 'long' });\n\n\n let remaining = timeSecond;\n const days = Math.floor(remaining / 86400);\n remaining -= days * 86400;\n const hours = Math.floor(remaining / 3600);\n remaining -= hours * 3600;\n const minutes = Math.floor(remaining / 60);\n remaining -= minutes * 60;\n const seconds = remaining;\n\n const result = [];\n\n if (days > 0) {\n result.push(rtf.format(days, 'day').replace('\uD6C4', '').replace('in ', '').replace('dans ', ''));\n }\n\n if (hours > 0) {\n result.push(rtf.format(hours, 'hour').replace('\uD6C4', '').replace('in ', '').replace('dans ', ''));\n }\n\n if (minutes > 0) {\n result.push(rtf.format(minutes, 'minute').replace('\uD6C4', '').replace('in ', '').replace('dans ', ''));\n }\n\n if (seconds > 0 || result.length === 0) {\n result.push(rtf.format(seconds, 'second').replace('\uD6C4', '').replace('in ', '').replace('dans ', ''));\n }\n\n return result.join(' ');\n };\n\n export const relativeTime = (date: Date | string | number,\n config?: {\n locales: ConstructorParameters<typeof Intl.RelativeTimeFormat>[0]\n options: ConstructorParameters<typeof Intl.RelativeTimeFormat>[1]\n }) => {\n\n const rtf = new Intl.RelativeTimeFormat(config?.locales, config?.options);\n let targetDate: Date;\n if (!(date instanceof Date)) {\n targetDate = new Date(date);\n } else {\n targetDate = date;\n }\n\n const now = new Date();\n const diffMs = targetDate.getTime() - now.getTime(); // \uC785\uB825\uB41C \uC2DC\uAC04 - \uD604\uC7AC \uC2DC\uAC04\n\n // \uBD84, \uC2DC\uAC04, \uC77C \uB2E8\uC704\uB85C \uC808\uB300\uAC12 \uCC28\uC774 \uACC4\uC0B0\n const absDiffMinutes = Math.floor(Math.abs(diffMs) / (1000 * 60));\n const absDiffHours = Math.floor(Math.abs(diffMs) / (1000 * 60 * 60));\n const absDiffDays = Math.floor(Math.abs(diffMs) / (1000 * 60 * 60 * 24));\n if (diffMs === 0) {\n return rtf.format(0, 'seconds'); // \"\uC9C0\uAE08\" \uB610\uB294 \"0\uCD08 \uD6C4/\uC804\" (\uB85C\uCF00\uC77C\uC5D0 \uB530\uB77C \uB2E4\uB984)\n }\n if (diffMs < 0) { // \uACFC\uAC70 (\uC785\uB825\uB41C \uC2DC\uAC04\uC774 \uD604\uC7AC\uBCF4\uB2E4 \uC774\uC804)\n if (absDiffMinutes < 1) { // 1\uBD84 \uBBF8\uB9CC \uACFC\uAC70\n return rtf.format(-Math.floor(Math.abs(diffMs) / 1000), 'seconds'); // \"\uBA87 \uCD08 \uC804\"\n } else if (absDiffMinutes < 60) { // 60\uBD84 \uBBF8\uB9CC \uACFC\uAC70\n return rtf.format(-absDiffMinutes, 'minutes'); // \"\uBA87 \uBD84 \uC804\"\n } else if (absDiffHours < 24) { // 24\uC2DC\uAC04 \uBBF8\uB9CC \uACFC\uAC70\n return rtf.format(-absDiffHours, 'hours'); // \"\uBA87 \uC2DC\uAC04 \uC804\"\n } else { // \uADF8 \uC774\uC0C1 \uACFC\uAC70\n return rtf.format(-absDiffDays, 'days'); // \"\uBA87 \uC77C \uC804\"\n }\n } else { // \uBBF8\uB798 (\uC785\uB825\uB41C \uC2DC\uAC04\uC774 \uD604\uC7AC\uBCF4\uB2E4 \uC774\uD6C4)\n if (absDiffMinutes < 1) { // 1\uBD84 \uBBF8\uB9CC \uBBF8\uB798\n return rtf.format(Math.floor(diffMs / 1000), 'seconds'); // \"\uBA87 \uCD08 \uD6C4\"\n } else if (absDiffMinutes < 60) { // 60\uBD84 \uBBF8\uB9CC \uBBF8\uB798\n return rtf.format(absDiffMinutes, 'minutes'); // \"\uBA87 \uBD84 \uD6C4\"\n } else if (absDiffHours < 24) { // 24\uC2DC\uAC04 \uBBF8\uB9CC \uBBF8\uB798\n return rtf.format(absDiffHours, 'hours'); // \"\uBA87 \uC2DC\uAC04 \uD6C4\"\n } else { // \uADF8 \uC774\uC0C1 \uBBF8\uB798\n return rtf.format(absDiffDays, 'days'); // \"\uBA87 \uC77C \uD6C4\"\n }\n }\n }\n\n export const getDefaultLocale = (): string => Intl.DateTimeFormat().resolvedOptions().locale;\n}\n", "import { Vector } from './Vector';\n\nexport class Point2D {\n public x: number;\n public y: number;\n\n constructor(data: {x?: number, y?: number});\n constructor(x?: number, y?: number);\n constructor(x?: number | {x?: number, y?: number} | Vector , y?: number) {\n if (typeof x === 'object') {\n this.x = x.x ?? 0;\n this.y = x.y ?? 0;\n } else {\n this.x = x ?? 0;\n this.y = y ?? 0;\n }\n }\n\n copy() {\n return new Point2D(this.x, this.y);\n }\n}\n", "// https://p5js.org/ko/\nimport { Point3D } from './Point3D';\nimport { Point2D } from './Point2D';\n\n/**\n * 2D/3D \uBCA1\uD130 (p5.js Vector \uAE30\uBC18).\n * - \uBCA1\uD130: \uD06C\uAE30(magnitude)\uC640 \uBC29\uD5A5\uC744 \uAC00\uC9C4 \uC591. \uC704\uCE58\uAC00 \uC544\uB2CC \"\uC774\uB3D9\"\uC744 \uB098\uD0C0\uB0C4.\n * - `to*` \uBA54\uC11C\uB4DC\uB294 \uC0C8 Vector\uB97C \uBC18\uD658(\uBE44\uD30C\uAD34), \uADF8 \uC678(add/sub/mult/div/normalize \uB4F1)\uB294 \uC790\uC2E0\uC744 \uBCC0\uACBD(\uD30C\uAD34\uC801).\n * @example\n * const a = new Vector(3, 4); // |a| = 5\n * const b = a.get(); // \uBCF5\uC0AC\uBCF8\n * b.add(new Vector(1, 1)); // b = (4, 5), a\uB294 \uADF8\uB300\uB85C (3, 4)\n */\nexport class Vector {\n public x: number;\n public y: number;\n public z: number;\n\n /**\n * \uBCA1\uD130 \uC0DD\uC131. \uC778\uC790 \uC5C6\uC774 \uD638\uCD9C\uD558\uBA74 \uC601\uBCA1\uD130 (0, 0, 0).\n * @example\n * new Vector(3, 4) // (3, 4, 0)\n * new Vector({x: 1}) // (1, 0, 0)\n * new Vector(new Point3D(1, 2, 3)) // (1, 2, 3)\n */\n constructor(data: Point3D);\n constructor(data: {x?: number, y?: number, z?: number});\n constructor(x?: number, y?: number, z?: number);\n constructor(x?: number | {x?: number, y?: number, z?: number} | Point3D, y?: number, z?: number) {\n if (x instanceof Point3D) {\n this.x = x.x;\n this.y = x.y;\n this.z = x.z;\n } else if (typeof x === 'object') {\n this.x = x.x ?? 0;\n this.y = x.y ?? 0;\n this.z = x.z ?? 0;\n } else {\n this.x = x ?? 0;\n this.y = y ?? 0;\n this.z = z ?? 0;\n }\n }\n\n\n /**\n * \uC131\uBD84 \uB300\uC785 (\uD30C\uAD34\uC801). \uBCA1\uD130 \uC804\uB2EC \uC2DC \uADF8 \uC131\uBD84\uC744 \uBCF5\uC0AC.\n * @example\n * v.set(1, 2, 3); // v = (1, 2, 3)\n * v.set(otherVector); // v = other\uC640 \uB3D9\uC77C \uC131\uBD84\n */\n public set(v: number | Vector | Point3D, y: number = 0, z: number = 0) {\n if (v instanceof Vector || v instanceof Point3D) {\n this.set(v.x || 0, v.y || 0, v.z || 0);\n } else {\n this.x = v;\n this.y = y;\n this.z = z;\n }\n return this;\n }\n\n /**\n * \uBCF5\uC0AC\uBCF8 \uBC18\uD658 (\uBE44\uD30C\uAD34). \uD30C\uAD34\uC801 \uBA54\uC11C\uB4DC\uC640 \uC870\uD569\uD574 \uC6D0\uBCF8 \uBCF4\uC874\uC6A9.\n * @example\n * const s = a.get(); s.add(b); // s = a+b, a\uB294 \uADF8\uB300\uB85C\n */\n public get() {\n return new Vector(this.x, this.y, this.z);\n }\n\n /**\n * \uB178\uB984(norm). \uD3C9\uD3C9\uD55C \uACF5\uAC04(\uC720\uD074\uB9AC\uB4DC \uACF5\uAC04)\uC5D0\uC11C\uC758 \uC9C1\uC120 \uAC70\uB9AC.\n * - \uC218\uC2DD: \u2016v\u2016 = \u221A(x\u00B2 + y\u00B2 + z\u00B2)\n * - 2D\uC5D0\uC11C\uB294 \uD53C\uD0C0\uACE0\uB77C\uC2A4 \uC815\uB9AC \uADF8 \uC790\uCCB4. 3D\uB294 \uB450 \uBC88 \uC801\uC6A9\uD55C \uAC83\uACFC \uAC19\uC74C.\n * (\uBC14\uB2E5 \uB300\uAC01\uC120 \u221A(x\u00B2+y\u00B2) \u2192 \uACF5\uAC04 \uB300\uAC01\uC120 \u221A((\uBC14\uB2E5)\u00B2+z\u00B2))\n * - \"\uC720\uD074\uB9AC\uB4DC\"\uB294 \uD3C9\uD3C9\uD55C \uACF5\uAC04\uC758 \uAE30\uD558\uD559\uC744 \uB9D0\uD568 (\uC88C\uD45C\uACC4\uB294 \uB370\uCE74\uB974\uD2B8\uC758 \uAC83, \uC720\uD074\uB9AC\uB4DC\uB294 \uC88C\uD45C \uC5C6\uC774 \uAE30\uD558\uD559\uC744 \uC138\uC6C0).\n * \uD718\uC5B4\uC9C4 \uACF5\uAC04(\uAD6C\uBA74\u00B7\uC30D\uACE1)\uC5D0\uC11C\uB294 \uC774 \uACF5\uC2DD\uC774 \uC131\uB9BD\uD558\uC9C0 \uC54A\uC74C.\n * @example\n * new Vector(3, 4, 0).norm(); // 5\n * new Vector(6, 8, 0).norm(); // 10\n */\n public norm(): number {\n const x = this.x;\n const y = this.y;\n const z = this.z;\n // \uAC19\uC740 \uBCA1\uD130\uC640\uC758 \uB0B4\uC801 \uC81C\uACF1\uADFC\uC73C\uB85C\uB3C4 \uAD6C\uD560 \uC218 \uC788\uC74C: \u2016v\u2016 = \u221A(v\u00B7v)\n // return Math.sqrt(this.dot(this));\n return Math.sqrt(x * x + y * y + z * z); // \uC758 \uC81C\uACF1\uADFC\uC744 \uB9AC\uD134\uD558\uBA74 \uAE38\uC774\uAC00 \uBC18\uD658\uB41C\uB2E4.\n }\n\n /**\n * norm()\uC758 \uBCC4\uCE6D (p5.js \uD638\uD658).\n * @example\n * new Vector(3, 4, 0).mag(); // 5\n */\n public mag(): number {\n return this.norm();\n }\n\n /**\n * \uB367\uC148 (\uD30C\uAD34\uC801). \uC131\uBD84\uBCC4 \uD569. \uAE30\uD558\uD559\uC801\uC73C\uB85C \uD3C9\uD589\uC0AC\uBCC0\uD615\uC758 \uB300\uAC01\uC120.\n * - \uC218\uC2DD: a + b = (ax+bx, ay+by, az+bz)\n * @example\n * const a = new Vector(4, 2); a.add(new Vector(-2, 3)); // a = (2, 5)\n */\n public add(v: number | Vector | Point3D, y: number = 0, z: number = 0) {\n if (v instanceof Vector || v instanceof Point3D) {\n this.x += v.x;\n this.y += v.y;\n this.z += v.z;\n } else {\n this.x += v;\n this.y += y;\n this.z += z;\n }\n }\n\n /**\n * \uB367\uC148 \uACB0\uACFC\uC758 \uC0C8 \uBCA1\uD130 \uBC18\uD658 (\uBE44\uD30C\uAD34).\n * - \uC218\uC2DD: a + b = (ax+bx, ay+by, az+bz)\n * @example\n * const s = a.toAdd(a, b); // s = a+b, a\u00B7b\uB294 \uADF8\uB300\uB85C\n */\n public toAdd(v1: Vector|Point3D, v2: Vector|Point3D): Vector {\n return new Vector(v1.x + v2.x, v1.y + v2.y, v1.x + v2.y);\n }\n\n // public static add(v1: Vector, v2: Vector): Vector {\n // return new Vector(v1.x + v2.x, v1.y + v2.y, v1.x + v2.y);\n // }\n\n /**\n * \uBE84\uC148 (\uD30C\uAD34\uC801). a - b\uB294 \"a\uC5D0\uC11C b\uB97C \uB418\uB3CC\uB9AC\uB294\" \uBCA1\uD130.\n * - \uC218\uC2DD: a - b = (ax-bx, ay-by, az-bz)\n * @example\n * const a = new Vector(4, 2); a.sub(new Vector(1, 1)); // a = (3, 1)\n */\n public sub(v: number | Vector |Point3D, y = 0, z = 0) {\n if (v instanceof Vector || v instanceof Point3D) {\n this.x -= v.x;\n this.y -= v.y;\n this.z -= v.z;\n } else {\n this.x -= v;\n this.y -= y;\n this.z -= z;\n }\n }\n\n /**\n * \uBE84\uC148 \uACB0\uACFC\uC758 \uC0C8 \uBCA1\uD130 \uBC18\uD658 (\uBE44\uD30C\uAD34).\n * - \uC218\uC2DD: a - b = (ax-bx, ay-by, az-bz)\n * @example\n * const d = a.toSub(b); // d = a-b, a\u00B7b\uB294 \uADF8\uB300\uB85C\n */\n public toSub(v2: Vector | Point3D): Vector {\n const v1 = this;\n return new Vector(v1.x - v2.x, v1.y - v2.y, v1.z - v2.z);\n }\n\n //\n // public static sub(v1: Vector, v2: Vector): Vector {\n // return new Vector(v1.x - v2.x, v1.y - v2.y, v1.z - v2.z);\n // }\n\n /**\n * \uC2A4\uCE7C\uB77C\uBC30 \uB610\uB294 \uC131\uBD84\uBCC4 \uACF1 (\uD30C\uAD34\uC801). \uC2A4\uCE7C\uB77C k>1\uC774\uBA74 \uB298\uC5B4\uB098\uACE0, 0<k<1\uC774\uBA74 \uC904\uC5B4\uB4E6. k<0\uC774\uBA74 \uBC18\uB300 \uBC29\uD5A5.\n * - \uC218\uC2DD(\uC2A4\uCE7C\uB77C): k\u00B7v = (k\u00B7x, k\u00B7y, k\u00B7z)\n * @example\n * const v = new Vector(1, 2); v.mult(3); // v = (3, 6)\n */\n public mult(v: number | Vector | Point3D) {\n if (v instanceof Vector || v instanceof Point3D) {\n this.x *= v.x;\n this.y *= v.y;\n this.z *= v.z;\n } else {\n this.x *= v;\n this.y *= v;\n this.z *= v;\n }\n return this;\n }\n\n /**\n * \uC131\uBD84\uBCC4 \uACF1 \uACB0\uACFC\uC758 \uC0C8 \uBCA1\uD130 \uBC18\uD658 (\uBE44\uD30C\uAD34).\n * - \uC218\uC2DD: (ax\u00B7bx, ay\u00B7by, az\u00B7bz)\n * @example\n * const m = a.toMult(b); // m = \uC131\uBD84\uBCC4 \uACF1, a\u00B7b\uB294 \uADF8\uB300\uB85C\n */\n public toMult(v2: Vector | Point3D): Vector {\n const v1 = this;\n return new Vector(v1.x *= v2.x, v1.y *= v2.y, v1.z *= v2.z);\n }\n\n // public static mult(v1: Vector, v2: Vector) {\n // return new Vector(v1.x *= v2.x, v1.y *= v2.y, v1.z *= v2.z);\n // }\n\n /**\n * \uC2A4\uCE7C\uB77C \uB098\uB217\uC148 \uB610\uB294 \uC131\uBD84\uBCC4 \uB098\uB217\uC148 (\uD30C\uAD34\uC801). \uC815\uADDC\uD654\uC758 \uD575\uC2EC \uC5F0\uC0B0.\n * - \uC218\uC2DD(\uC2A4\uCE7C\uB77C): v/k = (x/k, y/k, z/k)\n * @example\n * const v = new Vector(6, 8); v.div(2); // v = (3, 4)\n */\n public div(v: number | Vector | Point3D) {\n if (v instanceof Vector || v instanceof Point3D) {\n this.x /= v.x;\n this.y /= v.y;\n this.z /= v.z;\n } else {\n this.x /= v;\n this.y /= v;\n this.z /= v;\n }\n return this;\n }\n\n /**\n * \uC2A4\uCE7C\uB77C \uB098\uB217\uC148 \uACB0\uACFC\uC758 \uC0C8 \uBCA1\uD130 \uBC18\uD658 (\uBE44\uD30C\uAD34).\n * - \uC218\uC2DD: v/k = (x/k, y/k, z/k)\n * @example\n * const h = v.toDiv(2); // h = v/2, v\uB294 \uADF8\uB300\uB85C\n */\n public toDiv( d: number): Vector {\n const v = this;\n const rv = v.get();\n rv.x /= d;\n rv.y /= d;\n rv.z /= d;\n return rv;\n }\n\n // public static div(v: Vector, d: number): Vector {\n // const rv = v.get();\n // rv.x /= d;\n // rv.y /= d;\n // rv.z /= d;\n // return rv;\n // }\n\n /**\n * \uB450 \uC810(\uBCA1\uD130) \uC0AC\uC774 \uAC70\uB9AC. \uCC28 \uBCA1\uD130\uC758 \uD06C\uAE30.\n * - \uC218\uC2DD: d = \u221A((dx)\u00B2 + (dy)\u00B2 + (dz)\u00B2)\n * @example\n * new Vector(0, 0).dist(new Vector(3, 4)); // 5\n */\n public dist(v: Vector | Point3D): number {\n const dx = this.x - v.x,\n dy = this.y - v.y,\n dz = this.z - v.z;\n return Math.sqrt(dx * dx + dy * dy + dz * dz);\n }\n\n /**\n * \uB450 \uC810(\uBCA1\uD130) \uC0AC\uC774 \uAC70\uB9AC (toDist\uB294 dist\uC640 \uB3D9\uC77C, \uBE44\uD30C\uAD34).\n * - \uC218\uC2DD: d = \u221A((dx)\u00B2 + (dy)\u00B2 + (dz)\u00B2)\n * @example\n * a.toDist(b); // a\uC640 b \uC0AC\uC774 \uAC70\uB9AC\n */\n public toDist(v2: Vector | Point3D): number {\n const v1 = this;\n const dx = v1.x - v2.x,\n dy = v1.y - v2.y,\n dz = v1.z - v2.z;\n return Math.sqrt(dx * dx + dy * dy + dz * dz);\n }\n\n // public static dist(v1: Vector, v2: Vector): number {\n // const dx = v1.x - v2.x,\n // dy = v1.y - v2.y,\n // dz = v1.z - v2.z;\n // return Math.sqrt(dx * dx + dy * dy + dz * dz);\n // }\n\n /**\n * \uB0B4\uC801(dot product). \uB450 \uBCA1\uD130\uAC00 \uAC19\uC740 \uBC29\uD5A5\uC744 \uD5A5\uD558\uB294 \uC815\uB3C4.\n * - \uC218\uC2DD: a\u00B7b = ax\u00B7bx + ay\u00B7by + az\u00B7bz = |a||b|cos\u03B8\n * - \u03B8=90\u00B0\uBA74 0(\uC9C1\uAD50), 0\u00B0\uBA74 \uCD5C\uB300(\uAC19\uC740 \uBC29\uD5A5).\n * - \uBCA1\uD130 \uC804\uB2EC \uC2DC y\u00B7z \uC0DD\uB7B5 \uAC00\uB2A5, \uC2A4\uCE7C\uB77C(x) \uC804\uB2EC \uC2DC y\u00B7z\uC640 \uD568\uAED8 \uC0AC\uC6A9.\n * @example\n * new Vector(5, 12).dot(new Vector(-5, 12)); // -25+144 = 119\n * new Vector(1, 0).dot(new Vector(0, 1)); // 0 (\uC9C1\uAC01)\n * new Vector(1, 2).dot(3, 4); // 1*3+2*4 = 11\n */\n public dot(v: number | Vector | Point3D, y = 0, z = 0): number {\n if (v instanceof Vector || v instanceof Point3D) {\n return this.x * v.x + this.y * v.y + this.z * v.z;\n }\n ;\n return this.x * v + this.y * y + this.z * z;\n }\n\n /**\n * \uC678\uC801(cross product). \uB450 \uBCA1\uD130\uC5D0 \uC218\uC9C1\uC778 \uBCA1\uD130. \uC624\uB978\uC190 \uBC95\uCE59 \uBC29\uD5A5.\n * - \uC218\uC2DD: a\u00D7b = (ay\u00B7bz \u2212 az\u00B7by, az\u00B7bx \u2212 ax\u00B7bz, ax\u00B7by \u2212 ay\u00B7bx)\n * - 2D\uC5D0\uC11C\uB294 z\uAC12 = ax\u00B7by \u2212 ay\u00B7bx (\uBD80\uD638 \uC788\uB294 \uBA74\uC801, \uD68C\uC804 \uBC29\uD5A5 \uD310\uC815\uC6A9).\n * @example\n * new Vector(1, 0, 0).cross(new Vector(0, 1, 0)); // (0, 0, 1)\n */\n public cross(v: Vector | Point3D): Vector {\n const x = this.x,\n y = this.y,\n z = this.z;\n return new Vector(y * v.z - v.y * z, z * v.x - v.z * x, x * v.y - v.x * y);\n }\n\n /**\n * \uC815\uADDC\uD654 (\uD30C\uAD34\uC801). \uBC29\uD5A5\uC740 \uADF8\uB300\uB85C, \uD06C\uAE30\uB97C 1\uB85C. \uB2E8\uC704\uBCA1\uD130 v\u0302 \uC0DD\uC131.\n * - \uC218\uC2DD: v\u0302 = v / |v|\n * - \uC601\uBCA1\uD130(|v|=0)\uB294 0\uC73C\uB85C \uB098\uB204\uC9C0 \uC54A\uACE0 \uADF8\uB300\uB85C \uB460.\n * @example\n * const v = new Vector(6, 8); v.normalize(); // v = (0.6, 0.8), |v| = 1\n */\n public normalize() {\n const m = this.norm();\n if (m > 0) this.div(m);\n }\n\n /**\n * \uD06C\uAE30 \uC0C1\uD55C (\uD30C\uAD34\uC801). \uC18D\uB3C4\uAC00 high\uB97C \uB118\uC73C\uBA74 \uBC29\uD5A5 \uC720\uC9C0\uD55C \uCC44 high\uB85C \uC790\uB984. \uBB3C\uB9AC \uC2DC\uBBAC\uB808\uC774\uC158 \uCD5C\uACE0\uC18D\uB3C4\uC6A9.\n * - \uC218\uC2DD: |v| > high \u2192 v = v\u0302 \u00B7 high\n * @example\n * const v = new Vector(6, 8); v.limit(5); // |v|=10 \u2192 5, v = (3, 4)\n */\n public limit(high: number) {\n if (this.norm() > high) {\n this.normalize();\n this.mult(high);\n }\n }\n\n /**\n * 2D \uBC29\uD5A5\uAC01. +x\uCD95 \uAE30\uC900 \uBC18\uC2DC\uACC4 \uBC29\uD5A5 \uB77C\uB514\uC548 (-\u03C0 ~ \u03C0).\n * - \uC218\uC2DD: \u03B8 = atan2(y, x)\n * @example\n * new Vector(1, 1).heading2D(); // \u03C0/4 (45\u00B0)\n * new Vector(-1, 0).heading2D(); // \u03C0 (180\u00B0)\n */\n public heading2D() {\n return -Math.atan2(-this.y, this.x);\n }\n\n /**\n * \uBB34\uC791\uC704 \uBC29\uD5A5 \uB2E8\uC704\uBCA1\uD130 \uBC18\uD658 (\uC0C8 Vector, \uC790\uC2E0\uC740 \uBCC0\uACBD \uC548 \uD568).\n * @example\n * const r = new Vector().random2D(); // |r| = 1, \uBC29\uD5A5 \uB79C\uB364\n */\n public random2D() {\n return this.fromAngle(Math.random() * (2 * Math.PI));\n }\n\n /**\n * \uAC01\uB3C4\u2192\uBCA1\uD130. \uAC01\uB3C4 \u03B8, \uAE38\uC774 L\uC778 2D \uBCA1\uD130 \uBC18\uD658 (\uC0C8 Vector).\n * - \uC218\uC2DD: (L\u00B7cos\u03B8, L\u00B7sin\u03B8, 0)\n * @example\n * new Vector().fromAngle(Math.PI / 3, 2); // (1, 1.73, 0)\n */\n public fromAngle(angle: number, length = 1) {\n return new Vector(length * Math.cos(angle), length * Math.sin(angle), 0);\n };\n\n /**\n * \uAD6C\uBA74\uC88C\uD45C\u21923D \uBCA1\uD130 (\uC0C8 Vector \uBC18\uD658, p5.js \uCEE8\uBCA4\uC158).\n * - \uC218\uC2DD: (L\u00B7sin\u03B8\u00B7sin\u03C6, \u2212L\u00B7cos\u03B8, L\u00B7sin\u03B8\u00B7cos\u03C6)\n * @example\n * new Vector().fromAngles(Math.PI / 2, Math.PI / 2, 1); // (1, 0, 0)\n */\n public fromAngles(theta: number, phi: number, length = 1) {\n const cosPhi = Math.cos(phi);\n const sinPhi = Math.sin(phi);\n const cosTheta = Math.cos(theta);\n const sinTheta = Math.sin(theta);\n\n return new Vector(\n length * sinTheta * sinPhi,\n -length * cosTheta,\n length * sinTheta * cosPhi\n );\n };\n\n /**\n * \uC131\uBD84 \uBC30\uC5F4 \uBC18\uD658. [x, y, z] \uC21C\uC11C.\n * @example\n * new Vector(1, 2, 3).array(); // [1, 2, 3]\n */\n public array(): number[] {\n return [this.x, this.y, this.z];\n }\n\n /**\n * Point3D\uB85C \uBCC0\uD658 (\uC704\uCE58 \uC758\uBBF8\uB85C \uBC14\uAFC0 \uB54C).\n * @example\n * new Vector(1, 2, 3).toPoint3D(); // Point3D(1, 2, 3)\n */\n public toPoint3D(): Point3D {\n return new Point3D(this.x, this.y, this.z);\n }\n\n /**\n * Point2D\uB85C \uBCC0\uD658 (z \uBC84\uB9BC).\n * @example\n * new Vector(1, 2, 3).toPoint2D(); // Point2D(1, 2)\n */\n public toPoint2D(): Point2D {\n return new Point2D(this.x, this.y);\n }\n\n /**\n * \uBCF5\uC0AC\uBCF8 \uBC18\uD658 (get()\uACFC \uB3D9\uC77C, \uBE44\uD30C\uAD34).\n * @example\n * const c = v.copy(); // v\uC640 \uAC19\uC740 \uC131\uBD84\uC758 \uC0C8 \uBCA1\uD130\n */\n public copy(): Vector {\n return new Vector(this.x, this.y, this.z);\n }\n\n /**\n * \uBB38\uC790\uC5F4 \uD45C\uD604. \"[x, y, z]\" \uD615\uC2DD.\n * @example\n * new Vector(1, 2).toString(); // \"[1, 2, 0]\"\n */\n public toString(): string {\n return '[' + this.x + ', ' + this.y + ', ' + this.z + ']';\n }\n\n}\n", "import { Vector } from './Vector';\nimport { Point2D } from './Point2D';\n\nexport class Point3D extends Point2D {\n public z: number;\n\n constructor(data: Vector);\n constructor(data: {x?: number, y?: number, z?: number});\n constructor(x?: number, y?: number, z?: number);\n constructor(x?: number | {x?: number, y?: number, z?: number} | Vector, y?: number, z?: number) {\n if (x instanceof Vector) {\n super(x.x, x.y);\n this.z = x.z;\n } else if (typeof x === 'object') {\n super({x: x.x ?? 0, y: x.y ?? 0})\n this.z = x.z ?? 0;\n } else {\n super(x,y)\n this.z = z ?? 0;\n }\n }\n\n copy() {\n return new Point3D(this.x, this.y, this.z);\n }\n}\n", "export type SizeType = {\n width: number;\n height: number;\n};\n\nexport const isSizeType = (obj: any): obj is SizeType =>\n !!obj &&\n typeof obj.width === 'number' &&\n typeof obj.height === 'number';", "import { Point2D } from './Point2D';\nimport { MathUtil } from '../math/MathUtil';\nimport AngleUnitType = MathUtil.AngleUnitType;\nimport { isSizeType, SizeType } from './SizeType';\nimport { Point2DType } from './Point2DType';\n\ntype ValueLinkControl<T> = { value: T, noLink: boolean | Rect };\nconst isValueLinkControl = <T = any>(data: any): data is ValueLinkControl<T> => {\n return typeof data === 'object' && 'value' in data && 'noLink' in data;\n // return data.value !== undefined && data.noLink !== undefined && typeof data.value === 'object' && typeof data.noLink === 'boolean';\n}\n\nexport class Rect {\n private _start: Point2D;\n private _width: number\n private _height: number\n private linkRects?: Set<Rect>;\n\n constructor(size: SizeType);\n constructor(point: Point2DType, endPoint: Point2DType);\n constructor(point: Point2D, endPoint: Point2D);\n constructor(point: Point2D, width?: number, height?: number);\n constructor(x: number, y: number, width?: number, height?: number);\n constructor(xOrPoint: number | Point2D | { x: number, y: number } | SizeType, yOrPointOrWidth?: number | Point2D | { x: number, y: number }, widthOrHeight = 0, heightOrUndefined = 0) {\n if (isSizeType(xOrPoint)) {\n this._start = new Point2D(0, 0);\n this._width = xOrPoint.width;\n this._height = xOrPoint.height;\n } else if (typeof xOrPoint === 'object' && typeof yOrPointOrWidth === 'object') {\n this._start = xOrPoint instanceof Point2D ? xOrPoint : new Point2D(xOrPoint.x, xOrPoint.y);\n this.end = yOrPointOrWidth instanceof Point2D ? yOrPointOrWidth : new Point2D(yOrPointOrWidth.x, yOrPointOrWidth.y);\n } else if (typeof xOrPoint === 'object' && typeof yOrPointOrWidth === 'number') {\n this._start = xOrPoint instanceof Point2D ? xOrPoint : new Point2D(xOrPoint.x, xOrPoint.y);\n this._width = yOrPointOrWidth;\n this._height = widthOrHeight\n } else if (typeof xOrPoint === 'number' && typeof yOrPointOrWidth === 'number') {\n this._start = new Point2D(xOrPoint, yOrPointOrWidth);\n this._width = widthOrHeight;\n this._height = heightOrUndefined;\n }\n }\n\n\n private valueLinkControl<T>(value: T | ValueLinkControl<T>) {\n let v: T;\n let noLink: boolean | Rect = false;\n if (isValueLinkControl(value)) {\n v = value.value;\n noLink = value.noLink;\n } else {\n v = value;\n }\n return {value: v, noLink};\n }\n\n get width(): number {\n return this._width;\n }\n\n get height(): number {\n return this._height;\n }\n\n get start(): Point2D {\n return this._start.copy();\n }\n\n ////////////////////\n\n set width(width: number) {\n this.setWidth(width);\n }\n\n public setWidth(width: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(width);\n const percentDiff = MathUtil.getPercentByTotal(this._width, value);\n this._width = value;\n this.applyWidthPercentLinks({value: percentDiff, noLink});\n }\n\n\n set height(height: number) {\n this.setHeight(height);\n }\n\n public setHeight(height: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(height);\n const percentDiff = MathUtil.getPercentByTotal(this._height, value);\n this._height = value;\n this.applyHeightPercentLinks({value: percentDiff, noLink});\n }\n\n set start(inputValue: Point2D) {\n let {value, noLink} = this.valueLinkControl(inputValue);\n const percentDiff = new Point2D({x: MathUtil.getPercentByTotal(this._start.x, value.x), y: MathUtil.getPercentByTotal(this._start.y, value.y)});\n this._start = value;\n this.applyStartPercentLinks({value: percentDiff, noLink});\n }\n\n // \uC5B8\uC81C\uC4F0\uB294\uAC70\uC9C0 \u3161\u3161?\n setWidthFromEnd(inputValue: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(inputValue);\n const percentDiff = MathUtil.getPercentByTotal(this.start.x, value);\n this._start.x = this.end.x - value;\n this.applyStartXPercentLinks({value: percentDiff, noLink});\n }\n\n set widthFromEnd(inputValue: number) {\n this.setWidthFromEnd(inputValue);\n }\n\n // \uC5B8\uC81C\uC4F0\uB294\uAC70\uC9C0 \u3161\u3161?\n setHeightFromEnd(inputValue: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(inputValue);\n const diff = this.end.y - value;\n const percentDiff = MathUtil.getPercentByTotal(this.start.y, diff);\n this._start.y = diff;\n this.applyStartYPercentLinks({value: percentDiff, noLink});\n }\n\n set heightFromEnd(inputValue: number) {\n this.setHeightFromEnd(inputValue);\n }\n\n setWidthFromCenter(inputValue: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(inputValue);\n const diff = this.center.x - (value / 2);\n const percentDiff = MathUtil.getPercentByTotal(this.start.x, diff);\n this._start.x = diff;\n this.applyStartXPercentLinks(percentDiff);\n }\n\n set widthFromCenter(inputValue: number) {\n this.setWidthFromCenter(inputValue);\n }\n\n setHeightFromCenter(inputValue: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(inputValue);\n const diff = this.center.y - (value / 2);\n const percentDiff = MathUtil.getPercentByTotal(this.start.y, diff);\n this._start.y = diff;\n this.applyStartYPercentLinks(percentDiff);\n }\n\n set heightFromCenter(inputValue: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(inputValue);\n const diff = this.center.y - (value / 2);\n const percentDiff = MathUtil.getPercentByTotal(this.start.y, diff);\n this._start.y = diff;\n this.applyStartYPercentLinks(percentDiff);\n }\n\n set x(inputValue: number) {\n this.setX(inputValue);\n }\n\n public setX(inputValue: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(inputValue);\n const diff = value - this._start.x;\n const percentDiff = MathUtil.getPercentByTotal(this.width, diff);\n this._start.x = value;\n this.applyStartXPercentLinks({value: percentDiff, noLink});\n }\n\n set y(inputValue: number) {\n this.setY(inputValue);\n }\n\n public setY(inputValue: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(inputValue);\n const diff = value - this._start.y;\n const percentDiff = MathUtil.getPercentByTotal(this.height, diff);\n this._start.y = value;\n this.applyStartYPercentLinks({value: percentDiff, noLink});\n }\n\n ////////////////////////////\n\n applyWidthPercentLinks(widthPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(widthPercent);\n if (this.linkRects && (typeof noLink === 'boolean' ? !noLink : true)) {\n Array.from(this.linkRects.values()).filter(it => {\n return typeof noLink === 'boolean' ? true : it !== noLink;\n }).forEach(it => {\n it.setWidthByWidthPercent({value: value, noLink: this});\n })\n }\n }\n\n applyHeightPercentLinks(heightPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(heightPercent);\n if (this.linkRects && (typeof noLink === 'boolean' ? !noLink : true)) {\n Array.from(this.linkRects.values()).filter(it => {\n return typeof noLink === 'boolean' ? true : it !== noLink;\n }).forEach(it => {\n it.setHeightByHeightPercent({value: value, noLink: this});\n })\n }\n }\n\n applyStartPercentLinks(startPercent: Point2D | ValueLinkControl<Point2D>) {\n let {value, noLink} = this.valueLinkControl(startPercent);\n this.applyStartXPercentLinks({value: value.x, noLink});\n this.applyStartYPercentLinks({value: value.y, noLink});\n }\n\n applyStartXPercentLinks(xPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(xPercent);\n if (this.linkRects && (typeof noLink === 'boolean' ? !noLink : true)) {\n Array.from(this.linkRects.values()).filter(it => {\n return typeof noLink === 'boolean' ? true : it !== noLink;\n }).forEach(it => {\n it.addXByWidthPercent({value: value, noLink: this});\n })\n }\n }\n\n applyStartYPercentLinks(yPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(yPercent);\n if (this.linkRects && (typeof noLink === 'boolean' ? !noLink : true)) {\n Array.from(this.linkRects.values()).filter(it => {\n return typeof noLink === 'boolean' ? true : it !== noLink;\n }).forEach(it => {\n it.addYByHeightPercent({value: value, noLink: this});\n })\n }\n }\n\n hasLink(rect: Rect) {\n return this.linkRects?.has(rect)\n }\n\n isLinked() {\n return !!this.linkRects?.size;\n }\n\n addLink(...rect: Rect[]) {\n this.linkRects ??= new Set<Rect>();\n rect.filter(it => !this.linkRects?.has(it)).forEach(it => {\n this.linkRects?.add(it);\n it.addLink(this);\n })\n }\n\n setLinks(rects: Rect[]) {\n this.unLinkAll();\n this.addLink(...rects);\n }\n\n unLinkAll() {\n if (this.linkRects) {\n Array.from(this.linkRects.values()).forEach(it => {\n this.unLink(it);\n })\n this.linkRects.clear();\n }\n }\n\n unLink(rect: Rect | ValueLinkControl<Rect>) {\n let {value, noLink} = this.valueLinkControl(rect);\n if (this.linkRects) {\n this.linkRects.delete(value);\n }\n if (!noLink)\n value.unLink({value: this, noLink: this});\n }\n\n addWidthPercent(wPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(wPercent);\n this.setWidth({value: this.width + MathUtil.getValueByTotalInPercent(this.width, value), noLink});\n }\n\n addHeightPercent(hPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(hPercent);\n this.setHeight({value: this.height + MathUtil.getValueByTotalInPercent(this.height, value), noLink});\n }\n\n addWidthRatio(wRatio: number) {\n this.width = this.width + MathUtil.getValueByTotalInRatio(this.width, wRatio);\n }\n\n addHeightRatio(hRatio: number) {\n this.height = this.height + MathUtil.getValueByTotalInRatio(this.height, hRatio);\n }\n\n addXPercent(wPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(wPercent);\n this.setX({value: this.x + MathUtil.getValueByTotalInPercent(this.width, value), noLink});\n }\n\n addYPercent(hPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(hPercent);\n this.setY({value: this.y + MathUtil.getValueByTotalInPercent(this.height, value), noLink});\n }\n\n addXRatio(wRatio: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(wRatio);\n this.setX({value: this.x + MathUtil.getValueByTotalInRatio(this.width, value), noLink});\n }\n\n addYRatio(hRatio: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(hRatio);\n this.setY({value: this.y + MathUtil.getValueByTotalInRatio(this.height, value), noLink});\n }\n\n ////////////\n\n set endX(value: number) {\n const diff = value - this.x;\n this.width = diff;\n }\n\n set endXPercent(endXPercent: number) {\n this.endX = MathUtil.getValueByTotalInPercent(this.width, endXPercent);\n }\n\n set endYPercent(endYPercent: number) {\n this.endY = MathUtil.getValueByTotalInPercent(this.height, endYPercent);\n }\n\n set endY(value: number) {\n this.height = value - this.y;\n }\n\n set end(value: Point2D) {\n this.width = value.x - this.x;\n this.height = value.y - this.y;\n }\n\n get x(): number {\n return this.start.x;\n }\n\n get y(): number {\n return this.start.y;\n }\n\n get endX(): number {\n return this.end.x;\n }\n\n get endY(): number {\n return this.end.y;\n }\n\n to(startPoint: Point2D) {\n const r = this.copy();\n r.start = startPoint;\n return r;\n }\n\n toRotate(r: number, {rotatePoint = this.center, type = 'degreeAngle'}: { rotatePoint?: { x: number, y: number }, type?: AngleUnitType }): Point2D[] {\n const angle = MathUtil.radians(r, {type});\n const centerPoint = rotatePoint instanceof Point2D ? rotatePoint : new Point2D(rotatePoint.x, rotatePoint.y);\n\n const points = [\n this.leftTop,\n this.rightTop,\n this.rightBottom,\n this.leftBottom\n ];\n\n return points.map(p => MathUtil.rotatePoint(p, centerPoint, angle));\n }\n\n get center(): Point2D {\n return new Point2D(this.start.x + (this.width / 2), this.start.y + (this.height / 2));\n }\n\n get end(): Point2D {\n return new Point2D(this.start.x + this.width, this.start.y + this.height);\n }\n\n get leftTop(): Point2D {\n return this.start.copy();\n }\n\n get leftBottom(): Point2D {\n return new Point2D(this.start.x, this.end.y);\n }\n\n get rightTop(): Point2D {\n return new Point2D(this.end.x, this.start.y);\n }\n\n get rightBottom(): Point2D {\n return this.end;\n }\n\n public copy(): Rect {\n return new Rect(this.x, this.y, this.width, this.height);\n }\n\n /////////////////\n\n getWidthPercent(width: number) {\n return MathUtil.getPercentByTotal(this.width, width);\n }\n\n getWidthRatio(width: number) {\n return MathUtil.getRatioByTotal(this.width, width);\n }\n\n getWidthByPercent(percent: number) {\n return MathUtil.getValueByTotalInPercent(this.width, percent);\n }\n\n getWidthByRatio(percent: number) {\n return MathUtil.getValueByTotalInRatio(this.width, percent);\n }\n\n getHeightPercent(height: number) {\n return MathUtil.getPercentByTotal(this.height, height);\n }\n\n getHeightRatio(height: number) {\n return MathUtil.getRatioByTotal(this.height, height);\n }\n\n getHeightByPercent(percentY: number) {\n return MathUtil.getValueByTotalInPercent(this.height, percentY);\n }\n\n getHeightByRatio(ratio: number) {\n return MathUtil.getValueByTotalInRatio(this.height, ratio);\n }\n\n getXPercent(x: number) {\n return MathUtil.getPercentByTotal(this.width, x - this.x)\n }\n\n getXRatio(x: number) {\n return MathUtil.getRatioByTotal(this.width, x - this.x)\n }\n\n getXByPercent(xPercent: number) {\n return this.x + MathUtil.getValueByTotalInPercent(this.width, xPercent);\n }\n\n getXByRatio(ratio: number) {\n return this.x + MathUtil.getValueByTotalInRatio(this.width, ratio);\n }\n\n getYPercent(y: number) {\n return MathUtil.getPercentByTotal(this.height, y - this.y);\n }\n\n getYRatio(y: number) {\n return MathUtil.getRatioByTotal(this.height, y - this.y);\n }\n\n getYByPercent(yPercent: number) {\n return this.y + MathUtil.getValueByTotalInPercent(this.height, yPercent);\n }\n\n getYByRatio(ratio: number) {\n return this.y + MathUtil.getValueByTotalInRatio(this.height, ratio);\n }\n\n getPercent(point: { x: number, y: number }): Point2D {\n return new Point2D(\n this.getXPercent(point.x),\n this.getYPercent(point.y),\n );\n }\n\n /**\n * \uC8FC\uC5B4\uC9C4 width\uC5D0 \uB9DE\uCDB0 \uBE44\uC728\uC5D0 \uB530\uB77C height\uB97C \uC2A4\uCF00\uC77C\uB9C1\uD558\uC5EC \uC0C8\uB85C\uC6B4 Rect\uB97C \uBC18\uD658\uD569\uB2C8\uB2E4.\n * @param width \uC0C8\uB85C\uC6B4 width \uAC12\n * @returns \uBE44\uC728\uC5D0 \uB9DE\uAC8C height\uAC00 \uC870\uC815\uB41C Rect\n */\n toScaleByWidth(width: number): Rect {\n const ratio = this.height / this.width;\n return new Rect(this.x, this.y, width, width * ratio);\n }\n /**\n * \uC8FC\uC5B4\uC9C4 height\uC5D0 \uB9DE\uCDB0 \uBE44\uC728\uC5D0 \uB530\uB77C width\uB97C \uC2A4\uCF00\uC77C\uB9C1\uD558\uC5EC \uC0C8\uB85C\uC6B4 Rect\uB97C \uBC18\uD658\uD569\uB2C8\uB2E4.\n * @param height \uC0C8\uB85C\uC6B4 height \uAC12\n * @returns \uBE44\uC728\uC5D0 \uB9DE\uAC8C width\uAC00 \uC870\uC815\uB41C Rect\n */\n toScaleByHeight(height: number): Rect {\n const ratio = this.width / this.height;\n return new Rect(this.x, this.y, height * ratio, height);\n }\n\n toRatio(point: Rect | { x: number, y: number, w: number, h: number }): Rect {\n return new Rect(\n this.getXRatio(point.x),\n this.getYRatio(point.y),\n this.getWidthRatio(point instanceof Rect ? point.width : point.w),\n this.getHeightRatio(point instanceof Rect ? point.height : point.h),\n );\n }\n\n getRatio(point: { x: number, y: number }) {\n return new Point2D(\n this.getXRatio(point.x),\n this.getYRatio(point.y),\n );\n }\n\n getByPercent(percent: { x: number, y: number }): Point2D {\n return new Point2D(\n this.getXByPercent(percent.x),\n this.getYByPercent(percent.y),\n );\n }\n\n getByRatio(ratio: { x: number, y: number }) {\n return new Point2D(\n this.getXByRatio(ratio.x),\n this.getYByRatio(ratio.y),\n );\n }\n\n getDiffX(x: number) {\n return x - this.x;\n }\n\n getDiffY(y: number) {\n return y - this.y;\n }\n\n getDiffLeft(x: number) {\n this.getDiffX(x);\n }\n\n getDiffTop(y: number) {\n this.getDiffY(y);\n }\n\n getDiffRight(x: number) {\n return x - this.end.x;\n }\n\n getDiffBottom(y: number) {\n return y - this.end.y;\n }\n\n getDiffWidth(width: number) {\n return width - this.width;\n }\n\n getDiffHeight(height: number) {\n return height - this.height;\n }\n\n toDiff(rect: Rect) {\n return new Rect(\n rect.x - this.x,\n rect.y - this.y,\n rect.width - this.width,\n rect.height - this.height,\n );\n }\n\n setXByWidthPercent(wPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(wPercent);\n this.setX({value: MathUtil.getValueByTotalInPercent(this.width, value), noLink});\n }\n\n set xByWidthPercent(wPercent: number) {\n this.setXByWidthPercent(wPercent);\n }\n\n setXByWidthRatio(wRatio: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(wRatio);\n this.setX({value: MathUtil.getValueByTotalInRatio(this.width, value), noLink});\n }\n\n set xByWidthRatio(wRatio: number) {\n this.setXByWidthRatio(wRatio);\n }\n\n setYByHeightPercent(hPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(hPercent);\n this.setY({value: MathUtil.getValueByTotalInPercent(this.height, value), noLink});\n }\n\n set yByHeightPercent(hPercent: number) {\n this.setYByHeightPercent(hPercent);\n }\n\n setYByHeightRatio(ratio: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(ratio);\n this.setY({value: MathUtil.getValueByTotalInRatio(this.height, value), noLink});\n }\n\n set yByHeightRatio(ratio: number) {\n this.setYByHeightRatio(ratio);\n }\n\n addXByWidthPercent(wPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(wPercent);\n this.setX({value: this.x + MathUtil.getValueByTotalInPercent(this.width, value), noLink});\n }\n\n addXByWidthRatio(wRatio: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(wRatio);\n this.setX({value: this.x + MathUtil.getValueByTotalInRatio(this.width, value), noLink});\n }\n\n addYByHeightPercent(hPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(hPercent);\n this.setY({value: this.y + MathUtil.getValueByTotalInPercent(this.height, value), noLink});\n }\n\n addYByHeightRatio(ratio: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(ratio);\n this.setY({value: this.y + MathUtil.getValueByTotalInRatio(this.height, value), noLink});\n }\n\n setWidthByWidthPercent(wPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(wPercent);\n this.setWidth({value: MathUtil.getValueByTotalInPercent(this.width, value), noLink});\n }\n\n set widthByWidthPercent(wPercent: number) {\n this.setWidthByWidthPercent(wPercent);\n }\n\n setWidthByWidthRatio(wRatio: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(wRatio);\n this.setWidth({value: MathUtil.getValueByTotalInRatio(this.width, value), noLink});\n }\n\n set widthByWidthRatio(wRatio: number) {\n this.setWidthByWidthRatio(wRatio);\n }\n\n setHeightByHeightPercent(hPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(hPercent);\n this.setHeight({value: MathUtil.getValueByTotalInPercent(this.height, value), noLink});\n }\n\n set heightByHeightPercent(hPercent: number) {\n this.setHeightByHeightPercent(hPercent);\n }\n\n setHeightByHeightRatio(hRatio: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(hRatio);\n this.setHeight({value: MathUtil.getValueByTotalInRatio(this.height, value), noLink});\n }\n\n set heightByHeightRatio(hRatio: number) {\n this.setHeightByHeightRatio(hRatio);\n }\n\n // getWidthHeightPercentByPoint(point: Point2D): Point2D {\n // return new Point2D(this.getWidthPercent(point.x),this.getHeightPercent(point.y));\n // }\n //\n // getByPercent(point: Point2D): Point2D {\n // return new Point2D(this.getWidthByPercent(point.x),this.getHeightByPercent(point.y));\n // }\n\n ///////\n\n public copyByPercent(percent: number): Rect;\n public copyByPercent(percentX: number, percentY?: number): Rect ;\n public copyByPercent(percentOrX: number, percentY?: number): Rect {\n return new Rect(this.x, this.y,\n MathUtil.getValueByTotalInPercent(this.width, percentOrX),\n MathUtil.getValueByTotalInPercent(this.height, percentY ?? percentOrX)\n );\n }\n\n public copyByRatio(ratio: number): Rect;\n public copyByRatio(ratioX: number, ratioY?: number): Rect ;\n public copyByRatio(ratioOrX: number, ratioY?: number): Rect {\n return new Rect(this.x, this.y,\n MathUtil.getValueByTotalInRatio(this.width, ratioOrX),\n MathUtil.getValueByTotalInRatio(this.height, ratioY ?? ratioOrX)\n );\n }\n\n public isIn(data: { x: number, y: number }): boolean;\n public isIn(data: Point2D): boolean;\n public isIn(data: Rect): boolean\n public isIn(data: Point2D | Rect | { x: number, y: number }): boolean {\n if (data instanceof Rect) {\n return this.isIn(data.start) && this.isIn(data.end);\n } else {\n return data.x >= this.start.x && data.x <= this.end.x && data.y >= this.start.y && data.y <= this.end.y;\n }\n }\n\n public isOut(data: Point2D): boolean;\n public isOut(data: Rect): boolean;\n public isOut(data: Point2D | Rect) {\n if (data instanceof Rect) {\n return !this.isOverlap(data);\n } else {\n return !this.isIn(data);\n }\n }\n\n public isOverlap(data: Point2D): boolean;\n public isOverlap(data: Rect): boolean;\n public isOverlap(data: Point2D | Rect) {\n if (data instanceof Rect) {\n /*\n \uC0C8\uB85C\uC6B4 \uB85C\uC9C1\uC740 \uBC18\uB300\uB85C \"\uACB9\uCE58\uC9C0 \uC54A\uB294 \uC870\uAC74\"\uC744 \uCC3E\uACE0, \uADF8 \uC870\uAC74\uC5D0 \uD574\uB2F9\uD558\uC9C0 \uC54A\uC73C\uBA74 \"\uACB9\uCE5C\uB2E4\"\uACE0 \uD310\uB2E8\uD558\uB294\n \uBC29\uC2DD\uC785\uB2C8\uB2E4. \uC774 \uBC29\uBC95\uC774 \uD6E8\uC52C \uAC04\uB2E8\uD558\uACE0 \uBAA8\uB4E0 \uACBD\uC6B0\uB97C \uCC98\uB9AC\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.\n\n \uB450 \uC0AC\uAC01\uD615(A\uC640 B)\uC774 \uACB9\uCE58\uC9C0 \uC54A\uC73C\uB824\uBA74, \uB2E4\uC74C \uB124 \uAC00\uC9C0 \uC870\uAC74 \uC911 \uD558\uB098\uB77C\uB3C4 \uB9CC\uC871\uD574\uC57C \uD569\uB2C8\uB2E4.\n 1. A\uAC00 B\uC758 \uC644\uC804\uD788 \uC67C\uCABD\uC5D0 \uC788\uC744 \uB54C\n * A\uC758 \uC624\uB978\uCABD \uB05D(this.endX)\uC774 B\uC758 \uC67C\uCABD \uC2DC\uC791(data.x)\uBCF4\uB2E4 \uC67C\uCABD\uC5D0 \uC788\uB294 \uACBD\uC6B0\n * \uCF54\uB4DC: this.endX < data.x\n\n\n 2. A\uAC00 B\uC758 \uC644\uC804\uD788 \uC624\uB978\uCABD\uC5D0 \uC788\uC744 \uB54C\n * A\uC758 \uC67C\uCABD \uC2DC\uC791(this.x)\uC774 B\uC758 \uC624\uB978\uCABD \uB05D(data.endX)\uBCF4\uB2E4 \uC624\uB978\uCABD\uC5D0 \uC788\uB294 \uACBD\uC6B0\n * \uCF54\uB4DC: this.x > data.endX\n\n\n 3. A\uAC00 B\uC758 \uC644\uC804\uD788 \uC704\uCABD\uC5D0 \uC788\uC744 \uB54C\n * A\uC758 \uC544\uB798\uCABD \uB05D(this.endY)\uC774 B\uC758 \uC704\uCABD \uC2DC\uC791(data.y)\uBCF4\uB2E4 \uC704\uCABD\uC5D0 \uC788\uB294 \uACBD\uC6B0\n * \uCF54\uB4DC: this.endY < data.y\n\n\n 4. A\uAC00 B\uC758 \uC644\uC804\uD788 \uC544\uB798\uCABD\uC5D0 \uC788\uC744 \uB54C\n * A\uC758 \uC704\uCABD \uC2DC\uC791(this.y)\uC774 B\uC758 \uC544\uB798\uCABD \uB05D(data.endY)\uBCF4\uB2E4 \uC544\uB798\uCABD\uC5D0 \uC788\uB294 \uACBD\uC6B0\n * \uCF54\uB4DC: this.y > data.endY\n */\n const noOverlap = this.endX < data.x ||\n this.x > data.endX ||\n this.endY < data.y ||\n this.y > data.endY;\n return !noOverlap;\n // return (\n // this.isOverlap(data.leftTop) ||\n // this.isOverlap(data.rightTop) ||\n // this.isOverlap(data.rightBottom) ||\n // this.isOverlap(data.leftBottom)) ||\n // (\n // data.start.x < this.x && data.start.y < this.y &&\n // data.end.x > this.end.x && data.end.y > this.end.y\n // );\n } else {\n return this.isIn(data);\n }\n }\n\n public toString(): string {\n return `x:${this.x}, y:${this.y}, width: ${this.width}, height: ${this.height}`;\n }\n\n}\n", "import { Vector } from '../../Vector';\nimport { Rect } from '../../Rect';\n\ntype Transaform = [number, number, number, number, number, number];\n\ntype Color = {\n r?: number,\n g?: number,\n b?: number,\n a?: number\n};\n\nexport class Obj<T = any> extends Vector {\n\n public volume = 0; // \uBD80\uD53C\n public mass = 0; // \uC9C8\uB7C9\n public e = 0; // \uD0C4\uC131\n public rotate = 0; // \uD68C\uC804\n public width = 0; // \uB108\uBE44\n public height = 0; // \uB192\uC774\n public data?: T;\n // public age = 0; // \uC0DD\uC131\uB41C \uC2DC\uAC04 \uAC00\uC911\uCE58\n // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/transform\n /*\n a, d: \uAC00\uB85C/\uC138\uB85C \uC2A4\uCF00\uC77C\n b, c: \uAE30\uC6B8\uC774\uAE30(skew)\n e, f: \uC774\uB3D9(translate)\n --------------\n a, b, c, d, e, f\n */\n public transform: Transaform = [1, 0, 0, 1, 0, 0];\n public color: Color = {\n r: 0,\n g: 0,\n b: 0,\n a: 255\n };\n public id?: string;\n\n // public data?: T;\n\n\n constructor(data?: {\n x?: number,\n y?: number,\n z?: number,\n volume?: number,\n mass?: number,\n e?: number,\n rotate?: number,\n width?: number,\n height?: number,\n transform?: Transaform,\n color?: Color,\n data?: T,\n }) {\n super();\n this.updateObjWithDefaults(data);\n }\n\n\n copyObj() {\n return new Obj({\n x: this.x,\n y: this.y,\n z: this.z,\n volume: this.volume,\n mass: this.mass,\n e: this.e,\n rotate: this.rotate,\n width: this.width,\n height: this.height,\n transform: [...this.transform],\n color: {...this.color},\n data: {...this.data}\n });\n }\n\n updateObjWithDefaults(data?: {\n x?: number,\n y?: number,\n z?: number,\n volume?: number,\n mass?: number,\n e?: number,\n rotate?: number,\n width?: number,\n height?: number,\n transform?: Transaform,\n color?: Color,\n data?: T,\n }) {\n if (data) {\n this.x = data.x ?? this.x;\n this.y = data.y ?? this.y;\n this.z = data.z ?? this.z;\n this.volume = data.volume ?? this.volume;\n this.mass = data.mass ?? this.mass;\n this.e = data.e ?? this.e;\n this.rotate = data.rotate ?? this.rotate;\n this.width = data.width ?? this.width;\n this.height = data.height ?? this.height;\n this.transform = [...(data.transform ?? this.transform)];\n this.color = {...(data.color ?? this.color)};\n const t = data.data ?? this.data;\n this.data = t?{...t}:undefined;\n }\n }\n\n setObj(data?: {\n x?: number,\n y?: number,\n z?: number,\n volume?: number,\n mass?: number,\n e?: number,\n rotate?: number,\n width?: number,\n height?: number,\n transform?: Transaform,\n color?: Color,\n data?: T,\n }) {\n if (data) {\n this.x = data.x??0;\n this.y = data.y??0;\n this.z = data.z??0;\n this.volume = data.volume??0;\n this.mass = data.mass??0;\n this.e = data.e??0;\n this.rotate = data.rotate??0;\n this.width = data.width??0;\n this.height = data.height??0;\n this.transform = [...(data.transform??[1, 0, 0, 1, 0, 0])];\n this.color = { ...(data.color??{r:0,g:0,b:0,a:255})};\n const data1 = data.data;\n this.data = data1 ? { ...data1} : undefined;\n }\n }\n\n toRect(): Rect {\n return new Rect(this.x, this.y, this.width, this.height);\n }\n\n // constructor(canvas: HTMLCanvasElement, context: CanvasRenderingContext2D, public avaliablePlace: Rectangle = new Rectangle(new Point(0, 0), new Point(0, 0))) {\n // super(canvas, context);\n // }\n\n\n // get centerPoint(): Point {\n // return new Point();\n // }\n}\n", "import { Point3D } from '../entity/Point3D';\nimport { Vector } from '../entity/Vector';\nimport { Obj } from '../entity/object/obj/Obj';\nimport { Point2D } from '../entity/Point2D';\n\nexport namespace MathUtil {\n export type BezierConfig = { p1x: number | 'random', p1y: number | 'random', p2x: number | 'random', p2y: number | 'random' } | [number | 'random', number | 'random', number | 'random', number | 'random'];\n export const getMinByObjectArray = (objectArray: Array<any>, varName: string) => {\n let min;\n if (varName && objectArray && objectArray.length > 0) {\n min = objectArray[0][varName];\n for (let i = 1; i < objectArray.length; i++) {\n min = Math.min(min, objectArray[i][varName]);\n }\n }\n return min;\n };\n\n export const hypot = (...data: number[]) => {\n // 2\uCC28\uC6D0 \uC608\uC2DC\n // Math.hypot(3, 4); // \uACB0\uACFC: 5 (3\u00B2 + 4\u00B2 = 9 + 16 = 25, \u221A25 = 5)\n\n// 3\uCC28\uC6D0 \uC608\uC2DC\n// Math.hypot(3, 4, 5); // \uACB0\uACFC: 7.0710678118654755\n\n return Math.hypot(...data);\n }\n\n // \uD53C\uD0C0\uACE0\uB77C\uC2A4 \uC815\uB9AC \uD568\uC218\n export const pythagorean = (a: number, b: number): number => {\n /*\n \uD53C\uD0C0\uACE0\uB77C\uC2A4 \uC815\uB9AC\n a^2 + b^2 = c^2\n c = \u221A(a^2 + b^2)\n */\n // return Math.sqrt(start * start + end * end);\n return Math.sqrt(a * a + b * b);\n };\n\n export const getMaxByObjectArray = (objectArray: Array<any>, varName: string) => {\n let max;\n if (varName && objectArray && objectArray.length > 0) {\n max = objectArray[0][varName];\n for (let i = 1; i < objectArray.length; i++) {\n max = Math.max(max, objectArray[i][varName]);\n }\n }\n return max;\n };\n\n export const sum = (array: number[]) => {\n return array.reduce((acc, curr) => acc + curr, 0);\n }\n\n export const avg = (array: number[]) => {\n return array.length > 0 ? MathUtil.sum(array) / array.length : 0;\n }\n\n export const minMax = (data: number, minMax: { min: number, max: number }) => {\n return Math.min(Math.max(data, minMax.min), minMax.max);\n }\n export const max = (array: number[]) => {\n return array.length > 0 ? Math.max(...array) : undefined;\n };\n\n export const min = (array: number[]) => {\n return array.length > 0 ? Math.min(...array) : undefined;\n };\n\n export const getSumByObjectArray = (objectArray: Array<any>, varName: string) => {\n let sum = 0;\n if (varName && objectArray && objectArray.length > 0) {\n for (let i = 0; i < objectArray.length; i++) {\n sum += objectArray[i][varName];\n }\n }\n return sum;\n };\n\n\n export type AngleUnitType = 'degreeAngle' | 'ratio' | 'percent';\n /**\n * Converts value to radians based on given type.\n * @param data - The value to convert to radians\n * @param option - Conversion type configuration\n * @param option.type - Type of conversion:\n * 'degreeAngle' - Converts from degrees to radians\n * 'ratio' - Multiplies value by 2\u03C0 (input range 0-1)\n * 'percent' - Converts percentage to 2\u03C0 ratio (input range 0-100)\n * @returns The converted value in radians\n * @example\n * // Convert 180 degrees to radians (3.14...)\n * radians(180, {type: 'degreeAngle'})\n *\n * // Convert 0.5 ratio to radians (3.14...)\n * radians(0.5, {type: 'ratio'})\n *\n * // Convert 50% to radians (3.14...)\n * radians(50, {type: 'percent'})\n */\n export const radians = (data: number, {type = 'degreeAngle'}: {type?: AngleUnitType}): number => {\n /*\n radian\n * 1.57..: 90\uB3C4, PI/2\n * 3.14..: 180\uB3C4, PI\n * 4.71..: 270\uB3C4, PI + PI/2\n * 6.28..: 360\uB3C4, PI * 2\n */\n if (type === 'ratio') {\n return (data * 2) * Math.PI;\n } else if (type === 'percent') {\n return ((data / 100) * 2) * Math.PI;\n } else {\n // return data * Math.PI / 180;\n return data / 180 * Math.PI;\n }\n };\n\n export const degrees = (data: number, {type = 'degreeAngle'}: {type?: AngleUnitType}): number => {\n if (type === 'ratio') {\n return data * 360;\n } else if (type === 'percent') {\n return (data / 100) * 360;\n } else {\n return data * 180 / Math.PI;\n }\n };\n // static createCanvas(w, h) {\n // let canvas = document.createElement('canvas');\n // canvas.width = w;\n // canvas.height = h;\n // return canvas;\n // }\n //\n // static copyCanvas(canvas) {\n // let newCanvas = document.createElement('canvas');\n // newCanvas.width = canvas.width;\n // newCanvas.height = canvas.height;\n // context = newCanvas.getContext('2d');\n // context.drawImage(canvas, 0, 0);\n // return newCanvas;\n // }\n\n /**\n 1. \uBE44\uC728\uC758 \uAC1C\uB150\n \uBE44\uC728(Ratio): \uB450 \uC591\uC758 \uC0C1\uB300\uC801\uC778 \uD06C\uAE30\uB97C \uBE44\uAD50\uD55C \uAC12\uC73C\uB85C, \uC77C\uBC18\uC801\uC73C\uB85C \uBD84\uC218\uB098 \uC18C\uC218\uB85C \uD45C\uD604\uB429\uB2C8\uB2E4. \uC608\uB97C \uB4E4\uC5B4, \"2:3\" \uBE44\uC728\uC740 \uB450 \uC218\uC758 \uBE44\uAC00 2 \uB300 3\uC774\uB77C\uB294 \uB73B\uC774\uBA70, \uC774\uB294 2/3\uB85C\uB3C4 \uB098\uD0C0\uB0BC \uC218 \uC788\uC2B5\uB2C8\uB2E4.\n \uB2E8\uC704 \uBE44\uC728(Normalized Ratio): \uD55C \uAC12\uC744 \uAE30\uC900\uC73C\uB85C \uB2E4\uB978 \uAC12\uC744 \uC870\uC815\uD55C \uBE44\uC728\uC744 \uC758\uBBF8\uD569\uB2C8\uB2E4. \uC5EC\uAE30\uC11C\uB294 \uB108\uBE44(w)\uB97C 1\uB85C \uC815\uADDC\uD654(normalize)\uD558\uC5EC \uB192\uC774(h)\uC758 \uC0C1\uB300\uC801 \uAC12\uC744 \uAD6C\uD558\uB294 \uAC83\uC774 \uBAA9\uD45C\uC785\uB2C8\uB2E4.\n \uC774\uBBF8\uC9C0 \uBE44\uC728: \uC774\uBBF8\uC9C0\uC758 \uB108\uBE44\uC640 \uB192\uC774 \uBE44\uC728\uC740 \uBCF4\uD1B5 \"w:h\" \uD615\uC2DD\uC73C\uB85C \uD45C\uD604\uB418\uBA70, \uC774 \uBE44\uC728\uC744 \uC720\uC9C0\uD558\uBA74\uC11C \uD06C\uAE30\uB97C \uC870\uC815\uD560 \uB54C \uC720\uC6A9\uD569\uB2C8\uB2E4.\n 2. \uACC4\uC0B0 \uBC29\uBC95\n \uC8FC\uC5B4\uC9C4 \uB370\uC774\uD130:\n\n \uB108\uBE44(w) = 1652 \uD53D\uC140\n \uB192\uC774(h) = 421 \uD53D\uC140\n \uBAA9\uD45C: \uB108\uBE44\uB97C 1\uB85C \uBCF4\uC558\uC744 \uB54C \uB192\uC774\uC758 \uAC12 \uAD6C\uD558\uAE30\n \uB2E8\uACC4\uBCC4 \uACC4\uC0B0\n \uC6D0\uB798 \uBE44\uC728 \uAD6C\uD558\uAE30:\n \uC774\uBBF8\uC9C0\uC758 \uBE44\uC728\uC740 w:h = 1652:421\uC785\uB2C8\uB2E4.\n \uC774\uB97C \uBD84\uC218\uB85C \uD45C\uD604\uD558\uBA74 1652 / 421\uC785\uB2C8\uB2E4.\n \uB108\uBE44\uB97C 1\uB85C \uC815\uADDC\uD654:\n \uB108\uBE44\uB97C 1\uB85C \uB9CC\uB4E4\uAE30 \uC704\uD574, \uC6D0\uB798 \uB108\uBE44(1652)\uB97C 1\uB85C \uB098\uB204\uACE0, \uC774\uB97C \uB192\uC774\uC5D0\uB3C4 \uB3D9\uC77C\uD558\uAC8C \uC801\uC6A9\uD569\uB2C8\uB2E4.\n \uC815\uADDC\uD654\uB41C \uB192\uC774 = \uC6D0\uB798 \uB192\uC774(h) \u00F7 \uC6D0\uB798 \uB108\uBE44(w)\n \uC218\uC2DD: h' = h / w (\uC5EC\uAE30\uC11C h'\uB294 \uC815\uADDC\uD654\uB41C \uB192\uC774)\n \uACC4\uC0B0 \uC801\uC6A9:\n \uC815\uADDC\uD654\uB41C \uB192\uC774 = 421 / 1652\n \uACC4\uC0B0: 421 \u00F7 1652 \u2248 0.25485 (\uC18C\uC218\uC810 \uC57D 5\uC790\uB9AC\uAE4C\uC9C0)\n \uACB0\uACFC \uD574\uC11D:\n \uB108\uBE44\uAC00 1\uC77C \uB54C \uB192\uC774\uB294 \uC57D 0.25485\uC785\uB2C8\uB2E4. \uC774\uB294 \uB192\uC774\uAC00 \uB108\uBE44\uC758 \uC57D 25.485%\uC5D0 \uD574\uB2F9\uD568\uC744 \uC758\uBBF8\uD569\uB2C8\uB2E4.\n \uAC80\uC99D\n \uC6D0\uB798 \uBE44\uC728\uC744 \uC720\uC9C0\uD558\uB824\uBA74, \uC815\uADDC\uD654\uB41C \uAC12\uC744 \uC5ED\uC73C\uB85C \uC801\uC6A9\uD574 \uC6D0\uB798 \uAC12\uC744 \uBCF5\uC6D0\uD560 \uC218 \uC788\uC5B4\uC57C \uD569\uB2C8\uB2E4.\n \uC815\uADDC\uD654\uB41C \uBE44\uC728(0.25485)\uC744 1652\uC5D0 \uACF1\uD558\uBA74: 1652 * 0.25485 \u2248 421, \uC774\uB294 \uC6D0\uB798 \uB192\uC774\uC640 \uC77C\uCE58\uD558\uBBC0\uB85C \uACC4\uC0B0\uC774 \uC62C\uBC14\uB984.\n 3. \uC218\uC2DD \uC815\uB9AC\n \uC77C\uBC18\uC801\uC778 \uC815\uADDC\uD654 \uC218\uC2DD:\n \uC815\uADDC\uD654\uB41C \uB192\uC774(h') = h / w\n \uC815\uADDC\uD654\uB41C \uB108\uBE44(w') = w / w = 1 (\uAE30\uC900\uAC12)\n \uC774 \uBB38\uC81C \uC801\uC6A9:\n h' = 421 / 1652 \u2248 0.25485\n 4. \uB300\uC548: \uBE44\uC728\uB85C \uD45C\uD604\n \uBE44\uC728\uC744 \"1:\uBE44\uC728\uAC12\" \uD615\uC2DD\uC73C\uB85C \uD45C\uD604\uD558\uB824\uBA74, \uB192\uC774\uB97C \uB108\uBE44\uB85C \uB098\uB208 \uAC12\uC744 \uADF8\uB300\uB85C \uC0AC\uC6A9.\n \uACB0\uACFC: 1 : 0.25485 \uB610\uB294 \uC57D 1 : 0.255 (\uC18C\uC218\uC810 \uBC18\uC62C\uB9BC).\n 5. \uCD94\uAC00 \uAC1C\uB150\n \uBE44\uB840\uC2DD: \uC774\uBBF8\uC9C0 \uD06C\uAE30\uB97C \uC870\uC815\uD560 \uB54C \uBE44\uC728\uC744 \uC720\uC9C0\uD558\uB824\uBA74, w1 / h1 = w2 / h2\uB97C \uB9CC\uC871\uD574\uC57C \uD569\uB2C8\uB2E4. \uC5EC\uAE30\uC11C w2 = 1\uB85C \uC124\uC815\uD55C \uACBD\uC6B0, h2 = h1 / w1\uC774 \uB429\uB2C8\uB2E4.\n \uC2E4\uC81C \uC801\uC6A9: \uC6F9 \uB514\uC790\uC778\uC774\uB098 \uADF8\uB798\uD53D\uC5D0\uC11C \uC774\uBBF8\uC9C0\uB97C \uB9AC\uC0AC\uC774\uC9D5\uD560 \uB54C, \uC6D0\uBCF8 \uBE44\uC728(1652:421)\uC744 \uC720\uC9C0\uD558\uB824\uBA74 \uC774 \uC815\uADDC\uD654\uB41C \uAC12\uC744 \uC0AC\uC6A9\uD574 \uB192\uC774\uB97C \uACC4\uC0B0.\n <script>\n const w = 1652;\n const h = 421;\n const normalizedHeight = h / w;\n console.log(`\uC815\uADDC\uD654\uB41C \uB192\uC774: ${normalizedHeight.toFixed(5)}`); // 0.25485\n console.log(`\uC6D0\uB798 \uBE44\uC728 \uD655\uC778: ${w * normalizedHeight} \u2248 ${h}`); // \uC57D 421\n </script>\n */\n export const ratio = (numerator: number, denominator: number, multiplier: number = 1): number => {\n // numerator(\uBD84\uC790) : denominator(\uBD84\uBAA8) = multiplier : x\n // x = multiplier * denominator / numerator\n return multiplier * (denominator / numerator)\n // a:b = c:x \uBE44\uB840\uC2DD\uC744 \uC774\uC6A9\uD574 x \uAC12\uC744 \uAD6C\uD568\n // ax = bc\n // x = bc/a\n }\n //end - start \uB05D\uACFC \uC2DC\uC791\uC758 \uC0AC\uC774\uAE38\uC774\uB97C \uCDE8\uB4DD\uD55C\uB2E4.\n export const getBetweenLength = (start: number, end: number) => {\n return end - start;\n };\n\n //\uC804\uCCB4\uAC12\uC5D0\uC11C \uC77C\uBD80\uAC12\uC740 \uBA87 \uD37C\uC13C\uD2B8? \uACC4\uC0B0\uBC95 \uACF5\uC2DD tot\uC5D0\uC11C data\uB294 \uBA87%\uC778\uAC00.\n export const getPercentByTotal = (tot: number, data: number) => {\n /*\n \uC804\uCCB4\uAC12\uC5D0\uC11C \uC77C\uBD80\uAC12\uC740 \uBA87 \uD37C\uC13C\uD2B8? \uACC4\uC0B0\uBC95 \uACF5\uC2DD\n \uC77C\uBD80\uAC12 \u00F7 \uC804\uCCB4\uAC12 X 100\n \uC608\uC81C) 300\uC5D0\uC11C 105\uB294 \uBA87\uD37C\uC13C\uD2B8?\n \uB2F5: 35%\n */\n return (data / tot) * 100;\n };\n export const getRatioByTotal = (tot: number, data: number) => {\n return (data / tot)\n };\n\n //\uC804\uCCB4\uAC12\uC758 \uBA87 \uD37C\uC13C\uD2B8\uB294 \uC5BC\uB9C8? \uACC4\uC0B0\uBC95 \uACF5\uC2DD tot\uC5D0\uC11C wantPercent\uB294 \uBA87\uC778\uAC00?\n export const getValueByTotalInPercent = (tot: number, wantPercent: number) => {\n /*\n \uC804\uCCB4\uAC12 X \uD37C\uC13C\uD2B8 \u00F7 100\n \uC608\uC81C) 300\uC758 35\uD37C\uC13C\uD2B8\uB294 \uC5BC\uB9C8?\n \uB2F5) 105\n */\n return (tot * wantPercent) / 100;\n };\n export const getValueByTotalInRatio = (tot: number, ratio: number) => {\n return (tot * ratio);\n };\n\n //\uC22B\uC790\uB97C \uBA87 \uD37C\uC13C\uD2B8 \uC99D\uAC00\uC2DC\uD0A4\uB294 \uACF5\uC2DD tot\uC5D0\uC11C wantPercent\uC744 \uC99D\uAC00 \uC2DC\uD0A8\uB2E4\n export const getValuePercentUp = (tot: number, wantPercent: number) => {\n /*\n \uC22B\uC790\uB97C \uBA87 \uD37C\uC13C\uD2B8 \uC99D\uAC00\uC2DC\uD0A4\uB294 \uACF5\uC2DD\n \uC22B\uC790 X (1 + \uD37C\uC13C\uD2B8 \u00F7 100)\n \uC608\uC81C) 1548\uC744 66\uD37C\uC13C\uD2B8 \uC99D\uAC00\uD558\uBA74?\n \uB2F5) 2569.68\n */\n return tot * (1 + wantPercent / 100);\n };\n\n export const getValueRatioUp = (tot: number, ratio: number) => {\n return tot * (1 + ratio);\n }\n\n //\uC22B\uC790\uB97C \uBA87 \uD37C\uC13C\uD2B8 \uAC10\uC18C\uD558\uB294 \uACF5\uC2DD tot\uC5D0\uC11C wantPercent\uC744 \uC99D\uAC10 \uC2DC\uD0A8\uB2E4\n export const getValuePercentDown = (tot: number, wantPercent: number) => {\n /*\n \uC22B\uC790\uB97C \uBA87 \uD37C\uC13C\uD2B8 \uAC10\uC18C\uD558\uB294 \uACF5\uC2DD\n \uC22B\uC790 X (1 - \uD37C\uC13C\uD2B8 \u00F7 100)\n \uC608\uC81C) 1548\uC744 66\uD37C\uC13C\uD2B8 \uAC10\uC18C\uD558\uBA74?\n \uB2F5) 526.32\n */\n return tot * (1 - wantPercent / 100);\n };\n\n export const getValueRatioDown = (tot: number, ratio: number) => {\n return tot * (1 - ratio);\n }\n\n\n //\uBC14\uB840\uC2DD\n // A:B = C:X => 30:50 = 33 : x\n // 30X = 50*33\n // X = BC / 30\n\n\n // Bezier\n // https://cubic-bezier.com/#.17,.67,.83,.67\n // https://matthewlein.com/tools/ceaser\n // https://easings.net/ko#\n // (0.250, 0.250, 0.750, 0.750); /* linear */\n export const beziers = (points: (Point3D | { x: number; y: number, z: number })[], frame: number) => {\n const datas = new Array(frame).fill(undefined);\n for (let i = 0; i < datas.length; i++) {\n datas[i] = MathUtil.bezier(points, frame, i);\n }\n return datas;\n };\n\n // \uCC98\uC74C\uC810\uC740 \uD3EC\uD568\uB418\uC9C0 \uC54A\uB294\uB2E4, \uB05D\uC810\uC740 \uD3EC\uD568\uB41C\uB2E4.\n export const bezier = (points: (Point3D | { x: number; y: number, z: number })[], frame: number, idx: number): Vector => {\n if (points && points.length > 0) {\n const pv = points.map(it => new Vector(it.x, it.y, it.z));\n const steps: Vector[] = [];\n pv.reduce((a, b) => {\n const step = a.toSub(b).div(frame).mult(idx + 1);\n steps.push(a.toSub(step));\n return b;\n });\n\n if (steps.length <= 1) {\n return steps[0];\n }\n return MathUtil.bezier(steps.map(it => new Point3D(it)), frame, idx);\n } else {\n return new Vector();\n }\n };\n\n // \uC2DC\uC791\uC810\uACFC \uB05D\uC810\uC740 \uD3EC\uD568\uD558\uC9C0 \uC54A\uB294\uB2E4.\n export function cubicBezier(position: { start: number; end: number; }, frameConfig: { frame: number; }, bezierConfig: BezierConfig): number[];\n export function cubicBezier(position: { start: Obj; end: Obj; }, frameConfig: { frame: number; }, bezierConfig: BezierConfig): Obj[];\n export function cubicBezier(position: { start: Point3D; end: Point3D; }, frameConfig: { frame: number; }, bezierConfig: BezierConfig): Point3D[];\n export function cubicBezier(\n position: {\n start: number; // \uC2DC\uC791 \uAC12\n end: number; // \uB05D \uAC12\n } | {\n start: Point3D; // \uC2DC\uC791 \uAC12\n end: Point3D; // \uB05D \uAC12\n } | {\n start: Obj; // \uC2DC\uC791 \uAC12\n end: Obj; // \uB05D \uAC12\n },\n frameConfig: {\n // includeStartEnd?: boolean,\n frame: number; // \uD504\uB808\uC784 \uC218 (\uBC30\uC5F4 \uD06C\uAE30)\n },\n bezierConfig: BezierConfig\n ): number[] | Point3D[] | Obj[] {\n\n\n if (position.start instanceof Obj && position.end instanceof Obj) {\n const x = MathUtil.cubicBezier({start: position.start.x, end: position.end.x}, frameConfig, bezierConfig);\n const y = MathUtil.cubicBezier({start: position.start.y, end: position.end.y}, frameConfig, bezierConfig);\n const z = MathUtil.cubicBezier({start: position.start.z, end: position.end.z}, frameConfig, bezierConfig);\n const v = MathUtil.cubicBezier({start: position.start.volume, end: position.end.volume}, frameConfig, bezierConfig);\n const m = MathUtil.cubicBezier({start: position.start.mass, end: position.end.mass}, frameConfig, bezierConfig);\n const e = MathUtil.cubicBezier({start: position.start.e, end: position.end.e}, frameConfig, bezierConfig);\n const r = MathUtil.cubicBezier({start: position.start.rotate, end: position.end.rotate}, frameConfig, bezierConfig);\n const w = MathUtil.cubicBezier({start: position.start.width, end: position.end.width}, frameConfig, bezierConfig);\n const h = MathUtil.cubicBezier({start: position.start.height, end: position.end.height}, frameConfig, bezierConfig);\n const t0 = MathUtil.cubicBezier({start: position.start.transform[0], end: position.end.transform[0]}, frameConfig, bezierConfig);\n const t1 = MathUtil.cubicBezier({start: position.start.transform[1], end: position.end.transform[1]}, frameConfig, bezierConfig);\n const t2 = MathUtil.cubicBezier({start: position.start.transform[2], end: position.end.transform[2]}, frameConfig, bezierConfig);\n const t3 = MathUtil.cubicBezier({start: position.start.transform[3], end: position.end.transform[3]}, frameConfig, bezierConfig);\n const t4 = MathUtil.cubicBezier({start: position.start.transform[4], end: position.end.transform[4]}, frameConfig, bezierConfig);\n const t5 = MathUtil.cubicBezier({start: position.start.transform[5], end: position.end.transform[5]}, frameConfig, bezierConfig);\n const colorR = MathUtil.cubicBezier({start: position.start.color.r ?? 0, end: position.end.color.r ?? 0}, frameConfig, bezierConfig);\n const colorG = MathUtil.cubicBezier({start: position.start.color.g ?? 0, end: position.end.color.g ?? 0}, frameConfig, bezierConfig);\n const colorB = MathUtil.cubicBezier({start: position.start.color.b ?? 0, end: position.end.color.b ?? 0}, frameConfig, bezierConfig);\n const colorA = MathUtil.cubicBezier({start: position.start.color.a ?? 255, end: position.end.color.a ?? 255}, frameConfig, bezierConfig);\n const objs = x.map((x, idx) => {\n const obj = new Obj({x, y: y[idx], z: z[idx]});\n obj.volume = v[idx];\n obj.mass = m[idx];\n obj.e = e[idx];\n obj.rotate = r[idx];\n obj.width = w[idx];\n obj.height = h[idx];\n obj.transform = [t0[idx], t1[idx], t2[idx], t3[idx], t4[idx], t5[idx]];\n obj.color = {r: colorR[idx], g: colorG[idx], b: colorB[idx], a: colorA[idx]};\n return obj;\n });\n return objs;\n } else if (position.start instanceof Point3D && position.end instanceof Point3D) {\n const x = MathUtil.cubicBezier({start: position.start.x, end: position.end.x}, frameConfig, bezierConfig);\n const y = MathUtil.cubicBezier({start: position.start.y, end: position.end.y}, frameConfig, bezierConfig);\n const z = MathUtil.cubicBezier({start: position.start.z, end: position.end.z}, frameConfig, bezierConfig);\n return x.map((x, idx) => new Point3D(x, y[idx], z[idx]));\n }\n\n\n const {start, end} = position as { start: number, end: number };\n\n // ----\n\n const {frame} = frameConfig;\n let {p1x, p1y, p2x, p2y} = Array.isArray(bezierConfig) ? {p1x: bezierConfig[0], p1y: bezierConfig[1], p2x: bezierConfig[2], p2y: bezierConfig[3]} : bezierConfig;\n p1x = p1x === 'random' ? Math.random() : p1x;\n p1y = p1y === 'random' ? Math.random() : p1y;\n p2x = p2x === 'random' ? Math.random() : p2x;\n p2y = p2y === 'random' ? Math.random() : p2y;\n\n const result: number[] = [];\n const totalChange = end - start;\n\n // console.log('----222->',totalChange);\n\n // 3\uCC28 \uBCA0\uC9C0\uC5B4 \uACE1\uC120 \uACF5\uC2DD\n const bezier = (t: number): number => {\n const t2 = Number(t * t);\n const t3 = Number(t2 * t);\n const mt = Number(1 - t);\n const mt2 = Number(mt * mt);\n const mt3 = Number(mt2 * mt);\n\n return mt3 * 0 + 3 * mt2 * t * Number(p1y) + 3 * mt * t2 * Number(p2y) + t3 * 1;\n };\n\n // frame \uC218\uB9CC\uD07C \uACC4\uC0B0, \uC2DC\uC791\uC810, \uB05D\uC810 \uC81C\uC678\n const targetFrame = frame + 1;\n for (let i = 1; i < targetFrame; i++) {\n // const t = frame <= 1 ? 1 : (i + 1) / frame;\n // const t = frame <= 1 ? 1 : (i + 1) / frame;\n const t = i / targetFrame;\n const progress = bezier(t);\n // console.log('pppppppp', progress);\n const value = start + totalChange * progress;\n result.push(value);\n }\n\n return result;\n\n }\n\n export const diff = (a: number, b: number) => {\n return Math.abs(a - b);\n };\n\n /*\n > \uD22C\uC601\uBD80\uBD84? \uC800\uBD80\uBD84 \uD575\uC2EC\uBD80\uBD84 \uB354 \uC790\uC138\uD558\uAC8C \uC54C\uB824\uC904\uB798\n\n\u2726 \uB124, \uADF8\uB7FC\uC694. \uC774 \uBD80\uBD84\uC774 \uAE30\uD558\uD559\uC801\uC73C\uB85C \uC5B4\uB5A4 \uC758\uBBF8\uB97C \uAC00\uC9C0\uB294\uC9C0 \uADF8\uB9BC\uACFC \uD568\uAED8 \uBA38\uB9BF\uC18D\uC73C\uB85C \uC0C1\uC0C1\uD558\uBA70 \uC774\uD574\uD558\uBA74\n \uC27D\uC2B5\uB2C8\uB2E4.\n\n \uD575\uC2EC \uC544\uC774\uB514\uC5B4: \uADF8\uB9BC\uC790 \uB0B4\uB9AC\uAE30 (Projection)\n\n \uAC00\uC7A5 \uAC04\uB2E8\uD55C \uBE44\uC720\uB294 \uADF8\uB9BC\uC790\uC785\uB2C8\uB2E4.\n\n\n * `\uC120\uBD84 vw`: \uB545\uC5D0 \uB193\uC5EC\uC788\uB294 \uB9C9\uB300\uAE30\uB77C\uACE0 \uC0C1\uC0C1\uD574 \uBCF4\uC138\uC694. (v\uB294 \uC2DC\uC791\uC810, w\uB294 \uB05D\uC810)\n * `\uC810 p`: \uACF5\uC911\uC5D0 \uB5A0 \uC788\uB294 \uB9C8\uC6B0\uC2A4 \uCEE4\uC11C\uB77C\uACE0 \uC0C1\uC0C1\uD574 \uBCF4\uC138\uC694.\n * \uBAA9\uD45C: \uB9C8\uC6B0\uC2A4 \uCEE4\uC11C(p)\uC5D0\uC11C \uB9C9\uB300\uAE30(vw)\uAE4C\uC9C0 \uAC00\uC7A5 \uAC00\uAE4C\uC6B4 \uC9C0\uC810\uC744 \uCC3E\uB294 \uAC83.\n\n\n \uAC00\uC7A5 \uAC00\uAE4C\uC6B4 \uC9C0\uC810\uC740 p\uC5D0\uC11C \uB9C9\uB300\uAE30\uB85C \uC218\uC9C1\uC73C\uB85C \uC120\uC744 \uB0B4\uB838\uC744 \uB54C \uB9CC\uB098\uB294 \uC810\uC785\uB2C8\uB2E4. \uB9C8\uCE58 p \uBC14\uB85C \uC704\uC5D0 \uC190\uC804\uB4F1\uC744\n \uCF1C\uC11C \uB9C9\uB300\uAE30\uC5D0 \uADF8\uB9BC\uC790\uB97C \uB9CC\uB4DC\uB294 \uAC83\uACFC \uAC19\uC2B5\uB2C8\uB2E4. \uC774 \uADF8\uB9BC\uC790\uAC00 \uB5A8\uC5B4\uC9C0\uB294 \uC9C0\uC810\uC774 \uBC14\uB85C \uD22C\uC601(projection)\uC785\uB2C8\uB2E4.\n\n ---\n\n \uCF54\uB4DC \uC0C1\uC138 \uBD84\uC11D\n\n\n let t = ((p.x - v.x) * (w.x - v.x) + (p.y - v.y) * (w.y - v.y)) / l2;\n\n \uC774 \uD55C \uC904\uC758 \uCF54\uB4DC\uB294 \uBC14\uB85C \uADF8 '\uADF8\uB9BC\uC790\uAC00 \uB9C9\uB300\uAE30\uC758 \uC5B4\uB514\uC5D0 \uB5A8\uC5B4\uC9C0\uB294\uAC00'\uB97C \uACC4\uC0B0\uD558\uB294 \uACFC\uC815\uC785\uB2C8\uB2E4. \uC5EC\uAE30\uC11C t\uB294\n \uBE44\uC728\uC744 \uC758\uBBF8\uD569\uB2C8\uB2E4.\n\n 1. \uBCA1\uD130(Vector)\uB85C \uC0DD\uAC01\uD558\uAE30\n\n\n \uCF54\uB4DC\uB97C \uC774\uD574\uD558\uAE30 \uC704\uD574 \uB450 \uAC1C\uC758 \uBCA1\uD130\uB97C \uC0DD\uAC01\uD574\uC57C \uD569\uB2C8\uB2E4.\n\n\n * \uBCA1\uD130 1 (`vw`): \uB9C9\uB300\uAE30 \uC790\uCCB4\uC758 \uBC29\uD5A5\uACFC \uAE38\uC774\uB97C \uB098\uD0C0\uB0B4\uB294 \uBCA1\uD130\uC785\uB2C8\uB2E4.\n * w.x - v.x (x\uBC29\uD5A5)\n * w.y - v.y (y\uBC29\uD5A5)\n * \uBCA1\uD130 2 (`vp`): \uB9C9\uB300\uAE30 \uC2DC\uC791\uC810\uC5D0\uC11C \uB9C8\uC6B0\uC2A4 \uCEE4\uC11C\uAE4C\uC9C0\uC758 \uBCA1\uD130\uC785\uB2C8\uB2E4.\n * p.x - v.x (x\uBC29\uD5A5)\n * p.y - v.y (y\uBC29\uD5A5)\n\n\n 2. \uBD84\uC790: \uBCA1\uD130 \uB0B4\uC801 (Dot Product)\n\n ((p.x - v.x) * (w.x - v.x) + (p.y - v.y) * (w.y - v.y))\n\n\n \uC774 \uBD80\uBD84\uC740 \uB450 \uBCA1\uD130 vp\uC640 vw\uC758 \uB0B4\uC801(dot product)\uC744 \uACC4\uC0B0\uD558\uB294 \uACF5\uC2DD\uC785\uB2C8\uB2E4. \uBCA1\uD130 \uB0B4\uC801\uC740 \uB450 \uBCA1\uD130\uAC00 \uC5BC\uB9C8\uB098\n \"\uAC19\uC740 \uBC29\uD5A5\uC744 \uBC14\uB77C\uBCF4\uACE0 \uC788\uB294\uC9C0\"\uB97C \uB098\uD0C0\uB0B4\uB294 \uC218\uCE58\uC785\uB2C8\uB2E4.\n\n\n * \uB450 \uBCA1\uD130\uAC00 \uC11C\uB85C \uC218\uC9C1\uC774\uBA74 \uB0B4\uC801\uC740 0\uC785\uB2C8\uB2E4.\n * \uB450 \uBCA1\uD130\uAC00 \uAC19\uC740 \uBC29\uD5A5\uC744 \uBCFC\uC218\uB85D \uB0B4\uC801 \uAC12\uC740 \uCEE4\uC9D1\uB2C8\uB2E4.\n\n \uAE30\uD558\uD559\uC801\uC73C\uB85C, `vp` \uBCA1\uD130\uB97C `vw` \uBCA1\uD130 \uC704\uB85C \uD22C\uC601(\uADF8\uB9BC\uC790)\uC2DC\uCF30\uC744 \uB54C\uC758 \uAE38\uC774\uC640 \uAD00\uB828\uC774 \uC788\uC2B5\uB2C8\uB2E4.\n\n 3. \uBD84\uBAA8: l2\n\n\n l2\uB294 \uC55E\uC5D0\uC11C \uACC4\uC0B0\uD588\uB4EF\uC774 \uB9C9\uB300\uAE30 \uBCA1\uD130 vw\uC758 \uAE38\uC774\uC758 \uC81C\uACF1\uC785\uB2C8\uB2E4.\n\n 4. t\uC758 \uC758\uBBF8: \uBE44\uC728\n\n \uACB0\uAD6D t\uB294 \uB2E4\uC74C\uACFC \uAC19\uC774 \uACC4\uC0B0\uB429\uB2C8\uB2E4.\n\n t = (\uBCA1\uD130 vp\uC640 vw\uC758 \uB0B4\uC801) / (\uBCA1\uD130 vw\uC758 \uAE38\uC774 \uC81C\uACF1)\n\n\n \uC774 t \uAC12\uC774 \uBC14\uB85C \uD22C\uC601\uB41C \uADF8\uB9BC\uC790 \uC9C0\uC810\uC774 \uB9C9\uB300\uAE30 \uC2DC\uC791\uC810 `v`\uB85C\uBD80\uD130 \uC5BC\uB9C8\uB098 \uB5A8\uC5B4\uC838 \uC788\uB294\uC9C0\uB97C \uB098\uD0C0\uB0B4\uB294 \uBE44\uC728\uC774\n \uB429\uB2C8\uB2E4.\n\n\n * `t = 0`: \uADF8\uB9BC\uC790\uAC00 \uC815\uD655\uD788 \uB9C9\uB300\uAE30 \uC2DC\uC791\uC810 v\uC5D0 \uB5A8\uC5B4\uC9D1\uB2C8\uB2E4.\n * `t = 1`: \uADF8\uB9BC\uC790\uAC00 \uC815\uD655\uD788 \uB9C9\uB300\uAE30 \uB05D\uC810 w\uC5D0 \uB5A8\uC5B4\uC9D1\uB2C8\uB2E4.\n * `t = 0.5`: \uADF8\uB9BC\uC790\uAC00 \uC815\uD655\uD788 \uB9C9\uB300\uAE30 \uD55C\uAC00\uC6B4\uB370\uC5D0 \uB5A8\uC5B4\uC9D1\uB2C8\uB2E4.\n * `t < 0` (\uC608: `t = -0.2`): p\uAC00 v\uC758 \"\uB4A4\uCABD\"\uC5D0 \uC788\uC5B4\uC11C, \uADF8\uB9BC\uC790\uAC00 \uB9C9\uB300\uAE30 \uC2DC\uC791\uC810 \uC774\uC804\uC5D0 \uB5A8\uC5B4\uC9D1\uB2C8\uB2E4.\n (\uB9C9\uB300\uAE30\uB97C \uBB34\uD55C\uD55C \uC9C1\uC120\uC73C\uB85C \uBD24\uC744 \uB54C)\n * `t > 1` (\uC608: `t = 1.5`): p\uAC00 w\uC758 \"\uC55E\uCABD\"\uC5D0 \uC788\uC5B4\uC11C, \uADF8\uB9BC\uC790\uAC00 \uB9C9\uB300\uAE30 \uB05D\uC810\uC744 \uC9C0\uB098\uC11C \uB5A8\uC5B4\uC9D1\uB2C8\uB2E4.\n (\uB9C9\uB300\uAE30\uB97C \uBB34\uD55C\uD55C \uC9C1\uC120\uC73C\uB85C \uBD24\uC744 \uB54C)\n\n \uACB0\uB860\n\n\n \uC774 t \uAC12\uC744 \uACC4\uC0B0\uD558\uB294 \uAC83\uC774 \uD575\uC2EC\uC778 \uC774\uC720\uB294, \uB9C8\uC6B0\uC2A4 \uD3EC\uC778\uD130(p)\uC640 \uAC00\uC7A5 \uAC00\uAE4C\uC6B4 \uC810\uC774 \uB9C9\uB300\uAE30 \uB0B4\uBD80\uC5D0 \uC788\uB294\uC9C0,\n \uC544\uB2C8\uBA74 \uC591\uCABD \uB05D\uC810 \uC911 \uD558\uB098\uC778\uC9C0 \uD310\uB2E8\uD560 \uC218 \uC788\uB294 \uAE30\uC900\uC744 \uC81C\uACF5\uD558\uAE30 \uB54C\uBB38\uC785\uB2C8\uB2E4.\n\n\n * t\uAC00 0\uACFC 1 \uC0AC\uC774\uC5D0 \uC788\uB2E4\uBA74, \uAC00\uC7A5 \uAC00\uAE4C\uC6B4 \uC810\uC740 \uB9C9\uB300\uAE30 \uC704\uC758 '\uADF8\uB9BC\uC790' \uC9C0\uC810\uC785\uB2C8\uB2E4.\n * t\uAC00 0\uBCF4\uB2E4 \uC791\uB2E4\uBA74, \uAC00\uC7A5 \uAC00\uAE4C\uC6B4 \uC810\uC740 \uB9C9\uB300\uAE30\uC758 \uC2DC\uC791\uC810 v\uC785\uB2C8\uB2E4.\n * t\uAC00 1\uBCF4\uB2E4 \uD06C\uB2E4\uBA74, \uAC00\uC7A5 \uAC00\uAE4C\uC6B4 \uC810\uC740 \uB9C9\uB300\uAE30\uC758 \uB05D\uC810 w\uC785\uB2C8\uB2E4.\n\n\n \uC774\uAC83\uC774 \uBC14\uB85C \uB2E4\uC74C \uCF54\uB4DC \uB77C\uC778 t = Math.max(0, Math.min(1, t));\uAC00 t\uB97C 0\uACFC 1 \uC0AC\uC774\uB85C \uC81C\uD55C\uD558\uB294 \uC774\uC720\uC785\uB2C8\uB2E4.\n \uC774\uB85C\uC368 \uAC00\uC7A5 \uAC00\uAE4C\uC6B4 \uC810\uC774 \uD56D\uC0C1 \uC120\uBD84 \uC704(\uC591 \uB05D\uC810 \uD3EC\uD568)\uC5D0 \uC788\uB3C4\uB85D \uBCF4\uC7A5\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.\n */\nexport const distSqToLineSegment = (p: Point2D, v: Point2D, w: Point2D): number => {\n const l2 = (v.x - w.x) ** 2 + (v.y - w.y) ** 2;\n if (l2 === 0) return (p.x - v.x) ** 2 + (p.y - v.y) ** 2;\n let t = ((p.x - v.x) * (w.x - v.x) + (p.y - v.y) * (w.y - v.y)) / l2;\n t = Math.max(0, Math.min(1, t));\n const projection = { x: v.x + t * (w.x - v.x), y: v.y + t * (w.y - v.y) };\n return (p.x - projection.x) ** 2 + (p.y - projection.y) ** 2;\n };\n // static bezirePointToPointVector(point: {point1: Point, point2?: Point, point3?: Point, point4?: Point}) {\n // if (!point.point2) {\n // point.point2 = point.point1;\n // }\n // if (!point.point3) {\n // point.point3 = point.point2;\n // }\n // if (!point.point4) {\n // point.point4 = point.point3;\n // }\n // return {\n // point1: new PointVector(point.point1.x, point.point1.y, point.point1.z),\n // point2: new PointVector(point.point2.x, point.point2.y, point.point2.z),\n // point3: new PointVector(point.point3.x, point.point3.y, point.point3.z),\n // point4: new PointVector(point.point4.x, point.point4.y, point.point4.z),\n // }\n // }\n // static bezier(point: {point1: Point, point2?: Point, point3?: Point, point4?: Point}, frame: number, idx: number) {\n // const pointVector = MathUtil.bezirePointToPointVector(point);\n //\n // const point12Step = PointVector.sub(pointVector.point1, pointVector.point2).div(frame).mult(idx + 1);\n // const point23Step = PointVector.sub(pointVector.point2, pointVector.point3).div(frame).mult(idx + 1);\n // const point34Step = PointVector.sub(pointVector.point3, pointVector.point4).div(frame).mult(idx + 1);\n //\n // pointVector.point1.sub(point12Step);\n // pointVector.point2.sub(point23Step);\n // pointVector.point3.sub(point34Step);\n //\n // const point12MoveStep = PointVector.sub(pointVector.point1, pointVector.point2).div(frame);\n // const point23MoveStep = PointVector.sub(pointVector.point2, pointVector.point3).div(frame);\n // // const point34MoveStep = PointVector.sub(point3, point4).div(frame); // \uB354\uC774\uC0C1\uAC08\uACF3\uC5C6\uC74C\n //\n // const cnt = idx + 1;\n // const point12MovePoint = point12MoveStep.mult(cnt)\n // const point23MovePoint = point23MoveStep.mult(cnt);\n // const combinationPoint1MovePoint = PointVector.sub(pointVector.point1, point12MovePoint); //new PointVector(point1.x - point12MovePoint.x, point1.y - point12MovePoint.y);\n // const combinationPoint2MovePoint = PointVector.sub(pointVector.point2, point23MovePoint); // new PointVector(point2.x - point23MovePoint.x, point2.y - point23MovePoint.y);\n //\n // const finalPointMoveStep = PointVector.sub(combinationPoint1MovePoint, combinationPoint2MovePoint).div(frame);\n // const finalPointMovePoint = finalPointMoveStep.mult(cnt);\n // const final = PointVector.sub(combinationPoint1MovePoint, finalPointMovePoint);\n // return final;\n // }\n //\n // static beziers(point: {point1: Point, point2?: Point, point3?: Point, point4?: Point}, frame: number) {\n // const pointVector = MathUtil.bezirePointToPointVector(point);\n // const frames = new Array(frame).fill(undefined) as PointVector[];\n // for (let i = 0; i < frame; i++) {\n // frames[i] = MathUtil.bezier(point, frame, i);\n // // pointVector.point1.sub(point12Step);\n // // pointVector.point2.sub(point23Step);\n // // pointVector.point3.sub(point34Step);\n // //\n // // const point12MoveStep = PointVector.sub(pointVector.point1, pointVector.point2).div(frame);\n // // const point23MoveStep = PointVector.sub(pointVector.point2, pointVector.point3).div(frame);\n // // // const point34MoveStep = PointVector.sub(point3, point4).div(frame); // \uB354\uC774\uC0C1\uAC08\uACF3\uC5C6\uC74C\n // //\n // // const cnt = i + 1;\n // // const point12MovePoint = point12MoveStep.mult(cnt)\n // // const point23MovePoint = point23MoveStep.mult(cnt);\n // // const combinationPoint1MovePoint = PointVector.sub(pointVector.point1, point12MovePoint); //new PointVector(point1.x - point12MovePoint.x, point1.y - point12MovePoint.y);\n // // const combinationPoint2MovePoint = PointVector.sub(pointVector.point2, point23MovePoint); // new PointVector(point2.x - point23MovePoint.x, point2.y - point23MovePoint.y);\n // //\n // // const finalPointMoveStep = PointVector.sub(combinationPoint1MovePoint, combinationPoint2MovePoint).div(frame);\n // // const finalPointMovePoint = finalPointMoveStep.mult(cnt);\n // // const final = PointVector.sub(combinationPoint1MovePoint, finalPointMovePoint);\n // }\n // return frames;\n // }\n\n\n// interface Point {\n// x: number;\n// y: number;\n// }\n//\n// interface BezierPathOptions {\n// /**\n// * \uC81C\uC5B4\uC810\uC744 \uC5BC\uB9C8\uB098 \uBA40\uB9AC \uB458\uC9C0 \uACB0\uC815\uD558\uB294 \uAC12\uC785\uB2C8\uB2E4. (\uAE30\uBCF8\uAC12: 0.25)\n// * 0 \uC774\uBA74 \uAC70\uC758 \uC9C1\uC120\uC5D0 \uAC00\uAE5D\uACE0, \uAC12\uC774 \uCEE4\uC9C8\uC218\uB85D \uACE1\uC120\uC758 \uD718\uC5B4\uC9D0\uC774 \uCEE4\uC9D1\uB2C8\uB2E4.\n// * \uC74C\uC218 \uAC12\uC744 \uC8FC\uBA74 \uBC18\uB300 \uBC29\uD5A5\uC73C\uB85C \uD729\uB2C8\uB2E4.\n// */\n// controlPointOffsetFactor?: number;\n//\n// /**\n// * \uC810\uB4E4\uC758 \uBD84\uD3EC\uB97C \uC870\uC808\uD558\uB294 \uAC00\uC18D\uB3C4 \uACC4\uC218\uC785\uB2C8\uB2E4. (\uAE30\uBCF8\uAC12: 1)\n// * 1: \uB4F1\uAC04\uACA9 (\uC120\uD615)\n// * > 1: \uC2DC\uC791 \uBD80\uBD84\uC5D0 \uC810\uB4E4\uC774 \uBAA8\uC774\uACE0 \uB05D\uC73C\uB85C \uAC08\uC218\uB85D \uAC04\uACA9\uC774 \uB113\uC5B4\uC9D0 (\uAC00\uC18D, ease-in)\n// * < 1: \uB05D \uBD80\uBD84\uC5D0 \uC810\uB4E4\uC774 \uBAA8\uC774\uACE0 \uC2DC\uC791 \uBD80\uBD84\uC758 \uAC04\uACA9\uC774 \uB113\uC5B4\uC9D0 (\uAC10\uC18D, ease-out)\n// * \uC608: 2\uB294 \uC81C\uACF1 \uAC00\uC18D, 0.5\uB294 \uC81C\uACF1\uADFC \uAC10\uC18D.\n// */\n// accelerationFactor?: number;\n// }\n//\n// /**\n// * 2\uCC28 \uBCA0\uC9C0\uC5D0 \uACE1\uC120 \uC704\uC758 \uD2B9\uC815 t \uAC12\uC5D0\uC11C\uC758 \uC810 \uC88C\uD45C\uB97C \uACC4\uC0B0\uD569\uB2C8\uB2E4.\n// * B(t) = (1-t)^2 * P0 + 2 * (1-t) * t * P1 + t^2 * P2\n// * @param t \uB9E4\uAC1C\uBCC0\uC218 (0\uC5D0\uC11C 1 \uC0AC\uC774)\n// * @param p0 \uC2DC\uC791\uC810\n// * @param p1 \uC81C\uC5B4\uC810\n// * @param p2 \uB05D\uC810\n// * @returns \uACC4\uC0B0\uB41C \uC810\uC758 \uC88C\uD45C\n// */\n// function quadraticBezier(t: number, p0: Point, p1: Point, p2: Point): Point {\n// const mt = 1 - t; // (1-t)\n// const mt2 = mt * mt; // (1-t)^2\n// const t2 = t * t; // t^2\n//\n// const x = mt2 * p0.x + 2 * mt * t * p1.x + t2 * p2.x;\n// const y = mt2 * p0.y + 2 * mt * t * p1.y + t2 * p2.y;\n//\n// return { x, y };\n// }\n//\n// /**\n// * \uCD9C\uBC1C\uC810\uACFC \uB3C4\uCC29\uC810 \uC0AC\uC774\uB97C \uC787\uB294 2\uCC28 \uBCA0\uC9C0\uC5D0 \uACE1\uC120\uC744 \uB530\uB77C \uC774\uB3D9\uD560 \uC88C\uD45C\uB4E4\uC744 \uACC4\uC0B0\uD569\uB2C8\uB2E4.\n// * @param startPoint \uCD9C\uBC1C\uC810 \uC88C\uD45C { x, y }\n// * @param endPoint \uB3C4\uCC29\uC810 \uC88C\uD45C { x, y }\n// * @param options \uBCA0\uC9C0\uC5D0 \uACE1\uC120 \uBC0F \uC810 \uBD84\uD3EC \uC635\uC158\n// * @param numberOfSteps \uC0DD\uC131\uD560 \uC911\uAC04 \uC774\uB3D9 \uC88C\uD45C\uC758 \uAC1C\uC218 (\uC774\uB3D9 \uACBD\uB85C\uC0C1\uC758 \uC810 \uAC1C\uC218)\n// * @returns \uACC4\uC0B0\uB41C \uC88C\uD45C\uB4E4\uC758 \uBC30\uC5F4 (startPoint\uB294 \uD3EC\uD568\uD558\uC9C0 \uC54A\uACE0, endPoint\uB294 \uD3EC\uD568)\n// */\n// function getPointsOnBezierPath(\n// startPoint: Point,\n// endPoint: Point,\n// options: BezierPathOptions = {}, // \uAE30\uBCF8\uAC12 \uBE48 \uAC1D\uCCB4\n// numberOfSteps: number\n// ): Point[] {\n// // --- \uC635\uC158 \uAE30\uBCF8\uAC12 \uC124\uC815 ---\n// const controlPointOffsetFactor = options.controlPointOffsetFactor ?? 0.25; // \uAE30\uBCF8\uAC12 0.25\n// const accelerationFactor = options.accelerationFactor ?? 1; // \uAE30\uBCF8\uAC12 1 (\uC120\uD615)\n//\n// // --- \uC785\uB825\uAC12 \uC720\uD6A8\uC131 \uAC80\uC0AC ---\n// if (numberOfSteps <= 0) {\n// console.warn(\"numberOfSteps\uB294 0\uBCF4\uB2E4 \uCEE4\uC57C \uD569\uB2C8\uB2E4.\");\n// return []; // \uBE48 \uBC30\uC5F4 \uBC18\uD658 \uB610\uB294 \uC5D0\uB7EC \uCC98\uB9AC\n// }\n//\n// const points: Point[] = [];\n// const p0 = startPoint;\n// const p2 = endPoint;\n//\n// // --- \uC81C\uC5B4\uC810(P1) \uC790\uB3D9 \uACC4\uC0B0 ---\n// const midX = (p0.x + p2.x) / 2;\n// const midY = (p0.y + p2.y) / 2;\n//\n// const deltaX = p2.x - p0.x;\n// const deltaY = p2.y - p0.y;\n//\n// const distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY);\n//\n// let p1: Point;\n//\n// if (distance === 0) {\n// // \uC2DC\uC791\uC810\uACFC \uB05D\uC810\uC774 \uAC19\uC73C\uBA74 \uC81C\uC5B4\uC810\uB3C4 \uAC19\uC740 \uC704\uCE58\uB85C \uC124\uC815 (\uC9C1\uC120 \uC774\uB3D9 \uC5C6\uC74C)\n// p1 = { ...p0 };\n// // \uC774 \uACBD\uC6B0, \uBAA8\uB4E0 \uACC4\uC0B0\uB41C \uC810\uC740 \uC2DC\uC791/\uB05D \uC810\uACFC \uB3D9\uC77C\uD558\uAC8C \uB429\uB2C8\uB2E4.\n// // \uC694\uCCAD\uC5D0 \uB530\uB77C \uBE48 \uBC30\uC5F4\uC744 \uBC18\uD658\uD558\uAC70\uB098, \uB05D\uC810\uC744 numberOfSteps\uB9CC\uD07C \uBC18\uD658\uD560 \uC218\uB3C4 \uC788\uC2B5\uB2C8\uB2E4.\n// // \uC5EC\uAE30\uC11C\uB294 \uACC4\uC0B0 \uB85C\uC9C1\uC744 \uADF8\uB300\uB85C \uB450\uC5B4 \uB3D9\uC77C\uD55C \uC810\uC774 \uBC18\uBCF5 \uC0DD\uC131\uB418\uB3C4\uB85D \uD569\uB2C8\uB2E4.\n// } else {\n// // \uC2DC\uC791\uC810\uC5D0\uC11C \uB05D\uC810\uC73C\uB85C\uC758 \uBCA1\uD130\uC5D0 \uC218\uC9C1\uC778 \uBC29\uD5A5 \uBCA1\uD130 \uACC4\uC0B0 (\uC2DC\uACC4 \uBC18\uB300 \uBC29\uD5A5 90\uB3C4 \uD68C\uC804)\n// const perpX = -deltaY / distance;\n// const perpY = deltaX / distance;\n//\n// // \uC911\uAC04 \uC9C0\uC810\uC5D0\uC11C \uC218\uC9C1 \uBC29\uD5A5\uC73C\uB85C \uC635\uC158\uC5D0 \uB530\uB77C \uC81C\uC5B4\uC810 \uC704\uCE58 \uACC4\uC0B0\n// const offset = distance * controlPointOffsetFactor;\n// p1 = {\n// x: midX + perpX * offset,\n// y: midY + perpY * offset,\n// };\n// }\n//\n// // --- \uACE1\uC120 \uC0C1\uC758 \uC810 \uACC4\uC0B0 ---\n// for (let i = 1; i <= numberOfSteps; i++) {\n// // 1. \uAE30\uBCF8 \uD30C\uB77C\uBBF8\uD130 u \uACC4\uC0B0 (0 < u <= 1)\n// const u = i / numberOfSteps;\n// // 2. \uAC00\uC18D\uB3C4 \uC801\uC6A9\uB41C \uD30C\uB77C\uBBF8\uD130 t \uACC4\uC0B0\n// const t = Math.pow(u, accelerationFactor);\n// // 3. \uBCA0\uC9C0\uC5D0 \uACE1\uC120 \uC704\uC758 \uC810 \uACC4\uC0B0\n// const pointOnCurve = quadraticBezier(t, p0, p1, p2);\n// points.push(pointOnCurve);\n// }\n//\n// return points; // \uACC4\uC0B0\uB41C \uC911\uAC04 \uC88C\uD45C\uB4E4\uC758 \uBC30\uC5F4 \uBC18\uD658\n// }\n//\n// // --- \uC0AC\uC6A9 \uC608\uC2DC ---\n// const start: Point = { x: 4, y: 10 };\n// const end: Point = { x: 50, y: 20 };\n// const steps = 10; // 10\uAC1C\uC758 \uC911\uAC04 \uC9C0\uC810 \uACC4\uC0B0\n//\n// // \uC608\uC2DC 1: \uAE30\uBCF8 \uC635\uC158 (\uC57D\uAC04\uC758 \uACE1\uC120, \uB4F1\uAC04\uACA9)\n// const path1 = getPointsOnBezierPath(start, end, {}, steps);\n// console.log(\"\uAE30\uBCF8 \uC635\uC158 \uACBD\uB85C:\", path1.map(p => `(${p.x.toFixed(1)}, ${p.y.toFixed(1)})`).join(\" -> \"));\n//\n// // \uC608\uC2DC 2: \uB354 \uB9CE\uC774 \uD718\uC5B4\uC9C0\uAC8C (offset \uC99D\uAC00), \uAC00\uC18D \uD6A8\uACFC \uCD94\uAC00 (acceleration > 1)\n// const path2 = getPointsOnBezierPath(start, end, { controlPointOffsetFactor: 0.6, accelerationFactor: 2 }, steps);\n// console.log(\"\uAC15\uD55C \uACE1\uC120 + \uAC00\uC18D \uACBD\uB85C:\", path2.map(p => `(${p.x.toFixed(1)}, ${p.y.toFixed(1)})`).join(\" -> \"));\n//\n// // \uC608\uC2DC 3: \uBC18\uB300 \uBC29\uD5A5\uC73C\uB85C \uD718\uAC8C (offset \uC74C\uC218), \uAC10\uC18D \uD6A8\uACFC \uCD94\uAC00 (acceleration < 1)\n// const path3 = getPointsOnBezierPath(start, end, { controlPointOffsetFactor: -0.3, accelerationFactor: 0.5 }, steps);\n// console.log(\"\uBC18\uB300 \uACE1\uC120 + \uAC10\uC18D \uACBD\uB85C:\", path3.map(p => `(${p.x.toFixed(1)}, ${p.y.toFixed(1)})`).join(\" -> \"));\n\n export const rotatePoint = (point: Point2D, center: Point2D, angleInRadians: number): Point2D => {\n // Translate point to origin so that center is the origin\n const translatedX = point.x - center.x;\n const translatedY = point.y - center.y;\n\n // Rotate point\n const rotatedX = translatedX * Math.cos(angleInRadians) - translatedY * Math.sin(angleInRadians);\n const rotatedY = translatedX * Math.sin(angleInRadians) + translatedY * Math.cos(angleInRadians);\n\n // Translate point back\n return new Point2D(rotatedX + center.x, rotatedY + center.y);\n }\n\n /**\n * 2\uCC28 \uBCA0\uC9C0\uC5D0 \uACE1\uC120 \uC704\uC758 \uD2B9\uC815 t \uAC12\uC5D0\uC11C\uC758 \uC810 \uC88C\uD45C\uB97C \uACC4\uC0B0\uD569\uB2C8\uB2E4.\n * B(t) = (1-t)\u00B2P\u2080 + 2(1-t)tP\u2081 + t\u00B2P\u2082\n * @param p0 \uC2DC\uC791\uC810\n * @param p1 \uC81C\uC5B4\uC810\n * @param p2 \uB05D\uC810\n * @param t \uB9E4\uAC1C\uBCC0\uC218 (0\uC5D0\uC11C 1 \uC0AC\uC774)\n * @returns \uACC4\uC0B0\uB41C \uC810\uC758 \uC88C\uD45C\n */\n export const quadraticBezier = (p0: number, p1: number, p2: number, t: number): number => {\n const mt = 1 - t;\n return mt * mt * p0 + 2 * mt * t * p1 + t * t * p2;\n };\n }\n", "import { ValidUtils } from '../valid/ValidUtils';\nimport { FieldType, FilterTuple } from '../types';\nimport { Point2D } from '../entity/Point2D';\nimport { Point3D } from '../entity/Point3D';\nimport { Rect } from '../entity/Rect';\nimport { ObjectUtils } from '../object/ObjectUtils';\nimport { IOS3166_1_Code } from '../code/IOS3166_1';\n\nexport namespace ConvertUtils {\n export type RGBA = { r?: number, g?: number, b?: number, a?: number };\n export type MinMaxCenterAvgDiff<T> = { min: T, max: T, center: T, avg: T };\n export type ToURLSearchParamsParams = { [key: string]: any } | URLSearchParams | [string, unknown][] | string;\n export const objToGetURL = (obj: any): string => {\n return Object.keys(obj).reduce((prev, key, i) => (\n `${prev}${i !== 0 ? '&' : ''}${key}=${obj[key]}`\n ), '');\n };\n\n export const mapToJson = (map: Map<string, any>): string => {\n return JSON.stringify(\n Array.from(\n map.entries()\n ).reduce((o: any, [key, value]) => {\n o[key] = value;\n return o;\n }, {}));\n };\n\n // export const fixed = (num: number, fractionDigits: number): number => {\n // const factor = Math.pow(10, fractionDigits);\n // }\n export const jsonToMap = (jsonStr: any): Map<string, string> => {\n return new Map(JSON.parse(jsonStr));\n };\n\n export const toUrl = (data: string) => {\n try {\n return new URL(data);\n }\n catch (e) {\n throw new Error(`Invalid URL string: ${data}`);\n }\n }\n\n\n export const decodeURIString = (data: string) => {\n return decodeURIComponent(data);\n }\n \n export const encodeURIString = (data: string) => {\n return encodeURIComponent(data);\n }\n\n export const objToStrMap = (obj: any): Map<string, string> => {\n const strMap = new Map();\n for (const k of Object.keys(obj)) {\n strMap.set(k, obj[k]);\n }\n return strMap;\n };\n\n export const jsonToStrMap = (jsonStr: string) => {\n return ConvertUtils.objToStrMap(JSON.parse(jsonStr));\n };\n\n export const strToObject = (message: string): any => {\n return JSON.parse(message);\n };\n\n export const objToJson = (obj: any): string => {\n return JSON.stringify(obj);\n };\n\n export const objToMap = (obj: any): Map<string, any> => {\n const mp = new Map<string, any>();\n Object.keys(obj).forEach((k) => {\n mp.set(k, obj[k]);\n });\n return mp;\n };\n\n export const mapToObj = (map: Map<string, any>): any => {\n const obj = {} as any;\n map.forEach((v, k) => {\n obj[k] = v;\n });\n return obj;\n };\n\n export const snakeToCamelCase = (str: string): string => {\n return str.replace(/_([a-z])/g, (_, letter) => letter.toUpperCase());\n }\n export const camelToSnakeCase = (str: string): string => {\n return str.replace(/([a-z])([A-Z])/g, '$1_$2').toLowerCase();\n };\n\n export function toFormData (obj: any) {\n const formData = new FormData();\n for (const key in obj)\n formData.append(key, obj[key]);\n return formData;\n }\n\n export function toObject<T>(obj: URLSearchParams, config: { firstValue: true }): FieldType<T, string>;\n export function toObject(obj: URLSearchParams): { [key: string]: string | string[] };\n export function toObject<T>(obj: FormData): T;\n export function toObject<T>(obj: [string, unknown][]): T;\n export function toObject<T>(obj: Iterable<any>): T;\n export function toObject(obj: any): any;\n export function toObject(obj: URLSearchParams | FormData |any, config?: { firstValue: boolean }): any {\n if (obj instanceof URLSearchParams) {\n const robj = {} as any;\n obj.forEach((v, k) => {\n if (config?.firstValue && robj[k] === undefined) {\n robj[k] = v;\n } else if (!config?.firstValue) {\n if (robj[k]) {\n if (Array.isArray(robj[k])) {\n robj[k].push(v);\n } else {\n robj[k] = [robj[k], v];\n }\n } else {\n robj[k] = v;\n }\n }\n })\n return robj;\n } else if(obj instanceof FormData) {\n // new Map().entries()\n // Object.entries({})\n // obj = Object.fromEntries(obj.entries());\n const formDataToObject = (formData: any) => {\n const obj: any = {};\n // FormData\uC758 \uBAA8\uB4E0 \uD0A4\uB97C \uC21C\uD68C\n for (const key of formData.keys()) {\n const values = formData.getAll(key); // \uB3D9\uC77C \uD0A4\uC758 \uBAA8\uB4E0 \uAC12 \uAC00\uC838\uC624\uAE30\n // \uAC12\uC774 \uD558\uB098\uBA74 \uB2E8\uC77C \uAC12\uC73C\uB85C, \uC5EC\uB7EC \uAC1C\uBA74 \uBC30\uC5F4\uB85C \uC800\uC7A5\n obj[key] = values.length > 1 ? values : values[0];\n }\n return obj;\n }\n return formDataToObject(obj);\n } else if (obj && typeof obj[Symbol.iterator] === 'function') {\n return Object.fromEntries(obj);\n } else if (Array.isArray(obj)) {\n return Object.fromEntries(obj);\n }else {\n // console.log(Object.prototype.toString.call(obj));\n if (ValidUtils.isMap(obj)) {\n const map = obj as Map<string, any>;\n obj = ConvertUtils.mapToObj(map);\n }\n if (ValidUtils.isArray(obj)) {\n const arr = obj as any[];\n for (let i = 0; i < arr.length; i++) {\n arr[i] = ConvertUtils.toObject(arr[i]);\n }\n }\n\n if (ValidUtils.isObject(obj)) {\n for (const property in obj) {\n obj[property] = ConvertUtils.toObject(obj[property]);\n }\n }\n\n return obj;\n }\n };\n\n export const toArray = <T>(data?: T | T[] | Set<T>): T[] => {\n if (data instanceof Set) {\n return Array.from(data.values());\n }\n\n const datas = (Array.isArray(data) ? data : (data ? [data] : []));\n return datas;\n }\n export const flatArray = <T>(...data: (T | Iterable<T>)[]): T[] => {\n const datas = data.flatMap<T>((item) => (item instanceof Object && Symbol.iterator in item ? Array.from(item) : [item]));\n return datas;\n };\n\n export const iteratorToArray = <T>(it: any): T[] => {\n return Array.from(it) as T[];\n };\n\n export const toJson = (obj: any): string => {\n const at = ConvertUtils.toObject(obj);\n return JSON.stringify(at);\n };\n\n export const concatenateToAttribute = (object_o: any) => {\n return ConvertUtils.concatenateToString(object_o, '=', ' ', '\\'');\n };\n\n export const concatenateToParameter = (object_o: any) => {\n return ConvertUtils.concatenateToString(object_o, '=', '&', '');\n };\n\n export const concatenateToString = (object_o: any, unionString_s = '=', spilString_s = ' ', pairString_s = '') => {\n const results: any[] = [];\n for (const property in object_o) {\n const value = object_o[property];\n if (value) {\n results.push(property.toString() + unionString_s + pairString_s + value + pairString_s);\n }\n }\n\n return results.join(spilString_s);\n };\n\n export const specialCharsToEscape = (data: string): string => {\n return data.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n };\n\n export const decodeHTMLEscape = (data: string): string => {\n // HTML \uC5D4\uD2F0\uD2F0 \uC774\uC2A4\uCF00\uC774\uD504\uB97C \uB514\uCF54\uB4DC\uD569\uB2C8\uB2E4.\n return data.replace(/&amp;/g, '&')\n .replace(/&lt;/g, '<')\n .replace(/&gt;/g, '>')\n .replace(/&quot;/g, '\"')\n .replace(/&#39;/g, \"'\")\n .replace(/&#x2F;/g, '/');\n }\n\n export function escapeHTML(htmlString: string, option?: { targets?: string[] }): string {\n if (!htmlString) return '';\n \n // HTML escape map - \uC21C\uC11C \uC911\uC694: & \uB97C \uBA3C\uC800 \uCC98\uB9AC\uD574\uC57C \uD568\n // https://dev-handbook.tistory.com/23\n const escapeMap: Record<string, string> = {\n '&': '&amp;', // \uBC18\uB4DC\uC2DC \uBA3C\uC800 \uCC98\uB9AC\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#39;', // or &apos; (\uD558\uC9C0\uB9CC HTML4\uC5D0\uC11C\uB294 &#39; \uAD8C\uC7A5)\n '/': '&#x2F;',\n '`': '&#x60;',\n '=': '&#x3D;',\n '{': '&#123;',\n '}': '&#125;',\n '#': '&#35;',\n '$': '&#36;',\n '\\n': '&#10;', // newline\n '\\r': '&#13;', // carriage return\n '\\t': '&#9;', // tab\n '\\u00A0': '&nbsp;', // non-breaking space\n '\u00A2': '&cent;',\n '\u00A3': '&pound;',\n '\u00A5': '&yen;',\n '\u20AC': '&euro;',\n '\u00A9': '&copy;',\n '\u00AE': '&reg;',\n '\u2122': '&trade;',\n '\u00B0': '&deg;',\n '\u00B1': '&plusmn;',\n '\u00D7': '&times;',\n '\u00F7': '&divide;',\n '\u2212': '&minus;',\n '\u2022': '&bull;',\n '\u2026': '&hellip;',\n '\u2190': '&larr;',\n '\u2192': '&rarr;',\n '\u2191': '&uarr;',\n '\u2193': '&darr;',\n '\u2194': '&harr;',\n };\n\n // targets \uC635\uC158\uC774 \uC788\uC73C\uBA74 \uD574\uB2F9 \uBB38\uC790\uB9CC \uD544\uD130\uB9C1\n const targetsSet = option?.targets ? new Set(option.targets) : null;\n const filteredEscapeMap = targetsSet \n ? Object.fromEntries(Object.entries(escapeMap).filter(([key]) => targetsSet.has(key)))\n : escapeMap;\n\n // & \uAC00 targets\uC5D0 \uD3EC\uD568\uB418\uC5B4 \uC788\uAC70\uB098 targets\uAC00 \uC5C6\uC73C\uBA74 & \uB97C \uBA3C\uC800 \uCC98\uB9AC\n const shouldEscapeAmpersand = !targetsSet || targetsSet.has('&');\n \n // \uC774\uC2A4\uCF00\uC774\uD504\uD560 \uBB38\uC790\uB4E4\uB85C \uC815\uADDC\uC2DD \uD328\uD134 \uC0DD\uC131\n const charsToEscape = Object.keys(filteredEscapeMap).filter(char => char !== '&');\n if (charsToEscape.length === 0 && !shouldEscapeAmpersand) {\n return htmlString; // \uC774\uC2A4\uCF00\uC774\uD504\uD560 \uBB38\uC790\uAC00 \uC5C6\uC73C\uBA74 \uC6D0\uBCF8 \uBC18\uD658\n }\n\n // \uC815\uADDC\uC2DD \uC0DD\uC131 (\uD2B9\uC218 \uBB38\uC790 \uC774\uC2A4\uCF00\uC774\uD504 \uD544\uC694)\n const escapedChars = charsToEscape.map(char => {\n // \uC815\uADDC\uC2DD\uC5D0\uC11C \uD2B9\uBCC4\uD55C \uC758\uBBF8\uB97C \uAC00\uC9C4 \uBB38\uC790\uB4E4\uC744 \uC774\uC2A4\uCF00\uC774\uD504\n return char.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n }).join('');\n\n let result = htmlString;\n \n // & \uB97C \uBA3C\uC800 \uCC98\uB9AC (\uC635\uC158\uC5D0 \uD3EC\uD568\uB41C \uACBD\uC6B0)\n if (shouldEscapeAmpersand) {\n result = result.replace(/&/g, '&amp;');\n }\n \n // \uB098\uBA38\uC9C0 \uBB38\uC790 \uCC98\uB9AC\n if (escapedChars.length > 0) {\n const regex = new RegExp(`[${escapedChars}]`, 'g');\n result = result.replace(regex, (match) => {\n return filteredEscapeMap[match] || match;\n });\n }\n\n return result;\n }\n\n export const copyObject = <T extends Record<string, any>>(obj: T, update: Partial<T> = {}): T => {\n return {...obj, ...update};\n };\n\n export const copyArrayWithAddition = <T extends unknown[]>(arr: FilterTuple<T>, update?: T): T => {\n return [...arr, ...(update || [])] as T;\n };\n\n export const hexToInt = (hex: string): number => {\n if (hex.startsWith('#')) {\n hex = hex.slice(1);\n }\n if (hex.length === 3) {\n hex = hex.split('').map((c) => c + c).join('');\n }\n return parseInt(hex, 16);\n };\n\n\n // export const toHex = (val: number): string => {\n // const hex = Math.floor(val).toString(16).toUpperCase();\n // return (hex.length === 1 ? '0' + hex : hex);\n // };\n\n export const toHex = (num: number): string => {\n if (num < 0) {\n num = 0xFFFFFFFF + num + 1;\n }\n num = Number(num.toFixed(0));\n return num.toString(16).padStart(2, '0').toUpperCase();\n };\n\n export const toHexColor = (rgba: RGBA): string => {\n const r = ConvertUtils.toHex(rgba.r ?? 0);\n const g = ConvertUtils.toHex(rgba.g ?? 0);\n const b = ConvertUtils.toHex(rgba.b ?? 0);\n const a = ConvertUtils.toHex(rgba.a ?? 255);\n return `#${r}${g}${b}${a}`;\n };\n\n export const avgColor = (color: RGBA[]): RGBA => {\n const sum = color.reduce((acc: Required<RGBA>, c) => {\n acc.r += c.r ?? 0;\n acc.g += c.g ?? 0;\n acc.b += c.b ?? 0;\n acc.a += c.a ?? 0;\n return acc;\n }, {r: 0, g: 0, b: 0, a: 0}) as Required<RGBA>;\n const avg = {r: Math.floor(sum.r / color.length), g: Math.floor(sum.g / color.length), b: Math.floor(sum.b / color.length), a: Math.floor(sum.a / color.length)};\n return avg;\n };\n\n export const toRGBA = (hex?: string | null): RGBA => {\n hex ??= '#000000FF';\n const hexColor = hex.replace('#', '');\n const r = parseInt(hexColor.slice(0, 2) || '0', 16);\n const g = parseInt(hexColor.slice(2, 4) || '0', 16);\n const b = parseInt(hexColor.slice(4, 6) || '0', 16);\n const a = hexColor.length > 6 ? parseInt(hexColor.slice(6, 8) || '0', 16) : 255;\n return {r, g, b, a};\n };\n\n export const minMaxCenterAvg = <T extends { [key: string]: number }>(obj: T[]): { [key in keyof T]?: MinMaxCenterAvgDiff<number> & {diff: number} } => {\n const result: { [key in keyof T]: { min: number, max: number, center: number, diff: number, avg: number } } = {} as any;\n\n const allKeys = ObjectUtils.uniqueKeys(obj);\n for (const key of allKeys) {\n const values = obj.map(item => item[key]);\n const min = Math.min(...values);\n const max = Math.max(...values);\n const center = (min + max) / 2;\n const avg = values.reduce((sum, val) => sum + val, 0) / values.length;\n\n result[key as keyof T] = {min, max, center, avg, diff: max - min};\n }\n\n return result;\n }\n\n export const minMaxCenterRectAvg2D = (point2Ds: (Point2D | { x: number, y: number })[]): MinMaxCenterAvgDiff<Point2D> & { minMaxRect: Rect } => {\n const min = new Point2D(Number.MAX_SAFE_INTEGER, Number.MAX_SAFE_INTEGER);\n const max = new Point2D(Number.MIN_SAFE_INTEGER, Number.MIN_SAFE_INTEGER);\n let sum = new Point2D(0, 0);\n point2Ds.forEach((p) => {\n min.x = Math.min(min.x, p.x);\n min.y = Math.min(min.y, p.y);\n max.x = Math.max(max.x, p.x);\n max.y = Math.max(max.y, p.y);\n sum.x += p.x;\n sum.y += p.y;\n });\n const center = new Point2D((min.x + max.x) / 2, (min.y + max.y) / 2);\n const avg = new Point2D(sum.x / point2Ds.length, sum.y / point2Ds.length);\n const minMaxRect = new Rect(min.x, min.y, max.x - min.x, max.y - min.y);\n return {min, max, center, avg, minMaxRect};\n };\n\n\n export const minMaxCenterAvg3D = (point3Ds: (Point3D | { x: number, y: number, z: number })[]): MinMaxCenterAvgDiff<Point3D> => {\n const min = new Point3D(Number.MAX_VALUE, Number.MAX_VALUE, Number.MAX_VALUE);\n const max = new Point3D(Number.MIN_VALUE, Number.MIN_VALUE, Number.MIN_VALUE);\n let sum = new Point3D(0, 0, 0);\n point3Ds.forEach((p) => {\n min.x = Math.min(min.x, p.x);\n min.y = Math.min(min.y, p.y);\n min.z = Math.max(min.z, p.z);\n max.x = Math.max(max.x, p.x);\n max.y = Math.max(max.y, p.y);\n max.z = Math.max(max.z, p.y);\n sum.x += p.x;\n sum.y += p.y;\n sum.z += p.z;\n });\n const center = new Point3D((min.x + max.x) / 2, (min.y + max.y) / 2, (min.z + max.z) / 2);\n const avg = new Point3D(sum.x / point3Ds.length, sum.y / point3Ds.length, sum.z / point3Ds.length);\n return {min, max, center, avg};\n };\n\n export const roundRectRadiiToFullRadii = (radii?: [number] | [number, number] | [number, number, number] | [number, number, number, number]) => {\n if (!radii) {\n return [0, 0, 0, 0];\n }\n if (radii.length === 1) {\n return [radii[0] ?? 0, radii[0] ?? 0, radii[0] ?? 0, radii[0] ?? 0];\n } else if (radii.length === 2) {\n return [radii[0] ?? 0, radii[1] ?? 0, radii[0] ?? 0, radii[1] ?? 0];\n } else if (radii.length === 3) {\n return [radii[0] ?? 0, radii[1] ?? 0, radii[2] ?? 0, radii[1] ?? 0];\n } else {\n return radii;\n }\n };\n\n\n export const toArrayDirectionChange = <T>(array: T[][]) => {\n // \uC785\uB825 \uBC30\uC5F4\uC774 \uBE44\uC5B4\uC788\uAC70\uB098 \uCCAB \uBC88\uC9F8 \uD589\uC774 \uBE44\uC5B4\uC788\uC73C\uBA74 \uBE48 \uBC30\uC5F4 \uBC18\uD658\n if (!array || array.length === 0 || !array[0] || array[0].length === 0) {\n return [];\n }\n const result: T[][] = [];\n const numCols = array[0].length; // \uAE30\uC900 \uC5F4 \uAC1C\uC218 (\uCCAB \uD589 \uAE30\uC900)\n const numRows = array.length; // \uD589 \uAC1C\uC218\n\n for (let i = 0; i < numCols; i++) {\n const newRow: T[] = [];\n for (let j = 0; j < numRows; j++) {\n // \uB9CC\uC57D jagged array \uAC00\uB2A5\uC131\uC744 \uC5C4\uACA9\uD788 \uB2E4\uB8E8\uB824\uBA74 \uC5EC\uAE30\uC11C array[j].length > i \uC778\uC9C0 \uD655\uC778 \uD544\uC694\n // \uD558\uC9C0\uB9CC T[][] \uD0C0\uC785 \uC2DC\uADF8\uB2C8\uCC98\uB294 \uBCF4\uD1B5 rectangular array\uB97C \uAE30\uB300\uD568\n newRow.push(array[j][i]);\n }\n result.push(newRow);\n }\n return result;\n }\n\n // groupBy \uD568\uC218 \uAD6C\uD604\n export const groupByMap = <T, K>(array: T[], keySelector: (item: T) => K): Map<K, T[]> => {\n return array.reduce((map, item) => {\n const key = keySelector(item);\n const group = map.get(key) || [];\n group.push(item);\n map.set(key, group);\n return map;\n }, new Map<K, T[]>());\n }\n export const groupByObject = <T, K extends string | number | symbol>(\n array: T[],\n keySelector: (item: T) => K\n ): Record<K, T[]> => {\n// groupByMap \uD638\uCD9C\n const map = groupByMap(array, keySelector);\n // Map\uC744 Record\uB85C \uBCC0\uD658\n return Object.fromEntries(map) as Record<K, T[]>;\n }\n\n\n\n export const toURLSearchParams = (data: ToURLSearchParamsParams): URLSearchParams =>{\n const searchParams = new URLSearchParams();\n if (typeof data === 'string') {\n new URLSearchParams(data).forEach((value, key) => {\n searchParams.append(key, value);\n });\n } else if (typeof data === 'object') {\n const forTarget = data instanceof URLSearchParams ? data.entries() : (Array.isArray(data) ? data : Object.entries(data));\n for (const [k, v] of Array.from(forTarget)) {\n if (Array.isArray(v)) {\n v.forEach(it => searchParams.append(k, it));\n } else {\n searchParams.append(k, v as any);\n }\n }\n }\n return searchParams;\n }\n export const toRawQueryString = (data: ToURLSearchParamsParams, option?:{valueEncodeURIComponent?: boolean}): string => {\n const params = ConvertUtils.toURLSearchParams(data);\n const dataStr= Array.from(params.entries())\n .map(([k, v]) => {\n const j = `${k}=${option?.valueEncodeURIComponent? encodeURIComponent(v) : v}`;\n return j;\n })\n .join('&');\n return dataStr;\n }\n // export const RelativeHumanReadableTimeLabels = {\n // [IOS3166_1_Code.KOR]: {\n // justNow: '\uBC29\uAE08 \uC804',\n // minutesAgo: '\uBD84 \uC804',\n // hoursAgo: '\uC2DC\uAC04 \uC804',\n // daysAgo: '\uC77C \uC804',\n // }\n //\n // }\n // export type RelativeHumanReadableTimeLabel = {\n // justNow: string,\n // minutesAgo: string,\n // hoursAgo: string,\n // daysAgo: string,\n // };\n // export type RelativeHumanReadableTimeConfig = {\n // label: RelativeHumanReadableTimeLabel;\n // }\n // export const formatRelativeHumanReadableTime = (date: Date | string | number, config: RelativeHumanReadableTimeConfig): string => {\n // if (!(date instanceof Date)) {\n // date = new Date(date);\n // }\n // const now = new Date();\n // const diffMs = now.getTime() - date.getTime();\n // const diffMinutes = Math.floor(diffMs / (1000 * 60));\n // const diffHours = Math.floor(diffMinutes / 60);\n //\n // if (diffMinutes < 1) return config.label.justNow;\n // if (diffMinutes < 60) return `${diffMinutes}${config.label.minutesAgo}`;\n // if (diffHours < 24) return `${diffHours}${}`;\n // return `${Math.floor(diffHours / 24)}\uC77C \uC804`;\n // }\n\n /**\n * \uBB38\uC790\uC5F4 JSON\uC744 \uD0A4-\uAC12 \uC30D \uBC30\uC5F4\uB85C \uBCC0\uD658\uD569\uB2C8\uB2E4.\n *\n * @param {string} stringJson - JSON \uD615\uC2DD\uC758 \uBB38\uC790\uC5F4 (\uC608: \"{value: this.child.obj.name}\")\n * @return {Array<{ key: string, value: string }>} \uD0A4-\uAC12 \uC30D \uBC30\uC5F4\n */\n export const stringJsonToKeyPairs = (stringJson: string) => {\n return Array.from(stringJson.matchAll(/(\\w+):\\s*([^,}]+)/g)).map(match => ({key: match[1], value: match[2]}))\n }\n\n export const entriesToKeyPairs = <T>(o: T) => {\n return Object.entries(o).map(([key, value]) => ({key, value})) as {key: keyof T, value: T[keyof T]}[];\n }\n\n export const stringToBase64 = (str: string): string => {\n return btoa(str);\n }\n export const uint8ArrayToBase64 = (bytes: Uint8Array): string => {\n let binary = '';\n const len = bytes.byteLength;\n for (let i = 0; i < len; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n return btoa(binary);\n }\n export const base64ToString = (base64: string): string => {\n return atob(base64);\n }\n export const base64ToUint8Array = (base64: string): Uint8Array => {\n const binaryString = atob(base64);\n const len = binaryString.length;\n const bytes = new Uint8Array(len);\n for (let i = 0; i < len; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n return bytes;\n }\n // const formDataToFormDataEntryValueObj = <T = { [key: string]: FormDataEntryValue | FormDataEntryValue[] }>(\n // data: FormData | HTMLFormElement\n // ): T => {\n // if (typeof HTMLFormElement !== 'undefined' && data instanceof HTMLFormElement) {\n // data = new FormData(data);\n // }\n // const obj: any = {};\n // data.forEach((value, key) => {\n // if (Array.isArray(obj[key])) {\n // obj[key].push(value);\n // } else if (obj[key] !== undefined || !isNaN(obj[key])) {\n // obj[key] = [obj[key], value];\n // } else {\n // obj[key] = value;\n // }\n // });\n // return obj;\n // }\n\n}\n", "import { ValidUtils } from '../valid/ValidUtils';\n\nexport namespace RandomUtils {\n // export const readonly d = ''\n\n // export const getUniqueNumbers = (max: number, length: number) => {\n // max = Math.max(max, 0);\n // length = Math.max(Math.min(max, length), 0);\n // const array: number[] = [];\n // while (array.length < length) {\n // const num = Math.floor(Math.random() * max);\n // if (!array.includes(num)) array.push(num);\n // }\n // return array;\n // };\n\n export const uniqueInts = (min: number, max: number, count: number) => {\n const result: number[] = [];\n if (count > max - min) {\n throw new Error('Count is greater than the range of unique integers');\n }\n while (result.length < count) {\n const randomInt = RandomUtils.int(min, max);\n if (!result.includes(randomInt)) {\n result.push(randomInt);\n }\n }\n return result;\n }\n\n\n export const chance = (percentage: number): boolean => {\n if (percentage < 0 || percentage > 1) {\n throw new Error('Percentage must be between 0 and 1');\n }\n return Math.random() < percentage;\n };\n // max\uB294 \uD3EC\uD568\uD558\uC9C0 \uC54A\uC74C\n export const int = (min?: number, max?: number) => {\n return Math.floor(RandomUtils.float(min, max));\n }\n\n // ex) 0,5 0~<5 <5\uB294 \uD3EC\uD568\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. \uC18C\uC218\uC810\uD3EC\uD568\n export const float = (min?: number, max?: number) => {\n if (ValidUtils.isNullOrUndefined(min)) {\n return Math.random();\n } else if (!ValidUtils.isNullOrUndefined(min) && ValidUtils.isNullOrUndefined(max)) {\n return Math.random() * (min || 0);\n } else {\n return Math.random() * ((max || 0) - (min || 0)) + (min || 0);\n }\n };\n\n export const uuid = (format: string = 'xxxx-xxxx-xxxx-xxxx'): string => {\n return format.replace(/[xy]/g, function(c) {\n const r = Math.random() * 16 | 0;\n const v = c === 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n });\n };\n\n\n export const uuid4 = (): string => {\n // // return uuid of form xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\n let uuid = '';\n let ii;\n for (ii = 0; ii < 32; ii += 1) {\n switch (ii) {\n case 8:\n case 20:\n uuid += '-';\n uuid += ((Math.random() * 16) | 0).toString(16);\n break;\n case 12:\n uuid += '-';\n uuid += '4';\n break;\n case 16:\n uuid += '-';\n uuid += ((Math.random() * 4) | 8).toString(16);\n break;\n default:\n uuid += ((Math.random() * 16) | 0).toString(16);\n }\n }\n return uuid;\n };\n\n export const hex = (): string => {\n const letters = '0123456789ABCDEF'.split('');\n let hex = '';\n for (let i = 0; i < 6; i++) {\n hex += letters[Math.floor(Math.random() * 16)];\n }\n return hex;\n };\n\n\n export const rgb = (): string => {\n const letters = '0123456789ABCDEF'.split('');\n let color = '#';\n for (let i = 0; i < 6; i++) {\n color += letters[Math.floor(Math.random() * 16)];\n }\n return color;\n };\n\n export const rgba = (): string => {\n const letters = '0123456789ABCDEF'.split('');\n let color = '#';\n for (let i = 0; i < 8; i++) {\n color += letters[Math.floor(Math.random() * 16)];\n }\n return color;\n };\n // (Math.random().toString(36)+'00000000000000000').slice(2, 10) + Date.now()\n\n export const alphabet = (len: number): string => {\n const letters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('');\n let color = '';\n for (let i = 0; i < len; i++) {\n color += letters[Math.floor(Math.random() * letters.length)];\n }\n return color;\n };\n}\n", "import { Unsubscribable } from './Unsubscribable';\n\nexport interface SubscriptionLike extends Unsubscribable {\n unsubscribe(): void;\n readonly closed: boolean;\n}\n\nexport class Subscription implements SubscriptionLike {\n public static EMPTY: Subscription = (function (empty: any) {\n empty.closed = true;\n return empty;\n })(new Subscription());\n\n public closed = false;\n private _teardowns: (Unsubscribable | (() => void))[] | null = null;\n\n constructor(initialTeardown?: () => void) {\n if (initialTeardown) {\n this.add(initialTeardown);\n }\n }\n\n unsubscribe(): void {\n if (this.closed) {\n return;\n }\n this.closed = true;\n const teardowns = this._teardowns;\n this._teardowns = null;\n\n if (teardowns) {\n let errors: any[] | null = null;\n teardowns.forEach(teardown => {\n try {\n if (typeof teardown === 'function') {\n teardown();\n } else if (teardown && typeof (teardown as any).unsubscribe === 'function') {\n (teardown as any).unsubscribe();\n }\n } catch (e) {\n errors = errors || [];\n errors.push(e);\n }\n });\n if (errors) {\n throw new Error(errors.map(e => e.message).join('\\n'));\n }\n }\n }\n\n add(teardown: Unsubscribable | Function | void): void {\n if (!teardown) {\n return;\n }\n let teardownToAdd: Unsubscribable | (() => void);\n if (typeof teardown === 'function') {\n teardownToAdd = teardown as () => void;\n } else if (typeof teardown === 'object' && teardown !== null && typeof (teardown as any).unsubscribe === 'function') {\n teardownToAdd = teardown as Unsubscribable;\n } else {\n return;\n }\n\n if (this.closed) {\n if (typeof teardownToAdd === 'function') {\n teardownToAdd();\n } else {\n teardownToAdd.unsubscribe();\n }\n } else {\n if (!this._teardowns) {\n this._teardowns = [];\n }\n this._teardowns.push(teardownToAdd);\n }\n }\n\n remove(teardown: Unsubscribable | Function | void): void {\n const teardowns = this._teardowns;\n if (!teardowns || !teardown) {\n return;\n }\n const index = teardowns.indexOf(teardown as any);\n if (index !== -1) {\n teardowns.splice(index, 1);\n }\n }\n}\n", "import { Subscription } from './Subscription';\nimport { Observer } from './Observer';\n\nexport class Subscriber<T, E = any> extends Subscription implements Observer<T, E> {\n constructor(private destination: Observer<T, E>) {\n super();\n }\n next(value: T): void {\n if (this.closed) {\n return;\n }\n this.destination.next(value);\n }\n error(err: E): void {\n if (this.closed) {\n return;\n }\n this.closed = true;\n this.destination.error(err);\n this.unsubscribe();\n }\n complete(): void {\n if (this.closed) {\n return;\n }\n this.closed = true;\n this.destination.complete();\n this.unsubscribe();\n }\n}\n", "import { Subscription } from './Subscription';\nimport { CompleteCallBack, ErrorCallBack, ObserverCallBack, Subscribable } from './Subscribable';\nimport { Observer } from './Observer';\nimport { Subscriber } from './Subscriber';\n\nexport type OperatorFunction<T, R> = (source: Observable<T>) => Observable<R>;\n\nexport class Observable<T, E = any> implements Subscribable<T, E> {\n private _producerFunction: ((subscriber: Subscriber<T, E>) => Subscription | (() => void) | void) | undefined;\n\n constructor(producerFunction?: (subscriber: Subscriber<T, E>) => Subscription | (() => void) | void) {\n this._producerFunction = producerFunction;\n }\n\n subscribe(d: ObserverCallBack<T>): Subscription;\n subscribe(d: ObserverCallBack<T>, e?: ErrorCallBack, c?: CompleteCallBack): Subscription;\n subscribe(observer: Partial<Observer<T, E>>): Subscription;\n subscribe(observer: Partial<Observer<T, E>> | ObserverCallBack<T>, e?: ErrorCallBack, c?: CompleteCallBack): Subscription {\n /*\n const observer = observerOrNext;\n\n const partialObserver: Partial<Observer<T, E>> = typeof observer === 'function'\n ? {\n next: observer,\n error: error,\n complete: complete\n }\n : {\n next: observer.next,\n error: observer.error,\n complete: observer.complete\n };\n */\n const partialObserver: Partial<Observer<T, E>> = {\n next: typeof observer === 'object' ? observer.next : observer,\n error: typeof observer === 'object' ? observer.error : e,\n complete: typeof observer === 'object' ? observer.complete : c\n };\n\n // Create a new internal subscriber for this specific subscription\n const internalSubscriber = new Subscriber({\n next: (data: T) => {\n partialObserver.next?.(data);\n },\n error: (e: E) => {\n partialObserver.error?.(e);\n },\n complete: () => {\n partialObserver.complete?.();\n }\n });\n\n if (this._producerFunction) {\n const teardownLogic = this._producerFunction(internalSubscriber);\n if (teardownLogic) {\n internalSubscriber.add(teardownLogic);\n }\n }\n\n return internalSubscriber;\n }\n\n // complete \uB418\uC57C\uC9C0\uB9CC \uB9C8\uC9C0\uB9C9 \uCC98\uB9AC\uB41C\uB2E4!\n toPromise(): Promise<T | undefined> {\n return new Promise((resolve, reject) => {\n let lastValue: T | undefined;\n let subscription: Subscription;\n\n subscription = this.subscribe({\n next: (value: T) => {\n lastValue = value;\n },\n error: (err: E) => {\n reject(err);\n subscription.unsubscribe();\n },\n complete: () => {\n resolve(lastValue);\n subscription.unsubscribe();\n }\n });\n });\n }\n\n pipe(): Observable<T, E>;\n pipe<A>(op1: OperatorFunction<T, A>): Observable<A, any>;\n pipe<A, B>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>): Observable<B, any>;\n pipe<A, B, C>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>): Observable<C, any>;\n pipe<A, B, C, D>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>): Observable<D, any>;\n pipe<A, B, C, D, E>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>): Observable<E, any>;\n pipe<A, B, C, D, E, F>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>): Observable<F, any>;\n pipe<A, B, C, D, E, F, G>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>): Observable<G, any>;\n pipe<A, B, C, D, E, F, G, H>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>): Observable<H, any>;\n pipe<A, B, C, D, E, F, G, H, I>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>): Observable<I, any>;\n pipe<A, B, C, D, E, F, G, H, I, J>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>): Observable<J, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>): Observable<K, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>): Observable<L, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>): Observable<M, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>): Observable<N, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>): Observable<O, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>): Observable<P, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>): Observable<Q, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>): Observable<R, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>): Observable<S, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>): Observable<U, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>): Observable<V, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>): Observable<W, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>): Observable<X, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>): Observable<Y, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>): Observable<Z, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>): Observable<AA, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>, op27: OperatorFunction<AA, AB>): Observable<AB, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>, op27: OperatorFunction<AA, AB>, op28: OperatorFunction<AB, AC>): Observable<AC, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>, op27: OperatorFunction<AA, AB>, op28: OperatorFunction<AB, AC>, op29: OperatorFunction<AC, AD>): Observable<AD, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>, op27: OperatorFunction<AA, AB>, op28: OperatorFunction<AB, AC>, op29: OperatorFunction<AC, AD>, op30: OperatorFunction<AD, AE>): Observable<AE, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>\n ): Observable<AF, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>\n ): Observable<AG, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>\n ): Observable<AH, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>\n ): Observable<AI, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>\n ): Observable<AJ, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>\n ): Observable<AK, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>\n ): Observable<AL, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>\n ): Observable<AM, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>,\n op39: OperatorFunction<AM, AN>\n ): Observable<AN, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>,\n op39: OperatorFunction<AM, AN>,\n op40: OperatorFunction<AN, AO>\n ): Observable<AO, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>,\n op39: OperatorFunction<AM, AN>,\n op40: OperatorFunction<AN, AO>,\n op41: OperatorFunction<AO, AP>\n ): Observable<AP, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>,\n op39: OperatorFunction<AM, AN>,\n op40: OperatorFunction<AN, AO>,\n op41: OperatorFunction<AO, AP>,\n op42: OperatorFunction<AP, AQ>\n ): Observable<AQ, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>,\n op39: OperatorFunction<AM, AN>,\n op40: OperatorFunction<AN, AO>,\n op41: OperatorFunction<AO, AP>,\n op42: OperatorFunction<AP, AQ>,\n op43: OperatorFunction<AQ, AR>\n ): Observable<AR, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>,\n op39: OperatorFunction<AM, AN>,\n op40: OperatorFunction<AN, AO>,\n op41: OperatorFunction<AO, AP>,\n op42: OperatorFunction<AP, AQ>,\n op43: OperatorFunction<AQ, AR>,\n op44: OperatorFunction<AR, AS>\n ): Observable<AS, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS, AT>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>,\n op39: OperatorFunction<AM, AN>,\n op40: OperatorFunction<AN, AO>,\n op41: OperatorFunction<AO, AP>,\n op42: OperatorFunction<AP, AQ>,\n op43: OperatorFunction<AQ, AR>,\n op44: OperatorFunction<AR, AS>,\n op45: OperatorFunction<AS, AT>\n ): Observable<AT, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS, AT, AU>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>,\n op39: OperatorFunction<AM, AN>,\n op40: OperatorFunction<AN, AO>,\n op41: OperatorFunction<AO, AP>,\n op42: OperatorFunction<AP, AQ>,\n op43: OperatorFunction<AQ, AR>,\n op44: OperatorFunction<AR, AS>,\n op45: OperatorFunction<AS, AT>,\n op46: OperatorFunction<AT, AU>\n ): Observable<AU, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS, AT, AU, AV>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>,\n op39: OperatorFunction<AM, AN>,\n op40: OperatorFunction<AN, AO>,\n op41: OperatorFunction<AO, AP>,\n op42: OperatorFunction<AP, AQ>,\n op43: OperatorFunction<AQ, AR>,\n op44: OperatorFunction<AR, AS>,\n op45: OperatorFunction<AS, AT>,\n op46: OperatorFunction<AT, AU>,\n op47: OperatorFunction<AU, AV>\n ): Observable<AV, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS, AT, AU, AV, AW>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>,\n op39: OperatorFunction<AM, AN>,\n op40: OperatorFunction<AN, AO>,\n op41: OperatorFunction<AO, AP>,\n op42: OperatorFunction<AP, AQ>,\n op43: OperatorFunction<AQ, AR>,\n op44: OperatorFunction<AR, AS>,\n op45: OperatorFunction<AS, AT>,\n op46: OperatorFunction<AT, AU>,\n op47: OperatorFunction<AU, AV>,\n op48: OperatorFunction<AV, AW>\n ): Observable<AW, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS, AT, AU, AV, AW, AX>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>,\n op39: OperatorFunction<AM, AN>,\n op40: OperatorFunction<AN, AO>,\n op41: OperatorFunction<AO, AP>,\n op42: OperatorFunction<AP, AQ>,\n op43: OperatorFunction<AQ, AR>,\n op44: OperatorFunction<AR, AS>,\n op45: OperatorFunction<AS, AT>,\n op46: OperatorFunction<AT, AU>,\n op47: OperatorFunction<AU, AV>,\n op48: OperatorFunction<AV, AW>,\n op49: OperatorFunction<AW, AX>\n ): Observable<AX, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS, AT, AU, AV, AW, AX, AY>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>,\n op39: OperatorFunction<AM, AN>,\n op40: OperatorFunction<AN, AO>,\n op41: OperatorFunction<AO, AP>,\n op42: OperatorFunction<AP, AQ>,\n op43: OperatorFunction<AQ, AR>,\n op44: OperatorFunction<AR, AS>,\n op45: OperatorFunction<AS, AT>,\n op46: OperatorFunction<AT, AU>,\n op47: OperatorFunction<AU, AV>,\n op48: OperatorFunction<AV, AW>,\n op49: OperatorFunction<AW, AX>,\n op50: OperatorFunction<AX, AY>\n ): Observable<AY, any>;\n pipe(...operators: OperatorFunction<any, any>[]): Observable<any, any> {\n if (operators.length === 0) {\n return this as any;\n }\n return operators.reduce((prev, operator) => operator(prev), this as any);\n }\n}\n", "import { Observer } from './Observer';\nimport { Observable, OperatorFunction } from './Observable';\nimport { Subscription } from './Subscription';\nimport { CompleteCallBack, ErrorCallBack, ObserverCallBack, Subscribable } from './Subscribable';\n\nexport class Subject<T, E = any> extends Observable<T, E> implements Observer<T, E> {\n private _observers = new Set<Partial<Observer<T, E>>>();\n private _isStopped = false;\n private _hasError = false;\n private _error: E | undefined;\n\n constructor() {\n // Call parent Observable constructor with our own subscribe logic\n super(subscriber => {\n return this._subscribeToSubject(subscriber);\n });\n }\n\n protected _subscribeToSubject(subscriber: any): Subscription {\n const partialObserver: Partial<Observer<T, E>> = {\n next: subscriber.next.bind(subscriber),\n error: subscriber.error.bind(subscriber),\n complete: subscriber.complete.bind(subscriber)\n };\n\n if (this._isStopped) {\n if (this._hasError) {\n partialObserver.error?.(this._error!);\n } else {\n partialObserver.complete?.();\n }\n return Subscription.EMPTY;\n }\n\n this._observers.add(partialObserver);\n\n return new Subscription(() => {\n this._observers.delete(partialObserver);\n });\n }\n\n next(data: T): void {\n if (this._isStopped) {\n return; // Subject is stopped, no more emissions\n }\n this._observers.forEach(observer => {\n observer.next?.(data);\n });\n }\n\n error(err: E): void {\n if (this._isStopped) {\n return; // Subject is stopped, no more errors\n }\n this._hasError = true;\n this._error = err;\n this._isStopped = true; // Subject stops after error\n this._observers.forEach(observer => observer.error?.(err));\n this._observers.clear(); // Clear observers after error\n }\n\n complete(): void {\n if (this._isStopped) {\n return; // Subject is stopped, no more completions\n }\n this._isStopped = true; // Subject stops after completion\n this._observers.forEach(observer => observer.complete?.());\n this._observers.clear(); // Clear observers after completion\n }\n\n asObservable(): Observable<T, E> {\n // Returns a new Observable that wraps this Subject's subscribe method.\n // This hides the next/error/complete methods from the consumer.\n return new Observable<T, E>(subscriber => {\n return this._subscribeToSubject(subscriber);\n });\n }\n}\n", "import {Subject} from './Subject';\nimport {Subscription} from './Subscription';\n\nexport class BehaviorSubject<T, E = any> extends Subject<T, E> {\n private _value: T; // BehaviorSubject always has a current value\n\n constructor(initialValue: T) {\n super();\n this._value = initialValue; // Store the initial value\n }\n\n next(data: T): void {\n this._value = data; // Update the current value\n super.next(data); // Multicast to all current subscribers\n }\n\n protected _subscribeToSubject(subscriber: any): Subscription {\n // Call parent's subscribe logic first\n const subscription = super._subscribeToSubject(subscriber);\n\n // Immediately emit the current value to the new subscriber\n // Only if the subject has not completed or errored\n if (!(this as any)._isStopped) { // _isStopped is from Subject\n subscriber.next(this._value);\n } else if ((this as any)._hasError) { // _hasError is from Subject\n subscriber.error((this as any)._error!); // _error is from Subject\n } else {\n subscriber.complete();\n }\n\n return subscription;\n }\n\n getValue(): T {\n if ((this as any)._hasError) {\n throw (this as any)._error;\n }\n return this._value;\n }\n}", "import { Subject } from './Subject';\nimport { Subscription } from './Subscription';\nimport { Observer } from './Observer';\nimport { CompleteCallBack, ErrorCallBack, ObserverCallBack } from './Subscribable';\n\nexport class ReplaySubject<T, E = any> extends Subject<T, E> {\n private _buffer: T[] = [];\n // Removed: private _error: E | undefined;\n // Removed: private _isStopped = false;\n\n constructor(private bufferSize: number = Infinity) {\n super();\n }\n\n next(data: T): void {\n // Rely on parent Subject's _isStopped\n if ((this as any)._isStopped) {\n return; // Cannot emit after stopped\n }\n this._buffer.push(data);\n if (this._buffer.length > this.bufferSize) {\n this._buffer.shift(); // Remove oldest if buffer exceeds size\n }\n super.next(data); // Multicast to current subscribers\n }\n\n error(err: E): void {\n // Rely on parent Subject to manage _isStopped and _error\n super.error(err); // Multicast error and stop\n }\n\n complete(): void {\n // Rely on parent Subject to manage _isStopped\n super.complete(); // Multicast complete and stop\n }\n\n protected _subscribeToSubject(subscriber: any): Subscription {\n // Emit buffered values to the new subscriber first\n this._buffer.forEach(value => subscriber.next(value));\n\n // If the subject has already completed or errored, emit that status\n // Rely on parent Subject's _isStopped, _hasError, _error\n if ((this as any)._isStopped) {\n if ((this as any)._hasError) {\n subscriber.error((this as any)._error);\n } else {\n subscriber.complete();\n }\n return Subscription.EMPTY;\n }\n\n // Then, call super._subscribeToSubject to add the observer for future values\n return super._subscribeToSubject(subscriber);\n }\n}\n", "import { ReplaySubject } from './ReplaySubject';\nimport { Subject } from './Subject';\nimport { Subscription } from './Subscription';\n\nexport class ReplayForwardSubject<T> extends ReplaySubject<T> {\n private forward = new Subject<T>();\n private internalSub: Subscription; // \uB0B4\uBD80 \uAD6C\uB3C5 \uC800\uC7A5\n\n constructor(bufferSize?: number) {\n super(bufferSize); // \uBC84\uD37C \uD06C\uAE30 \uC635\uC158\uC73C\uB85C (\uAE30\uBCF8 \uBB34\uD55C)\n this.internalSub = this.subscribe(this.forward.next.bind(this.forward)); // \uAD6C\uB3C5 \uC800\uC7A5\n }\n\n getForwardOnly() {\n return this.forward.asObservable();\n }\n\n // \uC18C\uBA78 \uC2DC \uD638\uCD9C\uD560 destroy \uBA54\uC11C\uB4DC (\uB610\uB294 complete \uC624\uBC84\uB77C\uC774\uB4DC)\n destroy() {\n if (this.internalSub && !this.internalSub.closed) {\n this.internalSub.unsubscribe(); // \uB0B4\uBD80 \uAD6C\uB3C5 \uD574\uC81C\n }\n super.complete(); // \uBD80\uBAA8 complete \uD638\uCD9C (\uC790\uB3D9 cleanup)\n this.forward.complete(); // forward\uB3C4 complete (\uC120\uD0DD: \uAD6C\uB3C5\uC790 notify)\n }\n\n // \uC635\uC158: complete \uC624\uBC84\uB77C\uC774\uB4DC (destroy \uB300\uC2E0 \uC0AC\uC6A9 \uAC00\uB2A5)\n override complete() {\n if (this.internalSub && !this.internalSub.closed) {\n this.internalSub.unsubscribe();\n }\n super.complete();\n this.forward.complete();\n }\n}", "import { Subscription } from './Subscription';\n\nexport class AutoCloseSubscription extends Subscription {\n constructor(userUnsubscribe: () => void) {\n super(userUnsubscribe);\n }\n}\n", "import { Observable } from '../Observable';\n\n/**\n * Creates an Observable that emits sequential numbers every specified\n * interval of time.\n *\n * @param period The interval size in milliseconds\n * @return An Observable that emits a sequential number each time interval.\n */\nexport function interval(period: number = 0): Observable<number> {\n // Handle negative periods by treating them as 0\n if (period < 0) {\n period = 0;\n }\n\n return new Observable<number>(subscriber => {\n let count = 0;\n let intervalId: NodeJS.Timeout;\n\n // Start emitting after the first period has passed\n intervalId = setInterval(() => {\n subscriber.next(count++);\n }, period);\n\n // Return cleanup function\n return () => {\n clearInterval(intervalId);\n };\n });\n}", "import { Observable, OperatorFunction } from '../Observable';\n\n/**\n * Emits only the first `count` values emitted by the source Observable.\n *\n * @param count The maximum number of `next` values to emit.\n * @return A function that returns an Observable that emits only the first\n * `count` values emitted by the source Observable.\n */\nexport function take<T>(count: number): OperatorFunction<T, T> {\n return (source: Observable<T, any>): Observable<T, any> => {\n // Handle count <= 0 by returning immediately completing Observable\n if (count <= 0) {\n return new Observable<T>(subscriber => {\n subscriber.complete();\n });\n }\n\n return new Observable<T>(subscriber => {\n let seen = 0;\n \n const subscription = source.subscribe({\n next: (value) => {\n // Increment the number of values we have seen\n if (++seen <= count) {\n subscriber.next(value);\n // If we have met or passed our allowed count, complete\n if (count <= seen) {\n subscriber.complete();\n }\n }\n },\n error: (err) => {\n subscriber.error(err);\n },\n complete: () => {\n subscriber.complete();\n }\n });\n\n // Return the subscription for teardown\n return subscription;\n });\n };\n}", "import { Observable } from '../Observable';\n\nexport interface LastValueFromConfig<T> {\n defaultValue: T;\n}\n\nexport class EmptyError extends Error {\n constructor(message: string = 'No elements in sequence') {\n super(message);\n this.name = 'EmptyError';\n }\n}\n\nexport function lastValueFrom<T, D>(source: Observable<T>, config: LastValueFromConfig<D>): Promise<T | D>;\nexport function lastValueFrom<T>(source: Observable<T>): Promise<T>;\n\n/**\n * Converts an observable to a promise by subscribing to the observable,\n * waiting for it to complete, and resolving the returned promise with the\n * last value from the observed stream.\n *\n * @param source the observable to convert to a promise\n * @param config a configuration object to define the `defaultValue` to use if the source completes without emitting a value\n */\nexport function lastValueFrom<T, D>(source: Observable<T>, config?: LastValueFromConfig<D>): Promise<T | D> {\n const hasConfig = typeof config === 'object';\n return new Promise<T | D>((resolve, reject) => {\n let _hasValue = false;\n let _value: T;\n \n source.subscribe({\n next: (value) => {\n _value = value;\n _hasValue = true;\n },\n error: reject,\n complete: () => {\n if (_hasValue) {\n resolve(_value);\n } else if (hasConfig) {\n resolve(config!.defaultValue);\n } else {\n reject(new EmptyError());\n }\n },\n });\n });\n}", "import { Observable } from '../Observable';\nimport { EmptyError } from './lastValueFrom'; // Reusing EmptyError from lastValueFrom\n\n/**\n * Converts an observable to a promise by subscribing to the observable,\n * and returning a promise that will resolve with the first value emitted\n * by the observable. The subscription is then immediately unsubscribed.\n *\n * If the observable stream completes before any values were emitted, the\n * returned promise will reject with {@link EmptyError}.\n *\n * If the observable stream emits an error, the returned promise will reject\n * with that error.\n *\n * @param source The observable to convert to a promise.\n * @return A promise that resolves with the first value from the observable,\n * or rejects with an error or EmptyError.\n */\nexport function firstValueFrom<T>(source: Observable<T>): Promise<T> {\n return new Promise<T>((resolve, reject) => {\n let _hasValue = false;\n\n const subscription = source.subscribe({\n next: (value) => {\n _hasValue = true;\n resolve(value);\n subscription.unsubscribe(); // Unsubscribe immediately after first value\n },\n error: reject,\n complete: () => {\n if (!_hasValue) {\n reject(new EmptyError());\n }\n },\n });\n });\n}", "import { Observable } from '../Observable';\n\n/**\n * Creates an Observable that starts emitting after an `initialDelay` and emits ever increasing numbers\n * after each `period` of time thereafter.\n *\n * @param initialDelay The initial delay time to wait before emitting the first value\n * @param period The period of time between emissions of the subsequent numbers\n * @return An Observable that emits a sequential number each period of time after an initial delay\n */\nexport function timer(initialDelay: number, period?: number): Observable<number> {\n return new Observable<number>(subscriber => {\n let count = 0;\n let intervalId: NodeJS.Timeout | undefined;\n\n // Initial delay\n const timeoutId = setTimeout(() => {\n subscriber.next(count++);\n \n // If period is specified, continue emitting at intervals\n if (period !== undefined && period >= 0) {\n intervalId = setInterval(() => {\n subscriber.next(count++);\n }, period);\n } else {\n // If no period, complete after first emission\n subscriber.complete();\n }\n }, Math.max(0, initialDelay));\n\n // Return cleanup function\n return () => {\n clearTimeout(timeoutId);\n if (intervalId) {\n clearInterval(intervalId);\n }\n };\n });\n}", "import { Observable } from '../Observable';\n\n/**\n * Converts the arguments to an observable sequence.\n *\n * @param values A comma separated list of arguments you want to be emitted\n * @return An Observable that emits the arguments described above and then completes.\n */\nexport function of<T>(...values: T[]): Observable<T> {\n return new Observable<T>(subscriber => {\n for (const value of values) {\n subscriber.next(value);\n }\n subscriber.complete();\n });\n}", "import { Observable } from '../Observable';\n\n/**\n * Creates an Observable from an Array.\n *\n * @param input An array to be converted to Observable\n * @return An Observable that emits the items from the array and then completes.\n */\nexport function fromArray<T>(input: T[]): Observable<T> {\n return new Observable<T>(subscriber => {\n for (const item of input) {\n subscriber.next(item);\n }\n subscriber.complete();\n });\n}", "import { Observable } from '../Observable';\n\n/**\n * Converts a Promise to an Observable.\n *\n * @param promise A promise to be converted to Observable\n * @return An Observable that emits the resolved value of the Promise and then completes,\n * or emits an error if the Promise rejects.\n */\nexport function fromPromise<T>(promise: Promise<T>): Observable<T> {\n return new Observable<T>(subscriber => {\n promise\n .then(value => {\n subscriber.next(value);\n subscriber.complete();\n })\n .catch(error => {\n subscriber.error(error);\n });\n });\n}", "import { Observable } from '../Observable';\n\n/**\n * Creates an Observable that emits no items to the Observer and immediately\n * emits a complete notification.\n *\n * @return An Observable that emits only the complete notification.\n */\nexport function empty<T = never>(): Observable<T> {\n return new Observable<T>(subscriber => {\n subscriber.complete();\n });\n}", "import { Observable } from '../Observable';\n\n/**\n * Creates an Observable that emits no items to the Observer and never completes.\n *\n * @return An Observable that never emits anything.\n */\nexport function never<T = never>(): Observable<T> {\n return new Observable<T>(() => {\n // Do nothing - never emit, never complete, never error\n });\n}", "import { Observable } from '../Observable';\n\n/**\n * Creates an Observable that emits no items to the Observer and immediately\n * emits an error notification.\n *\n * @param error The particular Error to pass to the error notification.\n * @return An Observable that emits only the error notification.\n */\nexport function throwError<T = never>(error: any): Observable<T> {\n return new Observable<T>(subscriber => {\n subscriber.error(error);\n });\n}", "import { Observable } from '../Observable';\n\n/**\n * Creates an Observable that emits a sequence of numbers within a specified range.\n *\n * @param start The value of the first integer in the sequence.\n * @param count The number of sequential integers to generate.\n * @return An Observable that emits a finite range of sequential integers.\n */\nexport function range(start: number, count: number): Observable<number> {\n return new Observable<number>(subscriber => {\n if (count <= 0) {\n subscriber.complete();\n return;\n }\n\n const end = start + count;\n for (let i = start; i < end; i++) {\n subscriber.next(i);\n }\n subscriber.complete();\n });\n}", "import { Observable } from '../Observable';\n\n/**\n * Creates an Observable that, on subscribe, calls an Observable factory to\n * make an Observable for each new Observer.\n *\n * @param observableFactory The Observable factory function to invoke for each\n * Observer that subscribes to the output Observable. May also return a Promise,\n * which will be converted on the fly to an Observable.\n * @return An Observable whose Observers' subscriptions trigger an invocation\n * of the given Observable factory function.\n */\nexport function defer<T>(observableFactory: () => Observable<T> | Promise<T>): Observable<T> {\n return new Observable<T>(subscriber => {\n let result: Observable<T> | Promise<T>;\n\n try {\n result = observableFactory();\n } catch (err) {\n subscriber.error(err);\n return;\n }\n\n // If result is a Promise, convert it to Observable\n if (result && typeof (result as any).then === 'function') {\n const promise = result as Promise<T>;\n promise\n .then(value => {\n subscriber.next(value);\n subscriber.complete();\n })\n .catch(error => {\n subscriber.error(error);\n });\n } else {\n // If result is an Observable, subscribe to it\n const observable = result as Observable<T>;\n return observable.subscribe({\n next: (value) => subscriber.next(value),\n error: (err) => subscriber.error(err),\n complete: () => subscriber.complete()\n });\n }\n });\n}", "import { Observable, OperatorFunction } from '../Observable';\n\n/**\n * Returns an Observable that skips the first `count` items emitted by the source Observable.\n *\n * @param count The number of times, items emitted by source Observable should be skipped.\n * @return An Observable that skips the first `count` values emitted by the source Observable.\n */\nexport function skip<T>(count: number): OperatorFunction<T, T> {\n return (source: Observable<T, any>): Observable<T, any> => {\n return new Observable<T>(subscriber => {\n let skipped = 0;\n \n const subscription = source.subscribe({\n next: (value) => {\n if (skipped < count) {\n skipped++;\n } else {\n subscriber.next(value);\n }\n },\n error: (err) => {\n subscriber.error(err);\n },\n complete: () => {\n subscriber.complete();\n }\n });\n\n return subscription;\n });\n };\n}", "import { Observable, OperatorFunction } from '../Observable';\n\n/**\n * Emits values emitted by the source Observable so long as each value satisfies\n * the given predicate, and then completes as soon as this predicate is not satisfied.\n *\n * @param predicate A function that evaluates each value emitted by the source Observable.\n * If it returns `true`, the value is emitted, if `false` the Observable completes.\n * @param inclusive When set to `true` the value that caused predicate to return `false` will also be emitted.\n * @return An Observable that emits values from the source Observable so long as each value\n * satisfies the condition defined by the predicate, then completes.\n */\nexport function takeWhile<T>(\n predicate: (value: T, index: number) => boolean,\n inclusive: boolean = false\n): OperatorFunction<T, T> {\n return (source: Observable<T, any>): Observable<T, any> => {\n return new Observable<T>(subscriber => {\n let index = 0;\n \n const subscription = source.subscribe({\n next: (value) => {\n const result = predicate(value, index++);\n \n if (result) {\n subscriber.next(value);\n } else {\n if (inclusive) {\n subscriber.next(value);\n }\n subscriber.complete();\n }\n },\n error: (err) => {\n subscriber.error(err);\n },\n complete: () => {\n subscriber.complete();\n }\n });\n\n return subscription;\n });\n };\n}", "import { Observable, OperatorFunction } from '../Observable';\n\n/**\n * Returns an Observable that emits the items you specify as arguments before it begins\n * to emit items emitted by the source Observable.\n *\n * @param values Items you want the modified Observable to emit first.\n * @return An Observable that emits the given values and then emits the items emitted by the source Observable.\n */\nexport function startWith<T>(...values: T[]): OperatorFunction<T, T> {\n return (source: Observable<T, any>): Observable<T, any> => {\n return new Observable<T>(subscriber => {\n // First emit the starting values\n for (const value of values) {\n subscriber.next(value);\n }\n \n // Then subscribe to the source\n const subscription = source.subscribe({\n next: (value) => {\n subscriber.next(value);\n },\n error: (err) => {\n subscriber.error(err);\n },\n complete: () => {\n subscriber.complete();\n }\n });\n\n return subscription;\n });\n };\n}", "import { Observable } from '../Observable';\n\n/**\n * Creates an output Observable which sequentially emits all values from the first given\n * Observable and then moves on to the next.\n *\n * @param observables Input Observables to concatenate.\n * @return An Observable that emits items from all the input Observables sequentially.\n */\nexport function concat<T>(...observables: Observable<T>[]): Observable<T> {\n return new Observable<T>(subscriber => {\n let currentIndex = 0;\n let currentSubscription: any;\n\n function subscribeToNext() {\n if (currentIndex >= observables.length) {\n subscriber.complete();\n return;\n }\n\n const currentObservable = observables[currentIndex++];\n currentSubscription = currentObservable.subscribe({\n next: (value) => {\n subscriber.next(value);\n },\n error: (err) => {\n subscriber.error(err);\n },\n complete: () => {\n subscribeToNext();\n }\n });\n }\n\n subscribeToNext();\n\n return () => {\n if (currentSubscription) {\n currentSubscription.unsubscribe();\n }\n };\n });\n}", "import { Observable } from '../Observable';\n\n/**\n * Creates an output Observable which concurrently emits all values from every given input Observable.\n *\n * @param observables Input Observables to merge together.\n * @return An Observable that emits items from all the input Observables concurrently.\n */\nexport function merge<T>(...observables: Observable<T>[]): Observable<T> {\n return new Observable<T>(subscriber => {\n if (observables.length === 0) {\n subscriber.complete();\n return;\n }\n\n let completedCount = 0;\n const subscriptions: any[] = [];\n\n for (const observable of observables) {\n const subscription = observable.subscribe({\n next: (value) => {\n subscriber.next(value);\n },\n error: (err) => {\n subscriber.error(err);\n },\n complete: () => {\n completedCount++;\n if (completedCount === observables.length) {\n subscriber.complete();\n }\n }\n });\n subscriptions.push(subscription);\n }\n\n return () => {\n subscriptions.forEach(sub => sub.unsubscribe());\n };\n });\n}", "import { Observable } from '../Observable';\n\n/**\n * Creates an Observable that emits events of a specific type from a given event target.\n *\n * @param target The DOM event target (e.g., an HTMLElement, Document, Window).\n * @param eventName The name of the event to listen for (e.g., 'click', 'mousemove').\n * @return An Observable that emits events of the specified type.\n */\nexport function fromEvent<T extends Event>(\n target: EventTarget,\n eventName: string\n): Observable<T> {\n return new Observable<T>(subscriber => {\n const handler = (event: Event) => {\n subscriber.next(event as T);\n };\n\n target.addEventListener(eventName, handler);\n\n // Return a teardown function that removes the event listener\n return () => {\n target.removeEventListener(eventName, handler);\n };\n });\n}\n", "import { Observable } from '../Observable';\nimport { EmptyError } from './lastValueFrom'; // Reusing EmptyError from lastValueFrom\n\n/**\n * Converts an observable to a promise by subscribing to the observable,\n * and returning a promise that will resolve with the last value emitted\n * by the observable when it completes.\n *\n * If the observable stream completes before any values were emitted, the\n * returned promise will reject with {@link EmptyError}.\n *\n * If the observable stream emits an error, the returned promise will reject\n * with that error.\n *\n * @param source The observable to convert to a promise.\n * @return A promise that resolves with the last value from the observable,\n * or rejects with an error or EmptyError.\n */\nexport function toPromise<T>(source: Observable<T>): Promise<T> {\n return new Promise<T>((resolve, reject) => {\n let _hasValue = false;\n let _value: T;\n\n source.subscribe({\n next: (value) => {\n _value = value;\n _hasValue = true;\n },\n error: reject,\n complete: () => {\n if (_hasValue) {\n resolve(_value);\n } else {\n reject(new EmptyError());\n }\n },\n });\n });\n}", "export * from './Store';\nexport * from './Subject';\nexport * from './BehaviorSubject';\nexport * from './ReplaySubject';\nexport * from './ReplayForwardSubject';\nexport * from './Observable';\nexport * from './Subscription';\nexport * from './AutoCloseSubscription'\n\n// Internal utilities (namespace)\nexport * from './internal';\n\nexport interface TimerConfig {\n setTimeout?: (callback: () => void, ms: number) => any;\n clearTimeout?: (id: any) => void;\n}\n\nexport interface IntervalConfig {\n setInterval?: (handler: string | Function, timeout?: number) => number;\n clearInterval?: (id: number | undefined) => void;\n}\n\n\nexport type IntervalIdType = any | null | undefined;\n/*\n if (this._childrenConnectedDoneInterval) {\n clearInterval(this._childrenConnectedDoneInterval);\n }\n\n this._childrenConnectedDoneInterval = debounceTimeIntervalLock(\n () => this._connectedInvocations === 0,\n () => {\n this._childrenConnectedDoneInterval = null;\n this.config.onChildrenConnectedDone(this)\n },\n this.config?.childrenConnectedDoneCheckIntervalTime ?? 30\n , {\n setInterval: window.setInterval,\n clearInterval: window.clearInterval\n });\n\n */\nexport const debounceTimeIntervalLock = (\n unlockChecker: () => boolean,\n unlocked: () => void,\n intervalTime: number,\n config?: IntervalConfig\n) => {\n const clearIntervalFn = config?.clearInterval || clearInterval;\n const setIntervalFn = config?.setInterval || setInterval;\n \n // console.log('[debounceTimeIntervalLock] setIntervalFn type:', typeof setIntervalFn);\n // console.log('[debounceTimeIntervalLock] clearIntervalFn type:', typeof clearIntervalFn);\n\n const nextIntervalId = setIntervalFn(() => {\n if (unlockChecker()) {\n // console.log('[debounceTimeIntervalLock] Interval unlocked, clearing ID:', nextIntervalId);\n clearIntervalFn(nextIntervalId);\n unlocked();\n }\n }, intervalTime);\n\n // console.log('[debounceTimeIntervalLock] Interval created with ID:', nextIntervalId);\n return nextIntervalId;\n}\n\nexport const debounce = <T>(fn: (data: T) => void, delay: number, config?: TimerConfig) => {\n const setTimeoutFn = config?.setTimeout || setTimeout;\n const clearTimeoutFn = config?.clearTimeout || clearTimeout;\n\n let timer: any = null;\n return (data: T) => {\n if (timer) {\n clearTimeoutFn(timer);\n }\n timer = setTimeoutFn(() => {\n fn(data);\n timer = null;\n }, delay);\n };\n};\n\nexport const throttleTime = <Args extends [...unknown[]]>(fn: (...args: Args) => void, delay: number, config?: TimerConfig) => {\n const setTimeoutFn = config?.setTimeout || setTimeout;\n\n let timer: any = null;\n return (...args: Args) => {\n if (!timer) {\n timer = setTimeoutFn(() => {\n fn(...args);\n timer = null;\n }, delay);\n }\n };\n};\n\nexport const throttle = <Args extends [...unknown[]]>(fn: (...args: Args) => void, delay: number) => {\n let lastTime = 0;\n return (...args: Args) => {\n const now = Date.now();\n if (now - lastTime >= delay) {\n fn(...args);\n lastTime = now;\n }\n };\n};\n", "/**\n * AbortablePromise - Promise-like class that supports AbortSignal\n * Allows chaining with .then() and collects steps for sequential execution\n */\nexport class AbortablePromise<T> implements PromiseLike<T> {\n private steps: Array<(value: any) => any> = [];\n private signal?: AbortSignal;\n private initialExecutor: (() => Promise<any>) | Promise<any>;\n private errorHandler?: (reason: any) => any;\n\n constructor(\n executor: (() => Promise<T>) | Promise<T>,\n signal?: AbortSignal\n ) {\n this.initialExecutor = executor;\n this.signal = signal;\n }\n\n then<TResult1 = T, TResult2 = never>(\n onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null,\n onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null\n ): AbortablePromise<TResult1 | TResult2> {\n // Create new promise instance\n const newPromise = new AbortablePromise<TResult1 | TResult2>(\n this.initialExecutor,\n this.signal\n );\n\n // Copy existing steps\n newPromise.steps = [...this.steps];\n\n // Add new step if provided\n if (onfulfilled) {\n newPromise.steps.push(onfulfilled as any);\n }\n\n // Set error handler if provided\n if (onrejected) {\n newPromise.errorHandler = onrejected as any;\n } else if (this.errorHandler) {\n newPromise.errorHandler = this.errorHandler;\n }\n\n return newPromise;\n }\n\n catch<TResult = never>(\n onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | undefined | null\n ): AbortablePromise<T | TResult> {\n return this.then(undefined, onrejected);\n }\n\n finally(onfinally?: (() => void) | undefined | null): AbortablePromise<T> {\n return this.then(\n (value) => {\n onfinally?.();\n return value;\n },\n (reason) => {\n onfinally?.();\n throw reason;\n }\n );\n }\n\n private async execute(): Promise<T> {\n try {\n // Check abort before starting\n if (this.signal?.aborted) {\n throw new Error(this.signal.reason || 'Aborted');\n }\n\n // Create abort promise\n const abortPromise = new Promise<never>((_, reject) => {\n if (this.signal?.aborted) {\n return reject(new Error(this.signal.reason || 'Aborted'));\n }\n const callback = (e: Event) => {\n const target = e.target as AbortSignal;\n this.signal?.removeEventListener('abort', callback);\n reject(new Error(target.reason || 'Aborted'));\n };\n this.signal?.addEventListener('abort', callback, { once: true });\n });\n\n // Pipeline runner\n const pipelineRunner = async (): Promise<T> => {\n // Execute initial executor\n let lastResult: any;\n if (typeof this.initialExecutor === 'function') {\n if (this.signal?.aborted) {\n throw new Error(this.signal.reason || 'Aborted');\n }\n lastResult = await (this.initialExecutor as () => Promise<any>)();\n } else {\n lastResult = await this.initialExecutor;\n }\n\n // Execute each step sequentially\n for (let i = 0; i < this.steps.length; i++) {\n // Check abort before each step\n if (this.signal?.aborted) {\n throw new Error(this.signal.reason || 'Aborted');\n }\n\n const step = this.steps[i];\n lastResult = await step(lastResult);\n }\n\n return lastResult;\n };\n\n return await Promise.race([pipelineRunner(), abortPromise]);\n } catch (error) {\n if (this.errorHandler) {\n return await this.errorHandler(error);\n }\n throw error;\n }\n }\n\n // Convert to native Promise\n toPromise(): Promise<T> {\n return this.execute();\n }\n}", "import { Subscription } from '../message/Subscription';\nimport { ConstructorType } from '../types';\nimport { ValidUtils } from '../valid/ValidUtils';\nimport { AbortablePromise } from './AbortablePromise';\n\nexport namespace Promises {\n export const isFulfilled = <T>(result: PromiseSettledResult<T>): result is PromiseFulfilledResult<T> => {\n return result.status === 'fulfilled';\n };\n export const isRejected = <T>(result: PromiseSettledResult<T>): result is PromiseRejectedResult => {\n return result.status === 'rejected';\n };\n\n export const filterCatch = async (promise: Promise<any>, has: ConstructorType<any> | ((e: any) => boolean) | (ConstructorType<any> | ((e: any) => void))[]) => {\n try {\n await promise;\n return undefined;\n } catch (e) {\n const targetHas = Array.isArray(has) ? has : [has];\n for (let ha of targetHas) {\n // if (ValidUtils.isConstructor(ha)) {\n if (ValidUtils.isFunctionType(ha)) {\n if (e instanceof ha) {\n return e;\n }\n } else {\n if ((ha as Function)(e)) {\n return e;\n }\n }\n }\n throw e;\n }\n return undefined;\n };\n export const sleep = (ms: number) => new Promise(resolve => setTimeout(resolve, ms));\n export const sleepReject = (ms: number) => new Promise((resolve, reject) => setTimeout(reject, ms));\n export const settle = async <T, E = unknown>(promise: Promise<T>): Promise<Promises.SettledResult<T, E>> => {\n return Promise.allSettled([promise]).then(results => results[0]);\n };\n export const settles = async <T, E = unknown>(...promises: Promise<T>[]): Promise<Promises.SettledResult<T, E>[]> => {\n return Promise.allSettled(promises);\n };\n export type SettledResult<T, E = unknown> = PromiseFulfilledResult<T> | (Omit<PromiseRejectedResult, 'reason'> & { reason: E });\n\n export type LoopConfig = { age: number };\n export type ObservableLoop<T> = {\n subscribe: (callback: { then?: (data: T, config: LoopConfig & { duration: number }) => void; catch?: (e: any, config: LoopConfig & { duration: number }) => void; delayThen?: (config: LoopConfig & { duration: number; isCatch: boolean; data?: T }) => void }) => Subscription;\n };\n export const loop = <T>(config: { factory: (config: LoopConfig) => Promise<T>; delay?: number; loopDelay?: number }): ObservableLoop<T> => {\n return {\n subscribe: callback => {\n let stop = false;\n let age = 0;\n const loopExecute = async () => {\n const start = Date.now();\n let end = start;\n age++;\n const executeConfig = { age: age };\n let t: T;\n let isCatch = false;\n try {\n t = await config.factory(executeConfig);\n end = Date.now();\n callback.then?.(t, { ...executeConfig, duration: end - start });\n } catch (e) {\n isCatch = true;\n end = Date.now();\n callback.catch?.(e, { ...executeConfig, duration: end - start });\n }\n await sleep(config.loopDelay ?? 0);\n // @ts-ignore\n callback.delayThen?.({ ...executeConfig, duration: end - start, isCatch: isCatch, data: t });\n if (!stop) return loopExecute();\n };\n\n setTimeout(() => {\n loopExecute();\n }, config.delay ?? 0);\n\n return new Subscription(() => {\n stop = true;\n });\n }\n };\n };\n export const delayExecute = <T>(value: (() => T) | (() => Promise<T>), delay = 0): Promise<T> => {\n return new Promise<T>(resolve => {\n setTimeout(async () => {\n const t = await value();\n resolve(t);\n }, delay);\n });\n };\n\n /**\n * Create an abortable promise chain\n * @param executor Initial promise or promise factory\n * @param signal Optional AbortSignal to cancel the execution\n */\n export const abortable = <T>(executor: (() => Promise<T>) | Promise<T>, signal?: AbortSignal): AbortablePromise<T> => {\n return new AbortablePromise(executor, signal);\n };\n\n // const { promise, resolve, reject } = Promise.withResolvers<T>(); \uACF5\uC2DD \uC774\uAC70\uC4F0\uC148\n export const withResolvers = <T>() => {\n let resolve!: (value: T | PromiseLike<T>) => void;\n let reject!: (reason?: any) => void;\n\n const promise = new Promise<T>((res, rej) => {\n resolve = res;\n reject = rej;\n });\n\n return { promise, resolve, reject };\n };\n\n export const executeInChunks = async <T>(promiseFactories: (() => Promise<T>)[], config: { chunkSize: number; sleepBetweenChunks: number }): Promise<T[]> => {\n const results: T[] = [];\n const chunkSize = config.chunkSize;\n const sleepBetweenChunks = config.sleepBetweenChunks;\n\n for (let i = 0; i < promiseFactories.length; i += chunkSize) {\n const chunk = promiseFactories.slice(i, i + chunkSize);\n const chunkResults = await Promise.all(chunk.map(factory => factory()));\n results.push(...chunkResults);\n // Add small delay between chunks to be extra safe\n if (i + chunkSize < promiseFactories.length) {\n await sleep(sleepBetweenChunks);\n }\n }\n return results;\n };\n\n export const executeSettledInChunks = async <T, E = unknown>(promiseFactories: (() => Promise<T>)[], config: { chunkSize: number; sleepBetweenChunks: number }): Promise<Promises.SettledResult<T, E>[]> => {\n const results: Promises.SettledResult<T, E>[] = [];\n const chunkSize = config.chunkSize;\n const sleepBetweenChunks = config.sleepBetweenChunks;\n\n for (let i = 0; i < promiseFactories.length; i += chunkSize) {\n const chunk = promiseFactories.slice(i, i + chunkSize);\n const chunkResults = (await Promise.allSettled(chunk.map(factory => factory()))) as Promises.SettledResult<T, E>[];\n results.push(...chunkResults);\n // Add small delay between chunks to be extra safe\n if (i + chunkSize < promiseFactories.length) {\n await sleep(sleepBetweenChunks);\n }\n }\n return results;\n };\n\n /**\n * Execute promises with concurrency limit using a pool pattern\n * @param promiseFactories Array of promise factories\n * @param concurrency Maximum number of concurrent executions\n * @returns Promise that resolves with all results\n */\n export const executeWithConcurrency = async <T>(promiseFactories: (() => Promise<T>)[], concurrency: number = 10): Promise<T[]> => {\n const results: T[] = new Array(promiseFactories.length);\n let currentIndex = 0;\n\n const executeNext = async (index: number): Promise<void> => {\n while (currentIndex < promiseFactories.length) {\n const factoryIndex = currentIndex++;\n results[factoryIndex] = await promiseFactories[factoryIndex]();\n }\n };\n\n // Create pool of concurrent workers\n const workers = Array(Math.min(concurrency, promiseFactories.length))\n .fill(0)\n .map((_, i) => executeNext(i));\n\n await Promise.all(workers);\n return results;\n };\n\n /**\n * Execute promises with concurrency limit using race pattern (most efficient)\n * Automatically starts a new promise as soon as one completes\n * @param promiseFactories Array of promise factories\n * @param limit Maximum number of concurrent executions (default: 5)\n * @returns Promise that resolves with all results\n */\n export const executeWithLimit = async <T>(promiseFactories: (() => Promise<T>)[], limit: number = 5): Promise<T[]> => {\n const results: T[] = new Array(promiseFactories.length);\n const executing: Promise<void>[] = [];\n\n for (const [index, factory] of promiseFactories.entries()) {\n const promise = factory()\n .then(result => {\n results[index] = result;\n })\n .finally(() => {\n executing.splice(executing.indexOf(promise), 1);\n });\n\n executing.push(promise);\n\n if (executing.length >= limit) {\n await Promise.race(executing);\n }\n }\n\n await Promise.all(executing);\n return results;\n };\n\n /**\n * Retry a promise with configurable delays\n * @param factory Function that returns a promise to retry (receives attempt number and previous error as parameters)\n * @param config Retry configuration\n * @param config.retry Number of retries (0 = no retry, 1 = retry once if failed, etc.)\n * @param config.delay.initialDelay Delay before first attempt (default: 0)\n * @param config.delay.retryDelay Delay between retry attempts (default: 0)\n * @param config.onRetry Callback called on each retry with error and attempt number\n * @returns Promise that resolves with the result or rejects after all retries\n * @example\n * // Retry up to 3 times with 1 second delay between attempts\n * await Promises.retry((attempt, error) => {\n * if (error) console.log('Previous error:', error);\n * return fetchData(attempt);\n * }, { retry: 3, delay: { retryDelay: 1000 } })\n */\n export const retry = async <T>(\n factory: (attempt: number, error?: any) => Promise<T>,\n config: {\n retry: number;\n delay?: {\n initialDelay?: number;\n retryDelay?: number;\n };\n onRetry?: (error: any, attempt: number) => void;\n }\n ): Promise<T> => {\n const initialDelay = config.delay?.initialDelay ?? 0;\n const retryDelay = config.delay?.retryDelay ?? 0;\n\n // Initial delay before first attempt\n if (initialDelay > 0) {\n await sleep(initialDelay);\n }\n\n let lastError: any;\n\n for (let attempt = 0; attempt <= config.retry; attempt++) {\n try {\n return await factory(attempt, lastError);\n } catch (error) {\n lastError = error;\n\n // Don't retry if this was the last attempt\n if (attempt === config.retry) {\n break;\n }\n\n // Call onRetry callback if provided\n config.onRetry?.(error, attempt + 1);\n\n // Wait before retrying\n if (retryDelay > 0) {\n await sleep(retryDelay);\n }\n }\n }\n\n // All retries failed, throw the last error\n throw lastError;\n };\n\n export namespace Result {\n export type FulfilledType<T> = PromiseFulfilledResult<T>;\n export type RejectType<E = unknown> = Omit<PromiseRejectedResult, 'reason'> & { reason: E };\n export type PendingType = { status: 'pending' };\n export type Type<T, E = unknown> = FulfilledType<T> | RejectType<E> | PendingType;\n\n export type FulfilledState<T> = FulfilledType<T> & { isFulfilled: true; isRejected: false; isPending: false };\n export type RejectState<E = unknown> = RejectType<E> & { isFulfilled: false; isRejected: true; isPending: false };\n export type PendingState = PendingType & { isFulfilled: false; isRejected: false; isPending: true };\n export type UndefinedResultState = { status?: undefined; isFulfilled: false; isRejected: false; isPending: false };\n\n export type State<T, E = unknown> = FulfilledState<T> | RejectState<E> | PendingState;\n export type StateFactory<T, E = unknown> = State<T, E> & { factory: () => StateFactory<T, E> };\n export type PromiseState<T, E = unknown> = State<T, E> & Promise<T>;\n export type PromiseStateFactory<T, E = unknown> = PromiseState<T, E> & { factory: () => PromiseStateFactory<T, E> };\n\n export async function awaitWrap<T, E = unknown>(promise: Promise<T>): Promise<State<T, E>>;\n export async function awaitWrap<T, E = unknown>(promise: () => Promise<T>): Promise<StateFactory<T, E>>;\n export async function awaitWrap<T, E = unknown>(promise: Promise<T> | (() => Promise<T>)): Promise<State<T, E> | StateFactory<T, E>> {\n const data = typeof promise === 'function' ? wrap<T, E>(promise) : wrap<T, E>(promise);\n // try {\n\n try {\n await data;\n } catch (e) {}\n\n const rData = {\n status: (data as any).status,\n isFulfilled: (data as any).isFulfilled,\n isRejected: (data as any).isRejected,\n isPending: (data as any).isPending,\n value: (data as any).value,\n reason: (data as any).reason\n } as any;\n if (typeof promise === 'function') {\n rData.factory = () => {\n return awaitWrap(promise);\n };\n return rData;\n } else {\n return rData;\n }\n }\n\n export function wrap<T, E = unknown>(promise: Promise<T>): PromiseState<T, E>;\n export function wrap<T, E = unknown>(promise: () => Promise<T>): PromiseStateFactory<T, E>;\n export function wrap<T, E = unknown>(promise: Promise<T> | (() => Promise<T>)): PromiseState<T, E> | PromiseStateFactory<T, E> {\n const promiseResult = (typeof promise === 'function' ? promise() : promise) as State<T, E> & Promise<T>;\n if (typeof promise === 'function') {\n const p = promiseResult as unknown as PromiseStateFactory<T, E> & Promise<T>;\n p.factory = () => {\n return wrap(promise);\n };\n }\n if (promiseResult.status === undefined) {\n const p = promiseResult as unknown as PendingState & Promise<T>;\n p.status = 'pending';\n p.isPending = true;\n p.isFulfilled = false;\n p.isRejected = false;\n p.then(\n result => {\n console.log('result??', result);\n const p = promiseResult as unknown as FulfilledState<T>;\n p.status = 'fulfilled';\n p.isFulfilled = true;\n p.isRejected = false;\n p.isPending = false;\n p.value = result;\n },\n reason => {\n console.log('rejet??', reason);\n const p = promiseResult as unknown as RejectState<E>;\n p.status = 'rejected';\n p.isFulfilled = false;\n p.isRejected = true;\n p.isPending = false;\n p.reason = reason;\n }\n );\n }\n return promiseResult;\n }\n }\n}\n", "\nexport type Valid<T = any, E = Element> = (value?: T, target?: E, event?: Event) => boolean;\nexport type ValidAction<T = any, E = Element> = (valid: boolean, value?: T, target?: E, event?: Event) => void;\n// export interface Valid<T = any, E = Element> {\n// valid(value?: T, target?: E, event?: Event): boolean;\n// }\nexport abstract class Validator<T = any, E = Element> {\n private _target?: E;\n private _event?: Event;\n private _autoValid!: boolean;\n private _autoValidAction!: boolean;\n private _validAction?: ValidAction<T, E>;\n constructor(protected _value?: T, target?: E, event?: Event, autoValid = true, autoValidAction = true) {\n this.setTarget(target);\n this.setEvent(event);\n this.setAutoValid(autoValid)\n this.setAutoValidAction(autoValidAction)\n }\n\n getValidAction(): ValidAction<T, E> | undefined {\n return this._validAction;\n }\n\n setValidAction(value: ValidAction<T, E>) {\n this._validAction = value;\n return this;\n }\n\n getAutoValid() {\n return this._autoValid;\n }\n\n setAutoValid(autoValid: boolean) {\n this._autoValid = autoValid;\n return this;\n }\n\n getAutoValidAction() {\n return this._autoValidAction;\n }\n\n setAutoValidAction(autoValid: boolean) {\n this._autoValidAction = autoValid;\n return this;\n }\n\n getEvent() {\n return this._event;\n }\n\n setEvent(event: Event | undefined) {\n if (event) {\n this._event = event;\n }\n return this;\n }\n\n getTarget() {\n return this._target;\n }\n\n targetFocus() {\n (this._target as any)?.focus?.();\n }\n\n targetReset() {\n (this._target as any)?.reset?.();\n }\n\n targetDispatchEvent(event: Event) {\n return (this._target as any)?.dispatchEvent(event);\n }\n\n setTarget(target: E | undefined) {\n if (target) {\n this._target = target;\n }\n return this;\n }\n\n // private domRenderFinal(obj: any) {\n // (obj as any)._DomRender_isFinal = true;\n // return obj\n // }\n\n get value(): T | undefined {\n if (this._value === undefined || this._value === null) {\n this._value = (this.getTarget() as any)?.value;\n }\n return this._value;\n }\n\n set value(value: T | undefined) {\n // console.log('---?set?', value, this)\n this._value = value;\n this.tickValue(value);\n }\n\n protected tickValue(value: T | undefined) {\n this.changeValue(value);\n const target = this.getTarget() as any;\n if (target && target?.value !== undefined && target?.value !== null) {\n try {\n target.value = this._value;\n } catch (e) {\n console.error('set value function is blocked ')\n }\n }\n if (this.getAutoValidAction()) {\n this.validAction();\n } else if (this.getAutoValid()) {\n this.valid();\n }\n }\n\n set(value?:T, target?: E, event?: Event) {\n this.setTarget(target);\n this.setEvent(event)\n this.value = value;\n }\n\n changeValue(value: T | undefined) {\n }\n\n get checked(): boolean {\n return (this.getTarget() as any)?.checked ?? false;\n }\n\n set checked(checked: boolean) {\n const target = this.getTarget() as any;\n if (target) {\n target.checked = checked;\n }\n }\n\n get selectedIndex(): number {\n return (this.getTarget() as any)?.selectedIndex ?? -1;\n }\n\n set selectedIndex(selectedIndex: number) {\n const target = this.getTarget() as any;\n if (target) {\n target.selectedIndex = selectedIndex;\n }\n }\n\n public querySelector(selector: string) {\n return (this.getTarget() as unknown as Element)?.querySelector(selector);\n }\n\n public querySelectorALL(selector: string) {\n return (this.getTarget() as unknown as Element)?.querySelectorAll(selector);\n }\n\n public validAction() {\n const valid = this.valid();\n this.getValidAction()?.(valid, this.value, this.getTarget(), this.getEvent());\n return valid;\n }\n\n // public childValidAction() {\n // const valid = this.childValids();\n // this.getValidAction()?.(valid, this.value, this.getTarget(), this.getEvent());\n // return valid;\n // }\n\n public abstract valid(): boolean;\n\n public inValid(): boolean {\n return !this.valid();\n };\n\n public allValid() {\n return this.valid() && this.childInValid();\n }\n\n public allValidAction() {\n return this.validAction() && this.childInValidAction();\n }\n\n public allInValid() {\n return !this.allValid();\n }\n\n public allInValidAction() {\n return !this.allValidAction();\n }\n\n public childValid(): boolean {\n return !this.childInValid();\n }\n\n public childValue(): {[key: string]: any } {\n const data = {} as any;\n this.childValidators().filter(([k, v]) => {\n data[k] = v.value;\n });\n return data;\n }\n\n public childValidAction(): boolean {\n return !this.childInValidAction();\n }\n\n public childInValid(): boolean {\n const inValid = this.childValidators().filter(([k, v]) => !v.valid());\n return inValid.length > 0;\n }\n\n public childInValidValidator(): [string, Validator<any, Element>][] {\n const inValid = this.childValidators().filter(([k, v]) => !v.valid());\n return inValid;\n }\n\n public childInValidAction(): boolean {\n const inValid = this.childValidators().filter(([k, v]) => !v.validAction());\n return inValid.length > 0;\n }\n\n public childValidator(name: string): Validator | undefined {\n return Object.entries(this).find(([k, v]) => ( k === name && (v instanceof Validator)))?.[1];\n }\n\n public childValidators(): [string, Validator][] {\n return Object.entries(this).filter(([k, v]) => (v instanceof Validator));\n }\n\n public childValidValidator(): [string, Validator][] {\n return this.childValidators().filter(it => it[1].valid());\n }\n\n public syncValue() {\n this.value = (this.getTarget() as any)?.value;\n }\n\n public allSyncValue() {\n this.childValidators().forEach(([k, e]) => {\n e.syncValue();\n })\n }\n\n public get length() {\n return (this.value as any)?.length ?? 0;\n }\n}", "import {Validator} from './Validator';\n\nexport class NonPassValidator<T = any, E = Element> extends Validator<T, E> {\n constructor(value?: T, target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return false;\n }\n}\n", "import {Validator} from './Validator';\nimport {NonPassValidator} from './NonPassValidator';\n\nexport type MakeValidator<T = any, E = Element> = (value: T, target: E, event?: Event) => Validator<T, E>;\n\nexport abstract class ValidatorArray<T = any, E = Element> extends Validator<Validator<T, E>[], E> {\n private _makeValidatorFactory: MakeValidator<T, E> = (value: T, target: E, event?: Event): Validator<T, E> => {\n return new NonPassValidator(value, target, event);\n }\n\n constructor(value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n getMakeValidatorFactory(): MakeValidator<T, E> {\n return this._makeValidatorFactory;\n }\n\n setMakeValidatorFactory(value: MakeValidator<T, E>) {\n this._makeValidatorFactory = value;\n return this;\n }\n\n setArrayValue(target: E, value: T, event?: Event) {\n this.value?.filter(it => {\n if (it.getTarget()) {\n return it.getTarget() === target;\n } else {\n return false;\n }\n }).forEach(it => {\n it.set(value, target, event);\n });\n this.tickValue(this.value)\n }\n\n addValidator(value: T, target: E, event?: Event) {\n if (!this.value) {\n this.value = [];\n }\n if (value instanceof Validator) {\n this.value?.push(value)\n } else {\n this.value?.push(this.makeValidator(value, target, event))\n }\n this.tickValue(this.value)\n }\n\n allChecked(checked: boolean) {\n this.checked = checked;\n this.value?.forEach(it => {\n it.checked = checked;\n })\n }\n\n getValidators() {\n return this._value;\n }\n\n getValidator(e: E) {\n return this.value?.filter(it => it.getTarget() === e)[0]\n }\n\n getValidatorByValue(value: T) {\n const validatorByValue = this.getValidatorByValues(value)[0];\n return validatorByValue;\n }\n\n getValidatorByValues(value: T) {\n return this.value?.filter(it => it.value === value) ?? [];\n }\n\n removeElement(e: E) {\n const value = this.value;\n if (value) {\n this.value = value.filter(it => it.getTarget() !== e);\n }\n }\n\n makeValidator(value: T, target: E, event?: Event): Validator<T, E> {\n return this._makeValidatorFactory(value, target, event);\n };\n}\n", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class AllCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return !((this.value ?? []).filter(it => !it.checked).length > 0);\n }\n}", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class AllUnCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return !((this.value ?? []).filter(it => it.checked).length > 0);\n }\n}\n", "import {Validator} from './Validator';\n\nexport class CheckedValidator<T = any, E = HTMLElement> extends Validator<T, E> {\n constructor(value?: T, target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return (this.getTarget() as any)?.checked ?? false;\n }\n}\n", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class CountEqualsCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(public count: number, value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return (this.value ?? []).filter(it => it.checked).length === this.count;\n }\n}\n", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class CountEqualsUnCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(public count: number, value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return (this.value ?? []).filter(it => !it.checked).length === this.count;\n }\n}\n", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class CountGreaterThanCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(public count: number, value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return (this.value ?? []).filter(it => it.checked).length > this.count;\n }\n}\n", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class CountGreaterThanEqualsCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(public count: number, value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return (this.value ?? []).filter(it => it.checked).length >= this.count;\n }\n}\n", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class CountGreaterThanEqualsUnCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(public count: number, value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return (this.value ?? []).filter(it => !it.checked).length >= this.count;\n }\n}\n", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class CountGreaterThanUnCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(public count: number, value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return (this.value ?? []).filter(it => !it.checked).length > this.count;\n }\n}\n", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class CountLessThanCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(public count: number, value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return (this.value ?? []).filter(it => it.checked).length < this.count;\n }\n}\n", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class CountLessThanEqualsCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(public count: number, value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return (this.value ?? []).filter(it => it.checked).length <= this.count;\n }\n}\n", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class CountLessThanEqualsUnCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(public count: number, value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return (this.value ?? []).filter(it => !it.checked).length <= this.count;\n }\n}\n", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class CountLessThanUnCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(public count: number, value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return (this.value ?? []).filter(it => !it.checked).length < this.count;\n }\n}\n", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class CountUnCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(public count: number, value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return (this.value ?? []).filter(it => !it.checked).length >= this.count;\n }\n}\n", "import {Validator} from './Validator';\n\nexport class EmptyValidator<T = any, E = Element> extends Validator<T, E> {\n constructor(value?: T, target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n const value = this.value;\n return value === undefined || value === null || ((value as any)?.length ?? 0) <= 0;\n }\n}\n", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class ExcludeCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(public include: any[], public allRequired: boolean = false, value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n const valus = this.value ?? [];\n const unCheckedValue = valus.filter(it => !it.checked).map(it => it.value);\n return unCheckedValue.length > 0 &&\n (!(unCheckedValue.filter(it => !this.include.includes(it)).length > 0)) &&\n (this.allRequired ? unCheckedValue.filter(it => this.include.includes(it)).length === this.include.length : true)\n }\n}\n", "import {Validator} from './Validator';\n\nexport class FormValidator<E = HTMLFormElement> extends Validator<void, E> {\n constructor(target?: E, event?: Event, autoValid = true) {\n super(undefined, target, event, autoValid)\n }\n\n validAction(): boolean {\n return super.childValidAction();\n }\n\n valid(): boolean {\n return this.childValid()\n }\n\n reset() {\n this.targetReset();\n }\n}\n", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class IncludeCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(public include: any[], public allRequired: boolean = false, value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n const valus = this.value ?? [];\n const checkedValue = valus.filter(it => it.checked).map(it => it.value);\n return checkedValue.length > 0 &&\n (!(checkedValue.filter(it => !this.include.includes(it)).length > 0)) &&\n (this.allRequired ? checkedValue.filter(it => this.include.includes(it)).length === this.include.length : true)\n }\n}\n", "import {Validator} from './Validator';\n\nexport class MultipleValidator<T = any, E = Element> extends Validator<T, E> {\n public validators: Validator<T, E>[];\n constructor(validators: Validator<T, E>[], value?: T, target?: E, event?: Event, autoValid: boolean = true) {\n super(value, target, event, autoValid);\n this.validators = validators.map(it => {\n it.setAutoValid(false);\n it.setAutoValidAction(false);\n return it;\n })\n this.validators.forEach(it => {\n it.set(this.value, this.getTarget(), this.getEvent())\n });\n }\n\n changeValue(value: T | undefined) {\n this.validators.forEach(it => it.set(this.value, this.getTarget(), this.getEvent()));\n }\n\n validAction(): boolean {\n return !(this.validators.filter(it => !it.validAction()).length > 0);\n }\n\n valid(): boolean {\n // console.log('mm', this.validators)\n return !(this.validators.filter(it => !it.valid()).length > 0);\n }\n}\n", "import {Validator} from './Validator';\n\nexport class NotEmptyValidator<T = any, E = Element> extends Validator<T, E> {\n constructor(value?: T, target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n const value = this.value;\n // console.log('NotEmptyValidator', value, value !== undefined && value !== null && ((value as any)?.length ?? 0) > 0)\n return value !== undefined && value !== null && ((value as any)?.length ?? 0) > 0;\n }\n}\n", "import {Validator} from './Validator';\n\nexport class NotRegExpTestValidator<T = any, E = Element> extends Validator<T, E> {\n public regexp: RegExp;\n constructor(regexp: RegExp, value?: T, target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n this.regexp = regexp\n }\n\n valid(): boolean {\n const value = this.value as unknown as string;\n const regExp = (this.regexp as any)._DomRender_origin ?? this.regexp;\n if (value) {\n return !regExp.test(value);\n } else {\n return true;\n }\n }\n}\n", "import {Validator} from './Validator';\n\nexport class PassValidator<T = any, E = Element> extends Validator<T, E> {\n constructor(value?: T, target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return true;\n }\n}\n", "import {Validator} from './Validator';\n\nexport class RegExpTestValidator<T = any, E = Element> extends Validator<T, E> {\n public regexp: RegExp;\n constructor(regexp: RegExp, value?: T, target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n this.regexp = regexp\n }\n\n valid(): boolean {\n const value = this.value as unknown as string;\n const regExp = (this.regexp as any)._DomRender_origin ?? this.regexp;\n // console.log('regexp-->', value, this.regexp, regExp.test(value))\n if (value) {\n return regExp.test(value);\n } else {\n return false;\n }\n }\n}\n", "import {Validator} from './Validator';\n\nexport class RequiredValidator<T = any, E = Element> extends Validator<T, E> {\n constructor(value?: T, target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n const value = this.value;\n // console.log('required', value, value !== undefined && value !== null)\n return value !== undefined && value !== null;\n }\n}\n", "import {Validator} from './Validator';\n\nexport class UnCheckedValidator<T = any, E = HTMLElement> extends Validator<T, E> {\n constructor(value?: T, target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return !((this.getTarget() as any)?.checked ?? false);\n }\n}\n", "import {Validator} from './Validator';\nimport {MultipleValidator} from './MultipleValidator';\n\nexport type ValidMulltiple<T = any, E = Element> = (validators: Validator<T, E>[], value?: T, target?: E, event?: Event) => boolean;\n\nexport class ValidMultipleValidator<T = any, E = Element> extends MultipleValidator<T, E> {\n constructor(public validMultipleCallback: ValidMulltiple<T, E>, public validators: Validator<T, E>[], value?: T, target?: E, event?: Event, autoValid: boolean = true) {\n super(validators, value, target, event, autoValid);\n }\n\n valid(): boolean {\n return this.validMultipleCallback(this.validators, this.value, this.getTarget(), this.getEvent());\n }\n}\n", "import {Valid, Validator} from './Validator';\n\nexport class ValidValidator<T = any, E = Element> extends Validator<T, E> {\n constructor(public validCallBack: Valid<T, E>, value?: T, target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(value?:T, target?:E, event?:Event): boolean {\n return this.validCallBack(value, target, event);\n }\n}\n", "import {Valid, Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class ValidValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(public validCallBack: Valid<Validator<T, E>[], E>, value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return this.validCallBack(this.value, this.getTarget(), this.getEvent());\n }\n}\n", "export type FetcherRequest<TARGET, RESPONSE, CONFIG, RESPONSE_TRANSFORM = RESPONSE> = {\n target: TARGET;\n config?: CONFIG & { hasErrorChecker?: (data: RESPONSE) => any };\n transform?: (data: RESPONSE) => RESPONSE_TRANSFORM;\n errorTransform?: (data?: any) => Promise<any>;\n before?: () => void;\n error?: (e?: any) => void;\n afterSuccess?: () => void;\n finally?: () => void;\n};\n\nexport abstract class Fetcher<TARGET, RESPONSE, CONFIG, PIPE extends { responseData?: RESPONSE }> {\n protected createPipe<T = RESPONSE>(config: FetcherRequest<TARGET, RESPONSE, CONFIG, T>): PIPE {\n return {} as PIPE;\n }\n protected abstract before<T = RESPONSE>(config: FetcherRequest<TARGET, RESPONSE, CONFIG, T>, pipe: PIPE): void;\n protected abstract afterSuccess<T = RESPONSE>(config: FetcherRequest<TARGET, RESPONSE, CONFIG, T>, pipe: PIPE): void;\n protected abstract afterSuccessTransform<T = RESPONSE>(\n config: FetcherRequest<TARGET, RESPONSE, CONFIG, T>,\n pipe: PIPE\n ): void;\n protected abstract finally<T = RESPONSE>(config: FetcherRequest<TARGET, RESPONSE, CONFIG, T>, pipe: PIPE): void;\n protected abstract error<T = RESPONSE>(\n config: FetcherRequest<TARGET, RESPONSE, CONFIG, T>,\n pipe: PIPE,\n e?: any\n ): void;\n\n public fetch<T = RESPONSE>(config: FetcherRequest<TARGET, RESPONSE, CONFIG, T>): Promise<T> {\n return new Promise<T>((resolve, reject) => {\n const pipe = this.createPipe(config);\n Promise.resolve()\n .then(() => {\n this.before(config, pipe);\n config?.before?.();\n })\n .then(() => {\n return this.execute(config);\n // return this.execute(config.target, config?.config);\n })\n .then(data => {\n const hasError = config.config?.hasErrorChecker?.(data);\n if (hasError) {\n throw hasError;\n }\n pipe.responseData = data;\n this.afterSuccess(config, pipe);\n config?.afterSuccess?.();\n const gdata = (config?.transform ? config.transform(data) : data) as T;\n this.afterSuccessTransform(config, pipe);\n resolve(gdata);\n })\n .catch(async e => {\n this.error(config, pipe, e);\n config?.error?.();\n if (config?.errorTransform) {\n e = await config.errorTransform(e);\n }\n e = await this.errorTransform(e);\n reject(e);\n })\n .finally(() => {\n this.finally(config, pipe);\n config?.finally?.();\n });\n });\n }\n\n protected abstract errorTransform(e: any): Promise<any>;\n protected abstract execute<T=RESPONSE>(fetcherRequest: FetcherRequest<TARGET, RESPONSE, CONFIG, T>): Promise<RESPONSE>;\n}\n", "import { Fetcher, FetcherRequest } from './Fetcher';\nimport { ConvertUtils } from '../convert/ConvertUtils';\n\nexport type RequestInitType = RequestInit & { timeout?: number };\nexport type RequestInfo = {\n requestInfo: string | URL;\n init: RequestInitType;\n};\nexport type HttpFetcherTarget =\n | URL\n | string\n | { url: URL | string; searchParams?: { [key: string]: any } | URLSearchParams | [string, unknown][] };\nexport type HttpFetcherConfig<CONFIG, RESPONSE = Response> = {\n fetch?: RequestInitType;\n fetcher?: typeof fetch;\n config?: CONFIG;\n allowedResponseNotOk?: boolean;\n beforeProxyFetch?: <T extends RequestInfo | URL>(\n config: BeforeProxyFetchParams<T>\n ) => Promise<BeforeProxyFetchParams<T>>;\n afterProxyFetch?: <T extends RequestInfo | URL>(config: AfterProxyFetchParams<T>) => Promise<Response>;\n skipGlobalBeforeProxyFetch?: boolean;\n skipGlobalAfterProxyFetch?: boolean;\n fetchResponseBeforeCallBack?: (config: HttpFetcherConfig<CONFIG, RESPONSE>) => void;\n fetchResponseAfterCallBack?: (data: Response, config: HttpFetcherConfig<CONFIG, RESPONSE>) => void;\n hasResponseErrorChecker?: (data: Response, config: HttpFetcherConfig<CONFIG, RESPONSE>) => any;\n};\nexport type BeforeProxyFetchParams<T = RequestInfo | URL> = {\n requestInfo: T;\n init?: RequestInit;\n};\nexport type AfterProxyFetchParams<T = RequestInfo | URL> = {\n fetch: {\n target: URL;\n requestInit: RequestInit;\n }\n config: BeforeProxyFetchParams<T>;\n response: Response;\n};\n\nexport type FetchSet = { target: URL, requestInit?: RequestInit };\n\nexport class HttpResponseError<T = any> extends Error {\n public error?: any;\n public body?: T;\n public response?: Response;\n}\n\nexport const isHttpResponseError = (data: any): data is HttpResponseError => {\n return data instanceof HttpResponseError;\n}\n\nexport type HttpFetcherRequest<RESPONSE = Response, CONFIG = any, T = RESPONSE> = FetcherRequest<\n HttpFetcherTarget,\n RESPONSE,\n HttpFetcherConfig<CONFIG, RESPONSE>,\n T\n>\n\nexport class HttpFetcher<\n CONFIG = any,\n RESPONSE = Response,\n PIPE extends { responseData?: RESPONSE | undefined } = any\n> extends Fetcher<HttpFetcherTarget, RESPONSE, HttpFetcherConfig<CONFIG, RESPONSE>, PIPE> {\n get<T = RESPONSE>(config: HttpFetcherRequest<RESPONSE, CONFIG, T>): Promise<T> {\n config.config ??= {};\n config.config.fetch = config.config?.fetch ?? {};\n config.config.fetch.method = 'GET';\n return this.fetch(config);\n }\n\n post<T = RESPONSE>(\n config: HttpFetcherRequest<RESPONSE, CONFIG, T>\n ): Promise<T> {\n config.config ??= {};\n config.config.fetch = config.config?.fetch ?? {};\n config.config.fetch.method = 'POST';\n return this.fetch(config);\n }\n\n patch<T = RESPONSE>(\n config: HttpFetcherRequest<RESPONSE, CONFIG, T>\n ): Promise<T> {\n config.config ??= {};\n config.config.fetch = config.config?.fetch ?? {};\n config.config.fetch.method = 'PATCH';\n return this.fetch(config);\n }\n\n put<T = RESPONSE>(\n config: HttpFetcherRequest<RESPONSE, CONFIG, T>\n ): Promise<T> {\n config.config ??= {};\n config.config.fetch = config.config?.fetch ?? {};\n config.config.fetch.method = 'PUT';\n return this.fetch(config);\n }\n\n head<T = RESPONSE>(\n config: HttpFetcherRequest<RESPONSE, CONFIG, T>\n ): Promise<T> {\n config.config ??= {};\n config.config.fetch = config.config?.fetch ?? {};\n config.config.fetch.method = 'HEAD';\n return this.fetch(config);\n }\n\n delete<T = RESPONSE>(\n config: HttpFetcherRequest<RESPONSE, CONFIG, T>\n ): Promise<T> {\n config.config ??= {};\n config.config.fetch = config.config?.fetch ?? {};\n config.config.fetch.method = 'DELETE';\n return this.fetch(config);\n }\n\n protected async beforeProxyFetch<T = RequestInfo | URL>(\n config: BeforeProxyFetchParams<T>\n ): Promise<BeforeProxyFetchParams<T>> {\n return config;\n }\n\n protected async afterProxyFetch<T = RequestInfo | URL>(config: AfterProxyFetchParams<T>): Promise<Response> {\n return config.response;\n }\n\n protected afterSuccess<T>(\n config: HttpFetcherRequest<RESPONSE, CONFIG, T>,\n pipe: PIPE\n ): void {}\n\n protected afterSuccessTransform<T>(\n config: HttpFetcherRequest<RESPONSE, CONFIG, T>,\n pipe: PIPE\n ): void {}\n\n protected before<T>(\n config: HttpFetcherRequest<RESPONSE, CONFIG, T>,\n pipe: PIPE\n ): void {}\n\n protected error<T>(\n config: HttpFetcherRequest<RESPONSE, CONFIG, T>,\n pipe: PIPE,\n e: any\n ): void {}\n\n protected finally<T>(\n config: HttpFetcherRequest<RESPONSE, CONFIG, T>,\n pipe: PIPE\n ): void {}\n\n protected beforeFetch(fetch: FetchSet): void {}\n\n protected afterFetch(fetch: FetchSet, response: Response): void {}\n\n // protected async errorTransform(e: any): Promise<HttpResponseError<any>> {\n protected async errorTransform(e: any): Promise<HttpResponseError> {\n const httpResponseError = new HttpResponseError<any>();\n httpResponseError.error = e;\n if (e instanceof Response) {\n httpResponseError.response = e;\n try {\n httpResponseError.body = await e.clone().text();\n httpResponseError.message = e.statusText;\n } catch (e: any) {\n httpResponseError.body = e;\n httpResponseError.message = e.message;\n }\n } else {\n httpResponseError.body = e;\n httpResponseError.message = e.message;\n }\n return httpResponseError;\n }\n\n protected async execute<T = RESPONSE>(\n fetcherRequest: HttpFetcherRequest<RESPONSE, CONFIG, T>\n ): Promise<any | RESPONSE> {\n let target = fetcherRequest.target;\n let config = fetcherRequest.config;\n // target data setting\n if (!(target instanceof URL) && typeof target !== 'string') {\n // const url: URL | string = target.url;\n // if (typeof target.url === 'string') {\n // }\n const searchParams = ConvertUtils.toURLSearchParams(target.searchParams ?? {});\n\n try {\n const url = typeof target.url === 'string' ? new URL(target.url) : target.url;\n searchParams.forEach((value, key) => {\n url.searchParams.append(key, value);\n });\n target = url;\n } catch (e) {\n if (typeof (target as any).url === 'string') {\n const searchParamString = searchParams.toString();\n target = (target as any).url + (searchParamString ? '?' + searchParamString : '');\n } else {\n target = '';\n }\n }\n }\n\n // before proxy fetch\n const beforeProxyData = { requestInfo: target, init: config?.fetch } as BeforeProxyFetchParams<URL>;\n let beforeData = config?.beforeProxyFetch\n ? await config?.beforeProxyFetch(config as any)\n : beforeProxyData.requestInfo;\n beforeData = config?.skipGlobalBeforeProxyFetch ? beforeProxyData : await this.beforeProxyFetch(beforeProxyData);\n target = beforeData.requestInfo as URL;\n if (beforeData.init) {\n config ??= {};\n config.fetch = beforeData.init;\n }\n\n let abortedTimeout: NodeJS.Timeout | undefined;\n if (config?.fetch && 'timeout' in config.fetch) {\n const abortController = new AbortController();\n abortedTimeout = setTimeout(() => {\n if (config?.fetch?.signal) {\n const inputSignal = config.fetch.signal;\n const listener = () => {\n if (!abortController.signal.aborted) {\n abortController.abort();\n }\n inputSignal.removeEventListener('abort', listener);\n };\n inputSignal.addEventListener('abort', listener);\n }\n if (!abortController.signal.aborted) {\n abortController.abort();\n }\n }, config.fetch.timeout);\n config.fetch.signal = abortController.signal;\n }\n\n this.beforeFetch({ target, requestInit: config?.fetch });\n return (config.fetcher??fetch)(target, config?.fetch)\n .then(async it => {\n // console.log('httpFetch!!!', Array.from(it.headers))\n this.afterFetch({ target: target as URL, requestInit: config?.fetch }, it);\n // after proxy fetch\n // @ts-ignore\n const afterProxyData: AfterProxyFetchParams<any> = {\n fetch: { target: target as URL, requestInit: config.fetch },\n config: beforeData,\n response: it\n };\n it = config?.afterProxyFetch ? await config.afterProxyFetch(afterProxyData) : it;\n // @ts-ignore\n it = config?.skipGlobalAfterProxyFetch ? it : await this.afterProxyFetch(afterProxyData);\n config?.fetchResponseAfterCallBack?.(it, config);\n if (!config?.allowedResponseNotOk && !it.ok) {\n throw it;\n }\n const data = config?.hasResponseErrorChecker?.(it, config);\n if (data) {\n throw data;\n }\n return it;\n })\n .finally(() => {\n if (abortedTimeout) {\n clearTimeout(abortedTimeout);\n }\n });\n }\n}\n", "import {\n HttpFetcher,\n HttpFetcherConfig,\n HttpFetcherRequest,\n HttpFetcherTarget,\n HttpResponseError,\n RequestInitType\n} from './HttpFetcher';\nimport { FetcherRequest } from './Fetcher';\n\nexport type HttpJsonFetcherConfig<CONFIG, RESPONSE> = HttpFetcherConfig<CONFIG> & {\n responseTransform?: 'text' | 'response' | ((response: Response) => Promise<RESPONSE>);\n};\nexport type RequestJsonInit = Omit<RequestInitType, 'body'> & { body?: any | null };\n// type RequestJsonInit = Omit<RequestInitType, 'body'>;\nexport type HttpAnyBodyFetcherConfig<C, R> = Omit<HttpJsonFetcherConfig<C, R>, 'fetch'> & { fetch?: RequestJsonInit };\n\n// export class HttpJsonResponseError<T = any> extends HttpResponseError {\n// }\n//\n// export const isHttpJsonResponseError = (data: any): data is HttpJsonResponseError => {\n// return data instanceof HttpJsonResponseError;\n// }\n// export type HttpJsonFetcherRequest<RESPONSE = Response, CONFIG = any, T = RESPONSE> = HttpFetcherRequest<HttpFetcherTarget, RESPONSE, HttpJsonFetcherConfig<CONFIG, RESPONSE>>;\nexport type HttpJsonFetcherRequest<RESPONSE = any, CONFIG = any, T = RESPONSE> = FetcherRequest<\n HttpFetcherTarget,\n RESPONSE,\n HttpJsonFetcherConfig<CONFIG, RESPONSE>,\n T\n>;\nexport type HttpJsonFetcherBodyAnyRequest<RESPONSE = any, CONFIG = any, T = RESPONSE> = FetcherRequest<\n HttpFetcherTarget,\n RESPONSE,\n HttpAnyBodyFetcherConfig<CONFIG, RESPONSE>,\n T\n>;\n\nexport class HttpJsonFetcher<CONFIG, PIPE extends { responseData?: any }> extends HttpFetcher<CONFIG, any, PIPE> {\n private updateJsonFetchConfigAndData<RESPONSE, T = RESPONSE>(\n config: HttpJsonFetcherRequest<RESPONSE, CONFIG, T>\n ) {\n const headers = {\n 'Content-Type': 'application/json',\n Accept: 'application/json, text/plain, */*'\n };\n config.config ??= {};\n config.config.fetch ??= {};\n config.config.fetch.headers ??= {};\n config.config!.fetch!.headers = {...headers, ...config.config!.fetch?.headers};\n if (config.config?.fetch?.body && typeof config.config?.fetch?.body !== 'string') {\n config.config.fetch.body = JSON.stringify(config.config.fetch.body);\n }\n return config;\n }\n\n get(config: HttpJsonFetcherRequest<any, CONFIG, Response> & { config: { responseTransform: 'response' } }): Promise<Response>;\n get(config: HttpJsonFetcherRequest<any, CONFIG, string> & { config: { responseTransform: 'text' } }): Promise<string>;\n get<RESPONSE, T = RESPONSE>(config: HttpJsonFetcherRequest<RESPONSE, CONFIG, T>): Promise<T>;\n get<RESPONSE, T = RESPONSE>(config: HttpJsonFetcherRequest<RESPONSE, CONFIG, T>): Promise<T> {\n return super.get(config);\n }\n\n delete(config: HttpJsonFetcherRequest<any, CONFIG, Response> & { config: { responseTransform: 'response' } }): Promise<Response>;\n delete(config: HttpJsonFetcherRequest<any, CONFIG, string> & { config: { responseTransform: 'text' } }): Promise<string>;\n delete<RESPONSE, T = RESPONSE>(config: HttpJsonFetcherRequest<RESPONSE, CONFIG, T>): Promise<T>;\n delete<RESPONSE, T = RESPONSE>(config: HttpJsonFetcherRequest<RESPONSE, CONFIG, T>): Promise<T> {\n return super.delete(config);\n }\n\n post(config: HttpJsonFetcherRequest<any, CONFIG, Response> & { config: { responseTransform: 'response' } }): Promise<Response>;\n post(config: HttpJsonFetcherRequest<any, CONFIG, string> & { config: { responseTransform: 'text' } }): Promise<string>;\n post<RESPONSE, T = RESPONSE>(config: HttpJsonFetcherRequest<RESPONSE, CONFIG, T>): Promise<T>;\n post<RESPONSE, T = RESPONSE>(config: HttpJsonFetcherRequest<RESPONSE, CONFIG, T>): Promise<T> {\n return super.post(config);\n }\n\n patch(config: HttpJsonFetcherRequest<any, CONFIG, Response> & { config: { responseTransform: 'response' } }): Promise<Response>;\n patch(config: HttpJsonFetcherRequest<any, CONFIG, string> & { config: { responseTransform: 'text' } }): Promise<string>;\n patch<RESPONSE, T = RESPONSE>(config: HttpJsonFetcherRequest<RESPONSE, CONFIG, T>): Promise<T>;\n patch<RESPONSE, T = RESPONSE>(config: HttpJsonFetcherRequest<RESPONSE, CONFIG, T>): Promise<T> {\n return super.patch(config);\n }\n\n put(config: HttpJsonFetcherRequest<any, CONFIG, Response> & { config: { responseTransform: 'response' } }): Promise<Response>;\n put(config: HttpJsonFetcherRequest<any, CONFIG, string> & { config: { responseTransform: 'text' } }): Promise<string>;\n put<RESPONSE, T = RESPONSE>(config: HttpJsonFetcherRequest<RESPONSE, CONFIG, T>): Promise<T>;\n put<RESPONSE, T = RESPONSE>(config: HttpJsonFetcherRequest<RESPONSE, CONFIG, T>): Promise<T> {\n return super.put(config);\n }\n\n head(config: HttpJsonFetcherRequest<any, CONFIG, Response> & { config: { responseTransform: 'response' } }): Promise<Response>;\n head(config: HttpJsonFetcherRequest<any, CONFIG, string> & { config: { responseTransform: 'text' } }): Promise<string>;\n head<RESPONSE, T = RESPONSE>(config: HttpJsonFetcherRequest<RESPONSE, CONFIG, T>): Promise<T>;\n head<RESPONSE, T = RESPONSE>(config: HttpJsonFetcherRequest<RESPONSE, CONFIG, T>): Promise<T> {\n return super.head(config);\n }\n\n postJson(config: HttpJsonFetcherBodyAnyRequest<any, CONFIG, Response> & { config: { responseTransform: 'response' } }): Promise<Response>;\n postJson(config: HttpJsonFetcherBodyAnyRequest<any, CONFIG, string> & { config: { responseTransform: 'text' } }): Promise<string>;\n postJson<RESPONSE, T = RESPONSE>(config: HttpJsonFetcherBodyAnyRequest<RESPONSE, CONFIG, T>): Promise<T>;\n postJson<RESPONSE, T = RESPONSE>(config: HttpJsonFetcherBodyAnyRequest<RESPONSE, CONFIG, T>): Promise<T> {\n return super.post(this.updateJsonFetchConfigAndData(config));\n }\n\n patchJson(config: HttpJsonFetcherBodyAnyRequest<any, CONFIG, Response> & { config: { responseTransform: 'response' } }): Promise<Response>;\n patchJson(config: HttpJsonFetcherBodyAnyRequest<any, CONFIG, string> & { config: { responseTransform: 'text' } }): Promise<string>;\n patchJson<RESPONSE, T = RESPONSE>(config: HttpJsonFetcherBodyAnyRequest<RESPONSE, CONFIG, T>): Promise<T>;\n patchJson<RESPONSE, T = RESPONSE>(config: HttpJsonFetcherBodyAnyRequest<RESPONSE, CONFIG, T>): Promise<T> {\n return super.patch(this.updateJsonFetchConfigAndData(config));\n }\n\n putJson(config: HttpJsonFetcherBodyAnyRequest<any, CONFIG, Response> & { config: { responseTransform: 'response' } }): Promise<Response>;\n putJson(config: HttpJsonFetcherBodyAnyRequest<any, CONFIG, string> & { config: { responseTransform: 'text' } }): Promise<string>;\n putJson<RESPONSE, T = RESPONSE>(config: HttpJsonFetcherBodyAnyRequest<RESPONSE, CONFIG, T>): Promise<T>;\n putJson<RESPONSE, T = RESPONSE>(config: HttpJsonFetcherBodyAnyRequest<RESPONSE, CONFIG, T>): Promise<T> {\n return super.put(this.updateJsonFetchConfigAndData(config));\n }\n\n protected async errorTransform(e: any): Promise<HttpResponseError> {\n const httpResponseError = new HttpResponseError();\n httpResponseError.error = e;\n if (e instanceof Response) {\n httpResponseError.response = e;\n try {\n httpResponseError.body = await e.clone().json();\n httpResponseError.message = e.statusText;\n } catch (parseError: any) {\n httpResponseError.body = parseError; // Store the parsing error\n httpResponseError.message = parseError.message; // Use parsing error message\n }\n } else {\n httpResponseError.body = e;\n httpResponseError.message = e.message;\n }\n return httpResponseError;\n }\n\n // protected execute(target: HttpFetcherTarget, config?: HttpJsonFetcherConfig<C, any>): Promise<any> {\n protected execute(fetcherRequest: FetcherRequest<HttpFetcherTarget, any, HttpJsonFetcherConfig<CONFIG, any>>): Promise<any> {\n\n return super.execute(fetcherRequest).then((response: Response) => {\n // fetch\uC5D0 \uC788\uB294 content-length\uB294 \uC11C\uBC84\uC5D0\uC11C \uBCF4\uB0B8\uAC12\uC774 0 \uC774\uC5EC\uB3C4 \uC790\uCCB4\uC801\uC73C\uB85C \uB530\uB85C \uD310\uB2E8\uD574\uC11C 0\uC774\uC0C1\uC774 \uB098\uC624\uB294\uACBD\uC6B0\uAC00 \uC788\uB2E4. \uADF8\uB9AC\uACE0 \uC11C\uBC84\uC5D0\uC11C\uC8FC\uB294 header\uAC12\uB3C4 \uBBFF\uAE34 \uC5B4\uB835\uB2E4.\n // const contentLength = response.headers.get('Content-Length');\n // const hasBody = contentLength && parseInt(contentLength, 10) > 0;\n // console.log('hgasbody', hasBody)\n const config = fetcherRequest.config as any;\n const transform = config?.responseTransform ?? (config?.bypassTransform ? 'response' : (config?.transformText ? 'text' : undefined));\n\n if (transform === 'response') {\n return response;\n } else if (transform === 'text') {\n return response?.text();\n } else if (typeof transform === 'function') {\n return transform(response);\n } else {\n return response?.text().then(it => {\n if ((it ?? '').length > 0) {\n return JSON.parse(it);\n }\n })\n }\n });\n }\n}\n", "import { Point2D } from './Point2D';\nimport { Rect } from './Rect';\nimport { Point2Ds } from './Point2Ds';\n\nexport class Ellipse extends Point2D {\n public radiusX: number;\n public radiusY: number;\n public rotation: number; // in radians\n public startAngle: number; // in radians\n public endAngle: number; // in radians\n\n constructor(x: number, y: number, radiusX: number, radiusY: number, rotation: number = 0, startAngle: number = 0, endAngle: number = 2 * Math.PI) {\n super(x, y);\n this.radiusX = radiusX;\n this.radiusY = radiusY;\n this.rotation = rotation;\n this.startAngle = startAngle;\n this.endAngle = endAngle;\n }\n\n isIn(point: Point2D): boolean {\n if (this.radiusX <= 0 || this.radiusY <= 0) {\n return false;\n }\n\n // 1. Translate point to ellipse's local coordinates\n const translatedX = point.x - this.x;\n const translatedY = point.y - this.y;\n\n // 2. Rotate the translated point backwards by the ellipse's rotation\n const cos = Math.cos(-this.rotation);\n const sin = Math.sin(-this.rotation);\n const localX = translatedX * cos - translatedY * sin;\n const localY = translatedX * sin + translatedY * cos;\n\n // 3. Check if the point is within the ellipse equation\n const isInsideEllipse = (localX * localX) / (this.radiusX * this.radiusX) + (localY * localY) / (this.radiusY * this.radiusY) <= 1;\n\n if (!isInsideEllipse) {\n return false;\n }\n\n // 4. Check if the point is within the start and end angles (for arcs)\n const angle = Math.atan2(localY, localX);\n\n // Normalize angle to be between 0 and 2*PI\n const normalizedAngle = angle < 0 ? angle + 2 * Math.PI : angle;\n\n if (this.startAngle < this.endAngle) {\n return normalizedAngle >= this.startAngle && normalizedAngle <= this.endAngle;\n } else { // For arcs that cross the 0-radian line (e.g., from 3/2 PI to 1/2 PI)\n return normalizedAngle >= this.startAngle || normalizedAngle <= this.endAngle;\n }\n }\n\n isOut(point: Point2D): boolean {\n return !this.isIn(point);\n }\n\n isOverlap(data: Point2D | Rect | Point2Ds | Ellipse): boolean {\n if (data instanceof Point2D) {\n return this.isIn(data);\n } else if (data instanceof Rect) {\n // This is a simplified check. For full accuracy, polygon-ellipse collision is needed.\n const rectAsPoints = new Point2Ds([data.leftTop, data.rightTop, data.rightBottom, data.leftBottom]);\n if (rectAsPoints.isOverlap(this)) return true;\n return this.toRect().isOverlap(data); // Check bounding boxes\n } else if (data instanceof Point2Ds) {\n return data.isOverlap(this);\n } else if ((data as any) instanceof Ellipse) {\n // This is a simplified check and doesn't handle all rotation cases perfectly.\n const distance = Math.sqrt(Math.pow(this.x - (data as Ellipse).x, 2) + Math.pow(this.y - (data as Ellipse).y, 2));\n const avgRadius1 = (this.radiusX + this.radiusY) / 2;\n const avgRadius2 = ((data as Ellipse).radiusX + (data as Ellipse).radiusY) / 2;\n return distance <= (avgRadius1 + avgRadius2);\n }\n return false;\n }\n\n toRect(): Rect {\n // Returns the axis-aligned bounding box for the ellipse (including rotation)\n if (this.rotation === 0) {\n return new Rect(this.x - this.radiusX, this.y - this.radiusY, this.radiusX * 2, this.radiusY * 2);\n }\n const angle = this.rotation;\n const cos = Math.cos(angle);\n const sin = Math.sin(angle);\n const w = this.radiusX;\n const h = this.radiusY;\n\n const extentsX = Math.sqrt(w * w * cos * cos + h * h * sin * sin);\n const extentsY = Math.sqrt(w * w * sin * sin + h * h * cos * cos);\n\n return new Rect(this.x - extentsX, this.y - extentsY, extentsX * 2, extentsY * 2);\n }\n}\n", "import { Point2D } from './Point2D';\nimport { Rect } from './Rect';\nimport { Ellipse } from './Ellipse';\n\nexport class Point2Ds {\n public points: Point2D[];\n\n constructor(points: Point2D[]) {\n this.points = points;\n }\n\n copy() {\n return new Point2Ds(this.points.map(p => p.copy()));\n }\n\n isIn(point: Point2D): boolean {\n let isInside = false;\n const n = this.points.length;\n\n for (let i = 0, j = n - 1; i < n; j = i++) {\n const p1 = this.points[i];\n const p2 = this.points[j];\n\n const intersect = ((p1.y > point.y) !== (p2.y > point.y))\n && (point.x < (p2.x - p1.x) * (point.y - p1.y) / (p2.y - p1.y) + p1.x);\n\n if (intersect) {\n isInside = !isInside;\n }\n }\n\n return isInside;\n }\n\n isOut(point: Point2D): boolean {\n return !this.isIn(point);\n }\n\n isOverlap(data: Point2D | Point2Ds | Rect | Ellipse): boolean {\n if (data instanceof Point2D) {\n return this.isIn(data);\n }\n\n if (data instanceof Ellipse) {\n return data.isOverlap(this);\n }\n\n const targetPoints = data instanceof Rect ? [data.leftTop, data.rightTop, data.rightBottom, data.leftBottom] : data.points;\n\n for (const point of targetPoints) {\n if (this.isIn(point)) {\n return true;\n }\n }\n\n for (const point of this.points) {\n if (data.isIn(point)) {\n return true;\n }\n }\n\n return false;\n }\n\n toRect(): Rect {\n if (this.points.length === 0) {\n return new Rect(0, 0, 0, 0);\n }\n\n let minX = this.points[0].x;\n let minY = this.points[0].y;\n let maxX = this.points[0].x;\n let maxY = this.points[0].y;\n\n for (let i = 1; i < this.points.length; i++) {\n const p = this.points[i];\n minX = Math.min(minX, p.x);\n minY = Math.min(minY, p.y);\n maxX = Math.max(maxX, p.x);\n maxY = Math.max(maxY, p.y);\n }\n\n return new Rect(minX, minY, maxX - minX, maxY - minY);\n }\n}", "export type Point2DType = {\n x: number;\n y: number;\n};\nexport const isPoint2DType = (obj: any): obj is Point2DType =>\n !!obj && typeof obj.x === 'number' && typeof obj.y === 'number';", "import { Point3D } from './Point3D';\nimport { Rect } from './Rect';\n\nexport class Point3Ds {\n public points: Point3D[];\n\n constructor(points: Point3D[]) {\n this.points = points;\n }\n\n copy(): Point3Ds {\n return new Point3Ds(this.points.map(p => p.copy()));\n }\n\n /**\n * Calculates the Axis-Aligned Bounding Box of the points.\n * An Axis-Aligned Bounding Box is the smallest box that contains all the points, aligned with the coordinate axes.\n * @returns An object with the minimum and maximum corner points of the box.\n */\n getAxisAlignedBoundingBox(): { min: Point3D, max: Point3D } {\n if (this.points.length === 0) {\n return { min: new Point3D(0, 0, 0), max: new Point3D(0, 0, 0) };\n }\n\n const min = this.points[0].copy();\n const max = this.points[0].copy();\n\n for (let i = 1; i < this.points.length; i++) {\n const p = this.points[i];\n min.x = Math.min(min.x, p.x);\n min.y = Math.min(min.y, p.y);\n min.z = Math.min(min.z, p.z);\n max.x = Math.max(max.x, p.x);\n max.y = Math.max(max.y, p.y);\n max.z = Math.max(max.z, p.z);\n }\n\n return { min, max };\n }\n\n /**\n * Checks if a point is inside the Axis-Aligned Bounding Box of this set of points.\n * Note: This is a check against the bounding box, not the exact shape of the polyhedron.\n * @param point The point to check.\n * @returns True if the point is inside the bounding box, false otherwise.\n */\n isIn(point: Point3D): boolean {\n if (this.points.length === 0) {\n return false;\n }\n const { min, max } = this.getAxisAlignedBoundingBox();\n return (\n point.x >= min.x && point.x <= max.x &&\n point.y >= min.y && point.y <= max.y &&\n point.z >= min.z && point.z <= max.z\n );\n }\n\n /**\n * Checks if a point is outside the Axis-Aligned Bounding Box of this set of points.\n * @param point The point to check.\n * @returns True if the point is outside the bounding box, false otherwise.\n */\n isOut(point: Point3D): boolean {\n return !this.isIn(point);\n }\n\n /**\n * Checks for overlap with another 3D object based on their Axis-Aligned Bounding Boxes.\n * @param data The object to check for overlap with (Point3D or Point3Ds).\n * @returns True if their bounding boxes overlap, false otherwise.\n */\n isOverlap(data: Point3D | Point3Ds): boolean {\n if (data instanceof Point3D) {\n return this.isIn(data);\n }\n\n if (data instanceof Point3Ds) {\n if (this.points.length === 0 || data.points.length === 0) {\n return false;\n }\n const a = this.getAxisAlignedBoundingBox();\n const b = data.getAxisAlignedBoundingBox();\n\n // Check for overlap on each axis\n const xOverlap = a.min.x <= b.max.x && a.max.x >= b.min.x;\n const yOverlap = a.min.y <= b.max.y && a.max.y >= b.min.y;\n const zOverlap = a.min.z <= b.max.z && a.max.z >= b.min.z;\n\n return xOverlap && yOverlap && zOverlap;\n }\n\n return false;\n }\n\n toRect(): Rect {\n if (this.points.length === 0) {\n return new Rect(0, 0, 0, 0);\n }\n\n const { min, max } = this.getAxisAlignedBoundingBox();\n return new Rect(min.x, min.y, max.x - min.x, max.y - min.y);\n }\n}\n", "export type Point3DType = {\n x: number;\n y: number;\n z: number;\n};\nexport const isPoint3DType = (obj: any): obj is Point3DType =>\n !!obj && typeof obj.x === 'number' && typeof obj.y === 'number' && typeof obj.z === 'number';", "import { Point2D } from './Point2D';\nimport { Rect } from './Rect';\nimport { Ellipse } from './Ellipse';\nimport { Point2Ds } from './Point2Ds';\n\n/**\n * Represents a polygon, a closed shape defined by a sequence of connected points.\n * This class uses the Point2Ds class for its core geometric calculations.\n */\nexport class Polygon {\n /**\n * An instance of Point2Ds used for geometric calculations.\n * @private\n */\n private _point2ds: Point2Ds;\n\n /**\n * Creates a new Polygon instance.\n * @param points An array of Point2D objects representing the vertices of the polygon in order.\n */\n constructor(points: Point2D[]) {\n this._point2ds = new Point2Ds(points);\n }\n\n get point2ds() {\n return this._point2ds.points;\n }\n\n\n /**\n * Creates a deep copy of this polygon.\n * @returns A new Polygon instance with the same points.\n */\n copy(): Polygon {\n return new Polygon(this._point2ds.points.map(p => p.copy()));\n }\n\n /**\n * Checks if a given point is inside the polygon.\n * Uses the ray-casting algorithm.\n * @param point The point to check.\n * @returns True if the point is inside the polygon, false otherwise.\n */\n isIn(point: Point2D): boolean {\n return this._point2ds.isIn(point);\n }\n\n /**\n * Checks if a given point is outside the polygon.\n * @param point The point to check.\n * @returns True if the point is outside the polygon, false otherwise.\n */\n isOut(point: Point2D): boolean {\n return !this.isIn(point);\n }\n\n /**\n * Checks if this polygon overlaps with another geometric shape.\n * This check is based on vertex containment and may not cover all edge-crossing scenarios without vertex containment.\n * @param data The geometric shape to check for overlap with (Point2D, Rect, Ellipse, or another Polygon).\n * @returns True if the shapes overlap, false otherwise.\n */\n isOverlap(data: Point2D | Rect | Ellipse | Polygon): boolean {\n if (data instanceof Polygon) {\n // Check for overlap with another Polygon by using their underlying Point2Ds instances.\n return this._point2ds.isOverlap(data._point2ds);\n }\n // For other shapes, delegate the check to the Point2Ds instance.\n return this._point2ds.isOverlap(data);\n }\n\n /**\n * Calculates the axis-aligned bounding box of the polygon.\n * @returns A Rect representing the smallest rectangle that contains all vertices of the polygon.\n */\n toRect(): Rect {\n return this._point2ds.toRect();\n }\n}\n", "export class Scalar {\n private _value: number;\n\n constructor(value: number = 0) {\n this._value = value;\n }\n\n // \uAC12 \uAC00\uC838\uC624\uAE30\n get value(): number {\n return this._value;\n }\n\n // \uAC12 \uC124\uC815\uD558\uAE30\n set value(value: number) {\n this._value = value;\n }\n\n // \uAC12 \uC9C1\uC811 \uC124\uC815\n public set(value: number): Scalar {\n this._value = value;\n return this;\n }\n\n // \uAC12 \uBCF5\uC0AC\uD574\uC11C \uC0C8 \uC778\uC2A4\uD134\uC2A4 \uBC18\uD658\n public get(): Scalar {\n return new Scalar(this._value);\n }\n\n // \uB367\uC148\n public add(value: number | Scalar): Scalar {\n if (value instanceof Scalar) {\n this._value += value.value;\n } else {\n this._value += value;\n }\n return this;\n }\n\n public static add(s1: Scalar, s2: Scalar): Scalar {\n return new Scalar(s1.value + s2.value);\n }\n\n // \uBE84\uC148\n public sub(value: number | Scalar): Scalar {\n if (value instanceof Scalar) {\n this._value -= value.value;\n } else {\n this._value -= value;\n }\n return this;\n }\n\n public static sub(s1: Scalar, s2: Scalar): Scalar {\n return new Scalar(s1.value - s2.value);\n }\n\n // \uACF1\uC148\n public mult(value: number | Scalar): Scalar {\n if (value instanceof Scalar) {\n this._value *= value.value;\n } else {\n this._value *= value;\n }\n return this;\n }\n\n public static mult(s1: Scalar, s2: Scalar): Scalar {\n return new Scalar(s1.value * s2.value);\n }\n\n // \uB098\uB217\uC148\n public div(value: number | Scalar): Scalar {\n if (value instanceof Scalar) {\n if (value.value === 0) throw new Error(\"Division by zero\");\n this._value /= value.value;\n } else {\n if (value === 0) throw new Error(\"Division by zero\");\n this._value /= value;\n }\n return this;\n }\n\n public static div(s1: Scalar, s2: Scalar): Scalar {\n if (s2.value === 0) throw new Error(\"Division by zero\");\n return new Scalar(s1.value / s2.value);\n }\n\n // \uC808\uB313\uAC12\n public abs(): Scalar {\n this._value = Math.abs(this._value);\n return this;\n }\n\n public static abs(s: Scalar): Scalar {\n return new Scalar(Math.abs(s.value));\n }\n\n // \uBB38\uC790\uC5F4\uB85C \uBCC0\uD658\n public toString(): string {\n return `${this._value}`;\n }\n\n // \uC22B\uC790\uB85C \uBCC0\uD658\n public toNumber(): number {\n return this._value;\n }\n}", "import { Polygon } from './Polygon';\nimport { Rect } from './Rect';\nimport { Point2D } from './Point2D';\nimport { Ellipse } from './Ellipse';\n\n/**\n * Manages a collection of Polygon objects, providing methods for aggregation and spatial queries.\n * It also maintains an overall bounding box for the contained polygons.\n */\nexport class WrapPolygons {\n private _polygons: Set<Polygon>;\n private _x: number;\n private _y: number;\n private _width: number;\n private _height: number;\n private _initialX: number; // Added\n private _initialY: number; // Added\n private _initialWidth: number; // Added\n private _initialHeight: number; // Added\n\n /**\n * Creates a new WrapPolygons instance.\n * @param x The initial x-coordinate of the overall bounding box.\n * @param y The initial y-coordinate of the overall bounding box.\n * @param width The initial width of the overall bounding box.\n * @param height The initial height of the overall bounding box.\n * @param polygons An array of Polygon objects to initialize the collection.\n */\n constructor(\n x: number = 0,\n y: number = 0,\n width: number = 0,\n height: number = 0,\n polygons: Polygon[] = []\n ) {\n this._polygons = new Set(polygons);\n\n // Store the initial bounds provided\n this._initialX = x; // Stored\n this._initialY = y; // Stored\n this._initialWidth = width; // Stored\n this._initialHeight = height; // Stored\n\n // Initialize _x, _y, _width, _height with the provided initial bounds.\n // These will be updated by _calculateOverallBounds based on actual polygons.\n this._x = x;\n this._y = y;\n this._width = width;\n this._height = height;\n\n // Calculate and set the initial overall bounds based on the provided polygons and initial bounds.\n this._calculateOverallBounds();\n }\n\n get polygons() {\n return Array.from(this._polygons.values());\n }\n\n get x() {\n return this._x;\n }\n\n set x(value: number) {\n if (this._x === value) return;\n const offsetX = value - this._x;\n this._x = value;\n this._applyTranslationToPoints(offsetX, 0);\n }\n\n get y() {\n return this._y;\n }\n\n set y(value: number) {\n if (this._y === value) return;\n const offsetY = value - this._y;\n this._y = value;\n this._applyTranslationToPoints(0, offsetY);\n }\n\n get width() {\n return this._width;\n }\n\n set width(value: number) {\n if (this._width === value) return;\n const oldWidth = this._width;\n this._width = value;\n\n if (oldWidth === 0) {\n console.warn(\"Cannot scale polygons proportionally if old width was 0.\");\n return;\n }\n const scaleX = this._width / oldWidth;\n this._applyScalingToPoints(scaleX, 1, this._x, this._y);\n }\n\n get height() {\n return this._height;\n }\n\n set height(value: number) {\n if (this._height === value) return;\n const oldHeight = this._height;\n this._height = value;\n\n if (oldHeight === 0) {\n console.warn(\"Cannot scale polygons proportionally if old height was 0.\");\n return;\n }\n const scaleY = this._height / oldHeight;\n this._applyScalingToPoints(1, scaleY, this._x, this._y);\n }\n\n /**\n * Recalculates the overall bounding box (x, y, width, height) of all contained polygons.\n * This method should be called after adding or removing polygons if the bounds need to be updated.\n * @private\n */\n private _calculateOverallBounds(): void {\n if (this.polygons.length === 0) {\n // If no polygons, revert to initial bounds\n this._x = this._initialX;\n this._y = this._initialY;\n this._width = this._initialWidth;\n this._height = this._initialHeight;\n return;\n }\n\n let minX = Infinity;\n let minY = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n\n for (const polygon of this.polygons) {\n const rect = polygon.toRect();\n minX = Math.min(minX, rect.x);\n minY = Math.min(minY, rect.y);\n maxX = Math.max(maxX, rect.x + rect.width);\n maxY = Math.max(maxY, rect.y + rect.height);\n }\n\n // Ensure the bounds are at least as large as the initial bounds\n minX = Math.min(minX, this._initialX);\n minY = Math.min(minY, this._initialY);\n maxX = Math.max(maxX, this._initialX + this._initialWidth);\n maxY = Math.max(maxY, this._initialY + this._initialHeight);\n\n this._x = minX;\n this._y = minY;\n this._width = maxX - minX;\n this._height = maxY - minY;\n }\n\n /**\n * Applies translation to all Point2D objects within the polygons.\n * @param offsetX The amount to translate along the x-axis.\n * @param offsetY The amount to translate along the y-axis.\n * @private\n */\n private _applyTranslationToPoints(offsetX: number, offsetY: number): void {\n if (offsetX === 0 && offsetY === 0) return;\n for (const polygon of Array.from(this.polygons)) {\n // Assuming Polygon has a private 'point2ds' property which is a Point2ds object\n // And Point2ds has a 'points' array of Point2D objects\n for (const point of polygon['point2ds']) {\n point.x += offsetX;\n point.y += offsetY;\n }\n }\n }\n\n /**\n * Applies scaling to all Point2D objects within the polygons relative to a given origin.\n * @param scaleX The scaling factor along the x-axis.\n * @param scaleY The scaling factor along the y-axis.\n * @param originX The x-coordinate of the scaling origin.\n * @param originY The y-coordinate of the scaling origin.\n * @private\n */\n private _applyScalingToPoints(scaleX: number, scaleY: number, originX: number, originY: number): void {\n if (scaleX === 1 && scaleY === 1) return;\n for (const polygon of Array.from(this.polygons)) {\n for (const point of polygon['point2ds']) {\n // Translate point so origin is at (0,0)\n const translatedX = point.x - originX;\n const translatedY = point.y - originY;\n\n // Scale\n const scaledX = translatedX * scaleX;\n const scaledY = translatedY * scaleY;\n\n // Translate back\n point.x = scaledX + originX;\n point.y = scaledY + originY;\n }\n }\n }\n\n /**\n * Adds one or more polygons to the collection and updates the overall bounds.\n * @param newPolygons The Polygon objects to add. \n */\n add(...newPolygons: Polygon[]): void {\n newPolygons.forEach(polygon => this._polygons.add(polygon));\n this._calculateOverallBounds();\n }\n\n /**\n * Removes a specific polygon from the collection and updates the overall bounds.\n * @param polygonToRemove The Polygon object to remove.\n */\n remove(polygonToRemove: Polygon): void {\n if (this._polygons.delete(polygonToRemove)) {\n this._calculateOverallBounds();\n }\n }\n\n /**\n * Creates a deep copy of this WrapPolygons instance, including copies of all contained polygons.\n * @returns A new WrapPolygons instance.\n */\n copy(): WrapPolygons {\n return new WrapPolygons(\n this._initialX,\n this._initialY,\n this._initialWidth,\n this._initialHeight,\n Array.from(this.polygons).map(p => p.copy())\n );\n }\n\n /**\n * Checks if a given point is inside any of the polygons in the collection.\n * @param point The point to check.\n * @returns True if the point is inside at least one polygon, false otherwise.\n */\n isIn(point: Point2D): boolean {\n for (const polygon of Array.from(this.polygons)) {\n if (polygon.isIn(point)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Checks if a given point is outside all polygons in the collection.\n * @param point The point to check.\n * @returns True if the point is outside all polygons, false otherwise.\n */\n isOut(point: Point2D): boolean {\n return !this.isIn(point);\n }\n\n /**\n * Checks for overlap between this collection of polygons and another geometric shape.\n * @param data The geometric shape to check for overlap with (Point2D, Rect, Ellipse, or another WrapPolygons).\n * @returns True if any polygon in the collection overlaps with the given shape, false otherwise.\n */\n isOverlap(data: Point2D | Rect | Ellipse | WrapPolygons): boolean {\n if (data instanceof Point2D) {\n return this.isIn(data);\n }\n\n if (data instanceof WrapPolygons) {\n for (const p1 of Array.from(this.polygons)) {\n for (const p2 of Array.from(data.polygons)) {\n if (p1.isOverlap(p2)) {\n return true;\n }\n }\n }\n return false;\n }\n\n // For other shapes, check each polygon individually\n for (const polygon of Array.from(this.polygons)) {\n if (polygon.isOverlap(data)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Returns a Rect representing the overall axis-aligned bounding box of all polygons in the collection.\n * @returns A Rect object.\n */\n toRect(): Rect {\n return new Rect(this.x, this.y, this.width, this.height);\n }\n\n /**\n * Returns a Rect representing the overall axis-aligned bounding box of only the contained polygons,\n * without considering the initial bounds of the WrapPolygons instance.\n * @returns A Rect object. Returns a Rect at (0,0) with 0 width/height if no polygons are present.\n */\n getContainedPolygonsOverallBounds(): Rect {\n if (this._polygons.size === 0) {\n return new Rect(0, 0, 0, 0);\n }\n\n let minX = Infinity;\n let minY = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n\n for (const polygon of Array.from(this._polygons)) {\n const rect = polygon.toRect();\n minX = Math.min(minX, rect.x);\n minY = Math.min(minY, rect.y);\n maxX = Math.max(maxX, rect.x + rect.width);\n maxY = Math.max(maxY, rect.y + rect.height);\n }\n\n return new Rect(minX, minY, maxX - minX, maxY - minY);\n }\n\n /**\n * Filters the polygons in the collection, returning a new WrapPolygons instance\n * containing only those polygons that are entirely contained within the target Rect.\n * @param targetRect The Rect to check containment against.\n * @returns A new WrapPolygons instance with filtered polygons.\n */\n filterPolygonsIn(targetRect: Rect): WrapPolygons {\n const filtered = Array.from(this.polygons).filter(p => targetRect.isIn(p.toRect())); // Simplified: checks bounding box containment\n return new WrapPolygons(\n this._initialX,\n this._initialY,\n this._initialWidth,\n this._initialHeight,\n filtered\n );\n }\n\n /**\n * Filters the polygons in the collection, returning a new WrapPolygons instance\n * containing only those polygons that do not overlap with the target Rect.\n * @param targetRect The Rect to check non-overlap against.\n * @returns A new WrapPolygons instance with filtered polygons.\n */\n filterPolygonsOut(targetRect: Rect): WrapPolygons {\n const filtered = Array.from(this.polygons).filter(p => !p.isOverlap(targetRect));\n return new WrapPolygons(\n this._initialX,\n this._initialY,\n this._initialWidth,\n this._initialHeight,\n filtered\n );\n }\n\n /**\n * Filters the polygons in the collection, returning a new WrapPolygons instance\n * containing only those polygons that overlap with the target Rect.\n * @param targetRect The Rect to check overlap against.\n * @returns A new WrapPolygons instance with filtered polygons.\n */\n filterPolygonsOverlap(targetRect: Rect): WrapPolygons {\n const filtered = Array.from(this.polygons).filter(p => p.isOverlap(targetRect));\n return new WrapPolygons(\n this._initialX,\n this._initialY,\n this._initialWidth,\n this._initialHeight,\n filtered\n );\n }\n\n /**\n * Merges a new polygon with existing polygons in the collection if they overlap or are within a certain proximity.\n * If no overlap/proximity is found, the new polygon is simply added.\n * @param newPolygon The Polygon to merge or add. \n * @param mergeThresholdPx The maximum distance (in pixels) for polygons to be considered for merging. Default is 0.\n */\n merge(newPolygon: Polygon, mergeThresholdPx: number = 0): boolean {\n const newPolygonRect = newPolygon.toRect();\n // Expand the new polygon's bounding box by the threshold for proximity check\n const expandedNewPolygonRect = new Rect(\n newPolygonRect.x - mergeThresholdPx,\n newPolygonRect.y - mergeThresholdPx,\n newPolygonRect.width + (2 * mergeThresholdPx),\n newPolygonRect.height + (2 * mergeThresholdPx)\n );\n\n let merged = false;\n const polygonsToMerge: Polygon[] = [];\n const remainingPolygons: Polygon[] = [];\n\n // Find all existing polygons that overlap with the expanded newPolygonRect\n for (const existingPolygon of Array.from(this.polygons)) {\n if (existingPolygon.isOverlap(expandedNewPolygonRect)) {\n polygonsToMerge.push(existingPolygon);\n } else {\n remainingPolygons.push(existingPolygon);\n }\n }\n\n if (polygonsToMerge.length > 0) {\n // If there are polygons to merge, combine all their points with the newPolygon's points\n let allPoints: Point2D[] = [];\n // Add points from the new polygon\n // Accessing private point2ds directly for its points array\n allPoints.push(...newPolygon['point2ds']);\n\n // Add points from all overlapping existing polygons\n for (const p of polygonsToMerge) {\n allPoints.push(...p['point2ds']);\n }\n\n // Create a new Polygon from the combined points\n // Note: This simple combination of points might not result in a geometrically correct union\n // for complex polygons (e.g., self-intersections, holes).\n // For a robust solution, a dedicated polygon union algorithm would be needed.\n const combinedPolygon = new Polygon(allPoints);\n\n // Clear existing polygons and add the new combined one\n this._polygons.clear();\n this.add(...remainingPolygons, combinedPolygon); // Add remaining and the new combined polygon\n merged = true;\n } else {\n // No overlap/proximity, just add the new polygon\n this.add(newPolygon);\n }\n\n this._calculateOverallBounds(); // Recalculate overall bounds after merge/add\n return merged;\n }\n}", "import { Rect } from './Rect';\nimport { SizeType } from './SizeType';\nimport { ArrayUtils } from '../array/ArrayUtils';\nimport { Point2D } from './Point2D';\nimport { Ellipse } from './Ellipse';\n\nexport class WrapRects {\n public rects: Set<Rect>;\n private _x: number;\n private _y: number;\n private _width: number;\n private _height: number;\n private _initialX: number;\n private _initialY: number;\n private _initialWidth: number;\n private _initialHeight: number;\n\n constructor(x: number, y: number, width: number, height: number, rects: Rect[] = []) {\n this._initialX = x;\n this._initialY = y;\n this._initialWidth = width;\n this._initialHeight = height;\n\n // Initialize _x, _y, _width, _height with the provided initial bounds.\n // These will be updated by _updateContentBounds based on actual rects.\n this._x = x;\n this._y = y;\n this._width = width;\n this._height = height;\n\n this.rects = new Set();\n // Add rects directly without transformation in the constructor\n rects.forEach(rect => this.rects.add(rect));\n\n // Ensure the overall bounds are correctly set after initial rects are processed\n // This will calculate the actual bounds of the contained rects and ensure they are not smaller than initial bounds.\n const currentOverallBounds = this._updateContentBounds();\n this._x = currentOverallBounds.x;\n this._y = currentOverallBounds.y;\n this._width = currentOverallBounds.width;\n this._height = currentOverallBounds.height;\n }\n\n private _updateContentBounds(): Rect {\n if (this.rects.size === 0) {\n // If no rects, revert to initial bounds\n return new Rect(this._initialX, this._initialY, this._initialWidth, this._initialHeight);\n }\n\n let minX = Infinity;\n let minY = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n\n for (const r of Array.from(this.rects)) {\n minX = Math.min(minX, r.x);\n minY = Math.min(minY, r.y);\n maxX = Math.max(maxX, r.x + r.width);\n maxY = Math.max(maxY, r.y + r.height);\n }\n\n // Ensure the bounds are at least as large as the initial bounds\n minX = Math.min(minX, this._initialX);\n minY = Math.min(minY, this._initialY);\n maxX = Math.max(maxX, this._initialX + this._initialWidth);\n maxY = Math.max(maxY, this._initialY + this._initialHeight);\n\n return new Rect(minX, minY, maxX - minX, maxY - minY);\n }\n\n get x() {\n return this._x;\n }\n\n set x(value: number) {\n if (this._x === value) return;\n const offsetX = value - this._x;\n this._x = value;\n this._applyTranslationToRects(offsetX, 0);\n }\n\n get y() {\n return this._y;\n }\n\n set y(value: number) {\n if (this._y === value) return;\n const offsetY = value - this._y;\n this._y = value;\n this._applyTranslationToRects(0, offsetY);\n }\n\n get width() {\n return this._width;\n }\n\n set width(value: number) {\n if (this._width === value) return;\n const oldWidth = this._width;\n this._width = value;\n\n if (oldWidth === 0) {\n console.warn(\"Cannot scale rects proportionally if old width was 0.\");\n return;\n }\n const scaleX = this._width / oldWidth;\n this._applyScalingToRects(scaleX, 1, this._x, this._y);\n }\n\n get height() {\n return this._height;\n }\n\n set height(value: number) {\n if (this._height === value) return;\n const oldHeight = this._height;\n this._height = value;\n\n if (oldHeight === 0) {\n console.warn(\"Cannot scale rects proportionally if old height was 0.\");\n return;\n }\n const scaleY = this._height / oldHeight;\n this._applyScalingToRects(1, scaleY, this._x, this._y);\n }\n\n private _applyTranslationToRects(offsetX: number, offsetY: number): void {\n if (offsetX === 0 && offsetY === 0) return;\n for (const rect of Array.from(this.rects)) {\n rect.x += offsetX;\n rect.y += offsetY;\n }\n }\n\n private _applyScalingToRects(scaleX: number, scaleY: number, originX: number, originY: number): void {\n if (scaleX === 1 && scaleY === 1) return;\n for (const rect of Array.from(this.rects)) {\n // Translate rect so origin is at (0,0)\n const translatedX = rect.x - originX;\n const translatedY = rect.y - originY;\n\n // Scale position\n const scaledX = translatedX * scaleX;\n const scaledY = translatedY * scaleY;\n\n // Scale dimensions\n rect.width *= scaleX;\n rect.height *= scaleY;\n\n // Translate back\n rect.x = scaledX + originX;\n rect.y = scaledY + originY;\n }\n }\n\n add(...newRects: Rect[]): void {\n newRects.forEach(rect => this.rects.add(rect));\n // Note: _updateContentBounds now only calculates and returns the bounds, it doesn't set this.x,y,width,height\n // The setters for x,y,width,height are responsible for applying transformations to internal rects.\n // So, after adding new rects, we need to ensure the overall bounds are updated.\n const currentOverallBounds = this._updateContentBounds();\n this._x = currentOverallBounds.x;\n this._y = currentOverallBounds.y;\n this._width = currentOverallBounds.width;\n this._height = currentOverallBounds.height;\n }\n\n remove(rectToRemove: Rect): void {\n if (this.rects.delete(rectToRemove)) {\n const currentOverallBounds = this._updateContentBounds();\n this._x = currentOverallBounds.x;\n this._y = currentOverallBounds.y;\n this._width = currentOverallBounds.width;\n this._height = currentOverallBounds.height;\n }\n }\n\n getContainedRectsOverallBounds(): Rect {\n if (this.rects.size === 0) {\n return new Rect(0, 0, 0, 0);\n }\n\n let minX = Infinity;\n let minY = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n\n for (const r of Array.from(this.rects)) {\n minX = Math.min(minX, r.x);\n minY = Math.min(minY, r.y);\n maxX = Math.max(maxX, r.x + r.width);\n maxY = Math.max(maxY, r.y + r.height);\n }\n\n return new Rect(minX, minY, maxX - minX, maxY - minY);\n }\n\n copy(): WrapRects {\n return new WrapRects(\n this._initialX,\n this._initialY,\n this._initialWidth,\n this._initialHeight,\n Array.from(this.rects).map(r => r.copy())\n );\n }\n\n // \uC815\uD655\uD558\uAC8C \uB098\uC758 \uC548\uCABD\uC5D0 \uC11C\uB9CC \uC788\uB294\uAC70\n toFilterRectsIn(targetRect: Rect): WrapRects {\n const filteredRects = Array.from(this.rects).filter(r => targetRect.isIn(r));\n return new WrapRects(\n this._initialX,\n this._initialY,\n this._initialWidth,\n this._initialHeight,\n filteredRects\n );\n }\n\n toFilterRectsOut(targetRect: Rect): WrapRects {\n const filteredRects = Array.from(this.rects).filter(r => !targetRect.isOverlap(r));\n return new WrapRects(\n this._initialX,\n this._initialY,\n this._initialWidth,\n this._initialHeight,\n filteredRects\n );\n }\n\n // \uB0B4\uAC00 \uD3EC\uD568\uD55C\uACF3\uC5D0 \uACB9\uCCD0\uC788\uB294\uAC70\n toFilterRectsOverlap(targetRect: Rect): WrapRects {\n const filteredRects = Array.from(this.rects).filter(r => targetRect.isOverlap(r));\n return new WrapRects(\n this._initialX,\n this._initialY,\n this._initialWidth,\n this._initialHeight,\n filteredRects\n );\n }\n\n findEmptySpace(size: SizeType, searchArea?: Rect): Rect | null {\n const bounds = searchArea || new Rect(this.x, this.y, this.width, this.height);\n const step = 1; // Check every 1 unit\n\n for (let y = bounds.y; y < bounds.y + bounds.height - size.height; y += step) {\n for (let x = bounds.x; x < bounds.x + bounds.width - size.width; x += step) {\n const candidateRect = new Rect(x, y, size.width, size.height);\n let overlaps = false;\n for (const existingRect of Array.from(this.rects)) {\n if (candidateRect.isOverlap(existingRect)) {\n overlaps = true;\n break;\n }\n }\n if (!overlaps) {\n return candidateRect;\n }\n }\n }\n return null;\n }\n\n findRandomEmptySpace(size: SizeType, searchArea?: Rect, maxAttempts: number = 100): Rect | null {\n const bounds = searchArea || new Rect(this.x, this.y, this.width, this.height);\n\n for (let i = 0; i < maxAttempts; i++) {\n const randomX = Math.random() * (bounds.width - size.width) + bounds.x;\n const randomY = Math.random() * (bounds.height - size.height) + bounds.y;\n const candidateRect = new Rect(randomX, randomY, size.width, size.height);\n\n let overlaps = false;\n for (const existingRect of Array.from(this.rects.values())) {\n if (candidateRect.isOverlap(existingRect)) {\n overlaps = true;\n break;\n }\n }\n if (!overlaps) {\n return candidateRect;\n }\n }\n return null;\n }\n\n\n addRandomEmptySpaces(sizes: SizeType[], searchArea?: Rect, maxAttempts?: number) {\n const rs: Rect[] = [];\n sizes.forEach(size => {\n const emptySpace = this.findRandomEmptySpace(size, searchArea, maxAttempts);\n if (emptySpace) {\n this.add(emptySpace);\n rs.push(emptySpace);\n }\n });\n return rs;\n }\n\n addRandomEmptySpace(size: SizeType, searchArea?: Rect, maxAttempts?: number): Rect | null {\n const emptySpace = this.findRandomEmptySpace(size, searchArea, maxAttempts);\n if (emptySpace) {\n this.add(emptySpace);\n }\n return emptySpace;\n }\n\n addRandomSpace(size: SizeType, searchArea?: Rect): Rect {\n const bounds = searchArea || new Rect(this.x, this.y, this.width, this.height);\n const randomX = Math.random() * (bounds.width - size.width) + bounds.x;\n const randomY = Math.random() * (bounds.height - size.height) + bounds.y;\n const newRect = new Rect(randomX, randomY, size.width, size.height);\n this.add(newRect);\n return newRect;\n }\n\n isIn(point: Point2D): boolean {\n return this.toRect().isIn(point);\n }\n\n isOut(point: Point2D): boolean {\n return !this.isIn(point);\n }\n\n isOverlap(data: Point2D | Rect | Ellipse | WrapRects): boolean {\n if (data instanceof Point2D) {\n return this.isIn(data);\n }\n\n if (data instanceof Ellipse) {\n return data.isOverlap(this.toRect());\n }\n\n if (data instanceof Rect) {\n return this.toRect().isOverlap(data);\n }\n\n if (data instanceof WrapRects) {\n return this.toRect().isOverlap(data.toRect());\n }\n\n return false;\n }\n\n toRect(): Rect {\n return new Rect(this.x, this.y, this.width, this.height);\n }\n}", "import {Drawable} from \"../../../draw/Drawable\";\nimport { DrawData } from '../../../../entity/draw/DrawData';\n\nexport class LenGrid implements Drawable {\n\n draw(draw: DrawData) {\n const splitSize = 10;\n let wUnit = draw.canvas.width / splitSize;\n let hUnit = draw.canvas.height / splitSize;\n draw.context.strokeStyle = '#c8c8c8';\n draw.context.lineWidth = 0.5;\n for (let i = 0; i < splitSize; i++) {\n draw.context.beginPath();\n draw.context.moveTo(wUnit * i, 0);\n draw.context.lineTo(wUnit * i, draw.canvas.height);\n draw.context.stroke();\n }\n for (let i = 0; i < splitSize; i++) {\n draw.context.beginPath();\n draw.context.moveTo(0, hUnit * i);\n draw.context.lineTo(draw.canvas.width, hUnit * i);\n draw.context.stroke();\n }\n }\n}\n", "import {Drawable} from \"../../../draw/Drawable\";\nimport { DrawData } from '../../../../entity/draw/DrawData';\n\nexport class SizeGrid implements Drawable {\n\n\n constructor(public size = 10) {\n }\n\n draw(draw: DrawData) {\n let splitSize = draw.canvas.width / this.size;\n let wUnit = splitSize;\n let hUnit = splitSize;\n draw.context.strokeStyle = '#373737';\n draw.context.lineWidth = 0.5;\n draw.context.setLineDash([4, 2]);\n for (let i = 0; wUnit * i <= draw.canvas.width; i++) {\n draw.context.beginPath();\n draw.context.moveTo(wUnit * i, 0);\n draw.context.lineTo(wUnit * i, draw.canvas.height);\n draw.context.stroke();\n }\n for (let i = 0; hUnit * i <= draw.canvas.height; i++) {\n draw.context.beginPath();\n draw.context.moveTo(0, hUnit * i);\n draw.context.lineTo(draw.canvas.width, hUnit * i);\n draw.context.stroke();\n }\n }\n\n}\n", "import { Obj } from '../../object/obj/Obj';\nimport { Drawable } from '../../draw/Drawable';\nimport { DrawData } from '../../draw/DrawData';\n\nexport type RenderConfig = { disableReset?: boolean };\n\nexport abstract class RenderDrawObj<T = any> extends Obj implements Drawable {\n render(draw: DrawData<T>, config?:RenderConfig):void {\n try {\n // draw.reset();\n this.beforeDraw(draw);\n draw.context.save();\n if (!config?.disableReset) {\n draw.reset?.();\n }\n this.draw(draw);\n draw.context.restore();\n this.afterDraw(draw);\n } catch (e) {\n console.error('error!!',e);\n this.error(e);\n }\n }\n protected beforeDraw(draw: DrawData<T>): void {};\n abstract draw(draw: DrawData<T>): void ;\n protected afterDraw(draw: DrawData<T>): void {};\n protected error(e: any): void {\n\n };\n\n // constructor(canvas: HTMLCanvasElement, context: CanvasRenderingContext2D, public avaliablePlace: Rectangle = new Rectangle(new Point(0, 0), new Point(0, 0))) {\n // super(canvas, context);\n // }\n\n\n // get centerPoint(): Point {\n // return new Point();\n // }\n}\n", "import { DrawData } from '../../draw/DrawData';\nimport { RenderConfig, RenderDrawObj } from './RenderDrawObj';\nimport { MathUtil } from '../../../math/MathUtil';\nimport { Point3D } from '../../Point3D';\nimport { WithRequiredProperty } from '../../../types';\nimport { Obj } from './Obj';\nimport BezierConfig = MathUtil.BezierConfig;\nimport { ConvertUtils } from '../../../convert/ConvertUtils';\nimport { ObjectUtils } from '../../../object/ObjectUtils';\n\n// export type Calc = { name: string, start: number; end: number };\n// export type CalcResult = Calc & { value: number };\n\nexport type TargetPointType = { obj: Obj, bezierConfig?: MathUtil.BezierConfig; };\nexport type Calc = { value: number | number[], bezierConfig?: MathUtil.BezierConfig };\nexport type TransactionConfig = {\n // startPoint?: Point,\n targetPoint: TargetPointType | TargetPointType[];\n drawFps: number;\n deferTransaction?: boolean;\n animationIterationCount?: number | 'infinite';\n animationDirection?: 'normal' | 'reverse';\n startPoint?: Obj;\n startCalcs?: { [key: string]: number | number[]};\n calcs?: { [key: string]: Calc | Calc[] } //{name: string, value: number, bezierConfig?: MathUtil.BezierConfig}[][];\n // calcs?: Calc[];\n // fillMode?: 'backwards' ;\n\n};\n\ntype RequiredTransactionConfig = WithRequiredProperty<TransactionConfig, 'animationIterationCount' | 'animationDirection'>;\n\ntype TransactionControllConfig = {\n points: Obj[];\n calcs?: { [key: string]: number[] | number[][] };\n pointPositionIndex: number;\n transactionStartCalcs: { [key: string]: number | number[]};\n transactionStartPoint: Obj;\n config: RequiredTransactionConfig;\n};\n\n\n// TODO: \uB098\uC911\uC5D0 force\uB85C \uC704\uCE58\uC774\uB3D9\uD558\uB294\uAC70 \uD568\uC218\uD544\uC694\uD560\uC218\uB3C4.. transaction \uCDE8\uC18C\uC640\uD568\uAED8\nexport abstract class RenderTransactionDrawObj<T = any> extends RenderDrawObj<T> {\n private static readonly DEFAULT_BEZIER: BezierConfig = { p1x: 0.61, p1y: 1, p2x: 0.88, p2y: 1 };\n private _currentTransactionControlConfig: TransactionControllConfig;\n private _waitTransactionConfig?: TransactionConfig;\n private _calc: { [key: string]: number | number[]} = {};\n // private _beforeObj: Obj;\n private _transactionDoneSubscribers: ((config: TransactionConfig) => Obj|undefined)[] = [];\n // private _transactionConfigQueue: TransactionControllConfig[] = [];\n\n\n constructor(data?: Point3D);\n constructor(data?: { x?: number, y?: number, z?: number });\n constructor(x?: number, y?: number, z?: number);\n constructor(x?: number | { x?: number, y?: number, z?: number } | Point3D, y?: number, z?: number) {\n if (x instanceof Point3D) {\n // @ts-ignore\n super(x);\n } else if (typeof x === 'object') {\n super(x);\n } else {\n super({ x, y, z });\n }\n // this._beforeObj = this.copyObj();\n this._currentTransactionControlConfig = this.makeTransactionControlConfig({ targetPoint: { obj: this }, drawFps: 1 });\n // console.log('----!@@@@@@', this.x, this.y,this.z, this._currentTransactionConfig);\n }\n\n // get beforeObj() {\n // return this._beforeObj;\n // }\n\n get calc() {\n return this._calc;\n }\n\n getCalc(key: string): number | number[] | undefined {\n return this._calc[key];\n }\n\n setCalc(key: string, value: number | number[]) {\n // if ((this as any).syncSubLayer?.name === 'normalSpin_template' || (this as any).syncSubLayer?.name === 'normalSpin_slot'){\n // debugger;\n // }\n this._calc[key] = value;\n }\n\n getTransactionStartPoint() {\n return this._currentTransactionControlConfig.transactionStartPoint;\n }\n getTransactionFrames() {\n return {points: this._currentTransactionControlConfig.points, calcs: this._currentTransactionControlConfig.calcs};\n }\n setTransactionIndex(index: number){\n this._currentTransactionControlConfig.pointPositionIndex = index;\n }\n getTransactionIndex() {\n return this._currentTransactionControlConfig.pointPositionIndex;\n }\n getTransactionIndexRate() {\n return MathUtil.getPercentByTotal(this._currentTransactionControlConfig.points.length, this._currentTransactionControlConfig.pointPositionIndex+1) /100;\n }\n getCurrentTransactionPoint() {\n return this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex];\n }\n getCurrentDrawFps() {\n return this._currentTransactionControlConfig.config.drawFps;\n }\n getCurrentTransactionTargetPoint() {\n const drawFps = this.getCurrentDrawFps()\n const targetPoints = !Array.isArray(this._currentTransactionControlConfig.config.targetPoint) ? [this._currentTransactionControlConfig.config.targetPoint] : this._currentTransactionControlConfig.config.targetPoint;\n const size = Math.ceil(drawFps / targetPoints.length);\n const s = this._currentTransactionControlConfig.pointPositionIndex / size\n return targetPoints[s];\n }\n remainingFrameCountTransaction() {\n return (this._currentTransactionControlConfig.points.length - 1) - this._currentTransactionControlConfig.pointPositionIndex;\n }\n\n isDoneTransaction() {\n return this._currentTransactionControlConfig.pointPositionIndex >= this._currentTransactionControlConfig.points.length - 1;\n }\n\n makeTransactionControlConfig(transactionConfig: TransactionConfig) {\n // if ((this as any).syncSubLayer?.name === '\uC601\uC5ED-\uC815\uBA74-\uBAB8-group') {\n // console.log('-11-----', transactionConfig)\n // }\n // if ((this as any).syncSubLayer?.name === 'normalSpin_template' || (this as any).syncSubLayer?.name === 'normalSpin_slot'){\n // console.log('mmmmmmmmm')\n // }\n // console.log('-------------', this)\n // if ((this as any)._syncSubLayer?.name === \"normalBounce_template\" ) {\n // console.log('mmmmmmmmm', this.transform, this._currentTransactionControllConfig.transactionStartPoint.transform)\n // }\n if (transactionConfig.startPoint) {\n this.updateObjWithDefaults(transactionConfig.startPoint);\n }\n const transactionStartCalc = ObjectUtils.deepCopy(this._calc);\n\n if (transactionConfig.startCalcs) {\n Object.entries(transactionConfig.startCalcs).forEach(([k,v])=> {\n transactionStartCalc[k] = v;\n })\n }\n const requiredConfig = this.defaultTransactionConfig(transactionConfig);\n\n const targetPoints = requiredConfig.targetPoint = Array.isArray(requiredConfig.targetPoint) ? requiredConfig.targetPoint : [requiredConfig.targetPoint];\n const points: Obj[] = [];\n // \uB0A8\uC740\uAC8C \uC788\uC74C \uD2B8\uB79C\uC81D\uC158 \uC2DC\uC791\uD588\uC744\uB584 \uC2DC\uC791\uC810 \uAE30\uC900\uC73C\uB85C\n // let startPoint = this.remainingCntTransaction() > 0 ? this._transactionConfig.points[0] : this.toPoint3D();\n // console.log('---->',(this as any)._syncData?.name)\n // if ((this as any)._syncData?.name === 'mcdonalds-event_item_issue' || (this as any).syncSu_syncDatabLayer?.name === 'mcdonalds-event_item_issue'){\n // console.log('make!!!', transactionStartCalc)\n // }\n const currentPoint = this.copyObj();\n let startPoint: TargetPointType = { obj: currentPoint, bezierConfig: RenderTransactionDrawObj.DEFAULT_BEZIER };\n const drawFps = requiredConfig.drawFps;\n const size = Math.ceil(drawFps / targetPoints.length);\n // if (targetPoints.length === 1) {\n // points.push(targetPoints[0].obj);\n // } else {\n for (let i = 0; i < targetPoints.length; i++) {\n const targetPoint = targetPoints[i];\n const point = MathUtil.cubicBezier({start: startPoint.obj, end: targetPoint.obj}, {frame: size}, targetPoint.bezierConfig ?? RenderTransactionDrawObj.DEFAULT_BEZIER);\n const setPoints = [startPoint.obj, ...point, targetPoint.obj];\n setPoints.forEach(it=>it.data = targetPoint.obj.data);\n points.push(...setPoints);\n startPoint = targetPoint;\n }\n // }\n\n\n // if ((this as any)) {\n // // console.log('worldEngine Sync', layerDrawObject?.syncData?.name, layers)\n // console.log(requiredConfig)\n // }\n // const data = points.map(it => Math.floor(it.y*100)/100);\n // const data1 = targetPoints.map(it =>Math.floor(it.obj.y * 1000)/1000);\n // if (data[data.length-1] === 0) {\n // console.group('start', currentPoint)\n // console.log('1---@@@----', data1);\n // console.log('2---@@@----', data);\n // console.groupEnd()\n // }\n // \uD558\uB098\uB3C4\uC5C6\uC744\uB54C \uB610\uB294 0\uC73C\uB85C \uC14B\uD305\uC2DC \uBC14\uB85C \uC14B\n if (drawFps <= 0 && targetPoints.length > 0) {\n // console.log('!@!!!!!!!!!!!!!!!!!!!!!!!!!!!!', transactionConfig.startPoint, targetPoints[targetPoints.length - 1].obj)\n const lastPoint = targetPoints[targetPoints.length - 1].obj;\n points.length = 0;\n points.push(lastPoint);\n this.updateObjWithDefaults(lastPoint);\n }\n\n const calcs: { [key: string]: number[] | number[][] } = {};\n Object.entries(requiredConfig.calcs ?? {})?.forEach(([key, value], index) => {\n const values = Array.isArray(value) ? value : [value];\n let startPoint = transactionStartCalc[key];\n const points: number[] | number[][] = [];\n for (let i = 0; i < values.length; i++) {\n const end = values[i];\n if (Array.isArray(end.value)) {\n const point: number[][] = [];\n const cstart = (startPoint??[]) as number[];\n const cend = end.value as number[];\n const rpoints = cend.map((it,index) => {\n const b = MathUtil.cubicBezier({ start: cstart[index] ?? 0, end: cend[index] ?? 0 }, { frame: size }, end.bezierConfig ?? RenderTransactionDrawObj.DEFAULT_BEZIER)\n // console.log('----------22>', index, cstart[index], cend[index], size, b);\n return b;\n });\n const ss = ConvertUtils.toArrayDirectionChange(rpoints) as number[][]\n (points as number[][]).push(cstart, ...ss, cend);\n } else {\n const cstart = startPoint as number ??0;\n const point = MathUtil.cubicBezier({ start: cstart, end: end.value }, { frame: size }, end.bezierConfig ?? RenderTransactionDrawObj.DEFAULT_BEZIER);\n (points as number[]).push(cstart, ...point, end.value);\n }\n startPoint = end.value;\n }\n // \uD558\uB098\uB3C4\uC5C6\uC744\uB54C \uB610\uB294 0\uC73C\uB85C \uC14B\uD305\uC2DC \uBC14\uB85C \uC14B\n if (drawFps <= 0 && points.length > 0) {\n transactionStartCalc[key]=points[points.length - 1];\n }\n calcs[key] = points;\n });\n // console.log('calc------->', calcs);\n // if ((this as any).syncSubLayer?.name === 'normalSpin_template' || (this as any).syncSubLayer?.name === 'normalSpin_slot'){\n // console.log('make!!!', transactionStartCalc)\n // }\n const transactionControlConfig: TransactionControllConfig = {\n points: points,\n calcs: calcs,\n pointPositionIndex: 0,\n transactionStartCalcs: transactionStartCalc,\n transactionStartPoint: currentPoint,\n config: requiredConfig\n };\n // if (drawFps <= 0 && targetPoints.length > 0) {\n // console.log('!!!!!', transactionControllConfig)\n // }\n // if ((this as any).syncSubLayer?.name === '\uC601\uC5ED-\uC815\uBA74-\uBAB8-group') {\n // console.log('------', transactionControllConfig)\n // }\n return transactionControlConfig;\n }\n\n // setPosition(position: {x:number, y:number, z: number}, config?:{deferTransaction?:boolean}) {\n //\n //\n // }\n transaction(transactionConfig: TransactionConfig) {\n if ((this as any).syncSubLayer?.name === 'normalBounce_template') {\n // console.log('------', transactionControllConfig)\n // console.log('!!!!!!!!!', this.isDoneTransaction(), transactionConfig.deferTransaction);\n }\n if (this.isDoneTransaction() && transactionConfig.deferTransaction) {\n // this.rotate = 0;\n this._currentTransactionControlConfig = this.makeTransactionControlConfig(transactionConfig);\n } else if (transactionConfig.deferTransaction) {\n this._waitTransactionConfig = transactionConfig;\n } else {\n this._currentTransactionControlConfig = this.makeTransactionControlConfig(transactionConfig);\n }\n }\n\n\n private defaultTransactionConfig(transactionConfig: TransactionConfig): RequiredTransactionConfig {\n // const targetPoint = [...(Array.isArray(transactionConfig.targetPoint) ? transactionConfig.targetPoint : [transactionConfig.targetPoint])];\n // if (transactionConfig.animationDirection === 'reverse') {\n // targetPoint.u\n // }\n const requiredConfig: RequiredTransactionConfig = {\n ...transactionConfig,\n // targetPoint: targetPoint,\n animationIterationCount: transactionConfig.animationIterationCount ?? 1,\n animationDirection: transactionConfig.animationDirection ?? 'normal'\n // fillMode: transactionConfig.fillMode ?? 'backwards',\n };\n return requiredConfig;\n }\n\n render(draw: DrawData<T>, config?:RenderConfig) {\n\n\n // this._beforeObj.setObj(this.copyObj());\n\n // console.log('-!!!!!!!!!!!', this);\n this.x = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.x ?? this.x;\n this.y = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.y ?? this.y;\n this.z = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.z ?? this.z;\n this.volume = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.volume ?? this.volume;\n this.mass = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.mass ?? this.mass;\n this.e = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.e ?? this.e;\n this.rotate = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.rotate ?? this.rotate;\n this.width = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.width ?? this.width;\n this.height = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.height ?? this.height;\n this.transform[0] = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.transform[0] ?? this.transform[0];\n this.transform[1] = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.transform[1] ?? this.transform[1];\n this.transform[2] = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.transform[2] ?? this.transform[2];\n this.transform[3] = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.transform[3] ?? this.transform[3];\n this.transform[4] = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.transform[4] ?? this.transform[4];\n this.transform[5] = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.transform[5] ?? this.transform[5];\n this.color.r = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.color?.r ?? this.color.r;\n this.color.g = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.color?.g ?? this.color.g;\n this.color.b = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.color?.b ?? this.color.b;\n this.color.a = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.color?.a ?? this.color.a;\n\n // if (this._currentTransactionControllConfig.points.length === 1) {\n // console.log('-!!!!!!!!!!!', this.x, this.y,this.z, this._currentTransactionControllConfig);\n // }\n\n // calcs\n Object.entries(this._currentTransactionControlConfig.calcs ?? {}).forEach(([key, value]) => {\n this._calc[key] = value[this._currentTransactionControlConfig.pointPositionIndex];\n });\n\n this._currentTransactionControlConfig.pointPositionIndex = Math.min(this._currentTransactionControlConfig.pointPositionIndex + 1, this._currentTransactionControlConfig.points.length - 1);\n // super.render(draw, {calcs, transaction: this._currentTransactionConfig});\n super.render(draw, config);\n\n\n // if (this.syncSubLayer.name === 'normalSpin_template' || this.syncSubLayer.name === 'normalSpin_slot')\n // if (this['syncSubLayer']?.name==='normalSpin_template') {\n // console.log('is???Doen', this.isDoneTransaction(), this);\n // if (this.isDoneTransaction()) {\n // // debugger;\n // }\n // }\n if (this.isDoneTransaction()) {\n // this._transactionDoneSubscribers.forEach(it => {\n //\n // })\n // console.log('done?-----', this._currentTransactionConfig.config.direction);\n\n const targetPoints = Array.isArray(this._currentTransactionControlConfig.config.targetPoint) ? [...this._currentTransactionControlConfig.config.targetPoint] : [this._currentTransactionControlConfig.config.targetPoint];\n // console.log('----------->',targetPoints)\n const targetCalcs: {[key: string]: Calc[]} = {}\n Object.entries(this._currentTransactionControlConfig?.config?.calcs??{}).forEach(([k,v]) => targetCalcs[k] = Array.isArray(v) ? v : [v]);\n\n\n\n // next transaction?\n if (this._waitTransactionConfig && this._waitTransactionConfig.deferTransaction) {\n // alert(1)\n // console.log('dddddddon')\n\n // this._currentTransactionControllConfig.pointPositionIndex=0;\n\n // this.transaction({\n // ...this._currentTransactionConfig.config,\n // targetPoint: targetPoints,\n // calcs: targetCalcs\n // });\n // this._waitTransactionConfig.startPoint = this._currentTransactionControllConfig.transactionStartPoint;\n this.transaction(this._waitTransactionConfig);\n this._waitTransactionConfig = undefined;\n return;\n }\n\n\n\n let startPoint = this._currentTransactionControlConfig.config.startPoint;\n let startCalcs = this._currentTransactionControlConfig.transactionStartCalcs;\n if (this._currentTransactionControlConfig.config.animationDirection === 'reverse') {\n if (targetPoints.length>0) {\n // console.log('start-->1', (this as any).syncSubLayer?.name, this._currentTransactionControllConfig,JSON.stringify(startPoint.transform), JSON.stringify(targetPoints[0].obj.transform))\n const targetStartPoint = targetPoints.pop();\n targetPoints.reverse();\n if (startPoint)\n targetPoints.push({obj: startPoint });\n Object.entries(targetCalcs).forEach(([k,v]) => {\n const targetCalc = v.pop();\n if (targetCalc) {\n v.reverse();\n v.push({value: startCalcs[k]});\n startCalcs[k] = targetCalc.value;\n }\n });\n\n if (targetStartPoint)\n startPoint = targetStartPoint.obj;\n }\n }\n\n if (this._currentTransactionControlConfig.config.animationIterationCount === 'infinite') {\n // return;\n // console.log('----infinite?',targetCalcs, targetPoints);\n // Object.entries(this._calc).forEach(([k,v]) => {\n // this._calc[k] = 0;\n // })\n // if ((this as any).syncSubLayer?.name === 'normalSpin_template' || (this as any).syncSubLayer?.name === 'normalSpin_slot'){\n // console.log('iiiiiiiiiiiiiiiiiiii', this._currentTransactionControllConfig.transactionStartCalcs)\n // }\n // Object.entries(targetCalcs).forEach(([k,v]) => v.reverse());\n // this._calc = this._currentTransactionControllConfig.transactionStartCalcs;\n // \uC774\uAC78\uB123\uC5B4\uC57C\uB420\uC9C0 \uB9D0\uC544\uC57C\uB420\uC9C0.. \uC774\uAC70 \uACC4\uC18D\uACE0\uBBFC\uC778\uB370.. \uC774\uAC70 \uACC4\uC18D \uAC78\uB9AC\uB124.\n this.transaction({\n ...this._currentTransactionControlConfig.config,\n startPoint: startPoint,\n targetPoint: targetPoints,\n startCalcs: startCalcs,\n calcs: targetCalcs\n });\n } else if (this._currentTransactionControlConfig.config.animationIterationCount > 1) {\n // console.log('iterationCount', targetPoints);\n this.transaction({\n ...this._currentTransactionControlConfig.config,\n startPoint: startPoint,\n targetPoint: targetPoints,\n startCalcs: startCalcs,\n calcs: targetCalcs,\n animationIterationCount: this._currentTransactionControlConfig.config.animationIterationCount - 1\n });\n }\n }\n\n\n }\n\n abstract draw(draw: DrawData<T>): void ;\n\n // constructor(canvas: HTMLCanvasElement, context: CanvasRenderingContext2D, public avaliablePlace: Rectangle = new Rectangle(new Point(0, 0), new Point(0, 0))) {\n // super(canvas, context);\n // }\n\n\n // get centerPoint(): Point {\n // return new Point();\n // }\n}\n", "import { Runnable } from './Runnable';\n\nexport abstract class AutoStartRunner implements Runnable {\n protected constructor() {\n this.run();\n }\n\n abstract run(...params: any[]): any;\n}\n", "import { Runnable } from './Runnable';\n\nexport abstract class RunnableLoader<T> implements Runnable<Promise<T>> {\n protected loaded?: T;\n public run(...params: any[]): Promise<T> {\n return this.load()\n .then(it => {\n this.loaded = it;\n this.completed(this.loaded);\n return it;\n })\n .catch(e => {\n this.error(e);\n throw e;\n });\n }\n\n stop() {\n this.unload(this.loaded);\n }\n\n protected abstract load(): Promise<T>;\n\n protected abstract unload(installed?: T): Promise<void>;\n\n protected abstract completed(installed: T): Promise<void>;\n\n protected abstract error(e: any): Promise<void>;\n}\n", "import { RunnableLoader } from './RunnableLoader';\nimport { Observable } from '../message/Observable';\nimport { StoreLoaderState } from '../store/StoreLoader';\n\nexport abstract class StoreRunnableLoader<T> extends RunnableLoader<T> {\n public abstract observable: Observable<StoreLoaderState<T>>;\n}\n", "import { Transaction } from './Transaction';\nimport { ConstructorType } from '../types';\n\nexport class TransactionManager {\n private createdTransactions: Transaction[] = [];\n constructor(private transaction: Map<string | Symbol | ConstructorType<any>, Transaction> = new Map()) {}\n\n setTransaction(key: string | Symbol | ConstructorType<any>, transaction: Transaction) {\n return this.transaction.set(key, transaction);\n }\n\n hasTransaction(key: string | Symbol | ConstructorType<any>) {\n return this.transaction.has(key);\n }\n\n deleteTransaction(key: string | Symbol | ConstructorType<any>) {\n return this.transaction.delete(key);\n }\n\n getTransaction<T = any, I = any>(type: string | Symbol | ConstructorType<T>): Transaction<I, T> | undefined {\n const transaction = this.transaction.get(type);\n if (transaction) {\n this.createdTransactions.push(transaction);\n return transaction as Transaction<I, T>;\n } else {\n return undefined;\n }\n }\n\n async try() {\n // console.log('try', this.transaction);\n }\n //\n async catch(e: any) {\n // console.log('error', e, this.transaction);\n for (let createdTransaction of this.createdTransactions) {\n try {\n await createdTransaction.catch(e);\n } catch (e) {}\n }\n }\n\n async finally() {\n // console.log('finally', this.transaction);\n for (let createdTransaction of this.createdTransactions) {\n try {\n await createdTransaction.finally();\n } catch (e) {}\n }\n this.transaction.clear();\n }\n}\n", "import { Runnable } from '../runs/Runnable';\n\nexport namespace Schedule {\n export const SYMBOL = Symbol.for('core:schedule-token');\n export type State = 'INITIALIZE' | 'RUNNING' | 'DONE-AND-WAITING' | 'STOPPED' | 'ERROR' | 'SUCCESS';\n}\n\nexport interface Schedule<T = void, R = void> extends Runnable<Promise<R>, T> {\n spec: string;\n name?: string;\n description?: string;\n history?: { state: Schedule.State; date: Date; input?: T }[];\n state: Schedule.State;\n isReady?: boolean;\n totalCount: number;\n successCount: number;\n errorCount: number;\n\n run(data: T): Promise<R>;\n execute(data: T): Promise<R>;\n}\n\nexport abstract class ScheduleBase<T = void, R = void> implements Schedule<T, R> {\n /*\n * * * * * *\n \u252C \u252C \u252C \u252C \u252C \u252C\n \u2502 \u2502 \u2502 \u2502 \u2502 \u2502\n \u2502 \u2502 \u2502 \u2502 \u2502 \u2514 day of week (0 - 7) (0 or 7 is Sun)\n \u2502 \u2502 \u2502 \u2502 \u2514\u2500\u2500\u2500\u2500\u2500 month (1 - 12)\n \u2502 \u2502 \u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 day of month (1 - 31)\n \u2502 \u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 hour (0 - 23)\n \u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 minute (0 - 59)\n \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 second (0 - 59, OPTIONAL)\n */\n abstract spec: string;\n abstract name?: string;\n abstract description?: string;\n private _history?: { state: Schedule.State; date: Date; input: T, result?: R }[];\n private _state: Schedule.State = 'INITIALIZE';\n private _totalCount = 0;\n private _successCount = 0;\n private _errorCount = 0;\n\n get history() {\n return this._history;\n }\n get state(): Schedule.State {\n return this._state;\n }\n get totalCount() {\n return this._totalCount;\n }\n get successCount() {\n return this._successCount;\n }\n get errorCount() {\n return this._errorCount;\n }\n get isReady(): boolean {\n return !(this._state === 'RUNNING')\n }\n private addStart(input?: T, date: Date = new Date()) {\n this._history ??= [];\n this._history.push({ state: 'RUNNING', date, input });\n }\n private addError(input?: T, date: Date = new Date()) {\n this._history ??= [];\n this._history.push({ state: 'ERROR', date, input });\n }\n private addSuccess(input?: T, result:R = undefined, date: Date = new Date()) {\n this._history ??= [];\n this._history.push({ state: 'SUCCESS', date, input, result });\n }\n\n\n async run(data: T): Promise<R> {\n this._state = 'RUNNING';\n this.addStart();\n const startDate = new Date();\n let result: R;\n try {\n console.log('Running schedule', this.name, startDate);\n result = await this.execute(data);\n this._successCount++;\n this.addSuccess(data, result);\n } catch (e) {\n this.addError(e);\n this._errorCount++;\n const endDate = new Date();\n console.error('Error schedule', this.name, endDate, endDate.getTime() - startDate.getTime(), e);\n } finally {\n this._totalCount++;\n const endDate = new Date();\n console.log('Done schedule', this.name, endDate, endDate.getTime() - startDate.getTime());\n }\n this._state = 'DONE-AND-WAITING';\n return result!;\n }\n\n abstract execute(data: T): Promise<R>;\n}\n", "import { RunnableLoader } from '../runs/RunnableLoader';\nimport { Observable } from '../message/Observable';\n\nexport type StoreLoadedState<T> = {\n state: 'loaded';\n data: T;\n};\nexport type StoreErrorState = {\n state: 'error';\n data: any;\n};\n\nexport type StoreLoaderState<T> =\n | {\n state: 'ready' | 'loading' | 'unloaded';\n }\n | StoreLoadedState<T>\n | StoreErrorState\n | {\n state: 'unloaded';\n };\n\nexport abstract class StoreLoader<T> {\n public abstract observable: Observable<StoreLoaderState<T>>;\n}\n", "export namespace UrlUtils {\n // 1 const fullUrl = \"http://naver.com/asdwd?a=na\";\n\n // 2\n // 3 try {\n // 4 const url = new URL(fullUrl);\n // 5 const origin = url.origin; // \"http://naver.com\"\n // 6\n // 7 console.log(origin); // 출력: http://naver.com\n // 8 } catch (error) {\n // 9 console.error(\"유효하지 않은 URL입니다:\", error);\n // 10 }\n export const origin = (fullurl: string) => {\n return new URL(fullurl).origin;\n };\n\n export const toUrl = (fullUrl: string) => {\n return new URL(fullUrl);\n };\n\n /**\n * Returns the relative path (pathname + search) from a URL or string.\n */\n export const getUrlPath = (url: URL | string | { pathname: string; search: string }): string => {\n if (typeof url === 'string') {\n try {\n const u = new URL(url, 'http://localhost');\n return u.pathname + u.search;\n } catch (e) {\n return url;\n }\n }\n return (url.pathname ?? '') + (url.search ?? '');\n };\n\n /**\n * URLSearchParams에서 특정 키를 삭제\n */\n export const deleteSearchParam = (searchParams: URLSearchParams, name: string | string[]): URLSearchParams => {\n const names = Array.isArray(name) ? name : [name];\n names.forEach(n => searchParams.delete(n));\n return searchParams;\n };\n\n /**\n * URLSearchParams에 키-값 쌍을 추가\n */\n export const appendSearchParam = (searchParams: URLSearchParams, params: [[string, string]]): URLSearchParams => {\n params.forEach(([key, value]) => searchParams.append(key, value));\n return searchParams;\n };\n\n /**\n * URLSearchParams에서 키를 삭제하고 새로운 값을 추가 (upsert)\n * 기존 값이 있으면 삭제하고, 새로운 값을 추가\n */\n export const upsertSearchParam = (searchParams: URLSearchParams, params: Record<string, string | string[]>): URLSearchParams => {\n Object.entries(params).forEach(([key, value]) => {\n searchParams.delete(key); // 기존 값 삭제\n if (Array.isArray(value)) {\n value.forEach(v => searchParams.append(key, v));\n } else {\n searchParams.append(key, value);\n }\n });\n return searchParams;\n };\n\n /**\n * 상대경로를 현재 URL 기준 절대경로(URL)로 변환한다.\n * 이미 절대경로인 경우 그대로 반환한다.\n *\n * @param relative - 변환할 상대경로 또는 절대경로\n * @param base - 기준이 되는 절대경로 (예: location.href)\n * @returns 절대경로로 변환된 URL 객체\n *\n * @example\n * resolveUrl('./data.json', 'https://example.com/app/page')\n * // → URL { href: 'https://example.com/app/data.json' }\n *\n * resolveUrl('/api/users', 'https://example.com/app/page')\n * // → URL { href: 'https://example.com/api/users' }\n *\n * resolveUrl('https://other.com/foo', 'https://example.com/app/page')\n * // → URL { href: 'https://other.com/foo' }\n */\n /**\n * 상대경로를 base URL 기준 절대경로(URL)로 변환한다.\n * 이미 절대경로인 경우 그대로 반환한다.\n *\n * @param relative - 변환할 상대경로 또는 절대경로\n * @param base - 기준이 되는 절대경로 (예: location.href)\n * @returns 절대경로로 변환된 URL 객체\n *\n * @example\n * toAbsoluteUrl('./data.json', 'https://example.com/app/page')\n * // → URL { href: 'https://example.com/app/data.json' }\n *\n * toAbsoluteUrl('/api/users', 'https://example.com/app/page')\n * // → URL { href: 'https://example.com/api/users' }\n *\n * toAbsoluteUrl('https://other.com/foo', 'https://example.com/app/page')\n * // → URL { href: 'https://other.com/foo' }\n */\n export const toAbsoluteUrl = (relative: string, base: string): URL => {\n return new URL(relative, base);\n };\n\n /**\n * fetch의 input(string | URL | Request)을 base 기준 절대경로로 변환한다.\n * - string → 절대경로 string으로 반환\n * - URL → 절대경로 URL로 반환\n * - Request → url만 교체한 새 Request로 반환 (headers/body 등 유지)\n *\n * @example\n * toAbsoluteRequest('/api/users', 'https://example.com')\n * // → 'https://example.com/api/users'\n *\n * toAbsoluteRequest(new Request('./data.json'), 'https://example.com/app/')\n * // → Request { url: 'https://example.com/app/data.json' }\n */\n export function toAbsoluteRequest(input: string, base: string): string;\n export function toAbsoluteRequest(input: URL, base: string): URL;\n export function toAbsoluteRequest(input: Request, base: string): Request;\n export function toAbsoluteRequest(input: RequestInfo | URL, base: string): RequestInfo | URL;\n export function toAbsoluteRequest(input: RequestInfo | URL, base: string): RequestInfo | URL {\n if (input instanceof URL) {\n return toAbsoluteUrl(input.href, base);\n }\n if (typeof input === 'string') {\n return toAbsoluteUrl(input, base).href;\n }\n // Request 객체 - url만 교체하고 나머지 옵션(headers, body, method 등)은 유지\n return new Request(toAbsoluteUrl(input.url, base).href, input);\n }\n\n /**\n * URLSearchParams 조작을 위한 헬퍼\n */\n export const manipulateSearchParams = (searchParams: URLSearchParams, options?: { delete?: string[]; append?: [[string, string]]; upsert?: Record<string, string | string[]> }): URLSearchParams => {\n if (options?.delete) {\n deleteSearchParam(searchParams, options.delete);\n }\n if (options?.append) {\n appendSearchParam(searchParams, options.append);\n }\n if (options?.upsert) {\n upsertSearchParam(searchParams, options.upsert);\n }\n return searchParams;\n };\n}\n", "// import { InspectOptions } from 'node:util';\nimport { DateUtils } from '../date/DateUtils';\n\nexport enum LoggerLevel {\n LOG = 'LOG',\n ERROR = 'ERROR',\n WARN = 'WARN',\n INFO = 'INFO',\n DEBUG = 'DEBUG',\n TRACE = 'TRACE',\n OFF = 'OFF'\n}\n\n// logFormat\n// ${date:'yyyy-MM-dd'} ${level} ${line} ${file} ${message}\n// dateFormat : yyyy-MM-dd HH:mm:ss\nexport type LoggerConfig = { level: LoggerLevel, format?: string };\n//\n// export interface Logger {\n// log(...args: any[]): void;\n//\n// error(...args: any[]): void;\n//\n// warn(...args: any[]): void;\n//\n// info(...args: any[]): void;\n//\n// debug(...args: any[]): void;\n//\n// trace(...args: any[]): void;\n// }\n\nexport class Logger {\n constructor(protected config?: LoggerConfig) {}\n\n public setConfig(config: LoggerConfig) {\n this.config = config;\n }\n\n private _log(logLevel: LoggerLevel, ...args: any[]) {\n const now = new Date();\n let file, line;\n // const isNode = typeof process !== \"undefined\" && process.versions && process.versions.node;\n // console.log('------------isNode', isNode);\n // \uD658\uACBD\uBCC4 \uC2A4\uD0DD \uCD94\uCD9C\n // if (isNode) {\n // const stackObj = {} as any;\n // Error.captureStackTrace(stackObj, this._log);\n // const stack = stackObj?.stack.split(\"\\n\")[1];\n // const match = stack.match(/at (.*):(\\d+):(\\d+)/);\n // const path = isNode ? require(\"path\") : null;\n // file = path.basename(match[1]);\n // line = match[2];\n // } else {\n const err = new Error();\n const stackLines = err.stack.split(\"\\n\");\n // console.log('------------', stackLines);\n let stack = stackLines[3];\n const match = stack.match(/(?:at\\s)?(?:.*\\s)?(?:\\(|\\@)?(.*):(\\d+):(\\d+)/);\n // console.log('mmmmmmmmmmmmm', match);\n file = match[1]; //new URL(match[1]).pathname.split(\"/\").pop();\n line = `${match[2]}:${match[3]}`;\n // }\n\n // \uCD9C\uB825 \uBB38\uC790\uC5F4 \uC0DD\uC131\n // const formattedDate = formatDate(now);\n const message = args.map(arg =>\n typeof arg === \"object\" ? JSON.stringify(arg) : String(arg)\n ).join(\" \");\n\n const format = this.config?.format ?? '';\n // \uD3EC\uB9F7 \uD30C\uC2F1 \uBC0F \uC801\uC6A9\n let output = format;\n // \uB0A0\uC9DC \uCC98\uB9AC: ${date:'\uD615\uC2DD'}\n const dateMatch = format.match(/\\${date:'([^']+)'\\}/);\n if (dateMatch) {\n const dateFormat = dateMatch[1];\n output = output.replace(dateMatch[0], DateUtils.format(now, dateFormat));\n }\n // // \uC904 \uBC88\uD638 \uCC98\uB9AC: ${line:\uC790\uB9BF\uC218}\n output = output.replace(\"${line}\", line);\n output = output.replace(\"${level}\", logLevel);\n // const lineMatch = format.match(/\\${line:(\\d+)\\}/);\n // if (lineMatch) {\n // const digits = parseInt(lineMatch[1], 10);\n // const paddedLine = String(line).padStart(digits, \"0\");\n // output = output.replace(lineMatch[0], paddedLine);\n // }\n // \uD30C\uC77C\uBA85 \uCC98\uB9AC\n output = output.replace(\"${file}\", file.split('/').pop() ?? '');\n // \uBA54\uC2DC\uC9C0 \uCC98\uB9AC\n output = output.replace(\"${message}\", message);\n return output;\n\n // const output = `[${formattedDate}] [${file}:${line}] ${message}`;\n //\n // // \uCEA1\uCC98 \uBC0F \uCD9C\uB825\n // capturedOutput += output + \"\\n\";\n }\n\n\n public log(msg: string,...args: any[]) {\n if (this.config?.level === LoggerLevel.OFF) {\n return;\n }\n console.log(this._log(LoggerLevel.LOG, msg),...args);\n }\n // public logDir(obj: any, option?: InspectOptions) {\n // if (this.config?.level === LoggerLevel.OFF) {\n // return;\n // }\n // console.dir(obj, option);\n // }\n\n public error(msg: string, ...args: any[]) {\n if (this.config?.level === LoggerLevel.OFF) {\n return;\n }\n (console.error ?? console.log)(this._log(LoggerLevel.ERROR, msg), ...args);\n }\n // public errorDir(obj: any, option?: InspectOptions) {\n // if (this.config?.level === LoggerLevel.OFF) {\n // return;\n // }\n // console.dir(obj, option);\n // }\n\n public warn(msg: string,...args: any[]) {\n if (\n this.config?.level === LoggerLevel.ERROR ||\n this.config?.level === LoggerLevel.LOG ||\n this.config?.level === LoggerLevel.OFF\n ) {\n return;\n }\n (console.warn ?? console.log)(this._log(LoggerLevel.WARN, msg),...args);\n }\n // public warnDir(obj: any, option?: InspectOptions) {\n // if (\n // this.config?.level === LoggerLevel.ERROR ||\n // this.config?.level === LoggerLevel.LOG ||\n // this.config?.level === LoggerLevel.OFF\n // ) {\n // return;\n // }\n // console.dir(obj, option);\n // }\n\n public info(msg: string,...args: any[]) {\n if (\n this.config?.level === LoggerLevel.WARN ||\n this.config?.level === LoggerLevel.ERROR ||\n this.config?.level === LoggerLevel.LOG ||\n this.config?.level === LoggerLevel.OFF\n ) {\n return;\n }\n (console.info ?? console.log)(this._log(LoggerLevel.INFO, msg),...args);\n }\n // public infoDir(obj: any, option?: InspectOptions) {\n // if (\n // this.config?.level === LoggerLevel.WARN ||\n // this.config?.level === LoggerLevel.ERROR ||\n // this.config?.level === LoggerLevel.LOG ||\n // this.config?.level === LoggerLevel.OFF\n // ) {\n // return;\n // }\n // console.dir(obj, option);\n // }\n\n public debug(msg: string, ...args: any[]) {\n if (\n this.config?.level === LoggerLevel.INFO ||\n this.config?.level === LoggerLevel.WARN ||\n this.config?.level === LoggerLevel.ERROR ||\n this.config?.level === LoggerLevel.LOG ||\n this.config?.level === LoggerLevel.OFF\n ) {\n return;\n }\n (console.debug ?? console.log)(this._log(LoggerLevel.DEBUG, msg),...args);\n }\n // public debugDir(obj: any, option?: InspectOptions) {\n // if (\n // this.config?.level === LoggerLevel.INFO ||\n // this.config?.level === LoggerLevel.WARN ||\n // this.config?.level === LoggerLevel.ERROR ||\n // this.config?.level === LoggerLevel.LOG ||\n // this.config?.level === LoggerLevel.OFF\n // ) {\n // return;\n // }\n // console.dir(obj, option);\n // }\n\n public trace(...args: any[]) {\n if (this.config?.level === LoggerLevel.TRACE) {\n (console.trace ?? console.log)(...args);\n }\n }\n // public traceDir(obj: any, option?: InspectOptions) {\n // if (this.config?.level === LoggerLevel.TRACE) {\n // console.dir(obj, option);\n // }\n // }\n}\n", "import { Storage } from './Storage';\ntype ItemSet = { key: string; value: string };\n\nexport class MemoryStorage implements Storage {\n private memory: ItemSet[];\n constructor() {\n this.memory = [];\n }\n\n get length(): number {\n return this.memory.length;\n }\n\n clear(): void {\n this.memory = [];\n }\n\n getItemSet(key: string): ItemSet | null;\n getItemSet(key: number): ItemSet | null;\n getItemSet(keyOrIndex: string | number): ItemSet | null {\n const item =\n typeof keyOrIndex === 'string' ? this.memory.find(item => item.key === keyOrIndex) : this.memory[keyOrIndex];\n return item ?? null;\n }\n\n findIndex(key: string): number | null {\n const idx = this.memory.findIndex(item => item.key === key);\n return idx < 0 ? null : idx;\n }\n\n getItem(key: string): string | null {\n const item = this.getItemSet(key);\n if (item) {\n return item.value;\n }\n return null;\n }\n\n key(index: number): string | null {\n return this.memory[index].key ?? null;\n }\n\n removeItem(key: string): void {\n const index = this.findIndex(key);\n if (index !== null) {\n this.memory.splice(index, 1);\n }\n }\n\n setItem(key: string, value: string): void {\n const prev = this.getItemSet(key);\n if (prev) {\n prev.value = value;\n }\n this.memory.push({ key, value });\n }\n}\n", "import { Storage } from './Storage';\nexport class StorageUtils {\n public static setStorageItem(k: string, v: string | any, storage: Storage) {\n if (typeof v === 'object') {\n v = JSON.stringify(v);\n }\n storage.setItem(k, v);\n }\n\n public static getStorageItem(k: string, storage: Storage) {\n return storage.getItem(k);\n }\n\n public static removeStorageItem(k: string, storage: Storage) {\n return storage.removeItem(k);\n }\n\n public static getStorageJsonObjectItem<T>(k: string, storage: Storage): T | null {\n const item = storage.getItem(k);\n if (item) {\n try {\n return JSON.parse(item);\n } catch (e) {\n return null;\n }\n } else {\n return null;\n }\n }\n\n public static cutStorageItem(k: string, storage: Storage) {\n const data = StorageUtils.getStorageItem(k, storage);\n StorageUtils.removeStorageItem(k, storage);\n return data;\n }\n\n public static cutStorageJsonObjectItem<T>(k: string, storage: Storage): T | null {\n const item = StorageUtils.getStorageJsonObjectItem(k, storage);\n StorageUtils.removeStorageItem(k, storage);\n return (item as T) ?? null;\n }\n\n public static clearStorage(storage: Storage) {\n storage.clear();\n }\n}\n", "import { ConstructorType } from '../types';\n\nexport namespace ReflectUtils {\n export const getParameterTypes = (target: any, propertyKey?: string | symbol): ConstructorType<any>[] => {\n if (propertyKey) {\n return Reflect.getMetadata('design:paramtypes', target, propertyKey) || [];\n } else {\n return Reflect.getMetadata('design:paramtypes', target) || [];\n }\n };\n\n export const getReturnType = (target: any, propertyKey: string | symbol): any => {\n return Reflect.getMetadata('design:returntype', target, propertyKey);\n };\n\n export const getType = (target: any, propertyKey?: string | symbol): any => {\n if (propertyKey) {\n return Reflect.getMetadata('design:type', target, propertyKey);\n } else {\n return Reflect.getMetadata('design:type', target);\n }\n };\n\n export const getMetadata = <T = any>(metadataKey: any, target: any, propertyKey?: string | symbol): T | undefined => {\n if (propertyKey) {\n return Reflect.getMetadata(metadataKey, target, propertyKey);\n } else {\n return Reflect.getMetadata(metadataKey, target);\n }\n };\n\n export const findMetadata = <T = any>(metadataKey: any, target: any, propertyKey?: string | symbol): T | undefined => {\n if (target == null) return undefined;\n let searchTarget = typeof target === 'object' && typeof target !== 'function' ? target.constructor : target;\n\n while (searchTarget && searchTarget !== Object) {\n const data = propertyKey ? Reflect.getOwnMetadata(metadataKey, searchTarget, propertyKey) : Reflect.getOwnMetadata(metadataKey, searchTarget);\n if (data !== undefined) return data;\n const proto = Object.getPrototypeOf(searchTarget);\n searchTarget = proto && typeof proto === 'function' ? proto : proto?.constructor || null;\n if (searchTarget === target) break;\n }\n return undefined;\n };\n\n /**\n * \uD504\uB85C\uD1A0\uD0C0\uC785 \uCCB4\uC778\uC758 \uBAA8\uB4E0 \uBA54\uD0C0\uB370\uC774\uD130\uB97C \uC218\uC9D1\uD558\uC5EC \uB9AC\uC2A4\uD2B8\uB85C \uBC18\uD658\uD569\uB2C8\uB2E4. (\uBD80\uBAA8 -> \uC790\uC2DD \uC21C)\n */\n export const findAllMetadata = <T = any>(metadataKey: any, target: any, propertyKey?: string | symbol): T[] => {\n const results: T[] = [];\n if (target == null) return results;\n let searchTarget = typeof target === 'object' && typeof target !== 'function' ? target.constructor : target;\n\n while (searchTarget && searchTarget !== Object) {\n const data = propertyKey ? Reflect.getOwnMetadata(metadataKey, searchTarget, propertyKey) : Reflect.getOwnMetadata(metadataKey, searchTarget);\n if (data !== undefined) results.unshift(data); // \uBD80\uBAA8 \uB370\uC774\uD130\uB97C \uC55E\uC5D0 \uCD94\uAC00\n const proto = Object.getPrototypeOf(searchTarget);\n searchTarget = proto && typeof proto === 'function' ? proto : proto?.constructor || null;\n if (searchTarget === target) break;\n }\n return results;\n };\n\n /**\n * \uBAA8\uB4E0 \uBA54\uD0C0\uB370\uC774\uD130(\uBC30\uC5F4 \uD615\uD0DC)\uB97C \uC218\uC9D1\uD558\uC5EC \uD558\uB098\uC758 \uBC30\uC5F4\uB85C \uD569\uCE69\uB2C8\uB2E4. (\uBD80\uBAA8 -> \uC790\uC2DD \uC21C)\n */\n export const findAllMetadataFlatten = <T = any>(metadataKey: any, target: any, propertyKey?: string | symbol): T[] => {\n const results: T[] = [];\n const metaList = findAllMetadata<T[]>(metadataKey, target, propertyKey);\n metaList.forEach(data => {\n if (Array.isArray(data)) results.push(...data);\n });\n return [...new Set(results)];\n };\n\n /**\n * \uD504\uB85C\uD1A0\uD0C0\uC785 \uCCB4\uC778\uC758 \uBAA8\uB4E0 \uBA54\uD0C0\uB370\uC774\uD130(\uB9F5 \uD615\uD0DC)\uB97C \uC218\uC9D1\uD558\uC5EC \uD569\uCE69\uB2C8\uB2E4. (\uBD80\uBAA8 -> \uC790\uC2DD \uC21C)\n */\n export const findAllMapMetadata = <K, V>(metadataKey: any, target: any): Map<K, V[]> => {\n const finalMap = new Map<K, V[]>();\n const metaList = findAllMetadata<Map<K, V[]>>(metadataKey, target);\n\n metaList.forEach(data => {\n if (data instanceof Map) {\n data.forEach((values, key) => {\n if (!finalMap.has(key)) finalMap.set(key, []);\n const valArr = Array.isArray(values) ? values : [values];\n finalMap.get(key)!.push(...(valArr as any));\n });\n }\n });\n return finalMap;\n };\n\n export const getMetadataKeys = (target: any) => {\n return Reflect.getMetadataKeys(target);\n };\n\n export const getOwnMetadata = (metadataKey: any, target: any, propertyKey?: string | symbol): any => {\n if (propertyKey) {\n return Reflect.getOwnMetadata(metadataKey, target, propertyKey);\n } else {\n return Reflect.getOwnMetadata(metadataKey, target);\n }\n };\n\n export const getMetadatas = (target: any) => {\n return getMetadataKeys(target).map(it => getMetadata(it, target));\n };\n\n export const metadata = (metadataKey: any, data: any) => {\n return Reflect.metadata(metadataKey, data);\n };\n\n export const defineMetadata = (metadataKey: any, value: any, target: any, propertyKey?: string | symbol) => {\n if (propertyKey && Reflect.defineMetadata) {\n Reflect.defineMetadata(metadataKey, value, target, propertyKey);\n } else if (Reflect.defineMetadata) {\n Reflect.defineMetadata(metadataKey, value, target);\n }\n };\n\n /**\n * \uD55C \uD0C0\uAC9F\uC5D0\uC11C \uB2E4\uB978 \uD0C0\uAC9F\uC73C\uB85C \uBAA8\uB4E0 \uBA54\uD0C0\uB370\uC774\uD130\uB97C \uBCF5\uC0AC\uD569\uB2C8\uB2E4. (\uC774\uBBF8 \uB4F1\uB85D\uB41C \uD074\uB798\uC2A4 \uAC31\uC2E0\uC6A9)\n */\n export const copyMetadata = (from: any, to: any, propertyKey?: string | symbol) => {\n const keys = propertyKey ? (Reflect as any).getOwnMetadataKeys(from, propertyKey) : (Reflect as any).getOwnMetadataKeys(from);\n for (const key of keys) {\n const data = propertyKey ? Reflect.getOwnMetadata(key, from, propertyKey) : Reflect.getOwnMetadata(key, from);\n if (propertyKey) {\n (Reflect as any).defineMetadata(key, data, to, propertyKey);\n } else {\n (Reflect as any).defineMetadata(key, data, to);\n }\n }\n };\n}\n", "export namespace FunctionUtils {\n export const getParameterNames = (func: Function | any, property?: string | symbol) => {\n if (typeof func === 'object' && property) {\n func = func[property];\n }\n // @ts-ignore https://stackoverflow.com/questions/1007981/how-to-get-function-parameter-names-values-dynamically\u3131\n return (\n new RegExp('(?:' + func.name + '\\\\s*|^)\\\\s*\\\\((.*?)\\\\)')\n .exec(func.toString().replace(/\\n/g, ''))?.[1]\n .replace(/\\/\\*.*?\\*\\//g, '')\n .replace(/ /g, '')\n .split(',') ?? []\n );\n };\n\n export const evalScript = <T>(script: string | null, obj?: any): T | null => {\n try {\n if (script && obj) {\n // eslint-disable-next-line no-new-func\n return Function(`\"use strict\";\n ${script}\n `).bind(obj)();\n } else if (script) {\n // eslint-disable-next-line no-new-func\n return new Function('return ' + script)();\n } else {\n return null;\n }\n } catch (e) {\n return null;\n }\n };\n\n /**\n * Dynamically executes a script string with provided context and arguments.\n */\n export const execute = (params: { script: string; context?: any; args?: Record<string, any> }) => {\n const { script, context, args = {} } = params;\n const argNames = Object.keys(args);\n const argValues = Object.values(args);\n return new Function(...argNames, script).apply(context, argValues);\n };\n\n /**\n * Dynamically executes a script string wrapped with 'return' with provided context and arguments.\n */\n export const executeReturn = (params: { script: string; context?: any; args?: Record<string, any> }) => {\n const { script, context, args = {} } = params;\n const argNames = Object.keys(args);\n const argValues = Object.values(args);\n return new Function(...argNames, `return ${script}`).apply(context, argValues);\n };\n}\n", "// type T0 = Exclude<undefined, unknown>;\n// type T2 = Exclude<string | number | (() => void), Function>;\n// type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>;\n// type SubPartial<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;\nexport class Optional<T> {\n static readonly EMPTY = new Optional();\n\n\n constructor(private value?: T) {\n }\n\n public static ofNullable<T>(value: T): Optional<T> {\n return value == null ? Optional.empty() : Optional.of(value);\n }\n\n public static of<T>(value: T): Optional<T> {\n return new Optional<T>(value);\n }\n\n public orElse<T>(other: T): T {\n const val = this.isPresent() ? this.value : other;\n // return (this.value != null && this.value != undefined) ? this.value : other;\n return val as T;\n }\n public isPresent(): boolean {\n return (this.value != null && this.value != undefined);\n }\n\n // public ifPresent<T>(Consumer<? super T> consumer) {\n // if (value != null)\n // consumer.accept(value);\n // }\n\n public static empty<T>(): Optional<T> {\n return Optional.EMPTY as Optional<T>;\n }\n\n // public static default<T>(value: any, def: T): T {\n // return (value != null && value != undefined) ? value : def;\n // }\n\n\n}\n", "export namespace OptionalUtils {\n export const mapIfPresent = <T,TT>(input: T | undefined | null, to: (input: T) => TT | undefined): TT | undefined => {\n if (input === undefined || input === null) {\n return undefined;\n } else {\n return to(input);\n }\n }\n}", "// within rangeResult.ts\n// @ts-ignore\nexport class RangeResult implements IteratorResult<number> {\n done: boolean;\n value: number;\n\n constructor(value: number | undefined, done: boolean) {\n this.done = done;\n this.value = value ?? 0;\n }\n}\n\nexport class RangeIterator implements Iterator<number> {\n private _first: number;\n private _current: number;\n private _last: number;\n private _step: number;\n\n constructor(first: number, last: number, step: number) {\n this._current = this._first = first;\n this._last = last;\n this._step = step;\n }\n\n next(value?: any): IteratorResult<number> {\n let r: RangeResult;\n if (this._first < this._last && this._current < this._last) {\n r = new RangeResult(this._current, false);\n this._current += this._step;\n } else if (this._first < this._last && this._current === this._last) {\n r = new RangeResult(this._current, false);\n this._current += this._step;\n } else if (this._first > this._last && this._current > this._last) {\n r = new RangeResult(this._current, false);\n this._current -= this._step;\n } else if (this._first > this._last && this._current === this._last) {\n r = new RangeResult(this._current, false);\n this._current -= this._step;\n } else if (this._current === this._last) {\n r = new RangeResult(this._current, false);\n this._current -= this._step;\n } else {\n r = new RangeResult(undefined, true);\n }\n return r;\n }\n}\n\nexport class Range implements Iterable<number> {\n public readonly isRange = true;\n\n constructor(\n public first: number,\n public last: number,\n public step: number = 1\n ) {\n }\n\n [Symbol.iterator](): Iterator<number> {\n return new RangeIterator(this.first, this.last, this.step);\n }\n\n map<U>(callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any): U[] {\n return Array.from(this).map(callbackfn);\n }\n\n public static range(first: number | string, last?: number, step: number = 1): Range {\n if (typeof first === 'number' && last === undefined) {\n return new Range(0, first, step);\n } else if (typeof first === 'string') {\n const [_first, _last = '0'] = first.split('..');\n const [__last, _step = '1'] = _last.split(',');\n return new Range(Number(_first.trim()), Number(__last.trim()), Number(_step.trim()));\n } else {\n return new Range(first, last ?? 0, step);\n }\n }\n}\n", "export class AsyncBlockingQueue<T> {\n private _promises: Promise<T>[];\n private _resolvers: ((t: T) => void)[];\n\n constructor() {\n this._resolvers = [];\n this._promises = [];\n }\n\n private _add() {\n this._promises.push(new Promise(resolve => {\n this._resolvers.push(resolve);\n }));\n }\n\n enqueue(t: T) {\n if (!this._resolvers.length) this._add();\n const resolve = this._resolvers.shift()!;\n resolve(t);\n }\n\n dequeue() {\n if (!this._promises.length) this._add();\n const promise = this._promises.shift()!;\n return promise;\n }\n\n isEmpty() {\n return !this._promises.length;\n }\n\n isBlocked() {\n return !!this._resolvers.length;\n }\n\n get length() {\n return this._promises.length - this._resolvers.length;\n }\n}", "export interface CssDeclaration {\n [property: string]: string;\n}\n\n// --- Content item types for maintaining order ---\nexport interface CssDeclarationItem {\n type: 'declaration';\n property: string;\n value: string;\n}\n\nexport interface CssRuleItem {\n type: 'rule';\n rule: CssRule;\n}\n\nexport interface CssCommentItem {\n type: 'comment';\n text: string;\n}\n\nexport type CssContentItem = CssDeclarationItem | CssRuleItem | CssCommentItem;\n\n// --- Base CSS Node Class with common functionality ---\nexport abstract class CssNode {\n public content: CssContentItem[]; // Maintains order of declarations and rules\n\n constructor(content: CssContentItem[] = []) {\n this.content = content;\n }\n\n // --- Computed properties for backward compatibility ---\n public get declarations(): CssDeclaration {\n const declarations: CssDeclaration = {};\n this.content.forEach(item => {\n if (item.type === 'declaration') {\n declarations[item.property] = item.value;\n }\n });\n return declarations;\n }\n\n public get children(): CssRule[] {\n return this.content\n .filter(item => item.type === 'rule')\n .map(item => (item as CssRuleItem).rule);\n }\n\n public abstract stringify(indent?: number): string;\n\n // --- Common Manipulation Methods for content ---\n protected _addRules(rulesToAdd: CssRule[], atIndex?: number): this {\n const ruleItems: CssRuleItem[] = rulesToAdd.map(rule => ({ type: 'rule', rule }));\n if (atIndex === undefined) {\n this.content.push(...ruleItems);\n } else {\n // Find the actual content index for the rule at the given children index\n const ruleContentIndices = this.content\n .map((item, idx) => ({ item, idx }))\n .filter(({ item }) => item.type === 'rule')\n .map(({ idx }) => idx);\n\n const insertIndex = atIndex < ruleContentIndices.length ? ruleContentIndices[atIndex] : this.content.length;\n this.content.splice(insertIndex, 0, ...ruleItems);\n }\n return this;\n }\n\n public append(ruleOrCss: CssRule | string): this {\n const rulesToAdd = CssParser._parseInputToRules(ruleOrCss);\n return this._addRules(rulesToAdd);\n }\n\n public prepend(ruleOrCss: CssRule | string): this {\n const rulesToAdd = CssParser._parseInputToRules(ruleOrCss);\n return this._addRules(rulesToAdd, 0);\n }\n\n public insertAt(index: number, ruleOrCss: CssRule | string): this {\n const rulesToAdd = CssParser._parseInputToRules(ruleOrCss);\n return this._addRules(rulesToAdd, index);\n }\n\n public insertBefore(target: CssRule, newRuleOrCss: CssRule | string): this {\n const contentIndex = this.content.findIndex(item =>\n item.type === 'rule' && item.rule === target\n );\n if (contentIndex > -1) {\n const rulesToAdd = CssParser._parseInputToRules(newRuleOrCss);\n const ruleItems: CssRuleItem[] = rulesToAdd.map(rule => ({ type: 'rule', rule }));\n this.content.splice(contentIndex, 0, ...ruleItems);\n }\n return this;\n }\n\n public insertAfter(target: CssRule, newRuleOrCss: CssRule | string): this {\n const contentIndex = this.content.findIndex(item =>\n item.type === 'rule' && item.rule === target\n );\n if (contentIndex > -1) {\n const rulesToAdd = CssParser._parseInputToRules(newRuleOrCss);\n const ruleItems: CssRuleItem[] = rulesToAdd.map(rule => ({ type: 'rule', rule }));\n this.content.splice(contentIndex + 1, 0, ...ruleItems);\n }\n return this;\n }\n\n public replace(target: CssRule, newRuleOrCss: CssRule | string): this {\n const contentIndex = this.content.findIndex(item =>\n item.type === 'rule' && item.rule === target\n );\n if (contentIndex > -1) {\n const rulesToReplace = CssParser._parseInputToRules(newRuleOrCss);\n const ruleItems: CssRuleItem[] = rulesToReplace.map(rule => ({ type: 'rule', rule }));\n this.content.splice(contentIndex, 1, ...ruleItems);\n }\n return this;\n }\n\n public remove(target: CssRule): this {\n const contentIndex = this.content.findIndex(item =>\n item.type === 'rule' && item.rule === target\n );\n if (contentIndex > -1) {\n this.content.splice(contentIndex, 1);\n }\n return this;\n }\n}\n\n// --- Style Rule Class ---\nexport class StyleRule extends CssNode {\n public selector: string;\n\n constructor(selector: string, content: CssContentItem[] = []) {\n super(content);\n this.selector = selector;\n }\n\n public stringify(indent = 0): string {\n const indentStr = ' '.repeat(indent);\n const innerIndentStr = ' '.repeat(indent + 1);\n\n if (this.content.length === 0) {\n return `${indentStr}${this.selector} {}`;\n }\n\n const contentLines: string[] = [];\n\n for (const item of this.content) {\n if (item.type === 'declaration') {\n const kebabProperty = CssParser._camelToKebab(item.property);\n contentLines.push(`${innerIndentStr}${kebabProperty}: ${item.value};`);\n } else if (item.type === 'rule') {\n contentLines.push(item.rule.stringify(indent + 1));\n } else if (item.type === 'comment') {\n contentLines.push(`${innerIndentStr}/* ${item.text} */`);\n }\n }\n\n const innerContent = contentLines.join('\\n');\n return `${indentStr}${this.selector} {\\n${innerContent}\\n${indentStr}}`;\n }\n}\n\n// --- At Rule Class ---\nexport class AtRule extends CssNode {\n public name: string;\n public condition: string;\n\n constructor(name: string, condition: string, content: CssContentItem[] = []) {\n super(content);\n this.name = name;\n this.condition = condition;\n }\n\n public stringify(indent = 0): string {\n const indentStr = ' '.repeat(indent);\n const innerIndentStr = ' '.repeat(indent + 1);\n const prelude = `@${this.name}${this.condition ? ' ' + this.condition : ''}`;\n\n if (this.content.length === 0) {\n return `${indentStr}${prelude};`;\n }\n\n const contentLines: string[] = [];\n\n for (const item of this.content) {\n if (item.type === 'declaration') {\n const kebabProperty = CssParser._camelToKebab(item.property);\n contentLines.push(`${innerIndentStr}${kebabProperty}: ${item.value};`);\n } else if (item.type === 'rule') {\n contentLines.push(item.rule.stringify(indent + 1));\n } else if (item.type === 'comment') {\n contentLines.push(`${innerIndentStr}/* ${item.text} */`);\n }\n }\n\n const innerContent = contentLines.join('\\n');\n return `${indentStr}${prelude} {\\n${innerContent}\\n${indentStr}}`;\n }\n}\n\nexport type CssRule = StyleRule | AtRule;\n\n// --- The main parser class ---\n\nexport class CssParser extends CssNode {\n constructor(css: string = '') {\n const content = CssParser._parseTopLevel(css);\n super(content);\n }\n\n // --- Accessors ---\n public get rules(): Readonly<CssRule[]> {\n return this.children;\n }\n\n // --- Stringify ---\n public stringify(indent = 0): string {\n if (this.content.length === 0) {\n return '';\n }\n\n const contentLines: string[] = [];\n\n for (const item of this.content) {\n if (item.type === 'declaration') {\n const kebabProperty = CssParser._camelToKebab(item.property);\n contentLines.push(`${kebabProperty}: ${item.value};`);\n } else if (item.type === 'rule') {\n contentLines.push(item.rule.stringify(indent));\n } else if (item.type === 'comment') {\n contentLines.push(`/* ${item.text} */`);\n }\n }\n\n return contentLines.join('\\n');\n }\n\n // --- Static parsing method ---\n private static _parseTopLevel(css: string): CssContentItem[] {\n const cleanedCss = CssParser._cleanCss(css);\n\n // Parse top-level content including comments, declarations, and rules\n return CssParser._parseContent(cleanedCss);\n }\n\n // --- Parsing Logic ---\n private static _cleanCss(css: string): string {\n // Don't remove comments - we'll parse them as content items\n return css.trim();\n }\n\n // --- Universal content parser that handles comments, declarations, and rules ---\n private static _parseContent(css: string): CssContentItem[] {\n const content: CssContentItem[] = [];\n let i = 0;\n\n while (i < css.length) {\n // Skip whitespace\n while (i < css.length && /\\s/.test(css[i])) {\n i++;\n }\n if (i >= css.length) break;\n\n // Handle comments\n if (css[i] === '/' && i + 1 < css.length && css[i + 1] === '*') {\n const commentStart = i + 2;\n let commentEnd = css.indexOf('*/', commentStart);\n if (commentEnd === -1) {\n commentEnd = css.length;\n i = css.length;\n } else {\n const commentText = css.substring(commentStart, commentEnd).trim();\n content.push({ type: 'comment', text: commentText });\n i = commentEnd + 2;\n }\n continue;\n }\n\n // Find the next significant token\n const nextBraceIndex = css.indexOf('{', i);\n const nextSemicolonIndex = css.indexOf(';', i);\n const nextCommentIndex = css.indexOf('/*', i);\n\n // Determine what comes first\n const nextTokens = [\n { type: 'brace', index: nextBraceIndex },\n { type: 'semicolon', index: nextSemicolonIndex },\n { type: 'comment', index: nextCommentIndex }\n ].filter(token => token.index !== -1).sort((a, b) => a.index - b.index);\n\n if (nextTokens.length === 0) {\n // No more tokens, parse remaining as declaration if it contains ':'\n const remaining = css.substring(i).trim();\n if (remaining && remaining.includes(':')) {\n const parts = remaining.split(':');\n if (parts.length >= 2) {\n const prop = parts[0].trim();\n const val = parts.slice(1).join(':').trim();\n if (prop && val) {\n content.push({ type: 'declaration', property: prop, value: val });\n }\n }\n }\n break;\n }\n\n const nextToken = nextTokens[0];\n\n if (nextToken.type === 'comment') {\n // Handle comment (already handled above, but just in case)\n i = nextToken.index;\n continue;\n }\n\n if (nextToken.type === 'brace') {\n // This is a rule (selector or at-rule)\n const prelude = css.substring(i, nextToken.index).trim();\n if (prelude) {\n const blockEndIndex = CssParser._findMatchingBrace(css, nextToken.index);\n if (blockEndIndex !== -1) {\n const blockContent = css.substring(nextToken.index + 1, blockEndIndex).trim();\n\n if (prelude.startsWith('@')) {\n // At-rule\n const name = prelude.match(/^@([^\\s]+)/)?.[1] || 'unknown';\n const condition = prelude.replace(/^@[^\\s]+\\s*/, '').trim();\n const childContent = CssParser._parseContent(blockContent);\n content.push({ type: 'rule', rule: new AtRule(name, condition, childContent) });\n } else {\n // Style rule\n const childContent = CssParser._parseContent(blockContent);\n content.push({ type: 'rule', rule: new StyleRule(prelude, childContent) });\n }\n i = blockEndIndex + 1;\n continue;\n }\n }\n }\n\n if (nextToken.type === 'semicolon') {\n // This could be a declaration or at-rule without block\n const statement = css.substring(i, nextToken.index).trim();\n if (statement) {\n if (statement.startsWith('@')) {\n // At-rule without block\n const name = statement.match(/^@([^\\s]+)/)?.[1] || 'unknown';\n const condition = statement.replace(/^@[^\\s]+\\s*/, '').trim();\n content.push({ type: 'rule', rule: new AtRule(name, condition, []) });\n } else if (statement.includes(':')) {\n // Declaration\n const parts = statement.split(':');\n if (parts.length >= 2) {\n const prop = parts[0].trim();\n const val = parts.slice(1).join(':').trim();\n if (prop && val) {\n content.push({ type: 'declaration', property: prop, value: val });\n }\n }\n }\n }\n i = nextToken.index + 1;\n continue;\n }\n\n // Fallback: move to next character\n i++;\n }\n\n return content;\n }\n\n private static _parseBlockContent(css: string): { content: CssContentItem[] } {\n // Use the universal content parser\n return { content: CssParser._parseContent(css) };\n }\n\n private static _parseRules(css: string): CssRule[] {\n const rules: CssRule[] = [];\n let currentIndex = 0;\n css = css.trim();\n\n const recursiveAtRules = ['media', 'supports', 'container', 'scope', 'layer'];\n\n while (currentIndex < css.length) {\n while (currentIndex < css.length && /\\s/.test(css[currentIndex])) {\n currentIndex++;\n }\n if (currentIndex >= css.length) {\n break;\n }\n\n const nextBraceIndex = css.indexOf('{', currentIndex);\n const nextSemicolonIndex = css.indexOf(';', currentIndex);\n\n if (nextBraceIndex !== -1 && (nextBraceIndex < nextSemicolonIndex || nextSemicolonIndex === -1)) {\n const prelude = css.substring(currentIndex, nextBraceIndex).trim();\n if (!prelude) {\n currentIndex = nextBraceIndex + 1;\n continue;\n }\n\n const blockEndIndex = CssParser._findMatchingBrace(css, nextBraceIndex);\n if (blockEndIndex === -1) {\n console.error(\"Malformed CSS: No matching brace for selector -> \", prelude);\n return rules;\n }\n\n const blockContent = css.substring(nextBraceIndex + 1, blockEndIndex).trim();\n\n if (prelude.startsWith('@')) {\n const name = prelude.match(/^@([^\\s]+)/)?.[1] || 'unknown';\n const condition = prelude.replace(/^@[^\\s]+\\s*/, '').trim();\n const content = CssParser._parseContent(blockContent);\n rules.push(new AtRule(name, condition, content));\n } else {\n const content = CssParser._parseContent(blockContent);\n rules.push(new StyleRule(prelude, content));\n }\n currentIndex = blockEndIndex + 1;\n\n } else if (nextSemicolonIndex !== -1) {\n const statement = css.substring(currentIndex, nextSemicolonIndex).trim();\n if (statement.startsWith('@')) {\n const name = statement.match(/^@([^\\s]+)/)?.[1] || 'unknown';\n const condition = statement.replace(/^@[^\\s]+\\s*/, '').trim();\n rules.push(new AtRule(name, condition, []));\n }\n currentIndex = nextSemicolonIndex + 1;\n } else {\n break;\n }\n }\n return rules;\n }\n\n private static _findMatchingBrace(str: string, startIndex: number): number {\n let depth = 1;\n for (let i = startIndex + 1; i < str.length; i++) {\n if (str[i] === '{') {\n depth++;\n } else if (str[i] === '}') {\n depth--;\n if (depth === 0) {\n return i;\n }\n }\n }\n return -1;\n }\n\n private static _parseDeclarations(declarationString: string): CssDeclaration {\n const declarations: CssDeclaration = {};\n const declarationPairs = declarationString.split(';');\n\n for (const pair of declarationPairs) {\n if (pair.trim() === '') {\n continue;\n }\n const parts = pair.split(':');\n if (parts.length >= 2) {\n const property = parts[0].trim();\n const value = parts.slice(1).join(':').trim();\n if (property && value) {\n declarations[property] = value;\n }\n }\n }\n return declarations;\n }\n\n public static _declarationsToCSS(declarations: CssDeclaration, indent: number): string {\n const indentStr = ' '.repeat(indent);\n return Object.entries(declarations)\n .map(([prop, value]) => `${indentStr}${CssParser._camelToKebab(prop)}: ${value};`)\n .join('\\n');\n }\n\n public static _camelToKebab(camelCase: string): string {\n return camelCase.replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g, '$1-$2').toLowerCase();\n }\n\n // Helper to parse string input to CssRule[]\n public static _parseInputToRules(ruleOrCss: CssRule | string): CssRule[] {\n if (typeof ruleOrCss === 'string') {\n const parsed = new CssParser(ruleOrCss).rules;\n if (parsed.length === 0) {\n console.warn('Provided CSS string resulted in no rules.');\n }\n return [...parsed];\n } else {\n return [ruleOrCss];\n }\n }\n}\n\n// --- Type Guards ---\n\nexport function isRule(obj: any): obj is CssRule {\n return obj instanceof StyleRule || obj instanceof AtRule;\n}\n\nexport function isStyleRule(rule: any): rule is StyleRule {\n return rule instanceof StyleRule;\n}\n\nexport function isAtRule(rule: any): rule is AtRule {\n return rule instanceof AtRule;\n}\n\nexport function isCssDeclarationItem(item: any): item is CssDeclarationItem {\n return item && typeof item === 'object' && item.type === 'declaration' &&\n typeof item.property === 'string' && typeof item.value === 'string';\n}\n\nexport function isCssRuleItem(item: any): item is CssRuleItem {\n return item && typeof item === 'object' && item.type === 'rule' && isRule(item.rule);\n}\n\nexport function isCssCommentItem(item: any): item is CssCommentItem {\n return item && typeof item === 'object' && item.type === 'comment' && typeof item.text === 'string';\n}", "export abstract class Advice<T = any, R = any, C = any> {\n abstract exception(e: T, context?: C): Promise<R>;\n abstract isSupport(e: T, context?: C): Promise<boolean>;\n}\n", "import { Code } from './Code';\n\nexport enum IOS3166_1_Code {\nGHA = 'GHA',\nGAB = 'GAB',\nGUY = 'GUY',\nGMB = 'GMB',\nGGY = 'GGY',\nGLP = 'GLP',\nGTM = 'GTM',\nGUM = 'GUM',\nGRD = 'GRD',\nGRC = 'GRC',\nGRL = 'GRL',\nGIN = 'GIN',\nGNB = 'GNB',\nNAM = 'NAM',\nNRU = 'NRU',\nNGA = 'NGA',\nATA = 'ATA',\nSSD = 'SSD',\nZAF = 'ZAF',\nNLD = 'NLD',\nNPL = 'NPL',\nNOR = 'NOR',\nNFK = 'NFK',\nNCL = 'NCL',\nNZL = 'NZL',\nNIU = 'NIU',\nNER = 'NER',\nNIC = 'NIC',\nKOR = 'KOR',\nDNK = 'DNK',\nDOM = 'DOM',\nDMA = 'DMA',\nDEU = 'DEU',\nTLS = 'TLS',\nLAO = 'LAO',\nLBR = 'LBR',\nLVA = 'LVA',\nRUS = 'RUS',\nLBN = 'LBN',\nLSO = 'LSO',\nREU = 'REU',\nROU = 'ROU',\nLUX = 'LUX',\nRWA = 'RWA',\nLBY = 'LBY',\nLTU = 'LTU',\nLIE = 'LIE',\nMDG = 'MDG',\nMTQ = 'MTQ',\nMHL = 'MHL',\nMYT = 'MYT',\nMAC = 'MAC',\nMKD = 'MKD',\nMWI = 'MWI',\nMYS = 'MYS',\nMLI = 'MLI',\nIMN = 'IMN',\nMEX = 'MEX',\nMCO = 'MCO',\nMAR = 'MAR',\nMUS = 'MUS',\nMRT = 'MRT',\nMOZ = 'MOZ',\nMNE = 'MNE',\nMSR = 'MSR',\nMDA = 'MDA',\nMDV = 'MDV',\nMLT = 'MLT',\nMNG = 'MNG',\nUSA = 'USA',\nUMI = 'UMI',\nVIR = 'VIR',\nMMR = 'MMR',\nFSM = 'FSM',\nVUT = 'VUT',\nBHR = 'BHR',\nBRB = 'BRB',\nVAT = 'VAT',\nBHS = 'BHS',\nBGD = 'BGD',\nBMU = 'BMU',\nBEN = 'BEN',\nVEN = 'VEN',\nVNM = 'VNM',\nBEL = 'BEL',\nBLR = 'BLR',\nBLZ = 'BLZ',\nBES = 'BES',\nBIH = 'BIH',\nBWA = 'BWA',\nBOL = 'BOL',\nBDI = 'BDI',\nBFA = 'BFA',\nBVT = 'BVT',\nBTN = 'BTN',\nMNP = 'MNP',\nBGR = 'BGR',\nBRA = 'BRA',\nBRN = 'BRN',\nWSM = 'WSM',\nSAU = 'SAU',\nSGS = 'SGS',\nSMR = 'SMR',\nSTP = 'STP',\nMAF = 'MAF',\nBLM = 'BLM',\nSPM = 'SPM',\nESH = 'ESH',\nSEN = 'SEN',\nSRB = 'SRB',\nSYC = 'SYC',\nLCA = 'LCA',\nVCT = 'VCT',\nKNA = 'KNA',\nSHN = 'SHN',\nSOM = 'SOM',\nSLB = 'SLB',\nSDN = 'SDN',\nSUR = 'SUR',\nLKA = 'LKA',\nSJM = 'SJM',\nSWE = 'SWE',\nCHE = 'CHE',\nESP = 'ESP',\nSVK = 'SVK',\nSVN = 'SVN',\nSYR = 'SYR',\nSLE = 'SLE',\nSXM = 'SXM',\nSGP = 'SGP',\nARE = 'ARE',\nABW = 'ABW',\nARM = 'ARM',\nARG = 'ARG',\nASM = 'ASM',\nISL = 'ISL',\nHTI = 'HTI',\nIRL = 'IRL',\nAZE = 'AZE',\nAFG = 'AFG',\nAND = 'AND',\nALB = 'ALB',\nDZA = 'DZA',\nAGO = 'AGO',\nATG = 'ATG',\nAIA = 'AIA',\nERI = 'ERI',\nSWZ = 'SWZ',\nEST = 'EST',\nECU = 'ECU',\nETH = 'ETH',\nSLV = 'SLV',\nGBR = 'GBR',\nVGB = 'VGB',\nIOT = 'IOT',\nYEM = 'YEM',\nOMN = 'OMN',\nAUS = 'AUS',\nAUT = 'AUT',\nHND = 'HND',\nALA = 'ALA',\nJOR = 'JOR',\nUGA = 'UGA',\nURY = 'URY',\nUZB = 'UZB',\nUKR = 'UKR',\nWLF = 'WLF',\nIRQ = 'IRQ',\nIRN = 'IRN',\nISR = 'ISR',\nEGY = 'EGY',\nITA = 'ITA',\nIND = 'IND',\nIDN = 'IDN',\nJPN = 'JPN',\nJAM = 'JAM',\nZMB = 'ZMB',\nJEY = 'JEY',\nGNQ = 'GNQ',\nPRK = 'PRK',\nGEO = 'GEO',\nCHN = 'CHN',\nCAF = 'CAF',\nDJI = 'DJI',\nGIB = 'GIB',\nZWE = 'ZWE',\nTCD = 'TCD',\nCZE = 'CZE',\nCHL = 'CHL',\nCMR = 'CMR',\nCPV = 'CPV',\nKAZ = 'KAZ',\nQAT = 'QAT',\nKHM = 'KHM',\nCAN = 'CAN',\nKEN = 'KEN',\nCYM = 'CYM',\nCOM = 'COM',\nCRI = 'CRI',\nCCK = 'CCK',\nCIV = 'CIV',\nCOL = 'COL',\nCOG = 'COG',\nCOD = 'COD',\nCUB = 'CUB',\nKWT = 'KWT',\nCOK = 'COK',\nCUW = 'CUW',\nHRV = 'HRV',\nCXR = 'CXR',\nKGZ = 'KGZ',\nKIR = 'KIR',\nCYP = 'CYP',\nTWN = 'TWN',\nTJK = 'TJK',\nTZA = 'TZA',\nTHA = 'THA',\nTCA = 'TCA',\nTUR = 'TUR',\nTGO = 'TGO',\nTKL = 'TKL',\nTON = 'TON',\nTKM = 'TKM',\nTUV = 'TUV',\nTUN = 'TUN',\nTTO = 'TTO',\nPAN = 'PAN',\nPRY = 'PRY',\nPAK = 'PAK',\nPNG = 'PNG',\nPLW = 'PLW',\nPSE = 'PSE',\nFRO = 'FRO',\nPER = 'PER',\nPRT = 'PRT',\nFLK = 'FLK',\nPOL = 'POL',\nPRI = 'PRI',\nFRA = 'FRA',\nGUF = 'GUF',\nATF = 'ATF',\nPYF = 'PYF',\nFJI = 'FJI',\nFIN = 'FIN',\nPHL = 'PHL',\nPCN = 'PCN',\nHMD = 'HMD',\nHUN = 'HUN',\nHKG = 'HKG',\n}\n\n\nexport type IOS3166_1_CodeDescriptionDataType = { alpha3: string, alpha2: string, emoji: string, img: string, num: number, en: string, ko: string };\nexport const IOS3166_1_CodeDescription: Record<IOS3166_1_Code, Code<IOS3166_1_CodeDescriptionDataType>> = {\n [IOS3166_1_Code.GHA]: { description: '', data: {emoji:'\uD83C\uDDEC\uD83C\uDDED', alpha2: 'GH', alpha3:'GHA', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/1/19/Flag_of_Ghana.svg/22px-Flag_of_Ghana.svg.png',ko:'\uAC00\uB098', num:288,en:'Ghana'} },\n [IOS3166_1_Code.GAB]: { description: '', data: {emoji:'\uD83C\uDDEC\uD83C\uDDE6', alpha2: 'GA', alpha3:'GAB', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/0/04/Flag_of_Gabon.svg/40px-Flag_of_Gabon.svg.png',ko:'\uAC00\uBD09', num:266,en:'Gabon'} },\n [IOS3166_1_Code.GUY]: { description: '', data: {emoji:'\uD83C\uDDEC\uD83C\uDDFE', alpha2: 'GY', alpha3:'GUY', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/9/99/Flag_of_Guyana.svg/40px-Flag_of_Guyana.svg.png',ko:'\uAC00\uC774\uC544\uB098', num:328,en:'Guyana'} },\n [IOS3166_1_Code.GMB]: { description: '', data: {emoji:'\uD83C\uDDEC\uD83C\uDDF2', alpha2: 'GM', alpha3:'GMB', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/7/77/Flag_of_The_Gambia.svg/40px-Flag_of_The_Gambia.svg.png',ko:'\uAC10\uBE44\uC544', num:270,en:'Gambia'} },\n [IOS3166_1_Code.GGY]: { description: '', data: {emoji:'\uD83C\uDDEC\uD83C\uDDEC', alpha2: 'GG', alpha3:'GGY', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/f/fa/Flag_of_Guernsey.svg/40px-Flag_of_Guernsey.svg.png',ko:'\uAC74\uC9C0\uC12C', num:831,en:'Guernsey Island'} },\n [IOS3166_1_Code.GLP]: { description: '', data: {emoji:'\uD83C\uDDEC\uD83C\uDDF5', alpha2: 'GP', alpha3:'GLP', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/b/b5/Flag_of_France_%282020%E2%80%93present%29.svg/22px-Flag_of_France_%282020%E2%80%93present%29.svg.png',ko:'\uACFC\uB4E4\uB8E8\uD504', num:312,en:'Guadeloupe'} },\n [IOS3166_1_Code.GTM]: { description: '', data: {emoji:'\uD83C\uDDEC\uD83C\uDDF9', alpha2: 'GT', alpha3:'GTM', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/e/ec/Flag_of_Guatemala.svg/40px-Flag_of_Guatemala.svg.png',ko:'\uACFC\uD14C\uB9D0\uB77C', num:320,en:'Guatemala'} },\n [IOS3166_1_Code.GUM]: { description: '', data: {emoji:'\uD83C\uDDEC\uD83C\uDDFA', alpha2: 'GU', alpha3:'GUM', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/0/07/Flag_of_Guam.svg/40px-Flag_of_Guam.svg.png',ko:'\uAD0C', num:316,en:'Guam'} },\n [IOS3166_1_Code.GRD]: { description: '', data: {emoji:'\uD83C\uDDEC\uD83C\uDDE9', alpha2: 'GD', alpha3:'GRD', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/b/bc/Flag_of_Grenada.svg/22px-Flag_of_Grenada.svg.png',ko:'\uADF8\uB808\uB098\uB2E4', num:308,en:'Grenada'} },\n [IOS3166_1_Code.GRC]: { description: '', data: {emoji:'\uD83C\uDDEC\uD83C\uDDF7', alpha2: 'GR', alpha3:'GRC', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/5/5c/Flag_of_Greece.svg/40px-Flag_of_Greece.svg.png',ko:'\uADF8\uB9AC\uC2A4', num:300,en:'Greece'} },\n [IOS3166_1_Code.GRL]: { description: '', data: {emoji:'\uD83C\uDDEC\uD83C\uDDF1', alpha2: 'GL', alpha3:'GRL', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/0/09/Flag_of_Greenland.svg/22px-Flag_of_Greenland.svg.png',ko:'\uADF8\uB9B0\uB780\uB4DC', num:304,en:'Greenland'} },\n [IOS3166_1_Code.GIN]: { description: '', data: {emoji:'\uD83C\uDDEC\uD83C\uDDF3', alpha2: 'GN', alpha3:'GIN', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/e/ed/Flag_of_Guinea.svg/22px-Flag_of_Guinea.svg.png',ko:'\uAE30\uB2C8', num:324,en:'Guineas'} },\n [IOS3166_1_Code.GNB]: { description: '', data: {emoji:'\uD83C\uDDEC\uD83C\uDDFC', alpha2: 'GW', alpha3:'GNB', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/0/01/Flag_of_Guinea-Bissau.svg/22px-Flag_of_Guinea-Bissau.svg.png',ko:'\uAE30\uB2C8\uBE44\uC0AC\uC6B0', num:624,en:'Guinea-Bissau'} },\n [IOS3166_1_Code.NAM]: { description: '', data: {emoji:'\uD83C\uDDF3\uD83C\uDDE6', alpha2: 'NA', alpha3:'NAM', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/0/00/Flag_of_Namibia.svg/22px-Flag_of_Namibia.svg.png',ko:'\uB098\uBBF8\uBE44\uC544', num:516,en:'Namibia'} },\n [IOS3166_1_Code.NRU]: { description: '', data: {emoji:'\uD83C\uDDF3\uD83C\uDDF7', alpha2: 'NR', alpha3:'NRU', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/3/30/Flag_of_Nauru.svg/40px-Flag_of_Nauru.svg.png',ko:'\uB098\uC6B0\uB8E8', num:520,en:'Nauru'} },\n [IOS3166_1_Code.NGA]: { description: '', data: {emoji:'\uD83C\uDDF3\uD83C\uDDEC', alpha2: 'NG', alpha3:'NGA', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/7/79/Flag_of_Nigeria.svg/22px-Flag_of_Nigeria.svg.png',ko:'\uB098\uC774\uC9C0\uB9AC\uC544', num:566,en:'Nigeria'} },\n [IOS3166_1_Code.ATA]: { description: '', data: {emoji:'\uD83C\uDDE6\uD83C\uDDF6', alpha2: 'AQ', alpha3:'ATA', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/b/bb/Proposed_flag_of_Antarctica_%28Graham_Bartram%29.svg/40px-Proposed_flag_of_Antarctica_%28Graham_Bartram%29.svg.png',ko:'\uB0A8\uADF9', num:10,en:'Antarctica'} },\n [IOS3166_1_Code.SSD]: { description: '', data: {emoji:'\uD83C\uDDF8\uD83C\uDDF8', alpha2: 'SS', alpha3:'SSD', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/7/7a/Flag_of_South_Sudan.svg/40px-Flag_of_South_Sudan.svg.png',ko:'\uB0A8\uC218\uB2E8', num:728,en:'South Sudan'} },\n [IOS3166_1_Code.ZAF]: { description: '', data: {emoji:'\uD83C\uDDFF\uD83C\uDDE6', alpha2: 'ZA', alpha3:'ZAF', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/a/af/Flag_of_South_Africa.svg/40px-Flag_of_South_Africa.svg.png',ko:'\uB0A8\uC544\uD504\uB9AC\uCE74 \uACF5\uD654\uAD6D', num:710,en:'South Africa'} },\n [IOS3166_1_Code.NLD]: { description: '', data: {emoji:'\uD83C\uDDF3\uD83C\uDDF1', alpha2: 'NL', alpha3:'NLD', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/2/20/Flag_of_the_Netherlands.svg/22px-Flag_of_the_Netherlands.svg.png',ko:'\uB124\uB35C\uB780\uB4DC', num:528,en:'Netherlands'} },\n [IOS3166_1_Code.NPL]: { description: '', data: {emoji:'\uD83C\uDDF3\uD83C\uDDF5', alpha2: 'NP', alpha3:'NPL', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/9/9b/Flag_of_Nepal.svg/20px-Flag_of_Nepal.svg.png',ko:'\uB124\uD314', num:524,en:'Nepal'} },\n [IOS3166_1_Code.NOR]: { description: '', data: {emoji:'\uD83C\uDDF3\uD83C\uDDF4', alpha2: 'NO', alpha3:'NOR', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/d/d9/Flag_of_Norway.svg/40px-Flag_of_Norway.svg.png',ko:'\uB178\uB974\uC6E8\uC774', num:578,en:'Norway'} },\n [IOS3166_1_Code.NFK]: { description: '', data: {emoji:'\uD83C\uDDF3\uD83C\uDDEB', alpha2: 'NF', alpha3:'NFK', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/4/48/Flag_of_Norfolk_Island.svg/22px-Flag_of_Norfolk_Island.svg.png',ko:'\uB178\uD37D\uC12C', num:574,en:'Norfolk Island'} },\n [IOS3166_1_Code.NCL]: { description: '', data: {emoji:'\uD83C\uDDF3\uD83C\uDDE8', alpha2: 'NC', alpha3:'NCL', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/2/26/Flags_of_New_Caledonia.svg/60px-Flags_of_New_Caledonia.svg.png',ko:'\uB204\uBCA8\uCE7C\uB808\uB3C4\uB2C8', num:540,en:'Nouvel Caledoni'} },\n [IOS3166_1_Code.NZL]: { description: '', data: {emoji:'\uD83C\uDDF3\uD83C\uDDFF', alpha2: 'NZ', alpha3:'NZL', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/3/3e/Flag_of_New_Zealand.svg/40px-Flag_of_New_Zealand.svg.png',ko:'\uB274\uC9C8\uB79C\uB4DC', num:554,en:'New Zealand'} },\n [IOS3166_1_Code.NIU]: { description: '', data: {emoji:'\uD83C\uDDF3\uD83C\uDDFA', alpha2: 'NU', alpha3:'NIU', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/0/01/Flag_of_Niue.svg/22px-Flag_of_Niue.svg.png',ko:'\uB2C8\uC6B0\uC5D0', num:570,en:'in the near future'} },\n [IOS3166_1_Code.NER]: { description: '', data: {emoji:'\uD83C\uDDF3\uD83C\uDDEA', alpha2: 'NE', alpha3:'NER', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/f/f4/Flag_of_Niger.svg/40px-Flag_of_Niger.svg.png',ko:'\uB2C8\uC81C\uB974', num:562,en:'Niger'} },\n [IOS3166_1_Code.NIC]: { description: '', data: {emoji:'\uD83C\uDDF3\uD83C\uDDEE', alpha2: 'NI', alpha3:'NIC', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/1/19/Flag_of_Nicaragua.svg/40px-Flag_of_Nicaragua.svg.png',ko:'\uB2C8\uCE74\uB77C\uACFC', num:558,en:'Nicaragua'} },\n [IOS3166_1_Code.KOR]: { description: '', data: {emoji:'\uD83C\uDDF0\uD83C\uDDF7', alpha2: 'KR', alpha3:'KOR', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/0/09/Flag_of_South_Korea.svg/40px-Flag_of_South_Korea.svg.png',ko:'\uB300\uD55C\uBBFC\uAD6D', num:410,en:'Republic of Korea'} },\n [IOS3166_1_Code.DNK]: { description: '', data: {emoji:'\uD83C\uDDE9\uD83C\uDDF0', alpha2: 'DK', alpha3:'DNK', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/9/9c/Flag_of_Denmark.svg/22px-Flag_of_Denmark.svg.png',ko:'\uB374\uB9C8\uD06C', num:208,en:'Denmark'} },\n [IOS3166_1_Code.DOM]: { description: '', data: {emoji:'\uD83C\uDDE9\uD83C\uDDF4', alpha2: 'DO', alpha3:'DOM', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/9/9f/Flag_of_the_Dominican_Republic.svg/40px-Flag_of_the_Dominican_Republic.svg.png',ko:'\uB3C4\uBBF8\uB2C8\uCE74 \uACF5\uD654\uAD6D', num:214,en:'Dominican Republic'} },\n [IOS3166_1_Code.DMA]: { description: '', data: {emoji:'\uD83C\uDDE9\uD83C\uDDF2', alpha2: 'DM', alpha3:'DMA', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/c/c4/Flag_of_Dominica.svg/22px-Flag_of_Dominica.svg.png',ko:'\uB3C4\uBBF8\uB2C8\uCE74 \uC5F0\uBC29', num:212,en:'Union of Dominicans'} },\n [IOS3166_1_Code.DEU]: { description: '', data: {emoji:'\uD83C\uDDE9\uD83C\uDDEA', alpha2: 'DE', alpha3:'DEU', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/b/ba/Flag_of_Germany.svg/22px-Flag_of_Germany.svg.png',ko:'\uB3C5\uC77C', num:276,en:'Germany'} },\n [IOS3166_1_Code.TLS]: { description: '', data: {emoji:'\uD83C\uDDF9\uD83C\uDDF1', alpha2: 'TL', alpha3:'TLS', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/2/26/Flag_of_East_Timor.svg/40px-Flag_of_East_Timor.svg.png',ko:'\uB3D9\uD2F0\uBAA8\uB974', num:626,en:'East Timor'} },\n [IOS3166_1_Code.LAO]: { description: '', data: {emoji:'\uD83C\uDDF1\uD83C\uDDE6', alpha2: 'LA', alpha3:'LAO', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/5/56/Flag_of_Laos.svg/40px-Flag_of_Laos.svg.png',ko:'\uB77C\uC624\uC2A4', num:418,en:'Laos'} },\n [IOS3166_1_Code.LBR]: { description: '', data: {emoji:'\uD83C\uDDF1\uD83C\uDDF7', alpha2: 'LR', alpha3:'LBR', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/b/b8/Flag_of_Liberia.svg/40px-Flag_of_Liberia.svg.png',ko:'\uB77C\uC774\uBCA0\uB9AC\uC544', num:430,en:'Liberia'} },\n [IOS3166_1_Code.LVA]: { description: '', data: {emoji:'\uD83C\uDDF1\uD83C\uDDFB', alpha2: 'LV', alpha3:'LVA', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/8/84/Flag_of_Latvia.svg/40px-Flag_of_Latvia.svg.png',ko:'\uB77C\uD2B8\uBE44\uC544', num:428,en:'Latvia'} },\n [IOS3166_1_Code.RUS]: { description: '', data: {emoji:'\uD83C\uDDF7\uD83C\uDDFA', alpha2: 'RU', alpha3:'RUS', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/f/f3/Flag_of_Russia.svg/40px-Flag_of_Russia.svg.png',ko:'\uB7EC\uC2DC\uC544', num:643,en:'Russia'} },\n [IOS3166_1_Code.LBN]: { description: '', data: {emoji:'\uD83C\uDDF1\uD83C\uDDE7', alpha2: 'LB', alpha3:'LBN', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/5/59/Flag_of_Lebanon.svg/40px-Flag_of_Lebanon.svg.png',ko:'\uB808\uBC14\uB17C', num:422,en:'Lebanon'} },\n [IOS3166_1_Code.LSO]: { description: '', data: {emoji:'\uD83C\uDDF1\uD83C\uDDF8', alpha2: 'LS', alpha3:'LSO', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/4/4a/Flag_of_Lesotho.svg/40px-Flag_of_Lesotho.svg.png',ko:'\uB808\uC18C\uD1A0', num:426,en:'Lesotho'} },\n [IOS3166_1_Code.REU]: { description: '', data: {emoji:'\uD83C\uDDF7\uD83C\uDDEA', alpha2: 'RE', alpha3:'REU', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/b/b5/Flag_of_France_%282020%E2%80%93present%29.svg/22px-Flag_of_France_%282020%E2%80%93present%29.svg.png',ko:'\uB808\uC704\uB2C8\uC639', num:638,en:'R\u00E9union'} },\n [IOS3166_1_Code.ROU]: { description: '', data: {emoji:'\uD83C\uDDF7\uD83C\uDDF4', alpha2: 'RO', alpha3:'ROU', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/7/73/Flag_of_Romania.svg/22px-Flag_of_Romania.svg.png',ko:'\uB8E8\uB9C8\uB2C8\uC544', num:642,en:'Romania'} },\n [IOS3166_1_Code.LUX]: { description: '', data: {emoji:'\uD83C\uDDF1\uD83C\uDDFA', alpha2: 'LU', alpha3:'LUX', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/d/da/Flag_of_Luxembourg.svg/40px-Flag_of_Luxembourg.svg.png',ko:'\uB8E9\uC148\uBD80\uB974\uD06C', num:442,en:'Luxembourg'} },\n [IOS3166_1_Code.RWA]: { description: '', data: {emoji:'\uD83C\uDDF7\uD83C\uDDFC', alpha2: 'RW', alpha3:'RWA', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/1/17/Flag_of_Rwanda.svg/22px-Flag_of_Rwanda.svg.png',ko:'\uB974\uC644\uB2E4', num:646,en:'Rwanda'} },\n [IOS3166_1_Code.LBY]: { description: '', data: {emoji:'\uD83C\uDDF1\uD83C\uDDFE', alpha2: 'LY', alpha3:'LBY', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/0/05/Flag_of_Libya.svg/40px-Flag_of_Libya.svg.png',ko:'\uB9AC\uBE44\uC544', num:434,en:'Libya'} },\n [IOS3166_1_Code.LTU]: { description: '', data: {emoji:'\uD83C\uDDF1\uD83C\uDDF9', alpha2: 'LT', alpha3:'LTU', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/1/11/Flag_of_Lithuania.svg/40px-Flag_of_Lithuania.svg.png',ko:'\uB9AC\uD22C\uC544\uB2C8\uC544', num:440,en:'Lithuania'} },\n [IOS3166_1_Code.LIE]: { description: '', data: {emoji:'\uD83C\uDDF1\uD83C\uDDEE', alpha2: 'LI', alpha3:'LIE', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/4/47/Flag_of_Liechtenstein.svg/40px-Flag_of_Liechtenstein.svg.png',ko:'\uB9AC\uD788\uD150\uC288\uD0C0\uC778', num:438,en:'Liechtenstein'} },\n [IOS3166_1_Code.MDG]: { description: '', data: {emoji:'\uD83C\uDDF2\uD83C\uDDEC', alpha2: 'MG', alpha3:'MDG', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/b/bc/Flag_of_Madagascar.svg/40px-Flag_of_Madagascar.svg.png',ko:'\uB9C8\uB2E4\uAC00\uC2A4\uCE74\uB974', num:450,en:'Madagascar.'} },\n [IOS3166_1_Code.MTQ]: { description: '', data: {emoji:'\uD83C\uDDF2\uD83C\uDDF6', alpha2: 'MQ', alpha3:'MTQ', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/2/27/Flag-of-Martinique.svg/22px-Flag-of-Martinique.svg.png',ko:'\uB9C8\uB974\uD2F0\uB2C8\uD06C', num:474,en:'Martinique'} },\n [IOS3166_1_Code.MHL]: { description: '', data: {emoji:'\uD83C\uDDF2\uD83C\uDDED', alpha2: 'MH', alpha3:'MHL', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/2/2e/Flag_of_the_Marshall_Islands.svg/40px-Flag_of_the_Marshall_Islands.svg.png',ko:'\uB9C8\uC15C \uC81C\uB3C4', num:584,en:'Marshall Islands'} },\n [IOS3166_1_Code.MYT]: { description: '', data: {emoji:'\uD83C\uDDFE\uD83C\uDDF9', alpha2: 'YT', alpha3:'MYT', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/b/b5/Flag_of_France_%282020%E2%80%93present%29.svg/22px-Flag_of_France_%282020%E2%80%93present%29.svg.png',ko:'\uB9C8\uC694\uD2B8', num:175,en:'Mayotte'} },\n [IOS3166_1_Code.MAC]: { description: '', data: {emoji:'\uD83C\uDDF2\uD83C\uDDF4', alpha2: 'MO', alpha3:'MAC', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/6/63/Flag_of_Macau.svg/40px-Flag_of_Macau.svg.png',ko:'\uB9C8\uCE74\uC624', num:446,en:'Macau'} },\n [IOS3166_1_Code.MKD]: { description: '', data: {emoji:'\uD83C\uDDF2\uD83C\uDDF0', alpha2: 'MK', alpha3:'MKD', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/7/79/Flag_of_North_Macedonia.svg/40px-Flag_of_North_Macedonia.svg.png',ko:'\uBD81\uB9C8\uCF00\uB3C4\uB2C8\uC544', num:807,en:'North Macedonia'} },\n [IOS3166_1_Code.MWI]: { description: '', data: {emoji:'\uD83C\uDDF2\uD83C\uDDFC', alpha2: 'MW', alpha3:'MWI', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/d/d1/Flag_of_Malawi.svg/22px-Flag_of_Malawi.svg.png',ko:'\uB9D0\uB77C\uC704', num:454,en:'Malawi'} },\n [IOS3166_1_Code.MYS]: { description: '', data: {emoji:'\uD83C\uDDF2\uD83C\uDDFE', alpha2: 'MY', alpha3:'MYS', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/6/66/Flag_of_Malaysia.svg/22px-Flag_of_Malaysia.svg.png',ko:'\uB9D0\uB808\uC774\uC2DC\uC544', num:458,en:'Malaysia'} },\n [IOS3166_1_Code.MLI]: { description: '', data: {emoji:'\uD83C\uDDF2\uD83C\uDDF1', alpha2: 'ML', alpha3:'MLI', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/9/92/Flag_of_Mali.svg/40px-Flag_of_Mali.svg.png',ko:'\uB9D0\uB9AC', num:466,en:'Marley'} },\n [IOS3166_1_Code.IMN]: { description: '', data: {emoji:'\uD83C\uDDEE\uD83C\uDDF2', alpha2: 'IM', alpha3:'IMN', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/5/5d/Flag_of_the_Isle_of_Mann.svg/40px-Flag_of_the_Isle_of_Mann.svg.png',ko:'\uB9E8\uC12C', num:833,en:'Isle of Man'} },\n [IOS3166_1_Code.MEX]: { description: '', data: {emoji:'\uD83C\uDDF2\uD83C\uDDFD', alpha2: 'MX', alpha3:'MEX', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/f/fc/Flag_of_Mexico.svg/40px-Flag_of_Mexico.svg.png',ko:'\uBA55\uC2DC\uCF54', num:484,en:'Mexico'} },\n [IOS3166_1_Code.MCO]: { description: '', data: {emoji:'\uD83C\uDDF2\uD83C\uDDE8', alpha2: 'MC', alpha3:'MCO', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/e/ea/Flag_of_Monaco.svg/22px-Flag_of_Monaco.svg.png',ko:'\uBAA8\uB098\uCF54', num:492,en:'Monaco'} },\n [IOS3166_1_Code.MAR]: { description: '', data: {emoji:'\uD83C\uDDF2\uD83C\uDDE6', alpha2: 'MA', alpha3:'MAR', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/2/2c/Flag_of_Morocco.svg/40px-Flag_of_Morocco.svg.png',ko:'\uBAA8\uB85C\uCF54', num:504,en:'Morocco, the Republic of Korea'} },\n [IOS3166_1_Code.MUS]: { description: '', data: {emoji:'\uD83C\uDDF2\uD83C\uDDFA', alpha2: 'MU', alpha3:'MUS', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/7/77/Flag_of_Mauritius.svg/40px-Flag_of_Mauritius.svg.png',ko:'\uBAA8\uB9AC\uC154\uC2A4', num:480,en:'Mauritius'} },\n [IOS3166_1_Code.MRT]: { description: '', data: {emoji:'\uD83C\uDDF2\uD83C\uDDF7', alpha2: 'MR', alpha3:'MRT', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/4/43/Flag_of_Mauritania.svg/40px-Flag_of_Mauritania.svg.png',ko:'\uBAA8\uB9AC\uD0C0\uB2C8', num:478,en:'Mauritania'} },\n [IOS3166_1_Code.MOZ]: { description: '', data: {emoji:'\uD83C\uDDF2\uD83C\uDDFF', alpha2: 'MZ', alpha3:'MOZ', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/d/d0/Flag_of_Mozambique.svg/40px-Flag_of_Mozambique.svg.png',ko:'\uBAA8\uC7A0\uBE44\uD06C', num:508,en:'Mozambique'} },\n [IOS3166_1_Code.MNE]: { description: '', data: {emoji:'\uD83C\uDDF2\uD83C\uDDEA', alpha2: 'ME', alpha3:'MNE', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/6/64/Flag_of_Montenegro.svg/40px-Flag_of_Montenegro.svg.png',ko:'\uBAAC\uD14C\uB124\uADF8\uB85C', num:499,en:'Montenegro'} },\n [IOS3166_1_Code.MSR]: { description: '', data: {emoji:'\uD83C\uDDF2\uD83C\uDDF8', alpha2: 'MS', alpha3:'MSR', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/d/d0/Flag_of_Montserrat.svg/22px-Flag_of_Montserrat.svg.png',ko:'\uBAAC\uD2B8\uC138\uB7AB', num:500,en:'Mont-Serrat'} },\n [IOS3166_1_Code.MDA]: { description: '', data: {emoji:'\uD83C\uDDF2\uD83C\uDDE9', alpha2: 'MD', alpha3:'MDA', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/2/27/Flag_of_Moldova.svg/40px-Flag_of_Moldova.svg.png',ko:'\uBAB0\uB3C4\uBC14', num:498,en:'Moldova'} },\n [IOS3166_1_Code.MDV]: { description: '', data: {emoji:'\uD83C\uDDF2\uD83C\uDDFB', alpha2: 'MV', alpha3:'MDV', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/0/0f/Flag_of_Maldives.svg/40px-Flag_of_Maldives.svg.png',ko:'\uBAB0\uB514\uBE0C', num:462,en:'Maldives'} },\n [IOS3166_1_Code.MLT]: { description: '', data: {emoji:'\uD83C\uDDF2\uD83C\uDDF9', alpha2: 'MT', alpha3:'MLT', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/7/73/Flag_of_Malta.svg/22px-Flag_of_Malta.svg.png',ko:'\uBAB0\uD0C0', num:470,en:'Malta'} },\n [IOS3166_1_Code.MNG]: { description: '', data: {emoji:'\uD83C\uDDF2\uD83C\uDDF3', alpha2: 'MN', alpha3:'MNG', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/4/4c/Flag_of_Mongolia.svg/22px-Flag_of_Mongolia.svg.png',ko:'\uBABD\uACE8', num:496,en:'Mongolia'} },\n [IOS3166_1_Code.USA]: { description: '', data: {emoji:'\uD83C\uDDFA\uD83C\uDDF8', alpha2: 'US', alpha3:'USA', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/a/a4/Flag_of_the_United_States.svg/40px-Flag_of_the_United_States.svg.png',ko:'\uBBF8\uAD6D', num:840,en:'the United States'} },\n [IOS3166_1_Code.UMI]: { description: '', data: {emoji:'\uD83C\uDDFA\uD83C\uDDF2', alpha2: 'UM', alpha3:'UMI', img:'http://upload.wikimedia.org/wikipedia/commons/thumb/a/a4/Flag_of_the_United_States.svg/40px-Flag_of_the_United_States.svg.png',ko:'\uBBF8\uAD6D\uB839 \uAD70\uC18C \uC81C\uB3C4', num:581,en:'the U.S. minor system'} },\n [IOS3166_1_Code.VIR]: { description: '', data: {emoji:'\uD83C\uDDFB\uD83C\uDDEE', alpha2: 'VI', alpha3:'VIR', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/f/f8/Flag_of_the_United_States_Virgin_Islands.svg/22px-Flag_of_the_United_States_Virgin_Islands.svg.png',ko:'\uBBF8\uAD6D\uB839 \uBC84\uC9C4\uC544\uC77C\uB79C\uB4DC', num:850,en:'U.S. Virgin Islands'} },\n [IOS3166_1_Code.MMR]: { description: '', data: {emoji:'\uD83C\uDDF2\uD83C\uDDF2', alpha2: 'MM', alpha3:'MMR', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/8/8c/Flag_of_Myanmar.svg/22px-Flag_of_Myanmar.svg.png',ko:'\uBBF8\uC580\uB9C8', num:104,en:'Myanmar'} },\n [IOS3166_1_Code.FSM]: { description: '', data: {emoji:'\uD83C\uDDEB\uD83C\uDDF2', alpha2: 'FM', alpha3:'FSM', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/e/e4/Flag_of_the_Federated_States_of_Micronesia.svg/40px-Flag_of_the_Federated_States_of_Micronesia.svg.png',ko:'\uBBF8\uD06C\uB85C\uB124\uC2DC\uC544 \uC5F0\uBC29', num:583,en:'Federation of Micronesia'} },\n [IOS3166_1_Code.VUT]: { description: '', data: {emoji:'\uD83C\uDDFB\uD83C\uDDFA', alpha2: 'VU', alpha3:'VUT', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/b/bc/Flag_of_Vanuatu.svg/22px-Flag_of_Vanuatu.svg.png',ko:'\uBC14\uB204\uC544\uD22C', num:548,en:'Vanuatu'} },\n [IOS3166_1_Code.BHR]: { description: '', data: {emoji:'\uD83C\uDDE7\uD83C\uDDED', alpha2: 'BH', alpha3:'BHR', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/2/2c/Flag_of_Bahrain.svg/40px-Flag_of_Bahrain.svg.png',ko:'\uBC14\uB808\uC778', num:48,en:'Bahrain'} },\n [IOS3166_1_Code.BRB]: { description: '', data: {emoji:'\uD83C\uDDE7\uD83C\uDDE7', alpha2: 'BB', alpha3:'BRB', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/e/ef/Flag_of_Barbados.svg/40px-Flag_of_Barbados.svg.png',ko:'\uBC14\uBCA0\uC774\uB3C4\uC2A4', num:52,en:'Barbados'} },\n [IOS3166_1_Code.VAT]: { description: '', data: {emoji:'\uD83C\uDDFB\uD83C\uDDE6', alpha2: 'VA', alpha3:'VAT', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/b/b3/Flag_of_Vatican_City_%282023%E2%80%93present%29.svg/20px-Flag_of_Vatican_City_%282023%E2%80%93present%29.svg.png',ko:'\uBC14\uD2F0\uCE78 \uC2DC\uAD6D', num:336,en:'Vatican City'} },\n [IOS3166_1_Code.BHS]: { description: '', data: {emoji:'\uD83C\uDDE7\uD83C\uDDF8', alpha2: 'BS', alpha3:'BHS', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/9/93/Flag_of_the_Bahamas.svg/40px-Flag_of_the_Bahamas.svg.png',ko:'\uBC14\uD558\uB9C8', num:44,en:'Bahamas'} },\n [IOS3166_1_Code.BGD]: { description: '', data: {emoji:'\uD83C\uDDE7\uD83C\uDDE9', alpha2: 'BD', alpha3:'BGD', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/f/f9/Flag_of_Bangladesh.svg/22px-Flag_of_Bangladesh.svg.png',ko:'\uBC29\uAE00\uB77C\uB370\uC2DC', num:50,en:'Bangladesh'} },\n [IOS3166_1_Code.BMU]: { description: '', data: {emoji:'\uD83C\uDDE7\uD83C\uDDF2', alpha2: 'BM', alpha3:'BMU', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/b/bf/Flag_of_Bermuda.svg/40px-Flag_of_Bermuda.svg.png',ko:'\uBC84\uBBA4\uB2E4', num:60,en:'Bermuda'} },\n [IOS3166_1_Code.BEN]: { description: '', data: {emoji:'\uD83C\uDDE7\uD83C\uDDEF', alpha2: 'BJ', alpha3:'BEN', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/0/0a/Flag_of_Benin.svg/22px-Flag_of_Benin.svg.png',ko:'\uBCA0\uB0C9', num:204,en:'Benin'} },\n [IOS3166_1_Code.VEN]: { description: '', data: {emoji:'\uD83C\uDDFB\uD83C\uDDEA', alpha2: 'VE', alpha3:'VEN', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/0/06/Flag_of_Venezuela.svg/40px-Flag_of_Venezuela.svg.png',ko:'\uBCA0\uB124\uC218\uC5D8\uB77C', num:862,en:'Venezuela'} },\n [IOS3166_1_Code.VNM]: { description: '', data: {emoji:'\uD83C\uDDFB\uD83C\uDDF3', alpha2: 'VN', alpha3:'VNM', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/2/21/Flag_of_Vietnam.svg/40px-Flag_of_Vietnam.svg.png',ko:'\uBCA0\uD2B8\uB0A8', num:704,en:'Vietnam'} },\n [IOS3166_1_Code.BEL]: { description: '', data: {emoji:'\uD83C\uDDE7\uD83C\uDDEA', alpha2: 'BE', alpha3:'BEL', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/9/92/Flag_of_Belgium_%28civil%29.svg/40px-Flag_of_Belgium_%28civil%29.svg.png',ko:'\uBCA8\uAE30\uC5D0', num:56,en:'Belgium'} },\n [IOS3166_1_Code.BLR]: { description: '', data: {emoji:'\uD83C\uDDE7\uD83C\uDDFE', alpha2: 'BY', alpha3:'BLR', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/8/85/Flag_of_Belarus.svg/40px-Flag_of_Belarus.svg.png',ko:'\uBCA8\uB77C\uB8E8\uC2A4', num:112,en:'Belarus'} },\n [IOS3166_1_Code.BLZ]: { description: '', data: {emoji:'\uD83C\uDDE7\uD83C\uDDFF', alpha2: 'BZ', alpha3:'BLZ', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/e/e7/Flag_of_Belize.svg/22px-Flag_of_Belize.svg.png',ko:'\uBCA8\uB9AC\uC988', num:84,en:'Belize'} },\n [IOS3166_1_Code.BES]: { description: '', data: {emoji:'\uD83C\uDDE7\uD83C\uDDF6', alpha2: 'BQ', alpha3:'BES', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/1/1e/Flag_of_Bonaire.svg/40px-Flag_of_Bonaire.svg.png',ko:'\uBCF4\uB124\uB974\uC12C', num:535,en:'Bonner Island'} },\n [IOS3166_1_Code.BIH]: { description: '', data: {emoji:'\uD83C\uDDE7\uD83C\uDDE6', alpha2: 'BA', alpha3:'BIH', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/b/bf/Flag_of_Bosnia_and_Herzegovina.svg/40px-Flag_of_Bosnia_and_Herzegovina.svg.png',ko:'\uBCF4\uC2A4\uB2C8\uC544 \uD5E4\uB974\uCCB4\uACE0\uBE44\uB098', num:70,en:'Bosnia and Herzegovina'} },\n [IOS3166_1_Code.BWA]: { description: '', data: {emoji:'\uD83C\uDDE7\uD83C\uDDFC', alpha2: 'BW', alpha3:'BWA', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/f/fa/Flag_of_Botswana.svg/40px-Flag_of_Botswana.svg.png',ko:'\uBCF4\uCE20\uC640\uB098', num:72,en:'Botswana'} },\n [IOS3166_1_Code.BOL]: { description: '', data: {emoji:'\uD83C\uDDE7\uD83C\uDDF4', alpha2: 'BO', alpha3:'BOL', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/4/48/Flag_of_Bolivia.svg/40px-Flag_of_Bolivia.svg.png',ko:'\uBCFC\uB9AC\uBE44\uC544', num:68,en:'Bolivia'} },\n [IOS3166_1_Code.BDI]: { description: '', data: {emoji:'\uD83C\uDDE7\uD83C\uDDEE', alpha2: 'BI', alpha3:'BDI', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/5/50/Flag_of_Burundi.svg/40px-Flag_of_Burundi.svg.png',ko:'\uBD80\uB8EC\uB514', num:108,en:'Burundi'} },\n [IOS3166_1_Code.BFA]: { description: '', data: {emoji:'\uD83C\uDDE7\uD83C\uDDEB', alpha2: 'BF', alpha3:'BFA', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/3/31/Flag_of_Burkina_Faso.svg/22px-Flag_of_Burkina_Faso.svg.png',ko:'\uBD80\uB974\uD0A4\uB098\uD30C\uC18C', num:854,en:'Burkina Faso'} },\n [IOS3166_1_Code.BVT]: { description: '', data: {emoji:'\uD83C\uDDE7\uD83C\uDDFB', alpha2: 'BV', alpha3:'BVT', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/3/36/BOUVET.png/40px-BOUVET.png',ko:'\uBD80\uBCA0\uC12C', num:74,en:'island of Bube'} },\n [IOS3166_1_Code.BTN]: { description: '', data: {emoji:'\uD83C\uDDE7\uD83C\uDDF9', alpha2: 'BT', alpha3:'BTN', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/9/91/Flag_of_Bhutan.svg/40px-Flag_of_Bhutan.svg.png',ko:'\uBD80\uD0C4', num:64,en:'Bhutan'} },\n [IOS3166_1_Code.MNP]: { description: '', data: {emoji:'\uD83C\uDDF2\uD83C\uDDF5', alpha2: 'MP', alpha3:'MNP', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/e/e0/Flag_of_the_Northern_Mariana_Islands.svg/22px-Flag_of_the_Northern_Mariana_Islands.svg.png',ko:'\uBD81\uB9C8\uB9AC\uC544\uB098 \uC81C\uB3C4', num:580,en:'Northern Mariana Islands'} },\n [IOS3166_1_Code.BGR]: { description: '', data: {emoji:'\uD83C\uDDE7\uD83C\uDDEC', alpha2: 'BG', alpha3:'BGR', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/9/9a/Flag_of_Bulgaria.svg/22px-Flag_of_Bulgaria.svg.png',ko:'\uBD88\uAC00\uB9AC\uC544', num:100,en:'Bulgaria'} },\n [IOS3166_1_Code.BRA]: { description: '', data: {emoji:'\uD83C\uDDE7\uD83C\uDDF7', alpha2: 'BR', alpha3:'BRA', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/0/05/Flag_of_Brazil.svg/40px-Flag_of_Brazil.svg.png',ko:'\uBE0C\uB77C\uC9C8', num:76,en:'Brazil'} },\n [IOS3166_1_Code.BRN]: { description: '', data: {emoji:'\uD83C\uDDE7\uD83C\uDDF3', alpha2: 'BN', alpha3:'BRN', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/9/9c/Flag_of_Brunei.svg/40px-Flag_of_Brunei.svg.png',ko:'\uBE0C\uB8E8\uB098\uC774', num:96,en:'Brunei'} },\n [IOS3166_1_Code.WSM]: { description: '', data: {emoji:'\uD83C\uDDFC\uD83C\uDDF8', alpha2: 'WS', alpha3:'WSM', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/3/31/Flag_of_Samoa.svg/40px-Flag_of_Samoa.svg.png',ko:'\uC0AC\uBAA8\uC544', num:882,en:'Samoa'} },\n [IOS3166_1_Code.SAU]: { description: '', data: {emoji:'\uD83C\uDDF8\uD83C\uDDE6', alpha2: 'SA', alpha3:'SAU', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/0/0d/Flag_of_Saudi_Arabia.svg/40px-Flag_of_Saudi_Arabia.svg.png',ko:'\uC0AC\uC6B0\uB514\uC544\uB77C\uBE44\uC544', num:682,en:'Saudi Arabia'} },\n [IOS3166_1_Code.SGS]: { description: '', data: {emoji:'\uD83C\uDDEC\uD83C\uDDF8', alpha2: 'GS', alpha3:'SGS', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/e/ed/Flag_of_South_Georgia_and_the_South_Sandwich_Islands.svg/22px-Flag_of_South_Georgia_and_the_South_Sandwich_Islands.svg.png',ko:'\uC0AC\uC6B0\uC2A4\uC870\uC9C0\uC544 \uC0AC\uC6B0\uC2A4\uC0CC\uB4DC\uC704\uCE58 \uC81C\uB3C4', num:239,en:'South Georgia South Sandwich Islands'} },\n [IOS3166_1_Code.SMR]: { description: '', data: {emoji:'\uD83C\uDDF8\uD83C\uDDF2', alpha2: 'SM', alpha3:'SMR', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/b/b1/Flag_of_San_Marino.svg/22px-Flag_of_San_Marino.svg.png',ko:'\uC0B0\uB9C8\uB9AC\uB178', num:674,en:'San Marino'} },\n [IOS3166_1_Code.STP]: { description: '', data: {emoji:'\uD83C\uDDF8\uD83C\uDDF9', alpha2: 'ST', alpha3:'STP', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/0/0a/Flag_of_S%C3%A3o_Tom%C3%A9_and_Pr%C3%ADncipe.svg/22px-Flag_of_S%C3%A3o_Tom%C3%A9_and_Pr%C3%ADncipe.svg.png',ko:'\uC0C1\uD22C\uBA54 \uD504\uB9B0\uC2DC\uD398', num:678,en:'Sao Tome Principe'} },\n [IOS3166_1_Code.MAF]: { description: '', data: {emoji:'\uD83C\uDDF2\uD83C\uDDEB', alpha2: 'MF', alpha3:'MAF', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/b/b5/Flag_of_France_%282020%E2%80%93present%29.svg/22px-Flag_of_France_%282020%E2%80%93present%29.svg.png',ko:'\uC0DD\uB9C8\uB974\uD0F1', num:663,en:'Saint-Martin'} },\n [IOS3166_1_Code.BLM]: { description: '', data: {emoji:'\uD83C\uDDE7\uD83C\uDDF1', alpha2: 'BL', alpha3:'BLM', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/b/b4/Flag_of_Saint_Barth%C3%A9lemy_%28local%29.svg/40px-Flag_of_Saint_Barth%C3%A9lemy_%28local%29.svg.png',ko:'\uC0DD\uBC14\uB974\uD154\uB808\uBBF8', num:652,en:'Saint-Bartelemi'} },\n [IOS3166_1_Code.SPM]: { description: '', data: {emoji:'\uD83C\uDDF5\uD83C\uDDF2', alpha2: 'PM', alpha3:'SPM', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/7/74/Flag_of_Saint-Pierre_and_Miquelon.svg/40px-Flag_of_Saint-Pierre_and_Miquelon.svg.png',ko:'\uC0DD\uD53C\uC5D0\uB974 \uBBF8\uD074\uB871', num:666,en:'Saint-Pierre Michael Long'} },\n [IOS3166_1_Code.ESH]: { description: '', data: {emoji:'\uD83C\uDDEA\uD83C\uDDED', alpha2: 'EH', alpha3:'ESH', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/2/26/Flag_of_the_Sahrawi_Arab_Democratic_Republic.svg/40px-Flag_of_the_Sahrawi_Arab_Democratic_Republic.svg.png',ko:'\uC11C\uC0AC\uD558\uB77C', num:732,en:'Speak'} },\n [IOS3166_1_Code.SEN]: { description: '', data: {emoji:'\uD83C\uDDF8\uD83C\uDDF3', alpha2: 'SN', alpha3:'SEN', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/f/fd/Flag_of_Senegal.svg/40px-Flag_of_Senegal.svg.png',ko:'\uC138\uB124\uAC08', num:686,en:'Senegal'} },\n [IOS3166_1_Code.SRB]: { description: '', data: {emoji:'\uD83C\uDDF7\uD83C\uDDF8', alpha2: 'RS', alpha3:'SRB', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/f/ff/Flag_of_Serbia.svg/40px-Flag_of_Serbia.svg.png',ko:'\uC138\uB974\uBE44\uC544', num:688,en:'Serbia'} },\n [IOS3166_1_Code.SYC]: { description: '', data: {emoji:'\uD83C\uDDF8\uD83C\uDDE8', alpha2: 'SC', alpha3:'SYC', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/f/fc/Flag_of_Seychelles.svg/22px-Flag_of_Seychelles.svg.png',ko:'\uC138\uC774\uC178', num:690,en:'Seychelles'} },\n [IOS3166_1_Code.LCA]: { description: '', data: {emoji:'\uD83C\uDDF1\uD83C\uDDE8', alpha2: 'LC', alpha3:'LCA', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/9/9f/Flag_of_Saint_Lucia.svg/40px-Flag_of_Saint_Lucia.svg.png',ko:'\uC138\uC778\uD2B8\uB8E8\uC2DC\uC544', num:662,en:'Saint Lucia'} },\n [IOS3166_1_Code.VCT]: { description: '', data: {emoji:'\uD83C\uDDFB\uD83C\uDDE8', alpha2: 'VC', alpha3:'VCT', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/6/6d/Flag_of_Saint_Vincent_and_the_Grenadines.svg/40px-Flag_of_Saint_Vincent_and_the_Grenadines.svg.png',ko:'\uC138\uC778\uD2B8\uBE48\uC13C\uD2B8 \uADF8\uB808\uB098\uB518', num:670,en:'Saint Vincent and the Grenadines'} },\n [IOS3166_1_Code.KNA]: { description: '', data: {emoji:'\uD83C\uDDF0\uD83C\uDDF3', alpha2: 'KN', alpha3:'KNA', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/f/fe/Flag_of_Saint_Kitts_and_Nevis.svg/22px-Flag_of_Saint_Kitts_and_Nevis.svg.png',ko:'\uC138\uC778\uD2B8\uD0A4\uCE20 \uB124\uBE44\uC2A4', num:659,en:'Saint Kitts and Nevis'} },\n [IOS3166_1_Code.SHN]: { description: '', data: {emoji:'\uD83C\uDDF8\uD83C\uDDED', alpha2: 'SH', alpha3:'SHN', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/0/00/Flag_of_Saint_Helena.svg/40px-Flag_of_Saint_Helena.svg.png',ko:'\uC138\uC778\uD2B8\uD5EC\uB808\uB098', num:654,en:'Saint Helena'} },\n [IOS3166_1_Code.SOM]: { description: '', data: {emoji:'\uD83C\uDDF8\uD83C\uDDF4', alpha2: 'SO', alpha3:'SOM', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/a/a0/Flag_of_Somalia.svg/22px-Flag_of_Somalia.svg.png',ko:'\uC18C\uB9D0\uB9AC\uC544', num:706,en:'Somalia'} },\n [IOS3166_1_Code.SLB]: { description: '', data: {emoji:'\uD83C\uDDF8\uD83C\uDDE7', alpha2: 'SB', alpha3:'SLB', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/7/74/Flag_of_the_Solomon_Islands.svg/40px-Flag_of_the_Solomon_Islands.svg.png',ko:'\uC194\uB85C\uBAAC \uC81C\uB3C4', num:90,en:'Solomon Islands'} },\n [IOS3166_1_Code.SDN]: { description: '', data: {emoji:'\uD83C\uDDF8\uD83C\uDDE9', alpha2: 'SD', alpha3:'SDN', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/0/01/Flag_of_Sudan.svg/22px-Flag_of_Sudan.svg.png',ko:'\uC218\uB2E8', num:729,en:'means'} },\n [IOS3166_1_Code.SUR]: { description: '', data: {emoji:'\uD83C\uDDF8\uD83C\uDDF7', alpha2: 'SR', alpha3:'SUR', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/6/60/Flag_of_Suriname.svg/40px-Flag_of_Suriname.svg.png',ko:'\uC218\uB9AC\uB0A8', num:740,en:'Suriname'} },\n [IOS3166_1_Code.LKA]: { description: '', data: {emoji:'\uD83C\uDDF1\uD83C\uDDF0', alpha2: 'LK', alpha3:'LKA', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/1/11/Flag_of_Sri_Lanka.svg/40px-Flag_of_Sri_Lanka.svg.png',ko:'\uC2A4\uB9AC\uB791\uCE74', num:144,en:'Sri Lanka'} },\n [IOS3166_1_Code.SJM]: { description: '', data: {emoji:'\uD83C\uDDF8\uD83C\uDDEF', alpha2: 'SJ', alpha3:'SJM', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/c/c9/Proposed_flag_of_Svalbard%2C_Norway_%281930%29.svg/22px-Proposed_flag_of_Svalbard%2C_Norway_%281930%29.svg.png',ko:'\uC2A4\uBC1C\uBC14\uB974 \uC580\uB9C8\uC60C', num:744,en:'Svalbard Janmayen'} },\n [IOS3166_1_Code.SWE]: { description: '', data: {emoji:'\uD83C\uDDF8\uD83C\uDDEA', alpha2: 'SE', alpha3:'SWE', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/4/4c/Flag_of_Sweden.svg/40px-Flag_of_Sweden.svg.png',ko:'\uC2A4\uC6E8\uB374', num:752,en:'Sweden'} },\n [IOS3166_1_Code.CHE]: { description: '', data: {emoji:'\uD83C\uDDE8\uD83C\uDDED', alpha2: 'CH', alpha3:'CHE', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/f/f3/Flag_of_Switzerland.svg/20px-Flag_of_Switzerland.svg.png',ko:'\uC2A4\uC704\uC2A4', num:756,en:'Switzerland'} },\n [IOS3166_1_Code.ESP]: { description: '', data: {emoji:'\uD83C\uDDEA\uD83C\uDDF8', alpha2: 'ES', alpha3:'ESP', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/9/9a/Flag_of_Spain.svg/40px-Flag_of_Spain.svg.png',ko:'\uC2A4\uD398\uC778', num:724,en:'Spain'} },\n [IOS3166_1_Code.SVK]: { description: '', data: {emoji:'\uD83C\uDDF8\uD83C\uDDF0', alpha2: 'SK', alpha3:'SVK', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/e/e6/Flag_of_Slovakia.svg/22px-Flag_of_Slovakia.svg.png',ko:'\uC2AC\uB85C\uBC14\uD0A4\uC544', num:703,en:'Slovakia'} },\n [IOS3166_1_Code.SVN]: { description: '', data: {emoji:'\uD83C\uDDF8\uD83C\uDDEE', alpha2: 'SI', alpha3:'SVN', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/f/f0/Flag_of_Slovenia.svg/22px-Flag_of_Slovenia.svg.png',ko:'\uC2AC\uB85C\uBCA0\uB2C8\uC544', num:705,en:'Slovenia'} },\n [IOS3166_1_Code.SYR]: { description: '', data: {emoji:'\uD83C\uDDF8\uD83C\uDDFE', alpha2: 'SY', alpha3:'SYR', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/1/14/Flag_of_the_Syrian_revolution.svg/40px-Flag_of_the_Syrian_revolution.svg.png',ko:'\uC2DC\uB9AC\uC544', num:760,en:'Syria'} },\n [IOS3166_1_Code.SLE]: { description: '', data: {emoji:'\uD83C\uDDF8\uD83C\uDDF1', alpha2: 'SL', alpha3:'SLE', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/1/17/Flag_of_Sierra_Leone.svg/22px-Flag_of_Sierra_Leone.svg.png',ko:'\uC2DC\uC5D0\uB77C\uB9AC\uC628', num:694,en:'Sierra Leone'} },\n [IOS3166_1_Code.SXM]: { description: '', data: {emoji:'\uD83C\uDDF8\uD83C\uDDFD', alpha2: 'SX', alpha3:'SXM', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/d/d3/Flag_of_Sint_Maarten.svg/40px-Flag_of_Sint_Maarten.svg.png',ko:'\uC2E0\uD2B8\uB9C8\uB974\uD134', num:534,en:'Sint Marton'} },\n [IOS3166_1_Code.SGP]: { description: '', data: {emoji:'\uD83C\uDDF8\uD83C\uDDEC', alpha2: 'SG', alpha3:'SGP', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/4/48/Flag_of_Singapore.svg/22px-Flag_of_Singapore.svg.png',ko:'\uC2F1\uAC00\uD3EC\uB974', num:702,en:'Singapore'} },\n [IOS3166_1_Code.ARE]: { description: '', data: {emoji:'\uD83C\uDDE6\uD83C\uDDEA', alpha2: 'AE', alpha3:'ARE', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/c/cb/Flag_of_the_United_Arab_Emirates.svg/40px-Flag_of_the_United_Arab_Emirates.svg.png',ko:'\uC544\uB78D\uC5D0\uBBF8\uB9AC\uD2B8', num:784,en:'United Arab Emirates'} },\n [IOS3166_1_Code.ABW]: { description: '', data: {emoji:'\uD83C\uDDE6\uD83C\uDDFC', alpha2: 'AW', alpha3:'ABW', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/f/f6/Flag_of_Aruba.svg/22px-Flag_of_Aruba.svg.png',ko:'\uC544\uB8E8\uBC14', num:533,en:'Aruba'} },\n [IOS3166_1_Code.ARM]: { description: '', data: {emoji:'\uD83C\uDDE6\uD83C\uDDF2', alpha2: 'AM', alpha3:'ARM', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/2/2f/Flag_of_Armenia.svg/40px-Flag_of_Armenia.svg.png',ko:'\uC544\uB974\uBA54\uB2C8\uC544', num:51,en:'Armenia'} },\n [IOS3166_1_Code.ARG]: { description: '', data: {emoji:'\uD83C\uDDE6\uD83C\uDDF7', alpha2: 'AR', alpha3:'ARG', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/1/1a/Flag_of_Argentina.svg/22px-Flag_of_Argentina.svg.png',ko:'\uC544\uB974\uD5E8\uD2F0\uB098', num:32,en:'Argentina'} },\n [IOS3166_1_Code.ASM]: { description: '', data: {emoji:'\uD83C\uDDE6\uD83C\uDDF8', alpha2: 'AS', alpha3:'ASM', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/8/87/Flag_of_American_Samoa.svg/40px-Flag_of_American_Samoa.svg.png',ko:'\uC544\uBA54\uB9AC\uCE78\uC0AC\uBAA8\uC544', num:16,en:'American Samoa'} },\n [IOS3166_1_Code.ISL]: { description: '', data: {emoji:'\uD83C\uDDEE\uD83C\uDDF8', alpha2: 'IS', alpha3:'ISL', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/c/ce/Flag_of_Iceland.svg/40px-Flag_of_Iceland.svg.png',ko:'\uC544\uC774\uC2AC\uB780\uB4DC', num:352,en:'Iceland'} },\n [IOS3166_1_Code.HTI]: { description: '', data: {emoji:'\uD83C\uDDED\uD83C\uDDF9', alpha2: 'HT', alpha3:'HTI', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/5/56/Flag_of_Haiti.svg/40px-Flag_of_Haiti.svg.png',ko:'\uC544\uC774\uD2F0', num:332,en:'Haiti'} },\n [IOS3166_1_Code.IRL]: { description: '', data: {emoji:'\uD83C\uDDEE\uD83C\uDDEA', alpha2: 'IE', alpha3:'IRL', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/4/45/Flag_of_Ireland.svg/40px-Flag_of_Ireland.svg.png',ko:'\uC544\uC77C\uB79C\uB4DC', num:372,en:'Ireland'} },\n [IOS3166_1_Code.AZE]: { description: '', data: {emoji:'\uD83C\uDDE6\uD83C\uDDFF', alpha2: 'AZ', alpha3:'AZE', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Flag_of_Azerbaijan.svg/40px-Flag_of_Azerbaijan.svg.png',ko:'\uC544\uC81C\uB974\uBC14\uC774\uC794', num:31,en:'Azerbaijan'} },\n [IOS3166_1_Code.AFG]: { description: '', data: {emoji:'\uD83C\uDDE6\uD83C\uDDEB', alpha2: 'AF', alpha3:'AFG', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/5/5c/Flag_of_the_Taliban.svg/40px-Flag_of_the_Taliban.svg.png',ko:'\uC544\uD504\uAC00\uB2C8\uC2A4\uD0C4', num:4,en:'Afghanistan'} },\n [IOS3166_1_Code.AND]: { description: '', data: {emoji:'\uD83C\uDDE6\uD83C\uDDE9', alpha2: 'AD', alpha3:'AND', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/1/19/Flag_of_Andorra.svg/22px-Flag_of_Andorra.svg.png',ko:'\uC548\uB3C4\uB77C', num:20,en:'Andorra'} },\n [IOS3166_1_Code.ALB]: { description: '', data: {emoji:'\uD83C\uDDE6\uD83C\uDDF1', alpha2: 'AL', alpha3:'ALB', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/3/36/Flag_of_Albania.svg/40px-Flag_of_Albania.svg.png',ko:'\uC54C\uBC14\uB2C8\uC544', num:8,en:'Albania'} },\n [IOS3166_1_Code.DZA]: { description: '', data: {emoji:'\uD83C\uDDE9\uD83C\uDDFF', alpha2: 'DZ', alpha3:'DZA', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/7/77/Flag_of_Algeria.svg/40px-Flag_of_Algeria.svg.png',ko:'\uC54C\uC81C\uB9AC', num:12,en:'Algeria'} },\n [IOS3166_1_Code.AGO]: { description: '', data: {emoji:'\uD83C\uDDE6\uD83C\uDDF4', alpha2: 'AO', alpha3:'AGO', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/9/9d/Flag_of_Angola.svg/22px-Flag_of_Angola.svg.png',ko:'\uC559\uACE8\uB77C', num:24,en:'Angola'} },\n [IOS3166_1_Code.ATG]: { description: '', data: {emoji:'\uD83C\uDDE6\uD83C\uDDEC', alpha2: 'AG', alpha3:'ATG', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/8/89/Flag_of_Antigua_and_Barbuda.svg/22px-Flag_of_Antigua_and_Barbuda.svg.png',ko:'\uC564\uD2F0\uAC00 \uBC14\uBD80\uB2E4', num:28,en:'be full of antis'} },\n [IOS3166_1_Code.AIA]: { description: '', data: {emoji:'\uD83C\uDDE6\uD83C\uDDEE', alpha2: 'AI', alpha3:'AIA', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/b/b4/Flag_of_Anguilla.svg/40px-Flag_of_Anguilla.svg.png',ko:'\uC575\uADC8\uB77C', num:660,en:'Anguilla'} },\n [IOS3166_1_Code.ERI]: { description: '', data: {emoji:'\uD83C\uDDEA\uD83C\uDDF7', alpha2: 'ER', alpha3:'ERI', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/2/29/Flag_of_Eritrea.svg/40px-Flag_of_Eritrea.svg.png',ko:'\uC5D0\uB9AC\uD2B8\uB808\uC544', num:232,en:'Eritrea'} },\n [IOS3166_1_Code.SWZ]: { description: '', data: {emoji:'\uD83C\uDDF8\uD83C\uDDFF', alpha2: 'SZ', alpha3:'SWZ', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Flag_of_Eswatini.svg/22px-Flag_of_Eswatini.svg.png',ko:'\uC5D0\uC2A4\uC640\uD2F0\uB2C8', num:748,en:'Eswatini'} },\n [IOS3166_1_Code.EST]: { description: '', data: {emoji:'\uD83C\uDDEA\uD83C\uDDEA', alpha2: 'EE', alpha3:'EST', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/8/8f/Flag_of_Estonia.svg/22px-Flag_of_Estonia.svg.png',ko:'\uC5D0\uC2A4\uD1A0\uB2C8\uC544', num:233,en:'Estonia'} },\n [IOS3166_1_Code.ECU]: { description: '', data: {emoji:'\uD83C\uDDEA\uD83C\uDDE8', alpha2: 'EC', alpha3:'ECU', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/e/e8/Flag_of_Ecuador.svg/40px-Flag_of_Ecuador.svg.png',ko:'\uC5D0\uCF70\uB3C4\uB974', num:218,en:'Ecuador'} },\n [IOS3166_1_Code.ETH]: { description: '', data: {emoji:'\uD83C\uDDEA\uD83C\uDDF9', alpha2: 'ET', alpha3:'ETH', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/7/71/Flag_of_Ethiopia.svg/22px-Flag_of_Ethiopia.svg.png',ko:'\uC5D0\uD2F0\uC624\uD53C\uC544', num:231,en:'Ethiopia'} },\n [IOS3166_1_Code.SLV]: { description: '', data: {emoji:'\uD83C\uDDF8\uD83C\uDDFB', alpha2: 'SV', alpha3:'SLV', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/3/34/Flag_of_El_Salvador.svg/22px-Flag_of_El_Salvador.svg.png',ko:'\uC5D8\uC0B4\uBC14\uB3C4\uB974', num:222,en:'El Salvador'} },\n [IOS3166_1_Code.GBR]: { description: '', data: {emoji:'\uD83C\uDDEC\uD83C\uDDE7', alpha2: 'GB', alpha3:'GBR', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/a/a5/Flag_of_the_United_Kingdom_%281-2%29.svg/40px-Flag_of_the_United_Kingdom_%281-2%29.svg.png',ko:'\uC601\uAD6D', num:826,en:'the United Kingdom'} },\n [IOS3166_1_Code.VGB]: { description: '', data: {emoji:'\uD83C\uDDFB\uD83C\uDDEC', alpha2: 'VG', alpha3:'VGB', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/4/42/Flag_of_the_British_Virgin_Islands.svg/40px-Flag_of_the_British_Virgin_Islands.svg.png',ko:'\uC601\uAD6D\uB839 \uBC84\uC9C4\uC544\uC77C\uB79C\uB4DC', num:92,en:'British Virgin Islands'} },\n [IOS3166_1_Code.IOT]: { description: '', data: {emoji:'\uD83C\uDDEE\uD83C\uDDF4', alpha2: 'IO', alpha3:'IOT', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/6/65/Flag_of_the_Commissioner_of_the_British_Indian_Ocean_Territory.svg/22px-Flag_of_the_Commissioner_of_the_British_Indian_Ocean_Territory.svg.png',ko:'\uC601\uAD6D\uB839 \uC778\uB3C4\uC591 \uC9C0\uC5ED', num:86,en:'the British Indian Ocean region'} },\n [IOS3166_1_Code.YEM]: { description: '', data: {emoji:'\uD83C\uDDFE\uD83C\uDDEA', alpha2: 'YE', alpha3:'YEM', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/8/89/Flag_of_Yemen.svg/40px-Flag_of_Yemen.svg.png',ko:'\uC608\uBA58', num:887,en:'Yemen'} },\n [IOS3166_1_Code.OMN]: { description: '', data: {emoji:'\uD83C\uDDF4\uD83C\uDDF2', alpha2: 'OM', alpha3:'OMN', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Flag_of_Oman.svg/40px-Flag_of_Oman.svg.png',ko:'\uC624\uB9CC', num:512,en:'arrogance'} },\n [IOS3166_1_Code.AUS]: { description: '', data: {emoji:'\uD83C\uDDE6\uD83C\uDDFA', alpha2: 'AU', alpha3:'AUS', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/b/b9/Flag_of_Australia.svg/40px-Flag_of_Australia.svg.png',ko:'\uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544', num:36,en:'Australia'} },\n [IOS3166_1_Code.AUT]: { description: '', data: {emoji:'\uD83C\uDDE6\uD83C\uDDF9', alpha2: 'AT', alpha3:'AUT', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/4/41/Flag_of_Austria.svg/22px-Flag_of_Austria.svg.png',ko:'\uC624\uC2A4\uD2B8\uB9AC\uC544', num:40,en:'Austria'} },\n [IOS3166_1_Code.HND]: { description: '', data: {emoji:'\uD83C\uDDED\uD83C\uDDF3', alpha2: 'HN', alpha3:'HND', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/8/82/Flag_of_Honduras.svg/40px-Flag_of_Honduras.svg.png',ko:'\uC628\uB450\uB77C\uC2A4', num:340,en:'Honduras'} },\n [IOS3166_1_Code.ALA]: { description: '', data: {emoji:'\uD83C\uDDE6\uD83C\uDDFD', alpha2: 'AX', alpha3:'ALA', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/5/52/Flag_of_%C3%85land.svg/40px-Flag_of_%C3%85land.svg.png',ko:'\uC62C\uB780\uB4DC \uC81C\uB3C4', num:248,en:'the Orland Islands'} },\n [IOS3166_1_Code.JOR]: { description: '', data: {emoji:'\uD83C\uDDEF\uD83C\uDDF4', alpha2: 'JO', alpha3:'JOR', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/c/c0/Flag_of_Jordan.svg/40px-Flag_of_Jordan.svg.png',ko:'\uC694\uB974\uB2E8', num:400,en:'Jordan'} },\n [IOS3166_1_Code.UGA]: { description: '', data: {emoji:'\uD83C\uDDFA\uD83C\uDDEC', alpha2: 'UG', alpha3:'UGA', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/4/4e/Flag_of_Uganda.svg/22px-Flag_of_Uganda.svg.png',ko:'\uC6B0\uAC04\uB2E4', num:800,en:'Uganda'} },\n [IOS3166_1_Code.URY]: { description: '', data: {emoji:'\uD83C\uDDFA\uD83C\uDDFE', alpha2: 'UY', alpha3:'URY', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/f/fe/Flag_of_Uruguay.svg/22px-Flag_of_Uruguay.svg.png',ko:'\uC6B0\uB8E8\uACFC\uC774', num:858,en:'Uruguay'} },\n [IOS3166_1_Code.UZB]: { description: '', data: {emoji:'\uD83C\uDDFA\uD83C\uDDFF', alpha2: 'UZ', alpha3:'UZB', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/8/84/Flag_of_Uzbekistan.svg/40px-Flag_of_Uzbekistan.svg.png',ko:'\uC6B0\uC988\uBCA0\uD0A4\uC2A4\uD0C4', num:860,en:'Uzbekistan'} },\n [IOS3166_1_Code.UKR]: { description: '', data: {emoji:'\uD83C\uDDFA\uD83C\uDDE6', alpha2: 'UA', alpha3:'UKR', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/4/49/Flag_of_Ukraine.svg/22px-Flag_of_Ukraine.svg.png',ko:'\uC6B0\uD06C\uB77C\uC774\uB098', num:804,en:'Ukraine'} },\n [IOS3166_1_Code.WLF]: { description: '', data: {emoji:'\uD83C\uDDFC\uD83C\uDDEB', alpha2: 'WF', alpha3:'WLF', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/b/b5/Flag_of_France_%282020%E2%80%93present%29.svg/22px-Flag_of_France_%282020%E2%80%93present%29.svg.png',ko:'\uC648\uB9AC\uC2A4 \uD478\uD22C\uB098', num:876,en:'Wallis Putuna'} },\n [IOS3166_1_Code.IRQ]: { description: '', data: {emoji:'\uD83C\uDDEE\uD83C\uDDF6', alpha2: 'IQ', alpha3:'IRQ', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/f/f6/Flag_of_Iraq.svg/40px-Flag_of_Iraq.svg.png',ko:'\uC774\uB77C\uD06C', num:368,en:'Iraq'} },\n [IOS3166_1_Code.IRN]: { description: '', data: {emoji:'\uD83C\uDDEE\uD83C\uDDF7', alpha2: 'IR', alpha3:'IRN', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/c/ca/Flag_of_Iran.svg/40px-Flag_of_Iran.svg.png',ko:'\uC774\uB780', num:364,en:'Iran'} },\n [IOS3166_1_Code.ISR]: { description: '', data: {emoji:'\uD83C\uDDEE\uD83C\uDDF1', alpha2: 'IL', alpha3:'ISR', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/d/d4/Flag_of_Israel.svg/22px-Flag_of_Israel.svg.png',ko:'\uC774\uC2A4\uB77C\uC5D8', num:376,en:'Israel'} },\n [IOS3166_1_Code.EGY]: { description: '', data: {emoji:'\uD83C\uDDEA\uD83C\uDDEC', alpha2: 'EG', alpha3:'EGY', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/f/fe/Flag_of_Egypt.svg/22px-Flag_of_Egypt.svg.png',ko:'\uC774\uC9D1\uD2B8', num:818,en:'Egypt.'} },\n [IOS3166_1_Code.ITA]: { description: '', data: {emoji:'\uD83C\uDDEE\uD83C\uDDF9', alpha2: 'IT', alpha3:'ITA', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/0/03/Flag_of_Italy.svg/40px-Flag_of_Italy.svg.png',ko:'\uC774\uD0C8\uB9AC\uC544', num:380,en:'Italy'} },\n [IOS3166_1_Code.IND]: { description: '', data: {emoji:'\uD83C\uDDEE\uD83C\uDDF3', alpha2: 'IN', alpha3:'IND', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/4/41/Flag_of_India.svg/22px-Flag_of_India.svg.png',ko:'\uC778\uB3C4', num:356,en:'India'} },\n [IOS3166_1_Code.IDN]: { description: '', data: {emoji:'\uD83C\uDDEE\uD83C\uDDE9', alpha2: 'ID', alpha3:'IDN', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/9/9f/Flag_of_Indonesia.svg/22px-Flag_of_Indonesia.svg.png',ko:'\uC778\uB3C4\uB124\uC2DC\uC544', num:360,en:'Indonesia'} },\n [IOS3166_1_Code.JPN]: { description: '', data: {emoji:'\uD83C\uDDEF\uD83C\uDDF5', alpha2: 'JP', alpha3:'JPN', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/Flag_of_Japan.svg/40px-Flag_of_Japan.svg.png',ko:'\uC77C\uBCF8', num:392,en:'Japan'} },\n [IOS3166_1_Code.JAM]: { description: '', data: {emoji:'\uD83C\uDDEF\uD83C\uDDF2', alpha2: 'JM', alpha3:'JAM', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/0/0a/Flag_of_Jamaica.svg/40px-Flag_of_Jamaica.svg.png',ko:'\uC790\uBA54\uC774\uCE74', num:388,en:'Jamaica'} },\n [IOS3166_1_Code.ZMB]: { description: '', data: {emoji:'\uD83C\uDDFF\uD83C\uDDF2', alpha2: 'ZM', alpha3:'ZMB', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/0/06/Flag_of_Zambia.svg/40px-Flag_of_Zambia.svg.png',ko:'\uC7A0\uBE44\uC544', num:894,en:'Zambia'} },\n [IOS3166_1_Code.JEY]: { description: '', data: {emoji:'\uD83C\uDDEF\uD83C\uDDEA', alpha2: 'JE', alpha3:'JEY', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Flag_of_Jersey.svg/22px-Flag_of_Jersey.svg.png',ko:'\uC800\uC9C0\uC12C', num:832,en:'Jersey Island'} },\n [IOS3166_1_Code.GNQ]: { description: '', data: {emoji:'\uD83C\uDDEC\uD83C\uDDF6', alpha2: 'GQ', alpha3:'GNQ', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/3/31/Flag_of_Equatorial_Guinea.svg/40px-Flag_of_Equatorial_Guinea.svg.png',ko:'\uC801\uB3C4 \uAE30\uB2C8', num:226,en:'Equatorial Guinea'} },\n [IOS3166_1_Code.PRK]: { description: '', data: {emoji:'\uD83C\uDDF0\uD83C\uDDF5', alpha2: 'KP', alpha3:'PRK', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/5/51/Flag_of_North_Korea.svg/40px-Flag_of_North_Korea.svg.png',ko:'\uC870\uC120\uBBFC\uC8FC\uC8FC\uC758\uC778\uBBFC\uACF5\uD654\uAD6D', num:408,en:'Democratic People\\'s Republic of Korea'} },\n [IOS3166_1_Code.GEO]: { description: '', data: {emoji:'\uD83C\uDDEC\uD83C\uDDEA', alpha2: 'GE', alpha3:'GEO', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/0/0f/Flag_of_Georgia.svg/40px-Flag_of_Georgia.svg.png',ko:'\uC870\uC9C0\uC544', num:268,en:'Georgia'} },\n [IOS3166_1_Code.CHN]: { description: '', data: {emoji:'\uD83C\uDDE8\uD83C\uDDF3', alpha2: 'CN', alpha3:'CHN', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/f/fa/Flag_of_the_People%27s_Republic_of_China.svg/22px-Flag_of_the_People%27s_Republic_of_China.svg.png',ko:'\uC911\uAD6D', num:156,en:'China'} },\n [IOS3166_1_Code.CAF]: { description: '', data: {emoji:'\uD83C\uDDE8\uD83C\uDDEB', alpha2: 'CF', alpha3:'CAF', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/6/6f/Flag_of_the_Central_African_Republic.svg/22px-Flag_of_the_Central_African_Republic.svg.png',ko:'\uC911\uC559\uC544\uD504\uB9AC\uCE74 \uACF5\uD654\uAD6D', num:140,en:'Central African Republic'} },\n [IOS3166_1_Code.DJI]: { description: '', data: {emoji:'\uD83C\uDDE9\uD83C\uDDEF', alpha2: 'DJ', alpha3:'DJI', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/3/34/Flag_of_Djibouti.svg/40px-Flag_of_Djibouti.svg.png',ko:'\uC9C0\uBD80\uD2F0', num:262,en:'Djibouti'} },\n [IOS3166_1_Code.GIB]: { description: '', data: {emoji:'\uD83C\uDDEC\uD83C\uDDEE', alpha2: 'GI', alpha3:'GIB', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/0/02/Flag_of_Gibraltar.svg/40px-Flag_of_Gibraltar.svg.png',ko:'\uC9C0\uBE0C\uB864\uD130', num:292,en:'Gibraltar'} },\n [IOS3166_1_Code.ZWE]: { description: '', data: {emoji:'\uD83C\uDDFF\uD83C\uDDFC', alpha2: 'ZW', alpha3:'ZWE', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/6/6a/Flag_of_Zimbabwe.svg/40px-Flag_of_Zimbabwe.svg.png',ko:'\uC9D0\uBC14\uBE0C\uC6E8', num:716,en:'Zimbabwe'} },\n [IOS3166_1_Code.TCD]: { description: '', data: {emoji:'\uD83C\uDDF9\uD83C\uDDE9', alpha2: 'TD', alpha3:'TCD', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/4/4b/Flag_of_Chad.svg/40px-Flag_of_Chad.svg.png',ko:'\uCC28\uB4DC', num:148,en:'Chad'} },\n [IOS3166_1_Code.CZE]: { description: '', data: {emoji:'\uD83C\uDDE8\uD83C\uDDFF', alpha2: 'CZ', alpha3:'CZE', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/c/cb/Flag_of_the_Czech_Republic.svg/40px-Flag_of_the_Czech_Republic.svg.png',ko:'\uCCB4\uCF54', num:203,en:'Czech Republic'} },\n [IOS3166_1_Code.CHL]: { description: '', data: {emoji:'\uD83C\uDDE8\uD83C\uDDF1', alpha2: 'CL', alpha3:'CHL', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/7/78/Flag_of_Chile.svg/40px-Flag_of_Chile.svg.png',ko:'\uCE60\uB808', num:152,en:'Chile'} },\n [IOS3166_1_Code.CMR]: { description: '', data: {emoji:'\uD83C\uDDE8\uD83C\uDDF2', alpha2: 'CM', alpha3:'CMR', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/4/4f/Flag_of_Cameroon.svg/40px-Flag_of_Cameroon.svg.png',ko:'\uCE74\uBA54\uB8EC', num:120,en:'Cameroon'} },\n [IOS3166_1_Code.CPV]: { description: '', data: {emoji:'\uD83C\uDDE8\uD83C\uDDFB', alpha2: 'CV', alpha3:'CPV', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/3/38/Flag_of_Cape_Verde.svg/40px-Flag_of_Cape_Verde.svg.png',ko:'\uCE74\uBCF4\uBCA0\uB974\uB370', num:132,en:'Cabo Verde'} },\n [IOS3166_1_Code.KAZ]: { description: '', data: {emoji:'\uD83C\uDDF0\uD83C\uDDFF', alpha2: 'KZ', alpha3:'KAZ', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/d/d3/Flag_of_Kazakhstan.svg/40px-Flag_of_Kazakhstan.svg.png',ko:'\uCE74\uC790\uD750\uC2A4\uD0C4', num:398,en:'Kazakhstan'} },\n [IOS3166_1_Code.QAT]: { description: '', data: {emoji:'\uD83C\uDDF6\uD83C\uDDE6', alpha2: 'QA', alpha3:'QAT', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/6/65/Flag_of_Qatar.svg/22px-Flag_of_Qatar.svg.png',ko:'\uCE74\uD0C0\uB974', num:634,en:'Qatar'} },\n [IOS3166_1_Code.KHM]: { description: '', data: {emoji:'\uD83C\uDDF0\uD83C\uDDED', alpha2: 'KH', alpha3:'KHM', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/8/83/Flag_of_Cambodia.svg/22px-Flag_of_Cambodia.svg.png',ko:'\uCE84\uBCF4\uB514\uC544', num:116,en:'Cambodia'} },\n [IOS3166_1_Code.CAN]: { description: '', data: {emoji:'\uD83C\uDDE8\uD83C\uDDE6', alpha2: 'CA', alpha3:'CAN', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/c/cf/Flag_of_Canada.svg/22px-Flag_of_Canada.svg.png',ko:'\uCE90\uB098\uB2E4', num:124,en:'Canada'} },\n [IOS3166_1_Code.KEN]: { description: '', data: {emoji:'\uD83C\uDDF0\uD83C\uDDEA', alpha2: 'KE', alpha3:'KEN', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/4/49/Flag_of_Kenya.svg/40px-Flag_of_Kenya.svg.png',ko:'\uCF00\uB0D0', num:404,en:'Kenya'} },\n [IOS3166_1_Code.CYM]: { description: '', data: {emoji:'\uD83C\uDDF0\uD83C\uDDFE', alpha2: 'KY', alpha3:'CYM', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/0/0f/Flag_of_the_Cayman_Islands.svg/22px-Flag_of_the_Cayman_Islands.svg.png',ko:'\uCF00\uC774\uB9E8 \uC81C\uB3C4', num:136,en:'Cayman Islands'} },\n [IOS3166_1_Code.COM]: { description: '', data: {emoji:'\uD83C\uDDF0\uD83C\uDDF2', alpha2: 'KM', alpha3:'COM', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/9/94/Flag_of_the_Comoros.svg/40px-Flag_of_the_Comoros.svg.png',ko:'\uCF54\uBAA8\uB85C', num:174,en:'Comoros'} },\n [IOS3166_1_Code.CRI]: { description: '', data: {emoji:'\uD83C\uDDE8\uD83C\uDDF7', alpha2: 'CR', alpha3:'CRI', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/f/f2/Flag_of_Costa_Rica.svg/40px-Flag_of_Costa_Rica.svg.png',ko:'\uCF54\uC2A4\uD0C0\uB9AC\uCE74', num:188,en:'Costa Rica'} },\n [IOS3166_1_Code.CCK]: { description: '', data: {emoji:'\uD83C\uDDE8\uD83C\uDDE8', alpha2: 'CC', alpha3:'CCK', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/7/74/Flag_of_the_Cocos_%28Keeling%29_Islands.svg/40px-Flag_of_the_Cocos_%28Keeling%29_Islands.svg.png',ko:'\uCF54\uCF54\uC2A4 \uC81C\uB3C4', num:166,en:'Cocos Islands'} },\n [IOS3166_1_Code.CIV]: { description: '', data: {emoji:'\uD83C\uDDE8\uD83C\uDDEE', alpha2: 'CI', alpha3:'CIV', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/f/fe/Flag_of_C%C3%B4te_d%27Ivoire.svg/40px-Flag_of_C%C3%B4te_d%27Ivoire.svg.png',ko:'\uCF54\uD2B8\uB514\uBD80\uC544\uB974', num:384,en:'Ivory Coast'} },\n [IOS3166_1_Code.COL]: { description: '', data: {emoji:'\uD83C\uDDE8\uD83C\uDDF4', alpha2: 'CO', alpha3:'COL', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/2/21/Flag_of_Colombia.svg/40px-Flag_of_Colombia.svg.png',ko:'\uCF5C\uB86C\uBE44\uC544', num:170,en:'Colombia'} },\n [IOS3166_1_Code.COG]: { description: '', data: {emoji:'\uD83C\uDDE8\uD83C\uDDEC', alpha2: 'CG', alpha3:'COG', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/9/92/Flag_of_the_Republic_of_the_Congo.svg/40px-Flag_of_the_Republic_of_the_Congo.svg.png',ko:'\uCF69\uACE0 \uACF5\uD654\uAD6D', num:178,en:'Republic of Congo'} },\n [IOS3166_1_Code.COD]: { description: '', data: {emoji:'\uD83C\uDDE8\uD83C\uDDE9', alpha2: 'CD', alpha3:'COD', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/6/6f/Flag_of_the_Democratic_Republic_of_the_Congo.svg/22px-Flag_of_the_Democratic_Republic_of_the_Congo.svg.png',ko:'\uCF69\uACE0 \uBBFC\uC8FC \uACF5\uD654\uAD6D', num:180,en:'Democratic Republic of the Congo'} },\n [IOS3166_1_Code.CUB]: { description: '', data: {emoji:'\uD83C\uDDE8\uD83C\uDDFA', alpha2: 'CU', alpha3:'CUB', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/b/bd/Flag_of_Cuba.svg/40px-Flag_of_Cuba.svg.png',ko:'\uCFE0\uBC14', num:192,en:'Cuba'} },\n [IOS3166_1_Code.KWT]: { description: '', data: {emoji:'\uD83C\uDDF0\uD83C\uDDFC', alpha2: 'KW', alpha3:'KWT', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/a/aa/Flag_of_Kuwait.svg/40px-Flag_of_Kuwait.svg.png',ko:'\uCFE0\uC6E8\uC774\uD2B8', num:414,en:'Kuwait'} },\n [IOS3166_1_Code.COK]: { description: '', data: {emoji:'\uD83C\uDDE8\uD83C\uDDF0', alpha2: 'CK', alpha3:'COK', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/3/35/Flag_of_the_Cook_Islands.svg/40px-Flag_of_the_Cook_Islands.svg.png',ko:'\uCFE1 \uC81C\uB3C4', num:184,en:'Cook Islands'} },\n [IOS3166_1_Code.CUW]: { description: '', data: {emoji:'\uD83C\uDDE8\uD83C\uDDFC', alpha2: 'CW', alpha3:'CUW', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/b/b1/Flag_of_Cura%C3%A7ao.svg/40px-Flag_of_Cura%C3%A7ao.svg.png',ko:'\uD034\uB77C\uC18C', num:531,en:'Cura\u00E7ao'} },\n [IOS3166_1_Code.HRV]: { description: '', data: {emoji:'\uD83C\uDDED\uD83C\uDDF7', alpha2: 'HR', alpha3:'HRV', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/1/1b/Flag_of_Croatia.svg/40px-Flag_of_Croatia.svg.png',ko:'\uD06C\uB85C\uC544\uD2F0\uC544', num:191,en:'Croatia'} },\n [IOS3166_1_Code.CXR]: { description: '', data: {emoji:'\uD83C\uDDE8\uD83C\uDDFD', alpha2: 'CX', alpha3:'CXR', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/6/67/Flag_of_Christmas_Island.svg/22px-Flag_of_Christmas_Island.svg.png',ko:'\uD06C\uB9AC\uC2A4\uB9C8\uC2A4\uC12C', num:162,en:'Christmas Island'} },\n [IOS3166_1_Code.KGZ]: { description: '', data: {emoji:'\uD83C\uDDF0\uD83C\uDDEC', alpha2: 'KG', alpha3:'KGZ', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/c/c7/Flag_of_Kyrgyzstan.svg/22px-Flag_of_Kyrgyzstan.svg.png',ko:'\uD0A4\uB974\uAE30\uC2A4\uC2A4\uD0C4', num:417,en:'Kyrgyzstan'} },\n [IOS3166_1_Code.KIR]: { description: '', data: {emoji:'\uD83C\uDDF0\uD83C\uDDEE', alpha2: 'KI', alpha3:'KIR', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/d/d3/Flag_of_Kiribati.svg/22px-Flag_of_Kiribati.svg.png',ko:'\uD0A4\uB9AC\uBC14\uC2DC', num:296,en:'Kiribati'} },\n [IOS3166_1_Code.CYP]: { description: '', data: {emoji:'\uD83C\uDDE8\uD83C\uDDFE', alpha2: 'CY', alpha3:'CYP', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/d/d4/Flag_of_Cyprus.svg/22px-Flag_of_Cyprus.svg.png',ko:'\uD0A4\uD504\uB85C\uC2A4', num:196,en:'Cyprus'} },\n [IOS3166_1_Code.TWN]: { description: '', data: {emoji:'\uD83C\uDDF9\uD83C\uDDFC', alpha2: 'TW', alpha3:'TWN', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/7/72/Flag_of_the_Republic_of_China.svg/40px-Flag_of_the_Republic_of_China.svg.png',ko:'\uB300\uB9CC', num:158,en:'Taiwan'} },\n [IOS3166_1_Code.TJK]: { description: '', data: {emoji:'\uD83C\uDDF9\uD83C\uDDEF', alpha2: 'TJ', alpha3:'TJK', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/d/d0/Flag_of_Tajikistan.svg/40px-Flag_of_Tajikistan.svg.png',ko:'\uD0C0\uC9C0\uD0A4\uC2A4\uD0C4', num:762,en:'Tajikistan'} },\n [IOS3166_1_Code.TZA]: { description: '', data: {emoji:'\uD83C\uDDF9\uD83C\uDDFF', alpha2: 'TZ', alpha3:'TZA', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/3/38/Flag_of_Tanzania.svg/40px-Flag_of_Tanzania.svg.png',ko:'\uD0C4\uC790\uB2C8\uC544', num:834,en:'Tanzania'} },\n [IOS3166_1_Code.THA]: { description: '', data: {emoji:'\uD83C\uDDF9\uD83C\uDDED', alpha2: 'TH', alpha3:'THA', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/a/a9/Flag_of_Thailand.svg/22px-Flag_of_Thailand.svg.png',ko:'\uD0DC\uAD6D', num:764,en:'Thailand'} },\n [IOS3166_1_Code.TCA]: { description: '', data: {emoji:'\uD83C\uDDF9\uD83C\uDDE8', alpha2: 'TC', alpha3:'TCA', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/a/a0/Flag_of_the_Turks_and_Caicos_Islands.svg/40px-Flag_of_the_Turks_and_Caicos_Islands.svg.png',ko:'\uD130\uD06C\uC2A4 \uCF00\uC774\uCEE4\uC2A4 \uC81C\uB3C4', num:796,en:'Turks and Caicos Islands'} },\n [IOS3166_1_Code.TUR]: { description: '', data: {emoji:'\uD83C\uDDF9\uD83C\uDDF7', alpha2: 'TR', alpha3:'TUR', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/b/b4/Flag_of_Turkey.svg/22px-Flag_of_Turkey.svg.png',ko:'\uD280\uB974\uD0A4\uC608', num:792,en:'Turkiye'} },\n [IOS3166_1_Code.TGO]: { description: '', data: {emoji:'\uD83C\uDDF9\uD83C\uDDEC', alpha2: 'TG', alpha3:'TGO', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/7/7a/Flag_of_Togo_%283-2%29.svg/40px-Flag_of_Togo_%283-2%29.svg.png',ko:'\uD1A0\uACE0', num:768,en:'Togo'} },\n [IOS3166_1_Code.TKL]: { description: '', data: {emoji:'\uD83C\uDDF9\uD83C\uDDF0', alpha2: 'TK', alpha3:'TKL', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/8/8e/Flag_of_Tokelau.svg/40px-Flag_of_Tokelau.svg.png',ko:'\uD1A0\uCF08\uB77C\uC6B0', num:772,en:'Tokelau'} },\n [IOS3166_1_Code.TON]: { description: '', data: {emoji:'\uD83C\uDDF9\uD83C\uDDF4', alpha2: 'TO', alpha3:'TON', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/9/9a/Flag_of_Tonga.svg/22px-Flag_of_Tonga.svg.png',ko:'\uD1B5\uAC00', num:776,en:'the whole house'} },\n [IOS3166_1_Code.TKM]: { description: '', data: {emoji:'\uD83C\uDDF9\uD83C\uDDF2', alpha2: 'TM', alpha3:'TKM', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/1/1b/Flag_of_Turkmenistan.svg/40px-Flag_of_Turkmenistan.svg.png',ko:'\uD22C\uB974\uD06C\uBA54\uB2C8\uC2A4\uD0C4', num:795,en:'Turkmenistan'} },\n [IOS3166_1_Code.TUV]: { description: '', data: {emoji:'\uD83C\uDDF9\uD83C\uDDFB', alpha2: 'TV', alpha3:'TUV', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/3/38/Flag_of_Tuvalu.svg/40px-Flag_of_Tuvalu.svg.png',ko:'\uD22C\uBC1C\uB8E8', num:798,en:'Tuvalu'} },\n [IOS3166_1_Code.TUN]: { description: '', data: {emoji:'\uD83C\uDDF9\uD83C\uDDF3', alpha2: 'TN', alpha3:'TUN', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/c/ce/Flag_of_Tunisia.svg/40px-Flag_of_Tunisia.svg.png',ko:'\uD280\uB2C8\uC9C0', num:788,en:'Tunisia'} },\n [IOS3166_1_Code.TTO]: { description: '', data: {emoji:'\uD83C\uDDF9\uD83C\uDDF9', alpha2: 'TT', alpha3:'TTO', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/6/64/Flag_of_Trinidad_and_Tobago.svg/40px-Flag_of_Trinidad_and_Tobago.svg.png',ko:'\uD2B8\uB9AC\uB2C8\uB2E4\uB4DC \uD1A0\uBC14\uACE0', num:780,en:'Trinidad and Tobago'} },\n [IOS3166_1_Code.PAN]: { description: '', data: {emoji:'\uD83C\uDDF5\uD83C\uDDE6', alpha2: 'PA', alpha3:'PAN', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/a/ab/Flag_of_Panama.svg/40px-Flag_of_Panama.svg.png',ko:'\uD30C\uB098\uB9C8', num:591,en:'Panama'} },\n [IOS3166_1_Code.PRY]: { description: '', data: {emoji:'\uD83C\uDDF5\uD83C\uDDFE', alpha2: 'PY', alpha3:'PRY', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/2/27/Flag_of_Paraguay.svg/40px-Flag_of_Paraguay.svg.png',ko:'\uD30C\uB77C\uACFC\uC774', num:600,en:'Paraguay'} },\n [IOS3166_1_Code.PAK]: { description: '', data: {emoji:'\uD83C\uDDF5\uD83C\uDDF0', alpha2: 'PK', alpha3:'PAK', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/3/32/Flag_of_Pakistan.svg/40px-Flag_of_Pakistan.svg.png',ko:'\uD30C\uD0A4\uC2A4\uD0C4', num:586,en:'Pakistan'} },\n [IOS3166_1_Code.PNG]: { description: '', data: {emoji:'\uD83C\uDDF5\uD83C\uDDEC', alpha2: 'PG', alpha3:'PNG', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/e/e3/Flag_of_Papua_New_Guinea.svg/22px-Flag_of_Papua_New_Guinea.svg.png',ko:'\uD30C\uD478\uC544\uB274\uAE30\uB2C8', num:598,en:'Papua New Guinea'} },\n [IOS3166_1_Code.PLW]: { description: '', data: {emoji:'\uD83C\uDDF5\uD83C\uDDFC', alpha2: 'PW', alpha3:'PLW', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/4/48/Flag_of_Palau.svg/22px-Flag_of_Palau.svg.png',ko:'\uD314\uB77C\uC6B0', num:585,en:'Palau'} },\n [IOS3166_1_Code.PSE]: { description: '', data: {emoji:'\uD83C\uDDF5\uD83C\uDDF8', alpha2: 'PS', alpha3:'PSE', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/0/00/Flag_of_Palestine.svg/40px-Flag_of_Palestine.svg.png',ko:'\uD314\uB808\uC2A4\uD0C0\uC778', num:275,en:'Palestine'} },\n [IOS3166_1_Code.FRO]: { description: '', data: {emoji:'\uD83C\uDDEB\uD83C\uDDF4', alpha2: 'FO', alpha3:'FRO', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/3/3c/Flag_of_the_Faroe_Islands.svg/40px-Flag_of_the_Faroe_Islands.svg.png',ko:'\uD398\uB85C \uC81C\uB3C4', num:234,en:'Faroe Islands'} },\n [IOS3166_1_Code.PER]: { description: '', data: {emoji:'\uD83C\uDDF5\uD83C\uDDEA', alpha2: 'PE', alpha3:'PER', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/c/cf/Flag_of_Peru.svg/40px-Flag_of_Peru.svg.png',ko:'\uD398\uB8E8', num:604,en:'Peru, Republic of'} },\n [IOS3166_1_Code.PRT]: { description: '', data: {emoji:'\uD83C\uDDF5\uD83C\uDDF9', alpha2: 'PT', alpha3:'PRT', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/5/5c/Flag_of_Portugal.svg/22px-Flag_of_Portugal.svg.png',ko:'\uD3EC\uB974\uD22C\uAC08', num:620,en:'Portugal'} },\n [IOS3166_1_Code.FLK]: { description: '', data: {emoji:'\uD83C\uDDEB\uD83C\uDDF0', alpha2: 'FK', alpha3:'FLK', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/8/83/Flag_of_the_Falkland_Islands.svg/40px-Flag_of_the_Falkland_Islands.svg.png',ko:'\uD3EC\uD074\uB79C\uB4DC \uC81C\uB3C4', num:238,en:'Falkland Islands'} },\n [IOS3166_1_Code.POL]: { description: '', data: {emoji:'\uD83C\uDDF5\uD83C\uDDF1', alpha2: 'PL', alpha3:'POL', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/1/12/Flag_of_Poland.svg/22px-Flag_of_Poland.svg.png',ko:'\uD3F4\uB780\uB4DC', num:616,en:'Poland'} },\n [IOS3166_1_Code.PRI]: { description: '', data: {emoji:'\uD83C\uDDF5\uD83C\uDDF7', alpha2: 'PR', alpha3:'PRI', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/2/28/Flag_of_Puerto_Rico.svg/40px-Flag_of_Puerto_Rico.svg.png',ko:'\uD478\uC5D0\uB974\uD1A0\uB9AC\uCF54', num:630,en:'Puerto Rico'} },\n [IOS3166_1_Code.FRA]: { description: '', data: {emoji:'\uD83C\uDDEB\uD83C\uDDF7', alpha2: 'FR', alpha3:'FRA', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/4/4a/Flag_of_France_%282024%E2%80%93present%29.svg/40px-Flag_of_France_%282024%E2%80%93present%29.svg.png',ko:'\uD504\uB791\uC2A4', num:250,en:'France'} },\n [IOS3166_1_Code.GUF]: { description: '', data: {emoji:'\uD83C\uDDEC\uD83C\uDDEB', alpha2: 'GF', alpha3:'GUF', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/2/29/Flag_of_French_Guiana.svg/22px-Flag_of_French_Guiana.svg.png',ko:'\uD504\uB791\uC2A4\uB839 \uAE30\uC544\uB098', num:254,en:'French Guiana'} },\n [IOS3166_1_Code.ATF]: { description: '', data: {emoji:'\uD83C\uDDF9\uD83C\uDDEB', alpha2: 'TF', alpha3:'ATF', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/a/a7/Flag_of_the_French_Southern_and_Antarctic_Lands.svg/22px-Flag_of_the_French_Southern_and_Antarctic_Lands.svg.png',ko:'\uD504\uB791\uC2A4\uB839 \uB0A8\uBC29 \uBC0F \uB0A8\uADF9 \uC9C0\uC5ED', num:260,en:'French Southern and Antarctic regions'} },\n [IOS3166_1_Code.PYF]: { description: '', data: {emoji:'\uD83C\uDDF5\uD83C\uDDEB', alpha2: 'PF', alpha3:'PYF', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/d/db/Flag_of_French_Polynesia.svg/22px-Flag_of_French_Polynesia.svg.png',ko:'\uD504\uB791\uC2A4\uB839 \uD3F4\uB9AC\uB124\uC2DC\uC544', num:258,en:'French Polynesia'} },\n [IOS3166_1_Code.FJI]: { description: '', data: {emoji:'\uD83C\uDDEB\uD83C\uDDEF', alpha2: 'FJ', alpha3:'FJI', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/b/ba/Flag_of_Fiji.svg/22px-Flag_of_Fiji.svg.png',ko:'\uD53C\uC9C0', num:242,en:'Fiji'} },\n [IOS3166_1_Code.FIN]: { description: '', data: {emoji:'\uD83C\uDDEB\uD83C\uDDEE', alpha2: 'FI', alpha3:'FIN', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/b/bc/Flag_of_Finland.svg/40px-Flag_of_Finland.svg.png',ko:'\uD540\uB780\uB4DC', num:246,en:'Finland'} },\n [IOS3166_1_Code.PHL]: { description: '', data: {emoji:'\uD83C\uDDF5\uD83C\uDDED', alpha2: 'PH', alpha3:'PHL', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/9/99/Flag_of_the_Philippines.svg/40px-Flag_of_the_Philippines.svg.png',ko:'\uD544\uB9AC\uD540', num:608,en:'Philippines'} },\n [IOS3166_1_Code.PCN]: { description: '', data: {emoji:'\uD83C\uDDF5\uD83C\uDDF3', alpha2: 'PN', alpha3:'PCN', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/8/88/Flag_of_the_Pitcairn_Islands.svg/22px-Flag_of_the_Pitcairn_Islands.svg.png',ko:'\uD54F\uCF00\uC5B8 \uC81C\uB3C4', num:612,en:'Pitcairn Islands'} },\n [IOS3166_1_Code.HMD]: { description: '', data: {emoji:'\uD83C\uDDED\uD83C\uDDF2', alpha2: 'HM', alpha3:'HMD', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/b/b9/Flag_of_Australia.svg/40px-Flag_of_Australia.svg.png',ko:'\uD5C8\uB4DC \uB9E5\uB3C4\uB110\uB4DC \uC81C\uB3C4', num:334,en:'the Heard MacDonald Islands'} },\n [IOS3166_1_Code.HUN]: { description: '', data: {emoji:'\uD83C\uDDED\uD83C\uDDFA', alpha2: 'HU', alpha3:'HUN', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/c/c1/Flag_of_Hungary.svg/40px-Flag_of_Hungary.svg.png',ko:'\uD5DD\uAC00\uB9AC', num:348,en:'Hungary'} },\n [IOS3166_1_Code.HKG]: { description: '', data: {emoji:'\uD83C\uDDED\uD83C\uDDF0', alpha2: 'HK', alpha3:'HKG', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/5/5b/Flag_of_Hong_Kong.svg/22px-Flag_of_Hong_Kong.svg.png',ko:'\uD64D\uCF69', num:344,en:'Hong Kong'} },\n};", "import { Promises } from '../promise/Promises';\n\nexport type LoadImageBitMapCallbackType = { onload: (img: ImageBitmap) => void, onerror: (e: any) => void };\n\nexport namespace ImageUtils {\n export function loadImageBitMap(src: string): Promise<ImageBitmap>;\n export function loadImageBitMap(src: string, callback: LoadImageBitMapCallbackType): void;\n export function loadImageBitMap(src: string, callback?: LoadImageBitMapCallbackType): Promise<ImageBitmap> | void {\n let targetCallback: (img: ImageBitmap) => void;\n let catchCallback: (e: any) => void;\n let promise: Promise<ImageBitmap> | undefined = undefined;\n if (callback) {\n targetCallback = callback.onload;\n catchCallback = callback.onerror;\n } else {\n const r = Promises.withResolvers<ImageBitmap>();\n promise = r.promise;\n targetCallback = r.resolve;\n catchCallback = r.reject;\n }\n\n fetch(src, {\n mode: 'cors', // CORS \uC694\uCCAD (\uAE30\uBCF8\uAC12)\n credentials: 'omit' // \"anonymous\"\uC640 \uC720\uC0AC: \uC778\uC99D \uC815\uBCF4(\uCFE0\uD0A4, HTTP \uC778\uC99D) \uD3EC\uD568\uD558\uC9C0 \uC54A\uC74C\n }).then(response => {\n return response.blob();\n }).then(it => {\n return createImageBitmap(it);\n }).then(it => {\n targetCallback(it);\n }).catch(it => {\n catchCallback(it);\n })\n return promise;\n }\n}", "import { StringUtils } from '../string/StringUtils';\n\nexport namespace Expression {\n\n // html = html.replace(/\\$\\{[\\s\\S]*?\\}\\$/g, '');\n\n export const bindExpression = (expression: string, bind: { [name: string]: ((arg: any) => any) | any }) => {\n // ${data} wow ${wow:parameter}\n // expression\uC5D0\uC11C ${...} \uD615\uD0DC\uB97C \uBAA8\uB450 \uCC3E\uC544\uC11C \uCC98\uB9AC\n return (expression ?? '').replace(/\\$\\{([\\s\\S.]*?)\\}/g, (_, group) => {\n // \uD30C\uB77C\uBBF8\uD130\uAC00 \uC788\uB294 \uACBD\uC6B0: name:param\n const [name, param] = group.split(':');\n const binder = bind[name];\n if (!binder) return '';\n if (typeof binder === 'function') {\n return binder(bind[param]);\n }\n return binder;\n });\n }\n\n /**\n * @deprecated\n */\n // export namespace Group {\n // export const isExpression = (data: string | null) => {\n // // const reg = /(?:[$#]\\{(?:(([$#]\\{)??[^$#]?[^{]*?)\\}[$#]))/g;\n // const reg = /[$#]\\{([\\s\\S.]*?)\\}[$#]/g;\n // return reg.test(data ?? '');\n // }\n //\n // export const expressionGroups = (data: string | null) => {\n // // const reg = /(?:[$#]\\{(?:(([$#]\\{)??[^$#]*?)\\}[$#]))/g;\n // // const reg = /(?:[$#]\\{(?:(([$#]\\{)??[^$#]?[^{]*?)\\}[$#]))/g;\n // const reg = /[$#]\\{([\\s\\S.]*?)\\}[$#]/g;\n // return StringUtils.regexExec(reg, data ?? '');\n // }\n // }\n export namespace Path {\n export type PathNameData = { [name: string]: string }\n export const pathNameData = (pathName: string, urlExpression: string) => {\n const urls = pathName.split('/');\n const urlExpressions = urlExpression.split('/');\n if (urls.length !== urlExpressions.length) {\n return;\n }\n const data: Path.PathNameData = {}\n for (let i = 0; i < urlExpressions.length; i++) {\n const it = urlExpressions[i];\n const urlit = urls[i];\n // ex) {serialNo:[0-9]+} or {no} ..\n const execResult = /^\\{(.+)\\}$/g.exec(it);\n if (!execResult) {\n if (it !== urlit) {\n return;\n }\n continue;\n }\n // regex check\n const [name, regex] = execResult[1].split(':'); // group1\n if (regex && !new RegExp(regex).test(urlit)) {\n return;\n }\n data[name] = urlit;\n }\n return data;\n }\n }\n}", "/**\n * ActionExpression - Dynamic expression detection and processing system\n * Supports multiple expression syntaxes: {{ }}, {{= }}, {{@ }}\n * Also supports custom wrap expressions via config\n */\n\n/**\n * \uD45C\uD604\uC2DD\uC758 \uD0C0\uC785\uC744 \uC815\uC758\uD569\uB2C8\uB2E4.\n * - 'replace': {{ script }} - \uBB38\uC790\uC5F4 \uCE58\uD658\n * - 'call-return': {{= script }} - \uD568\uC218 \uD638\uCD9C \uD6C4 \uBC18\uD658\uAC12 \uC0AC\uC6A9\n * - 'call': {{@ script }} - \uD568\uC218 \uD638\uCD9C\uB9CC \uC218\uD589 (\uBC18\uD658\uAC12 \uBB34\uC2DC)\n */\n// export type ExpressionMarker = { start: string | RegExp; end: string | RegExp }; ///asdasdasd\nexport type ExpressionMarker = { start: string | RegExp; end: string | RegExp }; ///asdasdasd\n\nexport type ExpressionConfig = {\n replace?: ExpressionMarker;\n callReturn?: ExpressionMarker;\n call?: ExpressionMarker;\n};\n\nexport type ExpressionType = keyof ExpressionConfig;\n\nexport type ExpressionResult = {\n id: string;\n type: ExpressionType;\n original: string;\n script: string;\n expressionStart: string;\n expressionEnd: string;\n index?: number;\n};\n\nexport type GetExpressionConfig = {\n expression?: ExpressionConfig;\n};\n\nexport type ExpressionFilterOptions = {\n type?: ExpressionType;\n};\n\nexport const DEFAULT_EXPRESSION_CONFIG: Required<ExpressionConfig> = {\n 'callReturn': { start: '{{=', end: '}}' },\n 'call': { start: '{{@', end: '}}' },\n 'replace': { start: '{{', end: '}}' }\n};\n\nexport class ActionExpression {\n private originalTemplate: string;\n private maskingTemplate: string;\n private expressions: ExpressionResult[];\n private idToMarker: Map<string, string>;\n private processedIds: Set<string>;\n private currentTemplate: string;\n\n constructor(value: string, config?: GetExpressionConfig) {\n this.originalTemplate = value || '';\n this.idToMarker = new Map();\n this.processedIds = new Set();\n this.expressions = [];\n\n if (!value || typeof value !== 'string') {\n this.maskingTemplate = this.originalTemplate;\n this.currentTemplate = this.originalTemplate;\n return;\n }\n\n this.maskingTemplate = value;\n this.currentTemplate = value;\n\n const exprConfig = {\n 'callReturn': config?.expression?.['callReturn'] || DEFAULT_EXPRESSION_CONFIG['callReturn'],\n 'call': config?.expression?.call || DEFAULT_EXPRESSION_CONFIG.call,\n 'replace': config?.expression?.replace || DEFAULT_EXPRESSION_CONFIG.replace,\n };\n\n const types: ExpressionType[] = ['callReturn', 'call', 'replace'];\n types.sort((a, b) => {\n const startFirst = exprConfig[b].start;\n const startLast = exprConfig[a].start;\n const fLength = typeof startFirst ==='string' ? startFirst.length : startFirst.source.length;\n const lLength = typeof startLast ==='string' ? startLast.length : startLast.source.length;\n return fLength - lLength;\n });\n\n for (const type of types) {\n const marker = exprConfig[type];\n if (marker) {\n this.processExpressionType(type, marker.start, marker.end);\n }\n }\n\n this.sortExpressionsByPosition();\n this.maskingTemplate = this.currentTemplate;\n }\n\n private sortExpressionsByPosition(): void {\n this.expressions.forEach(expr => {\n const index = this.originalTemplate.indexOf(expr.original);\n expr.index = index >= 0 ? index : 0;\n });\n\n this.expressions.sort((a, b) => (a.index ?? 0) - (b.index ?? 0));\n }\n\n private processExpressionType(type: ExpressionType, start: string | RegExp, end: string | RegExp): void {\n // const escapedStart = start.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n // const escapedEnd = end.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n\n const getPattern = (v: string | RegExp) => {\n if (v instanceof RegExp) {\n return v.source; // \uD83D\uDC48 \uD575\uC2EC\n }\n return v.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'); // escape\n };\n const escapedStart = getPattern(start);\n const escapedEnd = getPattern(end);\n\n const regex = new RegExp(`${escapedStart}\\\\s*([\\\\s\\\\S]+?)\\\\s*${escapedEnd}`, 'g');\n let match;\n\n const valueToMatch = this.currentTemplate;\n\n while ((match = regex.exec(valueToMatch)) !== null) {\n this.addExpression(match, type);\n }\n }\n\n private addExpression(match: RegExpExecArray, type: ExpressionType): void {\n const id = Math.random().toString(36).substr(2, 9);\n const original = match[0];\n const rawScript = match[1];\n const marker = `__EXPR_${id}__`;\n\n const expressionStart = original.substring(0, original.indexOf(rawScript));\n const expressionEnd = original.substring(original.indexOf(rawScript) + rawScript.length);\n\n this.idToMarker.set(id, marker);\n this.currentTemplate = this.currentTemplate.replace(original, marker);\n\n this.expressions.push({\n id,\n type,\n original,\n script: rawScript.trim(),\n expressionStart,\n expressionEnd\n });\n }\n\n replace(id: string, value: string): string;\n replace(expr: ExpressionResult, value: string): string;\n replace(id: string, callback: (expr: ExpressionResult) => string): string;\n replace(expr: ExpressionResult, callback: (expr: ExpressionResult) => string): string;\n replace(idOrExpr: string | ExpressionResult, valueOrCallback: string | ((expr: ExpressionResult) => string)): string {\n const id = typeof idOrExpr === 'string' ? idOrExpr : idOrExpr.id;\n\n let expr: ExpressionResult | undefined;\n if (typeof valueOrCallback === 'function') {\n expr = this.expressions.find(e => e.id === id);\n if (!expr) return this.getUnprocessedTemplate();\n }\n\n const value = typeof valueOrCallback === 'function' ? valueOrCallback(expr!) : valueOrCallback;\n\n const marker = this.idToMarker.get(id);\n if (marker) {\n this.processedIds.add(id);\n this.currentTemplate = this.currentTemplate.replace(marker, value);\n }\n\n return this.getUnprocessedTemplate();\n }\n\n getExpressions(): ExpressionResult[];\n getExpressions(type: ExpressionType): ExpressionResult[];\n getExpressions(options: ExpressionFilterOptions): ExpressionResult[];\n getExpressions(typeOrOptions?: ExpressionType | ExpressionFilterOptions): ExpressionResult[] {\n if (!typeOrOptions) {\n return this.expressions;\n }\n if (typeof typeOrOptions === 'string') {\n return this.expressions.filter(expr => expr.type === typeOrOptions);\n }\n const options = typeOrOptions as ExpressionFilterOptions;\n return this.expressions.filter(expr => {\n if (options.type && expr.type !== options.type) return false;\n return true;\n });\n }\n\n getFirstExpression(): ExpressionResult | undefined;\n getFirstExpression(type: ExpressionType): ExpressionResult | undefined;\n getFirstExpression(options: ExpressionFilterOptions): ExpressionResult | undefined;\n getFirstExpression(typeOrOptions?: ExpressionType | ExpressionFilterOptions): ExpressionResult | undefined {\n if (!typeOrOptions) {\n return this.getExpressions()[0];\n }\n if (typeof typeOrOptions === 'string') {\n return this.getExpressions(typeOrOptions)[0];\n }\n return this.getExpressions(typeOrOptions as ExpressionFilterOptions)[0];\n }\n\n getOriginalTemplate(): string { return this.originalTemplate; }\n getMaskingTemplate(): string { return this.maskingTemplate; }\n getCurrentTemplate(): string { return this.currentTemplate; }\n\n toResult(): string {\n return this.getUnprocessedTemplate();\n }\n getUnprocessedTemplate(): string {\n let result = this.currentTemplate;\n for (const expr of this.expressions) {\n if (!this.processedIds.has(expr.id)) {\n const m = this.idToMarker.get(expr.id);\n if (m) {\n result = result.replace(m, expr.original);\n }\n }\n }\n return result;\n }\n}\n\nexport type GetExpressionResult = {\n originalTemplate: string;\n maskingTemplate: string;\n expressions: ExpressionResult[];\n replace: (id: string, value: string) => string;\n};\n\nexport function getExpression(value: string, config?: GetExpressionConfig): GetExpressionResult {\n const ae = new ActionExpression(value, config);\n\n return {\n originalTemplate: ae.getOriginalTemplate(),\n maskingTemplate: ae.getMaskingTemplate(),\n expressions: ae.getExpressions(),\n replace: (id: string, value: string) => ae.replace(id, value)\n };\n}\n", "export namespace HashUtils{\n\n const core53 = (str: string, seed: number): string => {\n let h1 = 0xdeadbeef ^ seed, h2 = 0x41c6ce57 ^ seed;\n for (let i = 0; i < str.length; i++) {\n const ch = str.charCodeAt(i);\n h1 = Math.imul(h1 ^ ch, 2654435761);\n h2 = Math.imul(h2 ^ ch, 1597334677);\n }\n h1 = Math.imul(h1 ^ (h1 >>> 16), 2246822507) ^ Math.imul(h2 ^ (h2 >>> 13), 3266489909);\n h2 = Math.imul(h2 ^ (h2 >>> 16), 2246822507) ^ Math.imul(h1 ^ (h1 >>> 13), 3266489909);\n return (4294967296 * (2097151 & h2) + (h1 >>> 0)).toString(16).padStart(14, '0');\n };\n\n /** cyrb53 \u2014 \uC21C\uC218 JS 53\uBE44\uD2B8 \uD574\uC2DC \u2192 hex (node:crypto \uC5C6\uC774 \uBE0C\uB77C\uC6B0\uC800\u00B7\uB178\uB4DC \uACF5\uD1B5).\n * \uB3D9\uC77C \uC785\uB825 \u2192 \uB3D9\uC77C \uCD9C\uB825. \uC790\uB9BF\uC218\uB294 xyz(\uAE30\uBCF8 16)\uB85C \uC790\uB984.\n * @example HashUtils.hash53('abc') // 16\uC790\uB9AC hex */\n export const hash53 = (str: string, seed = 0, xyz = 16): string =>\n `${core53(str, seed)}${core53(str, seed + 1)}`.slice(0, Math.max(1, xyz));\n\n}", "import { Observable, OperatorFunction } from '../Observable';\n\nexport function filter<T, S extends T>(\n predicate: (value: T, index: number) => value is S\n): OperatorFunction<T, S>;\nexport function filter<T, S extends T>(\n predicate: (value: T) => value is S\n): OperatorFunction<T, S>;\nexport function filter<T>(\n predicate: (value: T, index: number) => boolean\n): OperatorFunction<T, T>;\nexport function filter<T>(\n predicate: (value: T) => boolean\n): OperatorFunction<T, T>;\nexport function filter<T, S extends T>(\n predicate: ((value: T, index: number) => value is S) | ((value: T, index: number) => boolean)\n): OperatorFunction<T, S> | OperatorFunction<T, T> {\n return (source: Observable<T, any>): Observable<S, any> | Observable<T, any> => {\n return new Observable(subscriber => {\n let index = 0;\n const subscription = source.subscribe({\n next: (value) => {\n try {\n if (predicate(value, index++)) {\n subscriber.next(value as any);\n }\n } catch (err) {\n subscriber.error(err as any);\n }\n },\n error: (err) => {\n subscriber.error(err);\n },\n complete: () => {\n subscriber.complete();\n }\n });\n return subscription; // Return the subscription for teardown\n });\n };\n}\n"],
5
- "mappings": "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AA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,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",
4
+ "sourcesContent": ["import {RandomUtils} from '@dooboostore/core';\nimport {TopicRequest, TopicResponse, TopicServerEventRequest, TopicServerEventResponse, TopicServerEventUnSubscribeRequest, TopicSubscribeRequest, TopicType, TopicUnsubscribeRequest} from './WebSocketManager';\nimport {Observable, Subject} from '@dooboostore/core';\nimport { filter } from '@dooboostore/core/message/operators';\n\nexport * from '@dooboostore/core';\n\ntype TopicObserverNextCallBack<T> = <R = any>(data: T, meta: { socket: WebSocket }) => void;\ntype TopicObserverEventCallBack = { [event: string]: <T, R = any>(data: T, meta: { socket: WebSocket }) => Promise<R> | void | any } | (<T, R = any>(event: string, data: T, meta: { socket: WebSocket }) => Promise<R> | void | any);\ntype TopicObserverErrorCallBack = <R = any>(err: any) => void;\nexport type TopicObserverCallBack<T> = { next: TopicObserverNextCallBack<T>; event?: TopicObserverEventCallBack; error?: TopicObserverErrorCallBack; complete?: () => void } | TopicObserverNextCallBack<T>;\n\nexport interface WebSocketClientConfig {\n retryConnectionCount?: number;\n retryConnectionDelay?: number;\n maxPendingMessages?: number;\n maxPendingBinaryMessages?: number;\n}\n\ntype OnUnsubscribeCallback = (type: 'server' | 'manual') => void;\nexport type Subscription = {\n closed: boolean;\n unsubscribe: () => void;\n};\n\nexport class WebSocketClient {\n private websocket: WebSocket;\n private topics = new Map<string, { observer: TopicObserverCallBack<any>; subscription: Subscription; onUnsubscribes: OnUnsubscribeCallback[]; target: string }>();\n private observer?: (data: TopicResponse | TopicServerEventRequest | TopicServerEventUnSubscribeRequest) => void;\n private pendingMessages: any[] = [];\n private pendingBinaryMessages: Array<ArrayBuffer | Blob | Uint8Array> = [];\n private isConnected = false;\n private onOpenCallback: () => void;\n private onCloseCallback: () => void;\n private _subject = new Subject<TopicResponse | TopicServerEventRequest | TopicServerEventUnSubscribeRequest>();\n // Reconnection properties\n private connectionUrl: string | URL;\n private connectionProtocols?: string | string[];\n private retryConnectionCount: number;\n private retryConnectionDelay: number;\n private currentRetryCount = 0;\n private reconnectTimeout?: number;\n private isManualClose = false;\n private isConnecting = false;\n private maxPendingMessages: number;\n private maxPendingBinaryMessages: number;\n\n constructor(connection: { url: string | URL; protocols?: string | string[] }, config?: WebSocketClientConfig);\n constructor(connection: string, config?: WebSocketClientConfig);\n constructor(connection: URL, config?: WebSocketClientConfig);\n constructor(connection: { url: string | URL; protocols?: string | string[] } | string | URL, config?: WebSocketClientConfig) {\n // Store connection info for reconnection\n if (typeof connection === 'string' || connection instanceof URL) {\n this.connectionUrl = connection;\n } else {\n this.connectionUrl = connection.url;\n this.connectionProtocols = connection.protocols;\n }\n\n // Set config with defaults\n this.retryConnectionCount = config?.retryConnectionCount ?? 0;\n this.retryConnectionDelay = config?.retryConnectionDelay ?? 1000;\n this.maxPendingMessages = config?.maxPendingMessages ?? 1000;\n this.maxPendingBinaryMessages = config?.maxPendingBinaryMessages ?? 100;\n\n this.connect();\n }\n\n private get observable() {\n return this._subject.asObservable();\n }\n\n private connect() {\n if (this.isConnecting) {\n return;\n }\n if (this.websocket && (this.websocket.readyState === WebSocket.OPEN || this.websocket.readyState === WebSocket.CONNECTING)) {\n return;\n }\n this.isConnecting = true;\n if (this.connectionProtocols) {\n this.websocket = new WebSocket(this.connectionUrl, this.connectionProtocols);\n } else {\n this.websocket = new WebSocket(this.connectionUrl);\n }\n\n this.websocket.binaryType = 'arraybuffer';\n\n this.websocket.addEventListener('open', () => {\n this.isConnecting = false;\n this.isConnected = true;\n this.currentRetryCount = 0; // Reset retry count on successful connection\n if (this.reconnectTimeout) {\n clearTimeout(this.reconnectTimeout);\n this.reconnectTimeout = undefined;\n }\n console.log('WebSocket connected');\n this.onOpenCallback?.();\n\n // Re-subscribe to all existing topics after reconnection\n this.topics.forEach((topicData, uuid) => {\n // closed\uB41C subscription\uC740 \uC7AC\uAD6C\uB3C5\uD558\uC9C0 \uC54A\uC74C\n if (!topicData.subscription.closed) {\n const subscribeTopic: TopicSubscribeRequest = {\n type: 'subscribe',\n uuid,\n target: topicData.target\n };\n // console.log('????')\n this.websocket.send(JSON.stringify(subscribeTopic));\n }\n });\n\n // \uB300\uAE30 \uC911\uC778 \uBAA8\uB4E0 \uBA54\uC2DC\uC9C0 \uC804\uC1A1\n while (this.pendingMessages.length > 0) {\n const message = this.pendingMessages.shift();\n this.websocket.send(JSON.stringify(message));\n }\n\n while (this.pendingBinaryMessages.length > 0) {\n const message = this.pendingBinaryMessages.shift();\n if (message) {\n this.websocket.send(message);\n }\n }\n });\n\n this.websocket.addEventListener('close', event => {\n this.isConnecting = false;\n this.isConnected = false;\n console.log('WebSocket closed', event.code, event.reason);\n this.onCloseCallback?.();\n\n // Attempt reconnection if not manually closed\n if (!this.isManualClose) {\n this.attemptReconnect();\n }\n });\n\n this.websocket.addEventListener('error', error => {\n console.error('WebSocket error:', error);\n });\n\n this.websocket.addEventListener('message', async event => {\n const topic = await this.parseIncomingTopic(event.data);\n if (!topic) {\n return;\n }\n this._subject.next(topic);\n this.observer?.(topic);\n if (topic.uuid) {\n const topicData = this.topics.get(topic.uuid);\n if (topicData) {\n const observer = topicData.observer;\n const nextCallback = typeof observer === 'function' ? observer : observer.next;\n const errorCallback = typeof observer === 'function' ? undefined : observer.error;\n const eventCallback = typeof observer === 'function' ? undefined : observer.event;\n if ('state' in topic && topic.state === 'success') {\n await nextCallback(topic.body, { socket: this.websocket });\n } else if ('state' in topic && topic.state === 'error' && errorCallback) {\n await errorCallback(topic.body);\n } else if ('type' in topic && topic.type === 'unsubscribe') {\n topicData.subscription.closed = true;\n this.topics.delete(topic.uuid);\n topicData.onUnsubscribes.forEach(it => it('server'));\n } else if ('type' in topic && topic.type === 'event' && eventCallback) {\n /////////// event ///////////\n let eventResponse = typeof eventCallback === 'function' ? await eventCallback(topic.event, topic.body, { socket: this.websocket }) : await eventCallback[topic.event]?.(topic.body, { socket: this.websocket });\n\n if (eventResponse !== undefined && eventResponse !== null) {\n const value: TopicServerEventResponse = {\n uuid: topic.uuid,\n eventUUID: topic.eventUUID,\n type: topic.type,\n body: eventResponse\n };\n this.websocket.send(JSON.stringify(value));\n }\n }\n }\n }\n });\n }\n\n private attemptReconnect() {\n if (this.currentRetryCount >= this.retryConnectionCount) {\n console.error(`WebSocket reconnection failed after ${this.retryConnectionCount} attempts`);\n return;\n }\n if (this.reconnectTimeout) {\n return;\n }\n\n this.currentRetryCount++;\n console.log(`Attempting to reconnect... (${this.currentRetryCount}/${this.retryConnectionCount})`);\n\n this.reconnectTimeout = window.setTimeout(() => {\n this.reconnectTimeout = undefined;\n this.connect();\n // Subscribe messages are already in pendingMessages and will be sent automatically\n }, this.retryConnectionDelay);\n }\n\n private sendMessage(message: TopicRequest | TopicUnsubscribeRequest | TopicSubscribeRequest) {\n if (this.isConnected && this.websocket.readyState === WebSocket.OPEN) {\n this.websocket.send(JSON.stringify(message));\n return;\n }\n if (message.type === 'subscribe' || message.type === 'unsubscribe') {\n return;\n }\n if (this.maxPendingMessages <= 0) {\n return;\n }\n if (this.pendingMessages.length >= this.maxPendingMessages) {\n this.pendingMessages.shift();\n }\n this.pendingMessages.push(message);\n }\n\n sendBinary(data: ArrayBuffer | Blob | Uint8Array) {\n if (this.isConnected && this.websocket.readyState === WebSocket.OPEN) {\n this.websocket.send(data);\n return;\n }\n if (this.maxPendingBinaryMessages <= 0) {\n return;\n }\n if (this.pendingBinaryMessages.length >= this.maxPendingBinaryMessages) {\n this.pendingBinaryMessages.shift();\n }\n this.pendingBinaryMessages.push(data);\n }\n\n private async parseIncomingTopic(data: any): Promise<TopicResponse | TopicServerEventRequest | TopicServerEventUnSubscribeRequest | undefined> {\n if (typeof data === 'string') {\n try {\n return JSON.parse(data);\n } catch (error) {\n console.warn('Invalid WebSocket payload:', error);\n return undefined;\n }\n }\n\n if (data instanceof ArrayBuffer) {\n return this.parseBinaryTopic(data);\n }\n\n if (typeof Blob !== 'undefined' && data instanceof Blob) {\n const buffer = await data.arrayBuffer();\n return this.parseBinaryTopic(buffer);\n }\n\n return undefined;\n }\n\n private parseBinaryTopic(data: ArrayBuffer): TopicResponse | TopicServerEventRequest | TopicServerEventUnSubscribeRequest | undefined {\n if (data.byteLength < 4) {\n return undefined;\n }\n const view = new DataView(data);\n const jsonLength = view.getUint32(0, true);\n const jsonStart = 4;\n const jsonEnd = jsonStart + jsonLength;\n if (data.byteLength < jsonEnd) {\n return undefined;\n }\n\n const jsonBytes = new Uint8Array(data, jsonStart, jsonLength);\n let meta: any;\n try {\n const decoder = new TextDecoder();\n meta = JSON.parse(decoder.decode(jsonBytes));\n } catch (error) {\n console.warn('Invalid WebSocket binary payload:', error);\n return undefined;\n }\n\n const filesMeta = Array.isArray(meta.files) ? meta.files : [];\n const fileMap = new Map<string, any>();\n filesMeta.forEach((file: any) => {\n if (!file || typeof file.id !== 'string' || typeof file.size !== 'number' || typeof file.offset !== 'number') {\n return;\n }\n const start = jsonEnd + file.offset;\n const end = start + file.size;\n if (start < jsonEnd || end > data.byteLength) {\n return;\n }\n const slice = data.slice(start, end);\n const mime = file.mime || 'application/octet-stream';\n let fileValue: any;\n if (typeof File !== 'undefined') {\n fileValue = new File([slice], file.name || 'file', { type: mime });\n } else {\n fileValue = { name: file.name || 'file', mime, size: file.size, buffer: slice };\n }\n fileMap.set(file.id, fileValue);\n });\n\n const replaceFileRefs = (value: any): any => {\n if (value && typeof value === 'object' && '$file' in value && typeof value.$file === 'string') {\n const file = fileMap.get(value.$file);\n if (file) {\n return file;\n }\n }\n if (Array.isArray(value)) {\n return value.map(item => replaceFileRefs(item));\n }\n if (value && typeof value === 'object') {\n const result: Record<string, any> = {};\n Object.keys(value).forEach(key => {\n result[key] = replaceFileRefs(value[key]);\n });\n return result;\n }\n return value;\n };\n\n meta.body = replaceFileRefs(meta.body);\n return meta as TopicResponse | TopicServerEventRequest | TopicServerEventUnSubscribeRequest;\n }\n\n private isBinaryPayload(value: any) {\n if (!value) {\n return false;\n }\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return true;\n }\n if (typeof Uint8Array !== 'undefined' && value instanceof Uint8Array) {\n return true;\n }\n if (typeof Blob !== 'undefined' && value instanceof Blob) {\n return true;\n }\n if (value && typeof value === 'object' && 'buffer' in value) {\n const bufferValue = (value as any).buffer;\n return this.isBinaryPayload(bufferValue);\n }\n return false;\n }\n\n private hasBinaryPayload(value: any): boolean {\n if (this.isBinaryPayload(value)) {\n return true;\n }\n if (Array.isArray(value)) {\n return value.some(item => this.hasBinaryPayload(item));\n }\n if (value && typeof value === 'object') {\n return Object.keys(value).some(key => this.hasBinaryPayload(value[key]));\n }\n return false;\n }\n\n private async buildBinaryMessage(body: any, meta: { type?: TopicType; uuid: string; requestUUID: string }) {\n const fileRefs = new Map<any, string>();\n const fileEntries: Array<{ id: string; name: string; mime: string; buffer: Promise<ArrayBuffer | SharedArrayBuffer> }> = [];\n let fileIndex = 0;\n\n const registerFile = (value: any) => {\n const existing = fileRefs.get(value);\n if (existing) {\n return existing;\n }\n const id = `f${++fileIndex}`;\n fileRefs.set(value, id);\n\n let name = 'file';\n let mime = 'application/octet-stream';\n let buffer: Promise<ArrayBuffer | SharedArrayBuffer>;\n\n if (typeof Blob !== 'undefined' && value instanceof Blob) {\n const fileLike = value as File | Blob;\n if ('name' in fileLike && typeof (fileLike as File).name === 'string') {\n name = (fileLike as File).name || name;\n }\n mime = fileLike.type || mime;\n buffer = fileLike.arrayBuffer();\n } else if (value && typeof value === 'object' && 'buffer' in value) {\n const fileLike = value as any;\n if (typeof fileLike.name === 'string') {\n name = fileLike.name || name;\n }\n if (typeof fileLike.mime === 'string') {\n mime = fileLike.mime || mime;\n }\n const innerBuffer = fileLike.buffer;\n if (typeof Blob !== 'undefined' && innerBuffer instanceof Blob) {\n buffer = innerBuffer.arrayBuffer();\n } else if (typeof Uint8Array !== 'undefined' && innerBuffer instanceof Uint8Array) {\n const sliced = innerBuffer.buffer.slice(innerBuffer.byteOffset, innerBuffer.byteOffset + innerBuffer.byteLength);\n buffer = Promise.resolve(sliced instanceof ArrayBuffer ? sliced : new Uint8Array(sliced).buffer);\n } else if (typeof ArrayBuffer !== 'undefined' && innerBuffer instanceof ArrayBuffer) {\n buffer = Promise.resolve(innerBuffer as ArrayBuffer);\n } else {\n buffer = Promise.resolve(new ArrayBuffer(0));\n }\n } else if (typeof Uint8Array !== 'undefined' && value instanceof Uint8Array) {\n const view = value as Uint8Array;\n const sliced = view.buffer.slice(view.byteOffset, view.byteOffset + view.byteLength);\n buffer = Promise.resolve(sliced instanceof ArrayBuffer ? sliced : new Uint8Array(sliced).buffer);\n } else if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n buffer = Promise.resolve(value as ArrayBuffer);\n } else {\n buffer = Promise.resolve(new ArrayBuffer(0));\n }\n\n fileEntries.push({ id, name, mime, buffer });\n return id;\n };\n\n const replaceFiles = (value: any): any => {\n if (this.isBinaryPayload(value)) {\n const id = registerFile(value);\n return { $file: id };\n }\n if (Array.isArray(value)) {\n return value.map(item => replaceFiles(item));\n }\n if (value && typeof value === 'object') {\n const result: Record<string, any> = {};\n Object.keys(value).forEach(key => {\n result[key] = replaceFiles(value[key]);\n });\n return result;\n }\n return value;\n };\n\n const payload = replaceFiles(body);\n const buffers = await Promise.all(fileEntries.map(entry => entry.buffer));\n\n let offset = 0;\n const files = fileEntries.map((entry, index) => {\n const size = buffers[index].byteLength;\n const fileMeta = {\n id: entry.id,\n name: entry.name,\n mime: entry.mime,\n size,\n offset\n };\n offset += size;\n return fileMeta;\n });\n\n const json = JSON.stringify({\n type: meta.type,\n uuid: meta.uuid,\n requestUUID: meta.requestUUID,\n body: payload,\n files\n });\n\n const encoder = new TextEncoder();\n const jsonBytes = encoder.encode(json);\n const header = new Uint8Array(4);\n new DataView(header.buffer).setUint32(0, jsonBytes.byteLength, true);\n\n const totalSize = header.byteLength + jsonBytes.byteLength + offset;\n const combined = new Uint8Array(totalSize);\n combined.set(header, 0);\n combined.set(jsonBytes, header.byteLength);\n\n let cursor = header.byteLength + jsonBytes.byteLength;\n buffers.forEach(buffer => {\n const view = buffer instanceof ArrayBuffer ? new Uint8Array(buffer) : new Uint8Array(buffer);\n combined.set(view, cursor);\n cursor += buffer.byteLength;\n });\n\n return combined.buffer;\n }\n\n subject(target: string, option?: { type?: TopicType; subScribeBody?: any; observer?: TopicObserverCallBack<any>; onUnsubscribe?: OnUnsubscribeCallback }) {\n const self = this;\n const uuid = RandomUtils.uuid4();\n const onUnsubscribes: OnUnsubscribeCallback[] = [];\n if (option?.onUnsubscribe) {\n onUnsubscribes.push(option.onUnsubscribe);\n }\n if (option?.observer && typeof option.observer !== 'function' && option.observer.complete) {\n onUnsubscribes.push(() => (option.observer as any).complete());\n }\n const topicSubject = new Subject<any>();\n onUnsubscribes.push(() => topicSubject.complete());\n\n let isClosed = false;\n let activeSubscription: Subscription | undefined;\n\n const unsubscribeLogic = () => {\n if (isClosed) return;\n const unSubscribeTopic: TopicUnsubscribeRequest = { type: 'unsubscribe', uuid };\n self.sendMessage(unSubscribeTopic);\n isClosed = true;\n self.topics.delete(uuid);\n onUnsubscribes.forEach(it => it('manual'));\n if (activeSubscription) {\n activeSubscription.closed = true;\n }\n };\n\n const doSubscribe = <T>(observer?: TopicObserverCallBack<T>) => {\n const subscription: Subscription = {\n closed: isClosed,\n unsubscribe: unsubscribeLogic\n };\n\n const wrappedObserver: TopicObserverCallBack<T> = {\n next: (data, meta) => {\n topicSubject.next(data);\n if (observer) {\n return typeof observer === 'function' ? observer(data, meta) : observer.next(data, meta);\n }\n },\n error: err => {\n topicSubject.error(err);\n if (observer && typeof observer !== 'function' && observer.error) {\n observer.error(err);\n }\n },\n event: observer && typeof observer !== 'function' ? observer.event : undefined\n };\n\n self.topics.set(uuid, { observer: wrappedObserver, target, subscription, onUnsubscribes });\n const subscribeTopic: TopicSubscribeRequest = { type: 'subscribe', uuid, target: target, body: option?.subScribeBody };\n\n self.sendMessage(subscribeTopic);\n // console.log('----------')\n activeSubscription = subscription;\n return subscription;\n };\n\n if (option?.observer) {\n doSubscribe(option.observer);\n }\n\n return {\n get closed() {\n return isClosed;\n },\n unsubscribe: unsubscribeLogic,\n get observable() {\n return new Observable<any>(subscriber => {\n if (!activeSubscription && !isClosed) {\n doSubscribe();\n }\n return topicSubject.subscribe({\n next: value => subscriber.next(value),\n error: err => subscriber.error(err),\n complete: () => subscriber.complete()\n });\n });\n },\n send: (body?: any) => {\n if (!activeSubscription && !self.topics.has(uuid) && !isClosed) {\n doSubscribe();\n }\n const requestUUID = RandomUtils.uuid4();\n if (self.hasBinaryPayload(body)) {\n self.buildBinaryMessage(body, { type: option?.type, uuid, requestUUID }).then(buffer => self.sendBinary(buffer));\n } else {\n const value: TopicRequest = { type: option?.type, uuid, requestUUID, body: body };\n self.sendMessage(value);\n }\n return topicSubject.pipe(filter(data => data && data.requestUUID === requestUUID));\n },\n onUnsubscribe: (callback: OnUnsubscribeCallback) => {\n onUnsubscribes.push(callback);\n }\n };\n }\n\n onOpen(callback: () => void) {\n this.onOpenCallback = callback;\n }\n\n onClose(callback: () => void) {\n this.onCloseCallback = callback;\n }\n\n subscribe<T = any>(observer: (data: TopicResponse<T> | TopicServerEventRequest<T>) => void) {\n this.observer = observer;\n }\n\n close() {\n this.isManualClose = true;\n if (this.reconnectTimeout) {\n clearTimeout(this.reconnectTimeout);\n this.reconnectTimeout = undefined;\n }\n this.pendingMessages = [];\n this.pendingBinaryMessages = [];\n this.isConnecting = false;\n this.topics.forEach(topicData => {\n topicData.subscription.closed = true;\n topicData.onUnsubscribes.forEach(it => it('manual'));\n });\n this.topics.clear();\n this.websocket.close();\n }\n\n reconnect() {\n // \uAE30\uC874 \uC5F0\uACB0 \uC885\uB8CC\n this.isManualClose = true;\n if (this.reconnectTimeout) {\n clearTimeout(this.reconnectTimeout);\n }\n\n // close \uC774\uBCA4\uD2B8 \uD6C4\uC5D0 \uC7AC\uC5F0\uACB0\uD558\uB3C4\uB85D \uC124\uC815\n const reconnectAfterClose = () => {\n console.log('close websocket');\n this.isManualClose = false;\n this.currentRetryCount = 0;\n this.connect();\n };\n\n // \uC774\uBBF8 \uB2EB\uD600\uC788\uC73C\uBA74 \uBC14\uB85C \uC7AC\uC5F0\uACB0\n if (this.websocket.readyState === WebSocket.CLOSED || this.websocket.readyState === WebSocket.CLOSING) {\n reconnectAfterClose();\n } else {\n // \uC5F0\uACB0\uC774 \uB2EB\uD790 \uB54C\uAE4C\uC9C0 \uAE30\uB2E4\uB838\uB2E4\uAC00 \uC7AC\uC5F0\uACB0\n this.websocket.addEventListener('close', reconnectAfterClose, { once: true });\n this.websocket.close();\n }\n }\n\n getReadyState(): number {\n return this.websocket.readyState;\n }\n\n isConnectionOpen(): boolean {\n return this.isConnected && this.websocket.readyState === WebSocket.OPEN;\n }\n}\n", "import type {ClassType, ConstructorType, FilterFalsy, FilterNullish, NonNullable, Nullable, Nullish, NullOrUndefined} from '../types';\n\nexport namespace ValidUtils {\n\n export const isArrowFunction = (fn: any): fn is Function => {\n // 1. \uD568\uC218\uAC00 \uC544\uB2C8\uBA74 false\n if (typeof fn !== 'function') {\n return false;\n }\n // 2. prototype \uC18D\uC131\uC774 \uC5C6\uC73C\uBA74 \uD654\uC0B4\uD45C \uD568\uC218 (\uB610\uB294 prototype\uC774 \uC5C6\uB294 \uB2E4\uB978 callable)\n // 3. \uD074\uB798\uC2A4\uB294 'class' \uD0A4\uC6CC\uB4DC\uB85C \uC2DC\uC791\uD558\uBBC0\uB85C \uC81C\uC678\n return typeof fn.prototype === 'undefined' && !fn.toString().startsWith('class');\n }\n\n export const isPlainObject = (obj: any): boolean => {\n return obj !== null && typeof obj === 'object' && obj.constructor === Object;\n }\n\n const isConstructorLike = (fn: any): boolean => {\n // 1. \uD568\uC218\uC5EC\uC57C \uD558\uACE0,\n // 2. prototype \uC18D\uC131\uC744 \uAC00\uC838\uC57C \uD568\n return typeof fn === 'function' && typeof fn.prototype !== 'undefined';\n }\n\n export const isUrl = (str: string): boolean => {\n try {\n new URL(str);\n return true;\n } catch (_) {\n return false;\n }\n }\n\n // \uC81C\uB108\uB808\uC774\uD130 \"\uAC1D\uCCB4\"(function* \uD638\uCD9C \uACB0\uACFC) \uD310\uBCC4. \uD504\uB85C\uD1A0\uCF5C\uB85C \uBCF8\uB2E4 \u2014\n // tslib \uB4F1\uC73C\uB85C \uB2E4\uC6B4\uB808\uBCA8\uB41C \uC81C\uB108\uB808\uC774\uD130\uB294 toString \uD0DC\uADF8\uAC00 '[object Object]' \uB77C\uC11C \uD0DC\uADF8 \uAC80\uC0AC\uB85C\uB294 \uB193\uCE5C\uB2E4.\n export const isGenerator = (value: any): value is Generator => {\n return value !== null && typeof value === 'object' && typeof value.next === 'function' && typeof value[Symbol.iterator] === 'function';\n }\n\n // async function* \uD638\uCD9C \uACB0\uACFC \uD310\uBCC4 (Symbol.iterator \uAC00 \uC5C6\uACE0 Symbol.asyncIterator \uAC00 \uC788\uB2E4)\n export const isAsyncGenerator = (value: any): value is AsyncGenerator => {\n return value !== null && typeof value === 'object' && typeof value.next === 'function' && typeof value[Symbol.asyncIterator] === 'function';\n }\n\n export const isFrozen = (obj: any): boolean => {\n return Object.isFrozen(obj);\n }\n export const isSealed = (obj: any): boolean => {\n return Object.isSealed(obj)\n }\n export const isFrozenOrSealed = (obj: any): boolean => {\n return ValidUtils.isFrozen(obj) || ValidUtils.isSealed(obj);\n }\n export const isFrozenAndSealed = (obj: any): boolean => {\n return ValidUtils.isFrozen(obj) && ValidUtils.isSealed(obj);\n }\n export const isNotFrozen = (obj: any): boolean => {\n return !Object.isFrozen(obj);\n }\n export const isNotSealed = (obj: any): boolean => {\n return !Object.isSealed(obj)\n }\n export const isNotFrozenOrSealed = (obj: any): boolean => {\n return !ValidUtils.isFrozen(obj) && !ValidUtils.isSealed(obj);\n }\n export const isNotFrozenAndSealed = (obj: any): boolean => {\n return !ValidUtils.isFrozen(obj) || !ValidUtils.isSealed(obj);\n }\n\n export const isNullOrUndefined = (data: unknown): data is (null | undefined) => {\n return data == null || undefined === data;\n }\n\n // \uAD6C\uBD84 \uD568\uC218\n export const isClassType = (obj: any): obj is ClassType => {\n return typeof obj === 'function' && /^\\s*class\\s+/.test(obj.toString());\n };\n\n // \uBB54\uAC00.. \uC774\uAC70 \uC880 \uC218\uC815\uD574\uC57C\uB420\uAC83\uAC19\uC740\uB370 \uADF8\uB0E5 function() \uC774\uAC83\uB3C4 true\uAC00 \uB098\uC624\uB294\uAC8C \uB9DE\uB098?\uB9DE\uC744\uB77C\uB098\uD6D4..\n // export const isConstructor = (obj: ConstructorType<any> | Function | ((e: any) => void)): obj is ConstructorType<any> => {\n // // \uD568\uC218\uC774\uBA74\uC11C prototype \uC18D\uC131\uC774 \uC788\uACE0 prototype\uC774 \uAC1D\uCCB4\uC778\uC9C0 \uD655\uC778\n // return typeof obj === 'function'\n // && obj.prototype !== undefined\n // && obj.prototype.constructor === obj\n // // && Object.getOwnPropertyNames(obj.prototype).length > 1; // constructor \uC678\uC5D0 \uB2E4\uB978 \uC18D\uC131\uC774 \uC788\uB294\uC9C0 \uD655\uC778\n // }\n export const isFunctionType = (obj: ConstructorType<any> | Function | ((e: any) => void)): obj is ((e: any) => void) => {\n return typeof obj === 'function';\n }\n // \uC774\uAC83\uB3C4 \uC218\uC815\uC774\uB418\uC5B4\uC57C \uD558\uB098? function(){} \uB123\uC73C\uBA74 false\uB098\uC62C\uAC83\uAC19\uC740\uB370\n // export const isFunction = (obj: ConstructorType<any> | Function | ((e: any) => void)): obj is ((e: any) => void) => {\n // return typeof obj === 'function' && !isConstructor(obj);\n // }\n export const isNullish = <T = any>(data: T | null | undefined): data is null | undefined => {\n return ValidUtils.isNotNullish(data);\n }\n export const isNotNullish = <T>(data: T | null | undefined): data is NonNullable<T> => {\n if ((Array.isArray(data) || ValidUtils.isString(data))) {\n return data.length > 0;\n }\n\n if (data instanceof Set || data instanceof Map) {\n return data.size > 0;\n }\n\n if (typeof data === 'object' && data !== null) {\n return Object.keys(data).length > 0;\n }\n\n return data !== null && data !== undefined;\n }\n\n export function isDefined<T>(value: T | null | undefined): value is NonNullable<T>;\n export function isDefined<K extends string, V>(entry: [K, V] | null | undefined): entry is [K, V];\n export function isDefined(value: unknown): boolean {\n return value !== null && value !== undefined;\n }\n\n export const isNotNullUndefined = <T>(data: T | null | undefined): data is NonNullable<T> => {\n return isDefined(data);\n }\n\n export const isNormalAttrEntry = <T>(entry: [string, T] | undefined | null): entry is [string, T] => {\n return isDefined(entry);\n }\n\n export const isStringEntry = (entry: [string, string] | undefined | null): entry is [string, string] => {\n return isDefined(entry);\n }\n\n export const isNull = (data: any): data is null => {\n return data === null;\n }\n\n export const isUndefined = (data: any): data is undefined => {\n return data === undefined;\n }\n\n export const isArray = (object_o: any): boolean => {\n if (ValidUtils.isNullOrUndefined(object_o)) {\n return false\n } else {\n return Object.prototype.toString.call(object_o).trim() === '[object Array]'\n }\n }\n\n export const isStringNumber = (value: string | number): boolean => {\n if (typeof value === 'number') {\n return !isNaN(value);\n }\n return typeof value === 'string' && value.trim() !== '' && !isNaN(Number(value));\n }\n\n export const isNumber = (object_o: any): boolean => {\n if (ValidUtils.isNullOrUndefined(object_o)) {\n return false\n } else {\n return Object.prototype.toString.call(object_o).trim() === '[object Number]'\n }\n }\n\n export const isIterator = <T>(object_o: any): object_o is Iterable<T> => {\n return object_o != null && typeof object_o[Symbol.iterator] === 'function';\n };\n\n export const isString = (object_o: any): object_o is string => {\n if (ValidUtils.isNullOrUndefined(object_o)) {\n return false\n } else {\n return Object.prototype.toString.call(object_o).trim() === '[object String]'\n }\n }\n\n // export const isFunction = (object_o: any): boolean => {\n // if (ValidUtils.isNullOrUndefined(object_o)) {\n // return false\n // } else {\n // return Object.prototype.toString.call(object_o).trim() === '[object Function]'\n // }\n // // if (typeof object_o === 'function') {\n // // return true;\n // // }else {\n // // return false;\n // // }\n // }\n\n export const isObject = (object_o: any): boolean => {\n if (ValidUtils.isNullOrUndefined(object_o)) {\n return false\n } else {\n return Object.prototype.toString.call(object_o).trim() === '[object Object]'\n }\n }\n\n export const isMap = (object_o: any): boolean => {\n if (ValidUtils.isNullOrUndefined(object_o)) {\n return false\n } else {\n return Object.prototype.toString.call(object_o).trim() === '[object Map]'\n }\n }\n\n\n export const isEmpty = (object_o: any): boolean => {\n if (ValidUtils.isNullOrUndefined(object_o)) {\n return true;\n } else if (ValidUtils.isArray(object_o)) {\n return object_o.length === 0;\n } else if (ValidUtils.isString(object_o)) {\n return object_o.trim().length === 0;\n } else if (ValidUtils.isMap(object_o)) {\n return object_o.size === 0;\n } else if (ValidUtils.isObject(object_o)) {\n return Object.keys(object_o).length === 0;\n } else {\n return false;\n }\n };\n\n\n export const isSet = <T = any>(data: any): data is Set<T> => {\n return data instanceof Set;\n };\n\n export const isNullishFiltered = <T>(value: unknown): value is FilterNullish<T> => {\n if (Array.isArray(value)) {\n return value.every(it => it !== undefined && it !== null);\n }\n return value !== undefined && value !== null;\n };\n\n export const isFalsyFiltered = <T>(value: unknown): value is FilterFalsy<T> => {\n if (Array.isArray(value)) {\n return value.every(it => {\n return it;\n });\n }\n return !!value;\n };\n\n export const includeValue = (obj: object, value: any): boolean => {\n return Object.values(obj).includes(value);\n };\n export const includeKey = (obj: object, key: string): boolean => {\n return Object.keys(obj).includes(key);\n };\n\n /** \uC885\uC131\uC774 \uC788\uB294\uC9C0 \uD655\uC778\uD558\uB294 \uD568\uC218 */\n export const lastConsonantLetter = (value: string): boolean => {\n const lastLetter = value.charCodeAt(value.length - 1);\n return (lastLetter - 0xac00) % 28 > 0;\n };\n\n export const inRange = (value: number, min: number, max: number) => {\n return min <= value && value <= max;\n };\n\n export const isBase64 = (inputString: string) => {\n // data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAA\n // const isValidBase64 = /^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/;\n // return isValidBase64.test(base64String);\n\n let base64Data = inputString;\n\n // Data URL \uC811\uB450\uC0AC \uC81C\uAC70 (\uC608: \"data:image/png;base64,\")\n const parts = inputString.split(';base64,');\n if (parts.length > 1) {\n base64Data = parts[1];\n } else {\n // \"data:\"\uB9CC \uC788\uACE0 \";base64,\"\uAC00 \uC5C6\uB294 \uACBD\uC6B0\uB3C4 \uACE0\uB824 (\uC5C4\uBC00\uD788\uB294 base64\uAC00 \uC544\uB2D0 \uC218 \uC788\uC74C)\n if (inputString.startsWith('data:')) {\n // \uC774 \uACBD\uC6B0\uB294 \uC720\uD6A8\uD55C base64\uB85C \uAC04\uC8FC\uD560\uC9C0 \uC815\uCC45\uC5D0 \uB530\uB77C \uB2E4\uB984\n // \uC5EC\uAE30\uC11C\uB294 \uC77C\uB2E8 base64 \uBD80\uBD84\uC774 \uC5C6\uB2E4\uACE0 \uAC00\uC815\uD558\uACE0 false \uCC98\uB9AC\n // return false;\n // \uB610\uB294 \uC811\uB450\uC0AC\uB9CC \uC81C\uAC70\uD558\uACE0 \uB0A8\uC740 \uBD80\uBD84\uC744 \uD14C\uC2A4\uD2B8\uD560 \uC218\uB3C4 \uC788\uC74C\n const commaIndex = inputString.indexOf(',');\n if (commaIndex > -1) {\n base64Data = inputString.substring(commaIndex + 1);\n } else {\n // \uC21C\uC218 base64\uAC00 \uC544\uB2D0 \uAC00\uB2A5\uC131 \uB192\uC74C\n // return false;\n }\n }\n }\n\n\n // Base64 \uC720\uD6A8\uC131 \uAC80\uC0AC \uC815\uADDC\uC2DD\n // - \uBB38\uC790\uC5F4 \uAE38\uC774\uB294 4\uC758 \uBC30\uC218\uC5EC\uC57C \uD568 (\uD328\uB529 \uC81C\uC678)\n // - \uD328\uB529 '='\uB294 \uCD5C\uB300 2\uAC1C\uAE4C\uC9C0 \uBB38\uC790\uC5F4 \uB05D\uC5D0\uB9CC \uC62C \uC218 \uC788\uC74C\n // - \uD328\uB529\uC774 1\uAC1C\uC77C \uACBD\uC6B0, \uADF8 \uC55E \uBB38\uC790\uB294 [A-Za-z0-9+/]\n // - \uD328\uB529\uC774 2\uAC1C\uC77C \uACBD\uC6B0, \uADF8 \uC55E \uB450 \uBB38\uC790\uB294 [A-Za-z0-9+/]\n // \uC870\uAE08 \uB354 \uC5C4\uACA9\uD558\uACE0 \uD6A8\uC728\uC801\uC778 \uC815\uADDC\uC2DD:\n const base64Regex = /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/;\n\n // \uCD94\uAC00\uC801\uC73C\uB85C, \uC2E4\uC81C base64 \uBB38\uC790\uC5F4\uC740 \uD328\uB529\uC744 \uC81C\uC678\uD55C \uAE38\uC774\uAC00 4\uC758 \uBC30\uC218\uC5EC\uC57C \uD569\uB2C8\uB2E4.\n // \uC815\uADDC\uC2DD\uB9CC\uC73C\uB85C\uB294 \uC774 \uBD80\uBD84\uC744 \uC644\uBCBD\uD788 \uCEE4\uBC84\uD558\uAE30 \uC5B4\uB824\uC6B8 \uC218 \uC788\uC5B4, \uAE38\uC774 \uCCB4\uD06C\uB97C \uCD94\uAC00\uD558\uB294 \uAC83\uC774 \uC88B\uC2B5\uB2C8\uB2E4.\n // \uD558\uC9C0\uB9CC \uD604\uC7AC \uC81C\uACF5\uB41C \uC815\uADDC\uC2DD\uC740 \uC774 \uBD80\uBD84\uC744 \uC5B4\uB290 \uC815\uB3C4 \uACE0\uB824\uD558\uACE0 \uC788\uC2B5\uB2C8\uB2E4.\n // (([A-Za-z0-9+/]{4})* \uBD80\uBD84\uACFC \uD328\uB529 \uBD80\uBD84)\n\n if (base64Data === '' || base64Data.length % 4 !== 0) {\n // \uBE48 \uBB38\uC790\uC5F4\uC774\uAC70\uB098, \uAE38\uC774\uAC00 4\uC758 \uBC30\uC218\uAC00 \uC544\uB2C8\uBA74 (\uC77C\uBC18\uC801\uC73C\uB85C) \uC720\uD6A8\uD55C base64\uAC00 \uC544\uB2D8.\n // (\uB2E8, \uC77C\uBD80 \uB77C\uC774\uBE0C\uB7EC\uB9AC\uB294 \uD328\uB529\uC774 \uC5C6\uB294 base64\uB3C4 \uD5C8\uC6A9\uD558\uBBC0\uB85C, \uC5C4\uACA9\uD55C \uAE30\uC900\uC5D0 \uB530\uB77C \uB2E4\uB984)\n // \uD604\uC7AC \uC815\uADDC\uC2DD\uC740 \uD328\uB529\uC774 \uC62C\uBC14\uB974\uAC8C \uC801\uC6A9\uB41C \uACBD\uC6B0 \uAE38\uC774\uAC00 4\uC758 \uBC30\uC218\uAC00 \uC544\uB2CC \uACBD\uC6B0\uB3C4 \uD1B5\uACFC\uC2DC\uD0AC \uC218 \uC788\uC74C\n // \uC608: \"QQ\" (\uAE38\uC774 2) -> false, \"QQQ\" (\uAE38\uC774 3) -> false\n // \"QQ==\" (\uAE38\uC774 4) -> true, \"QQQ=\" (\uAE38\uC774 4) -> true\n // \"QQQ\"\uB294 `base64Regex.test(\"QQQ\")`\uB294 false\uC774\uC9C0\uB9CC, `Buffer.from(\"QQQ\", \"base64\").toString(\"base64\")`\uB294 \"QQ==\"\uB97C \uBC18\uD658.\n // \uC5C4\uBC00\uD558\uAC8C\uB294 \uB514\uCF54\uB529 \uC2DC\uB3C4 \uD6C4 \uB2E4\uC2DC \uC778\uCF54\uB529\uD574\uC11C \uC6D0\uBCF8\uACFC \uAC19\uC740\uC9C0 \uBE44\uAD50\uD558\uB294 \uAC83\uC774 \uAC00\uC7A5 \uD655\uC2E4\uD558\uC9C0\uB9CC, \uC131\uB2A5 \uC774\uC288\uAC00 \uC788\uC744 \uC218 \uC788\uC74C.\n }\n\n\n return base64Regex.test(base64Data);\n }\n}\n", "export namespace ArrayUtils {\n export type PickChanceType<T> = { data: T, chance: number };\n // export const uniqueBy = <T>(array: T[], predicate: (a: T, b: T) => boolean): T[] => {\n // return array.filter((item, index, self) =>\n // index === self.findIndex((other) => predicate(item, other))\n // );\n // };\n export const split = <T>(data: T[], length: number) => {\n const result: T[][] = [];\n for (let i = 0; i < data.length; i += length) {\n result.push(data.slice(i, i + length));\n }\n return result;\n }\n\n export const create2DArray = <T>(rows: number, cols: number, initialValue: T | ((row: number, cols: number) => T)): T[][] => {\n const array: T[][] = [];\n for (let row = 0; row < rows; row++) {\n const rowArray: T[] = [];\n for (let col = 0; col < cols; col++) {\n if (typeof initialValue === 'function') {\n rowArray.push((initialValue as (row: number, col: number) => T)(row, col));\n } else {\n rowArray.push(initialValue as T);\n }\n }\n array.push(rowArray);\n }\n return array;\n\n }\n export const toShuffle = <T>(data: T[]): T[] => {\n const array = [...data];\n for (let i = array.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n [array[i], array[j]] = [array[j], array[i]];\n }\n return array;\n };\n\n // export function maxLength<T>(array: T[]): number;\n // export function maxLength<T>(array: T[][]): { maxRows: number; maxCols: number };\n // export function maxLength<T>(array: T[][][] ): { maxRows: number; maxCols: number };\n // export function maxLength <T>(array: T[] | T[][] | T[][][] ): { maxRows: number; maxCols: number } | number {\n // if (Array.isArray(array[0])) {\n // return { maxRows: array.length, maxCols: Math.max(...array.map(row => row.length), 0) };\n // } else {\n // return array.length;\n // }\n // }\n\n // export type Space = { x: number, y: number, w: number, h: number };\n // export const pickRandomSpace = (array: Space[], where: { w: number, h: number }): { x: number, y: number } | undefined => {\n // const minmax = ConvertUtils.minMaxCenterAvg(array ?? [])\n // // 2\uCC28 \uBC30\uC5F4\uB85C \uBCC0\uD658, \uACB9\uCE58\uB294 \uC601\uC5ED\uC774 \uC788\uC73C\uBA74 3\uCC28 \uBC30\uC5F4\uB85C \uCD94\uAC00\n // const cellSizes2D: Space[][][] = Array.from({length: minmax.y?.max ?? 0}, () =>\n // Array.from({length: minmax.x?.max ?? 0}, () => [])\n // );\n //\n // array.forEach(it => {\n // cellSizes2D[it.y] = cellSizes2D[it.y] || [];\n // if (!cellSizes2D[it.y][it.x]) {\n // // @ts-ignore\n // cellSizes2D[it.y][it.x] = it;\n // } else {\n // // \uC774\uBBF8 \uAC12\uC774 \uC788\uC73C\uBA74 3\uCC28 \uBC30\uC5F4\uB85C \uACB9\uCE58\uB294 \uAC12 \uCD94\uAC00\n // if (!Array.isArray(cellSizes2D[it.y][it.x])) {\n // // @ts-ignore\n // cellSizes2D[it.y][it.x] = [cellSizes2D[it.y][it.x]];\n // }\n // (cellSizes2D[it.y][it.x]).push(it);\n // }\n // });\n // const cellSizes = cellSizes2D.flatMap((it, y) => it.map((it, x) => {\n // const minmax = ConvertUtils.minMaxCenterAvg(Array.isArray(it) ? it : [it])\n // return {\n // x: x,\n // y: y,\n // w: minmax.w?.max ?? 0,\n // h: minmax.h?.max ?? 0,\n // overlay: 0,\n // }\n // }));\n //\n // // const cellSizes = array.map(it=> ({...it, overlay: 0}));\n //\n //\n // cellSizes.filter(it => it.w > 0 && it.h > 0).forEach(it => {\n // const wantW = it.w - 1; // \uC790\uAE30\uC790\uC2E0\uD3EC\uD568\uD574\uC11Cw\uB2C8\uAE50 -1\n // const wantH = it.h - 1;\n // const finds = cellSizes.filter(cit =>\n // (cit.x <= (it.x + wantW)) && (cit.x >= it.x) &&\n // (cit.y <= (it.y + wantH)) && (cit.y >= it.y)\n // );\n // finds.forEach(it => it.overlay++);\n // })\n //\n // const wantW = where.w - 1;\n // const wantH = where.h - 1; // \uC790\uAE30\uC790\uC2E0 \uD3EC\uD568\uBD80\uD130\uB2C8\uAE50 -1 \uD574\uC900\uB2E4\n // const targetCells = cellSizes.filter(it => it.overlay <= 0)\n // const targetCellsEmpty: { x: number, y: number }[] = [];\n // for (let targetCell of targetCells) {\n // const filter = cellSizes.filter(it =>\n // (it.x <= (targetCell.x + wantW)) && (it.x >= targetCell.x) &&\n // (it.y <= (targetCell.y + wantH)) && (it.y >= targetCell.y)\n // );\n // const overlaySum = MathUtil.sum(filter.map(it => it.overlay ?? 0));\n // // console.log('------>!!!!',filter.length, targetCell,where.w, where.h, (where.w * where.h), overlaySum)\n // if (filter.length === where.w * where.h && overlaySum === 0) {\n // targetCellsEmpty.push(targetCell);\n // }\n // }\n // return ArrayUtils.pick(targetCellsEmpty);\n // }\n\n\n export const popPick = <T>(array: T[]): T => {\n const index = Math.floor(Math.random() * array.length);\n return array.splice(index, 1)[0];\n }\n\n export const chancePick = <T>(array: PickChanceType<T>[], config?: {}): T => {\n const totalChance = array.reduce((sum, item) => sum + item.chance, 0);\n let randomValue = Math.random() * totalChance;\n\n for (const item of array) {\n if (randomValue < item.chance) {\n return item.data;\n }\n randomValue -= item.chance;\n }\n return pick(array.map(it => it.data))\n }\n\n export function pick<T>(array: T[], count: number): T[];\n export function pick<T>(array: T[]): T | undefined;\n export function pick<T>(array: T[][]): T[] | undefined;\n export function pick<T>(array: T[], count?: number): T[] | T | undefined {\n if (array.length === 0 && count !== undefined) {\n return [];\n }\n\n if (count === undefined) {\n return array[Math.floor(Math.random() * array.length)];\n }\n\n const result: T[] = [];\n const usedIndices = new Set<number>();\n while (result.length < count && usedIndices.size < array.length) {\n const randomIndex = Math.floor(Math.random() * array.length);\n if (!usedIndices.has(randomIndex)) {\n result.push(array[randomIndex]);\n usedIndices.add(randomIndex);\n }\n }\n return result;\n }\n\n export function maxLength<T>(array?: T[][]): { maxRows: number; maxCols: number, maxRowsCols: number, total: number; } {\n if (!array) {\n return {maxRows: 0, maxCols: 0, maxRowsCols: 0, total: 0};\n }\n const maxRows = array.length;\n const maxCols = Math.max(...array.map(row => row.length), 0);\n return {\n maxRows: maxRows,\n maxCols: maxCols,\n maxRowsCols: Math.max(maxCols, maxRows),\n total: array.reduce((total, row) => total + row.length, 0)\n }\n }\n\n // export const include = <T>(array:T[] | null = []) => {\n //\n // }\n export const toPush = <T>(array: T[] | null = [], ...data: T[]) => {\n return [...(array ?? []), ...data];\n }\n\n export const toRemove = <T>(array: T[] | null = [], ...data: T[]) => {\n return (array ?? []).filter(item => !data.includes(item));\n }\n\n export const toFilterOut = <T>(array: T[] | null = [], predicate: (item: T) => boolean): T[] => {\n return (array ?? []).filter(item => !predicate(item));\n }\n\n export const toFilter = <T>(array: T[] | null = [], predicate: (item: T) => boolean): T[] => {\n return (array ?? []).filter(item => predicate(item));\n }\n\n export const hasAll = <T>(array: T[] | null = [], ...targetArray: T[]): boolean => {\n return targetArray.every(item => (array ?? []).includes(item));\n }\n\n export const has = <T>(array: T[] | null = [], ...targetArray: T[]): boolean => {\n return targetArray.some(item => (array ?? []).includes(item));\n }\n\n export const hasNot = <T>(array: T[] | null = [], ...targetArray: T[]): boolean => {\n return targetArray.some(item => !(array ?? []).includes(item));\n }\n\n export const hasAllNot = <T>(array: T[] | null = [], ...targetArray: T[]): boolean => {\n return targetArray.every(item => !(array ?? []).includes(item));\n }\n\n// \uC5EC\uB7EC \uBC30\uC5F4\uC758 \uAD50\uC9D1\uD569, \uD569\uC9D1\uD569, \uCC28\uC9D1\uD569, \uB300\uCE6D \uCC28\uC9D1\uD569\uC744 \uACC4\uC0B0\uD558\uB294 \uD568\uC218\n export const relation = <T>(...arrays: T[][]): {\n intersection: T[];\n union: T[];\n difference: T[];\n symmetricDifference: T[];\n } => {\n // \uBC30\uC5F4\uC774 \uC5C6\uAC70\uB098 \uBE48 \uACBD\uC6B0 \uCC98\uB9AC\n if (arrays.length === 0) {\n return {\n intersection: [],\n union: [],\n difference: [],\n symmetricDifference: []\n };\n }\n\n // \uBC30\uC5F4\uC744 Set \uBC30\uC5F4\uB85C \uBCC0\uD658 (\uC911\uBCF5 \uC81C\uAC70)\n const sets = arrays.map((arr) => new Set<T>(arr));\n\n // \uAD50\uC9D1\uD569: \uBAA8\uB4E0 \uBC30\uC5F4\uC5D0 \uACF5\uD1B5\uC73C\uB85C \uC874\uC7AC\uD558\uB294 \uC694\uC18C\n // @ts-ignore\n const intersection = [...sets[0]].filter((item) =>\n sets.every((set) => set.has(item))\n );\n // const intersection = [...sets.reduce((acc, set) =>\n // new Set([...acc].filter((item) => set.has(item)))\n // )];\n\n\n // \uD569\uC9D1\uD569: \uBAA8\uB4E0 \uBC30\uC5F4\uC758 \uC694\uC18C\uB97C \uD569\uCE5C \uD6C4 \uC911\uBCF5 \uC81C\uAC70\n // @ts-ignore\n const union = [...new Set(arrays.flat())];\n\n // \uCC28\uC9D1\uD569: \uCCAB \uBC88\uC9F8 \uBC30\uC5F4\uC5D0\uC11C \uB098\uBA38\uC9C0 \uBC30\uC5F4\uC5D0 \uC5C6\uB294 \uC694\uC18C\n // @ts-ignore\n const difference = [...sets[0]].filter((item) =>\n sets.slice(1).every((set) => !set.has(item))\n );\n\n // \uB300\uCE6D \uCC28\uC9D1\uD569: \uAC01 \uBC30\uC5F4\uC5D0\uC11C \uB2E4\uB978 \uBC30\uC5F4\uC5D0 \uC5C6\uB294 \uC694\uC18C\uB4E4\uC758 \uD569\uC9D1\uD569\n const allUniqueElements = new Set<T>();\n for (let i = 0; i < sets.length; i++) {\n const currentSet = sets[i];\n const otherSetsUnion = new Set<T>(\n arrays\n .filter((_, index) => index !== i)\n .flat()\n );\n // @ts-ignore\n const uniqueToCurrent = [...currentSet].filter(\n (item) => !otherSetsUnion.has(item)\n );\n uniqueToCurrent.forEach((item) => allUniqueElements.add(item));\n }\n // @ts-ignore\n const symmetricDifference = [...allUniqueElements];\n\n return {\n intersection,\n union,\n difference,\n symmetricDifference\n };\n };\n}", "import {ValidUtils} from \"./valid\";\n// \uD074\uB798\uC2A4 \uD0C0\uC785 \uC815\uC758\nexport type ClassType<T = any> = abstract new (...args: any[]) => T;\nexport type WithRequiredProperty<Type, Key extends keyof Type> = Type & {\n [Property in Key]-?: Type[Property];\n};\n\nexport type OptionalType<T, K extends keyof T> = Pick<Partial<T>, K> & Omit<T, K>;\nexport type KeysWithValsOfType<T, V> = keyof { [P in keyof T as T[P] extends V ? P : never]: P };\nexport type PropType<T> = {\n [P in keyof T]: T[P];\n};\nexport type ArrayElementType<T> = T extends (infer U)[] ? U : never;\nexport type PickMix<T, M, K extends keyof T> = {\n [P in K]: T[P] & M;\n};\nexport type PickArrayElementMix<T, M, K extends keyof T> = {\n [P in K]: (ArrayElementType<T[P]> & M)[];\n};\nexport type ChangeArrayElement<T, M> = T extends (infer U)[] ? M[] : never;\nexport type ChangeArrayElementMix<T, M> = T extends (infer U)[] ? (U & M)[] : never;\nexport type ChangePickArrayElementMix<T, M, K extends keyof T> = Omit<T, K> & PickArrayElementMix<T, M, K>;\n\n// InstanceType\nexport interface ConstructorType<T> {\n new (...args: any[]): T;\n}\nexport type Method = (...args: any[]) => any; // Function\nexport type MethodKeys<T> = { [K in keyof T]: T[K] extends Function ? K : never }[keyof T];\nexport type NonMethodKeys<T> = { [K in keyof T]: T[K] extends Function ? never : K }[keyof T];\nexport type GenericClassDecorator<T> = (target: T) => void;\n// declare type ClassDecorator = <TFunction extends Function>(target: TFunction) => TFunction | void;\n// export type ReflectField = PropertyDecorator\n// export type ReflectMethod = MethodDecorator\nexport type MethodParameter = (target: Object, propertyKey: string | symbol, parameterIndex: number) => void;\n\ntype Reverse<TupleType extends any[], ReversedTupleType extends any[] = []> = {\n 0: ReversedTupleType;\n 1: TupleType extends [infer Head, ...infer Tail] ? Reverse<Tail, [Head, ...ReversedTupleType]> : never;\n}[TupleType extends [] ? 0 : 1];\n\n//\ntype UnionToIntersection<U> = (U extends unknown ? (arg: U) => 0 : never) extends (arg: infer I) => 0 ? I : never;\n\n/**\n * LastInUnion<1 | 2> = 2.\n */\ntype LastInUnion<U> =\n UnionToIntersection<U extends unknown ? (x: U) => 0 : never> extends (x: infer L) => 0 ? L : never;\n\n/**\n * UnionToTuple<1 | 2> = [1, 2].\n */\nexport type UnionToTuple<U, Last = LastInUnion<U>> = [U] extends [never]\n ? []\n : [...UnionToTuple<Exclude<U, Last>>, Last];\n\nexport type FilterUndefined<T extends unknown[]> = T extends []\n ? []\n : T extends [infer H, ...infer R]\n ? H extends undefined\n ? FilterUndefined<R>\n : [H, ...FilterUndefined<R>]\n : T;\n\nexport type FilterNever<T extends unknown[]> = T extends []\n ? []\n : T extends [infer H, ...infer R]\n ? H extends never\n ? FilterUndefined<R>\n : [H, ...FilterUndefined<R>]\n : T;\n\nexport type Mutable<T> = {\n -readonly [P in keyof T]: T[P];\n};\nexport type ExtractNotNullish<T> = T extends null | undefined ? never : T;\nexport type FilterNullish<T> = T extends [infer E, ...infer Rest]\n ? [ExtractNotNullish<E>, ...FilterNullish<Rest>]\n : T extends (infer E)[]\n ? ExtractNotNullish<E>[]\n : ExtractNotNullish<T>;\n\nexport type ExtractNotFalsy<T> = T extends false ? never : T;\nexport type FilterFalsy<T> = T extends [infer E, ...infer Rest]\n ? [ExtractNotFalsy<E>, ...FilterFalsy<Rest>]\n : T extends (infer E)[]\n ? ExtractNotFalsy<E>[]\n : ExtractNotFalsy<T>;\nexport type FieldType<T, F> = Record<keyof T, F>;\nexport type FieldUnionType<T, F> = {\n [P in keyof T]: T[P] | F;\n};\nexport type FieldReplaceType<T, F extends keyof T, R> = Omit<T, F> & {\n [P in F]: R;\n};\nexport type FieldPartialType<T, F extends keyof T> = Omit<T, F> & {\n [P in F]?: T[P];\n};\nexport type FieldRequiredType<T, F extends keyof T> = Omit<T, F> & {\n [P in F]-?: T[P];\n};\nexport type FieldReadonlyType<T, F extends keyof T> = Omit<T, F> & {\n readonly [P in F]: T[P];\n};\nexport type FieldMutableType<T, F extends keyof T> = Omit<T, F> & {\n -readonly [P in F]: T[P];\n};\n\n\n\nexport type Dictionary<T = any> = Record<string | number, T>;\ntype GetKeys<T> = T extends unknown[]\n ? T extends [] // special case empty tuple => no keys\n ? never\n : '0' extends keyof T // any tuple with at least one element\n ? Exclude<keyof T, keyof []>\n : number // other array\n : keyof T; // not an array\nexport type Stringify<T> = T extends string | number ? `${T}` : never;\nexport type FlattenObjectKeys<T extends Dictionary | any[]> =\n Stringify<GetKeys<T>> extends infer StringKey extends string | number\n ? [StringKey] extends [never]\n ? never\n : StringKey extends keyof T\n ? T[StringKey] extends Dictionary | any[]\n ?\n | StringKey\n | `${StringKey}.${FlattenObjectKeys<T[StringKey]>}`\n | `${StringKey}[${keyof T[StringKey] & number}]`\n | `${StringKey}[${keyof T[StringKey] & number}].${FlattenObjectKeys<T[StringKey][number]>}`\n : StringKey\n : never\n : never;\n\ntype GetType<T, K> = K extends keyof T ? T[K] : K extends `${number}` ? (T extends any[] ? T[number] : never) : never;\nexport type FlattenObjectType<T, Path = Stringify<keyof T>> =\n Stringify<keyof T> extends infer StringKey extends string | number\n ? [StringKey] extends [never]\n ? never\n : Path extends `${infer FirstKey}[${infer Index}].${infer Rest}`\n ? FlattenObjectType<GetType<GetType<T, FirstKey>, Index>, Rest>\n : Path extends `${infer FirstKey}.${infer Rest}`\n ? FlattenObjectType<GetType<T, FirstKey>, Rest>\n : Path extends `${infer FirstKey}[${infer Rest}]`\n ? FlattenObjectType<GetType<T, FirstKey>, Rest>\n : GetType<T, Path>\n : never;\n\nexport type FlattenObject<T extends Dictionary> = {\n [FlattenKey in FlattenObjectKeys<T>]: FlattenObjectType<T, FlattenKey>;\n};\n\nexport type FilterTuple<T extends any[]> = '0' extends keyof T ? never : T;\n\nexport type MaybeArray<T> = T | T[];\nexport type With<T extends MaybeArray<Dictionary>, V extends Dictionary> = T extends (infer U)[] ? Array<U & V> : T & V;\n\nexport type Nullable<T> = T | null;\nexport type Nullish<T> = Nullable<T> | undefined;\nexport type NullableObject<T> = {\n [P in keyof T]: Nullable<T[P]>;\n};\nexport type NullableProperty<T, K extends keyof T> = {\n [P in K]: Nullable<T[P]>;\n};\nexport type NullOrUndefined<T> = null | undefined;\nexport type NotNullOrUndefined<T> = T extends null | undefined ? never : T;\nexport type NonNullable<T> = T extends null | undefined ? never : T;\nexport type NonNullableObject<T> = {\n [P in keyof T]-?: NonNullable<T[P]>;\n};\nexport type NonNullableProperty<T, K extends keyof T> = {\n [P in K]-?: NonNullable<T[P]>;\n};\n\nexport type GroupBy<T extends Dictionary, K extends keyof T> = {\n [P in T[K]]: T[];\n};\n\nexport type InferPromise<T> = T extends Promise<infer U> ? U : never;\n\nexport type JoinKeys<T> = {\n [K in keyof T]: K extends string ? `${K}` | `${K}-${JoinKeys<T[K]>}` : never;\n}[keyof T];\n\nexport type FilteredFirstKeys<T, FIRST extends string> = {\n [K in keyof T as K extends `${FIRST}${string}` ? K : never]: T[K];\n};\nexport type ExcludeFilteredFirstKeys<T, FIRST extends string> = {\n [K in keyof T as K extends `${FIRST}${string}` ? never : K]: T[K];\n};\n\nexport type GetDotPath<T, P extends string> = P extends `${infer K}.${infer R}`\n ? K extends keyof T\n ? GetDotPath<T[K], R>\n : never\n : P extends keyof T\n ? T[P]\n : P extends string\n ? T\n : never;\n\nexport type FlatJoinKey<T, J = '.'> = {\n [P in keyof T as T[P] extends object\n ? // @ts-ignore\n `${P}${J}${keyof FlatJoinDotKey<T[P]>}` | `${P}`\n : // @ts-ignore\n `${P}`]: unknown;\n};\nexport type FlatJoinDotKey<T> = {\n [P in keyof T as T[P] extends object\n ? // @ts-ignore\n `${P}.${keyof FlatJoinDotKey<T[P]>}` | `${P}`\n : // @ts-ignore\n `${P}`]: unknown;\n};\nexport type FlatJoinDotKeyType<T> = keyof FlatJoinDotKey<T>;\nexport type FlatJoinKeyType<T, J> = keyof FlatJoinKey<T, J>;\nexport type FlatJoinDotKeyFieldType<T, D> = FieldType<FlatJoinDotKey<T>,D>;\nexport type FlatJoinDotKeyTypePartial<T, D> = Partial<FieldType<FlatJoinDotKey<T>,D>>;\nexport type FlatJoinDotKeyExcludeStartWithUnderBar<T> = {\n [P in keyof T as T[P] extends any\n ? // @ts-ignore\n P extends `_${string}`\n ? never\n : // @ts-ignore\n `${P}.${keyof FlatJoinDotKeyExcludeStartWithUnderBar<T[P]>}` | `${P}`\n : // @ts-ignore\n `${P}`]: unknown;\n};\nexport type FlatJoinSlashKey<T> = {\n [P in keyof T as T[P] extends object\n ? // @ts-ignore\n `${P}/${keyof FlatJoinDotKey<T[P]>}` | `${P}`\n : // @ts-ignore\n `${P}`]: unknown;\n};\nexport type FlatJoinSlashKeyExcludeStartWithUnderBar<T> = {\n [P in keyof T as T[P] extends any\n ? // @ts-ignore\n P extends `_${string}`\n ? never\n : // @ts-ignore\n `${P}/${keyof FlatJoinSlashKeyExcludeStartWithUnderBar<T[P]>}` | `${P}`\n : // @ts-ignore\n `${P}`]: unknown;\n};\nexport type FlatJoinKeyExcludeStartWith<T, J extends string, E extends string> = {\n [P in keyof T as T[P] extends any\n ? // @ts-ignore\n P extends `${E}${string}`\n ? never\n : // @ts-ignore\n `${P}${J}${keyof FlatJoinSlashKeyExcludeStartWithUnderBar<T[P]>}` | `${P}`\n : // @ts-ignore\n `${P}`]: unknown;\n};\n\n\n// https://amit08255.medium.com/the-most-mind-blowing-thing-ive-learned-in-typescript-930926ce848a\nexport type ParseRoute<T extends string> = T extends `/${infer Segment}/${infer Rest}`\n ? Segment extends `:${infer Param}`\n ? { [K in Param]: string } & ParseRoute<`/${Rest}`>\n : ParseRoute<`/${Rest}`>\n : T extends `/:${infer Param}`\n ? { [K in Param]: string }\n : {}\n// type UserRoute = ParseRoute<'/users/:id/posts/:postId'>\n// type UserRoute = { id: string; postId: string }\n// const user:UserRoute = { id: '1', postId: '2' };\n\n\nexport type ParsePath<T extends string> = T extends `/${infer Segment}/${infer Rest}`\n ? [Segment, ...ParsePath<`/${Rest}`>]\n : T extends `/${infer Segment}`\n ? [Segment]\n : []\n// type ApiRoute = ParsePath<\"/api/users/123\"> // [\"api\", \"users\", \"123\"]\n// type InvalidRoute = ParsePath<\"missing-slash\"> // []\n\n\n\nexport type StringValue<T> = {\n [K in keyof T]: T[K] extends object ? StringValue<T[K]> : string;\n};\n\n\n// index\nexport interface ConstructorType<T> {\n new (...args: any[]): T;\n}\n\n// infer\uC640 \uC870\uAC74\uBD80 \uD0C0\uC785\uC73C\uB85C \uD749\uB0B4\uB0B4\uAE30\n// \uAC00\uB054 \"\uC0C1\uC704 \uD0C0\uC785\"\uC73C\uB85C \uC81C\uC57D\uC744 \uB450\uACE0 \uC2F6\uC744 \uB54C\uB294 \uC870\uAC74\uBD80 \uD0C0\uC785\uC744 \uC501\uB2C8\uB2E4:\n// let fn: Super<HttpResponseError<any>>;\n// fn \uC740 HttpResponseError<any> \uC758 \uC0C1\uC704 \uD0C0\uC785 \uD30C\uB77C\uBBF8\uD130\uB3C4 \uBC1B\uC744 \uC218 \uC788\uC74C\n// type Super<T> = T extends HttpResponseError<infer U> ? HttpResponseError<any> : never;\nexport type Super<T> = (arg: T) => void;\n\n// export type GenericClassDecorator<T> = (target: T) => void;\n// export type MethodParameter = (target: Object, propertyKey: string | symbol, parameterIndex: number) => void;\n// export type ExtractNotFalsy<T> = T extends false ? never : T;\n// export type FilterFalsy<T> = T extends [infer E, ...infer Rest]\n// ? [ExtractNotFalsy<E>, ...FilterFalsy<Rest>]\n// : T extends (infer E)[]\n// ? ExtractNotFalsy<E>[]\n// : ExtractNotFalsy<T>;\n//\n// export type Mutable<T> = {\n// -readonly [P in keyof T]: T[P];\n// };\n// NonNullable\nexport type MethodOnlyFieldPostFix<T, S extends string> = {\n [key in keyof T as `${string & key}${S}`]: T[key] extends (...args: any[]) => any ? T[key] : never;\n};\nexport type MethodOnlyFieldPerFix<T, S extends string> = {\n [key in keyof T as `${S}${string & key}`]: T[key] extends (...args: any[]) => any ? T[key] : never;\n};\n// export const isDefined = <T>(value: T | undefined | null): value is T => value !== undefined && value !== null;\n// export const isDefined = <T>(value: T | undefined | null): value is NonNullable<T> => value !== undefined && value !== null;\n// export const isDefined = <T>(value: T | undefined | null): value is T => value !== undefined && value !== null;\nexport const isDefined = ValidUtils.isDefined\n/*\ndeclare type ClassDecorator = <TFunction extends Function>(target: TFunction) => TFunction | void;\ndeclare type PropertyDecorator = (target: Object, propertyKey: string | symbol) => void;\ndeclare type MethodDecorator = <T>(target: Object, propertyKey: string | symbol, descriptor: TypedPropertyDescriptor<T>) => TypedPropertyDescriptor<T> | void;\ndeclare type ParameterDecorator = (target: Object, propertyKey: string | symbol, parameterIndex: number) => void;\n */\n\ndeclare global {\n namespace Reflect {\n function metadata(metadataKey: any, target: Object, propertyKey?: string | symbol): any;\n function getMetadata(metadataKey: any, target: Object, propertyKey?: string | symbol): any;\n function defineMetadata(metadataKey: any, value: any, target: Object, propertyKey?: string | symbol): void;\n function getOwnMetadata(metadataKey: any, target: Object, propertyKey?: string | symbol): any;\n function getMetadataKeys(target: Object): any[];\n }\n}\nexport {};\n", "/**\n * ObjectPathParser - JavaScript \uACBD\uB85C \uD45C\uD604\uC2DD\uC744 \uD30C\uC2F1\uD558\uACE0 Optional Chaining\uC73C\uB85C \uBCC0\uD658\uD558\uB294 \uD30C\uC11C\n * \n * \uD2B8\uB9AC \uAD6C\uC870\uC758 \uD1A0\uD070\uC744 \uC0DD\uC131\uD558\uC5EC \uACC4\uCE35\uC801 \uD45C\uD604\uC2DD\uC744 \uC9C0\uC6D0\n * \n * \uC0AC\uC6A9\uBC95:\n * const parser = new ObjectPathParser('this.obj.func(a.b[0])');\n * const root = parser.getRoot();\n * root.children.forEach(child => console.log(child.type));\n */\n\n// --- Token Types ---\nexport enum TokenType {\n // Leaf tokens\n IDENTIFIER = 'identifier',\n STRING = 'string',\n NUMBER = 'number',\n TEMPLATE_LITERAL = 'template_literal',\n OPERATOR = 'operator',\n WHITESPACE = 'whitespace',\n \n // Structural tokens (can have children)\n MEMBER_EXPRESSION = 'member_expression',\n PROPERTY_ACCESS = 'property_access',\n BRACKET_ACCESS = 'bracket_access',\n FUNCTION_CALL = 'function_call',\n PARENTHESIZED = 'parenthesized',\n OBJECT_LITERAL = 'object_literal',\n ARRAY_LITERAL = 'array_literal',\n TERNARY = 'ternary',\n BINARY = 'binary',\n \n // Root\n ROOT = 'root',\n EOF = 'eof',\n}\n\n// --- Base Token Class ---\nexport class Token {\n public type: TokenType;\n public value: string;\n public start: number;\n public end: number;\n public parent: Token | null = null;\n public children: Token[] = [];\n public isOptional: boolean = false;\n // \uC5F0\uC0B0\uC790 \uC8FC\uBCC0 \uACF5\uBC31 \uBCF4\uC874\uC6A9\n public leftSpace: string = '';\n public rightSpace: string = '';\n\n constructor(type: TokenType, value: string, start: number, end: number) {\n this.type = type;\n this.value = value;\n this.start = start;\n this.end = end;\n }\n\n // --- Child management ---\n addChild(child: Token): this {\n child.parent = this;\n this.children.push(child);\n return this;\n }\n\n getChildren(): Token[] {\n return this.children;\n }\n\n hasChildren(): boolean {\n return this.children.length > 0;\n }\n\n getParent(): Token | null {\n return this.parent;\n }\n\n // --- Type checks ---\n isIdentifier(): boolean { return this.type === TokenType.IDENTIFIER; }\n isString(): boolean { return this.type === TokenType.STRING; }\n isNumber(): boolean { return this.type === TokenType.NUMBER; }\n isTemplateLiteral(): boolean { return this.type === TokenType.TEMPLATE_LITERAL; }\n isOperator(): boolean { return this.type === TokenType.OPERATOR; }\n isWhitespace(): boolean { return this.type === TokenType.WHITESPACE; }\n isMemberExpression(): boolean { return this.type === TokenType.MEMBER_EXPRESSION; }\n isPropertyAccess(): boolean { return this.type === TokenType.PROPERTY_ACCESS; }\n isBracketAccess(): boolean { return this.type === TokenType.BRACKET_ACCESS; }\n isFunctionCall(): boolean { return this.type === TokenType.FUNCTION_CALL; }\n isParenthesized(): boolean { return this.type === TokenType.PARENTHESIZED; }\n isObjectLiteral(): boolean { return this.type === TokenType.OBJECT_LITERAL; }\n isArrayLiteral(): boolean { return this.type === TokenType.ARRAY_LITERAL; }\n isTernary(): boolean { return this.type === TokenType.TERNARY; }\n isBinary(): boolean { return this.type === TokenType.BINARY; }\n isRoot(): boolean { return this.type === TokenType.ROOT; }\n isEOF(): boolean { return this.type === TokenType.EOF; }\n\n // --- Keyword check for identifiers ---\n isKeyword(): boolean {\n if (this.type !== TokenType.IDENTIFIER) return false;\n return ['true', 'false', 'null', 'undefined', 'this', 'window', 'document'].includes(this.value);\n }\n\n // --- Operator checks ---\n isLogicalOperator(): boolean {\n return this.type === TokenType.OPERATOR && (this.value === '||' || this.value === '&&');\n }\n\n isNullishOperator(): boolean {\n return this.type === TokenType.OPERATOR && this.value === '??';\n }\n\n isComparisonOperator(): boolean {\n return this.type === TokenType.OPERATOR && \n ['===', '!==', '==', '!=', '<', '>', '<=', '>='].includes(this.value);\n }\n\n isArithmeticOperator(): boolean {\n return this.type === TokenType.OPERATOR && ['+', '-', '*', '/', '%'].includes(this.value);\n }\n\n // --- Stringify ---\n stringify(): string {\n if (this.children.length === 0) {\n return this.value;\n }\n return this.children.map(c => c.stringify()).join('');\n }\n\n // --- Optional chain conversion ---\n toOptionalChain(isFirst: boolean = false): string {\n switch (this.type) {\n case TokenType.PROPERTY_ACCESS:\n return `?.${this.children.map(c => c.toOptionalChain()).join('')}`;\n \n case TokenType.BRACKET_ACCESS:\n // \uCCAB \uBC88\uC9F8 \uC694\uC18C\uC778 \uACBD\uC6B0 ?. \uCD94\uAC00\uD558\uC9C0 \uC54A\uC74C\n if (isFirst) {\n return `[${this.children.map(c => c.toOptionalChain()).join('')}]`;\n }\n return `?.[${this.children.map(c => c.toOptionalChain()).join('')}]`;\n \n case TokenType.FUNCTION_CALL:\n return `?.(${this.children.map(c => c.toOptionalChain()).join('')})`;\n \n case TokenType.MEMBER_EXPRESSION:\n if (this.children.length === 0) return this.value;\n let result = '';\n for (let i = 0; i < this.children.length; i++) {\n const child = this.children[i];\n // \uCCAB \uBC88\uC9F8 \uC790\uC2DD\uC5D0\uAC8C isFirst=true \uC804\uB2EC\n result += child.toOptionalChain(i === 0);\n }\n return result;\n\n case TokenType.PARENTHESIZED:\n // isOptional\uC774 \uC124\uC815\uB418\uC5B4 \uC788\uC73C\uBA74 ?. \uC811\uADFC\uC73C\uB85C \uCC98\uB9AC\n if (this.isOptional) {\n return `?.(${this.children.map(c => c.toOptionalChain()).join('')})`;\n }\n // \uBD80\uBAA8\uAC00 MEMBER_EXPRESSION\uC774\uACE0 \uCCAB \uBC88\uC9F8 \uC790\uC2DD\uC774 \uC544\uB2C8\uBA74 ?. \uCD94\uAC00\n if (this.parent?.type === TokenType.MEMBER_EXPRESSION && !isFirst) {\n return `?.(${this.children.map(c => c.toOptionalChain()).join('')})`;\n }\n return `(${this.children.map(c => c.toOptionalChain()).join('')})`;\n \n case TokenType.TERNARY:\n // children: [condition, trueBranch, falseBranch]\n if (this.children.length >= 3) {\n return `${this.children[0].toOptionalChain()} ? ${this.children[1].toOptionalChain()} : ${this.children[2].toOptionalChain()}`;\n }\n return this.stringify();\n \n case TokenType.BINARY:\n // children: [left, right], value contains operator\n if (this.children.length >= 2) {\n const op = this.value;\n // \uC6D0\uBCF8 \uACF5\uBC31 \uBCF4\uC874\n const leftSp = this.leftSpace;\n const rightSp = this.rightSpace;\n return `${this.children[0].toOptionalChain()}${leftSp}${op}${rightSp}${this.children[1].toOptionalChain()}`;\n }\n return this.stringify();\n \n case TokenType.ROOT:\n return this.children.map(c => c.toOptionalChain()).join('');\n \n case TokenType.OBJECT_LITERAL:\n case TokenType.ARRAY_LITERAL:\n case TokenType.STRING:\n case TokenType.NUMBER:\n case TokenType.TEMPLATE_LITERAL:\n return this.value;\n \n case TokenType.OPERATOR:\n // Unary operator with children (e.g., !expr)\n if (this.children.length > 0) {\n return `${this.value}${this.children.map(c => c.toOptionalChain()).join('')}`;\n }\n return this.value;\n \n default:\n return this.value;\n }\n }\n\n // --- Tree traversal ---\n walk(callback: (token: Token, depth: number) => void, depth: number = 0): void {\n callback(this, depth);\n for (const child of this.children) {\n child.walk(callback, depth + 1);\n }\n }\n\n find(predicate: (token: Token) => boolean): Token | null {\n if (predicate(this)) return this;\n for (const child of this.children) {\n const found = child.find(predicate);\n if (found) return found;\n }\n return null;\n }\n\n findAll(predicate: (token: Token) => boolean): Token[] {\n const results: Token[] = [];\n this.walk((token) => {\n if (predicate(token)) results.push(token);\n });\n return results;\n }\n}\n\n\n// --- ObjectPathParser Class ---\nexport class ObjectPathParser {\n private input: string;\n private pos: number = 0;\n private root: Token;\n\n constructor(input: string = '') {\n this.input = input;\n this.root = new Token(TokenType.ROOT, '', 0, input.length);\n if (input) {\n this.parse();\n }\n }\n\n // --- Getters ---\n getInput(): string {\n return this.input;\n }\n\n getRoot(): Token {\n return this.root;\n }\n\n getTokens(): Token[] {\n return this.root.children;\n }\n\n // --- Flat token list (for backward compatibility) ---\n getFlatTokens(): Token[] {\n const tokens: Token[] = [];\n this.root.walk((token) => {\n if (token.type !== TokenType.ROOT) {\n tokens.push(token);\n }\n });\n return tokens;\n }\n\n // --- Helper methods ---\n isFunctionScript(): boolean {\n return this.input.trim().startsWith('function');\n }\n\n isArrowFunctionScript(): boolean {\n return /^\\s*\\([^)]*\\)\\s*=>/.test(this.input);\n }\n\n isObjectLiteralInput(): boolean {\n const trimmed = this.input.trim();\n return trimmed.startsWith('{') && trimmed.endsWith('}');\n }\n\n\n // --- Tokenizer helpers ---\n private peek(offset: number = 0): string {\n return this.input[this.pos + offset] || '';\n }\n\n private advance(): string {\n return this.input[this.pos++] || '';\n }\n\n private isEOF(): boolean {\n return this.pos >= this.input.length;\n }\n\n private skipWhitespace(): void {\n while (!this.isEOF() && /\\s/.test(this.peek())) {\n this.advance();\n }\n }\n\n // --- Main parse method ---\n private parse(): void {\n this.pos = 0;\n this.root = new Token(TokenType.ROOT, '', 0, this.input.length);\n \n while (!this.isEOF()) {\n this.skipWhitespace();\n if (this.isEOF()) break;\n \n const token = this.parseExpression();\n if (token) {\n this.root.addChild(token);\n }\n }\n }\n\n private parseExpression(): Token | null {\n this.skipWhitespace();\n if (this.isEOF()) return null;\n\n // Check for ternary operator at top level\n const ternary = this.tryParseTernary();\n if (ternary) return ternary;\n\n // Check for binary operators\n const binary = this.tryParseBinary();\n if (binary) return binary;\n\n // Parse primary expression (member expression, literal, etc.)\n return this.parsePrimaryExpression();\n }\n\n\n private parsePrimaryExpression(): Token | null {\n this.skipWhitespace();\n if (this.isEOF()) return null;\n\n const start = this.pos;\n const char = this.peek();\n\n // String literal\n if (char === \"'\" || char === '\"') {\n return this.parseString(char);\n }\n\n // Template literal\n if (char === '`') {\n return this.parseTemplateLiteral();\n }\n\n // Object literal\n if (char === '{') {\n return this.parseObjectLiteral();\n }\n\n // Array literal or bracket access at start\n if (char === '[') {\n return this.parseArrayOrBracket();\n }\n\n // Parenthesized expression\n if (char === '(') {\n return this.parseParenthesized();\n }\n\n // Number\n if (/\\d/.test(char)) {\n return this.parseNumber();\n }\n\n // Identifier (start of member expression)\n if (/[a-zA-Z_$]/.test(char)) {\n return this.parseMemberExpression();\n }\n\n // Unary NOT operator (!)\n if (char === '!') {\n return this.parseUnaryNot();\n }\n\n // Operator\n if (this.isOperatorChar(char)) {\n return this.parseOperator();\n }\n\n // Unknown - skip\n this.advance();\n return null;\n }\n\n // Parse unary NOT operator (!expr)\n private parseUnaryNot(): Token {\n const start = this.pos;\n this.advance(); // consume !\n \n this.skipWhitespace();\n \n // Parse the expression after !\n const expr = this.parsePrimaryExpression();\n if (expr) {\n // Create a unary token that wraps the expression\n const unary = new Token(TokenType.OPERATOR, '!', start, this.pos);\n unary.addChild(expr);\n return unary;\n }\n \n return new Token(TokenType.OPERATOR, '!', start, this.pos);\n }\n\n\n private parseMemberExpression(): Token {\n const start = this.pos;\n const memberExpr = new Token(TokenType.MEMBER_EXPRESSION, '', start, start);\n\n // Parse the base identifier\n const identifier = this.parseIdentifier();\n memberExpr.addChild(identifier);\n\n // Parse chain of accesses\n while (!this.isEOF()) {\n const char = this.peek();\n\n // Optional chaining: ?.\n if (char === '?' && this.peek(1) === '.') {\n this.advance(); this.advance(); // consume ?.\n \n if (this.peek() === '[') {\n // ?.[\n const bracket = this.parseBracketAccess(true);\n memberExpr.addChild(bracket);\n } else if (this.peek() === '(') {\n // ?.(\n const funcCall = this.parseFunctionCall(true);\n memberExpr.addChild(funcCall);\n } else {\n // ?.property\n const prop = this.parsePropertyAccess(true);\n memberExpr.addChild(prop);\n }\n }\n // Regular dot access\n else if (char === '.') {\n this.advance(); // consume .\n // Check if next is parenthesis (e.g., a.(b).c)\n if (this.peek() === '(') {\n const paren = this.parseParenthesizedAccess(false);\n memberExpr.addChild(paren);\n } else {\n const prop = this.parsePropertyAccess(false);\n memberExpr.addChild(prop);\n }\n }\n // Bracket access\n else if (char === '[') {\n const bracket = this.parseBracketAccess(false);\n memberExpr.addChild(bracket);\n }\n // Function call\n else if (char === '(') {\n const funcCall = this.parseFunctionCall(false);\n memberExpr.addChild(funcCall);\n }\n else {\n break;\n }\n }\n\n memberExpr.end = this.pos;\n memberExpr.value = this.input.substring(start, this.pos);\n return memberExpr;\n }\n\n // \uAD04\uD638\uB85C \uAC10\uC2F8\uC9C4 \uC18D\uC131 \uC811\uADFC (e.g., a.(b).c)\n private parseParenthesizedAccess(isOptional: boolean): Token {\n const start = this.pos;\n this.advance(); // consume (\n \n const paren = new Token(TokenType.PARENTHESIZED, '', start, start);\n paren.isOptional = isOptional;\n \n let depth = 1;\n let content = '';\n \n while (!this.isEOF() && depth > 0) {\n const char = this.peek();\n if (char === '(') depth++;\n else if (char === ')') {\n depth--;\n if (depth === 0) break;\n }\n content += this.advance();\n }\n \n if (content.trim()) {\n const innerParser = new ObjectPathParser(content);\n for (const child of innerParser.getTokens()) {\n paren.addChild(child);\n }\n }\n \n if (this.peek() === ')') this.advance(); // consume )\n \n paren.end = this.pos;\n paren.value = this.input.substring(start, this.pos);\n return paren;\n }\n\n\n private parseIdentifier(): Token {\n const start = this.pos;\n let value = '';\n while (!this.isEOF() && /[a-zA-Z0-9_$]/.test(this.peek())) {\n value += this.advance();\n }\n return new Token(TokenType.IDENTIFIER, value, start, this.pos);\n }\n\n private parsePropertyAccess(isOptional: boolean): Token {\n const start = this.pos;\n const prop = new Token(TokenType.PROPERTY_ACCESS, '', start, start);\n prop.isOptional = isOptional;\n \n const identifier = this.parseIdentifier();\n prop.addChild(identifier);\n \n prop.end = this.pos;\n prop.value = this.input.substring(start, this.pos);\n return prop;\n }\n\n private parseBracketAccess(isOptional: boolean): Token {\n const start = this.pos;\n this.advance(); // consume [\n \n const bracket = new Token(TokenType.BRACKET_ACCESS, '', start, start);\n bracket.isOptional = isOptional;\n \n // Parse content inside brackets\n const contentStart = this.pos;\n let depth = 1;\n let content = '';\n \n while (!this.isEOF() && depth > 0) {\n const char = this.peek();\n if (char === '[') depth++;\n else if (char === ']') {\n depth--;\n if (depth === 0) break;\n }\n content += this.advance();\n }\n \n // Parse the content as expression\n if (content.trim()) {\n const innerParser = new ObjectPathParser(content);\n for (const child of innerParser.getTokens()) {\n bracket.addChild(child);\n }\n }\n \n if (this.peek() === ']') this.advance(); // consume ]\n \n bracket.end = this.pos;\n bracket.value = this.input.substring(start, this.pos);\n return bracket;\n }\n\n\n private parseFunctionCall(isOptional: boolean): Token {\n const start = this.pos;\n this.advance(); // consume (\n \n const funcCall = new Token(TokenType.FUNCTION_CALL, '', start, start);\n funcCall.isOptional = isOptional;\n \n // Parse arguments\n let depth = 1;\n let content = '';\n \n while (!this.isEOF() && depth > 0) {\n const char = this.peek();\n if (char === '(') depth++;\n else if (char === ')') {\n depth--;\n if (depth === 0) break;\n }\n content += this.advance();\n }\n \n // Parse arguments as expressions\n if (content.trim()) {\n const innerParser = new ObjectPathParser(content);\n for (const child of innerParser.getTokens()) {\n funcCall.addChild(child);\n }\n }\n \n if (this.peek() === ')') this.advance(); // consume )\n \n funcCall.end = this.pos;\n funcCall.value = this.input.substring(start, this.pos);\n return funcCall;\n }\n\n private parseParenthesized(): Token {\n const start = this.pos;\n this.advance(); // consume (\n \n const paren = new Token(TokenType.PARENTHESIZED, '', start, start);\n \n let depth = 1;\n let content = '';\n \n while (!this.isEOF() && depth > 0) {\n const char = this.peek();\n if (char === '(') depth++;\n else if (char === ')') {\n depth--;\n if (depth === 0) break;\n }\n content += this.advance();\n }\n \n if (content.trim()) {\n const innerParser = new ObjectPathParser(content);\n for (const child of innerParser.getTokens()) {\n paren.addChild(child);\n }\n }\n \n if (this.peek() === ')') this.advance(); // consume )\n \n paren.end = this.pos;\n paren.value = this.input.substring(start, this.pos);\n \n // Check if followed by member access (e.g., (expr).prop or (expr)[0] or (expr)?.prop)\n if (this.peek() === '.' || this.peek() === '[' || (this.peek() === '?' && this.peek(1) === '.')) {\n const memberExpr = new Token(TokenType.MEMBER_EXPRESSION, '', start, start);\n memberExpr.addChild(paren);\n \n while (!this.isEOF()) {\n const char = this.peek();\n // Optional chaining: ?.\n if (char === '?' && this.peek(1) === '.') {\n this.advance(); this.advance(); // consume ?.\n if (this.peek() === '[') {\n const bracket = this.parseBracketAccess(true);\n memberExpr.addChild(bracket);\n } else if (this.peek() === '(') {\n const funcCall = this.parseFunctionCall(true);\n memberExpr.addChild(funcCall);\n } else {\n const prop = this.parsePropertyAccess(true);\n memberExpr.addChild(prop);\n }\n } else if (char === '.') {\n this.advance(); // consume .\n if (this.peek() === '(') {\n const parenAccess = this.parseParenthesizedAccess(false);\n memberExpr.addChild(parenAccess);\n } else {\n const prop = this.parsePropertyAccess(false);\n memberExpr.addChild(prop);\n }\n } else if (char === '[') {\n const bracket = this.parseBracketAccess(false);\n memberExpr.addChild(bracket);\n } else {\n break;\n }\n }\n \n memberExpr.end = this.pos;\n memberExpr.value = this.input.substring(start, this.pos);\n return memberExpr;\n }\n \n return paren;\n }\n\n\n private parseString(quote: string): Token {\n const start = this.pos;\n let value = this.advance(); // opening quote\n \n while (!this.isEOF() && this.peek() !== quote) {\n if (this.peek() === '\\\\') {\n value += this.advance();\n if (!this.isEOF()) value += this.advance();\n } else {\n value += this.advance();\n }\n }\n \n if (!this.isEOF()) value += this.advance(); // closing quote\n \n return new Token(TokenType.STRING, value, start, this.pos);\n }\n\n private parseTemplateLiteral(): Token {\n const start = this.pos;\n let value = this.advance(); // opening `\n let depth = 0;\n \n while (!this.isEOF()) {\n const char = this.peek();\n \n if (char === '`' && depth === 0) {\n value += this.advance();\n break;\n }\n \n // Handle ${...} expressions - process them for optional chaining\n if (char === '$' && this.peek(1) === '{') {\n value += this.advance(); // $\n value += this.advance(); // {\n depth++;\n \n // Collect the expression inside ${...}\n let exprContent = '';\n let exprDepth = 1;\n while (!this.isEOF() && exprDepth > 0) {\n const c = this.peek();\n if (c === '{') exprDepth++;\n else if (c === '}') {\n exprDepth--;\n if (exprDepth === 0) break;\n }\n exprContent += this.advance();\n }\n \n // Process the expression for optional chaining\n if (exprContent.trim()) {\n const innerParser = new ObjectPathParser(exprContent);\n value += innerParser.toOptionalChainPath();\n }\n \n if (this.peek() === '}') {\n value += this.advance(); // }\n depth--;\n }\n continue;\n }\n \n if (char === '\\\\') {\n value += this.advance();\n if (!this.isEOF()) value += this.advance();\n } else {\n value += this.advance();\n }\n }\n \n return new Token(TokenType.TEMPLATE_LITERAL, value, start, this.pos);\n }\n\n private parseNumber(): Token {\n const start = this.pos;\n let value = '';\n while (!this.isEOF() && /[\\d.]/.test(this.peek())) {\n value += this.advance();\n }\n return new Token(TokenType.NUMBER, value, start, this.pos);\n }\n\n\n private parseObjectLiteral(): Token {\n const start = this.pos;\n this.advance(); // consume {\n \n let depth = 1;\n let content = '{';\n \n while (!this.isEOF() && depth > 0) {\n const char = this.peek();\n if (char === '{') depth++;\n else if (char === '}') depth--;\n content += this.advance();\n }\n \n return new Token(TokenType.OBJECT_LITERAL, content, start, this.pos);\n }\n\n private parseArrayOrBracket(): Token {\n const start = this.pos;\n this.advance(); // consume [\n \n let depth = 1;\n let content = '';\n \n while (!this.isEOF() && depth > 0) {\n const char = this.peek();\n if (char === '[') depth++;\n else if (char === ']') {\n depth--;\n if (depth === 0) break;\n }\n content += this.advance();\n }\n \n if (this.peek() === ']') this.advance();\n \n // Check if this is followed by member access (then it's bracket access at start)\n if (this.peek() === '.' || this.peek() === '[') {\n const bracket = new Token(TokenType.BRACKET_ACCESS, `[${content}]`, start, this.pos);\n if (content.trim()) {\n const innerParser = new ObjectPathParser(content);\n for (const child of innerParser.getTokens()) {\n bracket.addChild(child);\n }\n }\n \n // Continue parsing as member expression\n const memberExpr = new Token(TokenType.MEMBER_EXPRESSION, '', start, start);\n memberExpr.addChild(bracket);\n \n while (!this.isEOF()) {\n const char = this.peek();\n if (char === '.') {\n this.advance();\n memberExpr.addChild(this.parsePropertyAccess(false));\n } else if (char === '[') {\n memberExpr.addChild(this.parseBracketAccess(false));\n } else {\n break;\n }\n }\n \n memberExpr.end = this.pos;\n memberExpr.value = this.input.substring(start, this.pos);\n return memberExpr;\n }\n \n // Otherwise it's an array literal\n return new Token(TokenType.ARRAY_LITERAL, `[${content}]`, start, this.pos);\n }\n\n\n private isOperatorChar(char: string): boolean {\n return ['+', '-', '*', '/', '%', '=', '!', '<', '>', '&', '|', '?'].includes(char);\n }\n\n private parseOperator(): Token {\n const start = this.pos;\n let value = this.advance();\n \n const next = this.peek();\n // Multi-char operators\n if ((value === '=' || value === '!' || value === '<' || value === '>') && next === '=') {\n value += this.advance();\n if (this.peek() === '=') value += this.advance();\n } else if ((value === '&' && next === '&') || (value === '|' && next === '|')) {\n value += this.advance();\n } else if (value === '?' && next === '?') {\n value += this.advance();\n }\n \n return new Token(TokenType.OPERATOR, value, start, this.pos);\n }\n\n private tryParseTernary(): Token | null {\n // Look ahead for ternary pattern: expr ? expr : expr\n const savedPos = this.pos;\n const remaining = this.input.substring(this.pos);\n \n // Find ternary operator at depth 0, respecting string literals\n let depth = 0;\n let inString = false;\n let stringChar = '';\n let questionIdx = -1;\n let colonIdx = -1;\n \n for (let i = 0; i < remaining.length; i++) {\n const char = remaining[i];\n const prevChar = i > 0 ? remaining[i - 1] : '';\n \n // Track string state (handle escape characters)\n if ((char === '\"' || char === \"'\" || char === '`') && prevChar !== '\\\\') {\n if (!inString) {\n inString = true;\n stringChar = char;\n } else if (char === stringChar) {\n inString = false;\n stringChar = '';\n }\n }\n \n if (inString) continue;\n \n // Track depth for parentheses, brackets, braces\n if (char === '(' || char === '[' || char === '{') depth++;\n else if (char === ')' || char === ']' || char === '}') depth--;\n \n // Find ternary ? at depth 0\n if (depth === 0 && char === '?') {\n const nextChar = remaining[i + 1] || '';\n // Skip optional chaining (?.) and nullish coalescing (??)\n if (nextChar === '.' || nextChar === '?') continue;\n // Ternary ? should be followed by whitespace or expression\n questionIdx = i;\n }\n \n // Find ternary : at depth 0 (only after finding ?)\n if (depth === 0 && char === ':' && questionIdx >= 0 && colonIdx < 0) {\n colonIdx = i;\n break;\n }\n }\n \n // Not a ternary expression\n if (questionIdx < 0 || colonIdx < 0) return null;\n \n const condStr = remaining.substring(0, questionIdx).trim();\n const trueStr = remaining.substring(questionIdx + 1, colonIdx).trim();\n const falseStr = remaining.substring(colonIdx + 1).trim();\n \n if (!condStr || !trueStr || !falseStr) return null;\n \n const ternary = new Token(TokenType.TERNARY, remaining, savedPos, savedPos + remaining.length);\n \n const condParser = new ObjectPathParser(condStr);\n const trueParser = new ObjectPathParser(trueStr);\n const falseParser = new ObjectPathParser(falseStr);\n \n for (const child of condParser.getTokens()) ternary.addChild(child);\n for (const child of trueParser.getTokens()) ternary.addChild(child);\n for (const child of falseParser.getTokens()) ternary.addChild(child);\n \n this.pos = this.input.length; // consume all\n return ternary;\n }\n\n\n private tryParseBinary(): Token | null {\n // Look for binary operators at top level\n const remaining = this.input.substring(this.pos);\n \n // Check operators in order of precedence (lowest to highest)\n // This ensures we parse correctly: a < b - c => a < (b - c), not (a < b) - c\n const operatorGroups = [\n ['||'], // Logical OR (lowest precedence)\n ['&&'], // Logical AND\n ['??'], // Nullish coalescing\n ['<', '>', '<=', '>='], // Comparison\n ['===', '!==', '==', '!='], // Equality\n ['+', '-'], // Addition/Subtraction\n ['*', '/', '%'] // Multiplication/Division (highest precedence)\n ];\n \n // Search from lowest to highest precedence\n for (const operators of operatorGroups) {\n for (const op of operators) {\n let depth = 0;\n let inString = false;\n let stringChar = '';\n let lastMatchIndex = -1;\n \n // Find the LAST occurrence of this operator at depth 0 (right-to-left for left-associative)\n for (let i = 0; i < remaining.length - op.length + 1; i++) {\n const char = remaining[i];\n \n // Track string state\n if ((char === '\"' || char === \"'\" || char === '`') && (i === 0 || remaining[i-1] !== '\\\\')) {\n if (!inString) {\n inString = true;\n stringChar = char;\n } else if (char === stringChar) {\n inString = false;\n }\n }\n \n if (inString) continue;\n \n // Track depth\n if (char === '(' || char === '[' || char === '{') depth++;\n else if (char === ')' || char === ']' || char === '}') depth--;\n \n // Check for operator at depth 0\n if (depth === 0 && remaining.substring(i, i + op.length) === op) {\n // Make sure it's not part of optional chaining\n if (op === '?' && remaining[i + 1] === '.') continue;\n \n // For - operator, make sure it's not a negative number\n if (op === '-') {\n // Look back to find the last non-whitespace character\n let lastNonSpace = '';\n for (let j = i - 1; j >= 0; j--) {\n if (remaining[j].trim()) {\n lastNonSpace = remaining[j];\n break;\n }\n }\n // Skip if it looks like a negative number (after operator, comma, or opening bracket/paren, or at start)\n if (!lastNonSpace || /[+\\-*\\/%=<>!&|,(\\[]/.test(lastNonSpace)) {\n continue;\n }\n }\n \n // For comparison/equality operators, make sure we're not matching part of a longer operator\n if (['<', '>', '=', '!'].includes(op)) {\n const nextChar = remaining[i + op.length] || '';\n if (nextChar === '=') continue; // Skip < if it's part of <=\n }\n \n lastMatchIndex = i;\n }\n }\n \n // If we found a match, split there\n if (lastMatchIndex >= 0) {\n const i = lastMatchIndex;\n const leftRaw = remaining.substring(0, i);\n const rightRaw = remaining.substring(i + op.length);\n const leftStr = leftRaw.trim();\n const rightStr = rightRaw.trim();\n \n if (leftStr && rightStr) {\n const binary = new Token(TokenType.BINARY, op, this.pos, this.pos + remaining.length);\n \n // \uC5F0\uC0B0\uC790 \uC8FC\uBCC0 \uACF5\uBC31 \uBCF4\uC874\n const leftTrailingSpace = leftRaw.substring(leftStr.length);\n const rightLeadingSpace = rightRaw.substring(0, rightRaw.length - rightRaw.trimStart().length);\n binary.leftSpace = leftTrailingSpace;\n binary.rightSpace = rightLeadingSpace;\n \n const leftParser = new ObjectPathParser(leftStr);\n const rightParser = new ObjectPathParser(rightStr);\n \n // Binary token should have exactly 2 children: left and right\n // Wrap the parsed results in containers that preserve the original structure\n const leftContainer = new Token(TokenType.ROOT, leftStr, 0, leftStr.length);\n for (const child of leftParser.getTokens()) leftContainer.addChild(child);\n binary.addChild(leftContainer);\n \n const rightContainer = new Token(TokenType.ROOT, rightStr, 0, rightStr.length);\n for (const child of rightParser.getTokens()) rightContainer.addChild(child);\n binary.addChild(rightContainer);\n \n this.pos = this.input.length;\n return binary;\n }\n }\n }\n }\n \n return null;\n }\n\n\n // --- Main conversion method ---\n toOptionalChainPath(): string {\n if (!this.input) return '';\n \n // \uAC1D\uCCB4 \uB9AC\uD130\uB7F4\uC740 \uBCC0\uD658\uD558\uC9C0 \uC54A\uC74C\n if (this.isObjectLiteralInput()) return this.input;\n \n // \uD568\uC218 \uC2A4\uD06C\uB9BD\uD2B8\uB294 \uBCC0\uD658\uD558\uC9C0 \uC54A\uC74C\n if (this.isFunctionScript() || this.isArrowFunctionScript()) return this.input;\n \n return this.root.toOptionalChain();\n }\n\n removeOptionalChainOperator(): string {\n if (!this.input) return '';\n return this.input.replace(/\\?\\./g, '.').replace(/\\.\\[/g, '[');\n }\n\n stringify(): string {\n return this.root.stringify();\n }\n\n // --- Static factory methods ---\n static parse(input: string): ObjectPathParser {\n return new ObjectPathParser(input);\n }\n\n static isFunctionScript(script: string): boolean {\n return script.trim().startsWith('function');\n }\n\n static isArrowFunctionScript(script: string): boolean {\n return /^\\s*\\([^)]*\\)\\s*=>/.test(script);\n }\n\n static isObjectLiteral(script: string): boolean {\n const trimmed = script.trim();\n return trimmed.startsWith('{') && trimmed.endsWith('}');\n }\n}\n", "import { ValidUtils } from '../valid/ValidUtils';\nimport type { ConstructorType } from '../types';\nimport { isDefined } from '../types';\nimport { ObjectPathParser } from '../parser/path/ObjectPathParser';\n\nexport namespace ObjectUtils {\n export const constructorName = (target: any): string | undefined => {\n if (target && target.constructor && target.constructor.name) {\n return target.constructor.name;\n } else if (target && target.name) {\n return target.name;\n }\n };\n export const deepCopy = <T = any>(obj: T): T => {\n if (obj instanceof Map) {\n return new Map<any, any>(JSON.parse(JSON.stringify(Array.from(obj.entries())))) as T;\n } else if (obj instanceof Set) {\n return new Set<any>(JSON.parse(JSON.stringify(Array.from(obj.values())))) as T;\n } else if (ValidUtils.isNullOrUndefined(obj)) {\n return obj;\n }\n\n return JSON.parse(JSON.stringify(obj));\n };\n export const allProtoTypeName = (target?: any, filter?: (pathString: string, pathValue: any) => boolean): string[] => {\n let data: string[] = [];\n if (target) {\n const proto = Object.getPrototypeOf(target);\n if (proto && (data = Object.keys(proto) || []).length > 0) {\n data = data.concat(ObjectUtils.allProtoTypeName(proto, filter));\n }\n }\n let result = data.filter(it => it !== 'constructor');\n\n if (filter && target) {\n const proto = Object.getPrototypeOf(target);\n result = result.filter(key => filter(key, proto?.[key]));\n }\n\n return result;\n };\n\n export const uniqueKeys = (obj: object[] | object) => {\n const allKeys = Array.from(new Set((Array.isArray(obj) ? obj : [obj]).flatMap(item => Object.keys(item))));\n return allKeys;\n };\n\n export const ownPropertyNames = (target?: any): string[] => {\n const data: string[] = [];\n if (target) {\n if (!target.prototype) {\n const a = Object.getPrototypeOf(target);\n data.push(...Object.getOwnPropertyNames(a));\n } else {\n data.push(...Object.getOwnPropertyNames(Object.getPrototypeOf(target)));\n }\n }\n return data.filter(it => it !== 'constructor');\n };\n\n export const protoTypeName = (target?: any): string[] => {\n let data: string[] = [];\n if (target) {\n const proto = Object.getPrototypeOf(target);\n data = Object.keys(proto) || [];\n }\n return data.filter(it => it !== 'constructor');\n };\n\n export const protoTypes = (target?: any): Function[] => {\n const data: Function[] = [];\n if (target) {\n const proto = Object.getPrototypeOf(target);\n (Object.keys(proto) || [])\n .filter(it => it !== 'constructor')\n .forEach(it => {\n data.push(proto[it]);\n });\n }\n return data;\n };\n\n export const seal = <T>(target: T): T => {\n return Object.seal(target);\n };\n\n /*\n Object.prototype.isPrototypeOf()\n isPrototypeOf() 메소드는 해당 객체가 다른 객체의 프로토타입 체인에 속한 객체인지 확인하기 위해 사용됩니다.\n */\n export const isPrototypeOfTarget = (start: ConstructorType<any> | Function | null | undefined, target: any | null | undefined): boolean => {\n if (start && target) {\n return Object.prototype.isPrototypeOf.call(start.prototype, target);\n } else {\n return false;\n }\n };\n\n export const prototypeOfDepth = (target: any, dest: ConstructorType<any> | Function | null | undefined): object[] => {\n let object: any = target;\n const r: any[] = [];\n if (dest) {\n do {\n object = Object.getPrototypeOf(object);\n if (object?.constructor === dest) {\n break;\n }\n r.push(object);\n } while (object);\n }\n return r;\n };\n\n export const allProtoType = (start: ConstructorType<any> | Function): (ConstructorType<any> | Function)[] => {\n const depth = (target: ConstructorType<any> | Function, bowl: (ConstructorType<any> | Function)[] = []) => {\n if (target.prototype) {\n bowl.push(target);\n depth(Object.getPrototypeOf(target), bowl);\n }\n return bowl;\n };\n const d = depth(start);\n return d;\n // const protos: (ConstructorType<any> | Function)[] = []\n // while (start) {\n // protos.push(start);\n // start = Object.getPrototypeOf(start)\n // }\n // return protos;\n };\n\n export const prototypeOf = (start: any) => {\n return Object.getPrototypeOf(start);\n };\n\n export const prototypeKeyMap = (target: any): Map<Function, string> => {\n const data = new Map<Function, string>();\n if (target) {\n const proto = Object.getPrototypeOf(target);\n (Object.keys(proto) || [])\n .filter(it => it !== 'constructor')\n .forEach(it => {\n data.set(proto[it], it);\n });\n }\n return data;\n };\n\n export const prototypeName = (target: any, fnc: Function): string | undefined => {\n return ObjectUtils.prototypeKeyMap(target).get(fnc);\n };\n\n export const pickRandomKey = <T>(target: T): keyof T => {\n const keys = Object.keys(target as any) as Array<keyof T>;\n return keys[Math.floor(Math.random() * keys.length)];\n };\n\n export const pickRandomValue = <T>(target: T): T[keyof T] => {\n const keys = Object.keys(target as any) as Array<keyof T>;\n return target[keys[Math.floor(Math.random() * keys.length)]];\n };\n\n export const pickRandomKeyValue = <T>(target: T): { key: keyof T; value: T[keyof T] } => {\n const keys = Object.keys(target as any) as Array<keyof T>;\n const key = keys[Math.floor(Math.random() * keys.length)];\n return { key, value: target[key] };\n };\n\n export const keyValues = <T>(target: T): { key: keyof T; value: T[keyof T] }[] => {\n const keys = Object.keys(target as any) as Array<keyof T>;\n return keys.map(key => ({ key, value: target[key] }));\n };\n\n export const entries = <T>(target: T): [keyof T, T[keyof T]][] => {\n return Object.entries(target as any) as [keyof T, T[keyof T]][];\n };\n\n export const values = <T>(target: T): T[keyof T][] => {\n return Object.values(target as any);\n };\n\n export const keys = <T>(target: T): (keyof T)[] => {\n return Object.keys(target as any) as (keyof T)[];\n };\n\n export const keyLength = <T>(target: T): number => {\n return ObjectUtils.keys(target).length;\n };\n\n export const toDeleteUndefinedAndNull = <T>(target: T, config?: { deep?: boolean }): T => {\n const cleanValue = (value: any): any => {\n if (Array.isArray(value)) {\n return value.filter(item => item !== undefined && item !== null).map(cleanValue);\n } else if (value && typeof value === 'object') {\n if (config?.deep) {\n return Object.fromEntries(\n Object.entries(value)\n .filter(([_, v]) => v !== undefined && v !== null)\n .map(([k, v]) => [k, cleanValue(v)])\n );\n } else {\n return Object.fromEntries(Object.entries(value).filter(([_, v]) => v !== undefined && v !== null));\n }\n }\n return value;\n };\n\n return cleanValue(target) as T;\n };\n\n export namespace Path {\n export const isFunctionScript = (script: string): boolean => {\n return ObjectPathParser.isFunctionScript(script);\n };\n\n export const isArrowFunctionScript = (script: string): boolean => {\n return ObjectPathParser.isArrowFunctionScript(script);\n };\n\n export const toOptionalChainPath = (path: string): string => {\n if (!path) {\n return '';\n }\n const parser = new ObjectPathParser(path);\n return parser.toOptionalChainPath();\n };\n\n export const removeOptionalChainOperator = (path: string): string => {\n if (!path) {\n return '';\n }\n const parser = new ObjectPathParser(path);\n return parser.removeOptionalChainOperator();\n };\n\n const parsePath = (path: string): (string | number)[] => {\n const result: (string | number)[] = [];\n const regex = /\\.([^.\\[]+)|\\[(\\d+)\\]|\\[(['\"])(.*?)\\3\\]/g;\n let match;\n let lastIndex = 0;\n\n const firstMatch = path.match(regex);\n if (firstMatch && (firstMatch?.index ?? 0) > 0) {\n result.push(path.substring(0, firstMatch.index));\n lastIndex = firstMatch.index as number;\n } else if (!firstMatch && path.length > 0) {\n result.push(path);\n return result;\n }\n\n while ((match = regex.exec(path)) !== null) {\n if (match.index > lastIndex) {\n const segment = path.substring(lastIndex, match.index);\n if (segment.startsWith('.')) {\n result.push(segment.substring(1));\n } else {\n result.push(segment);\n }\n }\n\n if (match[1]) {\n result.push(match[1]);\n } else if (match[2]) {\n result.push(parseInt(match[2], 10));\n } else if (match[4]) {\n result.push(match[4]);\n }\n lastIndex = regex.lastIndex;\n }\n\n if (lastIndex < path.length) {\n const remaining = path.substring(lastIndex);\n if (remaining.startsWith('.')) {\n result.push(remaining.substring(1));\n } else {\n result.push(remaining);\n }\n }\n\n return result;\n };\n\n export const to = <T = any>(obj: any) => {\n const destination: T = {} as any;\n Object.entries(obj).forEach(([path, value]) => {\n Path.set(destination, path, value);\n });\n return destination;\n };\n\n export const set = (obj: any, path: string, value: any) => {\n const pathParts = parsePath(path);\n let current = obj;\n\n for (let i = 0; i < pathParts.length; i++) {\n const part = pathParts[i];\n const isLastPart = i === pathParts.length - 1;\n\n if (isLastPart) {\n current[part] = value;\n } else {\n // Ensure current[part] is of the correct type for the next part\n const nextPart = pathParts[i + 1];\n\n if (typeof nextPart === 'number') {\n // Next part is an array index\n if (!Array.isArray(current[part])) {\n current[part] = [];\n }\n // Fill holes if current[part] is an array and nextPart is a skipped index\n if (Array.isArray(current[part])) {\n while (current[part].length <= nextPart) {\n current[part].push({}); // Fill with empty objects\n }\n }\n } else {\n // Next part is a string (object property)\n if (typeof current[part] !== 'object' || current[part] === null) {\n current[part] = {};\n }\n }\n current = current[part];\n }\n }\n };\n\n export const get = (obj: any, path: string, defaultValue?: any): any => {\n const pathParts = parsePath(path);\n let current = obj;\n\n for (let i = 0; i < pathParts.length; i++) {\n const part = pathParts[i];\n\n if (current === null || current === undefined) {\n return defaultValue;\n }\n\n // Check if the current object has the property/index\n if (typeof current === 'object' && current !== null && part in current) {\n current = current[part];\n } else {\n // Property/index not found\n return defaultValue;\n }\n }\n\n return current;\n };\n\n export const deletePath = (obj: any, path: string): boolean => {\n const pathParts = parsePath(path);\n if (pathParts.length === 0) {\n return false;\n }\n\n let current = obj;\n\n // Navigate to the parent of the target property\n for (let i = 0; i < pathParts.length - 1; i++) {\n const part = pathParts[i];\n\n if (current === null || current === undefined) {\n return false;\n }\n\n if (typeof current === 'object' && current !== null && part in current) {\n current = current[part];\n } else {\n return false;\n }\n }\n\n // Delete the final property\n const finalPart = pathParts[pathParts.length - 1];\n if (current !== null && typeof current === 'object' && finalPart in current) {\n if (Array.isArray(current) && typeof finalPart === 'number') {\n current.splice(finalPart, 1);\n } else {\n delete current[finalPart];\n }\n return true;\n }\n\n return false;\n };\n\n export const availablePath = (obj: any, filter?: (pathString: string, pathValue: any) => boolean): string[] => {\n const paths: string[] = [];\n\n const formatKey = (key: string | number): string => {\n if (typeof key === 'number') {\n return '[' + key + ']'; // Array index\n }\n // Check if the key is a valid JavaScript identifier.\n // If not, it needs to be quoted.\n // A valid identifier starts with a letter, _, or $, followed by letters, digits, _, or $.\n // This regex checks for characters that are NOT valid in an identifier.\n if (!/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(key)) {\n // If it's not a valid identifier, quote it.\n // Use single quotes without escaping for test compatibility\n return \"['\" + key + \"']\";\n }\n return key;\n };\n\n const traverse = (current: any, currentPath: string, visited: Set<any>) => {\n if (current === null || typeof current !== 'object') {\n return;\n }\n\n // Detect circular references\n if (visited.has(current)) {\n return;\n }\n visited.add(current);\n\n if (Array.isArray(current)) {\n current.forEach((item: any, index: number) => {\n const formattedIndex = formatKey(index); // This will be [index]\n const newPath = currentPath ? `${currentPath}${formattedIndex}` : formattedIndex;\n\n // Apply filter if provided\n if (!filter || filter(newPath, item)) {\n paths.push(newPath);\n }\n\n traverse(item, newPath, visited);\n });\n } else {\n Object.keys(current).forEach(key => {\n const formattedKey = formatKey(key);\n let newPath: string;\n\n // If the key needs brackets (special characters), don't add a dot before brackets\n if (formattedKey.startsWith('[')) {\n newPath = currentPath ? `${currentPath}${formattedKey}` : formattedKey;\n } else {\n newPath = currentPath ? `${currentPath}.${formattedKey}` : formattedKey;\n }\n\n // Apply filter if provided\n if (!filter || filter(newPath, current[key])) {\n paths.push(newPath);\n }\n\n traverse(current[key], newPath, visited);\n });\n }\n };\n\n traverse(obj, '', new Set());\n return paths;\n };\n\n /**\n * 스크립트에서 사용되는 변수 경로들을 감지합니다.\n * 프록시를 사용하여 스크립트 실행 중 접근되는 모든 속성 경로를 추적합니다.\n *\n * @param script 분석할 JavaScript 스크립트 문자열\n * @param options 감지 옵션\n * @param options.excludeThis true일 경우 'this' 키워드를 결과에서 제외\n * @returns 스크립트에서 사용된 변수 경로들의 Set\n */\n export const detectPathFromScript = (script: string, options?: { excludeThis?: boolean }): Set<string> => {\n const usingVars = new Set<string>();\n\n class GetDetectProxy implements ProxyHandler<any> {\n public usingVars = usingVars;\n\n constructor(public prefix?: string) {}\n\n set(target: any, p: string | symbol, value: any, receiver: any): boolean {\n return true;\n }\n\n get(target: any, p: string | symbol, receiver: any): any {\n // Symbol 속성들은 무시 (toString, valueOf 등)\n if (typeof p === 'symbol') {\n return this.createSafeProxy(this.prefix);\n }\n\n let items: string | undefined;\n const propStr = String(p);\n\n // 숫자 인덱스 처리\n if (!isNaN(Number(propStr))) {\n items = this.prefix ? `${this.prefix}[${propStr}]` : propStr;\n }\n // 일반 속성 처리\n else {\n items = this.prefix ? `${this.prefix}.${propStr}` : propStr;\n }\n\n // 유효한 변수 경로만 추가\n if (items) {\n this.usingVars.add(items);\n }\n\n return this.createSafeProxy(items);\n }\n\n apply(target: any, thisArg: any, argArray?: any): any {\n // 함수 호출 시에도 안전한 프록시 반환 (체이닝 가능)\n return this.createSafeProxy(this.prefix);\n }\n\n private createSafeProxy(prefix?: string): any {\n const dummyFunction = () => {};\n const handler = new GetDetectProxy(prefix);\n\n return new Proxy(dummyFunction, {\n get: (target, prop, receiver) => {\n if (prop === Symbol.toPrimitive) {\n return () => '';\n }\n if (prop === 'valueOf') {\n return () => handler.createSafeProxy(prefix);\n }\n if (prop === 'toString') {\n return () => '';\n }\n return handler.get(target, prop, receiver);\n },\n set: handler.set.bind(handler),\n apply: handler.apply.bind(handler)\n });\n }\n }\n\n // 전역 변수들을 안전하게 처리하기 위한 컨텍스트 생성\n const globalContext = {\n window: new Proxy(() => {}, new GetDetectProxy('window')),\n document: new Proxy(() => {}, new GetDetectProxy('document')),\n console: new Proxy(() => {}, new GetDetectProxy('console'))\n // this는 destUser 자체가 됨\n };\n\n const destUser = new Proxy(() => {}, new GetDetectProxy('this'));\n\n try {\n // [아키텍트님의 정석] #...# 형태의 템플릿 변수는 JS 문법 에러(Private Field)를 유발하므로\n // 감지 단계에서는 안전한 문자열로 마스킹 처리합니다.\n const maskedScript = script.replace(/#([^#]+)#/g, '__DOMRENDER_VAR_$1__');\n // 전역 컨텍스트와 함께 실행\n const func = new Function('window', 'document', 'console', `\"use strict\"; ${maskedScript}; `);\n func.call(destUser, globalContext.window, globalContext.document, globalContext.console);\n // console.log('------->', script);\n } catch (e) {\n console.error('detectPathFromScript error:', script, e);\n }\n\n // excludeThis 옵션이 true면 'this'로 시작하는 경로에서 'this' 제거\n if (options?.excludeThis) {\n const filteredVars = new Set<string>();\n usingVars.forEach(path => {\n if (path === 'this') {\n // 'this' 자체는 제외\n return;\n } else if (path.startsWith('this.')) {\n // 'this.'로 시작하는 경우 'this.' 부분 제거\n filteredVars.add(path.substring(5));\n } else {\n // 그 외는 그대로 추가\n filteredVars.add(path);\n }\n });\n return filteredVars;\n }\n\n return usingVars;\n };\n }\n\n export const toDeleteKey = (obj: any, keys: (null | string)[]) => {\n const target = { ...obj };\n ObjectUtils.deleteKey(target, keys);\n return target;\n };\n export const deleteKey = (obj: any, keys: (null | string)[]) => {\n keys\n .filter(it => isDefined(it))\n .forEach(it => {\n delete obj[it];\n });\n };\n\n export namespace Script {\n /**\n * JavaScript 스크립트를 실행하고 결과를 반환합니다.\n *\n * @param script 실행할 스크립트 문자열 또는 {bodyScript, returnScript} 객체\n * @param thisTarget 스크립트 실행 시 this로 바인딩될 객체\n * @returns 스크립트 실행 결과\n */\n export const evaluateReturn = <T = any>(script: string | { bodyScript: string; returnScript: string }, thisTarget: any = {}): T => {\n let bodyScript = '';\n let returnScript = '';\n if (typeof script === 'object') {\n bodyScript = script.bodyScript;\n returnScript = script.returnScript;\n } else {\n returnScript = script;\n }\n return evaluate(`${bodyScript}; return ${returnScript} `, thisTarget) as T;\n };\n\n /**\n * JavaScript 스크립트를 안전하게 실행합니다.\n *\n * @param script 실행할 스크립트 문자열\n * @param thisTarget 스크립트 실행 시 this로 바인딩될 객체\n * @returns 스크립트 실행 결과 또는 undefined (에러 시)\n */\n // @ts-ignore\n export const evaluate = <T = any>(script: string, thisTarget: any = {}): T | undefined => {\n // new Function('event', 'console.log(event)').call(window, {a:2});\n // new Function('event', '$data', newValue).call(this, event, event.detail);\n // 첫번쨰 인자는 this로 바인딩될 객체, 이후 인자들은 스크립트에서 사용할 매개변수로 전달됩니다.\n try {\n return Function(`\"use strict\"; ${script} `).bind(thisTarget)() as T;\n } catch (e) {\n console.error('eval error', e);\n console.error(script);\n return undefined;\n }\n };\n }\n}\n", "import { Dictionary } from '../types';\nimport { ValidUtils } from '../valid/ValidUtils';\n\nexport namespace StringUtils {\n export const deleteEnter = (data: string) => {\n return data.replace(/\\r?\\n/g, '')\n }\n\n export const pickEmoji = (data: string) => {\n return data.match(/[\\p{Emoji}]/gu) ?? [];\n }\n\n\n export const regexExec = (regex: RegExp, text: string) => {\n let varExec = regex.exec(text)\n const usingVars: any[] = [];\n while (varExec) {\n usingVars.push(varExec)\n varExec = regex.exec(varExec.input)\n }\n return usingVars;\n }\n\n \n\n export const escapeSpecialCharacterRegExp = (data: string) => {\n return data.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n }\n\n export const trim = (data: string) => data.trim();\n\n export const rsubString = (data_s: string, blen_n: number): string =>\n data_s.substring(data_s.length - blen_n, data_s.length);\n\n export const lsubString = (data_s: string, alen_n: number): string => data_s.substring(0, alen_n);\n\n export const lpad = (fill_s: string, len_n: number, full_s: string): string => {\n while (len_n > full_s.length) {\n full_s = fill_s + full_s;\n }\n return StringUtils.rsubString(full_s, len_n);\n };\n export const rpad = (fill_s: string, len_n: number, full_s: string): string => {\n while (len_n > full_s.length) {\n full_s += fill_s;\n }\n return StringUtils.lsubString(full_s, len_n);\n };\n\n export const lappend = (count_n: number, input_s: string): string => {\n let s = '';\n let i = 0;\n while (i++ < count_n) {\n s += input_s;\n }\n return s;\n };\n\n\n export const unescape = (html: string): string => {\n if (!html) return '';\n\n const htmlEntity: Dictionary<string> = {\n quot: '\"',\n amp: '&',\n apos: \"'\",\n lt: '<',\n gt: '>',\n nbsp: '\\u00A0',\n iexcl: '\u00A1',\n cent: '\u00A2',\n pound: '\u00A3',\n curren: '\u00A4',\n yen: '\u00A5',\n brvbar: '\u00A6',\n sect: '\u00A7',\n uml: '\u00A8',\n copy: '\u00A9',\n ordf: '\u00AA',\n laquo: '\u00AB',\n not: '\u00AC',\n shy: '\\u00AD',\n reg: '\u00AE',\n macr: '\u00AF',\n deg: '\u00B0',\n plusmn: '\u00B1',\n sup2: '\u00B2',\n sup3: '\u00B3',\n acute: '\u00B4',\n micro: '\u00B5',\n para: '\u00B6',\n middot: '\u00B7',\n cedil: '\u00B8',\n sup1: '\u00B9',\n ordm: '\u00BA',\n raquo: '\u00BB',\n frac14: '\u00BC',\n frac12: '\u00BD',\n frac34: '\u00BE',\n iquest: '\u00BF',\n '#x27': \"'\"\n };\n\n return html.replace(/&((?:(?:[a-z0-9]+|#[0-9]{1,6}|#x[0-9a-fA-F]{1,6});?)+);/gi, (match, entity) => {\n const entities: string[] = entity.toLowerCase().split(';');\n return entities.map(it => (it in htmlEntity ? htmlEntity[it] : match)).join('');\n });\n };\n\n export const executeExpression = (formatString: string, object: Record<string, string | number>) => {\n return formatString.replace(/\\${([^{}]*)}/g, (matched, piece) => String(object[piece] ?? matched));\n };\n\n export const ellipsis = (text: string, length: number) => {\n if (text.length > length) return `${text.slice(0, length)}...`;\n return text;\n };\n/*\nconst str = 'dr-class:set(\"MycLasS\")'; // \uB610\uB294 'dr-class'\nconst regex = /^([^\\s:]+)(?::(\\w+)\\(\"([^\"]+)\"\\))?$/;\nconst match = str.match(regex);\n\nif (match) {\n const className = match[1]; // dr-class\n const functionName = match[2] || ''; // set \uB610\uB294 ''\n const argument = match[3] || ''; // MycLasS \uB610\uB294 ''\n console.log('Class Name:', className);\n console.log('Function Name:', functionName);\n console.log('Argument:', argument);\n} else {\n console.log('Invalid format');\n}\n */\n // type Postposition =\n /**\n * Appends a postposition to the given text based on the provided options.\n * @param {string} text - The text to append the postposition to.\n * @param {object} options - The options for postposition.\n * @param {string} options.vowel - The postposition to append if the text ends with a vowel(\uBAA8\uC74C).\n * @param {string} options.consonant - The postposition to append if the text ends with a consonant(\uC790\uC74C).\n * @returns {string} - The text with the appropriate postposition appended.\n */\n export const appendPostposition = (text: string, { vowel, consonant }: {\n vowel: string;\n consonant: string;\n }): string => {\n return `${text}${ValidUtils.lastConsonantLetter(text) ? consonant : vowel}`;\n };\n\n export interface SequentialReplacement {\n regex: RegExp;\n callback: (matched: string) => string;\n }\n\n export const replaceSequentially = (\n text: string,\n replacements: SequentialReplacement[]\n ): string => {\n let remainingText = text;\n let result = '';\n // console.log('Executing replaceSequentially with robust fix');\n\n while (remainingText.length > 0) {\n let bestMatch: {\n index: number;\n match: RegExpExecArray;\n replacement: SequentialReplacement;\n } | null = null;\n\n // Find the earliest match in the remaining text\n for (const replacement of replacements) {\n const newRegex = new RegExp(replacement.regex);\n const match = newRegex.exec(remainingText);\n if (match) {\n if (bestMatch === null || match.index < bestMatch.index) {\n bestMatch = { index: match.index, match, replacement };\n }\n }\n }\n\n if (bestMatch) {\n const { index, match, replacement } = bestMatch;\n const matchedString = match[0];\n\n // Append the text before the match and the replacement\n result += remainingText.substring(0, index);\n result += replacement.callback(matchedString);\n\n // Update remainingText to be the part after the match\n remainingText = remainingText.substring(index + matchedString.length);\n } else {\n // No more matches, append the rest of the text and finish\n result += remainingText;\n break;\n }\n }\n\n return result;\n };\n}\n", "export namespace DateUtils {\n\n export const create = (data: string): Date => new Date(data);\n\n export const dayZeroTime = (data?: Date | string | number) => {\n const date = data ? new Date(data) : new Date();\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n export const fullMilliSecond = (): number => new Date().getTime();\n\n export const fullSecond = (): number => new Date().getTime() / 1000;\n\n export const milliSecond = (): number => new Date().getMilliseconds();\n\n export const format = (date: Date, format = 'yyyy-MM-dd HH:mm:ss'): string => {\n const pad = (num) => String(num).padStart(2, '0');\n const year = date.getFullYear();\n const month = pad(date.getMonth() + 1);\n const day = pad(date.getDate());\n const hours = pad(date.getHours());\n const minutes = pad(date.getMinutes());\n const seconds = pad(date.getSeconds());\n\n return format\n .replace('yyyy', String(year))\n .replace('MM', month)\n .replace('dd', day)\n .replace('HH', hours)\n .replace('mm', minutes)\n .replace('ss', seconds);\n };\n\n export const isSameDate = (date1: Date, date2: Date) =>\n date1.getFullYear() === date2.getFullYear() &&\n date1.getMonth() === date2.getMonth() &&\n date1.getDate() === date2.getDate();\n\n export const compare = (date1: Date, date2: Date) =>\n date1.getTime() < date2.getTime() ? -1 : date1.getTime() > date2.getTime() ? 1 : 0;\n\n export const weekCountOfYear = (date: Date) => {\n // Copy date so it's not modified\n const currentDate = new Date(date.getTime());\n // Set to nearest Thursday: current date + 4 - current day number (from 0 to 6)\n // Make Sunday's day number 7\n currentDate.setDate(currentDate.getDate() + 4 - (currentDate.getDay() || 7));\n // January 1st of the year\n const yearStart = new Date(currentDate.getFullYear(), 0, 1);\n // Calculate full weeks to nearest Thursday\n const weekNo = Math.ceil(((currentDate.getTime() - yearStart.getTime()) / 86400000 + 1) / 7);\n return weekNo;\n };\n export const age = (dateOfBirth: Date, until: Date = new Date()) => {\n let age = until.getFullYear() - dateOfBirth.getFullYear();\n const m = until.getMonth() - dateOfBirth.getMonth();\n\n if (m < 0 || (m === 0 && until.getDate() < dateOfBirth.getDate())) {\n age--;\n }\n\n return Math.max(age, 0);\n }\n\n export const countingAge = (dateOfBirth: Date, until: Date = new Date()) => {\n return Math.max(until.getFullYear() - dateOfBirth.getFullYear(), 0) + 1;\n }\n\n export const add = ({years = 0, months = 0, days = 0, minutes = 0, seconds = 0, milliSecond = 0}: { years?: number; months?: number; days?: number; minutes?: number; seconds?: number, milliSecond?: number }, date?: Date | string | number,): Date => {\n const result = date ? new Date(date) : new Date();\n if (years) result.setFullYear(result.getFullYear() + years);\n if (months) result.setMonth(result.getMonth() + months);\n if (days) result.setDate(result.getDate() + days);\n if (minutes) result.setMinutes(result.getMinutes() + minutes);\n if (seconds) result.setSeconds(result.getSeconds() + seconds);\n if (milliSecond) result.setMilliseconds(result.getMilliseconds() + milliSecond);\n return result;\n };\n\n\n export const toDate = (date: Date | string | number): Date => {\n if (date instanceof Date) {\n return date;\n } else if (typeof date === 'string' || typeof date === 'number') {\n return new Date(date);\n } else {\n throw new Error('Invalid date type. Expected Date, string, or number.');\n }\n }\n\n export const sinceSeconds = (date: Date): number => Math.floor((Date.now() - date.getTime()) / 1000);\n\n export const toSeconds = (date: Date = new Date()): number => Math.floor(date.getTime() / 1000);\n\n export const toMilliseconds = (date: Date = new Date()): number => date.getTime();\n\n export const fromSeconds = (seconds: number): Date => new Date(seconds * 1000);\n\n export const fromMilliseconds = (milliseconds: number): Date => new Date(milliseconds);\n\n export const toISOString = (date: Date = new Date()): string => date.toISOString();\n\n export const fromISOString = (isoString: string): Date => new Date(isoString);\n\n export const formatDuration = (timeSecond: number, locale: string = getDefaultLocale()) => {\n const rtf = new Intl.RelativeTimeFormat(locale, { numeric: 'always', style: 'long' });\n\n\n let remaining = timeSecond;\n const days = Math.floor(remaining / 86400);\n remaining -= days * 86400;\n const hours = Math.floor(remaining / 3600);\n remaining -= hours * 3600;\n const minutes = Math.floor(remaining / 60);\n remaining -= minutes * 60;\n const seconds = remaining;\n\n const result = [];\n\n if (days > 0) {\n result.push(rtf.format(days, 'day').replace('\uD6C4', '').replace('in ', '').replace('dans ', ''));\n }\n\n if (hours > 0) {\n result.push(rtf.format(hours, 'hour').replace('\uD6C4', '').replace('in ', '').replace('dans ', ''));\n }\n\n if (minutes > 0) {\n result.push(rtf.format(minutes, 'minute').replace('\uD6C4', '').replace('in ', '').replace('dans ', ''));\n }\n\n if (seconds > 0 || result.length === 0) {\n result.push(rtf.format(seconds, 'second').replace('\uD6C4', '').replace('in ', '').replace('dans ', ''));\n }\n\n return result.join(' ');\n };\n\n export const relativeTime = (date: Date | string | number,\n config?: {\n locales: ConstructorParameters<typeof Intl.RelativeTimeFormat>[0]\n options: ConstructorParameters<typeof Intl.RelativeTimeFormat>[1]\n }) => {\n\n const rtf = new Intl.RelativeTimeFormat(config?.locales, config?.options);\n let targetDate: Date;\n if (!(date instanceof Date)) {\n targetDate = new Date(date);\n } else {\n targetDate = date;\n }\n\n const now = new Date();\n const diffMs = targetDate.getTime() - now.getTime(); // \uC785\uB825\uB41C \uC2DC\uAC04 - \uD604\uC7AC \uC2DC\uAC04\n\n // \uBD84, \uC2DC\uAC04, \uC77C \uB2E8\uC704\uB85C \uC808\uB300\uAC12 \uCC28\uC774 \uACC4\uC0B0\n const absDiffMinutes = Math.floor(Math.abs(diffMs) / (1000 * 60));\n const absDiffHours = Math.floor(Math.abs(diffMs) / (1000 * 60 * 60));\n const absDiffDays = Math.floor(Math.abs(diffMs) / (1000 * 60 * 60 * 24));\n if (diffMs === 0) {\n return rtf.format(0, 'seconds'); // \"\uC9C0\uAE08\" \uB610\uB294 \"0\uCD08 \uD6C4/\uC804\" (\uB85C\uCF00\uC77C\uC5D0 \uB530\uB77C \uB2E4\uB984)\n }\n if (diffMs < 0) { // \uACFC\uAC70 (\uC785\uB825\uB41C \uC2DC\uAC04\uC774 \uD604\uC7AC\uBCF4\uB2E4 \uC774\uC804)\n if (absDiffMinutes < 1) { // 1\uBD84 \uBBF8\uB9CC \uACFC\uAC70\n return rtf.format(-Math.floor(Math.abs(diffMs) / 1000), 'seconds'); // \"\uBA87 \uCD08 \uC804\"\n } else if (absDiffMinutes < 60) { // 60\uBD84 \uBBF8\uB9CC \uACFC\uAC70\n return rtf.format(-absDiffMinutes, 'minutes'); // \"\uBA87 \uBD84 \uC804\"\n } else if (absDiffHours < 24) { // 24\uC2DC\uAC04 \uBBF8\uB9CC \uACFC\uAC70\n return rtf.format(-absDiffHours, 'hours'); // \"\uBA87 \uC2DC\uAC04 \uC804\"\n } else { // \uADF8 \uC774\uC0C1 \uACFC\uAC70\n return rtf.format(-absDiffDays, 'days'); // \"\uBA87 \uC77C \uC804\"\n }\n } else { // \uBBF8\uB798 (\uC785\uB825\uB41C \uC2DC\uAC04\uC774 \uD604\uC7AC\uBCF4\uB2E4 \uC774\uD6C4)\n if (absDiffMinutes < 1) { // 1\uBD84 \uBBF8\uB9CC \uBBF8\uB798\n return rtf.format(Math.floor(diffMs / 1000), 'seconds'); // \"\uBA87 \uCD08 \uD6C4\"\n } else if (absDiffMinutes < 60) { // 60\uBD84 \uBBF8\uB9CC \uBBF8\uB798\n return rtf.format(absDiffMinutes, 'minutes'); // \"\uBA87 \uBD84 \uD6C4\"\n } else if (absDiffHours < 24) { // 24\uC2DC\uAC04 \uBBF8\uB9CC \uBBF8\uB798\n return rtf.format(absDiffHours, 'hours'); // \"\uBA87 \uC2DC\uAC04 \uD6C4\"\n } else { // \uADF8 \uC774\uC0C1 \uBBF8\uB798\n return rtf.format(absDiffDays, 'days'); // \"\uBA87 \uC77C \uD6C4\"\n }\n }\n }\n\n export const getDefaultLocale = (): string => Intl.DateTimeFormat().resolvedOptions().locale;\n}\n", "import { Vector } from './Vector';\n\nexport class Point2D {\n public x: number;\n public y: number;\n\n constructor(data: {x?: number, y?: number});\n constructor(x?: number, y?: number);\n constructor(x?: number | {x?: number, y?: number} | Vector , y?: number) {\n if (typeof x === 'object') {\n this.x = x.x ?? 0;\n this.y = x.y ?? 0;\n } else {\n this.x = x ?? 0;\n this.y = y ?? 0;\n }\n }\n\n copy() {\n return new Point2D(this.x, this.y);\n }\n}\n", "// https://p5js.org/ko/\nimport { Point3D } from './Point3D';\nimport { Point2D } from './Point2D';\n\n/**\n * 2D/3D \uBCA1\uD130 (p5.js Vector \uAE30\uBC18).\n * - \uBCA1\uD130: \uD06C\uAE30(magnitude)\uC640 \uBC29\uD5A5\uC744 \uAC00\uC9C4 \uC591. \uC704\uCE58\uAC00 \uC544\uB2CC \"\uC774\uB3D9\"\uC744 \uB098\uD0C0\uB0C4.\n * - `to*` \uBA54\uC11C\uB4DC\uB294 \uC0C8 Vector\uB97C \uBC18\uD658(\uBE44\uD30C\uAD34), \uADF8 \uC678(add/sub/mult/div/normalize \uB4F1)\uB294 \uC790\uC2E0\uC744 \uBCC0\uACBD(\uD30C\uAD34\uC801).\n * @example\n * const a = new Vector(3, 4); // |a| = 5\n * const b = a.get(); // \uBCF5\uC0AC\uBCF8\n * b.add(new Vector(1, 1)); // b = (4, 5), a\uB294 \uADF8\uB300\uB85C (3, 4)\n */\nexport class Vector {\n public x: number;\n public y: number;\n public z: number;\n\n /**\n * \uBCA1\uD130 \uC0DD\uC131. \uC778\uC790 \uC5C6\uC774 \uD638\uCD9C\uD558\uBA74 \uC601\uBCA1\uD130 (0, 0, 0).\n * @example\n * new Vector(3, 4) // (3, 4, 0)\n * new Vector({x: 1}) // (1, 0, 0)\n * new Vector(new Point3D(1, 2, 3)) // (1, 2, 3)\n */\n constructor(data: Point3D);\n constructor(data: {x?: number, y?: number, z?: number});\n constructor(x?: number, y?: number, z?: number);\n constructor(x?: number | {x?: number, y?: number, z?: number} | Point3D, y?: number, z?: number) {\n if (x instanceof Point3D) {\n this.x = x.x;\n this.y = x.y;\n this.z = x.z;\n } else if (typeof x === 'object') {\n this.x = x.x ?? 0;\n this.y = x.y ?? 0;\n this.z = x.z ?? 0;\n } else {\n this.x = x ?? 0;\n this.y = y ?? 0;\n this.z = z ?? 0;\n }\n }\n\n\n /**\n * \uC131\uBD84 \uB300\uC785 (\uD30C\uAD34\uC801). \uBCA1\uD130 \uC804\uB2EC \uC2DC \uADF8 \uC131\uBD84\uC744 \uBCF5\uC0AC.\n * @example\n * v.set(1, 2, 3); // v = (1, 2, 3)\n * v.set(otherVector); // v = other\uC640 \uB3D9\uC77C \uC131\uBD84\n */\n public set(v: number | Vector | Point3D, y: number = 0, z: number = 0) {\n if (v instanceof Vector || v instanceof Point3D) {\n this.set(v.x || 0, v.y || 0, v.z || 0);\n } else {\n this.x = v;\n this.y = y;\n this.z = z;\n }\n return this;\n }\n\n /**\n * \uBCF5\uC0AC\uBCF8 \uBC18\uD658 (\uBE44\uD30C\uAD34). \uD30C\uAD34\uC801 \uBA54\uC11C\uB4DC\uC640 \uC870\uD569\uD574 \uC6D0\uBCF8 \uBCF4\uC874\uC6A9.\n * @example\n * const s = a.get(); s.add(b); // s = a+b, a\uB294 \uADF8\uB300\uB85C\n */\n public get() {\n return new Vector(this.x, this.y, this.z);\n }\n\n /**\n * \uB178\uB984(norm). \uD3C9\uD3C9\uD55C \uACF5\uAC04(\uC720\uD074\uB9AC\uB4DC \uACF5\uAC04)\uC5D0\uC11C\uC758 \uC9C1\uC120 \uAC70\uB9AC.\n * - \uC218\uC2DD: \u2016v\u2016 = \u221A(x\u00B2 + y\u00B2 + z\u00B2)\n * - 2D\uC5D0\uC11C\uB294 \uD53C\uD0C0\uACE0\uB77C\uC2A4 \uC815\uB9AC \uADF8 \uC790\uCCB4. 3D\uB294 \uB450 \uBC88 \uC801\uC6A9\uD55C \uAC83\uACFC \uAC19\uC74C.\n * (\uBC14\uB2E5 \uB300\uAC01\uC120 \u221A(x\u00B2+y\u00B2) \u2192 \uACF5\uAC04 \uB300\uAC01\uC120 \u221A((\uBC14\uB2E5)\u00B2+z\u00B2))\n * - \"\uC720\uD074\uB9AC\uB4DC\"\uB294 \uD3C9\uD3C9\uD55C \uACF5\uAC04\uC758 \uAE30\uD558\uD559\uC744 \uB9D0\uD568 (\uC88C\uD45C\uACC4\uB294 \uB370\uCE74\uB974\uD2B8\uC758 \uAC83, \uC720\uD074\uB9AC\uB4DC\uB294 \uC88C\uD45C \uC5C6\uC774 \uAE30\uD558\uD559\uC744 \uC138\uC6C0).\n * \uD718\uC5B4\uC9C4 \uACF5\uAC04(\uAD6C\uBA74\u00B7\uC30D\uACE1)\uC5D0\uC11C\uB294 \uC774 \uACF5\uC2DD\uC774 \uC131\uB9BD\uD558\uC9C0 \uC54A\uC74C.\n * @example\n * new Vector(3, 4, 0).norm(); // 5\n * new Vector(6, 8, 0).norm(); // 10\n */\n public norm(): number {\n const x = this.x;\n const y = this.y;\n const z = this.z;\n // \uAC19\uC740 \uBCA1\uD130\uC640\uC758 \uB0B4\uC801 \uC81C\uACF1\uADFC\uC73C\uB85C\uB3C4 \uAD6C\uD560 \uC218 \uC788\uC74C: \u2016v\u2016 = \u221A(v\u00B7v)\n // return Math.sqrt(this.dot(this));\n return Math.sqrt(x * x + y * y + z * z); // \uC758 \uC81C\uACF1\uADFC\uC744 \uB9AC\uD134\uD558\uBA74 \uAE38\uC774\uAC00 \uBC18\uD658\uB41C\uB2E4.\n }\n\n /**\n * norm()\uC758 \uBCC4\uCE6D (p5.js \uD638\uD658).\n * @example\n * new Vector(3, 4, 0).mag(); // 5\n */\n public mag(): number {\n return this.norm();\n }\n\n /**\n * \uB367\uC148 (\uD30C\uAD34\uC801). \uC131\uBD84\uBCC4 \uD569. \uAE30\uD558\uD559\uC801\uC73C\uB85C \uD3C9\uD589\uC0AC\uBCC0\uD615\uC758 \uB300\uAC01\uC120.\n * - \uC218\uC2DD: a + b = (ax+bx, ay+by, az+bz)\n * @example\n * const a = new Vector(4, 2); a.add(new Vector(-2, 3)); // a = (2, 5)\n */\n public add(v: number | Vector | Point3D, y: number = 0, z: number = 0) {\n if (v instanceof Vector || v instanceof Point3D) {\n this.x += v.x;\n this.y += v.y;\n this.z += v.z;\n } else {\n this.x += v;\n this.y += y;\n this.z += z;\n }\n }\n\n /**\n * \uB367\uC148 \uACB0\uACFC\uC758 \uC0C8 \uBCA1\uD130 \uBC18\uD658 (\uBE44\uD30C\uAD34).\n * - \uC218\uC2DD: a + b = (ax+bx, ay+by, az+bz)\n * @example\n * const s = a.toAdd(a, b); // s = a+b, a\u00B7b\uB294 \uADF8\uB300\uB85C\n */\n public toAdd(v1: Vector|Point3D, v2: Vector|Point3D): Vector {\n return new Vector(v1.x + v2.x, v1.y + v2.y, v1.x + v2.y);\n }\n\n // public static add(v1: Vector, v2: Vector): Vector {\n // return new Vector(v1.x + v2.x, v1.y + v2.y, v1.x + v2.y);\n // }\n\n /**\n * \uBE84\uC148 (\uD30C\uAD34\uC801). a - b\uB294 \"a\uC5D0\uC11C b\uB97C \uB418\uB3CC\uB9AC\uB294\" \uBCA1\uD130.\n * - \uC218\uC2DD: a - b = (ax-bx, ay-by, az-bz)\n * @example\n * const a = new Vector(4, 2); a.sub(new Vector(1, 1)); // a = (3, 1)\n */\n public sub(v: number | Vector |Point3D, y = 0, z = 0) {\n if (v instanceof Vector || v instanceof Point3D) {\n this.x -= v.x;\n this.y -= v.y;\n this.z -= v.z;\n } else {\n this.x -= v;\n this.y -= y;\n this.z -= z;\n }\n }\n\n /**\n * \uBE84\uC148 \uACB0\uACFC\uC758 \uC0C8 \uBCA1\uD130 \uBC18\uD658 (\uBE44\uD30C\uAD34).\n * - \uC218\uC2DD: a - b = (ax-bx, ay-by, az-bz)\n * @example\n * const d = a.toSub(b); // d = a-b, a\u00B7b\uB294 \uADF8\uB300\uB85C\n */\n public toSub(v2: Vector | Point3D): Vector {\n const v1 = this;\n return new Vector(v1.x - v2.x, v1.y - v2.y, v1.z - v2.z);\n }\n\n //\n // public static sub(v1: Vector, v2: Vector): Vector {\n // return new Vector(v1.x - v2.x, v1.y - v2.y, v1.z - v2.z);\n // }\n\n /**\n * \uC2A4\uCE7C\uB77C\uBC30 \uB610\uB294 \uC131\uBD84\uBCC4 \uACF1 (\uD30C\uAD34\uC801). \uC2A4\uCE7C\uB77C k>1\uC774\uBA74 \uB298\uC5B4\uB098\uACE0, 0<k<1\uC774\uBA74 \uC904\uC5B4\uB4E6. k<0\uC774\uBA74 \uBC18\uB300 \uBC29\uD5A5.\n * - \uC218\uC2DD(\uC2A4\uCE7C\uB77C): k\u00B7v = (k\u00B7x, k\u00B7y, k\u00B7z)\n * @example\n * const v = new Vector(1, 2); v.mult(3); // v = (3, 6)\n */\n public mult(v: number | Vector | Point3D) {\n if (v instanceof Vector || v instanceof Point3D) {\n this.x *= v.x;\n this.y *= v.y;\n this.z *= v.z;\n } else {\n this.x *= v;\n this.y *= v;\n this.z *= v;\n }\n return this;\n }\n\n /**\n * \uC131\uBD84\uBCC4 \uACF1 \uACB0\uACFC\uC758 \uC0C8 \uBCA1\uD130 \uBC18\uD658 (\uBE44\uD30C\uAD34).\n * - \uC218\uC2DD: (ax\u00B7bx, ay\u00B7by, az\u00B7bz)\n * @example\n * const m = a.toMult(b); // m = \uC131\uBD84\uBCC4 \uACF1, a\u00B7b\uB294 \uADF8\uB300\uB85C\n */\n public toMult(v2: Vector | Point3D): Vector {\n const v1 = this;\n return new Vector(v1.x *= v2.x, v1.y *= v2.y, v1.z *= v2.z);\n }\n\n // public static mult(v1: Vector, v2: Vector) {\n // return new Vector(v1.x *= v2.x, v1.y *= v2.y, v1.z *= v2.z);\n // }\n\n /**\n * \uC2A4\uCE7C\uB77C \uB098\uB217\uC148 \uB610\uB294 \uC131\uBD84\uBCC4 \uB098\uB217\uC148 (\uD30C\uAD34\uC801). \uC815\uADDC\uD654\uC758 \uD575\uC2EC \uC5F0\uC0B0.\n * - \uC218\uC2DD(\uC2A4\uCE7C\uB77C): v/k = (x/k, y/k, z/k)\n * @example\n * const v = new Vector(6, 8); v.div(2); // v = (3, 4)\n */\n public div(v: number | Vector | Point3D) {\n if (v instanceof Vector || v instanceof Point3D) {\n this.x /= v.x;\n this.y /= v.y;\n this.z /= v.z;\n } else {\n this.x /= v;\n this.y /= v;\n this.z /= v;\n }\n return this;\n }\n\n /**\n * \uC2A4\uCE7C\uB77C \uB098\uB217\uC148 \uACB0\uACFC\uC758 \uC0C8 \uBCA1\uD130 \uBC18\uD658 (\uBE44\uD30C\uAD34).\n * - \uC218\uC2DD: v/k = (x/k, y/k, z/k)\n * @example\n * const h = v.toDiv(2); // h = v/2, v\uB294 \uADF8\uB300\uB85C\n */\n public toDiv( d: number): Vector {\n const v = this;\n const rv = v.get();\n rv.x /= d;\n rv.y /= d;\n rv.z /= d;\n return rv;\n }\n\n // public static div(v: Vector, d: number): Vector {\n // const rv = v.get();\n // rv.x /= d;\n // rv.y /= d;\n // rv.z /= d;\n // return rv;\n // }\n\n /**\n * \uB450 \uC810(\uBCA1\uD130) \uC0AC\uC774 \uAC70\uB9AC. \uCC28 \uBCA1\uD130\uC758 \uD06C\uAE30.\n * - \uC218\uC2DD: d = \u221A((dx)\u00B2 + (dy)\u00B2 + (dz)\u00B2)\n * @example\n * new Vector(0, 0).dist(new Vector(3, 4)); // 5\n */\n public dist(v: Vector | Point3D): number {\n const dx = this.x - v.x,\n dy = this.y - v.y,\n dz = this.z - v.z;\n return Math.sqrt(dx * dx + dy * dy + dz * dz);\n }\n\n /**\n * \uB450 \uC810(\uBCA1\uD130) \uC0AC\uC774 \uAC70\uB9AC (toDist\uB294 dist\uC640 \uB3D9\uC77C, \uBE44\uD30C\uAD34).\n * - \uC218\uC2DD: d = \u221A((dx)\u00B2 + (dy)\u00B2 + (dz)\u00B2)\n * @example\n * a.toDist(b); // a\uC640 b \uC0AC\uC774 \uAC70\uB9AC\n */\n public toDist(v2: Vector | Point3D): number {\n const v1 = this;\n const dx = v1.x - v2.x,\n dy = v1.y - v2.y,\n dz = v1.z - v2.z;\n return Math.sqrt(dx * dx + dy * dy + dz * dz);\n }\n\n // public static dist(v1: Vector, v2: Vector): number {\n // const dx = v1.x - v2.x,\n // dy = v1.y - v2.y,\n // dz = v1.z - v2.z;\n // return Math.sqrt(dx * dx + dy * dy + dz * dz);\n // }\n\n /**\n * \uB0B4\uC801(dot product). \uB450 \uBCA1\uD130\uAC00 \uAC19\uC740 \uBC29\uD5A5\uC744 \uD5A5\uD558\uB294 \uC815\uB3C4.\n * - \uC218\uC2DD: a\u00B7b = ax\u00B7bx + ay\u00B7by + az\u00B7bz = |a||b|cos\u03B8\n * - \u03B8=90\u00B0\uBA74 0(\uC9C1\uAD50), 0\u00B0\uBA74 \uCD5C\uB300(\uAC19\uC740 \uBC29\uD5A5).\n * - \uBCA1\uD130 \uC804\uB2EC \uC2DC y\u00B7z \uC0DD\uB7B5 \uAC00\uB2A5, \uC2A4\uCE7C\uB77C(x) \uC804\uB2EC \uC2DC y\u00B7z\uC640 \uD568\uAED8 \uC0AC\uC6A9.\n * @example\n * new Vector(5, 12).dot(new Vector(-5, 12)); // -25+144 = 119\n * new Vector(1, 0).dot(new Vector(0, 1)); // 0 (\uC9C1\uAC01)\n * new Vector(1, 2).dot(3, 4); // 1*3+2*4 = 11\n */\n public dot(v: number | Vector | Point3D, y = 0, z = 0): number {\n if (v instanceof Vector || v instanceof Point3D) {\n return this.x * v.x + this.y * v.y + this.z * v.z;\n }\n ;\n return this.x * v + this.y * y + this.z * z;\n }\n\n /**\n * \uC678\uC801(cross product). \uB450 \uBCA1\uD130\uC5D0 \uC218\uC9C1\uC778 \uBCA1\uD130. \uC624\uB978\uC190 \uBC95\uCE59 \uBC29\uD5A5.\n * - \uC218\uC2DD: a\u00D7b = (ay\u00B7bz \u2212 az\u00B7by, az\u00B7bx \u2212 ax\u00B7bz, ax\u00B7by \u2212 ay\u00B7bx)\n * - 2D\uC5D0\uC11C\uB294 z\uAC12 = ax\u00B7by \u2212 ay\u00B7bx (\uBD80\uD638 \uC788\uB294 \uBA74\uC801, \uD68C\uC804 \uBC29\uD5A5 \uD310\uC815\uC6A9).\n * @example\n * new Vector(1, 0, 0).cross(new Vector(0, 1, 0)); // (0, 0, 1)\n */\n public cross(v: Vector | Point3D): Vector {\n const x = this.x,\n y = this.y,\n z = this.z;\n return new Vector(y * v.z - v.y * z, z * v.x - v.z * x, x * v.y - v.x * y);\n }\n\n /**\n * \uC815\uADDC\uD654 (\uD30C\uAD34\uC801). \uBC29\uD5A5\uC740 \uADF8\uB300\uB85C, \uD06C\uAE30\uB97C 1\uB85C. \uB2E8\uC704\uBCA1\uD130 v\u0302 \uC0DD\uC131.\n * - \uC218\uC2DD: v\u0302 = v / |v|\n * - \uC601\uBCA1\uD130(|v|=0)\uB294 0\uC73C\uB85C \uB098\uB204\uC9C0 \uC54A\uACE0 \uADF8\uB300\uB85C \uB460.\n * @example\n * const v = new Vector(6, 8); v.normalize(); // v = (0.6, 0.8), |v| = 1\n */\n public normalize() {\n const m = this.norm();\n if (m > 0) this.div(m);\n }\n\n /**\n * \uD06C\uAE30 \uC0C1\uD55C (\uD30C\uAD34\uC801). \uC18D\uB3C4\uAC00 high\uB97C \uB118\uC73C\uBA74 \uBC29\uD5A5 \uC720\uC9C0\uD55C \uCC44 high\uB85C \uC790\uB984. \uBB3C\uB9AC \uC2DC\uBBAC\uB808\uC774\uC158 \uCD5C\uACE0\uC18D\uB3C4\uC6A9.\n * - \uC218\uC2DD: |v| > high \u2192 v = v\u0302 \u00B7 high\n * @example\n * const v = new Vector(6, 8); v.limit(5); // |v|=10 \u2192 5, v = (3, 4)\n */\n public limit(high: number) {\n if (this.norm() > high) {\n this.normalize();\n this.mult(high);\n }\n }\n\n /**\n * 2D \uBC29\uD5A5\uAC01. +x\uCD95 \uAE30\uC900 \uBC18\uC2DC\uACC4 \uBC29\uD5A5 \uB77C\uB514\uC548 (-\u03C0 ~ \u03C0).\n * - \uC218\uC2DD: \u03B8 = atan2(y, x)\n * @example\n * new Vector(1, 1).heading2D(); // \u03C0/4 (45\u00B0)\n * new Vector(-1, 0).heading2D(); // \u03C0 (180\u00B0)\n */\n public heading2D() {\n return -Math.atan2(-this.y, this.x);\n }\n\n /**\n * \uBB34\uC791\uC704 \uBC29\uD5A5 \uB2E8\uC704\uBCA1\uD130 \uBC18\uD658 (\uC0C8 Vector, \uC790\uC2E0\uC740 \uBCC0\uACBD \uC548 \uD568).\n * @example\n * const r = new Vector().random2D(); // |r| = 1, \uBC29\uD5A5 \uB79C\uB364\n */\n public random2D() {\n return this.fromAngle(Math.random() * (2 * Math.PI));\n }\n\n /**\n * \uAC01\uB3C4\u2192\uBCA1\uD130. \uAC01\uB3C4 \u03B8, \uAE38\uC774 L\uC778 2D \uBCA1\uD130 \uBC18\uD658 (\uC0C8 Vector).\n * - \uC218\uC2DD: (L\u00B7cos\u03B8, L\u00B7sin\u03B8, 0)\n * @example\n * new Vector().fromAngle(Math.PI / 3, 2); // (1, 1.73, 0)\n */\n public fromAngle(angle: number, length = 1) {\n return new Vector(length * Math.cos(angle), length * Math.sin(angle), 0);\n };\n\n /**\n * \uAD6C\uBA74\uC88C\uD45C\u21923D \uBCA1\uD130 (\uC0C8 Vector \uBC18\uD658, p5.js \uCEE8\uBCA4\uC158).\n * - \uC218\uC2DD: (L\u00B7sin\u03B8\u00B7sin\u03C6, \u2212L\u00B7cos\u03B8, L\u00B7sin\u03B8\u00B7cos\u03C6)\n * @example\n * new Vector().fromAngles(Math.PI / 2, Math.PI / 2, 1); // (1, 0, 0)\n */\n public fromAngles(theta: number, phi: number, length = 1) {\n const cosPhi = Math.cos(phi);\n const sinPhi = Math.sin(phi);\n const cosTheta = Math.cos(theta);\n const sinTheta = Math.sin(theta);\n\n return new Vector(\n length * sinTheta * sinPhi,\n -length * cosTheta,\n length * sinTheta * cosPhi\n );\n };\n\n /**\n * \uC131\uBD84 \uBC30\uC5F4 \uBC18\uD658. [x, y, z] \uC21C\uC11C.\n * @example\n * new Vector(1, 2, 3).array(); // [1, 2, 3]\n */\n public array(): number[] {\n return [this.x, this.y, this.z];\n }\n\n /**\n * Point3D\uB85C \uBCC0\uD658 (\uC704\uCE58 \uC758\uBBF8\uB85C \uBC14\uAFC0 \uB54C).\n * @example\n * new Vector(1, 2, 3).toPoint3D(); // Point3D(1, 2, 3)\n */\n public toPoint3D(): Point3D {\n return new Point3D(this.x, this.y, this.z);\n }\n\n /**\n * Point2D\uB85C \uBCC0\uD658 (z \uBC84\uB9BC).\n * @example\n * new Vector(1, 2, 3).toPoint2D(); // Point2D(1, 2)\n */\n public toPoint2D(): Point2D {\n return new Point2D(this.x, this.y);\n }\n\n /**\n * \uBCF5\uC0AC\uBCF8 \uBC18\uD658 (get()\uACFC \uB3D9\uC77C, \uBE44\uD30C\uAD34).\n * @example\n * const c = v.copy(); // v\uC640 \uAC19\uC740 \uC131\uBD84\uC758 \uC0C8 \uBCA1\uD130\n */\n public copy(): Vector {\n return new Vector(this.x, this.y, this.z);\n }\n\n /**\n * \uBB38\uC790\uC5F4 \uD45C\uD604. \"[x, y, z]\" \uD615\uC2DD.\n * @example\n * new Vector(1, 2).toString(); // \"[1, 2, 0]\"\n */\n public toString(): string {\n return '[' + this.x + ', ' + this.y + ', ' + this.z + ']';\n }\n\n}\n", "import { Vector } from './Vector';\nimport { Point2D } from './Point2D';\n\nexport class Point3D extends Point2D {\n public z: number;\n\n constructor(data: Vector);\n constructor(data: {x?: number, y?: number, z?: number});\n constructor(x?: number, y?: number, z?: number);\n constructor(x?: number | {x?: number, y?: number, z?: number} | Vector, y?: number, z?: number) {\n if (x instanceof Vector) {\n super(x.x, x.y);\n this.z = x.z;\n } else if (typeof x === 'object') {\n super({x: x.x ?? 0, y: x.y ?? 0})\n this.z = x.z ?? 0;\n } else {\n super(x,y)\n this.z = z ?? 0;\n }\n }\n\n copy() {\n return new Point3D(this.x, this.y, this.z);\n }\n}\n", "export type SizeType = {\n width: number;\n height: number;\n};\n\nexport const isSizeType = (obj: any): obj is SizeType =>\n !!obj &&\n typeof obj.width === 'number' &&\n typeof obj.height === 'number';", "import { Point2D } from './Point2D';\nimport { MathUtil } from '../math/MathUtil';\nimport AngleUnitType = MathUtil.AngleUnitType;\nimport { isSizeType, SizeType } from './SizeType';\nimport { Point2DType } from './Point2DType';\n\ntype ValueLinkControl<T> = { value: T, noLink: boolean | Rect };\nconst isValueLinkControl = <T = any>(data: any): data is ValueLinkControl<T> => {\n return typeof data === 'object' && 'value' in data && 'noLink' in data;\n // return data.value !== undefined && data.noLink !== undefined && typeof data.value === 'object' && typeof data.noLink === 'boolean';\n}\n\nexport class Rect {\n private _start: Point2D;\n private _width: number\n private _height: number\n private linkRects?: Set<Rect>;\n\n constructor(size: SizeType);\n constructor(point: Point2DType, endPoint: Point2DType);\n constructor(point: Point2D, endPoint: Point2D);\n constructor(point: Point2D, width?: number, height?: number);\n constructor(x: number, y: number, width?: number, height?: number);\n constructor(xOrPoint: number | Point2D | { x: number, y: number } | SizeType, yOrPointOrWidth?: number | Point2D | { x: number, y: number }, widthOrHeight = 0, heightOrUndefined = 0) {\n if (isSizeType(xOrPoint)) {\n this._start = new Point2D(0, 0);\n this._width = xOrPoint.width;\n this._height = xOrPoint.height;\n } else if (typeof xOrPoint === 'object' && typeof yOrPointOrWidth === 'object') {\n this._start = xOrPoint instanceof Point2D ? xOrPoint : new Point2D(xOrPoint.x, xOrPoint.y);\n this.end = yOrPointOrWidth instanceof Point2D ? yOrPointOrWidth : new Point2D(yOrPointOrWidth.x, yOrPointOrWidth.y);\n } else if (typeof xOrPoint === 'object' && typeof yOrPointOrWidth === 'number') {\n this._start = xOrPoint instanceof Point2D ? xOrPoint : new Point2D(xOrPoint.x, xOrPoint.y);\n this._width = yOrPointOrWidth;\n this._height = widthOrHeight\n } else if (typeof xOrPoint === 'number' && typeof yOrPointOrWidth === 'number') {\n this._start = new Point2D(xOrPoint, yOrPointOrWidth);\n this._width = widthOrHeight;\n this._height = heightOrUndefined;\n }\n }\n\n\n private valueLinkControl<T>(value: T | ValueLinkControl<T>) {\n let v: T;\n let noLink: boolean | Rect = false;\n if (isValueLinkControl(value)) {\n v = value.value;\n noLink = value.noLink;\n } else {\n v = value;\n }\n return {value: v, noLink};\n }\n\n get width(): number {\n return this._width;\n }\n\n get height(): number {\n return this._height;\n }\n\n get start(): Point2D {\n return this._start.copy();\n }\n\n ////////////////////\n\n set width(width: number) {\n this.setWidth(width);\n }\n\n public setWidth(width: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(width);\n const percentDiff = MathUtil.getPercentByTotal(this._width, value);\n this._width = value;\n this.applyWidthPercentLinks({value: percentDiff, noLink});\n }\n\n\n set height(height: number) {\n this.setHeight(height);\n }\n\n public setHeight(height: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(height);\n const percentDiff = MathUtil.getPercentByTotal(this._height, value);\n this._height = value;\n this.applyHeightPercentLinks({value: percentDiff, noLink});\n }\n\n set start(inputValue: Point2D) {\n let {value, noLink} = this.valueLinkControl(inputValue);\n const percentDiff = new Point2D({x: MathUtil.getPercentByTotal(this._start.x, value.x), y: MathUtil.getPercentByTotal(this._start.y, value.y)});\n this._start = value;\n this.applyStartPercentLinks({value: percentDiff, noLink});\n }\n\n // \uC5B8\uC81C\uC4F0\uB294\uAC70\uC9C0 \u3161\u3161?\n setWidthFromEnd(inputValue: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(inputValue);\n const percentDiff = MathUtil.getPercentByTotal(this.start.x, value);\n this._start.x = this.end.x - value;\n this.applyStartXPercentLinks({value: percentDiff, noLink});\n }\n\n set widthFromEnd(inputValue: number) {\n this.setWidthFromEnd(inputValue);\n }\n\n // \uC5B8\uC81C\uC4F0\uB294\uAC70\uC9C0 \u3161\u3161?\n setHeightFromEnd(inputValue: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(inputValue);\n const diff = this.end.y - value;\n const percentDiff = MathUtil.getPercentByTotal(this.start.y, diff);\n this._start.y = diff;\n this.applyStartYPercentLinks({value: percentDiff, noLink});\n }\n\n set heightFromEnd(inputValue: number) {\n this.setHeightFromEnd(inputValue);\n }\n\n setWidthFromCenter(inputValue: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(inputValue);\n const diff = this.center.x - (value / 2);\n const percentDiff = MathUtil.getPercentByTotal(this.start.x, diff);\n this._start.x = diff;\n this.applyStartXPercentLinks(percentDiff);\n }\n\n set widthFromCenter(inputValue: number) {\n this.setWidthFromCenter(inputValue);\n }\n\n setHeightFromCenter(inputValue: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(inputValue);\n const diff = this.center.y - (value / 2);\n const percentDiff = MathUtil.getPercentByTotal(this.start.y, diff);\n this._start.y = diff;\n this.applyStartYPercentLinks(percentDiff);\n }\n\n set heightFromCenter(inputValue: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(inputValue);\n const diff = this.center.y - (value / 2);\n const percentDiff = MathUtil.getPercentByTotal(this.start.y, diff);\n this._start.y = diff;\n this.applyStartYPercentLinks(percentDiff);\n }\n\n set x(inputValue: number) {\n this.setX(inputValue);\n }\n\n public setX(inputValue: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(inputValue);\n const diff = value - this._start.x;\n const percentDiff = MathUtil.getPercentByTotal(this.width, diff);\n this._start.x = value;\n this.applyStartXPercentLinks({value: percentDiff, noLink});\n }\n\n set y(inputValue: number) {\n this.setY(inputValue);\n }\n\n public setY(inputValue: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(inputValue);\n const diff = value - this._start.y;\n const percentDiff = MathUtil.getPercentByTotal(this.height, diff);\n this._start.y = value;\n this.applyStartYPercentLinks({value: percentDiff, noLink});\n }\n\n ////////////////////////////\n\n applyWidthPercentLinks(widthPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(widthPercent);\n if (this.linkRects && (typeof noLink === 'boolean' ? !noLink : true)) {\n Array.from(this.linkRects.values()).filter(it => {\n return typeof noLink === 'boolean' ? true : it !== noLink;\n }).forEach(it => {\n it.setWidthByWidthPercent({value: value, noLink: this});\n })\n }\n }\n\n applyHeightPercentLinks(heightPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(heightPercent);\n if (this.linkRects && (typeof noLink === 'boolean' ? !noLink : true)) {\n Array.from(this.linkRects.values()).filter(it => {\n return typeof noLink === 'boolean' ? true : it !== noLink;\n }).forEach(it => {\n it.setHeightByHeightPercent({value: value, noLink: this});\n })\n }\n }\n\n applyStartPercentLinks(startPercent: Point2D | ValueLinkControl<Point2D>) {\n let {value, noLink} = this.valueLinkControl(startPercent);\n this.applyStartXPercentLinks({value: value.x, noLink});\n this.applyStartYPercentLinks({value: value.y, noLink});\n }\n\n applyStartXPercentLinks(xPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(xPercent);\n if (this.linkRects && (typeof noLink === 'boolean' ? !noLink : true)) {\n Array.from(this.linkRects.values()).filter(it => {\n return typeof noLink === 'boolean' ? true : it !== noLink;\n }).forEach(it => {\n it.addXByWidthPercent({value: value, noLink: this});\n })\n }\n }\n\n applyStartYPercentLinks(yPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(yPercent);\n if (this.linkRects && (typeof noLink === 'boolean' ? !noLink : true)) {\n Array.from(this.linkRects.values()).filter(it => {\n return typeof noLink === 'boolean' ? true : it !== noLink;\n }).forEach(it => {\n it.addYByHeightPercent({value: value, noLink: this});\n })\n }\n }\n\n hasLink(rect: Rect) {\n return this.linkRects?.has(rect)\n }\n\n isLinked() {\n return !!this.linkRects?.size;\n }\n\n addLink(...rect: Rect[]) {\n this.linkRects ??= new Set<Rect>();\n rect.filter(it => !this.linkRects?.has(it)).forEach(it => {\n this.linkRects?.add(it);\n it.addLink(this);\n })\n }\n\n setLinks(rects: Rect[]) {\n this.unLinkAll();\n this.addLink(...rects);\n }\n\n unLinkAll() {\n if (this.linkRects) {\n Array.from(this.linkRects.values()).forEach(it => {\n this.unLink(it);\n })\n this.linkRects.clear();\n }\n }\n\n unLink(rect: Rect | ValueLinkControl<Rect>) {\n let {value, noLink} = this.valueLinkControl(rect);\n if (this.linkRects) {\n this.linkRects.delete(value);\n }\n if (!noLink)\n value.unLink({value: this, noLink: this});\n }\n\n addWidthPercent(wPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(wPercent);\n this.setWidth({value: this.width + MathUtil.getValueByTotalInPercent(this.width, value), noLink});\n }\n\n addHeightPercent(hPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(hPercent);\n this.setHeight({value: this.height + MathUtil.getValueByTotalInPercent(this.height, value), noLink});\n }\n\n addWidthRatio(wRatio: number) {\n this.width = this.width + MathUtil.getValueByTotalInRatio(this.width, wRatio);\n }\n\n addHeightRatio(hRatio: number) {\n this.height = this.height + MathUtil.getValueByTotalInRatio(this.height, hRatio);\n }\n\n addXPercent(wPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(wPercent);\n this.setX({value: this.x + MathUtil.getValueByTotalInPercent(this.width, value), noLink});\n }\n\n addYPercent(hPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(hPercent);\n this.setY({value: this.y + MathUtil.getValueByTotalInPercent(this.height, value), noLink});\n }\n\n addXRatio(wRatio: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(wRatio);\n this.setX({value: this.x + MathUtil.getValueByTotalInRatio(this.width, value), noLink});\n }\n\n addYRatio(hRatio: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(hRatio);\n this.setY({value: this.y + MathUtil.getValueByTotalInRatio(this.height, value), noLink});\n }\n\n ////////////\n\n set endX(value: number) {\n const diff = value - this.x;\n this.width = diff;\n }\n\n set endXPercent(endXPercent: number) {\n this.endX = MathUtil.getValueByTotalInPercent(this.width, endXPercent);\n }\n\n set endYPercent(endYPercent: number) {\n this.endY = MathUtil.getValueByTotalInPercent(this.height, endYPercent);\n }\n\n set endY(value: number) {\n this.height = value - this.y;\n }\n\n set end(value: Point2D) {\n this.width = value.x - this.x;\n this.height = value.y - this.y;\n }\n\n get x(): number {\n return this.start.x;\n }\n\n get y(): number {\n return this.start.y;\n }\n\n get endX(): number {\n return this.end.x;\n }\n\n get endY(): number {\n return this.end.y;\n }\n\n to(startPoint: Point2D) {\n const r = this.copy();\n r.start = startPoint;\n return r;\n }\n\n toRotate(r: number, {rotatePoint = this.center, type = 'degreeAngle'}: { rotatePoint?: { x: number, y: number }, type?: AngleUnitType }): Point2D[] {\n const angle = MathUtil.radians(r, {type});\n const centerPoint = rotatePoint instanceof Point2D ? rotatePoint : new Point2D(rotatePoint.x, rotatePoint.y);\n\n const points = [\n this.leftTop,\n this.rightTop,\n this.rightBottom,\n this.leftBottom\n ];\n\n return points.map(p => MathUtil.rotatePoint(p, centerPoint, angle));\n }\n\n get center(): Point2D {\n return new Point2D(this.start.x + (this.width / 2), this.start.y + (this.height / 2));\n }\n\n get end(): Point2D {\n return new Point2D(this.start.x + this.width, this.start.y + this.height);\n }\n\n get leftTop(): Point2D {\n return this.start.copy();\n }\n\n get leftBottom(): Point2D {\n return new Point2D(this.start.x, this.end.y);\n }\n\n get rightTop(): Point2D {\n return new Point2D(this.end.x, this.start.y);\n }\n\n get rightBottom(): Point2D {\n return this.end;\n }\n\n public copy(): Rect {\n return new Rect(this.x, this.y, this.width, this.height);\n }\n\n /////////////////\n\n getWidthPercent(width: number) {\n return MathUtil.getPercentByTotal(this.width, width);\n }\n\n getWidthRatio(width: number) {\n return MathUtil.getRatioByTotal(this.width, width);\n }\n\n getWidthByPercent(percent: number) {\n return MathUtil.getValueByTotalInPercent(this.width, percent);\n }\n\n getWidthByRatio(percent: number) {\n return MathUtil.getValueByTotalInRatio(this.width, percent);\n }\n\n getHeightPercent(height: number) {\n return MathUtil.getPercentByTotal(this.height, height);\n }\n\n getHeightRatio(height: number) {\n return MathUtil.getRatioByTotal(this.height, height);\n }\n\n getHeightByPercent(percentY: number) {\n return MathUtil.getValueByTotalInPercent(this.height, percentY);\n }\n\n getHeightByRatio(ratio: number) {\n return MathUtil.getValueByTotalInRatio(this.height, ratio);\n }\n\n getXPercent(x: number) {\n return MathUtil.getPercentByTotal(this.width, x - this.x)\n }\n\n getXRatio(x: number) {\n return MathUtil.getRatioByTotal(this.width, x - this.x)\n }\n\n getXByPercent(xPercent: number) {\n return this.x + MathUtil.getValueByTotalInPercent(this.width, xPercent);\n }\n\n getXByRatio(ratio: number) {\n return this.x + MathUtil.getValueByTotalInRatio(this.width, ratio);\n }\n\n getYPercent(y: number) {\n return MathUtil.getPercentByTotal(this.height, y - this.y);\n }\n\n getYRatio(y: number) {\n return MathUtil.getRatioByTotal(this.height, y - this.y);\n }\n\n getYByPercent(yPercent: number) {\n return this.y + MathUtil.getValueByTotalInPercent(this.height, yPercent);\n }\n\n getYByRatio(ratio: number) {\n return this.y + MathUtil.getValueByTotalInRatio(this.height, ratio);\n }\n\n getPercent(point: { x: number, y: number }): Point2D {\n return new Point2D(\n this.getXPercent(point.x),\n this.getYPercent(point.y),\n );\n }\n\n /**\n * \uC8FC\uC5B4\uC9C4 width\uC5D0 \uB9DE\uCDB0 \uBE44\uC728\uC5D0 \uB530\uB77C height\uB97C \uC2A4\uCF00\uC77C\uB9C1\uD558\uC5EC \uC0C8\uB85C\uC6B4 Rect\uB97C \uBC18\uD658\uD569\uB2C8\uB2E4.\n * @param width \uC0C8\uB85C\uC6B4 width \uAC12\n * @returns \uBE44\uC728\uC5D0 \uB9DE\uAC8C height\uAC00 \uC870\uC815\uB41C Rect\n */\n toScaleByWidth(width: number): Rect {\n const ratio = this.height / this.width;\n return new Rect(this.x, this.y, width, width * ratio);\n }\n /**\n * \uC8FC\uC5B4\uC9C4 height\uC5D0 \uB9DE\uCDB0 \uBE44\uC728\uC5D0 \uB530\uB77C width\uB97C \uC2A4\uCF00\uC77C\uB9C1\uD558\uC5EC \uC0C8\uB85C\uC6B4 Rect\uB97C \uBC18\uD658\uD569\uB2C8\uB2E4.\n * @param height \uC0C8\uB85C\uC6B4 height \uAC12\n * @returns \uBE44\uC728\uC5D0 \uB9DE\uAC8C width\uAC00 \uC870\uC815\uB41C Rect\n */\n toScaleByHeight(height: number): Rect {\n const ratio = this.width / this.height;\n return new Rect(this.x, this.y, height * ratio, height);\n }\n\n toRatio(point: Rect | { x: number, y: number, w: number, h: number }): Rect {\n return new Rect(\n this.getXRatio(point.x),\n this.getYRatio(point.y),\n this.getWidthRatio(point instanceof Rect ? point.width : point.w),\n this.getHeightRatio(point instanceof Rect ? point.height : point.h),\n );\n }\n\n getRatio(point: { x: number, y: number }) {\n return new Point2D(\n this.getXRatio(point.x),\n this.getYRatio(point.y),\n );\n }\n\n getByPercent(percent: { x: number, y: number }): Point2D {\n return new Point2D(\n this.getXByPercent(percent.x),\n this.getYByPercent(percent.y),\n );\n }\n\n getByRatio(ratio: { x: number, y: number }) {\n return new Point2D(\n this.getXByRatio(ratio.x),\n this.getYByRatio(ratio.y),\n );\n }\n\n getDiffX(x: number) {\n return x - this.x;\n }\n\n getDiffY(y: number) {\n return y - this.y;\n }\n\n getDiffLeft(x: number) {\n this.getDiffX(x);\n }\n\n getDiffTop(y: number) {\n this.getDiffY(y);\n }\n\n getDiffRight(x: number) {\n return x - this.end.x;\n }\n\n getDiffBottom(y: number) {\n return y - this.end.y;\n }\n\n getDiffWidth(width: number) {\n return width - this.width;\n }\n\n getDiffHeight(height: number) {\n return height - this.height;\n }\n\n toDiff(rect: Rect) {\n return new Rect(\n rect.x - this.x,\n rect.y - this.y,\n rect.width - this.width,\n rect.height - this.height,\n );\n }\n\n setXByWidthPercent(wPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(wPercent);\n this.setX({value: MathUtil.getValueByTotalInPercent(this.width, value), noLink});\n }\n\n set xByWidthPercent(wPercent: number) {\n this.setXByWidthPercent(wPercent);\n }\n\n setXByWidthRatio(wRatio: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(wRatio);\n this.setX({value: MathUtil.getValueByTotalInRatio(this.width, value), noLink});\n }\n\n set xByWidthRatio(wRatio: number) {\n this.setXByWidthRatio(wRatio);\n }\n\n setYByHeightPercent(hPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(hPercent);\n this.setY({value: MathUtil.getValueByTotalInPercent(this.height, value), noLink});\n }\n\n set yByHeightPercent(hPercent: number) {\n this.setYByHeightPercent(hPercent);\n }\n\n setYByHeightRatio(ratio: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(ratio);\n this.setY({value: MathUtil.getValueByTotalInRatio(this.height, value), noLink});\n }\n\n set yByHeightRatio(ratio: number) {\n this.setYByHeightRatio(ratio);\n }\n\n addXByWidthPercent(wPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(wPercent);\n this.setX({value: this.x + MathUtil.getValueByTotalInPercent(this.width, value), noLink});\n }\n\n addXByWidthRatio(wRatio: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(wRatio);\n this.setX({value: this.x + MathUtil.getValueByTotalInRatio(this.width, value), noLink});\n }\n\n addYByHeightPercent(hPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(hPercent);\n this.setY({value: this.y + MathUtil.getValueByTotalInPercent(this.height, value), noLink});\n }\n\n addYByHeightRatio(ratio: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(ratio);\n this.setY({value: this.y + MathUtil.getValueByTotalInRatio(this.height, value), noLink});\n }\n\n setWidthByWidthPercent(wPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(wPercent);\n this.setWidth({value: MathUtil.getValueByTotalInPercent(this.width, value), noLink});\n }\n\n set widthByWidthPercent(wPercent: number) {\n this.setWidthByWidthPercent(wPercent);\n }\n\n setWidthByWidthRatio(wRatio: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(wRatio);\n this.setWidth({value: MathUtil.getValueByTotalInRatio(this.width, value), noLink});\n }\n\n set widthByWidthRatio(wRatio: number) {\n this.setWidthByWidthRatio(wRatio);\n }\n\n setHeightByHeightPercent(hPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(hPercent);\n this.setHeight({value: MathUtil.getValueByTotalInPercent(this.height, value), noLink});\n }\n\n set heightByHeightPercent(hPercent: number) {\n this.setHeightByHeightPercent(hPercent);\n }\n\n setHeightByHeightRatio(hRatio: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(hRatio);\n this.setHeight({value: MathUtil.getValueByTotalInRatio(this.height, value), noLink});\n }\n\n set heightByHeightRatio(hRatio: number) {\n this.setHeightByHeightRatio(hRatio);\n }\n\n // getWidthHeightPercentByPoint(point: Point2D): Point2D {\n // return new Point2D(this.getWidthPercent(point.x),this.getHeightPercent(point.y));\n // }\n //\n // getByPercent(point: Point2D): Point2D {\n // return new Point2D(this.getWidthByPercent(point.x),this.getHeightByPercent(point.y));\n // }\n\n ///////\n\n public copyByPercent(percent: number): Rect;\n public copyByPercent(percentX: number, percentY?: number): Rect ;\n public copyByPercent(percentOrX: number, percentY?: number): Rect {\n return new Rect(this.x, this.y,\n MathUtil.getValueByTotalInPercent(this.width, percentOrX),\n MathUtil.getValueByTotalInPercent(this.height, percentY ?? percentOrX)\n );\n }\n\n public copyByRatio(ratio: number): Rect;\n public copyByRatio(ratioX: number, ratioY?: number): Rect ;\n public copyByRatio(ratioOrX: number, ratioY?: number): Rect {\n return new Rect(this.x, this.y,\n MathUtil.getValueByTotalInRatio(this.width, ratioOrX),\n MathUtil.getValueByTotalInRatio(this.height, ratioY ?? ratioOrX)\n );\n }\n\n public isIn(data: { x: number, y: number }): boolean;\n public isIn(data: Point2D): boolean;\n public isIn(data: Rect): boolean\n public isIn(data: Point2D | Rect | { x: number, y: number }): boolean {\n if (data instanceof Rect) {\n return this.isIn(data.start) && this.isIn(data.end);\n } else {\n return data.x >= this.start.x && data.x <= this.end.x && data.y >= this.start.y && data.y <= this.end.y;\n }\n }\n\n public isOut(data: Point2D): boolean;\n public isOut(data: Rect): boolean;\n public isOut(data: Point2D | Rect) {\n if (data instanceof Rect) {\n return !this.isOverlap(data);\n } else {\n return !this.isIn(data);\n }\n }\n\n public isOverlap(data: Point2D): boolean;\n public isOverlap(data: Rect): boolean;\n public isOverlap(data: Point2D | Rect) {\n if (data instanceof Rect) {\n /*\n \uC0C8\uB85C\uC6B4 \uB85C\uC9C1\uC740 \uBC18\uB300\uB85C \"\uACB9\uCE58\uC9C0 \uC54A\uB294 \uC870\uAC74\"\uC744 \uCC3E\uACE0, \uADF8 \uC870\uAC74\uC5D0 \uD574\uB2F9\uD558\uC9C0 \uC54A\uC73C\uBA74 \"\uACB9\uCE5C\uB2E4\"\uACE0 \uD310\uB2E8\uD558\uB294\n \uBC29\uC2DD\uC785\uB2C8\uB2E4. \uC774 \uBC29\uBC95\uC774 \uD6E8\uC52C \uAC04\uB2E8\uD558\uACE0 \uBAA8\uB4E0 \uACBD\uC6B0\uB97C \uCC98\uB9AC\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.\n\n \uB450 \uC0AC\uAC01\uD615(A\uC640 B)\uC774 \uACB9\uCE58\uC9C0 \uC54A\uC73C\uB824\uBA74, \uB2E4\uC74C \uB124 \uAC00\uC9C0 \uC870\uAC74 \uC911 \uD558\uB098\uB77C\uB3C4 \uB9CC\uC871\uD574\uC57C \uD569\uB2C8\uB2E4.\n 1. A\uAC00 B\uC758 \uC644\uC804\uD788 \uC67C\uCABD\uC5D0 \uC788\uC744 \uB54C\n * A\uC758 \uC624\uB978\uCABD \uB05D(this.endX)\uC774 B\uC758 \uC67C\uCABD \uC2DC\uC791(data.x)\uBCF4\uB2E4 \uC67C\uCABD\uC5D0 \uC788\uB294 \uACBD\uC6B0\n * \uCF54\uB4DC: this.endX < data.x\n\n\n 2. A\uAC00 B\uC758 \uC644\uC804\uD788 \uC624\uB978\uCABD\uC5D0 \uC788\uC744 \uB54C\n * A\uC758 \uC67C\uCABD \uC2DC\uC791(this.x)\uC774 B\uC758 \uC624\uB978\uCABD \uB05D(data.endX)\uBCF4\uB2E4 \uC624\uB978\uCABD\uC5D0 \uC788\uB294 \uACBD\uC6B0\n * \uCF54\uB4DC: this.x > data.endX\n\n\n 3. A\uAC00 B\uC758 \uC644\uC804\uD788 \uC704\uCABD\uC5D0 \uC788\uC744 \uB54C\n * A\uC758 \uC544\uB798\uCABD \uB05D(this.endY)\uC774 B\uC758 \uC704\uCABD \uC2DC\uC791(data.y)\uBCF4\uB2E4 \uC704\uCABD\uC5D0 \uC788\uB294 \uACBD\uC6B0\n * \uCF54\uB4DC: this.endY < data.y\n\n\n 4. A\uAC00 B\uC758 \uC644\uC804\uD788 \uC544\uB798\uCABD\uC5D0 \uC788\uC744 \uB54C\n * A\uC758 \uC704\uCABD \uC2DC\uC791(this.y)\uC774 B\uC758 \uC544\uB798\uCABD \uB05D(data.endY)\uBCF4\uB2E4 \uC544\uB798\uCABD\uC5D0 \uC788\uB294 \uACBD\uC6B0\n * \uCF54\uB4DC: this.y > data.endY\n */\n const noOverlap = this.endX < data.x ||\n this.x > data.endX ||\n this.endY < data.y ||\n this.y > data.endY;\n return !noOverlap;\n // return (\n // this.isOverlap(data.leftTop) ||\n // this.isOverlap(data.rightTop) ||\n // this.isOverlap(data.rightBottom) ||\n // this.isOverlap(data.leftBottom)) ||\n // (\n // data.start.x < this.x && data.start.y < this.y &&\n // data.end.x > this.end.x && data.end.y > this.end.y\n // );\n } else {\n return this.isIn(data);\n }\n }\n\n public toString(): string {\n return `x:${this.x}, y:${this.y}, width: ${this.width}, height: ${this.height}`;\n }\n\n}\n", "import { Vector } from '../../Vector';\nimport { Rect } from '../../Rect';\n\ntype Transaform = [number, number, number, number, number, number];\n\ntype Color = {\n r?: number,\n g?: number,\n b?: number,\n a?: number\n};\n\nexport class Obj<T = any> extends Vector {\n\n public volume = 0; // \uBD80\uD53C\n public mass = 0; // \uC9C8\uB7C9\n public e = 0; // \uD0C4\uC131\n public rotate = 0; // \uD68C\uC804\n public width = 0; // \uB108\uBE44\n public height = 0; // \uB192\uC774\n public data?: T;\n // public age = 0; // \uC0DD\uC131\uB41C \uC2DC\uAC04 \uAC00\uC911\uCE58\n // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/transform\n /*\n a, d: \uAC00\uB85C/\uC138\uB85C \uC2A4\uCF00\uC77C\n b, c: \uAE30\uC6B8\uC774\uAE30(skew)\n e, f: \uC774\uB3D9(translate)\n --------------\n a, b, c, d, e, f\n */\n public transform: Transaform = [1, 0, 0, 1, 0, 0];\n public color: Color = {\n r: 0,\n g: 0,\n b: 0,\n a: 255\n };\n public id?: string;\n\n // public data?: T;\n\n\n constructor(data?: {\n x?: number,\n y?: number,\n z?: number,\n volume?: number,\n mass?: number,\n e?: number,\n rotate?: number,\n width?: number,\n height?: number,\n transform?: Transaform,\n color?: Color,\n data?: T,\n }) {\n super();\n this.updateObjWithDefaults(data);\n }\n\n\n copyObj() {\n return new Obj({\n x: this.x,\n y: this.y,\n z: this.z,\n volume: this.volume,\n mass: this.mass,\n e: this.e,\n rotate: this.rotate,\n width: this.width,\n height: this.height,\n transform: [...this.transform],\n color: {...this.color},\n data: {...this.data}\n });\n }\n\n updateObjWithDefaults(data?: {\n x?: number,\n y?: number,\n z?: number,\n volume?: number,\n mass?: number,\n e?: number,\n rotate?: number,\n width?: number,\n height?: number,\n transform?: Transaform,\n color?: Color,\n data?: T,\n }) {\n if (data) {\n this.x = data.x ?? this.x;\n this.y = data.y ?? this.y;\n this.z = data.z ?? this.z;\n this.volume = data.volume ?? this.volume;\n this.mass = data.mass ?? this.mass;\n this.e = data.e ?? this.e;\n this.rotate = data.rotate ?? this.rotate;\n this.width = data.width ?? this.width;\n this.height = data.height ?? this.height;\n this.transform = [...(data.transform ?? this.transform)];\n this.color = {...(data.color ?? this.color)};\n const t = data.data ?? this.data;\n this.data = t?{...t}:undefined;\n }\n }\n\n setObj(data?: {\n x?: number,\n y?: number,\n z?: number,\n volume?: number,\n mass?: number,\n e?: number,\n rotate?: number,\n width?: number,\n height?: number,\n transform?: Transaform,\n color?: Color,\n data?: T,\n }) {\n if (data) {\n this.x = data.x??0;\n this.y = data.y??0;\n this.z = data.z??0;\n this.volume = data.volume??0;\n this.mass = data.mass??0;\n this.e = data.e??0;\n this.rotate = data.rotate??0;\n this.width = data.width??0;\n this.height = data.height??0;\n this.transform = [...(data.transform??[1, 0, 0, 1, 0, 0])];\n this.color = { ...(data.color??{r:0,g:0,b:0,a:255})};\n const data1 = data.data;\n this.data = data1 ? { ...data1} : undefined;\n }\n }\n\n toRect(): Rect {\n return new Rect(this.x, this.y, this.width, this.height);\n }\n\n // constructor(canvas: HTMLCanvasElement, context: CanvasRenderingContext2D, public avaliablePlace: Rectangle = new Rectangle(new Point(0, 0), new Point(0, 0))) {\n // super(canvas, context);\n // }\n\n\n // get centerPoint(): Point {\n // return new Point();\n // }\n}\n", "import { Point3D } from '../entity/Point3D';\nimport { Vector } from '../entity/Vector';\nimport { Obj } from '../entity/object/obj/Obj';\nimport { Point2D } from '../entity/Point2D';\n\nexport namespace MathUtil {\n export type BezierConfig = { p1x: number | 'random', p1y: number | 'random', p2x: number | 'random', p2y: number | 'random' } | [number | 'random', number | 'random', number | 'random', number | 'random'];\n export const getMinByObjectArray = (objectArray: Array<any>, varName: string) => {\n let min;\n if (varName && objectArray && objectArray.length > 0) {\n min = objectArray[0][varName];\n for (let i = 1; i < objectArray.length; i++) {\n min = Math.min(min, objectArray[i][varName]);\n }\n }\n return min;\n };\n\n export const hypot = (...data: number[]) => {\n // 2\uCC28\uC6D0 \uC608\uC2DC\n // Math.hypot(3, 4); // \uACB0\uACFC: 5 (3\u00B2 + 4\u00B2 = 9 + 16 = 25, \u221A25 = 5)\n\n// 3\uCC28\uC6D0 \uC608\uC2DC\n// Math.hypot(3, 4, 5); // \uACB0\uACFC: 7.0710678118654755\n\n return Math.hypot(...data);\n }\n\n // \uD53C\uD0C0\uACE0\uB77C\uC2A4 \uC815\uB9AC \uD568\uC218\n export const pythagorean = (a: number, b: number): number => {\n /*\n \uD53C\uD0C0\uACE0\uB77C\uC2A4 \uC815\uB9AC\n a^2 + b^2 = c^2\n c = \u221A(a^2 + b^2)\n */\n // return Math.sqrt(start * start + end * end);\n return Math.sqrt(a * a + b * b);\n };\n\n export const getMaxByObjectArray = (objectArray: Array<any>, varName: string) => {\n let max;\n if (varName && objectArray && objectArray.length > 0) {\n max = objectArray[0][varName];\n for (let i = 1; i < objectArray.length; i++) {\n max = Math.max(max, objectArray[i][varName]);\n }\n }\n return max;\n };\n\n export const sum = (array: number[]) => {\n return array.reduce((acc, curr) => acc + curr, 0);\n }\n\n export const avg = (array: number[]) => {\n return array.length > 0 ? MathUtil.sum(array) / array.length : 0;\n }\n\n export const minMax = (data: number, minMax: { min: number, max: number }) => {\n return Math.min(Math.max(data, minMax.min), minMax.max);\n }\n export const max = (array: number[]) => {\n return array.length > 0 ? Math.max(...array) : undefined;\n };\n\n export const min = (array: number[]) => {\n return array.length > 0 ? Math.min(...array) : undefined;\n };\n\n export const getSumByObjectArray = (objectArray: Array<any>, varName: string) => {\n let sum = 0;\n if (varName && objectArray && objectArray.length > 0) {\n for (let i = 0; i < objectArray.length; i++) {\n sum += objectArray[i][varName];\n }\n }\n return sum;\n };\n\n\n export type AngleUnitType = 'degreeAngle' | 'ratio' | 'percent';\n /**\n * Converts value to radians based on given type.\n * @param data - The value to convert to radians\n * @param option - Conversion type configuration\n * @param option.type - Type of conversion:\n * 'degreeAngle' - Converts from degrees to radians\n * 'ratio' - Multiplies value by 2\u03C0 (input range 0-1)\n * 'percent' - Converts percentage to 2\u03C0 ratio (input range 0-100)\n * @returns The converted value in radians\n * @example\n * // Convert 180 degrees to radians (3.14...)\n * radians(180, {type: 'degreeAngle'})\n *\n * // Convert 0.5 ratio to radians (3.14...)\n * radians(0.5, {type: 'ratio'})\n *\n * // Convert 50% to radians (3.14...)\n * radians(50, {type: 'percent'})\n */\n export const radians = (data: number, {type = 'degreeAngle'}: {type?: AngleUnitType}): number => {\n /*\n radian\n * 1.57..: 90\uB3C4, PI/2\n * 3.14..: 180\uB3C4, PI\n * 4.71..: 270\uB3C4, PI + PI/2\n * 6.28..: 360\uB3C4, PI * 2\n */\n if (type === 'ratio') {\n return (data * 2) * Math.PI;\n } else if (type === 'percent') {\n return ((data / 100) * 2) * Math.PI;\n } else {\n // return data * Math.PI / 180;\n return data / 180 * Math.PI;\n }\n };\n\n export const degrees = (data: number, {type = 'degreeAngle'}: {type?: AngleUnitType}): number => {\n if (type === 'ratio') {\n return data * 360;\n } else if (type === 'percent') {\n return (data / 100) * 360;\n } else {\n return data * 180 / Math.PI;\n }\n };\n // static createCanvas(w, h) {\n // let canvas = document.createElement('canvas');\n // canvas.width = w;\n // canvas.height = h;\n // return canvas;\n // }\n //\n // static copyCanvas(canvas) {\n // let newCanvas = document.createElement('canvas');\n // newCanvas.width = canvas.width;\n // newCanvas.height = canvas.height;\n // context = newCanvas.getContext('2d');\n // context.drawImage(canvas, 0, 0);\n // return newCanvas;\n // }\n\n /**\n 1. \uBE44\uC728\uC758 \uAC1C\uB150\n \uBE44\uC728(Ratio): \uB450 \uC591\uC758 \uC0C1\uB300\uC801\uC778 \uD06C\uAE30\uB97C \uBE44\uAD50\uD55C \uAC12\uC73C\uB85C, \uC77C\uBC18\uC801\uC73C\uB85C \uBD84\uC218\uB098 \uC18C\uC218\uB85C \uD45C\uD604\uB429\uB2C8\uB2E4. \uC608\uB97C \uB4E4\uC5B4, \"2:3\" \uBE44\uC728\uC740 \uB450 \uC218\uC758 \uBE44\uAC00 2 \uB300 3\uC774\uB77C\uB294 \uB73B\uC774\uBA70, \uC774\uB294 2/3\uB85C\uB3C4 \uB098\uD0C0\uB0BC \uC218 \uC788\uC2B5\uB2C8\uB2E4.\n \uB2E8\uC704 \uBE44\uC728(Normalized Ratio): \uD55C \uAC12\uC744 \uAE30\uC900\uC73C\uB85C \uB2E4\uB978 \uAC12\uC744 \uC870\uC815\uD55C \uBE44\uC728\uC744 \uC758\uBBF8\uD569\uB2C8\uB2E4. \uC5EC\uAE30\uC11C\uB294 \uB108\uBE44(w)\uB97C 1\uB85C \uC815\uADDC\uD654(normalize)\uD558\uC5EC \uB192\uC774(h)\uC758 \uC0C1\uB300\uC801 \uAC12\uC744 \uAD6C\uD558\uB294 \uAC83\uC774 \uBAA9\uD45C\uC785\uB2C8\uB2E4.\n \uC774\uBBF8\uC9C0 \uBE44\uC728: \uC774\uBBF8\uC9C0\uC758 \uB108\uBE44\uC640 \uB192\uC774 \uBE44\uC728\uC740 \uBCF4\uD1B5 \"w:h\" \uD615\uC2DD\uC73C\uB85C \uD45C\uD604\uB418\uBA70, \uC774 \uBE44\uC728\uC744 \uC720\uC9C0\uD558\uBA74\uC11C \uD06C\uAE30\uB97C \uC870\uC815\uD560 \uB54C \uC720\uC6A9\uD569\uB2C8\uB2E4.\n 2. \uACC4\uC0B0 \uBC29\uBC95\n \uC8FC\uC5B4\uC9C4 \uB370\uC774\uD130:\n\n \uB108\uBE44(w) = 1652 \uD53D\uC140\n \uB192\uC774(h) = 421 \uD53D\uC140\n \uBAA9\uD45C: \uB108\uBE44\uB97C 1\uB85C \uBCF4\uC558\uC744 \uB54C \uB192\uC774\uC758 \uAC12 \uAD6C\uD558\uAE30\n \uB2E8\uACC4\uBCC4 \uACC4\uC0B0\n \uC6D0\uB798 \uBE44\uC728 \uAD6C\uD558\uAE30:\n \uC774\uBBF8\uC9C0\uC758 \uBE44\uC728\uC740 w:h = 1652:421\uC785\uB2C8\uB2E4.\n \uC774\uB97C \uBD84\uC218\uB85C \uD45C\uD604\uD558\uBA74 1652 / 421\uC785\uB2C8\uB2E4.\n \uB108\uBE44\uB97C 1\uB85C \uC815\uADDC\uD654:\n \uB108\uBE44\uB97C 1\uB85C \uB9CC\uB4E4\uAE30 \uC704\uD574, \uC6D0\uB798 \uB108\uBE44(1652)\uB97C 1\uB85C \uB098\uB204\uACE0, \uC774\uB97C \uB192\uC774\uC5D0\uB3C4 \uB3D9\uC77C\uD558\uAC8C \uC801\uC6A9\uD569\uB2C8\uB2E4.\n \uC815\uADDC\uD654\uB41C \uB192\uC774 = \uC6D0\uB798 \uB192\uC774(h) \u00F7 \uC6D0\uB798 \uB108\uBE44(w)\n \uC218\uC2DD: h' = h / w (\uC5EC\uAE30\uC11C h'\uB294 \uC815\uADDC\uD654\uB41C \uB192\uC774)\n \uACC4\uC0B0 \uC801\uC6A9:\n \uC815\uADDC\uD654\uB41C \uB192\uC774 = 421 / 1652\n \uACC4\uC0B0: 421 \u00F7 1652 \u2248 0.25485 (\uC18C\uC218\uC810 \uC57D 5\uC790\uB9AC\uAE4C\uC9C0)\n \uACB0\uACFC \uD574\uC11D:\n \uB108\uBE44\uAC00 1\uC77C \uB54C \uB192\uC774\uB294 \uC57D 0.25485\uC785\uB2C8\uB2E4. \uC774\uB294 \uB192\uC774\uAC00 \uB108\uBE44\uC758 \uC57D 25.485%\uC5D0 \uD574\uB2F9\uD568\uC744 \uC758\uBBF8\uD569\uB2C8\uB2E4.\n \uAC80\uC99D\n \uC6D0\uB798 \uBE44\uC728\uC744 \uC720\uC9C0\uD558\uB824\uBA74, \uC815\uADDC\uD654\uB41C \uAC12\uC744 \uC5ED\uC73C\uB85C \uC801\uC6A9\uD574 \uC6D0\uB798 \uAC12\uC744 \uBCF5\uC6D0\uD560 \uC218 \uC788\uC5B4\uC57C \uD569\uB2C8\uB2E4.\n \uC815\uADDC\uD654\uB41C \uBE44\uC728(0.25485)\uC744 1652\uC5D0 \uACF1\uD558\uBA74: 1652 * 0.25485 \u2248 421, \uC774\uB294 \uC6D0\uB798 \uB192\uC774\uC640 \uC77C\uCE58\uD558\uBBC0\uB85C \uACC4\uC0B0\uC774 \uC62C\uBC14\uB984.\n 3. \uC218\uC2DD \uC815\uB9AC\n \uC77C\uBC18\uC801\uC778 \uC815\uADDC\uD654 \uC218\uC2DD:\n \uC815\uADDC\uD654\uB41C \uB192\uC774(h') = h / w\n \uC815\uADDC\uD654\uB41C \uB108\uBE44(w') = w / w = 1 (\uAE30\uC900\uAC12)\n \uC774 \uBB38\uC81C \uC801\uC6A9:\n h' = 421 / 1652 \u2248 0.25485\n 4. \uB300\uC548: \uBE44\uC728\uB85C \uD45C\uD604\n \uBE44\uC728\uC744 \"1:\uBE44\uC728\uAC12\" \uD615\uC2DD\uC73C\uB85C \uD45C\uD604\uD558\uB824\uBA74, \uB192\uC774\uB97C \uB108\uBE44\uB85C \uB098\uB208 \uAC12\uC744 \uADF8\uB300\uB85C \uC0AC\uC6A9.\n \uACB0\uACFC: 1 : 0.25485 \uB610\uB294 \uC57D 1 : 0.255 (\uC18C\uC218\uC810 \uBC18\uC62C\uB9BC).\n 5. \uCD94\uAC00 \uAC1C\uB150\n \uBE44\uB840\uC2DD: \uC774\uBBF8\uC9C0 \uD06C\uAE30\uB97C \uC870\uC815\uD560 \uB54C \uBE44\uC728\uC744 \uC720\uC9C0\uD558\uB824\uBA74, w1 / h1 = w2 / h2\uB97C \uB9CC\uC871\uD574\uC57C \uD569\uB2C8\uB2E4. \uC5EC\uAE30\uC11C w2 = 1\uB85C \uC124\uC815\uD55C \uACBD\uC6B0, h2 = h1 / w1\uC774 \uB429\uB2C8\uB2E4.\n \uC2E4\uC81C \uC801\uC6A9: \uC6F9 \uB514\uC790\uC778\uC774\uB098 \uADF8\uB798\uD53D\uC5D0\uC11C \uC774\uBBF8\uC9C0\uB97C \uB9AC\uC0AC\uC774\uC9D5\uD560 \uB54C, \uC6D0\uBCF8 \uBE44\uC728(1652:421)\uC744 \uC720\uC9C0\uD558\uB824\uBA74 \uC774 \uC815\uADDC\uD654\uB41C \uAC12\uC744 \uC0AC\uC6A9\uD574 \uB192\uC774\uB97C \uACC4\uC0B0.\n <script>\n const w = 1652;\n const h = 421;\n const normalizedHeight = h / w;\n console.log(`\uC815\uADDC\uD654\uB41C \uB192\uC774: ${normalizedHeight.toFixed(5)}`); // 0.25485\n console.log(`\uC6D0\uB798 \uBE44\uC728 \uD655\uC778: ${w * normalizedHeight} \u2248 ${h}`); // \uC57D 421\n </script>\n */\n export const ratio = (numerator: number, denominator: number, multiplier: number = 1): number => {\n // numerator(\uBD84\uC790) : denominator(\uBD84\uBAA8) = multiplier : x\n // x = multiplier * denominator / numerator\n return multiplier * (denominator / numerator)\n // a:b = c:x \uBE44\uB840\uC2DD\uC744 \uC774\uC6A9\uD574 x \uAC12\uC744 \uAD6C\uD568\n // ax = bc\n // x = bc/a\n }\n //end - start \uB05D\uACFC \uC2DC\uC791\uC758 \uC0AC\uC774\uAE38\uC774\uB97C \uCDE8\uB4DD\uD55C\uB2E4.\n export const getBetweenLength = (start: number, end: number) => {\n return end - start;\n };\n\n //\uC804\uCCB4\uAC12\uC5D0\uC11C \uC77C\uBD80\uAC12\uC740 \uBA87 \uD37C\uC13C\uD2B8? \uACC4\uC0B0\uBC95 \uACF5\uC2DD tot\uC5D0\uC11C data\uB294 \uBA87%\uC778\uAC00.\n export const getPercentByTotal = (tot: number, data: number) => {\n /*\n \uC804\uCCB4\uAC12\uC5D0\uC11C \uC77C\uBD80\uAC12\uC740 \uBA87 \uD37C\uC13C\uD2B8? \uACC4\uC0B0\uBC95 \uACF5\uC2DD\n \uC77C\uBD80\uAC12 \u00F7 \uC804\uCCB4\uAC12 X 100\n \uC608\uC81C) 300\uC5D0\uC11C 105\uB294 \uBA87\uD37C\uC13C\uD2B8?\n \uB2F5: 35%\n */\n return (data / tot) * 100;\n };\n export const getRatioByTotal = (tot: number, data: number) => {\n return (data / tot)\n };\n\n //\uC804\uCCB4\uAC12\uC758 \uBA87 \uD37C\uC13C\uD2B8\uB294 \uC5BC\uB9C8? \uACC4\uC0B0\uBC95 \uACF5\uC2DD tot\uC5D0\uC11C wantPercent\uB294 \uBA87\uC778\uAC00?\n export const getValueByTotalInPercent = (tot: number, wantPercent: number) => {\n /*\n \uC804\uCCB4\uAC12 X \uD37C\uC13C\uD2B8 \u00F7 100\n \uC608\uC81C) 300\uC758 35\uD37C\uC13C\uD2B8\uB294 \uC5BC\uB9C8?\n \uB2F5) 105\n */\n return (tot * wantPercent) / 100;\n };\n export const getValueByTotalInRatio = (tot: number, ratio: number) => {\n return (tot * ratio);\n };\n\n //\uC22B\uC790\uB97C \uBA87 \uD37C\uC13C\uD2B8 \uC99D\uAC00\uC2DC\uD0A4\uB294 \uACF5\uC2DD tot\uC5D0\uC11C wantPercent\uC744 \uC99D\uAC00 \uC2DC\uD0A8\uB2E4\n export const getValuePercentUp = (tot: number, wantPercent: number) => {\n /*\n \uC22B\uC790\uB97C \uBA87 \uD37C\uC13C\uD2B8 \uC99D\uAC00\uC2DC\uD0A4\uB294 \uACF5\uC2DD\n \uC22B\uC790 X (1 + \uD37C\uC13C\uD2B8 \u00F7 100)\n \uC608\uC81C) 1548\uC744 66\uD37C\uC13C\uD2B8 \uC99D\uAC00\uD558\uBA74?\n \uB2F5) 2569.68\n */\n return tot * (1 + wantPercent / 100);\n };\n\n export const getValueRatioUp = (tot: number, ratio: number) => {\n return tot * (1 + ratio);\n }\n\n //\uC22B\uC790\uB97C \uBA87 \uD37C\uC13C\uD2B8 \uAC10\uC18C\uD558\uB294 \uACF5\uC2DD tot\uC5D0\uC11C wantPercent\uC744 \uC99D\uAC10 \uC2DC\uD0A8\uB2E4\n export const getValuePercentDown = (tot: number, wantPercent: number) => {\n /*\n \uC22B\uC790\uB97C \uBA87 \uD37C\uC13C\uD2B8 \uAC10\uC18C\uD558\uB294 \uACF5\uC2DD\n \uC22B\uC790 X (1 - \uD37C\uC13C\uD2B8 \u00F7 100)\n \uC608\uC81C) 1548\uC744 66\uD37C\uC13C\uD2B8 \uAC10\uC18C\uD558\uBA74?\n \uB2F5) 526.32\n */\n return tot * (1 - wantPercent / 100);\n };\n\n export const getValueRatioDown = (tot: number, ratio: number) => {\n return tot * (1 - ratio);\n }\n\n\n //\uBC14\uB840\uC2DD\n // A:B = C:X => 30:50 = 33 : x\n // 30X = 50*33\n // X = BC / 30\n\n\n // Bezier\n // https://cubic-bezier.com/#.17,.67,.83,.67\n // https://matthewlein.com/tools/ceaser\n // https://easings.net/ko#\n // (0.250, 0.250, 0.750, 0.750); /* linear */\n export const beziers = (points: (Point3D | { x: number; y: number, z: number })[], frame: number) => {\n const datas = new Array(frame).fill(undefined);\n for (let i = 0; i < datas.length; i++) {\n datas[i] = MathUtil.bezier(points, frame, i);\n }\n return datas;\n };\n\n // \uCC98\uC74C\uC810\uC740 \uD3EC\uD568\uB418\uC9C0 \uC54A\uB294\uB2E4, \uB05D\uC810\uC740 \uD3EC\uD568\uB41C\uB2E4.\n export const bezier = (points: (Point3D | { x: number; y: number, z: number })[], frame: number, idx: number): Vector => {\n if (points && points.length > 0) {\n const pv = points.map(it => new Vector(it.x, it.y, it.z));\n const steps: Vector[] = [];\n pv.reduce((a, b) => {\n const step = a.toSub(b).div(frame).mult(idx + 1);\n steps.push(a.toSub(step));\n return b;\n });\n\n if (steps.length <= 1) {\n return steps[0];\n }\n return MathUtil.bezier(steps.map(it => new Point3D(it)), frame, idx);\n } else {\n return new Vector();\n }\n };\n\n // \uC2DC\uC791\uC810\uACFC \uB05D\uC810\uC740 \uD3EC\uD568\uD558\uC9C0 \uC54A\uB294\uB2E4.\n export function cubicBezier(position: { start: number; end: number; }, frameConfig: { frame: number; }, bezierConfig: BezierConfig): number[];\n export function cubicBezier(position: { start: Obj; end: Obj; }, frameConfig: { frame: number; }, bezierConfig: BezierConfig): Obj[];\n export function cubicBezier(position: { start: Point3D; end: Point3D; }, frameConfig: { frame: number; }, bezierConfig: BezierConfig): Point3D[];\n export function cubicBezier(\n position: {\n start: number; // \uC2DC\uC791 \uAC12\n end: number; // \uB05D \uAC12\n } | {\n start: Point3D; // \uC2DC\uC791 \uAC12\n end: Point3D; // \uB05D \uAC12\n } | {\n start: Obj; // \uC2DC\uC791 \uAC12\n end: Obj; // \uB05D \uAC12\n },\n frameConfig: {\n // includeStartEnd?: boolean,\n frame: number; // \uD504\uB808\uC784 \uC218 (\uBC30\uC5F4 \uD06C\uAE30)\n },\n bezierConfig: BezierConfig\n ): number[] | Point3D[] | Obj[] {\n\n\n if (position.start instanceof Obj && position.end instanceof Obj) {\n const x = MathUtil.cubicBezier({start: position.start.x, end: position.end.x}, frameConfig, bezierConfig);\n const y = MathUtil.cubicBezier({start: position.start.y, end: position.end.y}, frameConfig, bezierConfig);\n const z = MathUtil.cubicBezier({start: position.start.z, end: position.end.z}, frameConfig, bezierConfig);\n const v = MathUtil.cubicBezier({start: position.start.volume, end: position.end.volume}, frameConfig, bezierConfig);\n const m = MathUtil.cubicBezier({start: position.start.mass, end: position.end.mass}, frameConfig, bezierConfig);\n const e = MathUtil.cubicBezier({start: position.start.e, end: position.end.e}, frameConfig, bezierConfig);\n const r = MathUtil.cubicBezier({start: position.start.rotate, end: position.end.rotate}, frameConfig, bezierConfig);\n const w = MathUtil.cubicBezier({start: position.start.width, end: position.end.width}, frameConfig, bezierConfig);\n const h = MathUtil.cubicBezier({start: position.start.height, end: position.end.height}, frameConfig, bezierConfig);\n const t0 = MathUtil.cubicBezier({start: position.start.transform[0], end: position.end.transform[0]}, frameConfig, bezierConfig);\n const t1 = MathUtil.cubicBezier({start: position.start.transform[1], end: position.end.transform[1]}, frameConfig, bezierConfig);\n const t2 = MathUtil.cubicBezier({start: position.start.transform[2], end: position.end.transform[2]}, frameConfig, bezierConfig);\n const t3 = MathUtil.cubicBezier({start: position.start.transform[3], end: position.end.transform[3]}, frameConfig, bezierConfig);\n const t4 = MathUtil.cubicBezier({start: position.start.transform[4], end: position.end.transform[4]}, frameConfig, bezierConfig);\n const t5 = MathUtil.cubicBezier({start: position.start.transform[5], end: position.end.transform[5]}, frameConfig, bezierConfig);\n const colorR = MathUtil.cubicBezier({start: position.start.color.r ?? 0, end: position.end.color.r ?? 0}, frameConfig, bezierConfig);\n const colorG = MathUtil.cubicBezier({start: position.start.color.g ?? 0, end: position.end.color.g ?? 0}, frameConfig, bezierConfig);\n const colorB = MathUtil.cubicBezier({start: position.start.color.b ?? 0, end: position.end.color.b ?? 0}, frameConfig, bezierConfig);\n const colorA = MathUtil.cubicBezier({start: position.start.color.a ?? 255, end: position.end.color.a ?? 255}, frameConfig, bezierConfig);\n const objs = x.map((x, idx) => {\n const obj = new Obj({x, y: y[idx], z: z[idx]});\n obj.volume = v[idx];\n obj.mass = m[idx];\n obj.e = e[idx];\n obj.rotate = r[idx];\n obj.width = w[idx];\n obj.height = h[idx];\n obj.transform = [t0[idx], t1[idx], t2[idx], t3[idx], t4[idx], t5[idx]];\n obj.color = {r: colorR[idx], g: colorG[idx], b: colorB[idx], a: colorA[idx]};\n return obj;\n });\n return objs;\n } else if (position.start instanceof Point3D && position.end instanceof Point3D) {\n const x = MathUtil.cubicBezier({start: position.start.x, end: position.end.x}, frameConfig, bezierConfig);\n const y = MathUtil.cubicBezier({start: position.start.y, end: position.end.y}, frameConfig, bezierConfig);\n const z = MathUtil.cubicBezier({start: position.start.z, end: position.end.z}, frameConfig, bezierConfig);\n return x.map((x, idx) => new Point3D(x, y[idx], z[idx]));\n }\n\n\n const {start, end} = position as { start: number, end: number };\n\n // ----\n\n const {frame} = frameConfig;\n let {p1x, p1y, p2x, p2y} = Array.isArray(bezierConfig) ? {p1x: bezierConfig[0], p1y: bezierConfig[1], p2x: bezierConfig[2], p2y: bezierConfig[3]} : bezierConfig;\n p1x = p1x === 'random' ? Math.random() : p1x;\n p1y = p1y === 'random' ? Math.random() : p1y;\n p2x = p2x === 'random' ? Math.random() : p2x;\n p2y = p2y === 'random' ? Math.random() : p2y;\n\n const result: number[] = [];\n const totalChange = end - start;\n\n // console.log('----222->',totalChange);\n\n // 3\uCC28 \uBCA0\uC9C0\uC5B4 \uACE1\uC120 \uACF5\uC2DD\n const bezier = (t: number): number => {\n const t2 = Number(t * t);\n const t3 = Number(t2 * t);\n const mt = Number(1 - t);\n const mt2 = Number(mt * mt);\n const mt3 = Number(mt2 * mt);\n\n return mt3 * 0 + 3 * mt2 * t * Number(p1y) + 3 * mt * t2 * Number(p2y) + t3 * 1;\n };\n\n // frame \uC218\uB9CC\uD07C \uACC4\uC0B0, \uC2DC\uC791\uC810, \uB05D\uC810 \uC81C\uC678\n const targetFrame = frame + 1;\n for (let i = 1; i < targetFrame; i++) {\n // const t = frame <= 1 ? 1 : (i + 1) / frame;\n // const t = frame <= 1 ? 1 : (i + 1) / frame;\n const t = i / targetFrame;\n const progress = bezier(t);\n // console.log('pppppppp', progress);\n const value = start + totalChange * progress;\n result.push(value);\n }\n\n return result;\n\n }\n\n export const diff = (a: number, b: number) => {\n return Math.abs(a - b);\n };\n\n /*\n > \uD22C\uC601\uBD80\uBD84? \uC800\uBD80\uBD84 \uD575\uC2EC\uBD80\uBD84 \uB354 \uC790\uC138\uD558\uAC8C \uC54C\uB824\uC904\uB798\n\n\u2726 \uB124, \uADF8\uB7FC\uC694. \uC774 \uBD80\uBD84\uC774 \uAE30\uD558\uD559\uC801\uC73C\uB85C \uC5B4\uB5A4 \uC758\uBBF8\uB97C \uAC00\uC9C0\uB294\uC9C0 \uADF8\uB9BC\uACFC \uD568\uAED8 \uBA38\uB9BF\uC18D\uC73C\uB85C \uC0C1\uC0C1\uD558\uBA70 \uC774\uD574\uD558\uBA74\n \uC27D\uC2B5\uB2C8\uB2E4.\n\n \uD575\uC2EC \uC544\uC774\uB514\uC5B4: \uADF8\uB9BC\uC790 \uB0B4\uB9AC\uAE30 (Projection)\n\n \uAC00\uC7A5 \uAC04\uB2E8\uD55C \uBE44\uC720\uB294 \uADF8\uB9BC\uC790\uC785\uB2C8\uB2E4.\n\n\n * `\uC120\uBD84 vw`: \uB545\uC5D0 \uB193\uC5EC\uC788\uB294 \uB9C9\uB300\uAE30\uB77C\uACE0 \uC0C1\uC0C1\uD574 \uBCF4\uC138\uC694. (v\uB294 \uC2DC\uC791\uC810, w\uB294 \uB05D\uC810)\n * `\uC810 p`: \uACF5\uC911\uC5D0 \uB5A0 \uC788\uB294 \uB9C8\uC6B0\uC2A4 \uCEE4\uC11C\uB77C\uACE0 \uC0C1\uC0C1\uD574 \uBCF4\uC138\uC694.\n * \uBAA9\uD45C: \uB9C8\uC6B0\uC2A4 \uCEE4\uC11C(p)\uC5D0\uC11C \uB9C9\uB300\uAE30(vw)\uAE4C\uC9C0 \uAC00\uC7A5 \uAC00\uAE4C\uC6B4 \uC9C0\uC810\uC744 \uCC3E\uB294 \uAC83.\n\n\n \uAC00\uC7A5 \uAC00\uAE4C\uC6B4 \uC9C0\uC810\uC740 p\uC5D0\uC11C \uB9C9\uB300\uAE30\uB85C \uC218\uC9C1\uC73C\uB85C \uC120\uC744 \uB0B4\uB838\uC744 \uB54C \uB9CC\uB098\uB294 \uC810\uC785\uB2C8\uB2E4. \uB9C8\uCE58 p \uBC14\uB85C \uC704\uC5D0 \uC190\uC804\uB4F1\uC744\n \uCF1C\uC11C \uB9C9\uB300\uAE30\uC5D0 \uADF8\uB9BC\uC790\uB97C \uB9CC\uB4DC\uB294 \uAC83\uACFC \uAC19\uC2B5\uB2C8\uB2E4. \uC774 \uADF8\uB9BC\uC790\uAC00 \uB5A8\uC5B4\uC9C0\uB294 \uC9C0\uC810\uC774 \uBC14\uB85C \uD22C\uC601(projection)\uC785\uB2C8\uB2E4.\n\n ---\n\n \uCF54\uB4DC \uC0C1\uC138 \uBD84\uC11D\n\n\n let t = ((p.x - v.x) * (w.x - v.x) + (p.y - v.y) * (w.y - v.y)) / l2;\n\n \uC774 \uD55C \uC904\uC758 \uCF54\uB4DC\uB294 \uBC14\uB85C \uADF8 '\uADF8\uB9BC\uC790\uAC00 \uB9C9\uB300\uAE30\uC758 \uC5B4\uB514\uC5D0 \uB5A8\uC5B4\uC9C0\uB294\uAC00'\uB97C \uACC4\uC0B0\uD558\uB294 \uACFC\uC815\uC785\uB2C8\uB2E4. \uC5EC\uAE30\uC11C t\uB294\n \uBE44\uC728\uC744 \uC758\uBBF8\uD569\uB2C8\uB2E4.\n\n 1. \uBCA1\uD130(Vector)\uB85C \uC0DD\uAC01\uD558\uAE30\n\n\n \uCF54\uB4DC\uB97C \uC774\uD574\uD558\uAE30 \uC704\uD574 \uB450 \uAC1C\uC758 \uBCA1\uD130\uB97C \uC0DD\uAC01\uD574\uC57C \uD569\uB2C8\uB2E4.\n\n\n * \uBCA1\uD130 1 (`vw`): \uB9C9\uB300\uAE30 \uC790\uCCB4\uC758 \uBC29\uD5A5\uACFC \uAE38\uC774\uB97C \uB098\uD0C0\uB0B4\uB294 \uBCA1\uD130\uC785\uB2C8\uB2E4.\n * w.x - v.x (x\uBC29\uD5A5)\n * w.y - v.y (y\uBC29\uD5A5)\n * \uBCA1\uD130 2 (`vp`): \uB9C9\uB300\uAE30 \uC2DC\uC791\uC810\uC5D0\uC11C \uB9C8\uC6B0\uC2A4 \uCEE4\uC11C\uAE4C\uC9C0\uC758 \uBCA1\uD130\uC785\uB2C8\uB2E4.\n * p.x - v.x (x\uBC29\uD5A5)\n * p.y - v.y (y\uBC29\uD5A5)\n\n\n 2. \uBD84\uC790: \uBCA1\uD130 \uB0B4\uC801 (Dot Product)\n\n ((p.x - v.x) * (w.x - v.x) + (p.y - v.y) * (w.y - v.y))\n\n\n \uC774 \uBD80\uBD84\uC740 \uB450 \uBCA1\uD130 vp\uC640 vw\uC758 \uB0B4\uC801(dot product)\uC744 \uACC4\uC0B0\uD558\uB294 \uACF5\uC2DD\uC785\uB2C8\uB2E4. \uBCA1\uD130 \uB0B4\uC801\uC740 \uB450 \uBCA1\uD130\uAC00 \uC5BC\uB9C8\uB098\n \"\uAC19\uC740 \uBC29\uD5A5\uC744 \uBC14\uB77C\uBCF4\uACE0 \uC788\uB294\uC9C0\"\uB97C \uB098\uD0C0\uB0B4\uB294 \uC218\uCE58\uC785\uB2C8\uB2E4.\n\n\n * \uB450 \uBCA1\uD130\uAC00 \uC11C\uB85C \uC218\uC9C1\uC774\uBA74 \uB0B4\uC801\uC740 0\uC785\uB2C8\uB2E4.\n * \uB450 \uBCA1\uD130\uAC00 \uAC19\uC740 \uBC29\uD5A5\uC744 \uBCFC\uC218\uB85D \uB0B4\uC801 \uAC12\uC740 \uCEE4\uC9D1\uB2C8\uB2E4.\n\n \uAE30\uD558\uD559\uC801\uC73C\uB85C, `vp` \uBCA1\uD130\uB97C `vw` \uBCA1\uD130 \uC704\uB85C \uD22C\uC601(\uADF8\uB9BC\uC790)\uC2DC\uCF30\uC744 \uB54C\uC758 \uAE38\uC774\uC640 \uAD00\uB828\uC774 \uC788\uC2B5\uB2C8\uB2E4.\n\n 3. \uBD84\uBAA8: l2\n\n\n l2\uB294 \uC55E\uC5D0\uC11C \uACC4\uC0B0\uD588\uB4EF\uC774 \uB9C9\uB300\uAE30 \uBCA1\uD130 vw\uC758 \uAE38\uC774\uC758 \uC81C\uACF1\uC785\uB2C8\uB2E4.\n\n 4. t\uC758 \uC758\uBBF8: \uBE44\uC728\n\n \uACB0\uAD6D t\uB294 \uB2E4\uC74C\uACFC \uAC19\uC774 \uACC4\uC0B0\uB429\uB2C8\uB2E4.\n\n t = (\uBCA1\uD130 vp\uC640 vw\uC758 \uB0B4\uC801) / (\uBCA1\uD130 vw\uC758 \uAE38\uC774 \uC81C\uACF1)\n\n\n \uC774 t \uAC12\uC774 \uBC14\uB85C \uD22C\uC601\uB41C \uADF8\uB9BC\uC790 \uC9C0\uC810\uC774 \uB9C9\uB300\uAE30 \uC2DC\uC791\uC810 `v`\uB85C\uBD80\uD130 \uC5BC\uB9C8\uB098 \uB5A8\uC5B4\uC838 \uC788\uB294\uC9C0\uB97C \uB098\uD0C0\uB0B4\uB294 \uBE44\uC728\uC774\n \uB429\uB2C8\uB2E4.\n\n\n * `t = 0`: \uADF8\uB9BC\uC790\uAC00 \uC815\uD655\uD788 \uB9C9\uB300\uAE30 \uC2DC\uC791\uC810 v\uC5D0 \uB5A8\uC5B4\uC9D1\uB2C8\uB2E4.\n * `t = 1`: \uADF8\uB9BC\uC790\uAC00 \uC815\uD655\uD788 \uB9C9\uB300\uAE30 \uB05D\uC810 w\uC5D0 \uB5A8\uC5B4\uC9D1\uB2C8\uB2E4.\n * `t = 0.5`: \uADF8\uB9BC\uC790\uAC00 \uC815\uD655\uD788 \uB9C9\uB300\uAE30 \uD55C\uAC00\uC6B4\uB370\uC5D0 \uB5A8\uC5B4\uC9D1\uB2C8\uB2E4.\n * `t < 0` (\uC608: `t = -0.2`): p\uAC00 v\uC758 \"\uB4A4\uCABD\"\uC5D0 \uC788\uC5B4\uC11C, \uADF8\uB9BC\uC790\uAC00 \uB9C9\uB300\uAE30 \uC2DC\uC791\uC810 \uC774\uC804\uC5D0 \uB5A8\uC5B4\uC9D1\uB2C8\uB2E4.\n (\uB9C9\uB300\uAE30\uB97C \uBB34\uD55C\uD55C \uC9C1\uC120\uC73C\uB85C \uBD24\uC744 \uB54C)\n * `t > 1` (\uC608: `t = 1.5`): p\uAC00 w\uC758 \"\uC55E\uCABD\"\uC5D0 \uC788\uC5B4\uC11C, \uADF8\uB9BC\uC790\uAC00 \uB9C9\uB300\uAE30 \uB05D\uC810\uC744 \uC9C0\uB098\uC11C \uB5A8\uC5B4\uC9D1\uB2C8\uB2E4.\n (\uB9C9\uB300\uAE30\uB97C \uBB34\uD55C\uD55C \uC9C1\uC120\uC73C\uB85C \uBD24\uC744 \uB54C)\n\n \uACB0\uB860\n\n\n \uC774 t \uAC12\uC744 \uACC4\uC0B0\uD558\uB294 \uAC83\uC774 \uD575\uC2EC\uC778 \uC774\uC720\uB294, \uB9C8\uC6B0\uC2A4 \uD3EC\uC778\uD130(p)\uC640 \uAC00\uC7A5 \uAC00\uAE4C\uC6B4 \uC810\uC774 \uB9C9\uB300\uAE30 \uB0B4\uBD80\uC5D0 \uC788\uB294\uC9C0,\n \uC544\uB2C8\uBA74 \uC591\uCABD \uB05D\uC810 \uC911 \uD558\uB098\uC778\uC9C0 \uD310\uB2E8\uD560 \uC218 \uC788\uB294 \uAE30\uC900\uC744 \uC81C\uACF5\uD558\uAE30 \uB54C\uBB38\uC785\uB2C8\uB2E4.\n\n\n * t\uAC00 0\uACFC 1 \uC0AC\uC774\uC5D0 \uC788\uB2E4\uBA74, \uAC00\uC7A5 \uAC00\uAE4C\uC6B4 \uC810\uC740 \uB9C9\uB300\uAE30 \uC704\uC758 '\uADF8\uB9BC\uC790' \uC9C0\uC810\uC785\uB2C8\uB2E4.\n * t\uAC00 0\uBCF4\uB2E4 \uC791\uB2E4\uBA74, \uAC00\uC7A5 \uAC00\uAE4C\uC6B4 \uC810\uC740 \uB9C9\uB300\uAE30\uC758 \uC2DC\uC791\uC810 v\uC785\uB2C8\uB2E4.\n * t\uAC00 1\uBCF4\uB2E4 \uD06C\uB2E4\uBA74, \uAC00\uC7A5 \uAC00\uAE4C\uC6B4 \uC810\uC740 \uB9C9\uB300\uAE30\uC758 \uB05D\uC810 w\uC785\uB2C8\uB2E4.\n\n\n \uC774\uAC83\uC774 \uBC14\uB85C \uB2E4\uC74C \uCF54\uB4DC \uB77C\uC778 t = Math.max(0, Math.min(1, t));\uAC00 t\uB97C 0\uACFC 1 \uC0AC\uC774\uB85C \uC81C\uD55C\uD558\uB294 \uC774\uC720\uC785\uB2C8\uB2E4.\n \uC774\uB85C\uC368 \uAC00\uC7A5 \uAC00\uAE4C\uC6B4 \uC810\uC774 \uD56D\uC0C1 \uC120\uBD84 \uC704(\uC591 \uB05D\uC810 \uD3EC\uD568)\uC5D0 \uC788\uB3C4\uB85D \uBCF4\uC7A5\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.\n */\nexport const distSqToLineSegment = (p: Point2D, v: Point2D, w: Point2D): number => {\n const l2 = (v.x - w.x) ** 2 + (v.y - w.y) ** 2;\n if (l2 === 0) return (p.x - v.x) ** 2 + (p.y - v.y) ** 2;\n let t = ((p.x - v.x) * (w.x - v.x) + (p.y - v.y) * (w.y - v.y)) / l2;\n t = Math.max(0, Math.min(1, t));\n const projection = { x: v.x + t * (w.x - v.x), y: v.y + t * (w.y - v.y) };\n return (p.x - projection.x) ** 2 + (p.y - projection.y) ** 2;\n };\n // static bezirePointToPointVector(point: {point1: Point, point2?: Point, point3?: Point, point4?: Point}) {\n // if (!point.point2) {\n // point.point2 = point.point1;\n // }\n // if (!point.point3) {\n // point.point3 = point.point2;\n // }\n // if (!point.point4) {\n // point.point4 = point.point3;\n // }\n // return {\n // point1: new PointVector(point.point1.x, point.point1.y, point.point1.z),\n // point2: new PointVector(point.point2.x, point.point2.y, point.point2.z),\n // point3: new PointVector(point.point3.x, point.point3.y, point.point3.z),\n // point4: new PointVector(point.point4.x, point.point4.y, point.point4.z),\n // }\n // }\n // static bezier(point: {point1: Point, point2?: Point, point3?: Point, point4?: Point}, frame: number, idx: number) {\n // const pointVector = MathUtil.bezirePointToPointVector(point);\n //\n // const point12Step = PointVector.sub(pointVector.point1, pointVector.point2).div(frame).mult(idx + 1);\n // const point23Step = PointVector.sub(pointVector.point2, pointVector.point3).div(frame).mult(idx + 1);\n // const point34Step = PointVector.sub(pointVector.point3, pointVector.point4).div(frame).mult(idx + 1);\n //\n // pointVector.point1.sub(point12Step);\n // pointVector.point2.sub(point23Step);\n // pointVector.point3.sub(point34Step);\n //\n // const point12MoveStep = PointVector.sub(pointVector.point1, pointVector.point2).div(frame);\n // const point23MoveStep = PointVector.sub(pointVector.point2, pointVector.point3).div(frame);\n // // const point34MoveStep = PointVector.sub(point3, point4).div(frame); // \uB354\uC774\uC0C1\uAC08\uACF3\uC5C6\uC74C\n //\n // const cnt = idx + 1;\n // const point12MovePoint = point12MoveStep.mult(cnt)\n // const point23MovePoint = point23MoveStep.mult(cnt);\n // const combinationPoint1MovePoint = PointVector.sub(pointVector.point1, point12MovePoint); //new PointVector(point1.x - point12MovePoint.x, point1.y - point12MovePoint.y);\n // const combinationPoint2MovePoint = PointVector.sub(pointVector.point2, point23MovePoint); // new PointVector(point2.x - point23MovePoint.x, point2.y - point23MovePoint.y);\n //\n // const finalPointMoveStep = PointVector.sub(combinationPoint1MovePoint, combinationPoint2MovePoint).div(frame);\n // const finalPointMovePoint = finalPointMoveStep.mult(cnt);\n // const final = PointVector.sub(combinationPoint1MovePoint, finalPointMovePoint);\n // return final;\n // }\n //\n // static beziers(point: {point1: Point, point2?: Point, point3?: Point, point4?: Point}, frame: number) {\n // const pointVector = MathUtil.bezirePointToPointVector(point);\n // const frames = new Array(frame).fill(undefined) as PointVector[];\n // for (let i = 0; i < frame; i++) {\n // frames[i] = MathUtil.bezier(point, frame, i);\n // // pointVector.point1.sub(point12Step);\n // // pointVector.point2.sub(point23Step);\n // // pointVector.point3.sub(point34Step);\n // //\n // // const point12MoveStep = PointVector.sub(pointVector.point1, pointVector.point2).div(frame);\n // // const point23MoveStep = PointVector.sub(pointVector.point2, pointVector.point3).div(frame);\n // // // const point34MoveStep = PointVector.sub(point3, point4).div(frame); // \uB354\uC774\uC0C1\uAC08\uACF3\uC5C6\uC74C\n // //\n // // const cnt = i + 1;\n // // const point12MovePoint = point12MoveStep.mult(cnt)\n // // const point23MovePoint = point23MoveStep.mult(cnt);\n // // const combinationPoint1MovePoint = PointVector.sub(pointVector.point1, point12MovePoint); //new PointVector(point1.x - point12MovePoint.x, point1.y - point12MovePoint.y);\n // // const combinationPoint2MovePoint = PointVector.sub(pointVector.point2, point23MovePoint); // new PointVector(point2.x - point23MovePoint.x, point2.y - point23MovePoint.y);\n // //\n // // const finalPointMoveStep = PointVector.sub(combinationPoint1MovePoint, combinationPoint2MovePoint).div(frame);\n // // const finalPointMovePoint = finalPointMoveStep.mult(cnt);\n // // const final = PointVector.sub(combinationPoint1MovePoint, finalPointMovePoint);\n // }\n // return frames;\n // }\n\n\n// interface Point {\n// x: number;\n// y: number;\n// }\n//\n// interface BezierPathOptions {\n// /**\n// * \uC81C\uC5B4\uC810\uC744 \uC5BC\uB9C8\uB098 \uBA40\uB9AC \uB458\uC9C0 \uACB0\uC815\uD558\uB294 \uAC12\uC785\uB2C8\uB2E4. (\uAE30\uBCF8\uAC12: 0.25)\n// * 0 \uC774\uBA74 \uAC70\uC758 \uC9C1\uC120\uC5D0 \uAC00\uAE5D\uACE0, \uAC12\uC774 \uCEE4\uC9C8\uC218\uB85D \uACE1\uC120\uC758 \uD718\uC5B4\uC9D0\uC774 \uCEE4\uC9D1\uB2C8\uB2E4.\n// * \uC74C\uC218 \uAC12\uC744 \uC8FC\uBA74 \uBC18\uB300 \uBC29\uD5A5\uC73C\uB85C \uD729\uB2C8\uB2E4.\n// */\n// controlPointOffsetFactor?: number;\n//\n// /**\n// * \uC810\uB4E4\uC758 \uBD84\uD3EC\uB97C \uC870\uC808\uD558\uB294 \uAC00\uC18D\uB3C4 \uACC4\uC218\uC785\uB2C8\uB2E4. (\uAE30\uBCF8\uAC12: 1)\n// * 1: \uB4F1\uAC04\uACA9 (\uC120\uD615)\n// * > 1: \uC2DC\uC791 \uBD80\uBD84\uC5D0 \uC810\uB4E4\uC774 \uBAA8\uC774\uACE0 \uB05D\uC73C\uB85C \uAC08\uC218\uB85D \uAC04\uACA9\uC774 \uB113\uC5B4\uC9D0 (\uAC00\uC18D, ease-in)\n// * < 1: \uB05D \uBD80\uBD84\uC5D0 \uC810\uB4E4\uC774 \uBAA8\uC774\uACE0 \uC2DC\uC791 \uBD80\uBD84\uC758 \uAC04\uACA9\uC774 \uB113\uC5B4\uC9D0 (\uAC10\uC18D, ease-out)\n// * \uC608: 2\uB294 \uC81C\uACF1 \uAC00\uC18D, 0.5\uB294 \uC81C\uACF1\uADFC \uAC10\uC18D.\n// */\n// accelerationFactor?: number;\n// }\n//\n// /**\n// * 2\uCC28 \uBCA0\uC9C0\uC5D0 \uACE1\uC120 \uC704\uC758 \uD2B9\uC815 t \uAC12\uC5D0\uC11C\uC758 \uC810 \uC88C\uD45C\uB97C \uACC4\uC0B0\uD569\uB2C8\uB2E4.\n// * B(t) = (1-t)^2 * P0 + 2 * (1-t) * t * P1 + t^2 * P2\n// * @param t \uB9E4\uAC1C\uBCC0\uC218 (0\uC5D0\uC11C 1 \uC0AC\uC774)\n// * @param p0 \uC2DC\uC791\uC810\n// * @param p1 \uC81C\uC5B4\uC810\n// * @param p2 \uB05D\uC810\n// * @returns \uACC4\uC0B0\uB41C \uC810\uC758 \uC88C\uD45C\n// */\n// function quadraticBezier(t: number, p0: Point, p1: Point, p2: Point): Point {\n// const mt = 1 - t; // (1-t)\n// const mt2 = mt * mt; // (1-t)^2\n// const t2 = t * t; // t^2\n//\n// const x = mt2 * p0.x + 2 * mt * t * p1.x + t2 * p2.x;\n// const y = mt2 * p0.y + 2 * mt * t * p1.y + t2 * p2.y;\n//\n// return { x, y };\n// }\n//\n// /**\n// * \uCD9C\uBC1C\uC810\uACFC \uB3C4\uCC29\uC810 \uC0AC\uC774\uB97C \uC787\uB294 2\uCC28 \uBCA0\uC9C0\uC5D0 \uACE1\uC120\uC744 \uB530\uB77C \uC774\uB3D9\uD560 \uC88C\uD45C\uB4E4\uC744 \uACC4\uC0B0\uD569\uB2C8\uB2E4.\n// * @param startPoint \uCD9C\uBC1C\uC810 \uC88C\uD45C { x, y }\n// * @param endPoint \uB3C4\uCC29\uC810 \uC88C\uD45C { x, y }\n// * @param options \uBCA0\uC9C0\uC5D0 \uACE1\uC120 \uBC0F \uC810 \uBD84\uD3EC \uC635\uC158\n// * @param numberOfSteps \uC0DD\uC131\uD560 \uC911\uAC04 \uC774\uB3D9 \uC88C\uD45C\uC758 \uAC1C\uC218 (\uC774\uB3D9 \uACBD\uB85C\uC0C1\uC758 \uC810 \uAC1C\uC218)\n// * @returns \uACC4\uC0B0\uB41C \uC88C\uD45C\uB4E4\uC758 \uBC30\uC5F4 (startPoint\uB294 \uD3EC\uD568\uD558\uC9C0 \uC54A\uACE0, endPoint\uB294 \uD3EC\uD568)\n// */\n// function getPointsOnBezierPath(\n// startPoint: Point,\n// endPoint: Point,\n// options: BezierPathOptions = {}, // \uAE30\uBCF8\uAC12 \uBE48 \uAC1D\uCCB4\n// numberOfSteps: number\n// ): Point[] {\n// // --- \uC635\uC158 \uAE30\uBCF8\uAC12 \uC124\uC815 ---\n// const controlPointOffsetFactor = options.controlPointOffsetFactor ?? 0.25; // \uAE30\uBCF8\uAC12 0.25\n// const accelerationFactor = options.accelerationFactor ?? 1; // \uAE30\uBCF8\uAC12 1 (\uC120\uD615)\n//\n// // --- \uC785\uB825\uAC12 \uC720\uD6A8\uC131 \uAC80\uC0AC ---\n// if (numberOfSteps <= 0) {\n// console.warn(\"numberOfSteps\uB294 0\uBCF4\uB2E4 \uCEE4\uC57C \uD569\uB2C8\uB2E4.\");\n// return []; // \uBE48 \uBC30\uC5F4 \uBC18\uD658 \uB610\uB294 \uC5D0\uB7EC \uCC98\uB9AC\n// }\n//\n// const points: Point[] = [];\n// const p0 = startPoint;\n// const p2 = endPoint;\n//\n// // --- \uC81C\uC5B4\uC810(P1) \uC790\uB3D9 \uACC4\uC0B0 ---\n// const midX = (p0.x + p2.x) / 2;\n// const midY = (p0.y + p2.y) / 2;\n//\n// const deltaX = p2.x - p0.x;\n// const deltaY = p2.y - p0.y;\n//\n// const distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY);\n//\n// let p1: Point;\n//\n// if (distance === 0) {\n// // \uC2DC\uC791\uC810\uACFC \uB05D\uC810\uC774 \uAC19\uC73C\uBA74 \uC81C\uC5B4\uC810\uB3C4 \uAC19\uC740 \uC704\uCE58\uB85C \uC124\uC815 (\uC9C1\uC120 \uC774\uB3D9 \uC5C6\uC74C)\n// p1 = { ...p0 };\n// // \uC774 \uACBD\uC6B0, \uBAA8\uB4E0 \uACC4\uC0B0\uB41C \uC810\uC740 \uC2DC\uC791/\uB05D \uC810\uACFC \uB3D9\uC77C\uD558\uAC8C \uB429\uB2C8\uB2E4.\n// // \uC694\uCCAD\uC5D0 \uB530\uB77C \uBE48 \uBC30\uC5F4\uC744 \uBC18\uD658\uD558\uAC70\uB098, \uB05D\uC810\uC744 numberOfSteps\uB9CC\uD07C \uBC18\uD658\uD560 \uC218\uB3C4 \uC788\uC2B5\uB2C8\uB2E4.\n// // \uC5EC\uAE30\uC11C\uB294 \uACC4\uC0B0 \uB85C\uC9C1\uC744 \uADF8\uB300\uB85C \uB450\uC5B4 \uB3D9\uC77C\uD55C \uC810\uC774 \uBC18\uBCF5 \uC0DD\uC131\uB418\uB3C4\uB85D \uD569\uB2C8\uB2E4.\n// } else {\n// // \uC2DC\uC791\uC810\uC5D0\uC11C \uB05D\uC810\uC73C\uB85C\uC758 \uBCA1\uD130\uC5D0 \uC218\uC9C1\uC778 \uBC29\uD5A5 \uBCA1\uD130 \uACC4\uC0B0 (\uC2DC\uACC4 \uBC18\uB300 \uBC29\uD5A5 90\uB3C4 \uD68C\uC804)\n// const perpX = -deltaY / distance;\n// const perpY = deltaX / distance;\n//\n// // \uC911\uAC04 \uC9C0\uC810\uC5D0\uC11C \uC218\uC9C1 \uBC29\uD5A5\uC73C\uB85C \uC635\uC158\uC5D0 \uB530\uB77C \uC81C\uC5B4\uC810 \uC704\uCE58 \uACC4\uC0B0\n// const offset = distance * controlPointOffsetFactor;\n// p1 = {\n// x: midX + perpX * offset,\n// y: midY + perpY * offset,\n// };\n// }\n//\n// // --- \uACE1\uC120 \uC0C1\uC758 \uC810 \uACC4\uC0B0 ---\n// for (let i = 1; i <= numberOfSteps; i++) {\n// // 1. \uAE30\uBCF8 \uD30C\uB77C\uBBF8\uD130 u \uACC4\uC0B0 (0 < u <= 1)\n// const u = i / numberOfSteps;\n// // 2. \uAC00\uC18D\uB3C4 \uC801\uC6A9\uB41C \uD30C\uB77C\uBBF8\uD130 t \uACC4\uC0B0\n// const t = Math.pow(u, accelerationFactor);\n// // 3. \uBCA0\uC9C0\uC5D0 \uACE1\uC120 \uC704\uC758 \uC810 \uACC4\uC0B0\n// const pointOnCurve = quadraticBezier(t, p0, p1, p2);\n// points.push(pointOnCurve);\n// }\n//\n// return points; // \uACC4\uC0B0\uB41C \uC911\uAC04 \uC88C\uD45C\uB4E4\uC758 \uBC30\uC5F4 \uBC18\uD658\n// }\n//\n// // --- \uC0AC\uC6A9 \uC608\uC2DC ---\n// const start: Point = { x: 4, y: 10 };\n// const end: Point = { x: 50, y: 20 };\n// const steps = 10; // 10\uAC1C\uC758 \uC911\uAC04 \uC9C0\uC810 \uACC4\uC0B0\n//\n// // \uC608\uC2DC 1: \uAE30\uBCF8 \uC635\uC158 (\uC57D\uAC04\uC758 \uACE1\uC120, \uB4F1\uAC04\uACA9)\n// const path1 = getPointsOnBezierPath(start, end, {}, steps);\n// console.log(\"\uAE30\uBCF8 \uC635\uC158 \uACBD\uB85C:\", path1.map(p => `(${p.x.toFixed(1)}, ${p.y.toFixed(1)})`).join(\" -> \"));\n//\n// // \uC608\uC2DC 2: \uB354 \uB9CE\uC774 \uD718\uC5B4\uC9C0\uAC8C (offset \uC99D\uAC00), \uAC00\uC18D \uD6A8\uACFC \uCD94\uAC00 (acceleration > 1)\n// const path2 = getPointsOnBezierPath(start, end, { controlPointOffsetFactor: 0.6, accelerationFactor: 2 }, steps);\n// console.log(\"\uAC15\uD55C \uACE1\uC120 + \uAC00\uC18D \uACBD\uB85C:\", path2.map(p => `(${p.x.toFixed(1)}, ${p.y.toFixed(1)})`).join(\" -> \"));\n//\n// // \uC608\uC2DC 3: \uBC18\uB300 \uBC29\uD5A5\uC73C\uB85C \uD718\uAC8C (offset \uC74C\uC218), \uAC10\uC18D \uD6A8\uACFC \uCD94\uAC00 (acceleration < 1)\n// const path3 = getPointsOnBezierPath(start, end, { controlPointOffsetFactor: -0.3, accelerationFactor: 0.5 }, steps);\n// console.log(\"\uBC18\uB300 \uACE1\uC120 + \uAC10\uC18D \uACBD\uB85C:\", path3.map(p => `(${p.x.toFixed(1)}, ${p.y.toFixed(1)})`).join(\" -> \"));\n\n export const rotatePoint = (point: Point2D, center: Point2D, angleInRadians: number): Point2D => {\n // Translate point to origin so that center is the origin\n const translatedX = point.x - center.x;\n const translatedY = point.y - center.y;\n\n // Rotate point\n const rotatedX = translatedX * Math.cos(angleInRadians) - translatedY * Math.sin(angleInRadians);\n const rotatedY = translatedX * Math.sin(angleInRadians) + translatedY * Math.cos(angleInRadians);\n\n // Translate point back\n return new Point2D(rotatedX + center.x, rotatedY + center.y);\n }\n\n /**\n * 2\uCC28 \uBCA0\uC9C0\uC5D0 \uACE1\uC120 \uC704\uC758 \uD2B9\uC815 t \uAC12\uC5D0\uC11C\uC758 \uC810 \uC88C\uD45C\uB97C \uACC4\uC0B0\uD569\uB2C8\uB2E4.\n * B(t) = (1-t)\u00B2P\u2080 + 2(1-t)tP\u2081 + t\u00B2P\u2082\n * @param p0 \uC2DC\uC791\uC810\n * @param p1 \uC81C\uC5B4\uC810\n * @param p2 \uB05D\uC810\n * @param t \uB9E4\uAC1C\uBCC0\uC218 (0\uC5D0\uC11C 1 \uC0AC\uC774)\n * @returns \uACC4\uC0B0\uB41C \uC810\uC758 \uC88C\uD45C\n */\n export const quadraticBezier = (p0: number, p1: number, p2: number, t: number): number => {\n const mt = 1 - t;\n return mt * mt * p0 + 2 * mt * t * p1 + t * t * p2;\n };\n }\n", "import { ValidUtils } from '../valid/ValidUtils';\nimport { FieldType, FilterTuple } from '../types';\nimport { Point2D } from '../entity/Point2D';\nimport { Point3D } from '../entity/Point3D';\nimport { Rect } from '../entity/Rect';\nimport { ObjectUtils } from '../object/ObjectUtils';\nimport { IOS3166_1_Code } from '../code/IOS3166_1';\n\nexport namespace ConvertUtils {\n export type RGBA = { r?: number, g?: number, b?: number, a?: number };\n export type MinMaxCenterAvgDiff<T> = { min: T, max: T, center: T, avg: T };\n export type ToURLSearchParamsParams = { [key: string]: any } | URLSearchParams | [string, unknown][] | string;\n export const objToGetURL = (obj: any): string => {\n return Object.keys(obj).reduce((prev, key, i) => (\n `${prev}${i !== 0 ? '&' : ''}${key}=${obj[key]}`\n ), '');\n };\n\n export const mapToJson = (map: Map<string, any>): string => {\n return JSON.stringify(\n Array.from(\n map.entries()\n ).reduce((o: any, [key, value]) => {\n o[key] = value;\n return o;\n }, {}));\n };\n\n // export const fixed = (num: number, fractionDigits: number): number => {\n // const factor = Math.pow(10, fractionDigits);\n // }\n export const jsonToMap = (jsonStr: any): Map<string, string> => {\n return new Map(JSON.parse(jsonStr));\n };\n\n export const toUrl = (data: string) => {\n try {\n return new URL(data);\n }\n catch (e) {\n throw new Error(`Invalid URL string: ${data}`);\n }\n }\n\n\n export const decodeURIString = (data: string) => {\n return decodeURIComponent(data);\n }\n \n export const encodeURIString = (data: string) => {\n return encodeURIComponent(data);\n }\n\n export const objToStrMap = (obj: any): Map<string, string> => {\n const strMap = new Map();\n for (const k of Object.keys(obj)) {\n strMap.set(k, obj[k]);\n }\n return strMap;\n };\n\n export const jsonToStrMap = (jsonStr: string) => {\n return ConvertUtils.objToStrMap(JSON.parse(jsonStr));\n };\n\n export const strToObject = (message: string): any => {\n return JSON.parse(message);\n };\n\n export const objToJson = (obj: any): string => {\n return JSON.stringify(obj);\n };\n\n export const objToMap = (obj: any): Map<string, any> => {\n const mp = new Map<string, any>();\n Object.keys(obj).forEach((k) => {\n mp.set(k, obj[k]);\n });\n return mp;\n };\n\n export const mapToObj = (map: Map<string, any>): any => {\n const obj = {} as any;\n map.forEach((v, k) => {\n obj[k] = v;\n });\n return obj;\n };\n\n export const snakeToCamelCase = (str: string): string => {\n return str.replace(/_([a-z])/g, (_, letter) => letter.toUpperCase());\n }\n export const camelToSnakeCase = (str: string): string => {\n return str.replace(/([a-z])([A-Z])/g, '$1_$2').toLowerCase();\n };\n\n export function toFormData (obj: any) {\n const formData = new FormData();\n for (const key in obj)\n formData.append(key, obj[key]);\n return formData;\n }\n\n export function toObject<T>(obj: URLSearchParams, config: { firstValue: true }): FieldType<T, string>;\n export function toObject(obj: URLSearchParams): { [key: string]: string | string[] };\n export function toObject<T>(obj: FormData): T;\n export function toObject<T>(obj: [string, unknown][]): T;\n export function toObject<T>(obj: Iterable<any>): T;\n export function toObject(obj: any): any;\n export function toObject(obj: URLSearchParams | FormData |any, config?: { firstValue: boolean }): any {\n if (obj instanceof URLSearchParams) {\n const robj = {} as any;\n obj.forEach((v, k) => {\n if (config?.firstValue && robj[k] === undefined) {\n robj[k] = v;\n } else if (!config?.firstValue) {\n if (robj[k]) {\n if (Array.isArray(robj[k])) {\n robj[k].push(v);\n } else {\n robj[k] = [robj[k], v];\n }\n } else {\n robj[k] = v;\n }\n }\n })\n return robj;\n } else if(obj instanceof FormData) {\n // new Map().entries()\n // Object.entries({})\n // obj = Object.fromEntries(obj.entries());\n const formDataToObject = (formData: any) => {\n const obj: any = {};\n // FormData\uC758 \uBAA8\uB4E0 \uD0A4\uB97C \uC21C\uD68C\n for (const key of formData.keys()) {\n const values = formData.getAll(key); // \uB3D9\uC77C \uD0A4\uC758 \uBAA8\uB4E0 \uAC12 \uAC00\uC838\uC624\uAE30\n // \uAC12\uC774 \uD558\uB098\uBA74 \uB2E8\uC77C \uAC12\uC73C\uB85C, \uC5EC\uB7EC \uAC1C\uBA74 \uBC30\uC5F4\uB85C \uC800\uC7A5\n obj[key] = values.length > 1 ? values : values[0];\n }\n return obj;\n }\n return formDataToObject(obj);\n } else if (obj && typeof obj[Symbol.iterator] === 'function') {\n return Object.fromEntries(obj);\n } else if (Array.isArray(obj)) {\n return Object.fromEntries(obj);\n }else {\n // console.log(Object.prototype.toString.call(obj));\n if (ValidUtils.isMap(obj)) {\n const map = obj as Map<string, any>;\n obj = ConvertUtils.mapToObj(map);\n }\n if (ValidUtils.isArray(obj)) {\n const arr = obj as any[];\n for (let i = 0; i < arr.length; i++) {\n arr[i] = ConvertUtils.toObject(arr[i]);\n }\n }\n\n if (ValidUtils.isObject(obj)) {\n for (const property in obj) {\n obj[property] = ConvertUtils.toObject(obj[property]);\n }\n }\n\n return obj;\n }\n };\n\n export const toArray = <T>(data?: T | T[] | Set<T>): T[] => {\n if (data instanceof Set) {\n return Array.from(data.values());\n }\n\n const datas = (Array.isArray(data) ? data : (data ? [data] : []));\n return datas;\n }\n export const flatArray = <T>(...data: (T | Iterable<T>)[]): T[] => {\n const datas = data.flatMap<T>((item) => (item instanceof Object && Symbol.iterator in item ? Array.from(item) : [item]));\n return datas;\n };\n\n export const iteratorToArray = <T>(it: any): T[] => {\n return Array.from(it) as T[];\n };\n\n export const toJson = (obj: any): string => {\n const at = ConvertUtils.toObject(obj);\n return JSON.stringify(at);\n };\n\n export const concatenateToAttribute = (object_o: any) => {\n return ConvertUtils.concatenateToString(object_o, '=', ' ', '\\'');\n };\n\n export const concatenateToParameter = (object_o: any) => {\n return ConvertUtils.concatenateToString(object_o, '=', '&', '');\n };\n\n export const concatenateToString = (object_o: any, unionString_s = '=', spilString_s = ' ', pairString_s = '') => {\n const results: any[] = [];\n for (const property in object_o) {\n const value = object_o[property];\n if (value) {\n results.push(property.toString() + unionString_s + pairString_s + value + pairString_s);\n }\n }\n\n return results.join(spilString_s);\n };\n\n export const specialCharsToEscape = (data: string): string => {\n return data.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n };\n\n export const decodeHTMLEscape = (data: string): string => {\n // HTML \uC5D4\uD2F0\uD2F0 \uC774\uC2A4\uCF00\uC774\uD504\uB97C \uB514\uCF54\uB4DC\uD569\uB2C8\uB2E4.\n return data.replace(/&amp;/g, '&')\n .replace(/&lt;/g, '<')\n .replace(/&gt;/g, '>')\n .replace(/&quot;/g, '\"')\n .replace(/&#39;/g, \"'\")\n .replace(/&#x2F;/g, '/');\n }\n\n export function escapeHTML(htmlString: string, option?: { targets?: string[] }): string {\n if (!htmlString) return '';\n \n // HTML escape map - \uC21C\uC11C \uC911\uC694: & \uB97C \uBA3C\uC800 \uCC98\uB9AC\uD574\uC57C \uD568\n // https://dev-handbook.tistory.com/23\n const escapeMap: Record<string, string> = {\n '&': '&amp;', // \uBC18\uB4DC\uC2DC \uBA3C\uC800 \uCC98\uB9AC\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#39;', // or &apos; (\uD558\uC9C0\uB9CC HTML4\uC5D0\uC11C\uB294 &#39; \uAD8C\uC7A5)\n '/': '&#x2F;',\n '`': '&#x60;',\n '=': '&#x3D;',\n '{': '&#123;',\n '}': '&#125;',\n '#': '&#35;',\n '$': '&#36;',\n '\\n': '&#10;', // newline\n '\\r': '&#13;', // carriage return\n '\\t': '&#9;', // tab\n '\\u00A0': '&nbsp;', // non-breaking space\n '\u00A2': '&cent;',\n '\u00A3': '&pound;',\n '\u00A5': '&yen;',\n '\u20AC': '&euro;',\n '\u00A9': '&copy;',\n '\u00AE': '&reg;',\n '\u2122': '&trade;',\n '\u00B0': '&deg;',\n '\u00B1': '&plusmn;',\n '\u00D7': '&times;',\n '\u00F7': '&divide;',\n '\u2212': '&minus;',\n '\u2022': '&bull;',\n '\u2026': '&hellip;',\n '\u2190': '&larr;',\n '\u2192': '&rarr;',\n '\u2191': '&uarr;',\n '\u2193': '&darr;',\n '\u2194': '&harr;',\n };\n\n // targets \uC635\uC158\uC774 \uC788\uC73C\uBA74 \uD574\uB2F9 \uBB38\uC790\uB9CC \uD544\uD130\uB9C1\n const targetsSet = option?.targets ? new Set(option.targets) : null;\n const filteredEscapeMap = targetsSet \n ? Object.fromEntries(Object.entries(escapeMap).filter(([key]) => targetsSet.has(key)))\n : escapeMap;\n\n // & \uAC00 targets\uC5D0 \uD3EC\uD568\uB418\uC5B4 \uC788\uAC70\uB098 targets\uAC00 \uC5C6\uC73C\uBA74 & \uB97C \uBA3C\uC800 \uCC98\uB9AC\n const shouldEscapeAmpersand = !targetsSet || targetsSet.has('&');\n \n // \uC774\uC2A4\uCF00\uC774\uD504\uD560 \uBB38\uC790\uB4E4\uB85C \uC815\uADDC\uC2DD \uD328\uD134 \uC0DD\uC131\n const charsToEscape = Object.keys(filteredEscapeMap).filter(char => char !== '&');\n if (charsToEscape.length === 0 && !shouldEscapeAmpersand) {\n return htmlString; // \uC774\uC2A4\uCF00\uC774\uD504\uD560 \uBB38\uC790\uAC00 \uC5C6\uC73C\uBA74 \uC6D0\uBCF8 \uBC18\uD658\n }\n\n // \uC815\uADDC\uC2DD \uC0DD\uC131 (\uD2B9\uC218 \uBB38\uC790 \uC774\uC2A4\uCF00\uC774\uD504 \uD544\uC694)\n const escapedChars = charsToEscape.map(char => {\n // \uC815\uADDC\uC2DD\uC5D0\uC11C \uD2B9\uBCC4\uD55C \uC758\uBBF8\uB97C \uAC00\uC9C4 \uBB38\uC790\uB4E4\uC744 \uC774\uC2A4\uCF00\uC774\uD504\n return char.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n }).join('');\n\n let result = htmlString;\n \n // & \uB97C \uBA3C\uC800 \uCC98\uB9AC (\uC635\uC158\uC5D0 \uD3EC\uD568\uB41C \uACBD\uC6B0)\n if (shouldEscapeAmpersand) {\n result = result.replace(/&/g, '&amp;');\n }\n \n // \uB098\uBA38\uC9C0 \uBB38\uC790 \uCC98\uB9AC\n if (escapedChars.length > 0) {\n const regex = new RegExp(`[${escapedChars}]`, 'g');\n result = result.replace(regex, (match) => {\n return filteredEscapeMap[match] || match;\n });\n }\n\n return result;\n }\n\n export const copyObject = <T extends Record<string, any>>(obj: T, update: Partial<T> = {}): T => {\n return {...obj, ...update};\n };\n\n export const copyArrayWithAddition = <T extends unknown[]>(arr: FilterTuple<T>, update?: T): T => {\n return [...arr, ...(update || [])] as T;\n };\n\n export const hexToInt = (hex: string): number => {\n if (hex.startsWith('#')) {\n hex = hex.slice(1);\n }\n if (hex.length === 3) {\n hex = hex.split('').map((c) => c + c).join('');\n }\n return parseInt(hex, 16);\n };\n\n\n // export const toHex = (val: number): string => {\n // const hex = Math.floor(val).toString(16).toUpperCase();\n // return (hex.length === 1 ? '0' + hex : hex);\n // };\n\n export const toHex = (num: number): string => {\n if (num < 0) {\n num = 0xFFFFFFFF + num + 1;\n }\n num = Number(num.toFixed(0));\n return num.toString(16).padStart(2, '0').toUpperCase();\n };\n\n export const toHexColor = (rgba: RGBA): string => {\n const r = ConvertUtils.toHex(rgba.r ?? 0);\n const g = ConvertUtils.toHex(rgba.g ?? 0);\n const b = ConvertUtils.toHex(rgba.b ?? 0);\n const a = ConvertUtils.toHex(rgba.a ?? 255);\n return `#${r}${g}${b}${a}`;\n };\n\n export const avgColor = (color: RGBA[]): RGBA => {\n const sum = color.reduce((acc: Required<RGBA>, c) => {\n acc.r += c.r ?? 0;\n acc.g += c.g ?? 0;\n acc.b += c.b ?? 0;\n acc.a += c.a ?? 0;\n return acc;\n }, {r: 0, g: 0, b: 0, a: 0}) as Required<RGBA>;\n const avg = {r: Math.floor(sum.r / color.length), g: Math.floor(sum.g / color.length), b: Math.floor(sum.b / color.length), a: Math.floor(sum.a / color.length)};\n return avg;\n };\n\n export const toRGBA = (hex?: string | null): RGBA => {\n hex ??= '#000000FF';\n const hexColor = hex.replace('#', '');\n const r = parseInt(hexColor.slice(0, 2) || '0', 16);\n const g = parseInt(hexColor.slice(2, 4) || '0', 16);\n const b = parseInt(hexColor.slice(4, 6) || '0', 16);\n const a = hexColor.length > 6 ? parseInt(hexColor.slice(6, 8) || '0', 16) : 255;\n return {r, g, b, a};\n };\n\n export const minMaxCenterAvg = <T extends { [key: string]: number }>(obj: T[]): { [key in keyof T]?: MinMaxCenterAvgDiff<number> & {diff: number} } => {\n const result: { [key in keyof T]: { min: number, max: number, center: number, diff: number, avg: number } } = {} as any;\n\n const allKeys = ObjectUtils.uniqueKeys(obj);\n for (const key of allKeys) {\n const values = obj.map(item => item[key]);\n const min = Math.min(...values);\n const max = Math.max(...values);\n const center = (min + max) / 2;\n const avg = values.reduce((sum, val) => sum + val, 0) / values.length;\n\n result[key as keyof T] = {min, max, center, avg, diff: max - min};\n }\n\n return result;\n }\n\n export const minMaxCenterRectAvg2D = (point2Ds: (Point2D | { x: number, y: number })[]): MinMaxCenterAvgDiff<Point2D> & { minMaxRect: Rect } => {\n const min = new Point2D(Number.MAX_SAFE_INTEGER, Number.MAX_SAFE_INTEGER);\n const max = new Point2D(Number.MIN_SAFE_INTEGER, Number.MIN_SAFE_INTEGER);\n let sum = new Point2D(0, 0);\n point2Ds.forEach((p) => {\n min.x = Math.min(min.x, p.x);\n min.y = Math.min(min.y, p.y);\n max.x = Math.max(max.x, p.x);\n max.y = Math.max(max.y, p.y);\n sum.x += p.x;\n sum.y += p.y;\n });\n const center = new Point2D((min.x + max.x) / 2, (min.y + max.y) / 2);\n const avg = new Point2D(sum.x / point2Ds.length, sum.y / point2Ds.length);\n const minMaxRect = new Rect(min.x, min.y, max.x - min.x, max.y - min.y);\n return {min, max, center, avg, minMaxRect};\n };\n\n\n export const minMaxCenterAvg3D = (point3Ds: (Point3D | { x: number, y: number, z: number })[]): MinMaxCenterAvgDiff<Point3D> => {\n const min = new Point3D(Number.MAX_VALUE, Number.MAX_VALUE, Number.MAX_VALUE);\n const max = new Point3D(Number.MIN_VALUE, Number.MIN_VALUE, Number.MIN_VALUE);\n let sum = new Point3D(0, 0, 0);\n point3Ds.forEach((p) => {\n min.x = Math.min(min.x, p.x);\n min.y = Math.min(min.y, p.y);\n min.z = Math.max(min.z, p.z);\n max.x = Math.max(max.x, p.x);\n max.y = Math.max(max.y, p.y);\n max.z = Math.max(max.z, p.y);\n sum.x += p.x;\n sum.y += p.y;\n sum.z += p.z;\n });\n const center = new Point3D((min.x + max.x) / 2, (min.y + max.y) / 2, (min.z + max.z) / 2);\n const avg = new Point3D(sum.x / point3Ds.length, sum.y / point3Ds.length, sum.z / point3Ds.length);\n return {min, max, center, avg};\n };\n\n export const roundRectRadiiToFullRadii = (radii?: [number] | [number, number] | [number, number, number] | [number, number, number, number]) => {\n if (!radii) {\n return [0, 0, 0, 0];\n }\n if (radii.length === 1) {\n return [radii[0] ?? 0, radii[0] ?? 0, radii[0] ?? 0, radii[0] ?? 0];\n } else if (radii.length === 2) {\n return [radii[0] ?? 0, radii[1] ?? 0, radii[0] ?? 0, radii[1] ?? 0];\n } else if (radii.length === 3) {\n return [radii[0] ?? 0, radii[1] ?? 0, radii[2] ?? 0, radii[1] ?? 0];\n } else {\n return radii;\n }\n };\n\n\n export const toArrayDirectionChange = <T>(array: T[][]) => {\n // \uC785\uB825 \uBC30\uC5F4\uC774 \uBE44\uC5B4\uC788\uAC70\uB098 \uCCAB \uBC88\uC9F8 \uD589\uC774 \uBE44\uC5B4\uC788\uC73C\uBA74 \uBE48 \uBC30\uC5F4 \uBC18\uD658\n if (!array || array.length === 0 || !array[0] || array[0].length === 0) {\n return [];\n }\n const result: T[][] = [];\n const numCols = array[0].length; // \uAE30\uC900 \uC5F4 \uAC1C\uC218 (\uCCAB \uD589 \uAE30\uC900)\n const numRows = array.length; // \uD589 \uAC1C\uC218\n\n for (let i = 0; i < numCols; i++) {\n const newRow: T[] = [];\n for (let j = 0; j < numRows; j++) {\n // \uB9CC\uC57D jagged array \uAC00\uB2A5\uC131\uC744 \uC5C4\uACA9\uD788 \uB2E4\uB8E8\uB824\uBA74 \uC5EC\uAE30\uC11C array[j].length > i \uC778\uC9C0 \uD655\uC778 \uD544\uC694\n // \uD558\uC9C0\uB9CC T[][] \uD0C0\uC785 \uC2DC\uADF8\uB2C8\uCC98\uB294 \uBCF4\uD1B5 rectangular array\uB97C \uAE30\uB300\uD568\n newRow.push(array[j][i]);\n }\n result.push(newRow);\n }\n return result;\n }\n\n // groupBy \uD568\uC218 \uAD6C\uD604\n export const groupByMap = <T, K>(array: T[], keySelector: (item: T) => K): Map<K, T[]> => {\n return array.reduce((map, item) => {\n const key = keySelector(item);\n const group = map.get(key) || [];\n group.push(item);\n map.set(key, group);\n return map;\n }, new Map<K, T[]>());\n }\n export const groupByObject = <T, K extends string | number | symbol>(\n array: T[],\n keySelector: (item: T) => K\n ): Record<K, T[]> => {\n// groupByMap \uD638\uCD9C\n const map = groupByMap(array, keySelector);\n // Map\uC744 Record\uB85C \uBCC0\uD658\n return Object.fromEntries(map) as Record<K, T[]>;\n }\n\n\n\n export const toURLSearchParams = (data: ToURLSearchParamsParams): URLSearchParams =>{\n const searchParams = new URLSearchParams();\n if (typeof data === 'string') {\n new URLSearchParams(data).forEach((value, key) => {\n searchParams.append(key, value);\n });\n } else if (typeof data === 'object') {\n const forTarget = data instanceof URLSearchParams ? data.entries() : (Array.isArray(data) ? data : Object.entries(data));\n for (const [k, v] of Array.from(forTarget)) {\n if (Array.isArray(v)) {\n v.forEach(it => searchParams.append(k, it));\n } else {\n searchParams.append(k, v as any);\n }\n }\n }\n return searchParams;\n }\n export const toRawQueryString = (data: ToURLSearchParamsParams, option?:{valueEncodeURIComponent?: boolean}): string => {\n const params = ConvertUtils.toURLSearchParams(data);\n const dataStr= Array.from(params.entries())\n .map(([k, v]) => {\n const j = `${k}=${option?.valueEncodeURIComponent? encodeURIComponent(v) : v}`;\n return j;\n })\n .join('&');\n return dataStr;\n }\n // export const RelativeHumanReadableTimeLabels = {\n // [IOS3166_1_Code.KOR]: {\n // justNow: '\uBC29\uAE08 \uC804',\n // minutesAgo: '\uBD84 \uC804',\n // hoursAgo: '\uC2DC\uAC04 \uC804',\n // daysAgo: '\uC77C \uC804',\n // }\n //\n // }\n // export type RelativeHumanReadableTimeLabel = {\n // justNow: string,\n // minutesAgo: string,\n // hoursAgo: string,\n // daysAgo: string,\n // };\n // export type RelativeHumanReadableTimeConfig = {\n // label: RelativeHumanReadableTimeLabel;\n // }\n // export const formatRelativeHumanReadableTime = (date: Date | string | number, config: RelativeHumanReadableTimeConfig): string => {\n // if (!(date instanceof Date)) {\n // date = new Date(date);\n // }\n // const now = new Date();\n // const diffMs = now.getTime() - date.getTime();\n // const diffMinutes = Math.floor(diffMs / (1000 * 60));\n // const diffHours = Math.floor(diffMinutes / 60);\n //\n // if (diffMinutes < 1) return config.label.justNow;\n // if (diffMinutes < 60) return `${diffMinutes}${config.label.minutesAgo}`;\n // if (diffHours < 24) return `${diffHours}${}`;\n // return `${Math.floor(diffHours / 24)}\uC77C \uC804`;\n // }\n\n /**\n * \uBB38\uC790\uC5F4 JSON\uC744 \uD0A4-\uAC12 \uC30D \uBC30\uC5F4\uB85C \uBCC0\uD658\uD569\uB2C8\uB2E4.\n *\n * @param {string} stringJson - JSON \uD615\uC2DD\uC758 \uBB38\uC790\uC5F4 (\uC608: \"{value: this.child.obj.name}\")\n * @return {Array<{ key: string, value: string }>} \uD0A4-\uAC12 \uC30D \uBC30\uC5F4\n */\n export const stringJsonToKeyPairs = (stringJson: string) => {\n return Array.from(stringJson.matchAll(/(\\w+):\\s*([^,}]+)/g)).map(match => ({key: match[1], value: match[2]}))\n }\n\n export const entriesToKeyPairs = <T>(o: T) => {\n return Object.entries(o).map(([key, value]) => ({key, value})) as {key: keyof T, value: T[keyof T]}[];\n }\n\n export const stringToBase64 = (str: string): string => {\n return btoa(str);\n }\n export const uint8ArrayToBase64 = (bytes: Uint8Array): string => {\n let binary = '';\n const len = bytes.byteLength;\n for (let i = 0; i < len; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n return btoa(binary);\n }\n export const base64ToString = (base64: string): string => {\n return atob(base64);\n }\n export const base64ToUint8Array = (base64: string): Uint8Array => {\n const binaryString = atob(base64);\n const len = binaryString.length;\n const bytes = new Uint8Array(len);\n for (let i = 0; i < len; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n return bytes;\n }\n // const formDataToFormDataEntryValueObj = <T = { [key: string]: FormDataEntryValue | FormDataEntryValue[] }>(\n // data: FormData | HTMLFormElement\n // ): T => {\n // if (typeof HTMLFormElement !== 'undefined' && data instanceof HTMLFormElement) {\n // data = new FormData(data);\n // }\n // const obj: any = {};\n // data.forEach((value, key) => {\n // if (Array.isArray(obj[key])) {\n // obj[key].push(value);\n // } else if (obj[key] !== undefined || !isNaN(obj[key])) {\n // obj[key] = [obj[key], value];\n // } else {\n // obj[key] = value;\n // }\n // });\n // return obj;\n // }\n\n}\n", "import { ValidUtils } from '../valid/ValidUtils';\n\nexport namespace RandomUtils {\n // export const readonly d = ''\n\n // export const getUniqueNumbers = (max: number, length: number) => {\n // max = Math.max(max, 0);\n // length = Math.max(Math.min(max, length), 0);\n // const array: number[] = [];\n // while (array.length < length) {\n // const num = Math.floor(Math.random() * max);\n // if (!array.includes(num)) array.push(num);\n // }\n // return array;\n // };\n\n export const uniqueInts = (min: number, max: number, count: number) => {\n const result: number[] = [];\n if (count > max - min) {\n throw new Error('Count is greater than the range of unique integers');\n }\n while (result.length < count) {\n const randomInt = RandomUtils.int(min, max);\n if (!result.includes(randomInt)) {\n result.push(randomInt);\n }\n }\n return result;\n }\n\n\n export const chance = (percentage: number): boolean => {\n if (percentage < 0 || percentage > 1) {\n throw new Error('Percentage must be between 0 and 1');\n }\n return Math.random() < percentage;\n };\n // max\uB294 \uD3EC\uD568\uD558\uC9C0 \uC54A\uC74C\n export const int = (min?: number, max?: number) => {\n return Math.floor(RandomUtils.float(min, max));\n }\n\n // ex) 0,5 0~<5 <5\uB294 \uD3EC\uD568\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. \uC18C\uC218\uC810\uD3EC\uD568\n export const float = (min?: number, max?: number) => {\n if (ValidUtils.isNullOrUndefined(min)) {\n return Math.random();\n } else if (!ValidUtils.isNullOrUndefined(min) && ValidUtils.isNullOrUndefined(max)) {\n return Math.random() * (min || 0);\n } else {\n return Math.random() * ((max || 0) - (min || 0)) + (min || 0);\n }\n };\n\n export const uuid = (format: string = 'xxxx-xxxx-xxxx-xxxx'): string => {\n return format.replace(/[xy]/g, function(c) {\n const r = Math.random() * 16 | 0;\n const v = c === 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n });\n };\n\n\n export const uuid4 = (): string => {\n // // return uuid of form xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\n let uuid = '';\n let ii;\n for (ii = 0; ii < 32; ii += 1) {\n switch (ii) {\n case 8:\n case 20:\n uuid += '-';\n uuid += ((Math.random() * 16) | 0).toString(16);\n break;\n case 12:\n uuid += '-';\n uuid += '4';\n break;\n case 16:\n uuid += '-';\n uuid += ((Math.random() * 4) | 8).toString(16);\n break;\n default:\n uuid += ((Math.random() * 16) | 0).toString(16);\n }\n }\n return uuid;\n };\n\n export const hex = (): string => {\n const letters = '0123456789ABCDEF'.split('');\n let hex = '';\n for (let i = 0; i < 6; i++) {\n hex += letters[Math.floor(Math.random() * 16)];\n }\n return hex;\n };\n\n\n export const rgb = (): string => {\n const letters = '0123456789ABCDEF'.split('');\n let color = '#';\n for (let i = 0; i < 6; i++) {\n color += letters[Math.floor(Math.random() * 16)];\n }\n return color;\n };\n\n export const rgba = (): string => {\n const letters = '0123456789ABCDEF'.split('');\n let color = '#';\n for (let i = 0; i < 8; i++) {\n color += letters[Math.floor(Math.random() * 16)];\n }\n return color;\n };\n // (Math.random().toString(36)+'00000000000000000').slice(2, 10) + Date.now()\n\n export const alphabet = (len: number): string => {\n const letters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('');\n let color = '';\n for (let i = 0; i < len; i++) {\n color += letters[Math.floor(Math.random() * letters.length)];\n }\n return color;\n };\n}\n", "import { Unsubscribable } from './Unsubscribable';\n\nexport interface SubscriptionLike extends Unsubscribable {\n unsubscribe(): void;\n readonly closed: boolean;\n}\n\nexport class Subscription implements SubscriptionLike {\n public static EMPTY: Subscription = (function (empty: any) {\n empty.closed = true;\n return empty;\n })(new Subscription());\n\n public closed = false;\n private _teardowns: (Unsubscribable | (() => void))[] | null = null;\n\n constructor(initialTeardown?: () => void) {\n if (initialTeardown) {\n this.add(initialTeardown);\n }\n }\n\n unsubscribe(): void {\n if (this.closed) {\n return;\n }\n this.closed = true;\n const teardowns = this._teardowns;\n this._teardowns = null;\n\n if (teardowns) {\n let errors: any[] | null = null;\n teardowns.forEach(teardown => {\n try {\n if (typeof teardown === 'function') {\n teardown();\n } else if (teardown && typeof (teardown as any).unsubscribe === 'function') {\n (teardown as any).unsubscribe();\n }\n } catch (e) {\n errors = errors || [];\n errors.push(e);\n }\n });\n if (errors) {\n throw new Error(errors.map(e => e.message).join('\\n'));\n }\n }\n }\n\n add(teardown: Unsubscribable | Function | void): void {\n if (!teardown) {\n return;\n }\n let teardownToAdd: Unsubscribable | (() => void);\n if (typeof teardown === 'function') {\n teardownToAdd = teardown as () => void;\n } else if (typeof teardown === 'object' && teardown !== null && typeof (teardown as any).unsubscribe === 'function') {\n teardownToAdd = teardown as Unsubscribable;\n } else {\n return;\n }\n\n if (this.closed) {\n if (typeof teardownToAdd === 'function') {\n teardownToAdd();\n } else {\n teardownToAdd.unsubscribe();\n }\n } else {\n if (!this._teardowns) {\n this._teardowns = [];\n }\n this._teardowns.push(teardownToAdd);\n }\n }\n\n remove(teardown: Unsubscribable | Function | void): void {\n const teardowns = this._teardowns;\n if (!teardowns || !teardown) {\n return;\n }\n const index = teardowns.indexOf(teardown as any);\n if (index !== -1) {\n teardowns.splice(index, 1);\n }\n }\n}\n", "import { Subscription } from './Subscription';\nimport { Observer } from './Observer';\n\nexport class Subscriber<T, E = any> extends Subscription implements Observer<T, E> {\n constructor(private destination: Observer<T, E>) {\n super();\n }\n next(value: T): void {\n if (this.closed) {\n return;\n }\n this.destination.next(value);\n }\n error(err: E): void {\n if (this.closed) {\n return;\n }\n this.closed = true;\n this.destination.error(err);\n this.unsubscribe();\n }\n complete(): void {\n if (this.closed) {\n return;\n }\n this.closed = true;\n this.destination.complete();\n this.unsubscribe();\n }\n}\n", "import { Subscription } from './Subscription';\nimport { CompleteCallBack, ErrorCallBack, ObserverCallBack, Subscribable } from './Subscribable';\nimport { Observer } from './Observer';\nimport { Subscriber } from './Subscriber';\n\nexport type OperatorFunction<T, R> = (source: Observable<T>) => Observable<R>;\n\nexport class Observable<T, E = any> implements Subscribable<T, E> {\n private _producerFunction: ((subscriber: Subscriber<T, E>) => Subscription | (() => void) | void) | undefined;\n\n constructor(producerFunction?: (subscriber: Subscriber<T, E>) => Subscription | (() => void) | void) {\n this._producerFunction = producerFunction;\n }\n\n subscribe(d: ObserverCallBack<T>): Subscription;\n subscribe(d: ObserverCallBack<T>, e?: ErrorCallBack, c?: CompleteCallBack): Subscription;\n subscribe(observer: Partial<Observer<T, E>>): Subscription;\n subscribe(observer: Partial<Observer<T, E>> | ObserverCallBack<T>, e?: ErrorCallBack, c?: CompleteCallBack): Subscription {\n /*\n const observer = observerOrNext;\n\n const partialObserver: Partial<Observer<T, E>> = typeof observer === 'function'\n ? {\n next: observer,\n error: error,\n complete: complete\n }\n : {\n next: observer.next,\n error: observer.error,\n complete: observer.complete\n };\n */\n const partialObserver: Partial<Observer<T, E>> = {\n next: typeof observer === 'object' ? observer.next : observer,\n error: typeof observer === 'object' ? observer.error : e,\n complete: typeof observer === 'object' ? observer.complete : c\n };\n\n // Create a new internal subscriber for this specific subscription\n const internalSubscriber = new Subscriber({\n next: (data: T) => {\n partialObserver.next?.(data);\n },\n error: (e: E) => {\n partialObserver.error?.(e);\n },\n complete: () => {\n partialObserver.complete?.();\n }\n });\n\n if (this._producerFunction) {\n const teardownLogic = this._producerFunction(internalSubscriber);\n if (teardownLogic) {\n internalSubscriber.add(teardownLogic);\n }\n }\n\n return internalSubscriber;\n }\n\n // complete \uB418\uC57C\uC9C0\uB9CC \uB9C8\uC9C0\uB9C9 \uCC98\uB9AC\uB41C\uB2E4!\n toPromise(): Promise<T | undefined> {\n return new Promise((resolve, reject) => {\n let lastValue: T | undefined;\n let subscription: Subscription;\n\n subscription = this.subscribe({\n next: (value: T) => {\n lastValue = value;\n },\n error: (err: E) => {\n reject(err);\n subscription.unsubscribe();\n },\n complete: () => {\n resolve(lastValue);\n subscription.unsubscribe();\n }\n });\n });\n }\n\n pipe(): Observable<T, E>;\n pipe<A>(op1: OperatorFunction<T, A>): Observable<A, any>;\n pipe<A, B>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>): Observable<B, any>;\n pipe<A, B, C>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>): Observable<C, any>;\n pipe<A, B, C, D>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>): Observable<D, any>;\n pipe<A, B, C, D, E>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>): Observable<E, any>;\n pipe<A, B, C, D, E, F>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>): Observable<F, any>;\n pipe<A, B, C, D, E, F, G>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>): Observable<G, any>;\n pipe<A, B, C, D, E, F, G, H>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>): Observable<H, any>;\n pipe<A, B, C, D, E, F, G, H, I>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>): Observable<I, any>;\n pipe<A, B, C, D, E, F, G, H, I, J>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>): Observable<J, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>): Observable<K, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>): Observable<L, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>): Observable<M, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>): Observable<N, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>): Observable<O, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>): Observable<P, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>): Observable<Q, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>): Observable<R, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>): Observable<S, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>): Observable<U, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>): Observable<V, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>): Observable<W, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>): Observable<X, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>): Observable<Y, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>): Observable<Z, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>): Observable<AA, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>, op27: OperatorFunction<AA, AB>): Observable<AB, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>, op27: OperatorFunction<AA, AB>, op28: OperatorFunction<AB, AC>): Observable<AC, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>, op27: OperatorFunction<AA, AB>, op28: OperatorFunction<AB, AC>, op29: OperatorFunction<AC, AD>): Observable<AD, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>, op27: OperatorFunction<AA, AB>, op28: OperatorFunction<AB, AC>, op29: OperatorFunction<AC, AD>, op30: OperatorFunction<AD, AE>): Observable<AE, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>\n ): Observable<AF, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>\n ): Observable<AG, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>\n ): Observable<AH, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>\n ): Observable<AI, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>\n ): Observable<AJ, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>\n ): Observable<AK, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>\n ): Observable<AL, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>\n ): Observable<AM, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>,\n op39: OperatorFunction<AM, AN>\n ): Observable<AN, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>,\n op39: OperatorFunction<AM, AN>,\n op40: OperatorFunction<AN, AO>\n ): Observable<AO, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>,\n op39: OperatorFunction<AM, AN>,\n op40: OperatorFunction<AN, AO>,\n op41: OperatorFunction<AO, AP>\n ): Observable<AP, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>,\n op39: OperatorFunction<AM, AN>,\n op40: OperatorFunction<AN, AO>,\n op41: OperatorFunction<AO, AP>,\n op42: OperatorFunction<AP, AQ>\n ): Observable<AQ, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>,\n op39: OperatorFunction<AM, AN>,\n op40: OperatorFunction<AN, AO>,\n op41: OperatorFunction<AO, AP>,\n op42: OperatorFunction<AP, AQ>,\n op43: OperatorFunction<AQ, AR>\n ): Observable<AR, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>,\n op39: OperatorFunction<AM, AN>,\n op40: OperatorFunction<AN, AO>,\n op41: OperatorFunction<AO, AP>,\n op42: OperatorFunction<AP, AQ>,\n op43: OperatorFunction<AQ, AR>,\n op44: OperatorFunction<AR, AS>\n ): Observable<AS, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS, AT>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>,\n op39: OperatorFunction<AM, AN>,\n op40: OperatorFunction<AN, AO>,\n op41: OperatorFunction<AO, AP>,\n op42: OperatorFunction<AP, AQ>,\n op43: OperatorFunction<AQ, AR>,\n op44: OperatorFunction<AR, AS>,\n op45: OperatorFunction<AS, AT>\n ): Observable<AT, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS, AT, AU>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>,\n op39: OperatorFunction<AM, AN>,\n op40: OperatorFunction<AN, AO>,\n op41: OperatorFunction<AO, AP>,\n op42: OperatorFunction<AP, AQ>,\n op43: OperatorFunction<AQ, AR>,\n op44: OperatorFunction<AR, AS>,\n op45: OperatorFunction<AS, AT>,\n op46: OperatorFunction<AT, AU>\n ): Observable<AU, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS, AT, AU, AV>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>,\n op39: OperatorFunction<AM, AN>,\n op40: OperatorFunction<AN, AO>,\n op41: OperatorFunction<AO, AP>,\n op42: OperatorFunction<AP, AQ>,\n op43: OperatorFunction<AQ, AR>,\n op44: OperatorFunction<AR, AS>,\n op45: OperatorFunction<AS, AT>,\n op46: OperatorFunction<AT, AU>,\n op47: OperatorFunction<AU, AV>\n ): Observable<AV, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS, AT, AU, AV, AW>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>,\n op39: OperatorFunction<AM, AN>,\n op40: OperatorFunction<AN, AO>,\n op41: OperatorFunction<AO, AP>,\n op42: OperatorFunction<AP, AQ>,\n op43: OperatorFunction<AQ, AR>,\n op44: OperatorFunction<AR, AS>,\n op45: OperatorFunction<AS, AT>,\n op46: OperatorFunction<AT, AU>,\n op47: OperatorFunction<AU, AV>,\n op48: OperatorFunction<AV, AW>\n ): Observable<AW, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS, AT, AU, AV, AW, AX>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>,\n op39: OperatorFunction<AM, AN>,\n op40: OperatorFunction<AN, AO>,\n op41: OperatorFunction<AO, AP>,\n op42: OperatorFunction<AP, AQ>,\n op43: OperatorFunction<AQ, AR>,\n op44: OperatorFunction<AR, AS>,\n op45: OperatorFunction<AS, AT>,\n op46: OperatorFunction<AT, AU>,\n op47: OperatorFunction<AU, AV>,\n op48: OperatorFunction<AV, AW>,\n op49: OperatorFunction<AW, AX>\n ): Observable<AX, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS, AT, AU, AV, AW, AX, AY>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n op10: OperatorFunction<I, J>,\n op11: OperatorFunction<J, K>,\n op12: OperatorFunction<K, L>,\n op13: OperatorFunction<L, M>,\n op14: OperatorFunction<M, N>,\n op15: OperatorFunction<N, O>,\n op16: OperatorFunction<O, P>,\n op17: OperatorFunction<P, Q>,\n op18: OperatorFunction<Q, R>,\n op19: OperatorFunction<R, S>,\n op20: OperatorFunction<S, U>,\n op21: OperatorFunction<U, V>,\n op22: OperatorFunction<V, W>,\n op23: OperatorFunction<W, X>,\n op24: OperatorFunction<X, Y>,\n op25: OperatorFunction<Y, Z>,\n op26: OperatorFunction<Z, AA>,\n op27: OperatorFunction<AA, AB>,\n op28: OperatorFunction<AB, AC>,\n op29: OperatorFunction<AC, AD>,\n op30: OperatorFunction<AD, AE>,\n op31: OperatorFunction<AE, AF>,\n op32: OperatorFunction<AF, AG>,\n op33: OperatorFunction<AG, AH>,\n op34: OperatorFunction<AH, AI>,\n op35: OperatorFunction<AI, AJ>,\n op36: OperatorFunction<AJ, AK>,\n op37: OperatorFunction<AK, AL>,\n op38: OperatorFunction<AL, AM>,\n op39: OperatorFunction<AM, AN>,\n op40: OperatorFunction<AN, AO>,\n op41: OperatorFunction<AO, AP>,\n op42: OperatorFunction<AP, AQ>,\n op43: OperatorFunction<AQ, AR>,\n op44: OperatorFunction<AR, AS>,\n op45: OperatorFunction<AS, AT>,\n op46: OperatorFunction<AT, AU>,\n op47: OperatorFunction<AU, AV>,\n op48: OperatorFunction<AV, AW>,\n op49: OperatorFunction<AW, AX>,\n op50: OperatorFunction<AX, AY>\n ): Observable<AY, any>;\n pipe(...operators: OperatorFunction<any, any>[]): Observable<any, any> {\n if (operators.length === 0) {\n return this as any;\n }\n return operators.reduce((prev, operator) => operator(prev), this as any);\n }\n}\n", "import { Observer } from './Observer';\nimport { Observable, OperatorFunction } from './Observable';\nimport { Subscription } from './Subscription';\nimport { CompleteCallBack, ErrorCallBack, ObserverCallBack, Subscribable } from './Subscribable';\n\nexport class Subject<T, E = any> extends Observable<T, E> implements Observer<T, E> {\n private _observers = new Set<Partial<Observer<T, E>>>();\n private _isStopped = false;\n private _hasError = false;\n private _error: E | undefined;\n\n constructor() {\n // Call parent Observable constructor with our own subscribe logic\n super(subscriber => {\n return this._subscribeToSubject(subscriber);\n });\n }\n\n protected _subscribeToSubject(subscriber: any): Subscription {\n const partialObserver: Partial<Observer<T, E>> = {\n next: subscriber.next.bind(subscriber),\n error: subscriber.error.bind(subscriber),\n complete: subscriber.complete.bind(subscriber)\n };\n\n if (this._isStopped) {\n if (this._hasError) {\n partialObserver.error?.(this._error!);\n } else {\n partialObserver.complete?.();\n }\n return Subscription.EMPTY;\n }\n\n this._observers.add(partialObserver);\n\n return new Subscription(() => {\n this._observers.delete(partialObserver);\n });\n }\n\n next(data: T): void {\n if (this._isStopped) {\n return; // Subject is stopped, no more emissions\n }\n this._observers.forEach(observer => {\n observer.next?.(data);\n });\n }\n\n error(err: E): void {\n if (this._isStopped) {\n return; // Subject is stopped, no more errors\n }\n this._hasError = true;\n this._error = err;\n this._isStopped = true; // Subject stops after error\n this._observers.forEach(observer => observer.error?.(err));\n this._observers.clear(); // Clear observers after error\n }\n\n complete(): void {\n if (this._isStopped) {\n return; // Subject is stopped, no more completions\n }\n this._isStopped = true; // Subject stops after completion\n this._observers.forEach(observer => observer.complete?.());\n this._observers.clear(); // Clear observers after completion\n }\n\n asObservable(): Observable<T, E> {\n // Returns a new Observable that wraps this Subject's subscribe method.\n // This hides the next/error/complete methods from the consumer.\n return new Observable<T, E>(subscriber => {\n return this._subscribeToSubject(subscriber);\n });\n }\n}\n", "import {Subject} from './Subject';\nimport {Subscription} from './Subscription';\n\nexport class BehaviorSubject<T, E = any> extends Subject<T, E> {\n private _value: T; // BehaviorSubject always has a current value\n\n constructor(initialValue: T) {\n super();\n this._value = initialValue; // Store the initial value\n }\n\n next(data: T): void {\n this._value = data; // Update the current value\n super.next(data); // Multicast to all current subscribers\n }\n\n protected _subscribeToSubject(subscriber: any): Subscription {\n // Call parent's subscribe logic first\n const subscription = super._subscribeToSubject(subscriber);\n\n // Immediately emit the current value to the new subscriber\n // Only if the subject has not completed or errored\n if (!(this as any)._isStopped) { // _isStopped is from Subject\n subscriber.next(this._value);\n } else if ((this as any)._hasError) { // _hasError is from Subject\n subscriber.error((this as any)._error!); // _error is from Subject\n } else {\n subscriber.complete();\n }\n\n return subscription;\n }\n\n getValue(): T {\n if ((this as any)._hasError) {\n throw (this as any)._error;\n }\n return this._value;\n }\n}", "import { Subject } from './Subject';\nimport { Subscription } from './Subscription';\nimport { Observer } from './Observer';\nimport { CompleteCallBack, ErrorCallBack, ObserverCallBack } from './Subscribable';\n\nexport class ReplaySubject<T, E = any> extends Subject<T, E> {\n private _buffer: T[] = [];\n // Removed: private _error: E | undefined;\n // Removed: private _isStopped = false;\n\n constructor(private bufferSize: number = Infinity) {\n super();\n }\n\n next(data: T): void {\n // Rely on parent Subject's _isStopped\n if ((this as any)._isStopped) {\n return; // Cannot emit after stopped\n }\n this._buffer.push(data);\n if (this._buffer.length > this.bufferSize) {\n this._buffer.shift(); // Remove oldest if buffer exceeds size\n }\n super.next(data); // Multicast to current subscribers\n }\n\n error(err: E): void {\n // Rely on parent Subject to manage _isStopped and _error\n super.error(err); // Multicast error and stop\n }\n\n complete(): void {\n // Rely on parent Subject to manage _isStopped\n super.complete(); // Multicast complete and stop\n }\n\n protected _subscribeToSubject(subscriber: any): Subscription {\n // Emit buffered values to the new subscriber first\n this._buffer.forEach(value => subscriber.next(value));\n\n // If the subject has already completed or errored, emit that status\n // Rely on parent Subject's _isStopped, _hasError, _error\n if ((this as any)._isStopped) {\n if ((this as any)._hasError) {\n subscriber.error((this as any)._error);\n } else {\n subscriber.complete();\n }\n return Subscription.EMPTY;\n }\n\n // Then, call super._subscribeToSubject to add the observer for future values\n return super._subscribeToSubject(subscriber);\n }\n}\n", "import { ReplaySubject } from './ReplaySubject';\nimport { Subject } from './Subject';\nimport { Subscription } from './Subscription';\n\nexport class ReplayForwardSubject<T> extends ReplaySubject<T> {\n private forward = new Subject<T>();\n private internalSub: Subscription; // \uB0B4\uBD80 \uAD6C\uB3C5 \uC800\uC7A5\n\n constructor(bufferSize?: number) {\n super(bufferSize); // \uBC84\uD37C \uD06C\uAE30 \uC635\uC158\uC73C\uB85C (\uAE30\uBCF8 \uBB34\uD55C)\n this.internalSub = this.subscribe(this.forward.next.bind(this.forward)); // \uAD6C\uB3C5 \uC800\uC7A5\n }\n\n getForwardOnly() {\n return this.forward.asObservable();\n }\n\n // \uC18C\uBA78 \uC2DC \uD638\uCD9C\uD560 destroy \uBA54\uC11C\uB4DC (\uB610\uB294 complete \uC624\uBC84\uB77C\uC774\uB4DC)\n destroy() {\n if (this.internalSub && !this.internalSub.closed) {\n this.internalSub.unsubscribe(); // \uB0B4\uBD80 \uAD6C\uB3C5 \uD574\uC81C\n }\n super.complete(); // \uBD80\uBAA8 complete \uD638\uCD9C (\uC790\uB3D9 cleanup)\n this.forward.complete(); // forward\uB3C4 complete (\uC120\uD0DD: \uAD6C\uB3C5\uC790 notify)\n }\n\n // \uC635\uC158: complete \uC624\uBC84\uB77C\uC774\uB4DC (destroy \uB300\uC2E0 \uC0AC\uC6A9 \uAC00\uB2A5)\n override complete() {\n if (this.internalSub && !this.internalSub.closed) {\n this.internalSub.unsubscribe();\n }\n super.complete();\n this.forward.complete();\n }\n}", "import { Subscription } from './Subscription';\n\nexport class AutoCloseSubscription extends Subscription {\n constructor(userUnsubscribe: () => void) {\n super(userUnsubscribe);\n }\n}\n", "import { Observable } from '../Observable';\n\n/**\n * Creates an Observable that emits sequential numbers every specified\n * interval of time.\n *\n * @param period The interval size in milliseconds\n * @return An Observable that emits a sequential number each time interval.\n */\nexport function interval(period: number = 0): Observable<number> {\n // Handle negative periods by treating them as 0\n if (period < 0) {\n period = 0;\n }\n\n return new Observable<number>(subscriber => {\n let count = 0;\n let intervalId: NodeJS.Timeout;\n\n // Start emitting after the first period has passed\n intervalId = setInterval(() => {\n subscriber.next(count++);\n }, period);\n\n // Return cleanup function\n return () => {\n clearInterval(intervalId);\n };\n });\n}", "import { Observable, OperatorFunction } from '../Observable';\n\n/**\n * Emits only the first `count` values emitted by the source Observable.\n *\n * @param count The maximum number of `next` values to emit.\n * @return A function that returns an Observable that emits only the first\n * `count` values emitted by the source Observable.\n */\nexport function take<T>(count: number): OperatorFunction<T, T> {\n return (source: Observable<T, any>): Observable<T, any> => {\n // Handle count <= 0 by returning immediately completing Observable\n if (count <= 0) {\n return new Observable<T>(subscriber => {\n subscriber.complete();\n });\n }\n\n return new Observable<T>(subscriber => {\n let seen = 0;\n \n const subscription = source.subscribe({\n next: (value) => {\n // Increment the number of values we have seen\n if (++seen <= count) {\n subscriber.next(value);\n // If we have met or passed our allowed count, complete\n if (count <= seen) {\n subscriber.complete();\n }\n }\n },\n error: (err) => {\n subscriber.error(err);\n },\n complete: () => {\n subscriber.complete();\n }\n });\n\n // Return the subscription for teardown\n return subscription;\n });\n };\n}", "import { Observable } from '../Observable';\n\nexport interface LastValueFromConfig<T> {\n defaultValue: T;\n}\n\nexport class EmptyError extends Error {\n constructor(message: string = 'No elements in sequence') {\n super(message);\n this.name = 'EmptyError';\n }\n}\n\nexport function lastValueFrom<T, D>(source: Observable<T>, config: LastValueFromConfig<D>): Promise<T | D>;\nexport function lastValueFrom<T>(source: Observable<T>): Promise<T>;\n\n/**\n * Converts an observable to a promise by subscribing to the observable,\n * waiting for it to complete, and resolving the returned promise with the\n * last value from the observed stream.\n *\n * @param source the observable to convert to a promise\n * @param config a configuration object to define the `defaultValue` to use if the source completes without emitting a value\n */\nexport function lastValueFrom<T, D>(source: Observable<T>, config?: LastValueFromConfig<D>): Promise<T | D> {\n const hasConfig = typeof config === 'object';\n return new Promise<T | D>((resolve, reject) => {\n let _hasValue = false;\n let _value: T;\n \n source.subscribe({\n next: (value) => {\n _value = value;\n _hasValue = true;\n },\n error: reject,\n complete: () => {\n if (_hasValue) {\n resolve(_value);\n } else if (hasConfig) {\n resolve(config!.defaultValue);\n } else {\n reject(new EmptyError());\n }\n },\n });\n });\n}", "import { Observable } from '../Observable';\nimport { EmptyError } from './lastValueFrom'; // Reusing EmptyError from lastValueFrom\n\n/**\n * Converts an observable to a promise by subscribing to the observable,\n * and returning a promise that will resolve with the first value emitted\n * by the observable. The subscription is then immediately unsubscribed.\n *\n * If the observable stream completes before any values were emitted, the\n * returned promise will reject with {@link EmptyError}.\n *\n * If the observable stream emits an error, the returned promise will reject\n * with that error.\n *\n * @param source The observable to convert to a promise.\n * @return A promise that resolves with the first value from the observable,\n * or rejects with an error or EmptyError.\n */\nexport function firstValueFrom<T>(source: Observable<T>): Promise<T> {\n return new Promise<T>((resolve, reject) => {\n let _hasValue = false;\n\n const subscription = source.subscribe({\n next: (value) => {\n _hasValue = true;\n resolve(value);\n subscription.unsubscribe(); // Unsubscribe immediately after first value\n },\n error: reject,\n complete: () => {\n if (!_hasValue) {\n reject(new EmptyError());\n }\n },\n });\n });\n}", "import { Observable } from '../Observable';\n\n/**\n * Creates an Observable that starts emitting after an `initialDelay` and emits ever increasing numbers\n * after each `period` of time thereafter.\n *\n * @param initialDelay The initial delay time to wait before emitting the first value\n * @param period The period of time between emissions of the subsequent numbers\n * @return An Observable that emits a sequential number each period of time after an initial delay\n */\nexport function timer(initialDelay: number, period?: number): Observable<number> {\n return new Observable<number>(subscriber => {\n let count = 0;\n let intervalId: NodeJS.Timeout | undefined;\n\n // Initial delay\n const timeoutId = setTimeout(() => {\n subscriber.next(count++);\n \n // If period is specified, continue emitting at intervals\n if (period !== undefined && period >= 0) {\n intervalId = setInterval(() => {\n subscriber.next(count++);\n }, period);\n } else {\n // If no period, complete after first emission\n subscriber.complete();\n }\n }, Math.max(0, initialDelay));\n\n // Return cleanup function\n return () => {\n clearTimeout(timeoutId);\n if (intervalId) {\n clearInterval(intervalId);\n }\n };\n });\n}", "import { Observable } from '../Observable';\n\n/**\n * Converts the arguments to an observable sequence.\n *\n * @param values A comma separated list of arguments you want to be emitted\n * @return An Observable that emits the arguments described above and then completes.\n */\nexport function of<T>(...values: T[]): Observable<T> {\n return new Observable<T>(subscriber => {\n for (const value of values) {\n subscriber.next(value);\n }\n subscriber.complete();\n });\n}", "import { Observable } from '../Observable';\n\n/**\n * Creates an Observable from an Array.\n *\n * @param input An array to be converted to Observable\n * @return An Observable that emits the items from the array and then completes.\n */\nexport function fromArray<T>(input: T[]): Observable<T> {\n return new Observable<T>(subscriber => {\n for (const item of input) {\n subscriber.next(item);\n }\n subscriber.complete();\n });\n}", "import { Observable } from '../Observable';\n\n/**\n * Converts a Promise to an Observable.\n *\n * @param promise A promise to be converted to Observable\n * @return An Observable that emits the resolved value of the Promise and then completes,\n * or emits an error if the Promise rejects.\n */\nexport function fromPromise<T>(promise: Promise<T>): Observable<T> {\n return new Observable<T>(subscriber => {\n promise\n .then(value => {\n subscriber.next(value);\n subscriber.complete();\n })\n .catch(error => {\n subscriber.error(error);\n });\n });\n}", "import { Observable } from '../Observable';\n\n/**\n * Creates an Observable that emits no items to the Observer and immediately\n * emits a complete notification.\n *\n * @return An Observable that emits only the complete notification.\n */\nexport function empty<T = never>(): Observable<T> {\n return new Observable<T>(subscriber => {\n subscriber.complete();\n });\n}", "import { Observable } from '../Observable';\n\n/**\n * Creates an Observable that emits no items to the Observer and never completes.\n *\n * @return An Observable that never emits anything.\n */\nexport function never<T = never>(): Observable<T> {\n return new Observable<T>(() => {\n // Do nothing - never emit, never complete, never error\n });\n}", "import { Observable } from '../Observable';\n\n/**\n * Creates an Observable that emits no items to the Observer and immediately\n * emits an error notification.\n *\n * @param error The particular Error to pass to the error notification.\n * @return An Observable that emits only the error notification.\n */\nexport function throwError<T = never>(error: any): Observable<T> {\n return new Observable<T>(subscriber => {\n subscriber.error(error);\n });\n}", "import { Observable } from '../Observable';\n\n/**\n * Creates an Observable that emits a sequence of numbers within a specified range.\n *\n * @param start The value of the first integer in the sequence.\n * @param count The number of sequential integers to generate.\n * @return An Observable that emits a finite range of sequential integers.\n */\nexport function range(start: number, count: number): Observable<number> {\n return new Observable<number>(subscriber => {\n if (count <= 0) {\n subscriber.complete();\n return;\n }\n\n const end = start + count;\n for (let i = start; i < end; i++) {\n subscriber.next(i);\n }\n subscriber.complete();\n });\n}", "import { Observable } from '../Observable';\n\n/**\n * Creates an Observable that, on subscribe, calls an Observable factory to\n * make an Observable for each new Observer.\n *\n * @param observableFactory The Observable factory function to invoke for each\n * Observer that subscribes to the output Observable. May also return a Promise,\n * which will be converted on the fly to an Observable.\n * @return An Observable whose Observers' subscriptions trigger an invocation\n * of the given Observable factory function.\n */\nexport function defer<T>(observableFactory: () => Observable<T> | Promise<T>): Observable<T> {\n return new Observable<T>(subscriber => {\n let result: Observable<T> | Promise<T>;\n\n try {\n result = observableFactory();\n } catch (err) {\n subscriber.error(err);\n return;\n }\n\n // If result is a Promise, convert it to Observable\n if (result && typeof (result as any).then === 'function') {\n const promise = result as Promise<T>;\n promise\n .then(value => {\n subscriber.next(value);\n subscriber.complete();\n })\n .catch(error => {\n subscriber.error(error);\n });\n } else {\n // If result is an Observable, subscribe to it\n const observable = result as Observable<T>;\n return observable.subscribe({\n next: (value) => subscriber.next(value),\n error: (err) => subscriber.error(err),\n complete: () => subscriber.complete()\n });\n }\n });\n}", "import { Observable, OperatorFunction } from '../Observable';\n\n/**\n * Returns an Observable that skips the first `count` items emitted by the source Observable.\n *\n * @param count The number of times, items emitted by source Observable should be skipped.\n * @return An Observable that skips the first `count` values emitted by the source Observable.\n */\nexport function skip<T>(count: number): OperatorFunction<T, T> {\n return (source: Observable<T, any>): Observable<T, any> => {\n return new Observable<T>(subscriber => {\n let skipped = 0;\n \n const subscription = source.subscribe({\n next: (value) => {\n if (skipped < count) {\n skipped++;\n } else {\n subscriber.next(value);\n }\n },\n error: (err) => {\n subscriber.error(err);\n },\n complete: () => {\n subscriber.complete();\n }\n });\n\n return subscription;\n });\n };\n}", "import { Observable, OperatorFunction } from '../Observable';\n\n/**\n * Emits values emitted by the source Observable so long as each value satisfies\n * the given predicate, and then completes as soon as this predicate is not satisfied.\n *\n * @param predicate A function that evaluates each value emitted by the source Observable.\n * If it returns `true`, the value is emitted, if `false` the Observable completes.\n * @param inclusive When set to `true` the value that caused predicate to return `false` will also be emitted.\n * @return An Observable that emits values from the source Observable so long as each value\n * satisfies the condition defined by the predicate, then completes.\n */\nexport function takeWhile<T>(\n predicate: (value: T, index: number) => boolean,\n inclusive: boolean = false\n): OperatorFunction<T, T> {\n return (source: Observable<T, any>): Observable<T, any> => {\n return new Observable<T>(subscriber => {\n let index = 0;\n \n const subscription = source.subscribe({\n next: (value) => {\n const result = predicate(value, index++);\n \n if (result) {\n subscriber.next(value);\n } else {\n if (inclusive) {\n subscriber.next(value);\n }\n subscriber.complete();\n }\n },\n error: (err) => {\n subscriber.error(err);\n },\n complete: () => {\n subscriber.complete();\n }\n });\n\n return subscription;\n });\n };\n}", "import { Observable, OperatorFunction } from '../Observable';\n\n/**\n * Returns an Observable that emits the items you specify as arguments before it begins\n * to emit items emitted by the source Observable.\n *\n * @param values Items you want the modified Observable to emit first.\n * @return An Observable that emits the given values and then emits the items emitted by the source Observable.\n */\nexport function startWith<T>(...values: T[]): OperatorFunction<T, T> {\n return (source: Observable<T, any>): Observable<T, any> => {\n return new Observable<T>(subscriber => {\n // First emit the starting values\n for (const value of values) {\n subscriber.next(value);\n }\n \n // Then subscribe to the source\n const subscription = source.subscribe({\n next: (value) => {\n subscriber.next(value);\n },\n error: (err) => {\n subscriber.error(err);\n },\n complete: () => {\n subscriber.complete();\n }\n });\n\n return subscription;\n });\n };\n}", "import { Observable } from '../Observable';\n\n/**\n * Creates an output Observable which sequentially emits all values from the first given\n * Observable and then moves on to the next.\n *\n * @param observables Input Observables to concatenate.\n * @return An Observable that emits items from all the input Observables sequentially.\n */\nexport function concat<T>(...observables: Observable<T>[]): Observable<T> {\n return new Observable<T>(subscriber => {\n let currentIndex = 0;\n let currentSubscription: any;\n\n function subscribeToNext() {\n if (currentIndex >= observables.length) {\n subscriber.complete();\n return;\n }\n\n const currentObservable = observables[currentIndex++];\n currentSubscription = currentObservable.subscribe({\n next: (value) => {\n subscriber.next(value);\n },\n error: (err) => {\n subscriber.error(err);\n },\n complete: () => {\n subscribeToNext();\n }\n });\n }\n\n subscribeToNext();\n\n return () => {\n if (currentSubscription) {\n currentSubscription.unsubscribe();\n }\n };\n });\n}", "import { Observable } from '../Observable';\n\n/**\n * Creates an output Observable which concurrently emits all values from every given input Observable.\n *\n * @param observables Input Observables to merge together.\n * @return An Observable that emits items from all the input Observables concurrently.\n */\nexport function merge<T>(...observables: Observable<T>[]): Observable<T> {\n return new Observable<T>(subscriber => {\n if (observables.length === 0) {\n subscriber.complete();\n return;\n }\n\n let completedCount = 0;\n const subscriptions: any[] = [];\n\n for (const observable of observables) {\n const subscription = observable.subscribe({\n next: (value) => {\n subscriber.next(value);\n },\n error: (err) => {\n subscriber.error(err);\n },\n complete: () => {\n completedCount++;\n if (completedCount === observables.length) {\n subscriber.complete();\n }\n }\n });\n subscriptions.push(subscription);\n }\n\n return () => {\n subscriptions.forEach(sub => sub.unsubscribe());\n };\n });\n}", "import { Observable } from '../Observable';\n\n/**\n * Creates an Observable that emits events of a specific type from a given event target.\n *\n * @param target The DOM event target (e.g., an HTMLElement, Document, Window).\n * @param eventName The name of the event to listen for (e.g., 'click', 'mousemove').\n * @return An Observable that emits events of the specified type.\n */\nexport function fromEvent<T extends Event>(\n target: EventTarget,\n eventName: string\n): Observable<T> {\n return new Observable<T>(subscriber => {\n const handler = (event: Event) => {\n subscriber.next(event as T);\n };\n\n target.addEventListener(eventName, handler);\n\n // Return a teardown function that removes the event listener\n return () => {\n target.removeEventListener(eventName, handler);\n };\n });\n}\n", "import { Observable } from '../Observable';\nimport { EmptyError } from './lastValueFrom'; // Reusing EmptyError from lastValueFrom\n\n/**\n * Converts an observable to a promise by subscribing to the observable,\n * and returning a promise that will resolve with the last value emitted\n * by the observable when it completes.\n *\n * If the observable stream completes before any values were emitted, the\n * returned promise will reject with {@link EmptyError}.\n *\n * If the observable stream emits an error, the returned promise will reject\n * with that error.\n *\n * @param source The observable to convert to a promise.\n * @return A promise that resolves with the last value from the observable,\n * or rejects with an error or EmptyError.\n */\nexport function toPromise<T>(source: Observable<T>): Promise<T> {\n return new Promise<T>((resolve, reject) => {\n let _hasValue = false;\n let _value: T;\n\n source.subscribe({\n next: (value) => {\n _value = value;\n _hasValue = true;\n },\n error: reject,\n complete: () => {\n if (_hasValue) {\n resolve(_value);\n } else {\n reject(new EmptyError());\n }\n },\n });\n });\n}", "export * from './Store';\nexport * from './Subject';\nexport * from './BehaviorSubject';\nexport * from './ReplaySubject';\nexport * from './ReplayForwardSubject';\nexport * from './Observable';\nexport * from './Subscription';\nexport * from './AutoCloseSubscription'\n\n// Internal utilities (namespace)\nexport * from './internal';\n\nexport interface TimerConfig {\n setTimeout?: (callback: () => void, ms: number) => any;\n clearTimeout?: (id: any) => void;\n}\n\nexport interface IntervalConfig {\n setInterval?: (handler: string | Function, timeout?: number) => number;\n clearInterval?: (id: number | undefined) => void;\n}\n\n\nexport type IntervalIdType = any | null | undefined;\n/*\n if (this._childrenConnectedDoneInterval) {\n clearInterval(this._childrenConnectedDoneInterval);\n }\n\n this._childrenConnectedDoneInterval = debounceTimeIntervalLock(\n () => this._connectedInvocations === 0,\n () => {\n this._childrenConnectedDoneInterval = null;\n this.config.onChildrenConnectedDone(this)\n },\n this.config?.childrenConnectedDoneCheckIntervalTime ?? 30\n , {\n setInterval: window.setInterval,\n clearInterval: window.clearInterval\n });\n\n */\nexport const debounceTimeIntervalLock = (\n unlockChecker: () => boolean,\n unlocked: () => void,\n intervalTime: number,\n config?: IntervalConfig\n) => {\n const clearIntervalFn = config?.clearInterval || clearInterval;\n const setIntervalFn = config?.setInterval || setInterval;\n \n // console.log('[debounceTimeIntervalLock] setIntervalFn type:', typeof setIntervalFn);\n // console.log('[debounceTimeIntervalLock] clearIntervalFn type:', typeof clearIntervalFn);\n\n const nextIntervalId = setIntervalFn(() => {\n if (unlockChecker()) {\n // console.log('[debounceTimeIntervalLock] Interval unlocked, clearing ID:', nextIntervalId);\n clearIntervalFn(nextIntervalId);\n unlocked();\n }\n }, intervalTime);\n\n // console.log('[debounceTimeIntervalLock] Interval created with ID:', nextIntervalId);\n return nextIntervalId;\n}\n\nexport const debounce = <T>(fn: (data: T) => void, delay: number, config?: TimerConfig) => {\n const setTimeoutFn = config?.setTimeout || setTimeout;\n const clearTimeoutFn = config?.clearTimeout || clearTimeout;\n\n let timer: any = null;\n return (data: T) => {\n if (timer) {\n clearTimeoutFn(timer);\n }\n timer = setTimeoutFn(() => {\n fn(data);\n timer = null;\n }, delay);\n };\n};\n\nexport const throttleTime = <Args extends [...unknown[]]>(fn: (...args: Args) => void, delay: number, config?: TimerConfig) => {\n const setTimeoutFn = config?.setTimeout || setTimeout;\n\n let timer: any = null;\n return (...args: Args) => {\n if (!timer) {\n timer = setTimeoutFn(() => {\n fn(...args);\n timer = null;\n }, delay);\n }\n };\n};\n\nexport const throttle = <Args extends [...unknown[]]>(fn: (...args: Args) => void, delay: number) => {\n let lastTime = 0;\n return (...args: Args) => {\n const now = Date.now();\n if (now - lastTime >= delay) {\n fn(...args);\n lastTime = now;\n }\n };\n};\n", "/**\n * AbortablePromise - AbortSignal \uB85C \uB04A\uC744 \uC218 \uC788\uB294 Promise.\n * - \uADF8\uB300\uB85C await \uAC00\uB2A5. executor \uB294 \uC0DD\uC131 \uC2DC \uD55C \uBC88\uB9CC \uC2E4\uD589\uB41C\uB2E4 (\uCCB4\uC774\uB2DD\uD574\uB3C4 \uB2E4\uC2DC \uC548 \uB3C8\uB2E4)\n * - \uC2DC\uC791 \uC804\uC5D0 \uC774\uBBF8 abort \uBA74 executor(\uD329\uD1A0\uB9AC)\uB97C \uBD80\uB974\uC9C0 \uC54A\uB294\uB2E4\n * - \uC9C4\uD589 \uC911 abort \uBA74 \uC989\uC2DC reject, \uCCB4\uC778\uC758 \uAC01 \uB2E8\uACC4 \uC804\uC5D0\uB3C4 abort \uB97C \uD655\uC778\uD55C\uB2E4\n * - reject \uAC12\uC740 signal.reason \uADF8\uB300\uB85C (AbortError \uC774\uB984 \uC720\uC9C0)\n */\nexport class AbortablePromise<T> implements PromiseLike<T> {\n private readonly source: Promise<T>;\n private guarded?: Promise<T>;\n\n constructor(\n executor: (() => Promise<T>) | Promise<T>,\n private readonly signal?: AbortSignal\n ) {\n if (typeof executor !== 'function') {\n // \uC774\uBBF8 \uC2DC\uC791\uB41C promise \u2014 abort \uC5EC\uBD80\uB294 \uC18C\uBE44\uB420 \uB54C(promise getter) \uD310\uB2E8\n this.source = Promise.resolve(executor);\n } else if (signal?.aborted) {\n // \uC774\uBBF8 abort \uBA74 \uD329\uD1A0\uB9AC\uB97C \uC544\uC608 \uBD80\uB974\uC9C0 \uC54A\uB294\uB2E4\n this.source = Promise.reject(signal.reason);\n } else {\n this.source = Promise.resolve().then(executor);\n }\n }\n\n /**\n * source \uB97C abort \uC640 \uACBD\uC7C1\uC2DC\uD0A8 promise. \uC2E4\uC81C\uB85C \uC18C\uBE44\uB420 \uB54C(then/toPromise) \uD55C \uBC88\uB9CC \uB9CC\uB4E0\uB2E4 \u2014\n * await \uB294 then() \uC774 \uB3CC\uB824\uC900 \uC0C8 \uC778\uC2A4\uD134\uC2A4\uB97C \uBC84\uB9AC\uBBC0\uB85C, \uBBF8\uB9AC \uB9CC\uB4E4\uBA74 \uC544\uBB34\uB3C4 \uC548 \uBC1B\uB294 reject \uAC00 unhandled \uB85C \uB0A8\uB294\uB2E4.\n */\n private get promise(): Promise<T> {\n if (this.guarded) return this.guarded;\n const signal = this.signal;\n if (!signal) return (this.guarded = this.source);\n if (signal.aborted) {\n // source \uAC00 \uB098\uC911\uC5D0 reject \uB3FC\uB3C4 unhandled rejection \uC774 \uC548 \uB098\uAC8C \uD761\uC218\uD558\uACE0, \uC18C\uBE44\uC790\uC5D0\uAC90 abort \uB85C reject\n this.source.catch(() => {});\n return (this.guarded = Promise.reject(signal.reason));\n }\n return (this.guarded = new Promise<T>((resolve, reject) => {\n // \uB05D\uB098\uBA74 \uB9AC\uC2A4\uB108\uB97C \uBA3C\uC800 \uB5BC\uACE0 \uACB0\uACFC\uB97C \uB118\uAE34\uB2E4 (\uAC19\uC740 signal \uC5D0 \uB9AC\uC2A4\uB108\uAC00 \uC313\uC774\uC9C0 \uC54A\uAC8C)\n const cleanup = () => signal.removeEventListener('abort', onAbort);\n const onAbort = () => reject(signal.reason);\n signal.addEventListener('abort', onAbort, { once: true });\n this.source.then(\n value => { cleanup(); resolve(value); },\n reason => { cleanup(); reject(reason); }\n );\n }));\n }\n\n then<TResult1 = T, TResult2 = never>(\n onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null,\n onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null\n ): AbortablePromise<TResult1 | TResult2> {\n const signal = this.signal;\n const next = this.promise.then(\n onfulfilled\n ? (value: T) => {\n // \uB2E4\uC74C \uB2E8\uACC4\uB85C \uB118\uC5B4\uAC00\uAE30 \uC804\uC5D0 abort \uD655\uC778\n if (signal?.aborted) throw signal.reason;\n return onfulfilled(value);\n }\n : undefined,\n onrejected\n ) as Promise<TResult1 | TResult2>;\n return new AbortablePromise<TResult1 | TResult2>(next, signal);\n }\n\n catch<TResult = never>(\n onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | undefined | null\n ): AbortablePromise<T | TResult> {\n return this.then(undefined, onrejected);\n }\n\n finally(onfinally?: (() => void) | undefined | null): AbortablePromise<T> {\n return new AbortablePromise<T>(this.promise.finally(onfinally), this.signal);\n }\n\n // \uB124\uC774\uD2F0\uBE0C Promise \uB85C \uBCC0\uD658 (\uADF8\uB0E5 await \uD574\uB3C4 \uB41C\uB2E4)\n toPromise(): Promise<T> {\n return this.promise;\n }\n}\n", "import { Subscription } from '../message/Subscription';\nimport { ConstructorType } from '../types';\nimport { ValidUtils } from '../valid/ValidUtils';\nimport { AbortablePromise } from './AbortablePromise';\n\nexport namespace Promises {\n export const isFulfilled = <T>(result: PromiseSettledResult<T>): result is PromiseFulfilledResult<T> => {\n return result.status === 'fulfilled';\n };\n export const isRejected = <T>(result: PromiseSettledResult<T>): result is PromiseRejectedResult => {\n return result.status === 'rejected';\n };\n\n export const filterCatch = async (promise: Promise<any>, has: ConstructorType<any> | ((e: any) => boolean) | (ConstructorType<any> | ((e: any) => void))[]) => {\n try {\n await promise;\n return undefined;\n } catch (e) {\n const targetHas = Array.isArray(has) ? has : [has];\n for (let ha of targetHas) {\n // if (ValidUtils.isConstructor(ha)) {\n if (ValidUtils.isFunctionType(ha)) {\n if (e instanceof ha) {\n return e;\n }\n } else {\n if ((ha as Function)(e)) {\n return e;\n }\n }\n }\n throw e;\n }\n return undefined;\n };\n export const sleep = (ms: number) => new Promise(resolve => setTimeout(resolve, ms));\n export const sleepReject = (ms: number) => new Promise((resolve, reject) => setTimeout(reject, ms));\n export const settle = async <T, E = unknown>(promise: Promise<T>): Promise<Promises.SettledResult<T, E>> => {\n return Promise.allSettled([promise]).then(results => results[0]);\n };\n export const settles = async <T, E = unknown>(...promises: Promise<T>[]): Promise<Promises.SettledResult<T, E>[]> => {\n return Promise.allSettled(promises);\n };\n export type SettledResult<T, E = unknown> = PromiseFulfilledResult<T> | (Omit<PromiseRejectedResult, 'reason'> & { reason: E });\n\n export type LoopConfig = { age: number };\n export type ObservableLoop<T> = {\n subscribe: (callback: { then?: (data: T, config: LoopConfig & { duration: number }) => void; catch?: (e: any, config: LoopConfig & { duration: number }) => void; delayThen?: (config: LoopConfig & { duration: number; isCatch: boolean; data?: T }) => void }) => Subscription;\n };\n export const loop = <T>(config: { factory: (config: LoopConfig) => Promise<T>; delay?: number; loopDelay?: number }): ObservableLoop<T> => {\n return {\n subscribe: callback => {\n let stop = false;\n let age = 0;\n const loopExecute = async () => {\n const start = Date.now();\n let end = start;\n age++;\n const executeConfig = { age: age };\n let t: T;\n let isCatch = false;\n try {\n t = await config.factory(executeConfig);\n end = Date.now();\n callback.then?.(t, { ...executeConfig, duration: end - start });\n } catch (e) {\n isCatch = true;\n end = Date.now();\n callback.catch?.(e, { ...executeConfig, duration: end - start });\n }\n await sleep(config.loopDelay ?? 0);\n // @ts-ignore\n callback.delayThen?.({ ...executeConfig, duration: end - start, isCatch: isCatch, data: t });\n if (!stop) return loopExecute();\n };\n\n setTimeout(() => {\n loopExecute();\n }, config.delay ?? 0);\n\n return new Subscription(() => {\n stop = true;\n });\n }\n };\n };\n export const delayExecute = <T>(value: (() => T) | (() => Promise<T>), delay = 0): Promise<T> => {\n return new Promise<T>(resolve => {\n setTimeout(async () => {\n const t = await value();\n resolve(t);\n }, delay);\n });\n };\n\n /**\n * Create an abortable promise chain\n * @param executor Initial promise or promise factory\n * @param signal Optional AbortSignal to cancel the execution\n */\n export const abortable = <T>(executor: (() => Promise<T>) | Promise<T>, signal?: AbortSignal): AbortablePromise<T> => {\n return new AbortablePromise(executor, signal);\n };\n\n // const { promise, resolve, reject } = Promise.withResolvers<T>(); \uACF5\uC2DD \uC774\uAC70\uC4F0\uC148\n export const withResolvers = <T>() => {\n let resolve!: (value: T | PromiseLike<T>) => void;\n let reject!: (reason?: any) => void;\n\n const promise = new Promise<T>((res, rej) => {\n resolve = res;\n reject = rej;\n });\n\n return { promise, resolve, reject };\n };\n\n export const executeInChunks = async <T>(promiseFactories: (() => Promise<T>)[], config: { chunkSize: number; sleepBetweenChunks: number }): Promise<T[]> => {\n const results: T[] = [];\n const chunkSize = config.chunkSize;\n const sleepBetweenChunks = config.sleepBetweenChunks;\n\n for (let i = 0; i < promiseFactories.length; i += chunkSize) {\n const chunk = promiseFactories.slice(i, i + chunkSize);\n const chunkResults = await Promise.all(chunk.map(factory => factory()));\n results.push(...chunkResults);\n // Add small delay between chunks to be extra safe\n if (i + chunkSize < promiseFactories.length) {\n await sleep(sleepBetweenChunks);\n }\n }\n return results;\n };\n\n export const executeSettledInChunks = async <T, E = unknown>(promiseFactories: (() => Promise<T>)[], config: { chunkSize: number; sleepBetweenChunks: number }): Promise<Promises.SettledResult<T, E>[]> => {\n const results: Promises.SettledResult<T, E>[] = [];\n const chunkSize = config.chunkSize;\n const sleepBetweenChunks = config.sleepBetweenChunks;\n\n for (let i = 0; i < promiseFactories.length; i += chunkSize) {\n const chunk = promiseFactories.slice(i, i + chunkSize);\n const chunkResults = (await Promise.allSettled(chunk.map(factory => factory()))) as Promises.SettledResult<T, E>[];\n results.push(...chunkResults);\n // Add small delay between chunks to be extra safe\n if (i + chunkSize < promiseFactories.length) {\n await sleep(sleepBetweenChunks);\n }\n }\n return results;\n };\n\n /**\n * Execute promises with concurrency limit using a pool pattern\n * @param promiseFactories Array of promise factories\n * @param concurrency Maximum number of concurrent executions\n * @returns Promise that resolves with all results\n */\n export const executeWithConcurrency = async <T>(promiseFactories: (() => Promise<T>)[], concurrency: number = 10): Promise<T[]> => {\n const results: T[] = new Array(promiseFactories.length);\n let currentIndex = 0;\n\n const executeNext = async (index: number): Promise<void> => {\n while (currentIndex < promiseFactories.length) {\n const factoryIndex = currentIndex++;\n results[factoryIndex] = await promiseFactories[factoryIndex]();\n }\n };\n\n // Create pool of concurrent workers\n const workers = Array(Math.min(concurrency, promiseFactories.length))\n .fill(0)\n .map((_, i) => executeNext(i));\n\n await Promise.all(workers);\n return results;\n };\n\n /**\n * Execute promises with concurrency limit using race pattern (most efficient)\n * Automatically starts a new promise as soon as one completes\n * @param promiseFactories Array of promise factories\n * @param limit Maximum number of concurrent executions (default: 5)\n * @returns Promise that resolves with all results\n */\n export const executeWithLimit = async <T>(promiseFactories: (() => Promise<T>)[], limit: number = 5): Promise<T[]> => {\n const results: T[] = new Array(promiseFactories.length);\n const executing: Promise<void>[] = [];\n\n for (const [index, factory] of promiseFactories.entries()) {\n const promise = factory()\n .then(result => {\n results[index] = result;\n })\n .finally(() => {\n executing.splice(executing.indexOf(promise), 1);\n });\n\n executing.push(promise);\n\n if (executing.length >= limit) {\n await Promise.race(executing);\n }\n }\n\n await Promise.all(executing);\n return results;\n };\n\n /**\n * Retry a promise with configurable delays\n * @param factory Function that returns a promise to retry (receives attempt number and previous error as parameters)\n * @param config Retry configuration\n * @param config.retry Number of retries (0 = no retry, 1 = retry once if failed, etc.)\n * @param config.delay.initialDelay Delay before first attempt (default: 0)\n * @param config.delay.retryDelay Delay between retry attempts (default: 0)\n * @param config.onRetry Callback called on each retry with error and attempt number\n * @returns Promise that resolves with the result or rejects after all retries\n * @example\n * // Retry up to 3 times with 1 second delay between attempts\n * await Promises.retry((attempt, error) => {\n * if (error) console.log('Previous error:', error);\n * return fetchData(attempt);\n * }, { retry: 3, delay: { retryDelay: 1000 } })\n */\n export const retry = async <T>(\n factory: (attempt: number, error?: any) => Promise<T>,\n config: {\n retry: number;\n delay?: {\n initialDelay?: number;\n retryDelay?: number;\n };\n onRetry?: (error: any, attempt: number) => void;\n }\n ): Promise<T> => {\n const initialDelay = config.delay?.initialDelay ?? 0;\n const retryDelay = config.delay?.retryDelay ?? 0;\n\n // Initial delay before first attempt\n if (initialDelay > 0) {\n await sleep(initialDelay);\n }\n\n let lastError: any;\n\n for (let attempt = 0; attempt <= config.retry; attempt++) {\n try {\n return await factory(attempt, lastError);\n } catch (error) {\n lastError = error;\n\n // Don't retry if this was the last attempt\n if (attempt === config.retry) {\n break;\n }\n\n // Call onRetry callback if provided\n config.onRetry?.(error, attempt + 1);\n\n // Wait before retrying\n if (retryDelay > 0) {\n await sleep(retryDelay);\n }\n }\n }\n\n // All retries failed, throw the last error\n throw lastError;\n };\n\n export namespace Result {\n export type FulfilledType<T> = PromiseFulfilledResult<T>;\n export type RejectType<E = unknown> = Omit<PromiseRejectedResult, 'reason'> & { reason: E };\n export type PendingType = { status: 'pending' };\n export type Type<T, E = unknown> = FulfilledType<T> | RejectType<E> | PendingType;\n\n export type FulfilledState<T> = FulfilledType<T> & { isFulfilled: true; isRejected: false; isPending: false };\n export type RejectState<E = unknown> = RejectType<E> & { isFulfilled: false; isRejected: true; isPending: false };\n export type PendingState = PendingType & { isFulfilled: false; isRejected: false; isPending: true };\n export type UndefinedResultState = { status?: undefined; isFulfilled: false; isRejected: false; isPending: false };\n\n export type State<T, E = unknown> = FulfilledState<T> | RejectState<E> | PendingState;\n export type StateFactory<T, E = unknown> = State<T, E> & { factory: () => StateFactory<T, E> };\n export type PromiseState<T, E = unknown> = State<T, E> & Promise<T>;\n export type PromiseStateFactory<T, E = unknown> = PromiseState<T, E> & { factory: () => PromiseStateFactory<T, E> };\n\n export async function awaitWrap<T, E = unknown>(promise: Promise<T>): Promise<State<T, E>>;\n export async function awaitWrap<T, E = unknown>(promise: () => Promise<T>): Promise<StateFactory<T, E>>;\n export async function awaitWrap<T, E = unknown>(promise: Promise<T> | (() => Promise<T>)): Promise<State<T, E> | StateFactory<T, E>> {\n const data = typeof promise === 'function' ? wrap<T, E>(promise) : wrap<T, E>(promise);\n // try {\n\n try {\n await data;\n } catch (e) {}\n\n const rData = {\n status: (data as any).status,\n isFulfilled: (data as any).isFulfilled,\n isRejected: (data as any).isRejected,\n isPending: (data as any).isPending,\n value: (data as any).value,\n reason: (data as any).reason\n } as any;\n if (typeof promise === 'function') {\n rData.factory = () => {\n return awaitWrap(promise);\n };\n return rData;\n } else {\n return rData;\n }\n }\n\n export function wrap<T, E = unknown>(promise: Promise<T>): PromiseState<T, E>;\n export function wrap<T, E = unknown>(promise: () => Promise<T>): PromiseStateFactory<T, E>;\n export function wrap<T, E = unknown>(promise: Promise<T> | (() => Promise<T>)): PromiseState<T, E> | PromiseStateFactory<T, E> {\n const promiseResult = (typeof promise === 'function' ? promise() : promise) as State<T, E> & Promise<T>;\n if (typeof promise === 'function') {\n const p = promiseResult as unknown as PromiseStateFactory<T, E> & Promise<T>;\n p.factory = () => {\n return wrap(promise);\n };\n }\n if (promiseResult.status === undefined) {\n const p = promiseResult as unknown as PendingState & Promise<T>;\n p.status = 'pending';\n p.isPending = true;\n p.isFulfilled = false;\n p.isRejected = false;\n p.then(\n result => {\n console.log('result??', result);\n const p = promiseResult as unknown as FulfilledState<T>;\n p.status = 'fulfilled';\n p.isFulfilled = true;\n p.isRejected = false;\n p.isPending = false;\n p.value = result;\n },\n reason => {\n console.log('rejet??', reason);\n const p = promiseResult as unknown as RejectState<E>;\n p.status = 'rejected';\n p.isFulfilled = false;\n p.isRejected = true;\n p.isPending = false;\n p.reason = reason;\n }\n );\n }\n return promiseResult;\n }\n }\n}\n", "\nexport type Valid<T = any, E = Element> = (value?: T, target?: E, event?: Event) => boolean;\nexport type ValidAction<T = any, E = Element> = (valid: boolean, value?: T, target?: E, event?: Event) => void;\n// export interface Valid<T = any, E = Element> {\n// valid(value?: T, target?: E, event?: Event): boolean;\n// }\nexport abstract class Validator<T = any, E = Element> {\n private _target?: E;\n private _event?: Event;\n private _autoValid!: boolean;\n private _autoValidAction!: boolean;\n private _validAction?: ValidAction<T, E>;\n constructor(protected _value?: T, target?: E, event?: Event, autoValid = true, autoValidAction = true) {\n this.setTarget(target);\n this.setEvent(event);\n this.setAutoValid(autoValid)\n this.setAutoValidAction(autoValidAction)\n }\n\n getValidAction(): ValidAction<T, E> | undefined {\n return this._validAction;\n }\n\n setValidAction(value: ValidAction<T, E>) {\n this._validAction = value;\n return this;\n }\n\n getAutoValid() {\n return this._autoValid;\n }\n\n setAutoValid(autoValid: boolean) {\n this._autoValid = autoValid;\n return this;\n }\n\n getAutoValidAction() {\n return this._autoValidAction;\n }\n\n setAutoValidAction(autoValid: boolean) {\n this._autoValidAction = autoValid;\n return this;\n }\n\n getEvent() {\n return this._event;\n }\n\n setEvent(event: Event | undefined) {\n if (event) {\n this._event = event;\n }\n return this;\n }\n\n getTarget() {\n return this._target;\n }\n\n targetFocus() {\n (this._target as any)?.focus?.();\n }\n\n targetReset() {\n (this._target as any)?.reset?.();\n }\n\n targetDispatchEvent(event: Event) {\n return (this._target as any)?.dispatchEvent(event);\n }\n\n setTarget(target: E | undefined) {\n if (target) {\n this._target = target;\n }\n return this;\n }\n\n // private domRenderFinal(obj: any) {\n // (obj as any)._DomRender_isFinal = true;\n // return obj\n // }\n\n get value(): T | undefined {\n if (this._value === undefined || this._value === null) {\n this._value = (this.getTarget() as any)?.value;\n }\n return this._value;\n }\n\n set value(value: T | undefined) {\n // console.log('---?set?', value, this)\n this._value = value;\n this.tickValue(value);\n }\n\n protected tickValue(value: T | undefined) {\n this.changeValue(value);\n const target = this.getTarget() as any;\n if (target && target?.value !== undefined && target?.value !== null) {\n try {\n target.value = this._value;\n } catch (e) {\n console.error('set value function is blocked ')\n }\n }\n if (this.getAutoValidAction()) {\n this.validAction();\n } else if (this.getAutoValid()) {\n this.valid();\n }\n }\n\n set(value?:T, target?: E, event?: Event) {\n this.setTarget(target);\n this.setEvent(event)\n this.value = value;\n }\n\n changeValue(value: T | undefined) {\n }\n\n get checked(): boolean {\n return (this.getTarget() as any)?.checked ?? false;\n }\n\n set checked(checked: boolean) {\n const target = this.getTarget() as any;\n if (target) {\n target.checked = checked;\n }\n }\n\n get selectedIndex(): number {\n return (this.getTarget() as any)?.selectedIndex ?? -1;\n }\n\n set selectedIndex(selectedIndex: number) {\n const target = this.getTarget() as any;\n if (target) {\n target.selectedIndex = selectedIndex;\n }\n }\n\n public querySelector(selector: string) {\n return (this.getTarget() as unknown as Element)?.querySelector(selector);\n }\n\n public querySelectorALL(selector: string) {\n return (this.getTarget() as unknown as Element)?.querySelectorAll(selector);\n }\n\n public validAction() {\n const valid = this.valid();\n this.getValidAction()?.(valid, this.value, this.getTarget(), this.getEvent());\n return valid;\n }\n\n // public childValidAction() {\n // const valid = this.childValids();\n // this.getValidAction()?.(valid, this.value, this.getTarget(), this.getEvent());\n // return valid;\n // }\n\n public abstract valid(): boolean;\n\n public inValid(): boolean {\n return !this.valid();\n };\n\n public allValid() {\n return this.valid() && this.childInValid();\n }\n\n public allValidAction() {\n return this.validAction() && this.childInValidAction();\n }\n\n public allInValid() {\n return !this.allValid();\n }\n\n public allInValidAction() {\n return !this.allValidAction();\n }\n\n public childValid(): boolean {\n return !this.childInValid();\n }\n\n public childValue(): {[key: string]: any } {\n const data = {} as any;\n this.childValidators().filter(([k, v]) => {\n data[k] = v.value;\n });\n return data;\n }\n\n public childValidAction(): boolean {\n return !this.childInValidAction();\n }\n\n public childInValid(): boolean {\n const inValid = this.childValidators().filter(([k, v]) => !v.valid());\n return inValid.length > 0;\n }\n\n public childInValidValidator(): [string, Validator<any, Element>][] {\n const inValid = this.childValidators().filter(([k, v]) => !v.valid());\n return inValid;\n }\n\n public childInValidAction(): boolean {\n const inValid = this.childValidators().filter(([k, v]) => !v.validAction());\n return inValid.length > 0;\n }\n\n public childValidator(name: string): Validator | undefined {\n return Object.entries(this).find(([k, v]) => ( k === name && (v instanceof Validator)))?.[1];\n }\n\n public childValidators(): [string, Validator][] {\n return Object.entries(this).filter(([k, v]) => (v instanceof Validator));\n }\n\n public childValidValidator(): [string, Validator][] {\n return this.childValidators().filter(it => it[1].valid());\n }\n\n public syncValue() {\n this.value = (this.getTarget() as any)?.value;\n }\n\n public allSyncValue() {\n this.childValidators().forEach(([k, e]) => {\n e.syncValue();\n })\n }\n\n public get length() {\n return (this.value as any)?.length ?? 0;\n }\n}", "import {Validator} from './Validator';\n\nexport class NonPassValidator<T = any, E = Element> extends Validator<T, E> {\n constructor(value?: T, target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return false;\n }\n}\n", "import {Validator} from './Validator';\nimport {NonPassValidator} from './NonPassValidator';\n\nexport type MakeValidator<T = any, E = Element> = (value: T, target: E, event?: Event) => Validator<T, E>;\n\nexport abstract class ValidatorArray<T = any, E = Element> extends Validator<Validator<T, E>[], E> {\n private _makeValidatorFactory: MakeValidator<T, E> = (value: T, target: E, event?: Event): Validator<T, E> => {\n return new NonPassValidator(value, target, event);\n }\n\n constructor(value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n getMakeValidatorFactory(): MakeValidator<T, E> {\n return this._makeValidatorFactory;\n }\n\n setMakeValidatorFactory(value: MakeValidator<T, E>) {\n this._makeValidatorFactory = value;\n return this;\n }\n\n setArrayValue(target: E, value: T, event?: Event) {\n this.value?.filter(it => {\n if (it.getTarget()) {\n return it.getTarget() === target;\n } else {\n return false;\n }\n }).forEach(it => {\n it.set(value, target, event);\n });\n this.tickValue(this.value)\n }\n\n addValidator(value: T, target: E, event?: Event) {\n if (!this.value) {\n this.value = [];\n }\n if (value instanceof Validator) {\n this.value?.push(value)\n } else {\n this.value?.push(this.makeValidator(value, target, event))\n }\n this.tickValue(this.value)\n }\n\n allChecked(checked: boolean) {\n this.checked = checked;\n this.value?.forEach(it => {\n it.checked = checked;\n })\n }\n\n getValidators() {\n return this._value;\n }\n\n getValidator(e: E) {\n return this.value?.filter(it => it.getTarget() === e)[0]\n }\n\n getValidatorByValue(value: T) {\n const validatorByValue = this.getValidatorByValues(value)[0];\n return validatorByValue;\n }\n\n getValidatorByValues(value: T) {\n return this.value?.filter(it => it.value === value) ?? [];\n }\n\n removeElement(e: E) {\n const value = this.value;\n if (value) {\n this.value = value.filter(it => it.getTarget() !== e);\n }\n }\n\n makeValidator(value: T, target: E, event?: Event): Validator<T, E> {\n return this._makeValidatorFactory(value, target, event);\n };\n}\n", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class AllCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return !((this.value ?? []).filter(it => !it.checked).length > 0);\n }\n}", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class AllUnCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return !((this.value ?? []).filter(it => it.checked).length > 0);\n }\n}\n", "import {Validator} from './Validator';\n\nexport class CheckedValidator<T = any, E = HTMLElement> extends Validator<T, E> {\n constructor(value?: T, target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return (this.getTarget() as any)?.checked ?? false;\n }\n}\n", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class CountEqualsCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(public count: number, value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return (this.value ?? []).filter(it => it.checked).length === this.count;\n }\n}\n", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class CountEqualsUnCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(public count: number, value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return (this.value ?? []).filter(it => !it.checked).length === this.count;\n }\n}\n", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class CountGreaterThanCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(public count: number, value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return (this.value ?? []).filter(it => it.checked).length > this.count;\n }\n}\n", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class CountGreaterThanEqualsCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(public count: number, value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return (this.value ?? []).filter(it => it.checked).length >= this.count;\n }\n}\n", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class CountGreaterThanEqualsUnCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(public count: number, value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return (this.value ?? []).filter(it => !it.checked).length >= this.count;\n }\n}\n", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class CountGreaterThanUnCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(public count: number, value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return (this.value ?? []).filter(it => !it.checked).length > this.count;\n }\n}\n", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class CountLessThanCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(public count: number, value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return (this.value ?? []).filter(it => it.checked).length < this.count;\n }\n}\n", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class CountLessThanEqualsCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(public count: number, value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return (this.value ?? []).filter(it => it.checked).length <= this.count;\n }\n}\n", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class CountLessThanEqualsUnCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(public count: number, value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return (this.value ?? []).filter(it => !it.checked).length <= this.count;\n }\n}\n", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class CountLessThanUnCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(public count: number, value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return (this.value ?? []).filter(it => !it.checked).length < this.count;\n }\n}\n", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class CountUnCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(public count: number, value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return (this.value ?? []).filter(it => !it.checked).length >= this.count;\n }\n}\n", "import {Validator} from './Validator';\n\nexport class EmptyValidator<T = any, E = Element> extends Validator<T, E> {\n constructor(value?: T, target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n const value = this.value;\n return value === undefined || value === null || ((value as any)?.length ?? 0) <= 0;\n }\n}\n", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class ExcludeCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(public include: any[], public allRequired: boolean = false, value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n const valus = this.value ?? [];\n const unCheckedValue = valus.filter(it => !it.checked).map(it => it.value);\n return unCheckedValue.length > 0 &&\n (!(unCheckedValue.filter(it => !this.include.includes(it)).length > 0)) &&\n (this.allRequired ? unCheckedValue.filter(it => this.include.includes(it)).length === this.include.length : true)\n }\n}\n", "import {Validator} from './Validator';\n\nexport class FormValidator<E = HTMLFormElement> extends Validator<void, E> {\n constructor(target?: E, event?: Event, autoValid = true) {\n super(undefined, target, event, autoValid)\n }\n\n validAction(): boolean {\n return super.childValidAction();\n }\n\n valid(): boolean {\n return this.childValid()\n }\n\n reset() {\n this.targetReset();\n }\n}\n", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class IncludeCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(public include: any[], public allRequired: boolean = false, value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n const valus = this.value ?? [];\n const checkedValue = valus.filter(it => it.checked).map(it => it.value);\n return checkedValue.length > 0 &&\n (!(checkedValue.filter(it => !this.include.includes(it)).length > 0)) &&\n (this.allRequired ? checkedValue.filter(it => this.include.includes(it)).length === this.include.length : true)\n }\n}\n", "import {Validator} from './Validator';\n\nexport class MultipleValidator<T = any, E = Element> extends Validator<T, E> {\n public validators: Validator<T, E>[];\n constructor(validators: Validator<T, E>[], value?: T, target?: E, event?: Event, autoValid: boolean = true) {\n super(value, target, event, autoValid);\n this.validators = validators.map(it => {\n it.setAutoValid(false);\n it.setAutoValidAction(false);\n return it;\n })\n this.validators.forEach(it => {\n it.set(this.value, this.getTarget(), this.getEvent())\n });\n }\n\n changeValue(value: T | undefined) {\n this.validators.forEach(it => it.set(this.value, this.getTarget(), this.getEvent()));\n }\n\n validAction(): boolean {\n return !(this.validators.filter(it => !it.validAction()).length > 0);\n }\n\n valid(): boolean {\n // console.log('mm', this.validators)\n return !(this.validators.filter(it => !it.valid()).length > 0);\n }\n}\n", "import {Validator} from './Validator';\n\nexport class NotEmptyValidator<T = any, E = Element> extends Validator<T, E> {\n constructor(value?: T, target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n const value = this.value;\n // console.log('NotEmptyValidator', value, value !== undefined && value !== null && ((value as any)?.length ?? 0) > 0)\n return value !== undefined && value !== null && ((value as any)?.length ?? 0) > 0;\n }\n}\n", "import {Validator} from './Validator';\n\nexport class NotRegExpTestValidator<T = any, E = Element> extends Validator<T, E> {\n public regexp: RegExp;\n constructor(regexp: RegExp, value?: T, target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n this.regexp = regexp\n }\n\n valid(): boolean {\n const value = this.value as unknown as string;\n const regExp = (this.regexp as any)._DomRender_origin ?? this.regexp;\n if (value) {\n return !regExp.test(value);\n } else {\n return true;\n }\n }\n}\n", "import {Validator} from './Validator';\n\nexport class PassValidator<T = any, E = Element> extends Validator<T, E> {\n constructor(value?: T, target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return true;\n }\n}\n", "import {Validator} from './Validator';\n\nexport class RegExpTestValidator<T = any, E = Element> extends Validator<T, E> {\n public regexp: RegExp;\n constructor(regexp: RegExp, value?: T, target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n this.regexp = regexp\n }\n\n valid(): boolean {\n const value = this.value as unknown as string;\n const regExp = (this.regexp as any)._DomRender_origin ?? this.regexp;\n // console.log('regexp-->', value, this.regexp, regExp.test(value))\n if (value) {\n return regExp.test(value);\n } else {\n return false;\n }\n }\n}\n", "import {Validator} from './Validator';\n\nexport class RequiredValidator<T = any, E = Element> extends Validator<T, E> {\n constructor(value?: T, target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n const value = this.value;\n // console.log('required', value, value !== undefined && value !== null)\n return value !== undefined && value !== null;\n }\n}\n", "import {Validator} from './Validator';\n\nexport class UnCheckedValidator<T = any, E = HTMLElement> extends Validator<T, E> {\n constructor(value?: T, target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return !((this.getTarget() as any)?.checked ?? false);\n }\n}\n", "import {Validator} from './Validator';\nimport {MultipleValidator} from './MultipleValidator';\n\nexport type ValidMulltiple<T = any, E = Element> = (validators: Validator<T, E>[], value?: T, target?: E, event?: Event) => boolean;\n\nexport class ValidMultipleValidator<T = any, E = Element> extends MultipleValidator<T, E> {\n constructor(public validMultipleCallback: ValidMulltiple<T, E>, public validators: Validator<T, E>[], value?: T, target?: E, event?: Event, autoValid: boolean = true) {\n super(validators, value, target, event, autoValid);\n }\n\n valid(): boolean {\n return this.validMultipleCallback(this.validators, this.value, this.getTarget(), this.getEvent());\n }\n}\n", "import {Valid, Validator} from './Validator';\n\nexport class ValidValidator<T = any, E = Element> extends Validator<T, E> {\n constructor(public validCallBack: Valid<T, E>, value?: T, target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(value?:T, target?:E, event?:Event): boolean {\n return this.validCallBack(value, target, event);\n }\n}\n", "import {Valid, Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class ValidValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(public validCallBack: Valid<Validator<T, E>[], E>, value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return this.validCallBack(this.value, this.getTarget(), this.getEvent());\n }\n}\n", "export type FetcherRequest<TARGET, RESPONSE, CONFIG, RESPONSE_TRANSFORM = RESPONSE> = {\n target: TARGET;\n config?: CONFIG & { hasErrorChecker?: (data: RESPONSE) => any };\n transform?: (data: RESPONSE) => RESPONSE_TRANSFORM;\n errorTransform?: (data?: any) => Promise<any>;\n before?: () => void;\n error?: (e?: any) => void;\n afterSuccess?: () => void;\n finally?: () => void;\n};\n\nexport abstract class Fetcher<TARGET, RESPONSE, CONFIG, PIPE extends { responseData?: RESPONSE }> {\n protected createPipe<T = RESPONSE>(config: FetcherRequest<TARGET, RESPONSE, CONFIG, T>): PIPE {\n return {} as PIPE;\n }\n protected abstract before<T = RESPONSE>(config: FetcherRequest<TARGET, RESPONSE, CONFIG, T>, pipe: PIPE): void;\n protected abstract afterSuccess<T = RESPONSE>(config: FetcherRequest<TARGET, RESPONSE, CONFIG, T>, pipe: PIPE): void;\n protected abstract afterSuccessTransform<T = RESPONSE>(\n config: FetcherRequest<TARGET, RESPONSE, CONFIG, T>,\n pipe: PIPE\n ): void;\n protected abstract finally<T = RESPONSE>(config: FetcherRequest<TARGET, RESPONSE, CONFIG, T>, pipe: PIPE): void;\n protected abstract error<T = RESPONSE>(\n config: FetcherRequest<TARGET, RESPONSE, CONFIG, T>,\n pipe: PIPE,\n e?: any\n ): void;\n\n public fetch<T = RESPONSE>(config: FetcherRequest<TARGET, RESPONSE, CONFIG, T>): Promise<T> {\n return new Promise<T>((resolve, reject) => {\n const pipe = this.createPipe(config);\n Promise.resolve()\n .then(() => {\n this.before(config, pipe);\n config?.before?.();\n })\n .then(() => {\n return this.execute(config);\n // return this.execute(config.target, config?.config);\n })\n .then(data => {\n const hasError = config.config?.hasErrorChecker?.(data);\n if (hasError) {\n throw hasError;\n }\n pipe.responseData = data;\n this.afterSuccess(config, pipe);\n config?.afterSuccess?.();\n const gdata = (config?.transform ? config.transform(data) : data) as T;\n this.afterSuccessTransform(config, pipe);\n resolve(gdata);\n })\n .catch(async e => {\n this.error(config, pipe, e);\n config?.error?.(e);\n if (config?.errorTransform) {\n e = await config.errorTransform(e);\n }\n try {\n e = await this.errorTransform(e);\n } catch (ee){\n e = ee;\n }\n reject(e);\n })\n .finally(() => {\n this.finally(config, pipe);\n config?.finally?.();\n });\n });\n }\n\n protected abstract errorTransform(e: any): Promise<any>;\n protected abstract execute<T=RESPONSE>(fetcherRequest: FetcherRequest<TARGET, RESPONSE, CONFIG, T>): Promise<RESPONSE>;\n}\n", "import { Fetcher, FetcherRequest } from './Fetcher';\nimport { ConvertUtils } from '../convert/ConvertUtils';\n\n// timeout(\uB77C\uC774\uBE0C\uB7EC\uB9AC\uAC00 \uC790\uB3D9\uC73C\uB85C abort)\uACFC signal(\uC0AC\uC6A9\uC790\uAC00 \uC9C1\uC811 abort)\uC740 \uAC19\uC774 \uC4F8 \uC218 \uC788\uC5B4\uC57C \uD55C\uB2E4 -\n// \uB458 \uC911 \uBA3C\uC800 \uC624\uB294 \uCABD\uC774 \uC774\uAE30\uBA74 \uB428. \uC0C1\uD638\uBC30\uD0C0\uB85C \uB9C9\uC558\uB2E4\uAC00(signal?:never) \uB418\uB3CC\uB9BC: \uB124\uC774\uD2F0\uBE0C\n// AbortSignal.timeout()/AbortSignal.any()\uB85C \uC81C\uB300\uB85C \uD569\uCE58\uBA74 \uB418\uB294 \uBB38\uC81C\uC600\uC74C(execute() \uCC38\uACE0).\nexport type RequestInitType = RequestInit & { timeout?: number };\nexport type RequestInfo = {\n requestInfo: string | URL;\n init: RequestInitType;\n};\nexport type HttpFetcherTarget =\n | URL\n | string\n | { url: URL | string; searchParams?: { [key: string]: any } | URLSearchParams | [string, unknown][] };\nexport type HttpFetcherConfig<CONFIG, RESPONSE = Response> = {\n fetch?: RequestInitType;\n fetcher?: typeof fetch;\n config?: CONFIG;\n allowedResponseNotOk?: boolean;\n beforeProxyFetch?: <T extends RequestInfo | URL>(\n config: BeforeProxyFetchParams<T>\n ) => Promise<BeforeProxyFetchParams<T>>;\n afterProxyFetch?: <T extends RequestInfo | URL>(config: AfterProxyFetchParams<T>) => Promise<Response>;\n skipGlobalBeforeProxyFetch?: boolean;\n skipGlobalAfterProxyFetch?: boolean;\n fetchResponseBeforeCallBack?: (config: HttpFetcherConfig<CONFIG, RESPONSE>) => void;\n fetchResponseAfterCallBack?: (data: Response, config: HttpFetcherConfig<CONFIG, RESPONSE>) => void;\n hasResponseErrorChecker?: (data: Response, config: HttpFetcherConfig<CONFIG, RESPONSE>) => any;\n};\nexport type BeforeProxyFetchParams<T = RequestInfo | URL> = {\n requestInfo: T;\n init?: RequestInit;\n};\nexport type AfterProxyFetchParams<T = RequestInfo | URL> = {\n fetch: {\n target: URL;\n requestInit: RequestInit;\n }\n config: BeforeProxyFetchParams<T>;\n response: Response;\n};\n\nexport type FetchSet = { target: URL, requestInit?: RequestInit };\n\nexport class HttpResponseError<T = any> extends Error {\n public error?: any;\n public body?: T;\n public response?: Response;\n}\n\nexport const isHttpResponseError = (data: any): data is HttpResponseError => {\n return data instanceof HttpResponseError;\n}\n\nexport type HttpFetcherRequest<RESPONSE = Response, CONFIG = any, T = RESPONSE> = FetcherRequest<\n HttpFetcherTarget,\n RESPONSE,\n HttpFetcherConfig<CONFIG, RESPONSE>,\n T\n>\n\nexport class HttpFetcher<\n CONFIG = any,\n RESPONSE = Response,\n PIPE extends { responseData?: RESPONSE | undefined } = any\n> extends Fetcher<HttpFetcherTarget, RESPONSE, HttpFetcherConfig<CONFIG, RESPONSE>, PIPE> {\n // get/post/put/patch/head/delete\uAC00 \uC804\uBD80 config.config.fetch.method\uB97C \uC138\uD305\uD558\uB824\uACE0 caller\uAC00\n // \uB118\uAE34 config(.fetch) \uAC1D\uCCB4\uB97C \uC9C1\uC811 mutate\uD588\uB2E4 - \uAC19\uC740 config \uAC1D\uCCB4\uB97C \uC5EC\uB7EC \uD638\uCD9C\uC774 \uACF5\uC720\uD558\uBA74\n // (\uC608: Promise.all\uB85C \uB3D9\uC2DC\uC5D0 get/post) \uC11C\uB85C\uC758 method\uB97C \uB36E\uC5B4\uC4F0\uB294 \uB808\uC774\uC2A4\uAC00 \uC0DD\uACBC\uB2E4. caller\uC758\n // \uAC1D\uCCB4\uB294 \uC808\uB300 \uAC74\uB4DC\uB9AC\uC9C0 \uC54A\uACE0, \uC595\uC740 \uBCF5\uC0AC\uBCF8 \uC704\uC5D0 method\uB9CC \uC5B9\uC5B4\uC11C \uBC18\uD658\uD55C\uB2E4.\n private withMethod<T = RESPONSE>(\n config: HttpFetcherRequest<RESPONSE, CONFIG, T>,\n method: string\n ): HttpFetcherRequest<RESPONSE, CONFIG, T> {\n return { ...config, config: { ...config.config, fetch: { ...config.config?.fetch, method } } };\n }\n\n get<T = RESPONSE>(config: HttpFetcherRequest<RESPONSE, CONFIG, T>): Promise<T> {\n return this.fetch(this.withMethod(config, 'GET'));\n }\n\n post<T = RESPONSE>(\n config: HttpFetcherRequest<RESPONSE, CONFIG, T>\n ): Promise<T> {\n return this.fetch(this.withMethod(config, 'POST'));\n }\n\n patch<T = RESPONSE>(\n config: HttpFetcherRequest<RESPONSE, CONFIG, T>\n ): Promise<T> {\n return this.fetch(this.withMethod(config, 'PATCH'));\n }\n\n put<T = RESPONSE>(\n config: HttpFetcherRequest<RESPONSE, CONFIG, T>\n ): Promise<T> {\n return this.fetch(this.withMethod(config, 'PUT'));\n }\n\n head<T = RESPONSE>(\n config: HttpFetcherRequest<RESPONSE, CONFIG, T>\n ): Promise<T> {\n return this.fetch(this.withMethod(config, 'HEAD'));\n }\n\n delete<T = RESPONSE>(\n config: HttpFetcherRequest<RESPONSE, CONFIG, T>\n ): Promise<T> {\n return this.fetch(this.withMethod(config, 'DELETE'));\n }\n\n protected async beforeProxyFetch<T = RequestInfo | URL>(\n config: BeforeProxyFetchParams<T>\n ): Promise<BeforeProxyFetchParams<T>> {\n return config;\n }\n\n protected async afterProxyFetch<T = RequestInfo | URL>(config: AfterProxyFetchParams<T>): Promise<Response> {\n return config.response;\n }\n\n protected afterSuccess<T>(\n config: HttpFetcherRequest<RESPONSE, CONFIG, T>,\n pipe: PIPE\n ): void {}\n\n protected afterSuccessTransform<T>(\n config: HttpFetcherRequest<RESPONSE, CONFIG, T>,\n pipe: PIPE\n ): void {}\n\n protected before<T>(\n config: HttpFetcherRequest<RESPONSE, CONFIG, T>,\n pipe: PIPE\n ): void {}\n\n protected error<T>(\n config: HttpFetcherRequest<RESPONSE, CONFIG, T>,\n pipe: PIPE,\n e: any\n ): void {}\n\n protected finally<T>(\n config: HttpFetcherRequest<RESPONSE, CONFIG, T>,\n pipe: PIPE\n ): void {}\n\n protected beforeFetch(fetch: FetchSet): void {}\n\n protected afterFetch(fetch: FetchSet, response: Response): void {}\n\n // protected async errorTransform(e: any): Promise<HttpResponseError<any>> {\n protected async errorTransform(e: any): Promise<HttpResponseError> {\n const httpResponseError = new HttpResponseError<any>();\n httpResponseError.error = e;\n if (e instanceof Response) {\n httpResponseError.response = e;\n try {\n httpResponseError.body = await e.clone().text();\n httpResponseError.message = e.statusText;\n } catch (e: any) {\n httpResponseError.body = e;\n httpResponseError.message = e.message;\n }\n } else {\n httpResponseError.body = e;\n httpResponseError.message = e?.message;\n }\n return httpResponseError;\n }\n\n protected async execute<T = RESPONSE>(\n fetcherRequest: HttpFetcherRequest<RESPONSE, CONFIG, T>\n ): Promise<any | RESPONSE> {\n let target = fetcherRequest.target;\n let config = fetcherRequest.config;\n // target data setting\n if (!(target instanceof URL) && typeof target !== 'string') {\n // const url: URL | string = target.url;\n // if (typeof target.url === 'string') {\n // }\n const searchParams = ConvertUtils.toURLSearchParams(target.searchParams ?? {});\n\n try {\n // target.url\uC774 \uC774\uBBF8 URL \uC778\uC2A4\uD134\uC2A4\uC5EC\uB3C4 new URL()\uC5D0 \uADF8\uB300\uB85C \uB118\uAE30\uBA74 \uD56D\uC0C1 \uC0C8 \uAC1D\uCCB4\uAC00 \uB098\uC628\uB2E4\n // (\uBB38\uC790\uC5F4\uC774\uB4E0 URL\uC774\uB4E0 \uB2E4 \uBC1B\uC74C) - \uADF8\uB798\uC11C \uC0BC\uD56D\uC5F0\uC0B0\uC790\uB85C \uBD84\uAE30\uD560 \uD544\uC694\uAC00 \uC5C6\uB2E4. \uC774\uB807\uAC8C \uC548 \uD558\uACE0\n // \uAE30\uC874 \uC778\uC2A4\uD134\uC2A4\uB97C \uADF8\uB300\uB85C \uC37C\uC744 \uB550, \uD638\uCD9C\uBD80\uAC00 \uC7AC\uC0AC\uC6A9\uD558\uB294 URL \uAC1D\uCCB4\uB97C \uC5EC\uAE30\uC11C \uC9C1\uC811 mutate\uD574\uBC84\uB838\uB2E4.\n const url = new URL(target.url);\n searchParams.forEach((value, key) => {\n url.searchParams.append(key, value);\n });\n target = url;\n } catch (e) {\n if (typeof (target as any).url === 'string') {\n const searchParamString = searchParams.toString();\n target = (target as any).url + (searchParamString ? '?' + searchParamString : '');\n } else {\n target = '';\n }\n }\n }\n\n // before proxy fetch\n const beforeProxyData = { requestInfo: target, init: config?.fetch } as BeforeProxyFetchParams<URL>;\n let beforeData = config?.beforeProxyFetch\n ? await config?.beforeProxyFetch(beforeProxyData)\n : beforeProxyData;\n\n beforeData = config?.skipGlobalBeforeProxyFetch ? beforeData : await this.beforeProxyFetch(beforeData);\n target = beforeData.requestInfo;\n if (beforeData.init) {\n config ??= {};\n config.fetch = beforeData.init;\n }\n\n // timeout\uC774 \uC788\uC73C\uBA74 \uADF8 \uC2DC\uAC04 \uB4A4 \uC790\uB3D9\uC73C\uB85C abort\uB418\uB294 signal\uC744 \uB9CC\uB4E4\uACE0, \uC0AC\uC6A9\uC790\uAC00 signal\uB3C4 \uAC19\uC774\n // \uC92C\uC73C\uBA74 AbortSignal.any()\uB85C \uB458\uC744 \uD569\uCE5C\uB2E4 - \uB458 \uC911 \uBA3C\uC800 abort\uB418\uB294 \uCABD\uC774 \uC774\uAE34\uB2E4. \uC218\uB3D9 setTimeout/\n // AbortController/\uB9AC\uC2A4\uB108 \uAD00\uB9AC\uAC00 \uC804\uD600 \uD544\uC694 \uC5C6\uB2E4(\uB124\uC774\uD2F0\uBE0C\uAC00 \uB2E4 \uD574\uC90C).\n let requestInit: RequestInit | undefined = config?.fetch;\n if (config?.fetch && 'timeout' in config.fetch) {\n const timeoutSignal = AbortSignal.timeout(config.fetch.timeout);\n const signal = config.fetch.signal ? AbortSignal.any([timeoutSignal, config.fetch.signal]) : timeoutSignal;\n requestInit = { ...config.fetch, signal };\n }\n\n this.beforeFetch({ target, requestInit });\n return (config.fetcher??fetch)(target, requestInit)\n .then(async it => {\n // console.log('httpFetch!!!', Array.from(it.headers))\n this.afterFetch({ target: target as URL, requestInit }, it);\n // after proxy fetch\n // @ts-ignore\n const afterProxyData: AfterProxyFetchParams<any> = {\n fetch: { target: target as URL, requestInit },\n config: beforeData,\n response: it\n };\n afterProxyData.response = config?.afterProxyFetch ? await config.afterProxyFetch(afterProxyData) : it;\n afterProxyData.response = config?.skipGlobalAfterProxyFetch ? afterProxyData.response : await this.afterProxyFetch(afterProxyData);\n it = afterProxyData.response;\n config?.fetchResponseAfterCallBack?.(it, config);\n if (!config?.allowedResponseNotOk && !it.ok) {\n throw it;\n }\n const data = config?.hasResponseErrorChecker?.(it, config);\n if (data) {\n throw data;\n }\n return it;\n });\n }\n}\n", "import {\n HttpFetcher,\n HttpFetcherConfig,\n HttpFetcherRequest,\n HttpFetcherTarget,\n HttpResponseError,\n RequestInitType\n} from './HttpFetcher';\nimport { FetcherRequest } from './Fetcher';\n\nexport type HttpJsonFetcherConfig<CONFIG, RESPONSE> = HttpFetcherConfig<CONFIG> & {\n responseTransform?: 'text' | 'response' | ((response: Response) => Promise<RESPONSE>);\n};\nexport type RequestJsonInit = Omit<RequestInitType, 'body'> & { body?: any | null };\n// type RequestJsonInit = Omit<RequestInitType, 'body'>;\nexport type HttpAnyBodyFetcherConfig<C, R> = Omit<HttpJsonFetcherConfig<C, R>, 'fetch'> & { fetch?: RequestJsonInit };\n\n// export class HttpJsonResponseError<T = any> extends HttpResponseError {\n// }\n//\n// export const isHttpJsonResponseError = (data: any): data is HttpJsonResponseError => {\n// return data instanceof HttpJsonResponseError;\n// }\n// export type HttpJsonFetcherRequest<RESPONSE = Response, CONFIG = any, T = RESPONSE> = HttpFetcherRequest<HttpFetcherTarget, RESPONSE, HttpJsonFetcherConfig<CONFIG, RESPONSE>>;\nexport type HttpJsonFetcherRequest<RESPONSE = any, CONFIG = any, T = RESPONSE> = FetcherRequest<\n HttpFetcherTarget,\n RESPONSE,\n HttpJsonFetcherConfig<CONFIG, RESPONSE>,\n T\n>;\nexport type HttpJsonFetcherBodyAnyRequest<RESPONSE = any, CONFIG = any, T = RESPONSE> = FetcherRequest<\n HttpFetcherTarget,\n RESPONSE,\n HttpAnyBodyFetcherConfig<CONFIG, RESPONSE>,\n T\n>;\n\nexport class HttpJsonFetcher<CONFIG, PIPE extends { responseData?: any }> extends HttpFetcher<CONFIG, any, PIPE> {\n // config.config/config.config.fetch\uB97C \uC9C1\uC811 mutate\uD558\uBA74(\uC608\uC804\uCC98\uB7FC) \uAC19\uC740 config \uAC1D\uCCB4\uB97C \uC5EC\uB7EC\n // postJson/patchJson/putJson \uD638\uCD9C\uC774 \uB3D9\uC2DC\uC5D0 \uACF5\uC720\uD560 \uB54C \uC11C\uB85C\uC758 headers/body\uB97C \uB36E\uC5B4\uC4F0\uB294 \uB808\uC774\uC2A4\uAC00\n // \uC0DD\uAE34\uB2E4(HttpFetcher.get/post\uC758 method \uB808\uC774\uC2A4\uB791 \uAC19\uC740 \uBB38\uC81C). caller\uC758 \uAC1D\uCCB4\uB294 \uC548 \uAC74\uB4DC\uB9AC\uACE0,\n // \uC595\uC740 \uBCF5\uC0AC\uBCF8\uC744 \uB9CC\uB4E4\uC5B4\uC11C \uC0C8 config \uAC1D\uCCB4\uB97C \uB9AC\uD134\uD55C\uB2E4.\n private updateJsonFetchConfigAndData<RESPONSE, T = RESPONSE>(\n config: HttpJsonFetcherRequest<RESPONSE, CONFIG, T>\n ): HttpJsonFetcherRequest<RESPONSE, CONFIG, T> {\n const headers = {\n 'Content-Type': 'application/json',\n Accept: 'application/json, text/plain, */*'\n };\n const fetchInit: any = { ...config.config?.fetch };\n\n // \uAC1D\uCCB4 \uC2A4\uD504\uB808\uB4DC({...x})\uB294 Headers \uC778\uC2A4\uD134\uC2A4\uC5D0\uC11C \uC544\uBB34\uAC83\uB3C4 \uBABB \uBF51\uC544\uB0B8\uB2E4(\uB370\uC774\uD130\uAC00 \uB0B4\uBD80 \uC2AC\uB86F\uC5D0 \uC788\uC5B4\uC11C\n // \uC5F4\uAC70 \uAC00\uB2A5\uD55C \uC790\uAE30 \uD504\uB85C\uD37C\uD2F0\uAC00 \uC544\uB2D8) - Headers \uC778\uC2A4\uD134\uC2A4\uB098 [string,string][] \uD29C\uD50C\uC744 \uB118\uAE30\uBA74\n // \uD1B5\uC9F8\uB85C \uC0AC\uB77C\uC84C\uC5C8\uB2E4. Headers \uC0DD\uC131\uC790\uB294 \uC138 \uD615\uD0DC(plain object/Headers/tuple \uBC30\uC5F4) \uB2E4 \uBC1B\uC73C\uBBC0\uB85C\n // \uADF8\uAC78\uB85C \uBCD1\uD569\uD55C\uB2E4 - \uC0AC\uC6A9\uC790\uAC00 \uC900 \uD5E4\uB354\uAC00 JSON \uAE30\uBCF8\uAC12\uC744 \uB36E\uC5B4\uC4F0\uB294 \uC21C\uC11C(defaults -> user)\uB294 \uADF8\uB300\uB85C \uC720\uC9C0.\n const merged = new Headers(headers);\n if (fetchInit.headers) {\n new Headers(fetchInit.headers).forEach((value, key) => merged.set(key, value));\n }\n fetchInit.headers = merged;\n\n if (fetchInit.body && typeof fetchInit.body !== 'string') {\n fetchInit.body = JSON.stringify(fetchInit.body);\n }\n\n return { ...config, config: { ...config.config, fetch: fetchInit } };\n }\n\n get(config: HttpJsonFetcherRequest<any, CONFIG, Response> & { config: { responseTransform: 'response' } }): Promise<Response>;\n get(config: HttpJsonFetcherRequest<any, CONFIG, string> & { config: { responseTransform: 'text' } }): Promise<string>;\n get<RESPONSE, T = RESPONSE>(config: HttpJsonFetcherRequest<RESPONSE, CONFIG, T>): Promise<T>;\n get<RESPONSE, T = RESPONSE>(config: HttpJsonFetcherRequest<RESPONSE, CONFIG, T>): Promise<T> {\n return super.get(config);\n }\n\n delete(config: HttpJsonFetcherRequest<any, CONFIG, Response> & { config: { responseTransform: 'response' } }): Promise<Response>;\n delete(config: HttpJsonFetcherRequest<any, CONFIG, string> & { config: { responseTransform: 'text' } }): Promise<string>;\n delete<RESPONSE, T = RESPONSE>(config: HttpJsonFetcherRequest<RESPONSE, CONFIG, T>): Promise<T>;\n delete<RESPONSE, T = RESPONSE>(config: HttpJsonFetcherRequest<RESPONSE, CONFIG, T>): Promise<T> {\n return super.delete(config);\n }\n\n post(config: HttpJsonFetcherRequest<any, CONFIG, Response> & { config: { responseTransform: 'response' } }): Promise<Response>;\n post(config: HttpJsonFetcherRequest<any, CONFIG, string> & { config: { responseTransform: 'text' } }): Promise<string>;\n post<RESPONSE, T = RESPONSE>(config: HttpJsonFetcherRequest<RESPONSE, CONFIG, T>): Promise<T>;\n post<RESPONSE, T = RESPONSE>(config: HttpJsonFetcherRequest<RESPONSE, CONFIG, T>): Promise<T> {\n return super.post(config);\n }\n\n patch(config: HttpJsonFetcherRequest<any, CONFIG, Response> & { config: { responseTransform: 'response' } }): Promise<Response>;\n patch(config: HttpJsonFetcherRequest<any, CONFIG, string> & { config: { responseTransform: 'text' } }): Promise<string>;\n patch<RESPONSE, T = RESPONSE>(config: HttpJsonFetcherRequest<RESPONSE, CONFIG, T>): Promise<T>;\n patch<RESPONSE, T = RESPONSE>(config: HttpJsonFetcherRequest<RESPONSE, CONFIG, T>): Promise<T> {\n return super.patch(config);\n }\n\n put(config: HttpJsonFetcherRequest<any, CONFIG, Response> & { config: { responseTransform: 'response' } }): Promise<Response>;\n put(config: HttpJsonFetcherRequest<any, CONFIG, string> & { config: { responseTransform: 'text' } }): Promise<string>;\n put<RESPONSE, T = RESPONSE>(config: HttpJsonFetcherRequest<RESPONSE, CONFIG, T>): Promise<T>;\n put<RESPONSE, T = RESPONSE>(config: HttpJsonFetcherRequest<RESPONSE, CONFIG, T>): Promise<T> {\n return super.put(config);\n }\n\n head(config: HttpJsonFetcherRequest<any, CONFIG, Response> & { config: { responseTransform: 'response' } }): Promise<Response>;\n head(config: HttpJsonFetcherRequest<any, CONFIG, string> & { config: { responseTransform: 'text' } }): Promise<string>;\n head<RESPONSE, T = RESPONSE>(config: HttpJsonFetcherRequest<RESPONSE, CONFIG, T>): Promise<T>;\n head<RESPONSE, T = RESPONSE>(config: HttpJsonFetcherRequest<RESPONSE, CONFIG, T>): Promise<T> {\n return super.head(config);\n }\n\n postJson(config: HttpJsonFetcherBodyAnyRequest<any, CONFIG, Response> & { config: { responseTransform: 'response' } }): Promise<Response>;\n postJson(config: HttpJsonFetcherBodyAnyRequest<any, CONFIG, string> & { config: { responseTransform: 'text' } }): Promise<string>;\n postJson<RESPONSE, T = RESPONSE>(config: HttpJsonFetcherBodyAnyRequest<RESPONSE, CONFIG, T>): Promise<T>;\n postJson<RESPONSE, T = RESPONSE>(config: HttpJsonFetcherBodyAnyRequest<RESPONSE, CONFIG, T>): Promise<T> {\n return super.post(this.updateJsonFetchConfigAndData(config));\n }\n\n patchJson(config: HttpJsonFetcherBodyAnyRequest<any, CONFIG, Response> & { config: { responseTransform: 'response' } }): Promise<Response>;\n patchJson(config: HttpJsonFetcherBodyAnyRequest<any, CONFIG, string> & { config: { responseTransform: 'text' } }): Promise<string>;\n patchJson<RESPONSE, T = RESPONSE>(config: HttpJsonFetcherBodyAnyRequest<RESPONSE, CONFIG, T>): Promise<T>;\n patchJson<RESPONSE, T = RESPONSE>(config: HttpJsonFetcherBodyAnyRequest<RESPONSE, CONFIG, T>): Promise<T> {\n return super.patch(this.updateJsonFetchConfigAndData(config));\n }\n\n putJson(config: HttpJsonFetcherBodyAnyRequest<any, CONFIG, Response> & { config: { responseTransform: 'response' } }): Promise<Response>;\n putJson(config: HttpJsonFetcherBodyAnyRequest<any, CONFIG, string> & { config: { responseTransform: 'text' } }): Promise<string>;\n putJson<RESPONSE, T = RESPONSE>(config: HttpJsonFetcherBodyAnyRequest<RESPONSE, CONFIG, T>): Promise<T>;\n putJson<RESPONSE, T = RESPONSE>(config: HttpJsonFetcherBodyAnyRequest<RESPONSE, CONFIG, T>): Promise<T> {\n return super.put(this.updateJsonFetchConfigAndData(config));\n }\n\n protected async errorTransform(e: any): Promise<HttpResponseError> {\n const httpResponseError = new HttpResponseError();\n httpResponseError.error = e;\n if (e instanceof Response) {\n httpResponseError.response = e;\n try {\n httpResponseError.body = await e.clone().json();\n httpResponseError.message = e.statusText;\n } catch (parseError: any) {\n httpResponseError.body = parseError; // Store the parsing error\n httpResponseError.message = parseError.message; // Use parsing error message\n }\n } else {\n httpResponseError.body = e;\n httpResponseError.message = e.message;\n }\n return httpResponseError;\n }\n\n // protected execute(target: HttpFetcherTarget, config?: HttpJsonFetcherConfig<C, any>): Promise<any> {\n protected execute(fetcherRequest: FetcherRequest<HttpFetcherTarget, any, HttpJsonFetcherConfig<CONFIG, any>>): Promise<any> {\n\n return super.execute(fetcherRequest).then((response: Response) => {\n // fetch\uC5D0 \uC788\uB294 content-length\uB294 \uC11C\uBC84\uC5D0\uC11C \uBCF4\uB0B8\uAC12\uC774 0 \uC774\uC5EC\uB3C4 \uC790\uCCB4\uC801\uC73C\uB85C \uB530\uB85C \uD310\uB2E8\uD574\uC11C 0\uC774\uC0C1\uC774 \uB098\uC624\uB294\uACBD\uC6B0\uAC00 \uC788\uB2E4. \uADF8\uB9AC\uACE0 \uC11C\uBC84\uC5D0\uC11C\uC8FC\uB294 header\uAC12\uB3C4 \uBBFF\uAE34 \uC5B4\uB835\uB2E4.\n // const contentLength = response.headers.get('Content-Length');\n // const hasBody = contentLength && parseInt(contentLength, 10) > 0;\n // console.log('hgasbody', hasBody)\n const config = fetcherRequest.config as any;\n const transform = config?.responseTransform ?? (config?.bypassTransform ? 'response' : (config?.transformText ? 'text' : undefined));\n\n if (transform === 'response') {\n return response;\n } else if (transform === 'text') {\n return response?.text();\n } else if (typeof transform === 'function') {\n return transform(response);\n } else {\n return response?.text().then(it => {\n if ((it ?? '').length > 0) {\n return JSON.parse(it);\n }\n })\n }\n });\n }\n}\n", "import { Point2D } from './Point2D';\nimport { Rect } from './Rect';\nimport { Point2Ds } from './Point2Ds';\n\nexport class Ellipse extends Point2D {\n public radiusX: number;\n public radiusY: number;\n public rotation: number; // in radians\n public startAngle: number; // in radians\n public endAngle: number; // in radians\n\n constructor(x: number, y: number, radiusX: number, radiusY: number, rotation: number = 0, startAngle: number = 0, endAngle: number = 2 * Math.PI) {\n super(x, y);\n this.radiusX = radiusX;\n this.radiusY = radiusY;\n this.rotation = rotation;\n this.startAngle = startAngle;\n this.endAngle = endAngle;\n }\n\n isIn(point: Point2D): boolean {\n if (this.radiusX <= 0 || this.radiusY <= 0) {\n return false;\n }\n\n // 1. Translate point to ellipse's local coordinates\n const translatedX = point.x - this.x;\n const translatedY = point.y - this.y;\n\n // 2. Rotate the translated point backwards by the ellipse's rotation\n const cos = Math.cos(-this.rotation);\n const sin = Math.sin(-this.rotation);\n const localX = translatedX * cos - translatedY * sin;\n const localY = translatedX * sin + translatedY * cos;\n\n // 3. Check if the point is within the ellipse equation\n const isInsideEllipse = (localX * localX) / (this.radiusX * this.radiusX) + (localY * localY) / (this.radiusY * this.radiusY) <= 1;\n\n if (!isInsideEllipse) {\n return false;\n }\n\n // 4. Check if the point is within the start and end angles (for arcs)\n const angle = Math.atan2(localY, localX);\n\n // Normalize angle to be between 0 and 2*PI\n const normalizedAngle = angle < 0 ? angle + 2 * Math.PI : angle;\n\n if (this.startAngle < this.endAngle) {\n return normalizedAngle >= this.startAngle && normalizedAngle <= this.endAngle;\n } else { // For arcs that cross the 0-radian line (e.g., from 3/2 PI to 1/2 PI)\n return normalizedAngle >= this.startAngle || normalizedAngle <= this.endAngle;\n }\n }\n\n isOut(point: Point2D): boolean {\n return !this.isIn(point);\n }\n\n isOverlap(data: Point2D | Rect | Point2Ds | Ellipse): boolean {\n if (data instanceof Point2D) {\n return this.isIn(data);\n } else if (data instanceof Rect) {\n // This is a simplified check. For full accuracy, polygon-ellipse collision is needed.\n const rectAsPoints = new Point2Ds([data.leftTop, data.rightTop, data.rightBottom, data.leftBottom]);\n if (rectAsPoints.isOverlap(this)) return true;\n return this.toRect().isOverlap(data); // Check bounding boxes\n } else if (data instanceof Point2Ds) {\n return data.isOverlap(this);\n } else if ((data as any) instanceof Ellipse) {\n // This is a simplified check and doesn't handle all rotation cases perfectly.\n const distance = Math.sqrt(Math.pow(this.x - (data as Ellipse).x, 2) + Math.pow(this.y - (data as Ellipse).y, 2));\n const avgRadius1 = (this.radiusX + this.radiusY) / 2;\n const avgRadius2 = ((data as Ellipse).radiusX + (data as Ellipse).radiusY) / 2;\n return distance <= (avgRadius1 + avgRadius2);\n }\n return false;\n }\n\n toRect(): Rect {\n // Returns the axis-aligned bounding box for the ellipse (including rotation)\n if (this.rotation === 0) {\n return new Rect(this.x - this.radiusX, this.y - this.radiusY, this.radiusX * 2, this.radiusY * 2);\n }\n const angle = this.rotation;\n const cos = Math.cos(angle);\n const sin = Math.sin(angle);\n const w = this.radiusX;\n const h = this.radiusY;\n\n const extentsX = Math.sqrt(w * w * cos * cos + h * h * sin * sin);\n const extentsY = Math.sqrt(w * w * sin * sin + h * h * cos * cos);\n\n return new Rect(this.x - extentsX, this.y - extentsY, extentsX * 2, extentsY * 2);\n }\n}\n", "import { Point2D } from './Point2D';\nimport { Rect } from './Rect';\nimport { Ellipse } from './Ellipse';\n\nexport class Point2Ds {\n public points: Point2D[];\n\n constructor(points: Point2D[]) {\n this.points = points;\n }\n\n copy() {\n return new Point2Ds(this.points.map(p => p.copy()));\n }\n\n isIn(point: Point2D): boolean {\n let isInside = false;\n const n = this.points.length;\n\n for (let i = 0, j = n - 1; i < n; j = i++) {\n const p1 = this.points[i];\n const p2 = this.points[j];\n\n const intersect = ((p1.y > point.y) !== (p2.y > point.y))\n && (point.x < (p2.x - p1.x) * (point.y - p1.y) / (p2.y - p1.y) + p1.x);\n\n if (intersect) {\n isInside = !isInside;\n }\n }\n\n return isInside;\n }\n\n isOut(point: Point2D): boolean {\n return !this.isIn(point);\n }\n\n isOverlap(data: Point2D | Point2Ds | Rect | Ellipse): boolean {\n if (data instanceof Point2D) {\n return this.isIn(data);\n }\n\n if (data instanceof Ellipse) {\n return data.isOverlap(this);\n }\n\n const targetPoints = data instanceof Rect ? [data.leftTop, data.rightTop, data.rightBottom, data.leftBottom] : data.points;\n\n for (const point of targetPoints) {\n if (this.isIn(point)) {\n return true;\n }\n }\n\n for (const point of this.points) {\n if (data.isIn(point)) {\n return true;\n }\n }\n\n return false;\n }\n\n toRect(): Rect {\n if (this.points.length === 0) {\n return new Rect(0, 0, 0, 0);\n }\n\n let minX = this.points[0].x;\n let minY = this.points[0].y;\n let maxX = this.points[0].x;\n let maxY = this.points[0].y;\n\n for (let i = 1; i < this.points.length; i++) {\n const p = this.points[i];\n minX = Math.min(minX, p.x);\n minY = Math.min(minY, p.y);\n maxX = Math.max(maxX, p.x);\n maxY = Math.max(maxY, p.y);\n }\n\n return new Rect(minX, minY, maxX - minX, maxY - minY);\n }\n}", "export type Point2DType = {\n x: number;\n y: number;\n};\nexport const isPoint2DType = (obj: any): obj is Point2DType =>\n !!obj && typeof obj.x === 'number' && typeof obj.y === 'number';", "import { Point3D } from './Point3D';\nimport { Rect } from './Rect';\n\nexport class Point3Ds {\n public points: Point3D[];\n\n constructor(points: Point3D[]) {\n this.points = points;\n }\n\n copy(): Point3Ds {\n return new Point3Ds(this.points.map(p => p.copy()));\n }\n\n /**\n * Calculates the Axis-Aligned Bounding Box of the points.\n * An Axis-Aligned Bounding Box is the smallest box that contains all the points, aligned with the coordinate axes.\n * @returns An object with the minimum and maximum corner points of the box.\n */\n getAxisAlignedBoundingBox(): { min: Point3D, max: Point3D } {\n if (this.points.length === 0) {\n return { min: new Point3D(0, 0, 0), max: new Point3D(0, 0, 0) };\n }\n\n const min = this.points[0].copy();\n const max = this.points[0].copy();\n\n for (let i = 1; i < this.points.length; i++) {\n const p = this.points[i];\n min.x = Math.min(min.x, p.x);\n min.y = Math.min(min.y, p.y);\n min.z = Math.min(min.z, p.z);\n max.x = Math.max(max.x, p.x);\n max.y = Math.max(max.y, p.y);\n max.z = Math.max(max.z, p.z);\n }\n\n return { min, max };\n }\n\n /**\n * Checks if a point is inside the Axis-Aligned Bounding Box of this set of points.\n * Note: This is a check against the bounding box, not the exact shape of the polyhedron.\n * @param point The point to check.\n * @returns True if the point is inside the bounding box, false otherwise.\n */\n isIn(point: Point3D): boolean {\n if (this.points.length === 0) {\n return false;\n }\n const { min, max } = this.getAxisAlignedBoundingBox();\n return (\n point.x >= min.x && point.x <= max.x &&\n point.y >= min.y && point.y <= max.y &&\n point.z >= min.z && point.z <= max.z\n );\n }\n\n /**\n * Checks if a point is outside the Axis-Aligned Bounding Box of this set of points.\n * @param point The point to check.\n * @returns True if the point is outside the bounding box, false otherwise.\n */\n isOut(point: Point3D): boolean {\n return !this.isIn(point);\n }\n\n /**\n * Checks for overlap with another 3D object based on their Axis-Aligned Bounding Boxes.\n * @param data The object to check for overlap with (Point3D or Point3Ds).\n * @returns True if their bounding boxes overlap, false otherwise.\n */\n isOverlap(data: Point3D | Point3Ds): boolean {\n if (data instanceof Point3D) {\n return this.isIn(data);\n }\n\n if (data instanceof Point3Ds) {\n if (this.points.length === 0 || data.points.length === 0) {\n return false;\n }\n const a = this.getAxisAlignedBoundingBox();\n const b = data.getAxisAlignedBoundingBox();\n\n // Check for overlap on each axis\n const xOverlap = a.min.x <= b.max.x && a.max.x >= b.min.x;\n const yOverlap = a.min.y <= b.max.y && a.max.y >= b.min.y;\n const zOverlap = a.min.z <= b.max.z && a.max.z >= b.min.z;\n\n return xOverlap && yOverlap && zOverlap;\n }\n\n return false;\n }\n\n toRect(): Rect {\n if (this.points.length === 0) {\n return new Rect(0, 0, 0, 0);\n }\n\n const { min, max } = this.getAxisAlignedBoundingBox();\n return new Rect(min.x, min.y, max.x - min.x, max.y - min.y);\n }\n}\n", "export type Point3DType = {\n x: number;\n y: number;\n z: number;\n};\nexport const isPoint3DType = (obj: any): obj is Point3DType =>\n !!obj && typeof obj.x === 'number' && typeof obj.y === 'number' && typeof obj.z === 'number';", "import { Point2D } from './Point2D';\nimport { Rect } from './Rect';\nimport { Ellipse } from './Ellipse';\nimport { Point2Ds } from './Point2Ds';\n\n/**\n * Represents a polygon, a closed shape defined by a sequence of connected points.\n * This class uses the Point2Ds class for its core geometric calculations.\n */\nexport class Polygon {\n /**\n * An instance of Point2Ds used for geometric calculations.\n * @private\n */\n private _point2ds: Point2Ds;\n\n /**\n * Creates a new Polygon instance.\n * @param points An array of Point2D objects representing the vertices of the polygon in order.\n */\n constructor(points: Point2D[]) {\n this._point2ds = new Point2Ds(points);\n }\n\n get point2ds() {\n return this._point2ds.points;\n }\n\n\n /**\n * Creates a deep copy of this polygon.\n * @returns A new Polygon instance with the same points.\n */\n copy(): Polygon {\n return new Polygon(this._point2ds.points.map(p => p.copy()));\n }\n\n /**\n * Checks if a given point is inside the polygon.\n * Uses the ray-casting algorithm.\n * @param point The point to check.\n * @returns True if the point is inside the polygon, false otherwise.\n */\n isIn(point: Point2D): boolean {\n return this._point2ds.isIn(point);\n }\n\n /**\n * Checks if a given point is outside the polygon.\n * @param point The point to check.\n * @returns True if the point is outside the polygon, false otherwise.\n */\n isOut(point: Point2D): boolean {\n return !this.isIn(point);\n }\n\n /**\n * Checks if this polygon overlaps with another geometric shape.\n * This check is based on vertex containment and may not cover all edge-crossing scenarios without vertex containment.\n * @param data The geometric shape to check for overlap with (Point2D, Rect, Ellipse, or another Polygon).\n * @returns True if the shapes overlap, false otherwise.\n */\n isOverlap(data: Point2D | Rect | Ellipse | Polygon): boolean {\n if (data instanceof Polygon) {\n // Check for overlap with another Polygon by using their underlying Point2Ds instances.\n return this._point2ds.isOverlap(data._point2ds);\n }\n // For other shapes, delegate the check to the Point2Ds instance.\n return this._point2ds.isOverlap(data);\n }\n\n /**\n * Calculates the axis-aligned bounding box of the polygon.\n * @returns A Rect representing the smallest rectangle that contains all vertices of the polygon.\n */\n toRect(): Rect {\n return this._point2ds.toRect();\n }\n}\n", "export class Scalar {\n private _value: number;\n\n constructor(value: number = 0) {\n this._value = value;\n }\n\n // \uAC12 \uAC00\uC838\uC624\uAE30\n get value(): number {\n return this._value;\n }\n\n // \uAC12 \uC124\uC815\uD558\uAE30\n set value(value: number) {\n this._value = value;\n }\n\n // \uAC12 \uC9C1\uC811 \uC124\uC815\n public set(value: number): Scalar {\n this._value = value;\n return this;\n }\n\n // \uAC12 \uBCF5\uC0AC\uD574\uC11C \uC0C8 \uC778\uC2A4\uD134\uC2A4 \uBC18\uD658\n public get(): Scalar {\n return new Scalar(this._value);\n }\n\n // \uB367\uC148\n public add(value: number | Scalar): Scalar {\n if (value instanceof Scalar) {\n this._value += value.value;\n } else {\n this._value += value;\n }\n return this;\n }\n\n public static add(s1: Scalar, s2: Scalar): Scalar {\n return new Scalar(s1.value + s2.value);\n }\n\n // \uBE84\uC148\n public sub(value: number | Scalar): Scalar {\n if (value instanceof Scalar) {\n this._value -= value.value;\n } else {\n this._value -= value;\n }\n return this;\n }\n\n public static sub(s1: Scalar, s2: Scalar): Scalar {\n return new Scalar(s1.value - s2.value);\n }\n\n // \uACF1\uC148\n public mult(value: number | Scalar): Scalar {\n if (value instanceof Scalar) {\n this._value *= value.value;\n } else {\n this._value *= value;\n }\n return this;\n }\n\n public static mult(s1: Scalar, s2: Scalar): Scalar {\n return new Scalar(s1.value * s2.value);\n }\n\n // \uB098\uB217\uC148\n public div(value: number | Scalar): Scalar {\n if (value instanceof Scalar) {\n if (value.value === 0) throw new Error(\"Division by zero\");\n this._value /= value.value;\n } else {\n if (value === 0) throw new Error(\"Division by zero\");\n this._value /= value;\n }\n return this;\n }\n\n public static div(s1: Scalar, s2: Scalar): Scalar {\n if (s2.value === 0) throw new Error(\"Division by zero\");\n return new Scalar(s1.value / s2.value);\n }\n\n // \uC808\uB313\uAC12\n public abs(): Scalar {\n this._value = Math.abs(this._value);\n return this;\n }\n\n public static abs(s: Scalar): Scalar {\n return new Scalar(Math.abs(s.value));\n }\n\n // \uBB38\uC790\uC5F4\uB85C \uBCC0\uD658\n public toString(): string {\n return `${this._value}`;\n }\n\n // \uC22B\uC790\uB85C \uBCC0\uD658\n public toNumber(): number {\n return this._value;\n }\n}", "import { Polygon } from './Polygon';\nimport { Rect } from './Rect';\nimport { Point2D } from './Point2D';\nimport { Ellipse } from './Ellipse';\n\n/**\n * Manages a collection of Polygon objects, providing methods for aggregation and spatial queries.\n * It also maintains an overall bounding box for the contained polygons.\n */\nexport class WrapPolygons {\n private _polygons: Set<Polygon>;\n private _x: number;\n private _y: number;\n private _width: number;\n private _height: number;\n private _initialX: number; // Added\n private _initialY: number; // Added\n private _initialWidth: number; // Added\n private _initialHeight: number; // Added\n\n /**\n * Creates a new WrapPolygons instance.\n * @param x The initial x-coordinate of the overall bounding box.\n * @param y The initial y-coordinate of the overall bounding box.\n * @param width The initial width of the overall bounding box.\n * @param height The initial height of the overall bounding box.\n * @param polygons An array of Polygon objects to initialize the collection.\n */\n constructor(\n x: number = 0,\n y: number = 0,\n width: number = 0,\n height: number = 0,\n polygons: Polygon[] = []\n ) {\n this._polygons = new Set(polygons);\n\n // Store the initial bounds provided\n this._initialX = x; // Stored\n this._initialY = y; // Stored\n this._initialWidth = width; // Stored\n this._initialHeight = height; // Stored\n\n // Initialize _x, _y, _width, _height with the provided initial bounds.\n // These will be updated by _calculateOverallBounds based on actual polygons.\n this._x = x;\n this._y = y;\n this._width = width;\n this._height = height;\n\n // Calculate and set the initial overall bounds based on the provided polygons and initial bounds.\n this._calculateOverallBounds();\n }\n\n get polygons() {\n return Array.from(this._polygons.values());\n }\n\n get x() {\n return this._x;\n }\n\n set x(value: number) {\n if (this._x === value) return;\n const offsetX = value - this._x;\n this._x = value;\n this._applyTranslationToPoints(offsetX, 0);\n }\n\n get y() {\n return this._y;\n }\n\n set y(value: number) {\n if (this._y === value) return;\n const offsetY = value - this._y;\n this._y = value;\n this._applyTranslationToPoints(0, offsetY);\n }\n\n get width() {\n return this._width;\n }\n\n set width(value: number) {\n if (this._width === value) return;\n const oldWidth = this._width;\n this._width = value;\n\n if (oldWidth === 0) {\n console.warn(\"Cannot scale polygons proportionally if old width was 0.\");\n return;\n }\n const scaleX = this._width / oldWidth;\n this._applyScalingToPoints(scaleX, 1, this._x, this._y);\n }\n\n get height() {\n return this._height;\n }\n\n set height(value: number) {\n if (this._height === value) return;\n const oldHeight = this._height;\n this._height = value;\n\n if (oldHeight === 0) {\n console.warn(\"Cannot scale polygons proportionally if old height was 0.\");\n return;\n }\n const scaleY = this._height / oldHeight;\n this._applyScalingToPoints(1, scaleY, this._x, this._y);\n }\n\n /**\n * Recalculates the overall bounding box (x, y, width, height) of all contained polygons.\n * This method should be called after adding or removing polygons if the bounds need to be updated.\n * @private\n */\n private _calculateOverallBounds(): void {\n if (this.polygons.length === 0) {\n // If no polygons, revert to initial bounds\n this._x = this._initialX;\n this._y = this._initialY;\n this._width = this._initialWidth;\n this._height = this._initialHeight;\n return;\n }\n\n let minX = Infinity;\n let minY = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n\n for (const polygon of this.polygons) {\n const rect = polygon.toRect();\n minX = Math.min(minX, rect.x);\n minY = Math.min(minY, rect.y);\n maxX = Math.max(maxX, rect.x + rect.width);\n maxY = Math.max(maxY, rect.y + rect.height);\n }\n\n // Ensure the bounds are at least as large as the initial bounds\n minX = Math.min(minX, this._initialX);\n minY = Math.min(minY, this._initialY);\n maxX = Math.max(maxX, this._initialX + this._initialWidth);\n maxY = Math.max(maxY, this._initialY + this._initialHeight);\n\n this._x = minX;\n this._y = minY;\n this._width = maxX - minX;\n this._height = maxY - minY;\n }\n\n /**\n * Applies translation to all Point2D objects within the polygons.\n * @param offsetX The amount to translate along the x-axis.\n * @param offsetY The amount to translate along the y-axis.\n * @private\n */\n private _applyTranslationToPoints(offsetX: number, offsetY: number): void {\n if (offsetX === 0 && offsetY === 0) return;\n for (const polygon of Array.from(this.polygons)) {\n // Assuming Polygon has a private 'point2ds' property which is a Point2ds object\n // And Point2ds has a 'points' array of Point2D objects\n for (const point of polygon['point2ds']) {\n point.x += offsetX;\n point.y += offsetY;\n }\n }\n }\n\n /**\n * Applies scaling to all Point2D objects within the polygons relative to a given origin.\n * @param scaleX The scaling factor along the x-axis.\n * @param scaleY The scaling factor along the y-axis.\n * @param originX The x-coordinate of the scaling origin.\n * @param originY The y-coordinate of the scaling origin.\n * @private\n */\n private _applyScalingToPoints(scaleX: number, scaleY: number, originX: number, originY: number): void {\n if (scaleX === 1 && scaleY === 1) return;\n for (const polygon of Array.from(this.polygons)) {\n for (const point of polygon['point2ds']) {\n // Translate point so origin is at (0,0)\n const translatedX = point.x - originX;\n const translatedY = point.y - originY;\n\n // Scale\n const scaledX = translatedX * scaleX;\n const scaledY = translatedY * scaleY;\n\n // Translate back\n point.x = scaledX + originX;\n point.y = scaledY + originY;\n }\n }\n }\n\n /**\n * Adds one or more polygons to the collection and updates the overall bounds.\n * @param newPolygons The Polygon objects to add. \n */\n add(...newPolygons: Polygon[]): void {\n newPolygons.forEach(polygon => this._polygons.add(polygon));\n this._calculateOverallBounds();\n }\n\n /**\n * Removes a specific polygon from the collection and updates the overall bounds.\n * @param polygonToRemove The Polygon object to remove.\n */\n remove(polygonToRemove: Polygon): void {\n if (this._polygons.delete(polygonToRemove)) {\n this._calculateOverallBounds();\n }\n }\n\n /**\n * Creates a deep copy of this WrapPolygons instance, including copies of all contained polygons.\n * @returns A new WrapPolygons instance.\n */\n copy(): WrapPolygons {\n return new WrapPolygons(\n this._initialX,\n this._initialY,\n this._initialWidth,\n this._initialHeight,\n Array.from(this.polygons).map(p => p.copy())\n );\n }\n\n /**\n * Checks if a given point is inside any of the polygons in the collection.\n * @param point The point to check.\n * @returns True if the point is inside at least one polygon, false otherwise.\n */\n isIn(point: Point2D): boolean {\n for (const polygon of Array.from(this.polygons)) {\n if (polygon.isIn(point)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Checks if a given point is outside all polygons in the collection.\n * @param point The point to check.\n * @returns True if the point is outside all polygons, false otherwise.\n */\n isOut(point: Point2D): boolean {\n return !this.isIn(point);\n }\n\n /**\n * Checks for overlap between this collection of polygons and another geometric shape.\n * @param data The geometric shape to check for overlap with (Point2D, Rect, Ellipse, or another WrapPolygons).\n * @returns True if any polygon in the collection overlaps with the given shape, false otherwise.\n */\n isOverlap(data: Point2D | Rect | Ellipse | WrapPolygons): boolean {\n if (data instanceof Point2D) {\n return this.isIn(data);\n }\n\n if (data instanceof WrapPolygons) {\n for (const p1 of Array.from(this.polygons)) {\n for (const p2 of Array.from(data.polygons)) {\n if (p1.isOverlap(p2)) {\n return true;\n }\n }\n }\n return false;\n }\n\n // For other shapes, check each polygon individually\n for (const polygon of Array.from(this.polygons)) {\n if (polygon.isOverlap(data)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Returns a Rect representing the overall axis-aligned bounding box of all polygons in the collection.\n * @returns A Rect object.\n */\n toRect(): Rect {\n return new Rect(this.x, this.y, this.width, this.height);\n }\n\n /**\n * Returns a Rect representing the overall axis-aligned bounding box of only the contained polygons,\n * without considering the initial bounds of the WrapPolygons instance.\n * @returns A Rect object. Returns a Rect at (0,0) with 0 width/height if no polygons are present.\n */\n getContainedPolygonsOverallBounds(): Rect {\n if (this._polygons.size === 0) {\n return new Rect(0, 0, 0, 0);\n }\n\n let minX = Infinity;\n let minY = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n\n for (const polygon of Array.from(this._polygons)) {\n const rect = polygon.toRect();\n minX = Math.min(minX, rect.x);\n minY = Math.min(minY, rect.y);\n maxX = Math.max(maxX, rect.x + rect.width);\n maxY = Math.max(maxY, rect.y + rect.height);\n }\n\n return new Rect(minX, minY, maxX - minX, maxY - minY);\n }\n\n /**\n * Filters the polygons in the collection, returning a new WrapPolygons instance\n * containing only those polygons that are entirely contained within the target Rect.\n * @param targetRect The Rect to check containment against.\n * @returns A new WrapPolygons instance with filtered polygons.\n */\n filterPolygonsIn(targetRect: Rect): WrapPolygons {\n const filtered = Array.from(this.polygons).filter(p => targetRect.isIn(p.toRect())); // Simplified: checks bounding box containment\n return new WrapPolygons(\n this._initialX,\n this._initialY,\n this._initialWidth,\n this._initialHeight,\n filtered\n );\n }\n\n /**\n * Filters the polygons in the collection, returning a new WrapPolygons instance\n * containing only those polygons that do not overlap with the target Rect.\n * @param targetRect The Rect to check non-overlap against.\n * @returns A new WrapPolygons instance with filtered polygons.\n */\n filterPolygonsOut(targetRect: Rect): WrapPolygons {\n const filtered = Array.from(this.polygons).filter(p => !p.isOverlap(targetRect));\n return new WrapPolygons(\n this._initialX,\n this._initialY,\n this._initialWidth,\n this._initialHeight,\n filtered\n );\n }\n\n /**\n * Filters the polygons in the collection, returning a new WrapPolygons instance\n * containing only those polygons that overlap with the target Rect.\n * @param targetRect The Rect to check overlap against.\n * @returns A new WrapPolygons instance with filtered polygons.\n */\n filterPolygonsOverlap(targetRect: Rect): WrapPolygons {\n const filtered = Array.from(this.polygons).filter(p => p.isOverlap(targetRect));\n return new WrapPolygons(\n this._initialX,\n this._initialY,\n this._initialWidth,\n this._initialHeight,\n filtered\n );\n }\n\n /**\n * Merges a new polygon with existing polygons in the collection if they overlap or are within a certain proximity.\n * If no overlap/proximity is found, the new polygon is simply added.\n * @param newPolygon The Polygon to merge or add. \n * @param mergeThresholdPx The maximum distance (in pixels) for polygons to be considered for merging. Default is 0.\n */\n merge(newPolygon: Polygon, mergeThresholdPx: number = 0): boolean {\n const newPolygonRect = newPolygon.toRect();\n // Expand the new polygon's bounding box by the threshold for proximity check\n const expandedNewPolygonRect = new Rect(\n newPolygonRect.x - mergeThresholdPx,\n newPolygonRect.y - mergeThresholdPx,\n newPolygonRect.width + (2 * mergeThresholdPx),\n newPolygonRect.height + (2 * mergeThresholdPx)\n );\n\n let merged = false;\n const polygonsToMerge: Polygon[] = [];\n const remainingPolygons: Polygon[] = [];\n\n // Find all existing polygons that overlap with the expanded newPolygonRect\n for (const existingPolygon of Array.from(this.polygons)) {\n if (existingPolygon.isOverlap(expandedNewPolygonRect)) {\n polygonsToMerge.push(existingPolygon);\n } else {\n remainingPolygons.push(existingPolygon);\n }\n }\n\n if (polygonsToMerge.length > 0) {\n // If there are polygons to merge, combine all their points with the newPolygon's points\n let allPoints: Point2D[] = [];\n // Add points from the new polygon\n // Accessing private point2ds directly for its points array\n allPoints.push(...newPolygon['point2ds']);\n\n // Add points from all overlapping existing polygons\n for (const p of polygonsToMerge) {\n allPoints.push(...p['point2ds']);\n }\n\n // Create a new Polygon from the combined points\n // Note: This simple combination of points might not result in a geometrically correct union\n // for complex polygons (e.g., self-intersections, holes).\n // For a robust solution, a dedicated polygon union algorithm would be needed.\n const combinedPolygon = new Polygon(allPoints);\n\n // Clear existing polygons and add the new combined one\n this._polygons.clear();\n this.add(...remainingPolygons, combinedPolygon); // Add remaining and the new combined polygon\n merged = true;\n } else {\n // No overlap/proximity, just add the new polygon\n this.add(newPolygon);\n }\n\n this._calculateOverallBounds(); // Recalculate overall bounds after merge/add\n return merged;\n }\n}", "import { Rect } from './Rect';\nimport { SizeType } from './SizeType';\nimport { ArrayUtils } from '../array/ArrayUtils';\nimport { Point2D } from './Point2D';\nimport { Ellipse } from './Ellipse';\n\nexport class WrapRects {\n public rects: Set<Rect>;\n private _x: number;\n private _y: number;\n private _width: number;\n private _height: number;\n private _initialX: number;\n private _initialY: number;\n private _initialWidth: number;\n private _initialHeight: number;\n\n constructor(x: number, y: number, width: number, height: number, rects: Rect[] = []) {\n this._initialX = x;\n this._initialY = y;\n this._initialWidth = width;\n this._initialHeight = height;\n\n // Initialize _x, _y, _width, _height with the provided initial bounds.\n // These will be updated by _updateContentBounds based on actual rects.\n this._x = x;\n this._y = y;\n this._width = width;\n this._height = height;\n\n this.rects = new Set();\n // Add rects directly without transformation in the constructor\n rects.forEach(rect => this.rects.add(rect));\n\n // Ensure the overall bounds are correctly set after initial rects are processed\n // This will calculate the actual bounds of the contained rects and ensure they are not smaller than initial bounds.\n const currentOverallBounds = this._updateContentBounds();\n this._x = currentOverallBounds.x;\n this._y = currentOverallBounds.y;\n this._width = currentOverallBounds.width;\n this._height = currentOverallBounds.height;\n }\n\n private _updateContentBounds(): Rect {\n if (this.rects.size === 0) {\n // If no rects, revert to initial bounds\n return new Rect(this._initialX, this._initialY, this._initialWidth, this._initialHeight);\n }\n\n let minX = Infinity;\n let minY = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n\n for (const r of Array.from(this.rects)) {\n minX = Math.min(minX, r.x);\n minY = Math.min(minY, r.y);\n maxX = Math.max(maxX, r.x + r.width);\n maxY = Math.max(maxY, r.y + r.height);\n }\n\n // Ensure the bounds are at least as large as the initial bounds\n minX = Math.min(minX, this._initialX);\n minY = Math.min(minY, this._initialY);\n maxX = Math.max(maxX, this._initialX + this._initialWidth);\n maxY = Math.max(maxY, this._initialY + this._initialHeight);\n\n return new Rect(minX, minY, maxX - minX, maxY - minY);\n }\n\n get x() {\n return this._x;\n }\n\n set x(value: number) {\n if (this._x === value) return;\n const offsetX = value - this._x;\n this._x = value;\n this._applyTranslationToRects(offsetX, 0);\n }\n\n get y() {\n return this._y;\n }\n\n set y(value: number) {\n if (this._y === value) return;\n const offsetY = value - this._y;\n this._y = value;\n this._applyTranslationToRects(0, offsetY);\n }\n\n get width() {\n return this._width;\n }\n\n set width(value: number) {\n if (this._width === value) return;\n const oldWidth = this._width;\n this._width = value;\n\n if (oldWidth === 0) {\n console.warn(\"Cannot scale rects proportionally if old width was 0.\");\n return;\n }\n const scaleX = this._width / oldWidth;\n this._applyScalingToRects(scaleX, 1, this._x, this._y);\n }\n\n get height() {\n return this._height;\n }\n\n set height(value: number) {\n if (this._height === value) return;\n const oldHeight = this._height;\n this._height = value;\n\n if (oldHeight === 0) {\n console.warn(\"Cannot scale rects proportionally if old height was 0.\");\n return;\n }\n const scaleY = this._height / oldHeight;\n this._applyScalingToRects(1, scaleY, this._x, this._y);\n }\n\n private _applyTranslationToRects(offsetX: number, offsetY: number): void {\n if (offsetX === 0 && offsetY === 0) return;\n for (const rect of Array.from(this.rects)) {\n rect.x += offsetX;\n rect.y += offsetY;\n }\n }\n\n private _applyScalingToRects(scaleX: number, scaleY: number, originX: number, originY: number): void {\n if (scaleX === 1 && scaleY === 1) return;\n for (const rect of Array.from(this.rects)) {\n // Translate rect so origin is at (0,0)\n const translatedX = rect.x - originX;\n const translatedY = rect.y - originY;\n\n // Scale position\n const scaledX = translatedX * scaleX;\n const scaledY = translatedY * scaleY;\n\n // Scale dimensions\n rect.width *= scaleX;\n rect.height *= scaleY;\n\n // Translate back\n rect.x = scaledX + originX;\n rect.y = scaledY + originY;\n }\n }\n\n add(...newRects: Rect[]): void {\n newRects.forEach(rect => this.rects.add(rect));\n // Note: _updateContentBounds now only calculates and returns the bounds, it doesn't set this.x,y,width,height\n // The setters for x,y,width,height are responsible for applying transformations to internal rects.\n // So, after adding new rects, we need to ensure the overall bounds are updated.\n const currentOverallBounds = this._updateContentBounds();\n this._x = currentOverallBounds.x;\n this._y = currentOverallBounds.y;\n this._width = currentOverallBounds.width;\n this._height = currentOverallBounds.height;\n }\n\n remove(rectToRemove: Rect): void {\n if (this.rects.delete(rectToRemove)) {\n const currentOverallBounds = this._updateContentBounds();\n this._x = currentOverallBounds.x;\n this._y = currentOverallBounds.y;\n this._width = currentOverallBounds.width;\n this._height = currentOverallBounds.height;\n }\n }\n\n getContainedRectsOverallBounds(): Rect {\n if (this.rects.size === 0) {\n return new Rect(0, 0, 0, 0);\n }\n\n let minX = Infinity;\n let minY = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n\n for (const r of Array.from(this.rects)) {\n minX = Math.min(minX, r.x);\n minY = Math.min(minY, r.y);\n maxX = Math.max(maxX, r.x + r.width);\n maxY = Math.max(maxY, r.y + r.height);\n }\n\n return new Rect(minX, minY, maxX - minX, maxY - minY);\n }\n\n copy(): WrapRects {\n return new WrapRects(\n this._initialX,\n this._initialY,\n this._initialWidth,\n this._initialHeight,\n Array.from(this.rects).map(r => r.copy())\n );\n }\n\n // \uC815\uD655\uD558\uAC8C \uB098\uC758 \uC548\uCABD\uC5D0 \uC11C\uB9CC \uC788\uB294\uAC70\n toFilterRectsIn(targetRect: Rect): WrapRects {\n const filteredRects = Array.from(this.rects).filter(r => targetRect.isIn(r));\n return new WrapRects(\n this._initialX,\n this._initialY,\n this._initialWidth,\n this._initialHeight,\n filteredRects\n );\n }\n\n toFilterRectsOut(targetRect: Rect): WrapRects {\n const filteredRects = Array.from(this.rects).filter(r => !targetRect.isOverlap(r));\n return new WrapRects(\n this._initialX,\n this._initialY,\n this._initialWidth,\n this._initialHeight,\n filteredRects\n );\n }\n\n // \uB0B4\uAC00 \uD3EC\uD568\uD55C\uACF3\uC5D0 \uACB9\uCCD0\uC788\uB294\uAC70\n toFilterRectsOverlap(targetRect: Rect): WrapRects {\n const filteredRects = Array.from(this.rects).filter(r => targetRect.isOverlap(r));\n return new WrapRects(\n this._initialX,\n this._initialY,\n this._initialWidth,\n this._initialHeight,\n filteredRects\n );\n }\n\n findEmptySpace(size: SizeType, searchArea?: Rect): Rect | null {\n const bounds = searchArea || new Rect(this.x, this.y, this.width, this.height);\n const step = 1; // Check every 1 unit\n\n for (let y = bounds.y; y < bounds.y + bounds.height - size.height; y += step) {\n for (let x = bounds.x; x < bounds.x + bounds.width - size.width; x += step) {\n const candidateRect = new Rect(x, y, size.width, size.height);\n let overlaps = false;\n for (const existingRect of Array.from(this.rects)) {\n if (candidateRect.isOverlap(existingRect)) {\n overlaps = true;\n break;\n }\n }\n if (!overlaps) {\n return candidateRect;\n }\n }\n }\n return null;\n }\n\n findRandomEmptySpace(size: SizeType, searchArea?: Rect, maxAttempts: number = 100): Rect | null {\n const bounds = searchArea || new Rect(this.x, this.y, this.width, this.height);\n\n for (let i = 0; i < maxAttempts; i++) {\n const randomX = Math.random() * (bounds.width - size.width) + bounds.x;\n const randomY = Math.random() * (bounds.height - size.height) + bounds.y;\n const candidateRect = new Rect(randomX, randomY, size.width, size.height);\n\n let overlaps = false;\n for (const existingRect of Array.from(this.rects.values())) {\n if (candidateRect.isOverlap(existingRect)) {\n overlaps = true;\n break;\n }\n }\n if (!overlaps) {\n return candidateRect;\n }\n }\n return null;\n }\n\n\n addRandomEmptySpaces(sizes: SizeType[], searchArea?: Rect, maxAttempts?: number) {\n const rs: Rect[] = [];\n sizes.forEach(size => {\n const emptySpace = this.findRandomEmptySpace(size, searchArea, maxAttempts);\n if (emptySpace) {\n this.add(emptySpace);\n rs.push(emptySpace);\n }\n });\n return rs;\n }\n\n addRandomEmptySpace(size: SizeType, searchArea?: Rect, maxAttempts?: number): Rect | null {\n const emptySpace = this.findRandomEmptySpace(size, searchArea, maxAttempts);\n if (emptySpace) {\n this.add(emptySpace);\n }\n return emptySpace;\n }\n\n addRandomSpace(size: SizeType, searchArea?: Rect): Rect {\n const bounds = searchArea || new Rect(this.x, this.y, this.width, this.height);\n const randomX = Math.random() * (bounds.width - size.width) + bounds.x;\n const randomY = Math.random() * (bounds.height - size.height) + bounds.y;\n const newRect = new Rect(randomX, randomY, size.width, size.height);\n this.add(newRect);\n return newRect;\n }\n\n isIn(point: Point2D): boolean {\n return this.toRect().isIn(point);\n }\n\n isOut(point: Point2D): boolean {\n return !this.isIn(point);\n }\n\n isOverlap(data: Point2D | Rect | Ellipse | WrapRects): boolean {\n if (data instanceof Point2D) {\n return this.isIn(data);\n }\n\n if (data instanceof Ellipse) {\n return data.isOverlap(this.toRect());\n }\n\n if (data instanceof Rect) {\n return this.toRect().isOverlap(data);\n }\n\n if (data instanceof WrapRects) {\n return this.toRect().isOverlap(data.toRect());\n }\n\n return false;\n }\n\n toRect(): Rect {\n return new Rect(this.x, this.y, this.width, this.height);\n }\n}", "import {Drawable} from \"../../../draw/Drawable\";\nimport { DrawData } from '../../../../entity/draw/DrawData';\n\nexport class LenGrid implements Drawable {\n\n draw(draw: DrawData) {\n const splitSize = 10;\n let wUnit = draw.canvas.width / splitSize;\n let hUnit = draw.canvas.height / splitSize;\n draw.context.strokeStyle = '#c8c8c8';\n draw.context.lineWidth = 0.5;\n for (let i = 0; i < splitSize; i++) {\n draw.context.beginPath();\n draw.context.moveTo(wUnit * i, 0);\n draw.context.lineTo(wUnit * i, draw.canvas.height);\n draw.context.stroke();\n }\n for (let i = 0; i < splitSize; i++) {\n draw.context.beginPath();\n draw.context.moveTo(0, hUnit * i);\n draw.context.lineTo(draw.canvas.width, hUnit * i);\n draw.context.stroke();\n }\n }\n}\n", "import {Drawable} from \"../../../draw/Drawable\";\nimport { DrawData } from '../../../../entity/draw/DrawData';\n\nexport class SizeGrid implements Drawable {\n\n\n constructor(public size = 10) {\n }\n\n draw(draw: DrawData) {\n let splitSize = draw.canvas.width / this.size;\n let wUnit = splitSize;\n let hUnit = splitSize;\n draw.context.strokeStyle = '#373737';\n draw.context.lineWidth = 0.5;\n draw.context.setLineDash([4, 2]);\n for (let i = 0; wUnit * i <= draw.canvas.width; i++) {\n draw.context.beginPath();\n draw.context.moveTo(wUnit * i, 0);\n draw.context.lineTo(wUnit * i, draw.canvas.height);\n draw.context.stroke();\n }\n for (let i = 0; hUnit * i <= draw.canvas.height; i++) {\n draw.context.beginPath();\n draw.context.moveTo(0, hUnit * i);\n draw.context.lineTo(draw.canvas.width, hUnit * i);\n draw.context.stroke();\n }\n }\n\n}\n", "import { Obj } from '../../object/obj/Obj';\nimport { Drawable } from '../../draw/Drawable';\nimport { DrawData } from '../../draw/DrawData';\n\nexport type RenderConfig = { disableReset?: boolean };\n\nexport abstract class RenderDrawObj<T = any> extends Obj implements Drawable {\n render(draw: DrawData<T>, config?:RenderConfig):void {\n try {\n // draw.reset();\n this.beforeDraw(draw);\n draw.context.save();\n if (!config?.disableReset) {\n draw.reset?.();\n }\n this.draw(draw);\n draw.context.restore();\n this.afterDraw(draw);\n } catch (e) {\n console.error('error!!',e);\n this.error(e);\n }\n }\n protected beforeDraw(draw: DrawData<T>): void {};\n abstract draw(draw: DrawData<T>): void ;\n protected afterDraw(draw: DrawData<T>): void {};\n protected error(e: any): void {\n\n };\n\n // constructor(canvas: HTMLCanvasElement, context: CanvasRenderingContext2D, public avaliablePlace: Rectangle = new Rectangle(new Point(0, 0), new Point(0, 0))) {\n // super(canvas, context);\n // }\n\n\n // get centerPoint(): Point {\n // return new Point();\n // }\n}\n", "import { DrawData } from '../../draw/DrawData';\nimport { RenderConfig, RenderDrawObj } from './RenderDrawObj';\nimport { MathUtil } from '../../../math/MathUtil';\nimport { Point3D } from '../../Point3D';\nimport { WithRequiredProperty } from '../../../types';\nimport { Obj } from './Obj';\nimport BezierConfig = MathUtil.BezierConfig;\nimport { ConvertUtils } from '../../../convert/ConvertUtils';\nimport { ObjectUtils } from '../../../object/ObjectUtils';\n\n// export type Calc = { name: string, start: number; end: number };\n// export type CalcResult = Calc & { value: number };\n\nexport type TargetPointType = { obj: Obj, bezierConfig?: MathUtil.BezierConfig; };\nexport type Calc = { value: number | number[], bezierConfig?: MathUtil.BezierConfig };\nexport type TransactionConfig = {\n // startPoint?: Point,\n targetPoint: TargetPointType | TargetPointType[];\n drawFps: number;\n deferTransaction?: boolean;\n animationIterationCount?: number | 'infinite';\n animationDirection?: 'normal' | 'reverse';\n startPoint?: Obj;\n startCalcs?: { [key: string]: number | number[]};\n calcs?: { [key: string]: Calc | Calc[] } //{name: string, value: number, bezierConfig?: MathUtil.BezierConfig}[][];\n // calcs?: Calc[];\n // fillMode?: 'backwards' ;\n\n};\n\ntype RequiredTransactionConfig = WithRequiredProperty<TransactionConfig, 'animationIterationCount' | 'animationDirection'>;\n\ntype TransactionControllConfig = {\n points: Obj[];\n calcs?: { [key: string]: number[] | number[][] };\n pointPositionIndex: number;\n transactionStartCalcs: { [key: string]: number | number[]};\n transactionStartPoint: Obj;\n config: RequiredTransactionConfig;\n};\n\n\n// TODO: \uB098\uC911\uC5D0 force\uB85C \uC704\uCE58\uC774\uB3D9\uD558\uB294\uAC70 \uD568\uC218\uD544\uC694\uD560\uC218\uB3C4.. transaction \uCDE8\uC18C\uC640\uD568\uAED8\nexport abstract class RenderTransactionDrawObj<T = any> extends RenderDrawObj<T> {\n private static readonly DEFAULT_BEZIER: BezierConfig = { p1x: 0.61, p1y: 1, p2x: 0.88, p2y: 1 };\n private _currentTransactionControlConfig: TransactionControllConfig;\n private _waitTransactionConfig?: TransactionConfig;\n private _calc: { [key: string]: number | number[]} = {};\n // private _beforeObj: Obj;\n private _transactionDoneSubscribers: ((config: TransactionConfig) => Obj|undefined)[] = [];\n // private _transactionConfigQueue: TransactionControllConfig[] = [];\n\n\n constructor(data?: Point3D);\n constructor(data?: { x?: number, y?: number, z?: number });\n constructor(x?: number, y?: number, z?: number);\n constructor(x?: number | { x?: number, y?: number, z?: number } | Point3D, y?: number, z?: number) {\n if (x instanceof Point3D) {\n // @ts-ignore\n super(x);\n } else if (typeof x === 'object') {\n super(x);\n } else {\n super({ x, y, z });\n }\n // this._beforeObj = this.copyObj();\n this._currentTransactionControlConfig = this.makeTransactionControlConfig({ targetPoint: { obj: this }, drawFps: 1 });\n // console.log('----!@@@@@@', this.x, this.y,this.z, this._currentTransactionConfig);\n }\n\n // get beforeObj() {\n // return this._beforeObj;\n // }\n\n get calc() {\n return this._calc;\n }\n\n getCalc(key: string): number | number[] | undefined {\n return this._calc[key];\n }\n\n setCalc(key: string, value: number | number[]) {\n // if ((this as any).syncSubLayer?.name === 'normalSpin_template' || (this as any).syncSubLayer?.name === 'normalSpin_slot'){\n // debugger;\n // }\n this._calc[key] = value;\n }\n\n getTransactionStartPoint() {\n return this._currentTransactionControlConfig.transactionStartPoint;\n }\n getTransactionFrames() {\n return {points: this._currentTransactionControlConfig.points, calcs: this._currentTransactionControlConfig.calcs};\n }\n setTransactionIndex(index: number){\n this._currentTransactionControlConfig.pointPositionIndex = index;\n }\n getTransactionIndex() {\n return this._currentTransactionControlConfig.pointPositionIndex;\n }\n getTransactionIndexRate() {\n return MathUtil.getPercentByTotal(this._currentTransactionControlConfig.points.length, this._currentTransactionControlConfig.pointPositionIndex+1) /100;\n }\n getCurrentTransactionPoint() {\n return this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex];\n }\n getCurrentDrawFps() {\n return this._currentTransactionControlConfig.config.drawFps;\n }\n getCurrentTransactionTargetPoint() {\n const drawFps = this.getCurrentDrawFps()\n const targetPoints = !Array.isArray(this._currentTransactionControlConfig.config.targetPoint) ? [this._currentTransactionControlConfig.config.targetPoint] : this._currentTransactionControlConfig.config.targetPoint;\n const size = Math.ceil(drawFps / targetPoints.length);\n const s = this._currentTransactionControlConfig.pointPositionIndex / size\n return targetPoints[s];\n }\n remainingFrameCountTransaction() {\n return (this._currentTransactionControlConfig.points.length - 1) - this._currentTransactionControlConfig.pointPositionIndex;\n }\n\n isDoneTransaction() {\n return this._currentTransactionControlConfig.pointPositionIndex >= this._currentTransactionControlConfig.points.length - 1;\n }\n\n makeTransactionControlConfig(transactionConfig: TransactionConfig) {\n // if ((this as any).syncSubLayer?.name === '\uC601\uC5ED-\uC815\uBA74-\uBAB8-group') {\n // console.log('-11-----', transactionConfig)\n // }\n // if ((this as any).syncSubLayer?.name === 'normalSpin_template' || (this as any).syncSubLayer?.name === 'normalSpin_slot'){\n // console.log('mmmmmmmmm')\n // }\n // console.log('-------------', this)\n // if ((this as any)._syncSubLayer?.name === \"normalBounce_template\" ) {\n // console.log('mmmmmmmmm', this.transform, this._currentTransactionControllConfig.transactionStartPoint.transform)\n // }\n if (transactionConfig.startPoint) {\n this.updateObjWithDefaults(transactionConfig.startPoint);\n }\n const transactionStartCalc = ObjectUtils.deepCopy(this._calc);\n\n if (transactionConfig.startCalcs) {\n Object.entries(transactionConfig.startCalcs).forEach(([k,v])=> {\n transactionStartCalc[k] = v;\n })\n }\n const requiredConfig = this.defaultTransactionConfig(transactionConfig);\n\n const targetPoints = requiredConfig.targetPoint = Array.isArray(requiredConfig.targetPoint) ? requiredConfig.targetPoint : [requiredConfig.targetPoint];\n const points: Obj[] = [];\n // \uB0A8\uC740\uAC8C \uC788\uC74C \uD2B8\uB79C\uC81D\uC158 \uC2DC\uC791\uD588\uC744\uB584 \uC2DC\uC791\uC810 \uAE30\uC900\uC73C\uB85C\n // let startPoint = this.remainingCntTransaction() > 0 ? this._transactionConfig.points[0] : this.toPoint3D();\n // console.log('---->',(this as any)._syncData?.name)\n // if ((this as any)._syncData?.name === 'mcdonalds-event_item_issue' || (this as any).syncSu_syncDatabLayer?.name === 'mcdonalds-event_item_issue'){\n // console.log('make!!!', transactionStartCalc)\n // }\n const currentPoint = this.copyObj();\n let startPoint: TargetPointType = { obj: currentPoint, bezierConfig: RenderTransactionDrawObj.DEFAULT_BEZIER };\n const drawFps = requiredConfig.drawFps;\n const size = Math.ceil(drawFps / targetPoints.length);\n // if (targetPoints.length === 1) {\n // points.push(targetPoints[0].obj);\n // } else {\n for (let i = 0; i < targetPoints.length; i++) {\n const targetPoint = targetPoints[i];\n const point = MathUtil.cubicBezier({start: startPoint.obj, end: targetPoint.obj}, {frame: size}, targetPoint.bezierConfig ?? RenderTransactionDrawObj.DEFAULT_BEZIER);\n const setPoints = [startPoint.obj, ...point, targetPoint.obj];\n setPoints.forEach(it=>it.data = targetPoint.obj.data);\n points.push(...setPoints);\n startPoint = targetPoint;\n }\n // }\n\n\n // if ((this as any)) {\n // // console.log('worldEngine Sync', layerDrawObject?.syncData?.name, layers)\n // console.log(requiredConfig)\n // }\n // const data = points.map(it => Math.floor(it.y*100)/100);\n // const data1 = targetPoints.map(it =>Math.floor(it.obj.y * 1000)/1000);\n // if (data[data.length-1] === 0) {\n // console.group('start', currentPoint)\n // console.log('1---@@@----', data1);\n // console.log('2---@@@----', data);\n // console.groupEnd()\n // }\n // \uD558\uB098\uB3C4\uC5C6\uC744\uB54C \uB610\uB294 0\uC73C\uB85C \uC14B\uD305\uC2DC \uBC14\uB85C \uC14B\n if (drawFps <= 0 && targetPoints.length > 0) {\n // console.log('!@!!!!!!!!!!!!!!!!!!!!!!!!!!!!', transactionConfig.startPoint, targetPoints[targetPoints.length - 1].obj)\n const lastPoint = targetPoints[targetPoints.length - 1].obj;\n points.length = 0;\n points.push(lastPoint);\n this.updateObjWithDefaults(lastPoint);\n }\n\n const calcs: { [key: string]: number[] | number[][] } = {};\n Object.entries(requiredConfig.calcs ?? {})?.forEach(([key, value], index) => {\n const values = Array.isArray(value) ? value : [value];\n let startPoint = transactionStartCalc[key];\n const points: number[] | number[][] = [];\n for (let i = 0; i < values.length; i++) {\n const end = values[i];\n if (Array.isArray(end.value)) {\n const point: number[][] = [];\n const cstart = (startPoint??[]) as number[];\n const cend = end.value as number[];\n const rpoints = cend.map((it,index) => {\n const b = MathUtil.cubicBezier({ start: cstart[index] ?? 0, end: cend[index] ?? 0 }, { frame: size }, end.bezierConfig ?? RenderTransactionDrawObj.DEFAULT_BEZIER)\n // console.log('----------22>', index, cstart[index], cend[index], size, b);\n return b;\n });\n const ss = ConvertUtils.toArrayDirectionChange(rpoints) as number[][]\n (points as number[][]).push(cstart, ...ss, cend);\n } else {\n const cstart = startPoint as number ??0;\n const point = MathUtil.cubicBezier({ start: cstart, end: end.value }, { frame: size }, end.bezierConfig ?? RenderTransactionDrawObj.DEFAULT_BEZIER);\n (points as number[]).push(cstart, ...point, end.value);\n }\n startPoint = end.value;\n }\n // \uD558\uB098\uB3C4\uC5C6\uC744\uB54C \uB610\uB294 0\uC73C\uB85C \uC14B\uD305\uC2DC \uBC14\uB85C \uC14B\n if (drawFps <= 0 && points.length > 0) {\n transactionStartCalc[key]=points[points.length - 1];\n }\n calcs[key] = points;\n });\n // console.log('calc------->', calcs);\n // if ((this as any).syncSubLayer?.name === 'normalSpin_template' || (this as any).syncSubLayer?.name === 'normalSpin_slot'){\n // console.log('make!!!', transactionStartCalc)\n // }\n const transactionControlConfig: TransactionControllConfig = {\n points: points,\n calcs: calcs,\n pointPositionIndex: 0,\n transactionStartCalcs: transactionStartCalc,\n transactionStartPoint: currentPoint,\n config: requiredConfig\n };\n // if (drawFps <= 0 && targetPoints.length > 0) {\n // console.log('!!!!!', transactionControllConfig)\n // }\n // if ((this as any).syncSubLayer?.name === '\uC601\uC5ED-\uC815\uBA74-\uBAB8-group') {\n // console.log('------', transactionControllConfig)\n // }\n return transactionControlConfig;\n }\n\n // setPosition(position: {x:number, y:number, z: number}, config?:{deferTransaction?:boolean}) {\n //\n //\n // }\n transaction(transactionConfig: TransactionConfig) {\n if ((this as any).syncSubLayer?.name === 'normalBounce_template') {\n // console.log('------', transactionControllConfig)\n // console.log('!!!!!!!!!', this.isDoneTransaction(), transactionConfig.deferTransaction);\n }\n if (this.isDoneTransaction() && transactionConfig.deferTransaction) {\n // this.rotate = 0;\n this._currentTransactionControlConfig = this.makeTransactionControlConfig(transactionConfig);\n } else if (transactionConfig.deferTransaction) {\n this._waitTransactionConfig = transactionConfig;\n } else {\n this._currentTransactionControlConfig = this.makeTransactionControlConfig(transactionConfig);\n }\n }\n\n\n private defaultTransactionConfig(transactionConfig: TransactionConfig): RequiredTransactionConfig {\n // const targetPoint = [...(Array.isArray(transactionConfig.targetPoint) ? transactionConfig.targetPoint : [transactionConfig.targetPoint])];\n // if (transactionConfig.animationDirection === 'reverse') {\n // targetPoint.u\n // }\n const requiredConfig: RequiredTransactionConfig = {\n ...transactionConfig,\n // targetPoint: targetPoint,\n animationIterationCount: transactionConfig.animationIterationCount ?? 1,\n animationDirection: transactionConfig.animationDirection ?? 'normal'\n // fillMode: transactionConfig.fillMode ?? 'backwards',\n };\n return requiredConfig;\n }\n\n render(draw: DrawData<T>, config?:RenderConfig) {\n\n\n // this._beforeObj.setObj(this.copyObj());\n\n // console.log('-!!!!!!!!!!!', this);\n this.x = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.x ?? this.x;\n this.y = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.y ?? this.y;\n this.z = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.z ?? this.z;\n this.volume = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.volume ?? this.volume;\n this.mass = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.mass ?? this.mass;\n this.e = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.e ?? this.e;\n this.rotate = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.rotate ?? this.rotate;\n this.width = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.width ?? this.width;\n this.height = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.height ?? this.height;\n this.transform[0] = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.transform[0] ?? this.transform[0];\n this.transform[1] = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.transform[1] ?? this.transform[1];\n this.transform[2] = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.transform[2] ?? this.transform[2];\n this.transform[3] = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.transform[3] ?? this.transform[3];\n this.transform[4] = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.transform[4] ?? this.transform[4];\n this.transform[5] = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.transform[5] ?? this.transform[5];\n this.color.r = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.color?.r ?? this.color.r;\n this.color.g = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.color?.g ?? this.color.g;\n this.color.b = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.color?.b ?? this.color.b;\n this.color.a = this._currentTransactionControlConfig.points[this._currentTransactionControlConfig.pointPositionIndex]?.color?.a ?? this.color.a;\n\n // if (this._currentTransactionControllConfig.points.length === 1) {\n // console.log('-!!!!!!!!!!!', this.x, this.y,this.z, this._currentTransactionControllConfig);\n // }\n\n // calcs\n Object.entries(this._currentTransactionControlConfig.calcs ?? {}).forEach(([key, value]) => {\n this._calc[key] = value[this._currentTransactionControlConfig.pointPositionIndex];\n });\n\n this._currentTransactionControlConfig.pointPositionIndex = Math.min(this._currentTransactionControlConfig.pointPositionIndex + 1, this._currentTransactionControlConfig.points.length - 1);\n // super.render(draw, {calcs, transaction: this._currentTransactionConfig});\n super.render(draw, config);\n\n\n // if (this.syncSubLayer.name === 'normalSpin_template' || this.syncSubLayer.name === 'normalSpin_slot')\n // if (this['syncSubLayer']?.name==='normalSpin_template') {\n // console.log('is???Doen', this.isDoneTransaction(), this);\n // if (this.isDoneTransaction()) {\n // // debugger;\n // }\n // }\n if (this.isDoneTransaction()) {\n // this._transactionDoneSubscribers.forEach(it => {\n //\n // })\n // console.log('done?-----', this._currentTransactionConfig.config.direction);\n\n const targetPoints = Array.isArray(this._currentTransactionControlConfig.config.targetPoint) ? [...this._currentTransactionControlConfig.config.targetPoint] : [this._currentTransactionControlConfig.config.targetPoint];\n // console.log('----------->',targetPoints)\n const targetCalcs: {[key: string]: Calc[]} = {}\n Object.entries(this._currentTransactionControlConfig?.config?.calcs??{}).forEach(([k,v]) => targetCalcs[k] = Array.isArray(v) ? v : [v]);\n\n\n\n // next transaction?\n if (this._waitTransactionConfig && this._waitTransactionConfig.deferTransaction) {\n // alert(1)\n // console.log('dddddddon')\n\n // this._currentTransactionControllConfig.pointPositionIndex=0;\n\n // this.transaction({\n // ...this._currentTransactionConfig.config,\n // targetPoint: targetPoints,\n // calcs: targetCalcs\n // });\n // this._waitTransactionConfig.startPoint = this._currentTransactionControllConfig.transactionStartPoint;\n this.transaction(this._waitTransactionConfig);\n this._waitTransactionConfig = undefined;\n return;\n }\n\n\n\n let startPoint = this._currentTransactionControlConfig.config.startPoint;\n let startCalcs = this._currentTransactionControlConfig.transactionStartCalcs;\n if (this._currentTransactionControlConfig.config.animationDirection === 'reverse') {\n if (targetPoints.length>0) {\n // console.log('start-->1', (this as any).syncSubLayer?.name, this._currentTransactionControllConfig,JSON.stringify(startPoint.transform), JSON.stringify(targetPoints[0].obj.transform))\n const targetStartPoint = targetPoints.pop();\n targetPoints.reverse();\n if (startPoint)\n targetPoints.push({obj: startPoint });\n Object.entries(targetCalcs).forEach(([k,v]) => {\n const targetCalc = v.pop();\n if (targetCalc) {\n v.reverse();\n v.push({value: startCalcs[k]});\n startCalcs[k] = targetCalc.value;\n }\n });\n\n if (targetStartPoint)\n startPoint = targetStartPoint.obj;\n }\n }\n\n if (this._currentTransactionControlConfig.config.animationIterationCount === 'infinite') {\n // return;\n // console.log('----infinite?',targetCalcs, targetPoints);\n // Object.entries(this._calc).forEach(([k,v]) => {\n // this._calc[k] = 0;\n // })\n // if ((this as any).syncSubLayer?.name === 'normalSpin_template' || (this as any).syncSubLayer?.name === 'normalSpin_slot'){\n // console.log('iiiiiiiiiiiiiiiiiiii', this._currentTransactionControllConfig.transactionStartCalcs)\n // }\n // Object.entries(targetCalcs).forEach(([k,v]) => v.reverse());\n // this._calc = this._currentTransactionControllConfig.transactionStartCalcs;\n // \uC774\uAC78\uB123\uC5B4\uC57C\uB420\uC9C0 \uB9D0\uC544\uC57C\uB420\uC9C0.. \uC774\uAC70 \uACC4\uC18D\uACE0\uBBFC\uC778\uB370.. \uC774\uAC70 \uACC4\uC18D \uAC78\uB9AC\uB124.\n this.transaction({\n ...this._currentTransactionControlConfig.config,\n startPoint: startPoint,\n targetPoint: targetPoints,\n startCalcs: startCalcs,\n calcs: targetCalcs\n });\n } else if (this._currentTransactionControlConfig.config.animationIterationCount > 1) {\n // console.log('iterationCount', targetPoints);\n this.transaction({\n ...this._currentTransactionControlConfig.config,\n startPoint: startPoint,\n targetPoint: targetPoints,\n startCalcs: startCalcs,\n calcs: targetCalcs,\n animationIterationCount: this._currentTransactionControlConfig.config.animationIterationCount - 1\n });\n }\n }\n\n\n }\n\n abstract draw(draw: DrawData<T>): void ;\n\n // constructor(canvas: HTMLCanvasElement, context: CanvasRenderingContext2D, public avaliablePlace: Rectangle = new Rectangle(new Point(0, 0), new Point(0, 0))) {\n // super(canvas, context);\n // }\n\n\n // get centerPoint(): Point {\n // return new Point();\n // }\n}\n", "import { Runnable } from './Runnable';\n\nexport abstract class AutoStartRunner implements Runnable {\n protected constructor() {\n this.run();\n }\n\n abstract run(...params: any[]): any;\n}\n", "import { Runnable } from './Runnable';\n\nexport abstract class RunnableLoader<T> implements Runnable<Promise<T>> {\n protected loaded?: T;\n public run(...params: any[]): Promise<T> {\n return this.load()\n .then(it => {\n this.loaded = it;\n this.completed(this.loaded);\n return it;\n })\n .catch(e => {\n this.error(e);\n throw e;\n });\n }\n\n stop() {\n this.unload(this.loaded);\n }\n\n protected abstract load(): Promise<T>;\n\n protected abstract unload(installed?: T): Promise<void>;\n\n protected abstract completed(installed: T): Promise<void>;\n\n protected abstract error(e: any): Promise<void>;\n}\n", "import { RunnableLoader } from './RunnableLoader';\nimport { Observable } from '../message/Observable';\nimport { StoreLoaderState } from '../store/StoreLoader';\n\nexport abstract class StoreRunnableLoader<T> extends RunnableLoader<T> {\n public abstract observable: Observable<StoreLoaderState<T>>;\n}\n", "import { Transaction } from './Transaction';\nimport { ConstructorType } from '../types';\n\nexport class TransactionManager {\n private createdTransactions: Transaction[] = [];\n constructor(private transaction: Map<string | Symbol | ConstructorType<any>, Transaction> = new Map()) {}\n\n setTransaction(key: string | Symbol | ConstructorType<any>, transaction: Transaction) {\n return this.transaction.set(key, transaction);\n }\n\n hasTransaction(key: string | Symbol | ConstructorType<any>) {\n return this.transaction.has(key);\n }\n\n deleteTransaction(key: string | Symbol | ConstructorType<any>) {\n return this.transaction.delete(key);\n }\n\n getTransaction<T = any, I = any>(type: string | Symbol | ConstructorType<T>): Transaction<I, T> | undefined {\n const transaction = this.transaction.get(type);\n if (transaction) {\n this.createdTransactions.push(transaction);\n return transaction as Transaction<I, T>;\n } else {\n return undefined;\n }\n }\n\n async try() {\n // console.log('try', this.transaction);\n }\n //\n async catch(e: any) {\n // console.log('error', e, this.transaction);\n for (let createdTransaction of this.createdTransactions) {\n try {\n await createdTransaction.catch(e);\n } catch (e) {}\n }\n }\n\n async finally() {\n // console.log('finally', this.transaction);\n for (let createdTransaction of this.createdTransactions) {\n try {\n await createdTransaction.finally();\n } catch (e) {}\n }\n this.transaction.clear();\n }\n}\n", "import { Runnable } from '../runs/Runnable';\n\nexport namespace Schedule {\n export const SYMBOL = Symbol.for('core:schedule-token');\n export type State = 'INITIALIZE' | 'RUNNING' | 'DONE-AND-WAITING' | 'STOPPED' | 'ERROR' | 'SUCCESS';\n}\n\nexport interface Schedule<T = void, R = void> extends Runnable<Promise<R>, T> {\n spec: string;\n name?: string;\n description?: string;\n history?: { state: Schedule.State; date: Date; input?: T }[];\n state: Schedule.State;\n isReady?: boolean;\n totalCount: number;\n successCount: number;\n errorCount: number;\n\n run(data: T): Promise<R>;\n execute(data: T): Promise<R>;\n}\n\nexport abstract class ScheduleBase<T = void, R = void> implements Schedule<T, R> {\n /*\n * * * * * *\n \u252C \u252C \u252C \u252C \u252C \u252C\n \u2502 \u2502 \u2502 \u2502 \u2502 \u2502\n \u2502 \u2502 \u2502 \u2502 \u2502 \u2514 day of week (0 - 7) (0 or 7 is Sun)\n \u2502 \u2502 \u2502 \u2502 \u2514\u2500\u2500\u2500\u2500\u2500 month (1 - 12)\n \u2502 \u2502 \u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 day of month (1 - 31)\n \u2502 \u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 hour (0 - 23)\n \u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 minute (0 - 59)\n \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 second (0 - 59, OPTIONAL)\n */\n abstract spec: string;\n abstract name?: string;\n abstract description?: string;\n private _history?: { state: Schedule.State; date: Date; input: T, result?: R }[];\n private _state: Schedule.State = 'INITIALIZE';\n private _totalCount = 0;\n private _successCount = 0;\n private _errorCount = 0;\n\n get history() {\n return this._history;\n }\n get state(): Schedule.State {\n return this._state;\n }\n get totalCount() {\n return this._totalCount;\n }\n get successCount() {\n return this._successCount;\n }\n get errorCount() {\n return this._errorCount;\n }\n get isReady(): boolean {\n return !(this._state === 'RUNNING')\n }\n private addStart(input?: T, date: Date = new Date()) {\n this._history ??= [];\n this._history.push({ state: 'RUNNING', date, input });\n }\n private addError(input?: T, date: Date = new Date()) {\n this._history ??= [];\n this._history.push({ state: 'ERROR', date, input });\n }\n private addSuccess(input?: T, result:R = undefined, date: Date = new Date()) {\n this._history ??= [];\n this._history.push({ state: 'SUCCESS', date, input, result });\n }\n\n\n async run(data: T): Promise<R> {\n this._state = 'RUNNING';\n this.addStart();\n const startDate = new Date();\n let result: R;\n try {\n console.log('Running schedule', this.name, startDate);\n result = await this.execute(data);\n this._successCount++;\n this.addSuccess(data, result);\n } catch (e) {\n this.addError(e);\n this._errorCount++;\n const endDate = new Date();\n console.error('Error schedule', this.name, endDate, endDate.getTime() - startDate.getTime(), e);\n } finally {\n this._totalCount++;\n const endDate = new Date();\n console.log('Done schedule', this.name, endDate, endDate.getTime() - startDate.getTime());\n }\n this._state = 'DONE-AND-WAITING';\n return result!;\n }\n\n abstract execute(data: T): Promise<R>;\n}\n", "import { RunnableLoader } from '../runs/RunnableLoader';\nimport { Observable } from '../message/Observable';\n\nexport type StoreLoadedState<T> = {\n state: 'loaded';\n data: T;\n};\nexport type StoreErrorState = {\n state: 'error';\n data: any;\n};\n\nexport type StoreLoaderState<T> =\n | {\n state: 'ready' | 'loading' | 'unloaded';\n }\n | StoreLoadedState<T>\n | StoreErrorState\n | {\n state: 'unloaded';\n };\n\nexport abstract class StoreLoader<T> {\n public abstract observable: Observable<StoreLoaderState<T>>;\n}\n", "export namespace UrlUtils {\n // 1 const fullUrl = \"http://naver.com/asdwd?a=na\";\n\n // 2\n // 3 try {\n // 4 const url = new URL(fullUrl);\n // 5 const origin = url.origin; // \"http://naver.com\"\n // 6\n // 7 console.log(origin); // 출력: http://naver.com\n // 8 } catch (error) {\n // 9 console.error(\"유효하지 않은 URL입니다:\", error);\n // 10 }\n export const origin = (fullurl: string) => {\n return new URL(fullurl).origin;\n };\n\n export const toUrl = (fullUrl: string) => {\n return new URL(fullUrl);\n };\n\n /**\n * Returns the relative path (pathname + search) from a URL or string.\n */\n export const getUrlPath = (url: URL | string | { pathname: string; search: string }): string => {\n if (typeof url === 'string') {\n try {\n const u = new URL(url, 'http://localhost');\n return u.pathname + u.search;\n } catch (e) {\n return url;\n }\n }\n return (url.pathname ?? '') + (url.search ?? '');\n };\n\n /**\n * URLSearchParams에서 특정 키를 삭제\n */\n export const deleteSearchParam = (searchParams: URLSearchParams, name: string | string[]): URLSearchParams => {\n const names = Array.isArray(name) ? name : [name];\n names.forEach(n => searchParams.delete(n));\n return searchParams;\n };\n\n /**\n * URLSearchParams에 키-값 쌍을 추가\n */\n export const appendSearchParam = (searchParams: URLSearchParams, params: [[string, string]]): URLSearchParams => {\n params.forEach(([key, value]) => searchParams.append(key, value));\n return searchParams;\n };\n\n /**\n * URLSearchParams에서 키를 삭제하고 새로운 값을 추가 (upsert)\n * 기존 값이 있으면 삭제하고, 새로운 값을 추가\n */\n export const upsertSearchParam = (searchParams: URLSearchParams, params: Record<string, string | string[]>): URLSearchParams => {\n Object.entries(params).forEach(([key, value]) => {\n searchParams.delete(key); // 기존 값 삭제\n if (Array.isArray(value)) {\n value.forEach(v => searchParams.append(key, v));\n } else {\n searchParams.append(key, value);\n }\n });\n return searchParams;\n };\n\n /**\n * 상대경로를 현재 URL 기준 절대경로(URL)로 변환한다.\n * 이미 절대경로인 경우 그대로 반환한다.\n *\n * @param relative - 변환할 상대경로 또는 절대경로\n * @param base - 기준이 되는 절대경로 (예: location.href)\n * @returns 절대경로로 변환된 URL 객체\n *\n * @example\n * resolveUrl('./data.json', 'https://example.com/app/page')\n * // → URL { href: 'https://example.com/app/data.json' }\n *\n * resolveUrl('/api/users', 'https://example.com/app/page')\n * // → URL { href: 'https://example.com/api/users' }\n *\n * resolveUrl('https://other.com/foo', 'https://example.com/app/page')\n * // → URL { href: 'https://other.com/foo' }\n */\n /**\n * 상대경로를 base URL 기준 절대경로(URL)로 변환한다.\n * 이미 절대경로인 경우 그대로 반환한다.\n *\n * @param relative - 변환할 상대경로 또는 절대경로\n * @param base - 기준이 되는 절대경로 (예: location.href)\n * @returns 절대경로로 변환된 URL 객체\n *\n * @example\n * toAbsoluteUrl('./data.json', 'https://example.com/app/page')\n * // → URL { href: 'https://example.com/app/data.json' }\n *\n * toAbsoluteUrl('/api/users', 'https://example.com/app/page')\n * // → URL { href: 'https://example.com/api/users' }\n *\n * toAbsoluteUrl('https://other.com/foo', 'https://example.com/app/page')\n * // → URL { href: 'https://other.com/foo' }\n */\n export const toAbsoluteUrl = (relative: string, base: string): URL => {\n return new URL(relative, base);\n };\n\n /**\n * fetch의 input(string | URL | Request)을 base 기준 절대경로로 변환한다.\n * - string → 절대경로 string으로 반환\n * - URL → 절대경로 URL로 반환\n * - Request → url만 교체한 새 Request로 반환 (headers/body 등 유지)\n *\n * @example\n * toAbsoluteRequest('/api/users', 'https://example.com')\n * // → 'https://example.com/api/users'\n *\n * toAbsoluteRequest(new Request('./data.json'), 'https://example.com/app/')\n * // → Request { url: 'https://example.com/app/data.json' }\n */\n export function toAbsoluteRequest(input: string, base: string): string;\n export function toAbsoluteRequest(input: URL, base: string): URL;\n export function toAbsoluteRequest(input: Request, base: string): Request;\n export function toAbsoluteRequest(input: RequestInfo | URL, base: string): RequestInfo | URL;\n export function toAbsoluteRequest(input: RequestInfo | URL, base: string): RequestInfo | URL {\n if (input instanceof URL) {\n return toAbsoluteUrl(input.href, base);\n }\n if (typeof input === 'string') {\n return toAbsoluteUrl(input, base).href;\n }\n // Request 객체 - url만 교체하고 나머지 옵션(headers, body, method 등)은 유지\n return new Request(toAbsoluteUrl(input.url, base).href, input);\n }\n\n /**\n * URLSearchParams 조작을 위한 헬퍼\n */\n export const manipulateSearchParams = (searchParams: URLSearchParams, options?: { delete?: string[]; append?: [[string, string]]; upsert?: Record<string, string | string[]> }): URLSearchParams => {\n if (options?.delete) {\n deleteSearchParam(searchParams, options.delete);\n }\n if (options?.append) {\n appendSearchParam(searchParams, options.append);\n }\n if (options?.upsert) {\n upsertSearchParam(searchParams, options.upsert);\n }\n return searchParams;\n };\n}\n", "// import { InspectOptions } from 'node:util';\nimport { DateUtils } from '../date/DateUtils';\n\nexport enum LoggerLevel {\n LOG = 'LOG',\n ERROR = 'ERROR',\n WARN = 'WARN',\n INFO = 'INFO',\n DEBUG = 'DEBUG',\n TRACE = 'TRACE',\n OFF = 'OFF'\n}\n\n// logFormat\n// ${date:'yyyy-MM-dd'} ${level} ${line} ${file} ${message}\n// dateFormat : yyyy-MM-dd HH:mm:ss\nexport type LoggerConfig = { level: LoggerLevel, format?: string };\n//\n// export interface Logger {\n// log(...args: any[]): void;\n//\n// error(...args: any[]): void;\n//\n// warn(...args: any[]): void;\n//\n// info(...args: any[]): void;\n//\n// debug(...args: any[]): void;\n//\n// trace(...args: any[]): void;\n// }\n\nexport class Logger {\n constructor(protected config?: LoggerConfig) {}\n\n public setConfig(config: LoggerConfig) {\n this.config = config;\n }\n\n private _log(logLevel: LoggerLevel, ...args: any[]) {\n const now = new Date();\n let file, line;\n // const isNode = typeof process !== \"undefined\" && process.versions && process.versions.node;\n // console.log('------------isNode', isNode);\n // \uD658\uACBD\uBCC4 \uC2A4\uD0DD \uCD94\uCD9C\n // if (isNode) {\n // const stackObj = {} as any;\n // Error.captureStackTrace(stackObj, this._log);\n // const stack = stackObj?.stack.split(\"\\n\")[1];\n // const match = stack.match(/at (.*):(\\d+):(\\d+)/);\n // const path = isNode ? require(\"path\") : null;\n // file = path.basename(match[1]);\n // line = match[2];\n // } else {\n const err = new Error();\n const stackLines = err.stack.split(\"\\n\");\n // console.log('------------', stackLines);\n let stack = stackLines[3];\n const match = stack.match(/(?:at\\s)?(?:.*\\s)?(?:\\(|\\@)?(.*):(\\d+):(\\d+)/);\n // console.log('mmmmmmmmmmmmm', match);\n file = match[1]; //new URL(match[1]).pathname.split(\"/\").pop();\n line = `${match[2]}:${match[3]}`;\n // }\n\n // \uCD9C\uB825 \uBB38\uC790\uC5F4 \uC0DD\uC131\n // const formattedDate = formatDate(now);\n const message = args.map(arg =>\n typeof arg === \"object\" ? JSON.stringify(arg) : String(arg)\n ).join(\" \");\n\n const format = this.config?.format ?? '';\n // \uD3EC\uB9F7 \uD30C\uC2F1 \uBC0F \uC801\uC6A9\n let output = format;\n // \uB0A0\uC9DC \uCC98\uB9AC: ${date:'\uD615\uC2DD'}\n const dateMatch = format.match(/\\${date:'([^']+)'\\}/);\n if (dateMatch) {\n const dateFormat = dateMatch[1];\n output = output.replace(dateMatch[0], DateUtils.format(now, dateFormat));\n }\n // // \uC904 \uBC88\uD638 \uCC98\uB9AC: ${line:\uC790\uB9BF\uC218}\n output = output.replace(\"${line}\", line);\n output = output.replace(\"${level}\", logLevel);\n // const lineMatch = format.match(/\\${line:(\\d+)\\}/);\n // if (lineMatch) {\n // const digits = parseInt(lineMatch[1], 10);\n // const paddedLine = String(line).padStart(digits, \"0\");\n // output = output.replace(lineMatch[0], paddedLine);\n // }\n // \uD30C\uC77C\uBA85 \uCC98\uB9AC\n output = output.replace(\"${file}\", file.split('/').pop() ?? '');\n // \uBA54\uC2DC\uC9C0 \uCC98\uB9AC\n output = output.replace(\"${message}\", message);\n return output;\n\n // const output = `[${formattedDate}] [${file}:${line}] ${message}`;\n //\n // // \uCEA1\uCC98 \uBC0F \uCD9C\uB825\n // capturedOutput += output + \"\\n\";\n }\n\n\n public log(msg: string,...args: any[]) {\n if (this.config?.level === LoggerLevel.OFF) {\n return;\n }\n console.log(this._log(LoggerLevel.LOG, msg),...args);\n }\n // public logDir(obj: any, option?: InspectOptions) {\n // if (this.config?.level === LoggerLevel.OFF) {\n // return;\n // }\n // console.dir(obj, option);\n // }\n\n public error(msg: string, ...args: any[]) {\n if (this.config?.level === LoggerLevel.OFF) {\n return;\n }\n (console.error ?? console.log)(this._log(LoggerLevel.ERROR, msg), ...args);\n }\n // public errorDir(obj: any, option?: InspectOptions) {\n // if (this.config?.level === LoggerLevel.OFF) {\n // return;\n // }\n // console.dir(obj, option);\n // }\n\n public warn(msg: string,...args: any[]) {\n if (\n this.config?.level === LoggerLevel.ERROR ||\n this.config?.level === LoggerLevel.LOG ||\n this.config?.level === LoggerLevel.OFF\n ) {\n return;\n }\n (console.warn ?? console.log)(this._log(LoggerLevel.WARN, msg),...args);\n }\n // public warnDir(obj: any, option?: InspectOptions) {\n // if (\n // this.config?.level === LoggerLevel.ERROR ||\n // this.config?.level === LoggerLevel.LOG ||\n // this.config?.level === LoggerLevel.OFF\n // ) {\n // return;\n // }\n // console.dir(obj, option);\n // }\n\n public info(msg: string,...args: any[]) {\n if (\n this.config?.level === LoggerLevel.WARN ||\n this.config?.level === LoggerLevel.ERROR ||\n this.config?.level === LoggerLevel.LOG ||\n this.config?.level === LoggerLevel.OFF\n ) {\n return;\n }\n (console.info ?? console.log)(this._log(LoggerLevel.INFO, msg),...args);\n }\n // public infoDir(obj: any, option?: InspectOptions) {\n // if (\n // this.config?.level === LoggerLevel.WARN ||\n // this.config?.level === LoggerLevel.ERROR ||\n // this.config?.level === LoggerLevel.LOG ||\n // this.config?.level === LoggerLevel.OFF\n // ) {\n // return;\n // }\n // console.dir(obj, option);\n // }\n\n public debug(msg: string, ...args: any[]) {\n if (\n this.config?.level === LoggerLevel.INFO ||\n this.config?.level === LoggerLevel.WARN ||\n this.config?.level === LoggerLevel.ERROR ||\n this.config?.level === LoggerLevel.LOG ||\n this.config?.level === LoggerLevel.OFF\n ) {\n return;\n }\n (console.debug ?? console.log)(this._log(LoggerLevel.DEBUG, msg),...args);\n }\n // public debugDir(obj: any, option?: InspectOptions) {\n // if (\n // this.config?.level === LoggerLevel.INFO ||\n // this.config?.level === LoggerLevel.WARN ||\n // this.config?.level === LoggerLevel.ERROR ||\n // this.config?.level === LoggerLevel.LOG ||\n // this.config?.level === LoggerLevel.OFF\n // ) {\n // return;\n // }\n // console.dir(obj, option);\n // }\n\n public trace(...args: any[]) {\n if (this.config?.level === LoggerLevel.TRACE) {\n (console.trace ?? console.log)(...args);\n }\n }\n // public traceDir(obj: any, option?: InspectOptions) {\n // if (this.config?.level === LoggerLevel.TRACE) {\n // console.dir(obj, option);\n // }\n // }\n}\n", "import { Storage } from './Storage';\ntype ItemSet = { key: string; value: string };\n\nexport class MemoryStorage implements Storage {\n private memory: ItemSet[];\n constructor() {\n this.memory = [];\n }\n\n get length(): number {\n return this.memory.length;\n }\n\n clear(): void {\n this.memory = [];\n }\n\n getItemSet(key: string): ItemSet | null;\n getItemSet(key: number): ItemSet | null;\n getItemSet(keyOrIndex: string | number): ItemSet | null {\n const item =\n typeof keyOrIndex === 'string' ? this.memory.find(item => item.key === keyOrIndex) : this.memory[keyOrIndex];\n return item ?? null;\n }\n\n findIndex(key: string): number | null {\n const idx = this.memory.findIndex(item => item.key === key);\n return idx < 0 ? null : idx;\n }\n\n getItem(key: string): string | null {\n const item = this.getItemSet(key);\n if (item) {\n return item.value;\n }\n return null;\n }\n\n key(index: number): string | null {\n return this.memory[index].key ?? null;\n }\n\n removeItem(key: string): void {\n const index = this.findIndex(key);\n if (index !== null) {\n this.memory.splice(index, 1);\n }\n }\n\n setItem(key: string, value: string): void {\n const prev = this.getItemSet(key);\n if (prev) {\n prev.value = value;\n }\n this.memory.push({ key, value });\n }\n}\n", "import { Storage } from './Storage';\nexport class StorageUtils {\n public static setStorageItem(k: string, v: string | any, storage: Storage) {\n if (typeof v === 'object') {\n v = JSON.stringify(v);\n }\n storage.setItem(k, v);\n }\n\n public static getStorageItem(k: string, storage: Storage) {\n return storage.getItem(k);\n }\n\n public static removeStorageItem(k: string, storage: Storage) {\n return storage.removeItem(k);\n }\n\n public static getStorageJsonObjectItem<T>(k: string, storage: Storage): T | null {\n const item = storage.getItem(k);\n if (item) {\n try {\n return JSON.parse(item);\n } catch (e) {\n return null;\n }\n } else {\n return null;\n }\n }\n\n public static cutStorageItem(k: string, storage: Storage) {\n const data = StorageUtils.getStorageItem(k, storage);\n StorageUtils.removeStorageItem(k, storage);\n return data;\n }\n\n public static cutStorageJsonObjectItem<T>(k: string, storage: Storage): T | null {\n const item = StorageUtils.getStorageJsonObjectItem(k, storage);\n StorageUtils.removeStorageItem(k, storage);\n return (item as T) ?? null;\n }\n\n public static clearStorage(storage: Storage) {\n storage.clear();\n }\n}\n", "import { ConstructorType } from '../types';\n\nexport namespace ReflectUtils {\n export const getParameterTypes = (target: any, propertyKey?: string | symbol): ConstructorType<any>[] => {\n if (propertyKey) {\n return Reflect.getMetadata('design:paramtypes', target, propertyKey) || [];\n } else {\n return Reflect.getMetadata('design:paramtypes', target) || [];\n }\n };\n\n export const getReturnType = (target: any, propertyKey: string | symbol): any => {\n return Reflect.getMetadata('design:returntype', target, propertyKey);\n };\n\n export const getType = (target: any, propertyKey?: string | symbol): any => {\n if (propertyKey) {\n return Reflect.getMetadata('design:type', target, propertyKey);\n } else {\n return Reflect.getMetadata('design:type', target);\n }\n };\n\n export const getMetadata = <T = any>(metadataKey: any, target: any, propertyKey?: string | symbol): T | undefined => {\n if (propertyKey) {\n return Reflect.getMetadata(metadataKey, target, propertyKey);\n } else {\n return Reflect.getMetadata(metadataKey, target);\n }\n };\n\n export const findMetadata = <T = any>(metadataKey: any, target: any, propertyKey?: string | symbol): T | undefined => {\n if (target == null) return undefined;\n let searchTarget = typeof target === 'object' && typeof target !== 'function' ? target.constructor : target;\n\n // \uB2E4\uB978 window(iframe) \uC758 \uD074\uB798\uC2A4\uB294 \uADF8 realm \uC758 Object/Function.prototype \uC73C\uB85C \uB05D\uB098 \uC544\uB798 Object \uBE44\uAD50\uC5D0 \uC548 \uAC78\uB9B0\uB2E4 \u2192 \uBCF8 \uB300\uC0C1\uC774\uBA74 \uBA48\uCDA4\n const seen = new Set<any>();\n while (searchTarget && searchTarget !== Object && !seen.has(searchTarget)) {\n seen.add(searchTarget);\n const data = propertyKey ? Reflect.getOwnMetadata(metadataKey, searchTarget, propertyKey) : Reflect.getOwnMetadata(metadataKey, searchTarget);\n if (data !== undefined) return data;\n const proto = Object.getPrototypeOf(searchTarget);\n searchTarget = proto && typeof proto === 'function' ? proto : proto?.constructor || null;\n }\n return undefined;\n };\n\n /**\n * \uD504\uB85C\uD1A0\uD0C0\uC785 \uCCB4\uC778\uC758 \uBAA8\uB4E0 \uBA54\uD0C0\uB370\uC774\uD130\uB97C \uC218\uC9D1\uD558\uC5EC \uB9AC\uC2A4\uD2B8\uB85C \uBC18\uD658\uD569\uB2C8\uB2E4. (\uBD80\uBAA8 -> \uC790\uC2DD \uC21C)\n */\n export const findAllMetadata = <T = any>(metadataKey: any, target: any, propertyKey?: string | symbol): T[] => {\n const results: T[] = [];\n if (target == null) return results;\n let searchTarget = typeof target === 'object' && typeof target !== 'function' ? target.constructor : target;\n\n // \uB2E4\uB978 window(iframe) \uC758 \uD074\uB798\uC2A4\uB294 \uADF8 realm \uC758 Object/Function.prototype \uC73C\uB85C \uB05D\uB098 \uC544\uB798 Object \uBE44\uAD50\uC5D0 \uC548 \uAC78\uB9B0\uB2E4 \u2192 \uBCF8 \uB300\uC0C1\uC774\uBA74 \uBA48\uCDA4\n const seen = new Set<any>();\n while (searchTarget && searchTarget !== Object && !seen.has(searchTarget)) {\n seen.add(searchTarget);\n const data = propertyKey ? Reflect.getOwnMetadata(metadataKey, searchTarget, propertyKey) : Reflect.getOwnMetadata(metadataKey, searchTarget);\n if (data !== undefined) results.unshift(data); // \uBD80\uBAA8 \uB370\uC774\uD130\uB97C \uC55E\uC5D0 \uCD94\uAC00\n const proto = Object.getPrototypeOf(searchTarget);\n searchTarget = proto && typeof proto === 'function' ? proto : proto?.constructor || null;\n }\n return results;\n };\n\n /**\n * \uBAA8\uB4E0 \uBA54\uD0C0\uB370\uC774\uD130(\uBC30\uC5F4 \uD615\uD0DC)\uB97C \uC218\uC9D1\uD558\uC5EC \uD558\uB098\uC758 \uBC30\uC5F4\uB85C \uD569\uCE69\uB2C8\uB2E4. (\uBD80\uBAA8 -> \uC790\uC2DD \uC21C)\n */\n export const findAllMetadataFlatten = <T = any>(metadataKey: any, target: any, propertyKey?: string | symbol): T[] => {\n const results: T[] = [];\n const metaList = findAllMetadata<T[]>(metadataKey, target, propertyKey);\n metaList.forEach(data => {\n if (Array.isArray(data)) results.push(...data);\n });\n return [...new Set(results)];\n };\n\n /**\n * \uD504\uB85C\uD1A0\uD0C0\uC785 \uCCB4\uC778\uC758 \uBAA8\uB4E0 \uBA54\uD0C0\uB370\uC774\uD130(\uB9F5 \uD615\uD0DC)\uB97C \uC218\uC9D1\uD558\uC5EC \uD569\uCE69\uB2C8\uB2E4. (\uBD80\uBAA8 -> \uC790\uC2DD \uC21C)\n */\n export const findAllMapMetadata = <K, V>(metadataKey: any, target: any): Map<K, V[]> => {\n const finalMap = new Map<K, V[]>();\n const metaList = findAllMetadata<Map<K, V[]>>(metadataKey, target);\n\n metaList.forEach(data => {\n if (data instanceof Map) {\n data.forEach((values, key) => {\n if (!finalMap.has(key)) finalMap.set(key, []);\n const valArr = Array.isArray(values) ? values : [values];\n finalMap.get(key)!.push(...(valArr as any));\n });\n }\n });\n return finalMap;\n };\n\n export const getMetadataKeys = (target: any) => {\n return Reflect.getMetadataKeys(target);\n };\n\n export const getOwnMetadata = (metadataKey: any, target: any, propertyKey?: string | symbol): any => {\n if (propertyKey) {\n return Reflect.getOwnMetadata(metadataKey, target, propertyKey);\n } else {\n return Reflect.getOwnMetadata(metadataKey, target);\n }\n };\n\n export const getMetadatas = (target: any) => {\n return getMetadataKeys(target).map(it => getMetadata(it, target));\n };\n\n export const metadata = (metadataKey: any, data: any) => {\n return Reflect.metadata(metadataKey, data);\n };\n\n export const defineMetadata = (metadataKey: any, value: any, target: any, propertyKey?: string | symbol) => {\n if (propertyKey && Reflect.defineMetadata) {\n Reflect.defineMetadata(metadataKey, value, target, propertyKey);\n } else if (Reflect.defineMetadata) {\n Reflect.defineMetadata(metadataKey, value, target);\n }\n };\n\n /**\n * \uD55C \uD0C0\uAC9F\uC5D0\uC11C \uB2E4\uB978 \uD0C0\uAC9F\uC73C\uB85C \uBAA8\uB4E0 \uBA54\uD0C0\uB370\uC774\uD130\uB97C \uBCF5\uC0AC\uD569\uB2C8\uB2E4. (\uC774\uBBF8 \uB4F1\uB85D\uB41C \uD074\uB798\uC2A4 \uAC31\uC2E0\uC6A9)\n */\n export const copyMetadata = (from: any, to: any, propertyKey?: string | symbol) => {\n const keys = propertyKey ? (Reflect as any).getOwnMetadataKeys(from, propertyKey) : (Reflect as any).getOwnMetadataKeys(from);\n for (const key of keys) {\n const data = propertyKey ? Reflect.getOwnMetadata(key, from, propertyKey) : Reflect.getOwnMetadata(key, from);\n if (propertyKey) {\n (Reflect as any).defineMetadata(key, data, to, propertyKey);\n } else {\n (Reflect as any).defineMetadata(key, data, to);\n }\n }\n };\n}\n", "export namespace FunctionUtils {\n export const getParameterNames = (func: Function | any, property?: string | symbol) => {\n if (typeof func === 'object' && property) {\n func = func[property];\n }\n // @ts-ignore https://stackoverflow.com/questions/1007981/how-to-get-function-parameter-names-values-dynamically\u3131\n return (\n new RegExp('(?:' + func.name + '\\\\s*|^)\\\\s*\\\\((.*?)\\\\)')\n .exec(func.toString().replace(/\\n/g, ''))?.[1]\n .replace(/\\/\\*.*?\\*\\//g, '')\n .replace(/ /g, '')\n .split(',') ?? []\n );\n };\n\n export const evalScript = <T>(script: string | null, obj?: any): T | null => {\n try {\n if (script && obj) {\n // eslint-disable-next-line no-new-func\n return Function(`\"use strict\";\n ${script}\n `).bind(obj)();\n } else if (script) {\n // eslint-disable-next-line no-new-func\n return new Function('return ' + script)();\n } else {\n return null;\n }\n } catch (e) {\n return null;\n }\n };\n\n /**\n * Dynamically executes a script string with provided context and arguments.\n */\n export const execute = (params: { script: string; context?: any; args?: Record<string, any> }) => {\n const { script, context, args = {} } = params;\n const argNames = Object.keys(args);\n const argValues = Object.values(args);\n return new Function(...argNames, script).apply(context, argValues);\n };\n\n /**\n * Dynamically executes a script string wrapped with 'return' with provided context and arguments.\n */\n export const executeReturn = (params: { script: string; context?: any; args?: Record<string, any> }) => {\n const { script, context, args = {} } = params;\n const argNames = Object.keys(args);\n const argValues = Object.values(args);\n return new Function(...argNames, `return ${script}`).apply(context, argValues);\n };\n}\n", "// type T0 = Exclude<undefined, unknown>;\n// type T2 = Exclude<string | number | (() => void), Function>;\n// type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>;\n// type SubPartial<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;\nexport class Optional<T> {\n static readonly EMPTY = new Optional();\n\n\n constructor(private value?: T) {\n }\n\n public static ofNullable<T>(value: T): Optional<T> {\n return value == null ? Optional.empty() : Optional.of(value);\n }\n\n public static of<T>(value: T): Optional<T> {\n return new Optional<T>(value);\n }\n\n public orElse<T>(other: T): T {\n const val = this.isPresent() ? this.value : other;\n // return (this.value != null && this.value != undefined) ? this.value : other;\n return val as T;\n }\n public isPresent(): boolean {\n return (this.value != null && this.value != undefined);\n }\n\n // public ifPresent<T>(Consumer<? super T> consumer) {\n // if (value != null)\n // consumer.accept(value);\n // }\n\n public static empty<T>(): Optional<T> {\n return Optional.EMPTY as Optional<T>;\n }\n\n // public static default<T>(value: any, def: T): T {\n // return (value != null && value != undefined) ? value : def;\n // }\n\n\n}\n", "export namespace OptionalUtils {\n export const mapIfPresent = <T,TT>(input: T | undefined | null, to: (input: T) => TT | undefined): TT | undefined => {\n if (input === undefined || input === null) {\n return undefined;\n } else {\n return to(input);\n }\n }\n}", "// within rangeResult.ts\n// @ts-ignore\nexport class RangeResult implements IteratorResult<number> {\n done: boolean;\n value: number;\n\n constructor(value: number | undefined, done: boolean) {\n this.done = done;\n this.value = value ?? 0;\n }\n}\n\nexport class RangeIterator implements Iterator<number> {\n private _first: number;\n private _current: number;\n private _last: number;\n private _step: number;\n\n constructor(first: number, last: number, step: number) {\n this._current = this._first = first;\n this._last = last;\n this._step = step;\n }\n\n next(value?: any): IteratorResult<number> {\n let r: RangeResult;\n if (this._first < this._last && this._current < this._last) {\n r = new RangeResult(this._current, false);\n this._current += this._step;\n } else if (this._first < this._last && this._current === this._last) {\n r = new RangeResult(this._current, false);\n this._current += this._step;\n } else if (this._first > this._last && this._current > this._last) {\n r = new RangeResult(this._current, false);\n this._current -= this._step;\n } else if (this._first > this._last && this._current === this._last) {\n r = new RangeResult(this._current, false);\n this._current -= this._step;\n } else if (this._current === this._last) {\n r = new RangeResult(this._current, false);\n this._current -= this._step;\n } else {\n r = new RangeResult(undefined, true);\n }\n return r;\n }\n}\n\nexport class Range implements Iterable<number> {\n public readonly isRange = true;\n\n constructor(\n public first: number,\n public last: number,\n public step: number = 1\n ) {\n }\n\n [Symbol.iterator](): Iterator<number> {\n return new RangeIterator(this.first, this.last, this.step);\n }\n\n map<U>(callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any): U[] {\n return Array.from(this).map(callbackfn);\n }\n\n public static range(first: number | string, last?: number, step: number = 1): Range {\n if (typeof first === 'number' && last === undefined) {\n return new Range(0, first, step);\n } else if (typeof first === 'string') {\n const [_first, _last = '0'] = first.split('..');\n const [__last, _step = '1'] = _last.split(',');\n return new Range(Number(_first.trim()), Number(__last.trim()), Number(_step.trim()));\n } else {\n return new Range(first, last ?? 0, step);\n }\n }\n}\n", "export class AsyncBlockingQueue<T> {\n private _promises: Promise<T>[];\n private _resolvers: ((t: T) => void)[];\n\n constructor() {\n this._resolvers = [];\n this._promises = [];\n }\n\n private _add() {\n this._promises.push(new Promise(resolve => {\n this._resolvers.push(resolve);\n }));\n }\n\n enqueue(t: T) {\n if (!this._resolvers.length) this._add();\n const resolve = this._resolvers.shift()!;\n resolve(t);\n }\n\n dequeue() {\n if (!this._promises.length) this._add();\n const promise = this._promises.shift()!;\n return promise;\n }\n\n isEmpty() {\n return !this._promises.length;\n }\n\n isBlocked() {\n return !!this._resolvers.length;\n }\n\n get length() {\n return this._promises.length - this._resolvers.length;\n }\n}", "export interface CssDeclaration {\n [property: string]: string;\n}\n\n// --- Content item types for maintaining order ---\nexport interface CssDeclarationItem {\n type: 'declaration';\n property: string;\n value: string;\n}\n\nexport interface CssRuleItem {\n type: 'rule';\n rule: CssRule;\n}\n\nexport interface CssCommentItem {\n type: 'comment';\n text: string;\n}\n\nexport type CssContentItem = CssDeclarationItem | CssRuleItem | CssCommentItem;\n\n// --- Base CSS Node Class with common functionality ---\nexport abstract class CssNode {\n public content: CssContentItem[]; // Maintains order of declarations and rules\n\n constructor(content: CssContentItem[] = []) {\n this.content = content;\n }\n\n // --- Computed properties for backward compatibility ---\n public get declarations(): CssDeclaration {\n const declarations: CssDeclaration = {};\n this.content.forEach(item => {\n if (item.type === 'declaration') {\n declarations[item.property] = item.value;\n }\n });\n return declarations;\n }\n\n public get children(): CssRule[] {\n return this.content\n .filter(item => item.type === 'rule')\n .map(item => (item as CssRuleItem).rule);\n }\n\n public abstract stringify(indent?: number): string;\n\n // --- Common Manipulation Methods for content ---\n protected _addRules(rulesToAdd: CssRule[], atIndex?: number): this {\n const ruleItems: CssRuleItem[] = rulesToAdd.map(rule => ({ type: 'rule', rule }));\n if (atIndex === undefined) {\n this.content.push(...ruleItems);\n } else {\n // Find the actual content index for the rule at the given children index\n const ruleContentIndices = this.content\n .map((item, idx) => ({ item, idx }))\n .filter(({ item }) => item.type === 'rule')\n .map(({ idx }) => idx);\n\n const insertIndex = atIndex < ruleContentIndices.length ? ruleContentIndices[atIndex] : this.content.length;\n this.content.splice(insertIndex, 0, ...ruleItems);\n }\n return this;\n }\n\n public append(ruleOrCss: CssRule | string): this {\n const rulesToAdd = CssParser._parseInputToRules(ruleOrCss);\n return this._addRules(rulesToAdd);\n }\n\n public prepend(ruleOrCss: CssRule | string): this {\n const rulesToAdd = CssParser._parseInputToRules(ruleOrCss);\n return this._addRules(rulesToAdd, 0);\n }\n\n public insertAt(index: number, ruleOrCss: CssRule | string): this {\n const rulesToAdd = CssParser._parseInputToRules(ruleOrCss);\n return this._addRules(rulesToAdd, index);\n }\n\n public insertBefore(target: CssRule, newRuleOrCss: CssRule | string): this {\n const contentIndex = this.content.findIndex(item =>\n item.type === 'rule' && item.rule === target\n );\n if (contentIndex > -1) {\n const rulesToAdd = CssParser._parseInputToRules(newRuleOrCss);\n const ruleItems: CssRuleItem[] = rulesToAdd.map(rule => ({ type: 'rule', rule }));\n this.content.splice(contentIndex, 0, ...ruleItems);\n }\n return this;\n }\n\n public insertAfter(target: CssRule, newRuleOrCss: CssRule | string): this {\n const contentIndex = this.content.findIndex(item =>\n item.type === 'rule' && item.rule === target\n );\n if (contentIndex > -1) {\n const rulesToAdd = CssParser._parseInputToRules(newRuleOrCss);\n const ruleItems: CssRuleItem[] = rulesToAdd.map(rule => ({ type: 'rule', rule }));\n this.content.splice(contentIndex + 1, 0, ...ruleItems);\n }\n return this;\n }\n\n public replace(target: CssRule, newRuleOrCss: CssRule | string): this {\n const contentIndex = this.content.findIndex(item =>\n item.type === 'rule' && item.rule === target\n );\n if (contentIndex > -1) {\n const rulesToReplace = CssParser._parseInputToRules(newRuleOrCss);\n const ruleItems: CssRuleItem[] = rulesToReplace.map(rule => ({ type: 'rule', rule }));\n this.content.splice(contentIndex, 1, ...ruleItems);\n }\n return this;\n }\n\n public remove(target: CssRule): this {\n const contentIndex = this.content.findIndex(item =>\n item.type === 'rule' && item.rule === target\n );\n if (contentIndex > -1) {\n this.content.splice(contentIndex, 1);\n }\n return this;\n }\n}\n\n// --- Style Rule Class ---\nexport class StyleRule extends CssNode {\n public selector: string;\n\n constructor(selector: string, content: CssContentItem[] = []) {\n super(content);\n this.selector = selector;\n }\n\n public stringify(indent = 0): string {\n const indentStr = ' '.repeat(indent);\n const innerIndentStr = ' '.repeat(indent + 1);\n\n if (this.content.length === 0) {\n return `${indentStr}${this.selector} {}`;\n }\n\n const contentLines: string[] = [];\n\n for (const item of this.content) {\n if (item.type === 'declaration') {\n const kebabProperty = CssParser._camelToKebab(item.property);\n contentLines.push(`${innerIndentStr}${kebabProperty}: ${item.value};`);\n } else if (item.type === 'rule') {\n contentLines.push(item.rule.stringify(indent + 1));\n } else if (item.type === 'comment') {\n contentLines.push(`${innerIndentStr}/* ${item.text} */`);\n }\n }\n\n const innerContent = contentLines.join('\\n');\n return `${indentStr}${this.selector} {\\n${innerContent}\\n${indentStr}}`;\n }\n}\n\n// --- At Rule Class ---\nexport class AtRule extends CssNode {\n public name: string;\n public condition: string;\n\n constructor(name: string, condition: string, content: CssContentItem[] = []) {\n super(content);\n this.name = name;\n this.condition = condition;\n }\n\n public stringify(indent = 0): string {\n const indentStr = ' '.repeat(indent);\n const innerIndentStr = ' '.repeat(indent + 1);\n const prelude = `@${this.name}${this.condition ? ' ' + this.condition : ''}`;\n\n if (this.content.length === 0) {\n return `${indentStr}${prelude};`;\n }\n\n const contentLines: string[] = [];\n\n for (const item of this.content) {\n if (item.type === 'declaration') {\n const kebabProperty = CssParser._camelToKebab(item.property);\n contentLines.push(`${innerIndentStr}${kebabProperty}: ${item.value};`);\n } else if (item.type === 'rule') {\n contentLines.push(item.rule.stringify(indent + 1));\n } else if (item.type === 'comment') {\n contentLines.push(`${innerIndentStr}/* ${item.text} */`);\n }\n }\n\n const innerContent = contentLines.join('\\n');\n return `${indentStr}${prelude} {\\n${innerContent}\\n${indentStr}}`;\n }\n}\n\nexport type CssRule = StyleRule | AtRule;\n\n// --- The main parser class ---\n\nexport class CssParser extends CssNode {\n constructor(css: string = '') {\n const content = CssParser._parseTopLevel(css);\n super(content);\n }\n\n // --- Accessors ---\n public get rules(): Readonly<CssRule[]> {\n return this.children;\n }\n\n // --- Stringify ---\n public stringify(indent = 0): string {\n if (this.content.length === 0) {\n return '';\n }\n\n const contentLines: string[] = [];\n\n for (const item of this.content) {\n if (item.type === 'declaration') {\n const kebabProperty = CssParser._camelToKebab(item.property);\n contentLines.push(`${kebabProperty}: ${item.value};`);\n } else if (item.type === 'rule') {\n contentLines.push(item.rule.stringify(indent));\n } else if (item.type === 'comment') {\n contentLines.push(`/* ${item.text} */`);\n }\n }\n\n return contentLines.join('\\n');\n }\n\n // --- Static parsing method ---\n private static _parseTopLevel(css: string): CssContentItem[] {\n const cleanedCss = CssParser._cleanCss(css);\n\n // Parse top-level content including comments, declarations, and rules\n return CssParser._parseContent(cleanedCss);\n }\n\n // --- Parsing Logic ---\n private static _cleanCss(css: string): string {\n // Don't remove comments - we'll parse them as content items\n return css.trim();\n }\n\n // --- Universal content parser that handles comments, declarations, and rules ---\n private static _parseContent(css: string): CssContentItem[] {\n const content: CssContentItem[] = [];\n let i = 0;\n\n while (i < css.length) {\n // Skip whitespace\n while (i < css.length && /\\s/.test(css[i])) {\n i++;\n }\n if (i >= css.length) break;\n\n // Handle comments\n if (css[i] === '/' && i + 1 < css.length && css[i + 1] === '*') {\n const commentStart = i + 2;\n let commentEnd = css.indexOf('*/', commentStart);\n if (commentEnd === -1) {\n commentEnd = css.length;\n i = css.length;\n } else {\n const commentText = css.substring(commentStart, commentEnd).trim();\n content.push({ type: 'comment', text: commentText });\n i = commentEnd + 2;\n }\n continue;\n }\n\n // Find the next significant token\n const nextBraceIndex = css.indexOf('{', i);\n const nextSemicolonIndex = css.indexOf(';', i);\n const nextCommentIndex = css.indexOf('/*', i);\n\n // Determine what comes first\n const nextTokens = [\n { type: 'brace', index: nextBraceIndex },\n { type: 'semicolon', index: nextSemicolonIndex },\n { type: 'comment', index: nextCommentIndex }\n ].filter(token => token.index !== -1).sort((a, b) => a.index - b.index);\n\n if (nextTokens.length === 0) {\n // No more tokens, parse remaining as declaration if it contains ':'\n const remaining = css.substring(i).trim();\n if (remaining && remaining.includes(':')) {\n const parts = remaining.split(':');\n if (parts.length >= 2) {\n const prop = parts[0].trim();\n const val = parts.slice(1).join(':').trim();\n if (prop && val) {\n content.push({ type: 'declaration', property: prop, value: val });\n }\n }\n }\n break;\n }\n\n const nextToken = nextTokens[0];\n\n if (nextToken.type === 'comment') {\n // Handle comment (already handled above, but just in case)\n i = nextToken.index;\n continue;\n }\n\n if (nextToken.type === 'brace') {\n // This is a rule (selector or at-rule)\n const prelude = css.substring(i, nextToken.index).trim();\n if (prelude) {\n const blockEndIndex = CssParser._findMatchingBrace(css, nextToken.index);\n if (blockEndIndex !== -1) {\n const blockContent = css.substring(nextToken.index + 1, blockEndIndex).trim();\n\n if (prelude.startsWith('@')) {\n // At-rule\n const name = prelude.match(/^@([^\\s]+)/)?.[1] || 'unknown';\n const condition = prelude.replace(/^@[^\\s]+\\s*/, '').trim();\n const childContent = CssParser._parseContent(blockContent);\n content.push({ type: 'rule', rule: new AtRule(name, condition, childContent) });\n } else {\n // Style rule\n const childContent = CssParser._parseContent(blockContent);\n content.push({ type: 'rule', rule: new StyleRule(prelude, childContent) });\n }\n i = blockEndIndex + 1;\n continue;\n }\n }\n }\n\n if (nextToken.type === 'semicolon') {\n // This could be a declaration or at-rule without block\n const statement = css.substring(i, nextToken.index).trim();\n if (statement) {\n if (statement.startsWith('@')) {\n // At-rule without block\n const name = statement.match(/^@([^\\s]+)/)?.[1] || 'unknown';\n const condition = statement.replace(/^@[^\\s]+\\s*/, '').trim();\n content.push({ type: 'rule', rule: new AtRule(name, condition, []) });\n } else if (statement.includes(':')) {\n // Declaration\n const parts = statement.split(':');\n if (parts.length >= 2) {\n const prop = parts[0].trim();\n const val = parts.slice(1).join(':').trim();\n if (prop && val) {\n content.push({ type: 'declaration', property: prop, value: val });\n }\n }\n }\n }\n i = nextToken.index + 1;\n continue;\n }\n\n // Fallback: move to next character\n i++;\n }\n\n return content;\n }\n\n private static _parseBlockContent(css: string): { content: CssContentItem[] } {\n // Use the universal content parser\n return { content: CssParser._parseContent(css) };\n }\n\n private static _parseRules(css: string): CssRule[] {\n const rules: CssRule[] = [];\n let currentIndex = 0;\n css = css.trim();\n\n const recursiveAtRules = ['media', 'supports', 'container', 'scope', 'layer'];\n\n while (currentIndex < css.length) {\n while (currentIndex < css.length && /\\s/.test(css[currentIndex])) {\n currentIndex++;\n }\n if (currentIndex >= css.length) {\n break;\n }\n\n const nextBraceIndex = css.indexOf('{', currentIndex);\n const nextSemicolonIndex = css.indexOf(';', currentIndex);\n\n if (nextBraceIndex !== -1 && (nextBraceIndex < nextSemicolonIndex || nextSemicolonIndex === -1)) {\n const prelude = css.substring(currentIndex, nextBraceIndex).trim();\n if (!prelude) {\n currentIndex = nextBraceIndex + 1;\n continue;\n }\n\n const blockEndIndex = CssParser._findMatchingBrace(css, nextBraceIndex);\n if (blockEndIndex === -1) {\n console.error(\"Malformed CSS: No matching brace for selector -> \", prelude);\n return rules;\n }\n\n const blockContent = css.substring(nextBraceIndex + 1, blockEndIndex).trim();\n\n if (prelude.startsWith('@')) {\n const name = prelude.match(/^@([^\\s]+)/)?.[1] || 'unknown';\n const condition = prelude.replace(/^@[^\\s]+\\s*/, '').trim();\n const content = CssParser._parseContent(blockContent);\n rules.push(new AtRule(name, condition, content));\n } else {\n const content = CssParser._parseContent(blockContent);\n rules.push(new StyleRule(prelude, content));\n }\n currentIndex = blockEndIndex + 1;\n\n } else if (nextSemicolonIndex !== -1) {\n const statement = css.substring(currentIndex, nextSemicolonIndex).trim();\n if (statement.startsWith('@')) {\n const name = statement.match(/^@([^\\s]+)/)?.[1] || 'unknown';\n const condition = statement.replace(/^@[^\\s]+\\s*/, '').trim();\n rules.push(new AtRule(name, condition, []));\n }\n currentIndex = nextSemicolonIndex + 1;\n } else {\n break;\n }\n }\n return rules;\n }\n\n private static _findMatchingBrace(str: string, startIndex: number): number {\n let depth = 1;\n for (let i = startIndex + 1; i < str.length; i++) {\n if (str[i] === '{') {\n depth++;\n } else if (str[i] === '}') {\n depth--;\n if (depth === 0) {\n return i;\n }\n }\n }\n return -1;\n }\n\n private static _parseDeclarations(declarationString: string): CssDeclaration {\n const declarations: CssDeclaration = {};\n const declarationPairs = declarationString.split(';');\n\n for (const pair of declarationPairs) {\n if (pair.trim() === '') {\n continue;\n }\n const parts = pair.split(':');\n if (parts.length >= 2) {\n const property = parts[0].trim();\n const value = parts.slice(1).join(':').trim();\n if (property && value) {\n declarations[property] = value;\n }\n }\n }\n return declarations;\n }\n\n public static _declarationsToCSS(declarations: CssDeclaration, indent: number): string {\n const indentStr = ' '.repeat(indent);\n return Object.entries(declarations)\n .map(([prop, value]) => `${indentStr}${CssParser._camelToKebab(prop)}: ${value};`)\n .join('\\n');\n }\n\n public static _camelToKebab(camelCase: string): string {\n return camelCase.replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g, '$1-$2').toLowerCase();\n }\n\n // Helper to parse string input to CssRule[]\n public static _parseInputToRules(ruleOrCss: CssRule | string): CssRule[] {\n if (typeof ruleOrCss === 'string') {\n const parsed = new CssParser(ruleOrCss).rules;\n if (parsed.length === 0) {\n console.warn('Provided CSS string resulted in no rules.');\n }\n return [...parsed];\n } else {\n return [ruleOrCss];\n }\n }\n}\n\n// --- Type Guards ---\n\nexport function isRule(obj: any): obj is CssRule {\n return obj instanceof StyleRule || obj instanceof AtRule;\n}\n\nexport function isStyleRule(rule: any): rule is StyleRule {\n return rule instanceof StyleRule;\n}\n\nexport function isAtRule(rule: any): rule is AtRule {\n return rule instanceof AtRule;\n}\n\nexport function isCssDeclarationItem(item: any): item is CssDeclarationItem {\n return item && typeof item === 'object' && item.type === 'declaration' &&\n typeof item.property === 'string' && typeof item.value === 'string';\n}\n\nexport function isCssRuleItem(item: any): item is CssRuleItem {\n return item && typeof item === 'object' && item.type === 'rule' && isRule(item.rule);\n}\n\nexport function isCssCommentItem(item: any): item is CssCommentItem {\n return item && typeof item === 'object' && item.type === 'comment' && typeof item.text === 'string';\n}", "export abstract class Advice<T = any, R = any, C = any> {\n abstract exception(e: T, context?: C): Promise<R>;\n abstract isSupport(e: T, context?: C): Promise<boolean>;\n}\n", "import { Code } from './Code';\n\nexport enum IOS3166_1_Code {\nGHA = 'GHA',\nGAB = 'GAB',\nGUY = 'GUY',\nGMB = 'GMB',\nGGY = 'GGY',\nGLP = 'GLP',\nGTM = 'GTM',\nGUM = 'GUM',\nGRD = 'GRD',\nGRC = 'GRC',\nGRL = 'GRL',\nGIN = 'GIN',\nGNB = 'GNB',\nNAM = 'NAM',\nNRU = 'NRU',\nNGA = 'NGA',\nATA = 'ATA',\nSSD = 'SSD',\nZAF = 'ZAF',\nNLD = 'NLD',\nNPL = 'NPL',\nNOR = 'NOR',\nNFK = 'NFK',\nNCL = 'NCL',\nNZL = 'NZL',\nNIU = 'NIU',\nNER = 'NER',\nNIC = 'NIC',\nKOR = 'KOR',\nDNK = 'DNK',\nDOM = 'DOM',\nDMA = 'DMA',\nDEU = 'DEU',\nTLS = 'TLS',\nLAO = 'LAO',\nLBR = 'LBR',\nLVA = 'LVA',\nRUS = 'RUS',\nLBN = 'LBN',\nLSO = 'LSO',\nREU = 'REU',\nROU = 'ROU',\nLUX = 'LUX',\nRWA = 'RWA',\nLBY = 'LBY',\nLTU = 'LTU',\nLIE = 'LIE',\nMDG = 'MDG',\nMTQ = 'MTQ',\nMHL = 'MHL',\nMYT = 'MYT',\nMAC = 'MAC',\nMKD = 'MKD',\nMWI = 'MWI',\nMYS = 'MYS',\nMLI = 'MLI',\nIMN = 'IMN',\nMEX = 'MEX',\nMCO = 'MCO',\nMAR = 'MAR',\nMUS = 'MUS',\nMRT = 'MRT',\nMOZ = 'MOZ',\nMNE = 'MNE',\nMSR = 'MSR',\nMDA = 'MDA',\nMDV = 'MDV',\nMLT = 'MLT',\nMNG = 'MNG',\nUSA = 'USA',\nUMI = 'UMI',\nVIR = 'VIR',\nMMR = 'MMR',\nFSM = 'FSM',\nVUT = 'VUT',\nBHR = 'BHR',\nBRB = 'BRB',\nVAT = 'VAT',\nBHS = 'BHS',\nBGD = 'BGD',\nBMU = 'BMU',\nBEN = 'BEN',\nVEN = 'VEN',\nVNM = 'VNM',\nBEL = 'BEL',\nBLR = 'BLR',\nBLZ = 'BLZ',\nBES = 'BES',\nBIH = 'BIH',\nBWA = 'BWA',\nBOL = 'BOL',\nBDI = 'BDI',\nBFA = 'BFA',\nBVT = 'BVT',\nBTN = 'BTN',\nMNP = 'MNP',\nBGR = 'BGR',\nBRA = 'BRA',\nBRN = 'BRN',\nWSM = 'WSM',\nSAU = 'SAU',\nSGS = 'SGS',\nSMR = 'SMR',\nSTP = 'STP',\nMAF = 'MAF',\nBLM = 'BLM',\nSPM = 'SPM',\nESH = 'ESH',\nSEN = 'SEN',\nSRB = 'SRB',\nSYC = 'SYC',\nLCA = 'LCA',\nVCT = 'VCT',\nKNA = 'KNA',\nSHN = 'SHN',\nSOM = 'SOM',\nSLB = 'SLB',\nSDN = 'SDN',\nSUR = 'SUR',\nLKA = 'LKA',\nSJM = 'SJM',\nSWE = 'SWE',\nCHE = 'CHE',\nESP = 'ESP',\nSVK = 'SVK',\nSVN = 'SVN',\nSYR = 'SYR',\nSLE = 'SLE',\nSXM = 'SXM',\nSGP = 'SGP',\nARE = 'ARE',\nABW = 'ABW',\nARM = 'ARM',\nARG = 'ARG',\nASM = 'ASM',\nISL = 'ISL',\nHTI = 'HTI',\nIRL = 'IRL',\nAZE = 'AZE',\nAFG = 'AFG',\nAND = 'AND',\nALB = 'ALB',\nDZA = 'DZA',\nAGO = 'AGO',\nATG = 'ATG',\nAIA = 'AIA',\nERI = 'ERI',\nSWZ = 'SWZ',\nEST = 'EST',\nECU = 'ECU',\nETH = 'ETH',\nSLV = 'SLV',\nGBR = 'GBR',\nVGB = 'VGB',\nIOT = 'IOT',\nYEM = 'YEM',\nOMN = 'OMN',\nAUS = 'AUS',\nAUT = 'AUT',\nHND = 'HND',\nALA = 'ALA',\nJOR = 'JOR',\nUGA = 'UGA',\nURY = 'URY',\nUZB = 'UZB',\nUKR = 'UKR',\nWLF = 'WLF',\nIRQ = 'IRQ',\nIRN = 'IRN',\nISR = 'ISR',\nEGY = 'EGY',\nITA = 'ITA',\nIND = 'IND',\nIDN = 'IDN',\nJPN = 'JPN',\nJAM = 'JAM',\nZMB = 'ZMB',\nJEY = 'JEY',\nGNQ = 'GNQ',\nPRK = 'PRK',\nGEO = 'GEO',\nCHN = 'CHN',\nCAF = 'CAF',\nDJI = 'DJI',\nGIB = 'GIB',\nZWE = 'ZWE',\nTCD = 'TCD',\nCZE = 'CZE',\nCHL = 'CHL',\nCMR = 'CMR',\nCPV = 'CPV',\nKAZ = 'KAZ',\nQAT = 'QAT',\nKHM = 'KHM',\nCAN = 'CAN',\nKEN = 'KEN',\nCYM = 'CYM',\nCOM = 'COM',\nCRI = 'CRI',\nCCK = 'CCK',\nCIV = 'CIV',\nCOL = 'COL',\nCOG = 'COG',\nCOD = 'COD',\nCUB = 'CUB',\nKWT = 'KWT',\nCOK = 'COK',\nCUW = 'CUW',\nHRV = 'HRV',\nCXR = 'CXR',\nKGZ = 'KGZ',\nKIR = 'KIR',\nCYP = 'CYP',\nTWN = 'TWN',\nTJK = 'TJK',\nTZA = 'TZA',\nTHA = 'THA',\nTCA = 'TCA',\nTUR = 'TUR',\nTGO = 'TGO',\nTKL = 'TKL',\nTON = 'TON',\nTKM = 'TKM',\nTUV = 'TUV',\nTUN = 'TUN',\nTTO = 'TTO',\nPAN = 'PAN',\nPRY = 'PRY',\nPAK = 'PAK',\nPNG = 'PNG',\nPLW = 'PLW',\nPSE = 'PSE',\nFRO = 'FRO',\nPER = 'PER',\nPRT = 'PRT',\nFLK = 'FLK',\nPOL = 'POL',\nPRI = 'PRI',\nFRA = 'FRA',\nGUF = 'GUF',\nATF = 'ATF',\nPYF = 'PYF',\nFJI = 'FJI',\nFIN = 'FIN',\nPHL = 'PHL',\nPCN = 'PCN',\nHMD = 'HMD',\nHUN = 'HUN',\nHKG = 'HKG',\n}\n\n\nexport type IOS3166_1_CodeDescriptionDataType = { alpha3: string, alpha2: string, emoji: string, img: string, num: number, en: string, ko: string };\nexport const IOS3166_1_CodeDescription: Record<IOS3166_1_Code, Code<IOS3166_1_CodeDescriptionDataType>> = {\n [IOS3166_1_Code.GHA]: { description: '', data: {emoji:'\uD83C\uDDEC\uD83C\uDDED', alpha2: 'GH', alpha3:'GHA', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/1/19/Flag_of_Ghana.svg/22px-Flag_of_Ghana.svg.png',ko:'\uAC00\uB098', num:288,en:'Ghana'} },\n [IOS3166_1_Code.GAB]: { description: '', data: {emoji:'\uD83C\uDDEC\uD83C\uDDE6', alpha2: 'GA', alpha3:'GAB', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/0/04/Flag_of_Gabon.svg/40px-Flag_of_Gabon.svg.png',ko:'\uAC00\uBD09', num:266,en:'Gabon'} },\n [IOS3166_1_Code.GUY]: { description: '', data: {emoji:'\uD83C\uDDEC\uD83C\uDDFE', alpha2: 'GY', alpha3:'GUY', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/9/99/Flag_of_Guyana.svg/40px-Flag_of_Guyana.svg.png',ko:'\uAC00\uC774\uC544\uB098', num:328,en:'Guyana'} },\n [IOS3166_1_Code.GMB]: { description: '', data: {emoji:'\uD83C\uDDEC\uD83C\uDDF2', alpha2: 'GM', alpha3:'GMB', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/7/77/Flag_of_The_Gambia.svg/40px-Flag_of_The_Gambia.svg.png',ko:'\uAC10\uBE44\uC544', num:270,en:'Gambia'} },\n [IOS3166_1_Code.GGY]: { description: '', data: {emoji:'\uD83C\uDDEC\uD83C\uDDEC', alpha2: 'GG', alpha3:'GGY', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/f/fa/Flag_of_Guernsey.svg/40px-Flag_of_Guernsey.svg.png',ko:'\uAC74\uC9C0\uC12C', num:831,en:'Guernsey Island'} },\n [IOS3166_1_Code.GLP]: { description: '', data: {emoji:'\uD83C\uDDEC\uD83C\uDDF5', alpha2: 'GP', alpha3:'GLP', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/b/b5/Flag_of_France_%282020%E2%80%93present%29.svg/22px-Flag_of_France_%282020%E2%80%93present%29.svg.png',ko:'\uACFC\uB4E4\uB8E8\uD504', num:312,en:'Guadeloupe'} },\n [IOS3166_1_Code.GTM]: { description: '', data: {emoji:'\uD83C\uDDEC\uD83C\uDDF9', alpha2: 'GT', alpha3:'GTM', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/e/ec/Flag_of_Guatemala.svg/40px-Flag_of_Guatemala.svg.png',ko:'\uACFC\uD14C\uB9D0\uB77C', num:320,en:'Guatemala'} },\n [IOS3166_1_Code.GUM]: { description: '', data: {emoji:'\uD83C\uDDEC\uD83C\uDDFA', alpha2: 'GU', alpha3:'GUM', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/0/07/Flag_of_Guam.svg/40px-Flag_of_Guam.svg.png',ko:'\uAD0C', num:316,en:'Guam'} },\n [IOS3166_1_Code.GRD]: { description: '', data: {emoji:'\uD83C\uDDEC\uD83C\uDDE9', alpha2: 'GD', alpha3:'GRD', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/b/bc/Flag_of_Grenada.svg/22px-Flag_of_Grenada.svg.png',ko:'\uADF8\uB808\uB098\uB2E4', num:308,en:'Grenada'} },\n [IOS3166_1_Code.GRC]: { description: '', data: {emoji:'\uD83C\uDDEC\uD83C\uDDF7', alpha2: 'GR', alpha3:'GRC', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/5/5c/Flag_of_Greece.svg/40px-Flag_of_Greece.svg.png',ko:'\uADF8\uB9AC\uC2A4', num:300,en:'Greece'} },\n [IOS3166_1_Code.GRL]: { description: '', data: {emoji:'\uD83C\uDDEC\uD83C\uDDF1', alpha2: 'GL', alpha3:'GRL', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/0/09/Flag_of_Greenland.svg/22px-Flag_of_Greenland.svg.png',ko:'\uADF8\uB9B0\uB780\uB4DC', num:304,en:'Greenland'} },\n [IOS3166_1_Code.GIN]: { description: '', data: {emoji:'\uD83C\uDDEC\uD83C\uDDF3', alpha2: 'GN', alpha3:'GIN', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/e/ed/Flag_of_Guinea.svg/22px-Flag_of_Guinea.svg.png',ko:'\uAE30\uB2C8', num:324,en:'Guineas'} },\n [IOS3166_1_Code.GNB]: { description: '', data: {emoji:'\uD83C\uDDEC\uD83C\uDDFC', alpha2: 'GW', alpha3:'GNB', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/0/01/Flag_of_Guinea-Bissau.svg/22px-Flag_of_Guinea-Bissau.svg.png',ko:'\uAE30\uB2C8\uBE44\uC0AC\uC6B0', num:624,en:'Guinea-Bissau'} },\n [IOS3166_1_Code.NAM]: { description: '', data: {emoji:'\uD83C\uDDF3\uD83C\uDDE6', alpha2: 'NA', alpha3:'NAM', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/0/00/Flag_of_Namibia.svg/22px-Flag_of_Namibia.svg.png',ko:'\uB098\uBBF8\uBE44\uC544', num:516,en:'Namibia'} },\n [IOS3166_1_Code.NRU]: { description: '', data: {emoji:'\uD83C\uDDF3\uD83C\uDDF7', alpha2: 'NR', alpha3:'NRU', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/3/30/Flag_of_Nauru.svg/40px-Flag_of_Nauru.svg.png',ko:'\uB098\uC6B0\uB8E8', num:520,en:'Nauru'} },\n [IOS3166_1_Code.NGA]: { description: '', data: {emoji:'\uD83C\uDDF3\uD83C\uDDEC', alpha2: 'NG', alpha3:'NGA', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/7/79/Flag_of_Nigeria.svg/22px-Flag_of_Nigeria.svg.png',ko:'\uB098\uC774\uC9C0\uB9AC\uC544', num:566,en:'Nigeria'} },\n [IOS3166_1_Code.ATA]: { description: '', data: {emoji:'\uD83C\uDDE6\uD83C\uDDF6', alpha2: 'AQ', alpha3:'ATA', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/b/bb/Proposed_flag_of_Antarctica_%28Graham_Bartram%29.svg/40px-Proposed_flag_of_Antarctica_%28Graham_Bartram%29.svg.png',ko:'\uB0A8\uADF9', num:10,en:'Antarctica'} },\n [IOS3166_1_Code.SSD]: { description: '', data: {emoji:'\uD83C\uDDF8\uD83C\uDDF8', alpha2: 'SS', alpha3:'SSD', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/7/7a/Flag_of_South_Sudan.svg/40px-Flag_of_South_Sudan.svg.png',ko:'\uB0A8\uC218\uB2E8', num:728,en:'South Sudan'} },\n [IOS3166_1_Code.ZAF]: { description: '', data: {emoji:'\uD83C\uDDFF\uD83C\uDDE6', alpha2: 'ZA', alpha3:'ZAF', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/a/af/Flag_of_South_Africa.svg/40px-Flag_of_South_Africa.svg.png',ko:'\uB0A8\uC544\uD504\uB9AC\uCE74 \uACF5\uD654\uAD6D', num:710,en:'South Africa'} },\n [IOS3166_1_Code.NLD]: { description: '', data: {emoji:'\uD83C\uDDF3\uD83C\uDDF1', alpha2: 'NL', alpha3:'NLD', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/2/20/Flag_of_the_Netherlands.svg/22px-Flag_of_the_Netherlands.svg.png',ko:'\uB124\uB35C\uB780\uB4DC', num:528,en:'Netherlands'} },\n [IOS3166_1_Code.NPL]: { description: '', data: {emoji:'\uD83C\uDDF3\uD83C\uDDF5', alpha2: 'NP', alpha3:'NPL', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/9/9b/Flag_of_Nepal.svg/20px-Flag_of_Nepal.svg.png',ko:'\uB124\uD314', num:524,en:'Nepal'} },\n [IOS3166_1_Code.NOR]: { description: '', data: {emoji:'\uD83C\uDDF3\uD83C\uDDF4', alpha2: 'NO', alpha3:'NOR', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/d/d9/Flag_of_Norway.svg/40px-Flag_of_Norway.svg.png',ko:'\uB178\uB974\uC6E8\uC774', num:578,en:'Norway'} },\n [IOS3166_1_Code.NFK]: { description: '', data: {emoji:'\uD83C\uDDF3\uD83C\uDDEB', alpha2: 'NF', alpha3:'NFK', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/4/48/Flag_of_Norfolk_Island.svg/22px-Flag_of_Norfolk_Island.svg.png',ko:'\uB178\uD37D\uC12C', num:574,en:'Norfolk Island'} },\n [IOS3166_1_Code.NCL]: { description: '', data: {emoji:'\uD83C\uDDF3\uD83C\uDDE8', alpha2: 'NC', alpha3:'NCL', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/2/26/Flags_of_New_Caledonia.svg/60px-Flags_of_New_Caledonia.svg.png',ko:'\uB204\uBCA8\uCE7C\uB808\uB3C4\uB2C8', num:540,en:'Nouvel Caledoni'} },\n [IOS3166_1_Code.NZL]: { description: '', data: {emoji:'\uD83C\uDDF3\uD83C\uDDFF', alpha2: 'NZ', alpha3:'NZL', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/3/3e/Flag_of_New_Zealand.svg/40px-Flag_of_New_Zealand.svg.png',ko:'\uB274\uC9C8\uB79C\uB4DC', num:554,en:'New Zealand'} },\n [IOS3166_1_Code.NIU]: { description: '', data: {emoji:'\uD83C\uDDF3\uD83C\uDDFA', alpha2: 'NU', alpha3:'NIU', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/0/01/Flag_of_Niue.svg/22px-Flag_of_Niue.svg.png',ko:'\uB2C8\uC6B0\uC5D0', num:570,en:'in the near future'} },\n [IOS3166_1_Code.NER]: { description: '', data: {emoji:'\uD83C\uDDF3\uD83C\uDDEA', alpha2: 'NE', alpha3:'NER', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/f/f4/Flag_of_Niger.svg/40px-Flag_of_Niger.svg.png',ko:'\uB2C8\uC81C\uB974', num:562,en:'Niger'} },\n [IOS3166_1_Code.NIC]: { description: '', data: {emoji:'\uD83C\uDDF3\uD83C\uDDEE', alpha2: 'NI', alpha3:'NIC', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/1/19/Flag_of_Nicaragua.svg/40px-Flag_of_Nicaragua.svg.png',ko:'\uB2C8\uCE74\uB77C\uACFC', num:558,en:'Nicaragua'} },\n [IOS3166_1_Code.KOR]: { description: '', data: {emoji:'\uD83C\uDDF0\uD83C\uDDF7', alpha2: 'KR', alpha3:'KOR', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/0/09/Flag_of_South_Korea.svg/40px-Flag_of_South_Korea.svg.png',ko:'\uB300\uD55C\uBBFC\uAD6D', num:410,en:'Republic of Korea'} },\n [IOS3166_1_Code.DNK]: { description: '', data: {emoji:'\uD83C\uDDE9\uD83C\uDDF0', alpha2: 'DK', alpha3:'DNK', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/9/9c/Flag_of_Denmark.svg/22px-Flag_of_Denmark.svg.png',ko:'\uB374\uB9C8\uD06C', num:208,en:'Denmark'} },\n [IOS3166_1_Code.DOM]: { description: '', data: {emoji:'\uD83C\uDDE9\uD83C\uDDF4', alpha2: 'DO', alpha3:'DOM', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/9/9f/Flag_of_the_Dominican_Republic.svg/40px-Flag_of_the_Dominican_Republic.svg.png',ko:'\uB3C4\uBBF8\uB2C8\uCE74 \uACF5\uD654\uAD6D', num:214,en:'Dominican Republic'} },\n [IOS3166_1_Code.DMA]: { description: '', data: {emoji:'\uD83C\uDDE9\uD83C\uDDF2', alpha2: 'DM', alpha3:'DMA', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/c/c4/Flag_of_Dominica.svg/22px-Flag_of_Dominica.svg.png',ko:'\uB3C4\uBBF8\uB2C8\uCE74 \uC5F0\uBC29', num:212,en:'Union of Dominicans'} },\n [IOS3166_1_Code.DEU]: { description: '', data: {emoji:'\uD83C\uDDE9\uD83C\uDDEA', alpha2: 'DE', alpha3:'DEU', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/b/ba/Flag_of_Germany.svg/22px-Flag_of_Germany.svg.png',ko:'\uB3C5\uC77C', num:276,en:'Germany'} },\n [IOS3166_1_Code.TLS]: { description: '', data: {emoji:'\uD83C\uDDF9\uD83C\uDDF1', alpha2: 'TL', alpha3:'TLS', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/2/26/Flag_of_East_Timor.svg/40px-Flag_of_East_Timor.svg.png',ko:'\uB3D9\uD2F0\uBAA8\uB974', num:626,en:'East Timor'} },\n [IOS3166_1_Code.LAO]: { description: '', data: {emoji:'\uD83C\uDDF1\uD83C\uDDE6', alpha2: 'LA', alpha3:'LAO', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/5/56/Flag_of_Laos.svg/40px-Flag_of_Laos.svg.png',ko:'\uB77C\uC624\uC2A4', num:418,en:'Laos'} },\n [IOS3166_1_Code.LBR]: { description: '', data: {emoji:'\uD83C\uDDF1\uD83C\uDDF7', alpha2: 'LR', alpha3:'LBR', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/b/b8/Flag_of_Liberia.svg/40px-Flag_of_Liberia.svg.png',ko:'\uB77C\uC774\uBCA0\uB9AC\uC544', num:430,en:'Liberia'} },\n [IOS3166_1_Code.LVA]: { description: '', data: {emoji:'\uD83C\uDDF1\uD83C\uDDFB', alpha2: 'LV', alpha3:'LVA', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/8/84/Flag_of_Latvia.svg/40px-Flag_of_Latvia.svg.png',ko:'\uB77C\uD2B8\uBE44\uC544', num:428,en:'Latvia'} },\n [IOS3166_1_Code.RUS]: { description: '', data: {emoji:'\uD83C\uDDF7\uD83C\uDDFA', alpha2: 'RU', alpha3:'RUS', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/f/f3/Flag_of_Russia.svg/40px-Flag_of_Russia.svg.png',ko:'\uB7EC\uC2DC\uC544', num:643,en:'Russia'} },\n [IOS3166_1_Code.LBN]: { description: '', data: {emoji:'\uD83C\uDDF1\uD83C\uDDE7', alpha2: 'LB', alpha3:'LBN', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/5/59/Flag_of_Lebanon.svg/40px-Flag_of_Lebanon.svg.png',ko:'\uB808\uBC14\uB17C', num:422,en:'Lebanon'} },\n [IOS3166_1_Code.LSO]: { description: '', data: {emoji:'\uD83C\uDDF1\uD83C\uDDF8', alpha2: 'LS', alpha3:'LSO', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/4/4a/Flag_of_Lesotho.svg/40px-Flag_of_Lesotho.svg.png',ko:'\uB808\uC18C\uD1A0', num:426,en:'Lesotho'} },\n [IOS3166_1_Code.REU]: { description: '', data: {emoji:'\uD83C\uDDF7\uD83C\uDDEA', alpha2: 'RE', alpha3:'REU', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/b/b5/Flag_of_France_%282020%E2%80%93present%29.svg/22px-Flag_of_France_%282020%E2%80%93present%29.svg.png',ko:'\uB808\uC704\uB2C8\uC639', num:638,en:'R\u00E9union'} },\n [IOS3166_1_Code.ROU]: { description: '', data: {emoji:'\uD83C\uDDF7\uD83C\uDDF4', alpha2: 'RO', alpha3:'ROU', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/7/73/Flag_of_Romania.svg/22px-Flag_of_Romania.svg.png',ko:'\uB8E8\uB9C8\uB2C8\uC544', num:642,en:'Romania'} },\n [IOS3166_1_Code.LUX]: { description: '', data: {emoji:'\uD83C\uDDF1\uD83C\uDDFA', alpha2: 'LU', alpha3:'LUX', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/d/da/Flag_of_Luxembourg.svg/40px-Flag_of_Luxembourg.svg.png',ko:'\uB8E9\uC148\uBD80\uB974\uD06C', num:442,en:'Luxembourg'} },\n [IOS3166_1_Code.RWA]: { description: '', data: {emoji:'\uD83C\uDDF7\uD83C\uDDFC', alpha2: 'RW', alpha3:'RWA', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/1/17/Flag_of_Rwanda.svg/22px-Flag_of_Rwanda.svg.png',ko:'\uB974\uC644\uB2E4', num:646,en:'Rwanda'} },\n [IOS3166_1_Code.LBY]: { description: '', data: {emoji:'\uD83C\uDDF1\uD83C\uDDFE', alpha2: 'LY', alpha3:'LBY', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/0/05/Flag_of_Libya.svg/40px-Flag_of_Libya.svg.png',ko:'\uB9AC\uBE44\uC544', num:434,en:'Libya'} },\n [IOS3166_1_Code.LTU]: { description: '', data: {emoji:'\uD83C\uDDF1\uD83C\uDDF9', alpha2: 'LT', alpha3:'LTU', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/1/11/Flag_of_Lithuania.svg/40px-Flag_of_Lithuania.svg.png',ko:'\uB9AC\uD22C\uC544\uB2C8\uC544', num:440,en:'Lithuania'} },\n [IOS3166_1_Code.LIE]: { description: '', data: {emoji:'\uD83C\uDDF1\uD83C\uDDEE', alpha2: 'LI', alpha3:'LIE', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/4/47/Flag_of_Liechtenstein.svg/40px-Flag_of_Liechtenstein.svg.png',ko:'\uB9AC\uD788\uD150\uC288\uD0C0\uC778', num:438,en:'Liechtenstein'} },\n [IOS3166_1_Code.MDG]: { description: '', data: {emoji:'\uD83C\uDDF2\uD83C\uDDEC', alpha2: 'MG', alpha3:'MDG', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/b/bc/Flag_of_Madagascar.svg/40px-Flag_of_Madagascar.svg.png',ko:'\uB9C8\uB2E4\uAC00\uC2A4\uCE74\uB974', num:450,en:'Madagascar.'} },\n [IOS3166_1_Code.MTQ]: { description: '', data: {emoji:'\uD83C\uDDF2\uD83C\uDDF6', alpha2: 'MQ', alpha3:'MTQ', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/2/27/Flag-of-Martinique.svg/22px-Flag-of-Martinique.svg.png',ko:'\uB9C8\uB974\uD2F0\uB2C8\uD06C', num:474,en:'Martinique'} },\n [IOS3166_1_Code.MHL]: { description: '', data: {emoji:'\uD83C\uDDF2\uD83C\uDDED', alpha2: 'MH', alpha3:'MHL', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/2/2e/Flag_of_the_Marshall_Islands.svg/40px-Flag_of_the_Marshall_Islands.svg.png',ko:'\uB9C8\uC15C \uC81C\uB3C4', num:584,en:'Marshall Islands'} },\n [IOS3166_1_Code.MYT]: { description: '', data: {emoji:'\uD83C\uDDFE\uD83C\uDDF9', alpha2: 'YT', alpha3:'MYT', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/b/b5/Flag_of_France_%282020%E2%80%93present%29.svg/22px-Flag_of_France_%282020%E2%80%93present%29.svg.png',ko:'\uB9C8\uC694\uD2B8', num:175,en:'Mayotte'} },\n [IOS3166_1_Code.MAC]: { description: '', data: {emoji:'\uD83C\uDDF2\uD83C\uDDF4', alpha2: 'MO', alpha3:'MAC', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/6/63/Flag_of_Macau.svg/40px-Flag_of_Macau.svg.png',ko:'\uB9C8\uCE74\uC624', num:446,en:'Macau'} },\n [IOS3166_1_Code.MKD]: { description: '', data: {emoji:'\uD83C\uDDF2\uD83C\uDDF0', alpha2: 'MK', alpha3:'MKD', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/7/79/Flag_of_North_Macedonia.svg/40px-Flag_of_North_Macedonia.svg.png',ko:'\uBD81\uB9C8\uCF00\uB3C4\uB2C8\uC544', num:807,en:'North Macedonia'} },\n [IOS3166_1_Code.MWI]: { description: '', data: {emoji:'\uD83C\uDDF2\uD83C\uDDFC', alpha2: 'MW', alpha3:'MWI', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/d/d1/Flag_of_Malawi.svg/22px-Flag_of_Malawi.svg.png',ko:'\uB9D0\uB77C\uC704', num:454,en:'Malawi'} },\n [IOS3166_1_Code.MYS]: { description: '', data: {emoji:'\uD83C\uDDF2\uD83C\uDDFE', alpha2: 'MY', alpha3:'MYS', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/6/66/Flag_of_Malaysia.svg/22px-Flag_of_Malaysia.svg.png',ko:'\uB9D0\uB808\uC774\uC2DC\uC544', num:458,en:'Malaysia'} },\n [IOS3166_1_Code.MLI]: { description: '', data: {emoji:'\uD83C\uDDF2\uD83C\uDDF1', alpha2: 'ML', alpha3:'MLI', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/9/92/Flag_of_Mali.svg/40px-Flag_of_Mali.svg.png',ko:'\uB9D0\uB9AC', num:466,en:'Marley'} },\n [IOS3166_1_Code.IMN]: { description: '', data: {emoji:'\uD83C\uDDEE\uD83C\uDDF2', alpha2: 'IM', alpha3:'IMN', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/5/5d/Flag_of_the_Isle_of_Mann.svg/40px-Flag_of_the_Isle_of_Mann.svg.png',ko:'\uB9E8\uC12C', num:833,en:'Isle of Man'} },\n [IOS3166_1_Code.MEX]: { description: '', data: {emoji:'\uD83C\uDDF2\uD83C\uDDFD', alpha2: 'MX', alpha3:'MEX', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/f/fc/Flag_of_Mexico.svg/40px-Flag_of_Mexico.svg.png',ko:'\uBA55\uC2DC\uCF54', num:484,en:'Mexico'} },\n [IOS3166_1_Code.MCO]: { description: '', data: {emoji:'\uD83C\uDDF2\uD83C\uDDE8', alpha2: 'MC', alpha3:'MCO', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/e/ea/Flag_of_Monaco.svg/22px-Flag_of_Monaco.svg.png',ko:'\uBAA8\uB098\uCF54', num:492,en:'Monaco'} },\n [IOS3166_1_Code.MAR]: { description: '', data: {emoji:'\uD83C\uDDF2\uD83C\uDDE6', alpha2: 'MA', alpha3:'MAR', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/2/2c/Flag_of_Morocco.svg/40px-Flag_of_Morocco.svg.png',ko:'\uBAA8\uB85C\uCF54', num:504,en:'Morocco, the Republic of Korea'} },\n [IOS3166_1_Code.MUS]: { description: '', data: {emoji:'\uD83C\uDDF2\uD83C\uDDFA', alpha2: 'MU', alpha3:'MUS', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/7/77/Flag_of_Mauritius.svg/40px-Flag_of_Mauritius.svg.png',ko:'\uBAA8\uB9AC\uC154\uC2A4', num:480,en:'Mauritius'} },\n [IOS3166_1_Code.MRT]: { description: '', data: {emoji:'\uD83C\uDDF2\uD83C\uDDF7', alpha2: 'MR', alpha3:'MRT', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/4/43/Flag_of_Mauritania.svg/40px-Flag_of_Mauritania.svg.png',ko:'\uBAA8\uB9AC\uD0C0\uB2C8', num:478,en:'Mauritania'} },\n [IOS3166_1_Code.MOZ]: { description: '', data: {emoji:'\uD83C\uDDF2\uD83C\uDDFF', alpha2: 'MZ', alpha3:'MOZ', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/d/d0/Flag_of_Mozambique.svg/40px-Flag_of_Mozambique.svg.png',ko:'\uBAA8\uC7A0\uBE44\uD06C', num:508,en:'Mozambique'} },\n [IOS3166_1_Code.MNE]: { description: '', data: {emoji:'\uD83C\uDDF2\uD83C\uDDEA', alpha2: 'ME', alpha3:'MNE', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/6/64/Flag_of_Montenegro.svg/40px-Flag_of_Montenegro.svg.png',ko:'\uBAAC\uD14C\uB124\uADF8\uB85C', num:499,en:'Montenegro'} },\n [IOS3166_1_Code.MSR]: { description: '', data: {emoji:'\uD83C\uDDF2\uD83C\uDDF8', alpha2: 'MS', alpha3:'MSR', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/d/d0/Flag_of_Montserrat.svg/22px-Flag_of_Montserrat.svg.png',ko:'\uBAAC\uD2B8\uC138\uB7AB', num:500,en:'Mont-Serrat'} },\n [IOS3166_1_Code.MDA]: { description: '', data: {emoji:'\uD83C\uDDF2\uD83C\uDDE9', alpha2: 'MD', alpha3:'MDA', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/2/27/Flag_of_Moldova.svg/40px-Flag_of_Moldova.svg.png',ko:'\uBAB0\uB3C4\uBC14', num:498,en:'Moldova'} },\n [IOS3166_1_Code.MDV]: { description: '', data: {emoji:'\uD83C\uDDF2\uD83C\uDDFB', alpha2: 'MV', alpha3:'MDV', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/0/0f/Flag_of_Maldives.svg/40px-Flag_of_Maldives.svg.png',ko:'\uBAB0\uB514\uBE0C', num:462,en:'Maldives'} },\n [IOS3166_1_Code.MLT]: { description: '', data: {emoji:'\uD83C\uDDF2\uD83C\uDDF9', alpha2: 'MT', alpha3:'MLT', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/7/73/Flag_of_Malta.svg/22px-Flag_of_Malta.svg.png',ko:'\uBAB0\uD0C0', num:470,en:'Malta'} },\n [IOS3166_1_Code.MNG]: { description: '', data: {emoji:'\uD83C\uDDF2\uD83C\uDDF3', alpha2: 'MN', alpha3:'MNG', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/4/4c/Flag_of_Mongolia.svg/22px-Flag_of_Mongolia.svg.png',ko:'\uBABD\uACE8', num:496,en:'Mongolia'} },\n [IOS3166_1_Code.USA]: { description: '', data: {emoji:'\uD83C\uDDFA\uD83C\uDDF8', alpha2: 'US', alpha3:'USA', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/a/a4/Flag_of_the_United_States.svg/40px-Flag_of_the_United_States.svg.png',ko:'\uBBF8\uAD6D', num:840,en:'the United States'} },\n [IOS3166_1_Code.UMI]: { description: '', data: {emoji:'\uD83C\uDDFA\uD83C\uDDF2', alpha2: 'UM', alpha3:'UMI', img:'http://upload.wikimedia.org/wikipedia/commons/thumb/a/a4/Flag_of_the_United_States.svg/40px-Flag_of_the_United_States.svg.png',ko:'\uBBF8\uAD6D\uB839 \uAD70\uC18C \uC81C\uB3C4', num:581,en:'the U.S. minor system'} },\n [IOS3166_1_Code.VIR]: { description: '', data: {emoji:'\uD83C\uDDFB\uD83C\uDDEE', alpha2: 'VI', alpha3:'VIR', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/f/f8/Flag_of_the_United_States_Virgin_Islands.svg/22px-Flag_of_the_United_States_Virgin_Islands.svg.png',ko:'\uBBF8\uAD6D\uB839 \uBC84\uC9C4\uC544\uC77C\uB79C\uB4DC', num:850,en:'U.S. Virgin Islands'} },\n [IOS3166_1_Code.MMR]: { description: '', data: {emoji:'\uD83C\uDDF2\uD83C\uDDF2', alpha2: 'MM', alpha3:'MMR', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/8/8c/Flag_of_Myanmar.svg/22px-Flag_of_Myanmar.svg.png',ko:'\uBBF8\uC580\uB9C8', num:104,en:'Myanmar'} },\n [IOS3166_1_Code.FSM]: { description: '', data: {emoji:'\uD83C\uDDEB\uD83C\uDDF2', alpha2: 'FM', alpha3:'FSM', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/e/e4/Flag_of_the_Federated_States_of_Micronesia.svg/40px-Flag_of_the_Federated_States_of_Micronesia.svg.png',ko:'\uBBF8\uD06C\uB85C\uB124\uC2DC\uC544 \uC5F0\uBC29', num:583,en:'Federation of Micronesia'} },\n [IOS3166_1_Code.VUT]: { description: '', data: {emoji:'\uD83C\uDDFB\uD83C\uDDFA', alpha2: 'VU', alpha3:'VUT', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/b/bc/Flag_of_Vanuatu.svg/22px-Flag_of_Vanuatu.svg.png',ko:'\uBC14\uB204\uC544\uD22C', num:548,en:'Vanuatu'} },\n [IOS3166_1_Code.BHR]: { description: '', data: {emoji:'\uD83C\uDDE7\uD83C\uDDED', alpha2: 'BH', alpha3:'BHR', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/2/2c/Flag_of_Bahrain.svg/40px-Flag_of_Bahrain.svg.png',ko:'\uBC14\uB808\uC778', num:48,en:'Bahrain'} },\n [IOS3166_1_Code.BRB]: { description: '', data: {emoji:'\uD83C\uDDE7\uD83C\uDDE7', alpha2: 'BB', alpha3:'BRB', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/e/ef/Flag_of_Barbados.svg/40px-Flag_of_Barbados.svg.png',ko:'\uBC14\uBCA0\uC774\uB3C4\uC2A4', num:52,en:'Barbados'} },\n [IOS3166_1_Code.VAT]: { description: '', data: {emoji:'\uD83C\uDDFB\uD83C\uDDE6', alpha2: 'VA', alpha3:'VAT', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/b/b3/Flag_of_Vatican_City_%282023%E2%80%93present%29.svg/20px-Flag_of_Vatican_City_%282023%E2%80%93present%29.svg.png',ko:'\uBC14\uD2F0\uCE78 \uC2DC\uAD6D', num:336,en:'Vatican City'} },\n [IOS3166_1_Code.BHS]: { description: '', data: {emoji:'\uD83C\uDDE7\uD83C\uDDF8', alpha2: 'BS', alpha3:'BHS', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/9/93/Flag_of_the_Bahamas.svg/40px-Flag_of_the_Bahamas.svg.png',ko:'\uBC14\uD558\uB9C8', num:44,en:'Bahamas'} },\n [IOS3166_1_Code.BGD]: { description: '', data: {emoji:'\uD83C\uDDE7\uD83C\uDDE9', alpha2: 'BD', alpha3:'BGD', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/f/f9/Flag_of_Bangladesh.svg/22px-Flag_of_Bangladesh.svg.png',ko:'\uBC29\uAE00\uB77C\uB370\uC2DC', num:50,en:'Bangladesh'} },\n [IOS3166_1_Code.BMU]: { description: '', data: {emoji:'\uD83C\uDDE7\uD83C\uDDF2', alpha2: 'BM', alpha3:'BMU', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/b/bf/Flag_of_Bermuda.svg/40px-Flag_of_Bermuda.svg.png',ko:'\uBC84\uBBA4\uB2E4', num:60,en:'Bermuda'} },\n [IOS3166_1_Code.BEN]: { description: '', data: {emoji:'\uD83C\uDDE7\uD83C\uDDEF', alpha2: 'BJ', alpha3:'BEN', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/0/0a/Flag_of_Benin.svg/22px-Flag_of_Benin.svg.png',ko:'\uBCA0\uB0C9', num:204,en:'Benin'} },\n [IOS3166_1_Code.VEN]: { description: '', data: {emoji:'\uD83C\uDDFB\uD83C\uDDEA', alpha2: 'VE', alpha3:'VEN', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/0/06/Flag_of_Venezuela.svg/40px-Flag_of_Venezuela.svg.png',ko:'\uBCA0\uB124\uC218\uC5D8\uB77C', num:862,en:'Venezuela'} },\n [IOS3166_1_Code.VNM]: { description: '', data: {emoji:'\uD83C\uDDFB\uD83C\uDDF3', alpha2: 'VN', alpha3:'VNM', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/2/21/Flag_of_Vietnam.svg/40px-Flag_of_Vietnam.svg.png',ko:'\uBCA0\uD2B8\uB0A8', num:704,en:'Vietnam'} },\n [IOS3166_1_Code.BEL]: { description: '', data: {emoji:'\uD83C\uDDE7\uD83C\uDDEA', alpha2: 'BE', alpha3:'BEL', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/9/92/Flag_of_Belgium_%28civil%29.svg/40px-Flag_of_Belgium_%28civil%29.svg.png',ko:'\uBCA8\uAE30\uC5D0', num:56,en:'Belgium'} },\n [IOS3166_1_Code.BLR]: { description: '', data: {emoji:'\uD83C\uDDE7\uD83C\uDDFE', alpha2: 'BY', alpha3:'BLR', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/8/85/Flag_of_Belarus.svg/40px-Flag_of_Belarus.svg.png',ko:'\uBCA8\uB77C\uB8E8\uC2A4', num:112,en:'Belarus'} },\n [IOS3166_1_Code.BLZ]: { description: '', data: {emoji:'\uD83C\uDDE7\uD83C\uDDFF', alpha2: 'BZ', alpha3:'BLZ', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/e/e7/Flag_of_Belize.svg/22px-Flag_of_Belize.svg.png',ko:'\uBCA8\uB9AC\uC988', num:84,en:'Belize'} },\n [IOS3166_1_Code.BES]: { description: '', data: {emoji:'\uD83C\uDDE7\uD83C\uDDF6', alpha2: 'BQ', alpha3:'BES', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/1/1e/Flag_of_Bonaire.svg/40px-Flag_of_Bonaire.svg.png',ko:'\uBCF4\uB124\uB974\uC12C', num:535,en:'Bonner Island'} },\n [IOS3166_1_Code.BIH]: { description: '', data: {emoji:'\uD83C\uDDE7\uD83C\uDDE6', alpha2: 'BA', alpha3:'BIH', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/b/bf/Flag_of_Bosnia_and_Herzegovina.svg/40px-Flag_of_Bosnia_and_Herzegovina.svg.png',ko:'\uBCF4\uC2A4\uB2C8\uC544 \uD5E4\uB974\uCCB4\uACE0\uBE44\uB098', num:70,en:'Bosnia and Herzegovina'} },\n [IOS3166_1_Code.BWA]: { description: '', data: {emoji:'\uD83C\uDDE7\uD83C\uDDFC', alpha2: 'BW', alpha3:'BWA', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/f/fa/Flag_of_Botswana.svg/40px-Flag_of_Botswana.svg.png',ko:'\uBCF4\uCE20\uC640\uB098', num:72,en:'Botswana'} },\n [IOS3166_1_Code.BOL]: { description: '', data: {emoji:'\uD83C\uDDE7\uD83C\uDDF4', alpha2: 'BO', alpha3:'BOL', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/4/48/Flag_of_Bolivia.svg/40px-Flag_of_Bolivia.svg.png',ko:'\uBCFC\uB9AC\uBE44\uC544', num:68,en:'Bolivia'} },\n [IOS3166_1_Code.BDI]: { description: '', data: {emoji:'\uD83C\uDDE7\uD83C\uDDEE', alpha2: 'BI', alpha3:'BDI', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/5/50/Flag_of_Burundi.svg/40px-Flag_of_Burundi.svg.png',ko:'\uBD80\uB8EC\uB514', num:108,en:'Burundi'} },\n [IOS3166_1_Code.BFA]: { description: '', data: {emoji:'\uD83C\uDDE7\uD83C\uDDEB', alpha2: 'BF', alpha3:'BFA', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/3/31/Flag_of_Burkina_Faso.svg/22px-Flag_of_Burkina_Faso.svg.png',ko:'\uBD80\uB974\uD0A4\uB098\uD30C\uC18C', num:854,en:'Burkina Faso'} },\n [IOS3166_1_Code.BVT]: { description: '', data: {emoji:'\uD83C\uDDE7\uD83C\uDDFB', alpha2: 'BV', alpha3:'BVT', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/3/36/BOUVET.png/40px-BOUVET.png',ko:'\uBD80\uBCA0\uC12C', num:74,en:'island of Bube'} },\n [IOS3166_1_Code.BTN]: { description: '', data: {emoji:'\uD83C\uDDE7\uD83C\uDDF9', alpha2: 'BT', alpha3:'BTN', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/9/91/Flag_of_Bhutan.svg/40px-Flag_of_Bhutan.svg.png',ko:'\uBD80\uD0C4', num:64,en:'Bhutan'} },\n [IOS3166_1_Code.MNP]: { description: '', data: {emoji:'\uD83C\uDDF2\uD83C\uDDF5', alpha2: 'MP', alpha3:'MNP', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/e/e0/Flag_of_the_Northern_Mariana_Islands.svg/22px-Flag_of_the_Northern_Mariana_Islands.svg.png',ko:'\uBD81\uB9C8\uB9AC\uC544\uB098 \uC81C\uB3C4', num:580,en:'Northern Mariana Islands'} },\n [IOS3166_1_Code.BGR]: { description: '', data: {emoji:'\uD83C\uDDE7\uD83C\uDDEC', alpha2: 'BG', alpha3:'BGR', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/9/9a/Flag_of_Bulgaria.svg/22px-Flag_of_Bulgaria.svg.png',ko:'\uBD88\uAC00\uB9AC\uC544', num:100,en:'Bulgaria'} },\n [IOS3166_1_Code.BRA]: { description: '', data: {emoji:'\uD83C\uDDE7\uD83C\uDDF7', alpha2: 'BR', alpha3:'BRA', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/0/05/Flag_of_Brazil.svg/40px-Flag_of_Brazil.svg.png',ko:'\uBE0C\uB77C\uC9C8', num:76,en:'Brazil'} },\n [IOS3166_1_Code.BRN]: { description: '', data: {emoji:'\uD83C\uDDE7\uD83C\uDDF3', alpha2: 'BN', alpha3:'BRN', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/9/9c/Flag_of_Brunei.svg/40px-Flag_of_Brunei.svg.png',ko:'\uBE0C\uB8E8\uB098\uC774', num:96,en:'Brunei'} },\n [IOS3166_1_Code.WSM]: { description: '', data: {emoji:'\uD83C\uDDFC\uD83C\uDDF8', alpha2: 'WS', alpha3:'WSM', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/3/31/Flag_of_Samoa.svg/40px-Flag_of_Samoa.svg.png',ko:'\uC0AC\uBAA8\uC544', num:882,en:'Samoa'} },\n [IOS3166_1_Code.SAU]: { description: '', data: {emoji:'\uD83C\uDDF8\uD83C\uDDE6', alpha2: 'SA', alpha3:'SAU', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/0/0d/Flag_of_Saudi_Arabia.svg/40px-Flag_of_Saudi_Arabia.svg.png',ko:'\uC0AC\uC6B0\uB514\uC544\uB77C\uBE44\uC544', num:682,en:'Saudi Arabia'} },\n [IOS3166_1_Code.SGS]: { description: '', data: {emoji:'\uD83C\uDDEC\uD83C\uDDF8', alpha2: 'GS', alpha3:'SGS', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/e/ed/Flag_of_South_Georgia_and_the_South_Sandwich_Islands.svg/22px-Flag_of_South_Georgia_and_the_South_Sandwich_Islands.svg.png',ko:'\uC0AC\uC6B0\uC2A4\uC870\uC9C0\uC544 \uC0AC\uC6B0\uC2A4\uC0CC\uB4DC\uC704\uCE58 \uC81C\uB3C4', num:239,en:'South Georgia South Sandwich Islands'} },\n [IOS3166_1_Code.SMR]: { description: '', data: {emoji:'\uD83C\uDDF8\uD83C\uDDF2', alpha2: 'SM', alpha3:'SMR', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/b/b1/Flag_of_San_Marino.svg/22px-Flag_of_San_Marino.svg.png',ko:'\uC0B0\uB9C8\uB9AC\uB178', num:674,en:'San Marino'} },\n [IOS3166_1_Code.STP]: { description: '', data: {emoji:'\uD83C\uDDF8\uD83C\uDDF9', alpha2: 'ST', alpha3:'STP', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/0/0a/Flag_of_S%C3%A3o_Tom%C3%A9_and_Pr%C3%ADncipe.svg/22px-Flag_of_S%C3%A3o_Tom%C3%A9_and_Pr%C3%ADncipe.svg.png',ko:'\uC0C1\uD22C\uBA54 \uD504\uB9B0\uC2DC\uD398', num:678,en:'Sao Tome Principe'} },\n [IOS3166_1_Code.MAF]: { description: '', data: {emoji:'\uD83C\uDDF2\uD83C\uDDEB', alpha2: 'MF', alpha3:'MAF', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/b/b5/Flag_of_France_%282020%E2%80%93present%29.svg/22px-Flag_of_France_%282020%E2%80%93present%29.svg.png',ko:'\uC0DD\uB9C8\uB974\uD0F1', num:663,en:'Saint-Martin'} },\n [IOS3166_1_Code.BLM]: { description: '', data: {emoji:'\uD83C\uDDE7\uD83C\uDDF1', alpha2: 'BL', alpha3:'BLM', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/b/b4/Flag_of_Saint_Barth%C3%A9lemy_%28local%29.svg/40px-Flag_of_Saint_Barth%C3%A9lemy_%28local%29.svg.png',ko:'\uC0DD\uBC14\uB974\uD154\uB808\uBBF8', num:652,en:'Saint-Bartelemi'} },\n [IOS3166_1_Code.SPM]: { description: '', data: {emoji:'\uD83C\uDDF5\uD83C\uDDF2', alpha2: 'PM', alpha3:'SPM', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/7/74/Flag_of_Saint-Pierre_and_Miquelon.svg/40px-Flag_of_Saint-Pierre_and_Miquelon.svg.png',ko:'\uC0DD\uD53C\uC5D0\uB974 \uBBF8\uD074\uB871', num:666,en:'Saint-Pierre Michael Long'} },\n [IOS3166_1_Code.ESH]: { description: '', data: {emoji:'\uD83C\uDDEA\uD83C\uDDED', alpha2: 'EH', alpha3:'ESH', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/2/26/Flag_of_the_Sahrawi_Arab_Democratic_Republic.svg/40px-Flag_of_the_Sahrawi_Arab_Democratic_Republic.svg.png',ko:'\uC11C\uC0AC\uD558\uB77C', num:732,en:'Speak'} },\n [IOS3166_1_Code.SEN]: { description: '', data: {emoji:'\uD83C\uDDF8\uD83C\uDDF3', alpha2: 'SN', alpha3:'SEN', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/f/fd/Flag_of_Senegal.svg/40px-Flag_of_Senegal.svg.png',ko:'\uC138\uB124\uAC08', num:686,en:'Senegal'} },\n [IOS3166_1_Code.SRB]: { description: '', data: {emoji:'\uD83C\uDDF7\uD83C\uDDF8', alpha2: 'RS', alpha3:'SRB', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/f/ff/Flag_of_Serbia.svg/40px-Flag_of_Serbia.svg.png',ko:'\uC138\uB974\uBE44\uC544', num:688,en:'Serbia'} },\n [IOS3166_1_Code.SYC]: { description: '', data: {emoji:'\uD83C\uDDF8\uD83C\uDDE8', alpha2: 'SC', alpha3:'SYC', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/f/fc/Flag_of_Seychelles.svg/22px-Flag_of_Seychelles.svg.png',ko:'\uC138\uC774\uC178', num:690,en:'Seychelles'} },\n [IOS3166_1_Code.LCA]: { description: '', data: {emoji:'\uD83C\uDDF1\uD83C\uDDE8', alpha2: 'LC', alpha3:'LCA', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/9/9f/Flag_of_Saint_Lucia.svg/40px-Flag_of_Saint_Lucia.svg.png',ko:'\uC138\uC778\uD2B8\uB8E8\uC2DC\uC544', num:662,en:'Saint Lucia'} },\n [IOS3166_1_Code.VCT]: { description: '', data: {emoji:'\uD83C\uDDFB\uD83C\uDDE8', alpha2: 'VC', alpha3:'VCT', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/6/6d/Flag_of_Saint_Vincent_and_the_Grenadines.svg/40px-Flag_of_Saint_Vincent_and_the_Grenadines.svg.png',ko:'\uC138\uC778\uD2B8\uBE48\uC13C\uD2B8 \uADF8\uB808\uB098\uB518', num:670,en:'Saint Vincent and the Grenadines'} },\n [IOS3166_1_Code.KNA]: { description: '', data: {emoji:'\uD83C\uDDF0\uD83C\uDDF3', alpha2: 'KN', alpha3:'KNA', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/f/fe/Flag_of_Saint_Kitts_and_Nevis.svg/22px-Flag_of_Saint_Kitts_and_Nevis.svg.png',ko:'\uC138\uC778\uD2B8\uD0A4\uCE20 \uB124\uBE44\uC2A4', num:659,en:'Saint Kitts and Nevis'} },\n [IOS3166_1_Code.SHN]: { description: '', data: {emoji:'\uD83C\uDDF8\uD83C\uDDED', alpha2: 'SH', alpha3:'SHN', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/0/00/Flag_of_Saint_Helena.svg/40px-Flag_of_Saint_Helena.svg.png',ko:'\uC138\uC778\uD2B8\uD5EC\uB808\uB098', num:654,en:'Saint Helena'} },\n [IOS3166_1_Code.SOM]: { description: '', data: {emoji:'\uD83C\uDDF8\uD83C\uDDF4', alpha2: 'SO', alpha3:'SOM', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/a/a0/Flag_of_Somalia.svg/22px-Flag_of_Somalia.svg.png',ko:'\uC18C\uB9D0\uB9AC\uC544', num:706,en:'Somalia'} },\n [IOS3166_1_Code.SLB]: { description: '', data: {emoji:'\uD83C\uDDF8\uD83C\uDDE7', alpha2: 'SB', alpha3:'SLB', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/7/74/Flag_of_the_Solomon_Islands.svg/40px-Flag_of_the_Solomon_Islands.svg.png',ko:'\uC194\uB85C\uBAAC \uC81C\uB3C4', num:90,en:'Solomon Islands'} },\n [IOS3166_1_Code.SDN]: { description: '', data: {emoji:'\uD83C\uDDF8\uD83C\uDDE9', alpha2: 'SD', alpha3:'SDN', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/0/01/Flag_of_Sudan.svg/22px-Flag_of_Sudan.svg.png',ko:'\uC218\uB2E8', num:729,en:'means'} },\n [IOS3166_1_Code.SUR]: { description: '', data: {emoji:'\uD83C\uDDF8\uD83C\uDDF7', alpha2: 'SR', alpha3:'SUR', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/6/60/Flag_of_Suriname.svg/40px-Flag_of_Suriname.svg.png',ko:'\uC218\uB9AC\uB0A8', num:740,en:'Suriname'} },\n [IOS3166_1_Code.LKA]: { description: '', data: {emoji:'\uD83C\uDDF1\uD83C\uDDF0', alpha2: 'LK', alpha3:'LKA', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/1/11/Flag_of_Sri_Lanka.svg/40px-Flag_of_Sri_Lanka.svg.png',ko:'\uC2A4\uB9AC\uB791\uCE74', num:144,en:'Sri Lanka'} },\n [IOS3166_1_Code.SJM]: { description: '', data: {emoji:'\uD83C\uDDF8\uD83C\uDDEF', alpha2: 'SJ', alpha3:'SJM', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/c/c9/Proposed_flag_of_Svalbard%2C_Norway_%281930%29.svg/22px-Proposed_flag_of_Svalbard%2C_Norway_%281930%29.svg.png',ko:'\uC2A4\uBC1C\uBC14\uB974 \uC580\uB9C8\uC60C', num:744,en:'Svalbard Janmayen'} },\n [IOS3166_1_Code.SWE]: { description: '', data: {emoji:'\uD83C\uDDF8\uD83C\uDDEA', alpha2: 'SE', alpha3:'SWE', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/4/4c/Flag_of_Sweden.svg/40px-Flag_of_Sweden.svg.png',ko:'\uC2A4\uC6E8\uB374', num:752,en:'Sweden'} },\n [IOS3166_1_Code.CHE]: { description: '', data: {emoji:'\uD83C\uDDE8\uD83C\uDDED', alpha2: 'CH', alpha3:'CHE', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/f/f3/Flag_of_Switzerland.svg/20px-Flag_of_Switzerland.svg.png',ko:'\uC2A4\uC704\uC2A4', num:756,en:'Switzerland'} },\n [IOS3166_1_Code.ESP]: { description: '', data: {emoji:'\uD83C\uDDEA\uD83C\uDDF8', alpha2: 'ES', alpha3:'ESP', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/9/9a/Flag_of_Spain.svg/40px-Flag_of_Spain.svg.png',ko:'\uC2A4\uD398\uC778', num:724,en:'Spain'} },\n [IOS3166_1_Code.SVK]: { description: '', data: {emoji:'\uD83C\uDDF8\uD83C\uDDF0', alpha2: 'SK', alpha3:'SVK', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/e/e6/Flag_of_Slovakia.svg/22px-Flag_of_Slovakia.svg.png',ko:'\uC2AC\uB85C\uBC14\uD0A4\uC544', num:703,en:'Slovakia'} },\n [IOS3166_1_Code.SVN]: { description: '', data: {emoji:'\uD83C\uDDF8\uD83C\uDDEE', alpha2: 'SI', alpha3:'SVN', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/f/f0/Flag_of_Slovenia.svg/22px-Flag_of_Slovenia.svg.png',ko:'\uC2AC\uB85C\uBCA0\uB2C8\uC544', num:705,en:'Slovenia'} },\n [IOS3166_1_Code.SYR]: { description: '', data: {emoji:'\uD83C\uDDF8\uD83C\uDDFE', alpha2: 'SY', alpha3:'SYR', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/1/14/Flag_of_the_Syrian_revolution.svg/40px-Flag_of_the_Syrian_revolution.svg.png',ko:'\uC2DC\uB9AC\uC544', num:760,en:'Syria'} },\n [IOS3166_1_Code.SLE]: { description: '', data: {emoji:'\uD83C\uDDF8\uD83C\uDDF1', alpha2: 'SL', alpha3:'SLE', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/1/17/Flag_of_Sierra_Leone.svg/22px-Flag_of_Sierra_Leone.svg.png',ko:'\uC2DC\uC5D0\uB77C\uB9AC\uC628', num:694,en:'Sierra Leone'} },\n [IOS3166_1_Code.SXM]: { description: '', data: {emoji:'\uD83C\uDDF8\uD83C\uDDFD', alpha2: 'SX', alpha3:'SXM', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/d/d3/Flag_of_Sint_Maarten.svg/40px-Flag_of_Sint_Maarten.svg.png',ko:'\uC2E0\uD2B8\uB9C8\uB974\uD134', num:534,en:'Sint Marton'} },\n [IOS3166_1_Code.SGP]: { description: '', data: {emoji:'\uD83C\uDDF8\uD83C\uDDEC', alpha2: 'SG', alpha3:'SGP', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/4/48/Flag_of_Singapore.svg/22px-Flag_of_Singapore.svg.png',ko:'\uC2F1\uAC00\uD3EC\uB974', num:702,en:'Singapore'} },\n [IOS3166_1_Code.ARE]: { description: '', data: {emoji:'\uD83C\uDDE6\uD83C\uDDEA', alpha2: 'AE', alpha3:'ARE', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/c/cb/Flag_of_the_United_Arab_Emirates.svg/40px-Flag_of_the_United_Arab_Emirates.svg.png',ko:'\uC544\uB78D\uC5D0\uBBF8\uB9AC\uD2B8', num:784,en:'United Arab Emirates'} },\n [IOS3166_1_Code.ABW]: { description: '', data: {emoji:'\uD83C\uDDE6\uD83C\uDDFC', alpha2: 'AW', alpha3:'ABW', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/f/f6/Flag_of_Aruba.svg/22px-Flag_of_Aruba.svg.png',ko:'\uC544\uB8E8\uBC14', num:533,en:'Aruba'} },\n [IOS3166_1_Code.ARM]: { description: '', data: {emoji:'\uD83C\uDDE6\uD83C\uDDF2', alpha2: 'AM', alpha3:'ARM', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/2/2f/Flag_of_Armenia.svg/40px-Flag_of_Armenia.svg.png',ko:'\uC544\uB974\uBA54\uB2C8\uC544', num:51,en:'Armenia'} },\n [IOS3166_1_Code.ARG]: { description: '', data: {emoji:'\uD83C\uDDE6\uD83C\uDDF7', alpha2: 'AR', alpha3:'ARG', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/1/1a/Flag_of_Argentina.svg/22px-Flag_of_Argentina.svg.png',ko:'\uC544\uB974\uD5E8\uD2F0\uB098', num:32,en:'Argentina'} },\n [IOS3166_1_Code.ASM]: { description: '', data: {emoji:'\uD83C\uDDE6\uD83C\uDDF8', alpha2: 'AS', alpha3:'ASM', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/8/87/Flag_of_American_Samoa.svg/40px-Flag_of_American_Samoa.svg.png',ko:'\uC544\uBA54\uB9AC\uCE78\uC0AC\uBAA8\uC544', num:16,en:'American Samoa'} },\n [IOS3166_1_Code.ISL]: { description: '', data: {emoji:'\uD83C\uDDEE\uD83C\uDDF8', alpha2: 'IS', alpha3:'ISL', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/c/ce/Flag_of_Iceland.svg/40px-Flag_of_Iceland.svg.png',ko:'\uC544\uC774\uC2AC\uB780\uB4DC', num:352,en:'Iceland'} },\n [IOS3166_1_Code.HTI]: { description: '', data: {emoji:'\uD83C\uDDED\uD83C\uDDF9', alpha2: 'HT', alpha3:'HTI', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/5/56/Flag_of_Haiti.svg/40px-Flag_of_Haiti.svg.png',ko:'\uC544\uC774\uD2F0', num:332,en:'Haiti'} },\n [IOS3166_1_Code.IRL]: { description: '', data: {emoji:'\uD83C\uDDEE\uD83C\uDDEA', alpha2: 'IE', alpha3:'IRL', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/4/45/Flag_of_Ireland.svg/40px-Flag_of_Ireland.svg.png',ko:'\uC544\uC77C\uB79C\uB4DC', num:372,en:'Ireland'} },\n [IOS3166_1_Code.AZE]: { description: '', data: {emoji:'\uD83C\uDDE6\uD83C\uDDFF', alpha2: 'AZ', alpha3:'AZE', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Flag_of_Azerbaijan.svg/40px-Flag_of_Azerbaijan.svg.png',ko:'\uC544\uC81C\uB974\uBC14\uC774\uC794', num:31,en:'Azerbaijan'} },\n [IOS3166_1_Code.AFG]: { description: '', data: {emoji:'\uD83C\uDDE6\uD83C\uDDEB', alpha2: 'AF', alpha3:'AFG', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/5/5c/Flag_of_the_Taliban.svg/40px-Flag_of_the_Taliban.svg.png',ko:'\uC544\uD504\uAC00\uB2C8\uC2A4\uD0C4', num:4,en:'Afghanistan'} },\n [IOS3166_1_Code.AND]: { description: '', data: {emoji:'\uD83C\uDDE6\uD83C\uDDE9', alpha2: 'AD', alpha3:'AND', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/1/19/Flag_of_Andorra.svg/22px-Flag_of_Andorra.svg.png',ko:'\uC548\uB3C4\uB77C', num:20,en:'Andorra'} },\n [IOS3166_1_Code.ALB]: { description: '', data: {emoji:'\uD83C\uDDE6\uD83C\uDDF1', alpha2: 'AL', alpha3:'ALB', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/3/36/Flag_of_Albania.svg/40px-Flag_of_Albania.svg.png',ko:'\uC54C\uBC14\uB2C8\uC544', num:8,en:'Albania'} },\n [IOS3166_1_Code.DZA]: { description: '', data: {emoji:'\uD83C\uDDE9\uD83C\uDDFF', alpha2: 'DZ', alpha3:'DZA', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/7/77/Flag_of_Algeria.svg/40px-Flag_of_Algeria.svg.png',ko:'\uC54C\uC81C\uB9AC', num:12,en:'Algeria'} },\n [IOS3166_1_Code.AGO]: { description: '', data: {emoji:'\uD83C\uDDE6\uD83C\uDDF4', alpha2: 'AO', alpha3:'AGO', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/9/9d/Flag_of_Angola.svg/22px-Flag_of_Angola.svg.png',ko:'\uC559\uACE8\uB77C', num:24,en:'Angola'} },\n [IOS3166_1_Code.ATG]: { description: '', data: {emoji:'\uD83C\uDDE6\uD83C\uDDEC', alpha2: 'AG', alpha3:'ATG', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/8/89/Flag_of_Antigua_and_Barbuda.svg/22px-Flag_of_Antigua_and_Barbuda.svg.png',ko:'\uC564\uD2F0\uAC00 \uBC14\uBD80\uB2E4', num:28,en:'be full of antis'} },\n [IOS3166_1_Code.AIA]: { description: '', data: {emoji:'\uD83C\uDDE6\uD83C\uDDEE', alpha2: 'AI', alpha3:'AIA', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/b/b4/Flag_of_Anguilla.svg/40px-Flag_of_Anguilla.svg.png',ko:'\uC575\uADC8\uB77C', num:660,en:'Anguilla'} },\n [IOS3166_1_Code.ERI]: { description: '', data: {emoji:'\uD83C\uDDEA\uD83C\uDDF7', alpha2: 'ER', alpha3:'ERI', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/2/29/Flag_of_Eritrea.svg/40px-Flag_of_Eritrea.svg.png',ko:'\uC5D0\uB9AC\uD2B8\uB808\uC544', num:232,en:'Eritrea'} },\n [IOS3166_1_Code.SWZ]: { description: '', data: {emoji:'\uD83C\uDDF8\uD83C\uDDFF', alpha2: 'SZ', alpha3:'SWZ', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Flag_of_Eswatini.svg/22px-Flag_of_Eswatini.svg.png',ko:'\uC5D0\uC2A4\uC640\uD2F0\uB2C8', num:748,en:'Eswatini'} },\n [IOS3166_1_Code.EST]: { description: '', data: {emoji:'\uD83C\uDDEA\uD83C\uDDEA', alpha2: 'EE', alpha3:'EST', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/8/8f/Flag_of_Estonia.svg/22px-Flag_of_Estonia.svg.png',ko:'\uC5D0\uC2A4\uD1A0\uB2C8\uC544', num:233,en:'Estonia'} },\n [IOS3166_1_Code.ECU]: { description: '', data: {emoji:'\uD83C\uDDEA\uD83C\uDDE8', alpha2: 'EC', alpha3:'ECU', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/e/e8/Flag_of_Ecuador.svg/40px-Flag_of_Ecuador.svg.png',ko:'\uC5D0\uCF70\uB3C4\uB974', num:218,en:'Ecuador'} },\n [IOS3166_1_Code.ETH]: { description: '', data: {emoji:'\uD83C\uDDEA\uD83C\uDDF9', alpha2: 'ET', alpha3:'ETH', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/7/71/Flag_of_Ethiopia.svg/22px-Flag_of_Ethiopia.svg.png',ko:'\uC5D0\uD2F0\uC624\uD53C\uC544', num:231,en:'Ethiopia'} },\n [IOS3166_1_Code.SLV]: { description: '', data: {emoji:'\uD83C\uDDF8\uD83C\uDDFB', alpha2: 'SV', alpha3:'SLV', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/3/34/Flag_of_El_Salvador.svg/22px-Flag_of_El_Salvador.svg.png',ko:'\uC5D8\uC0B4\uBC14\uB3C4\uB974', num:222,en:'El Salvador'} },\n [IOS3166_1_Code.GBR]: { description: '', data: {emoji:'\uD83C\uDDEC\uD83C\uDDE7', alpha2: 'GB', alpha3:'GBR', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/a/a5/Flag_of_the_United_Kingdom_%281-2%29.svg/40px-Flag_of_the_United_Kingdom_%281-2%29.svg.png',ko:'\uC601\uAD6D', num:826,en:'the United Kingdom'} },\n [IOS3166_1_Code.VGB]: { description: '', data: {emoji:'\uD83C\uDDFB\uD83C\uDDEC', alpha2: 'VG', alpha3:'VGB', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/4/42/Flag_of_the_British_Virgin_Islands.svg/40px-Flag_of_the_British_Virgin_Islands.svg.png',ko:'\uC601\uAD6D\uB839 \uBC84\uC9C4\uC544\uC77C\uB79C\uB4DC', num:92,en:'British Virgin Islands'} },\n [IOS3166_1_Code.IOT]: { description: '', data: {emoji:'\uD83C\uDDEE\uD83C\uDDF4', alpha2: 'IO', alpha3:'IOT', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/6/65/Flag_of_the_Commissioner_of_the_British_Indian_Ocean_Territory.svg/22px-Flag_of_the_Commissioner_of_the_British_Indian_Ocean_Territory.svg.png',ko:'\uC601\uAD6D\uB839 \uC778\uB3C4\uC591 \uC9C0\uC5ED', num:86,en:'the British Indian Ocean region'} },\n [IOS3166_1_Code.YEM]: { description: '', data: {emoji:'\uD83C\uDDFE\uD83C\uDDEA', alpha2: 'YE', alpha3:'YEM', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/8/89/Flag_of_Yemen.svg/40px-Flag_of_Yemen.svg.png',ko:'\uC608\uBA58', num:887,en:'Yemen'} },\n [IOS3166_1_Code.OMN]: { description: '', data: {emoji:'\uD83C\uDDF4\uD83C\uDDF2', alpha2: 'OM', alpha3:'OMN', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Flag_of_Oman.svg/40px-Flag_of_Oman.svg.png',ko:'\uC624\uB9CC', num:512,en:'arrogance'} },\n [IOS3166_1_Code.AUS]: { description: '', data: {emoji:'\uD83C\uDDE6\uD83C\uDDFA', alpha2: 'AU', alpha3:'AUS', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/b/b9/Flag_of_Australia.svg/40px-Flag_of_Australia.svg.png',ko:'\uC624\uC2A4\uD2B8\uB808\uC77C\uB9AC\uC544', num:36,en:'Australia'} },\n [IOS3166_1_Code.AUT]: { description: '', data: {emoji:'\uD83C\uDDE6\uD83C\uDDF9', alpha2: 'AT', alpha3:'AUT', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/4/41/Flag_of_Austria.svg/22px-Flag_of_Austria.svg.png',ko:'\uC624\uC2A4\uD2B8\uB9AC\uC544', num:40,en:'Austria'} },\n [IOS3166_1_Code.HND]: { description: '', data: {emoji:'\uD83C\uDDED\uD83C\uDDF3', alpha2: 'HN', alpha3:'HND', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/8/82/Flag_of_Honduras.svg/40px-Flag_of_Honduras.svg.png',ko:'\uC628\uB450\uB77C\uC2A4', num:340,en:'Honduras'} },\n [IOS3166_1_Code.ALA]: { description: '', data: {emoji:'\uD83C\uDDE6\uD83C\uDDFD', alpha2: 'AX', alpha3:'ALA', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/5/52/Flag_of_%C3%85land.svg/40px-Flag_of_%C3%85land.svg.png',ko:'\uC62C\uB780\uB4DC \uC81C\uB3C4', num:248,en:'the Orland Islands'} },\n [IOS3166_1_Code.JOR]: { description: '', data: {emoji:'\uD83C\uDDEF\uD83C\uDDF4', alpha2: 'JO', alpha3:'JOR', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/c/c0/Flag_of_Jordan.svg/40px-Flag_of_Jordan.svg.png',ko:'\uC694\uB974\uB2E8', num:400,en:'Jordan'} },\n [IOS3166_1_Code.UGA]: { description: '', data: {emoji:'\uD83C\uDDFA\uD83C\uDDEC', alpha2: 'UG', alpha3:'UGA', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/4/4e/Flag_of_Uganda.svg/22px-Flag_of_Uganda.svg.png',ko:'\uC6B0\uAC04\uB2E4', num:800,en:'Uganda'} },\n [IOS3166_1_Code.URY]: { description: '', data: {emoji:'\uD83C\uDDFA\uD83C\uDDFE', alpha2: 'UY', alpha3:'URY', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/f/fe/Flag_of_Uruguay.svg/22px-Flag_of_Uruguay.svg.png',ko:'\uC6B0\uB8E8\uACFC\uC774', num:858,en:'Uruguay'} },\n [IOS3166_1_Code.UZB]: { description: '', data: {emoji:'\uD83C\uDDFA\uD83C\uDDFF', alpha2: 'UZ', alpha3:'UZB', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/8/84/Flag_of_Uzbekistan.svg/40px-Flag_of_Uzbekistan.svg.png',ko:'\uC6B0\uC988\uBCA0\uD0A4\uC2A4\uD0C4', num:860,en:'Uzbekistan'} },\n [IOS3166_1_Code.UKR]: { description: '', data: {emoji:'\uD83C\uDDFA\uD83C\uDDE6', alpha2: 'UA', alpha3:'UKR', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/4/49/Flag_of_Ukraine.svg/22px-Flag_of_Ukraine.svg.png',ko:'\uC6B0\uD06C\uB77C\uC774\uB098', num:804,en:'Ukraine'} },\n [IOS3166_1_Code.WLF]: { description: '', data: {emoji:'\uD83C\uDDFC\uD83C\uDDEB', alpha2: 'WF', alpha3:'WLF', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/b/b5/Flag_of_France_%282020%E2%80%93present%29.svg/22px-Flag_of_France_%282020%E2%80%93present%29.svg.png',ko:'\uC648\uB9AC\uC2A4 \uD478\uD22C\uB098', num:876,en:'Wallis Putuna'} },\n [IOS3166_1_Code.IRQ]: { description: '', data: {emoji:'\uD83C\uDDEE\uD83C\uDDF6', alpha2: 'IQ', alpha3:'IRQ', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/f/f6/Flag_of_Iraq.svg/40px-Flag_of_Iraq.svg.png',ko:'\uC774\uB77C\uD06C', num:368,en:'Iraq'} },\n [IOS3166_1_Code.IRN]: { description: '', data: {emoji:'\uD83C\uDDEE\uD83C\uDDF7', alpha2: 'IR', alpha3:'IRN', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/c/ca/Flag_of_Iran.svg/40px-Flag_of_Iran.svg.png',ko:'\uC774\uB780', num:364,en:'Iran'} },\n [IOS3166_1_Code.ISR]: { description: '', data: {emoji:'\uD83C\uDDEE\uD83C\uDDF1', alpha2: 'IL', alpha3:'ISR', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/d/d4/Flag_of_Israel.svg/22px-Flag_of_Israel.svg.png',ko:'\uC774\uC2A4\uB77C\uC5D8', num:376,en:'Israel'} },\n [IOS3166_1_Code.EGY]: { description: '', data: {emoji:'\uD83C\uDDEA\uD83C\uDDEC', alpha2: 'EG', alpha3:'EGY', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/f/fe/Flag_of_Egypt.svg/22px-Flag_of_Egypt.svg.png',ko:'\uC774\uC9D1\uD2B8', num:818,en:'Egypt.'} },\n [IOS3166_1_Code.ITA]: { description: '', data: {emoji:'\uD83C\uDDEE\uD83C\uDDF9', alpha2: 'IT', alpha3:'ITA', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/0/03/Flag_of_Italy.svg/40px-Flag_of_Italy.svg.png',ko:'\uC774\uD0C8\uB9AC\uC544', num:380,en:'Italy'} },\n [IOS3166_1_Code.IND]: { description: '', data: {emoji:'\uD83C\uDDEE\uD83C\uDDF3', alpha2: 'IN', alpha3:'IND', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/4/41/Flag_of_India.svg/22px-Flag_of_India.svg.png',ko:'\uC778\uB3C4', num:356,en:'India'} },\n [IOS3166_1_Code.IDN]: { description: '', data: {emoji:'\uD83C\uDDEE\uD83C\uDDE9', alpha2: 'ID', alpha3:'IDN', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/9/9f/Flag_of_Indonesia.svg/22px-Flag_of_Indonesia.svg.png',ko:'\uC778\uB3C4\uB124\uC2DC\uC544', num:360,en:'Indonesia'} },\n [IOS3166_1_Code.JPN]: { description: '', data: {emoji:'\uD83C\uDDEF\uD83C\uDDF5', alpha2: 'JP', alpha3:'JPN', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/Flag_of_Japan.svg/40px-Flag_of_Japan.svg.png',ko:'\uC77C\uBCF8', num:392,en:'Japan'} },\n [IOS3166_1_Code.JAM]: { description: '', data: {emoji:'\uD83C\uDDEF\uD83C\uDDF2', alpha2: 'JM', alpha3:'JAM', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/0/0a/Flag_of_Jamaica.svg/40px-Flag_of_Jamaica.svg.png',ko:'\uC790\uBA54\uC774\uCE74', num:388,en:'Jamaica'} },\n [IOS3166_1_Code.ZMB]: { description: '', data: {emoji:'\uD83C\uDDFF\uD83C\uDDF2', alpha2: 'ZM', alpha3:'ZMB', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/0/06/Flag_of_Zambia.svg/40px-Flag_of_Zambia.svg.png',ko:'\uC7A0\uBE44\uC544', num:894,en:'Zambia'} },\n [IOS3166_1_Code.JEY]: { description: '', data: {emoji:'\uD83C\uDDEF\uD83C\uDDEA', alpha2: 'JE', alpha3:'JEY', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Flag_of_Jersey.svg/22px-Flag_of_Jersey.svg.png',ko:'\uC800\uC9C0\uC12C', num:832,en:'Jersey Island'} },\n [IOS3166_1_Code.GNQ]: { description: '', data: {emoji:'\uD83C\uDDEC\uD83C\uDDF6', alpha2: 'GQ', alpha3:'GNQ', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/3/31/Flag_of_Equatorial_Guinea.svg/40px-Flag_of_Equatorial_Guinea.svg.png',ko:'\uC801\uB3C4 \uAE30\uB2C8', num:226,en:'Equatorial Guinea'} },\n [IOS3166_1_Code.PRK]: { description: '', data: {emoji:'\uD83C\uDDF0\uD83C\uDDF5', alpha2: 'KP', alpha3:'PRK', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/5/51/Flag_of_North_Korea.svg/40px-Flag_of_North_Korea.svg.png',ko:'\uC870\uC120\uBBFC\uC8FC\uC8FC\uC758\uC778\uBBFC\uACF5\uD654\uAD6D', num:408,en:'Democratic People\\'s Republic of Korea'} },\n [IOS3166_1_Code.GEO]: { description: '', data: {emoji:'\uD83C\uDDEC\uD83C\uDDEA', alpha2: 'GE', alpha3:'GEO', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/0/0f/Flag_of_Georgia.svg/40px-Flag_of_Georgia.svg.png',ko:'\uC870\uC9C0\uC544', num:268,en:'Georgia'} },\n [IOS3166_1_Code.CHN]: { description: '', data: {emoji:'\uD83C\uDDE8\uD83C\uDDF3', alpha2: 'CN', alpha3:'CHN', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/f/fa/Flag_of_the_People%27s_Republic_of_China.svg/22px-Flag_of_the_People%27s_Republic_of_China.svg.png',ko:'\uC911\uAD6D', num:156,en:'China'} },\n [IOS3166_1_Code.CAF]: { description: '', data: {emoji:'\uD83C\uDDE8\uD83C\uDDEB', alpha2: 'CF', alpha3:'CAF', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/6/6f/Flag_of_the_Central_African_Republic.svg/22px-Flag_of_the_Central_African_Republic.svg.png',ko:'\uC911\uC559\uC544\uD504\uB9AC\uCE74 \uACF5\uD654\uAD6D', num:140,en:'Central African Republic'} },\n [IOS3166_1_Code.DJI]: { description: '', data: {emoji:'\uD83C\uDDE9\uD83C\uDDEF', alpha2: 'DJ', alpha3:'DJI', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/3/34/Flag_of_Djibouti.svg/40px-Flag_of_Djibouti.svg.png',ko:'\uC9C0\uBD80\uD2F0', num:262,en:'Djibouti'} },\n [IOS3166_1_Code.GIB]: { description: '', data: {emoji:'\uD83C\uDDEC\uD83C\uDDEE', alpha2: 'GI', alpha3:'GIB', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/0/02/Flag_of_Gibraltar.svg/40px-Flag_of_Gibraltar.svg.png',ko:'\uC9C0\uBE0C\uB864\uD130', num:292,en:'Gibraltar'} },\n [IOS3166_1_Code.ZWE]: { description: '', data: {emoji:'\uD83C\uDDFF\uD83C\uDDFC', alpha2: 'ZW', alpha3:'ZWE', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/6/6a/Flag_of_Zimbabwe.svg/40px-Flag_of_Zimbabwe.svg.png',ko:'\uC9D0\uBC14\uBE0C\uC6E8', num:716,en:'Zimbabwe'} },\n [IOS3166_1_Code.TCD]: { description: '', data: {emoji:'\uD83C\uDDF9\uD83C\uDDE9', alpha2: 'TD', alpha3:'TCD', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/4/4b/Flag_of_Chad.svg/40px-Flag_of_Chad.svg.png',ko:'\uCC28\uB4DC', num:148,en:'Chad'} },\n [IOS3166_1_Code.CZE]: { description: '', data: {emoji:'\uD83C\uDDE8\uD83C\uDDFF', alpha2: 'CZ', alpha3:'CZE', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/c/cb/Flag_of_the_Czech_Republic.svg/40px-Flag_of_the_Czech_Republic.svg.png',ko:'\uCCB4\uCF54', num:203,en:'Czech Republic'} },\n [IOS3166_1_Code.CHL]: { description: '', data: {emoji:'\uD83C\uDDE8\uD83C\uDDF1', alpha2: 'CL', alpha3:'CHL', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/7/78/Flag_of_Chile.svg/40px-Flag_of_Chile.svg.png',ko:'\uCE60\uB808', num:152,en:'Chile'} },\n [IOS3166_1_Code.CMR]: { description: '', data: {emoji:'\uD83C\uDDE8\uD83C\uDDF2', alpha2: 'CM', alpha3:'CMR', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/4/4f/Flag_of_Cameroon.svg/40px-Flag_of_Cameroon.svg.png',ko:'\uCE74\uBA54\uB8EC', num:120,en:'Cameroon'} },\n [IOS3166_1_Code.CPV]: { description: '', data: {emoji:'\uD83C\uDDE8\uD83C\uDDFB', alpha2: 'CV', alpha3:'CPV', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/3/38/Flag_of_Cape_Verde.svg/40px-Flag_of_Cape_Verde.svg.png',ko:'\uCE74\uBCF4\uBCA0\uB974\uB370', num:132,en:'Cabo Verde'} },\n [IOS3166_1_Code.KAZ]: { description: '', data: {emoji:'\uD83C\uDDF0\uD83C\uDDFF', alpha2: 'KZ', alpha3:'KAZ', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/d/d3/Flag_of_Kazakhstan.svg/40px-Flag_of_Kazakhstan.svg.png',ko:'\uCE74\uC790\uD750\uC2A4\uD0C4', num:398,en:'Kazakhstan'} },\n [IOS3166_1_Code.QAT]: { description: '', data: {emoji:'\uD83C\uDDF6\uD83C\uDDE6', alpha2: 'QA', alpha3:'QAT', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/6/65/Flag_of_Qatar.svg/22px-Flag_of_Qatar.svg.png',ko:'\uCE74\uD0C0\uB974', num:634,en:'Qatar'} },\n [IOS3166_1_Code.KHM]: { description: '', data: {emoji:'\uD83C\uDDF0\uD83C\uDDED', alpha2: 'KH', alpha3:'KHM', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/8/83/Flag_of_Cambodia.svg/22px-Flag_of_Cambodia.svg.png',ko:'\uCE84\uBCF4\uB514\uC544', num:116,en:'Cambodia'} },\n [IOS3166_1_Code.CAN]: { description: '', data: {emoji:'\uD83C\uDDE8\uD83C\uDDE6', alpha2: 'CA', alpha3:'CAN', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/c/cf/Flag_of_Canada.svg/22px-Flag_of_Canada.svg.png',ko:'\uCE90\uB098\uB2E4', num:124,en:'Canada'} },\n [IOS3166_1_Code.KEN]: { description: '', data: {emoji:'\uD83C\uDDF0\uD83C\uDDEA', alpha2: 'KE', alpha3:'KEN', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/4/49/Flag_of_Kenya.svg/40px-Flag_of_Kenya.svg.png',ko:'\uCF00\uB0D0', num:404,en:'Kenya'} },\n [IOS3166_1_Code.CYM]: { description: '', data: {emoji:'\uD83C\uDDF0\uD83C\uDDFE', alpha2: 'KY', alpha3:'CYM', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/0/0f/Flag_of_the_Cayman_Islands.svg/22px-Flag_of_the_Cayman_Islands.svg.png',ko:'\uCF00\uC774\uB9E8 \uC81C\uB3C4', num:136,en:'Cayman Islands'} },\n [IOS3166_1_Code.COM]: { description: '', data: {emoji:'\uD83C\uDDF0\uD83C\uDDF2', alpha2: 'KM', alpha3:'COM', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/9/94/Flag_of_the_Comoros.svg/40px-Flag_of_the_Comoros.svg.png',ko:'\uCF54\uBAA8\uB85C', num:174,en:'Comoros'} },\n [IOS3166_1_Code.CRI]: { description: '', data: {emoji:'\uD83C\uDDE8\uD83C\uDDF7', alpha2: 'CR', alpha3:'CRI', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/f/f2/Flag_of_Costa_Rica.svg/40px-Flag_of_Costa_Rica.svg.png',ko:'\uCF54\uC2A4\uD0C0\uB9AC\uCE74', num:188,en:'Costa Rica'} },\n [IOS3166_1_Code.CCK]: { description: '', data: {emoji:'\uD83C\uDDE8\uD83C\uDDE8', alpha2: 'CC', alpha3:'CCK', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/7/74/Flag_of_the_Cocos_%28Keeling%29_Islands.svg/40px-Flag_of_the_Cocos_%28Keeling%29_Islands.svg.png',ko:'\uCF54\uCF54\uC2A4 \uC81C\uB3C4', num:166,en:'Cocos Islands'} },\n [IOS3166_1_Code.CIV]: { description: '', data: {emoji:'\uD83C\uDDE8\uD83C\uDDEE', alpha2: 'CI', alpha3:'CIV', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/f/fe/Flag_of_C%C3%B4te_d%27Ivoire.svg/40px-Flag_of_C%C3%B4te_d%27Ivoire.svg.png',ko:'\uCF54\uD2B8\uB514\uBD80\uC544\uB974', num:384,en:'Ivory Coast'} },\n [IOS3166_1_Code.COL]: { description: '', data: {emoji:'\uD83C\uDDE8\uD83C\uDDF4', alpha2: 'CO', alpha3:'COL', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/2/21/Flag_of_Colombia.svg/40px-Flag_of_Colombia.svg.png',ko:'\uCF5C\uB86C\uBE44\uC544', num:170,en:'Colombia'} },\n [IOS3166_1_Code.COG]: { description: '', data: {emoji:'\uD83C\uDDE8\uD83C\uDDEC', alpha2: 'CG', alpha3:'COG', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/9/92/Flag_of_the_Republic_of_the_Congo.svg/40px-Flag_of_the_Republic_of_the_Congo.svg.png',ko:'\uCF69\uACE0 \uACF5\uD654\uAD6D', num:178,en:'Republic of Congo'} },\n [IOS3166_1_Code.COD]: { description: '', data: {emoji:'\uD83C\uDDE8\uD83C\uDDE9', alpha2: 'CD', alpha3:'COD', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/6/6f/Flag_of_the_Democratic_Republic_of_the_Congo.svg/22px-Flag_of_the_Democratic_Republic_of_the_Congo.svg.png',ko:'\uCF69\uACE0 \uBBFC\uC8FC \uACF5\uD654\uAD6D', num:180,en:'Democratic Republic of the Congo'} },\n [IOS3166_1_Code.CUB]: { description: '', data: {emoji:'\uD83C\uDDE8\uD83C\uDDFA', alpha2: 'CU', alpha3:'CUB', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/b/bd/Flag_of_Cuba.svg/40px-Flag_of_Cuba.svg.png',ko:'\uCFE0\uBC14', num:192,en:'Cuba'} },\n [IOS3166_1_Code.KWT]: { description: '', data: {emoji:'\uD83C\uDDF0\uD83C\uDDFC', alpha2: 'KW', alpha3:'KWT', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/a/aa/Flag_of_Kuwait.svg/40px-Flag_of_Kuwait.svg.png',ko:'\uCFE0\uC6E8\uC774\uD2B8', num:414,en:'Kuwait'} },\n [IOS3166_1_Code.COK]: { description: '', data: {emoji:'\uD83C\uDDE8\uD83C\uDDF0', alpha2: 'CK', alpha3:'COK', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/3/35/Flag_of_the_Cook_Islands.svg/40px-Flag_of_the_Cook_Islands.svg.png',ko:'\uCFE1 \uC81C\uB3C4', num:184,en:'Cook Islands'} },\n [IOS3166_1_Code.CUW]: { description: '', data: {emoji:'\uD83C\uDDE8\uD83C\uDDFC', alpha2: 'CW', alpha3:'CUW', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/b/b1/Flag_of_Cura%C3%A7ao.svg/40px-Flag_of_Cura%C3%A7ao.svg.png',ko:'\uD034\uB77C\uC18C', num:531,en:'Cura\u00E7ao'} },\n [IOS3166_1_Code.HRV]: { description: '', data: {emoji:'\uD83C\uDDED\uD83C\uDDF7', alpha2: 'HR', alpha3:'HRV', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/1/1b/Flag_of_Croatia.svg/40px-Flag_of_Croatia.svg.png',ko:'\uD06C\uB85C\uC544\uD2F0\uC544', num:191,en:'Croatia'} },\n [IOS3166_1_Code.CXR]: { description: '', data: {emoji:'\uD83C\uDDE8\uD83C\uDDFD', alpha2: 'CX', alpha3:'CXR', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/6/67/Flag_of_Christmas_Island.svg/22px-Flag_of_Christmas_Island.svg.png',ko:'\uD06C\uB9AC\uC2A4\uB9C8\uC2A4\uC12C', num:162,en:'Christmas Island'} },\n [IOS3166_1_Code.KGZ]: { description: '', data: {emoji:'\uD83C\uDDF0\uD83C\uDDEC', alpha2: 'KG', alpha3:'KGZ', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/c/c7/Flag_of_Kyrgyzstan.svg/22px-Flag_of_Kyrgyzstan.svg.png',ko:'\uD0A4\uB974\uAE30\uC2A4\uC2A4\uD0C4', num:417,en:'Kyrgyzstan'} },\n [IOS3166_1_Code.KIR]: { description: '', data: {emoji:'\uD83C\uDDF0\uD83C\uDDEE', alpha2: 'KI', alpha3:'KIR', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/d/d3/Flag_of_Kiribati.svg/22px-Flag_of_Kiribati.svg.png',ko:'\uD0A4\uB9AC\uBC14\uC2DC', num:296,en:'Kiribati'} },\n [IOS3166_1_Code.CYP]: { description: '', data: {emoji:'\uD83C\uDDE8\uD83C\uDDFE', alpha2: 'CY', alpha3:'CYP', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/d/d4/Flag_of_Cyprus.svg/22px-Flag_of_Cyprus.svg.png',ko:'\uD0A4\uD504\uB85C\uC2A4', num:196,en:'Cyprus'} },\n [IOS3166_1_Code.TWN]: { description: '', data: {emoji:'\uD83C\uDDF9\uD83C\uDDFC', alpha2: 'TW', alpha3:'TWN', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/7/72/Flag_of_the_Republic_of_China.svg/40px-Flag_of_the_Republic_of_China.svg.png',ko:'\uB300\uB9CC', num:158,en:'Taiwan'} },\n [IOS3166_1_Code.TJK]: { description: '', data: {emoji:'\uD83C\uDDF9\uD83C\uDDEF', alpha2: 'TJ', alpha3:'TJK', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/d/d0/Flag_of_Tajikistan.svg/40px-Flag_of_Tajikistan.svg.png',ko:'\uD0C0\uC9C0\uD0A4\uC2A4\uD0C4', num:762,en:'Tajikistan'} },\n [IOS3166_1_Code.TZA]: { description: '', data: {emoji:'\uD83C\uDDF9\uD83C\uDDFF', alpha2: 'TZ', alpha3:'TZA', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/3/38/Flag_of_Tanzania.svg/40px-Flag_of_Tanzania.svg.png',ko:'\uD0C4\uC790\uB2C8\uC544', num:834,en:'Tanzania'} },\n [IOS3166_1_Code.THA]: { description: '', data: {emoji:'\uD83C\uDDF9\uD83C\uDDED', alpha2: 'TH', alpha3:'THA', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/a/a9/Flag_of_Thailand.svg/22px-Flag_of_Thailand.svg.png',ko:'\uD0DC\uAD6D', num:764,en:'Thailand'} },\n [IOS3166_1_Code.TCA]: { description: '', data: {emoji:'\uD83C\uDDF9\uD83C\uDDE8', alpha2: 'TC', alpha3:'TCA', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/a/a0/Flag_of_the_Turks_and_Caicos_Islands.svg/40px-Flag_of_the_Turks_and_Caicos_Islands.svg.png',ko:'\uD130\uD06C\uC2A4 \uCF00\uC774\uCEE4\uC2A4 \uC81C\uB3C4', num:796,en:'Turks and Caicos Islands'} },\n [IOS3166_1_Code.TUR]: { description: '', data: {emoji:'\uD83C\uDDF9\uD83C\uDDF7', alpha2: 'TR', alpha3:'TUR', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/b/b4/Flag_of_Turkey.svg/22px-Flag_of_Turkey.svg.png',ko:'\uD280\uB974\uD0A4\uC608', num:792,en:'Turkiye'} },\n [IOS3166_1_Code.TGO]: { description: '', data: {emoji:'\uD83C\uDDF9\uD83C\uDDEC', alpha2: 'TG', alpha3:'TGO', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/7/7a/Flag_of_Togo_%283-2%29.svg/40px-Flag_of_Togo_%283-2%29.svg.png',ko:'\uD1A0\uACE0', num:768,en:'Togo'} },\n [IOS3166_1_Code.TKL]: { description: '', data: {emoji:'\uD83C\uDDF9\uD83C\uDDF0', alpha2: 'TK', alpha3:'TKL', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/8/8e/Flag_of_Tokelau.svg/40px-Flag_of_Tokelau.svg.png',ko:'\uD1A0\uCF08\uB77C\uC6B0', num:772,en:'Tokelau'} },\n [IOS3166_1_Code.TON]: { description: '', data: {emoji:'\uD83C\uDDF9\uD83C\uDDF4', alpha2: 'TO', alpha3:'TON', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/9/9a/Flag_of_Tonga.svg/22px-Flag_of_Tonga.svg.png',ko:'\uD1B5\uAC00', num:776,en:'the whole house'} },\n [IOS3166_1_Code.TKM]: { description: '', data: {emoji:'\uD83C\uDDF9\uD83C\uDDF2', alpha2: 'TM', alpha3:'TKM', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/1/1b/Flag_of_Turkmenistan.svg/40px-Flag_of_Turkmenistan.svg.png',ko:'\uD22C\uB974\uD06C\uBA54\uB2C8\uC2A4\uD0C4', num:795,en:'Turkmenistan'} },\n [IOS3166_1_Code.TUV]: { description: '', data: {emoji:'\uD83C\uDDF9\uD83C\uDDFB', alpha2: 'TV', alpha3:'TUV', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/3/38/Flag_of_Tuvalu.svg/40px-Flag_of_Tuvalu.svg.png',ko:'\uD22C\uBC1C\uB8E8', num:798,en:'Tuvalu'} },\n [IOS3166_1_Code.TUN]: { description: '', data: {emoji:'\uD83C\uDDF9\uD83C\uDDF3', alpha2: 'TN', alpha3:'TUN', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/c/ce/Flag_of_Tunisia.svg/40px-Flag_of_Tunisia.svg.png',ko:'\uD280\uB2C8\uC9C0', num:788,en:'Tunisia'} },\n [IOS3166_1_Code.TTO]: { description: '', data: {emoji:'\uD83C\uDDF9\uD83C\uDDF9', alpha2: 'TT', alpha3:'TTO', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/6/64/Flag_of_Trinidad_and_Tobago.svg/40px-Flag_of_Trinidad_and_Tobago.svg.png',ko:'\uD2B8\uB9AC\uB2C8\uB2E4\uB4DC \uD1A0\uBC14\uACE0', num:780,en:'Trinidad and Tobago'} },\n [IOS3166_1_Code.PAN]: { description: '', data: {emoji:'\uD83C\uDDF5\uD83C\uDDE6', alpha2: 'PA', alpha3:'PAN', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/a/ab/Flag_of_Panama.svg/40px-Flag_of_Panama.svg.png',ko:'\uD30C\uB098\uB9C8', num:591,en:'Panama'} },\n [IOS3166_1_Code.PRY]: { description: '', data: {emoji:'\uD83C\uDDF5\uD83C\uDDFE', alpha2: 'PY', alpha3:'PRY', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/2/27/Flag_of_Paraguay.svg/40px-Flag_of_Paraguay.svg.png',ko:'\uD30C\uB77C\uACFC\uC774', num:600,en:'Paraguay'} },\n [IOS3166_1_Code.PAK]: { description: '', data: {emoji:'\uD83C\uDDF5\uD83C\uDDF0', alpha2: 'PK', alpha3:'PAK', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/3/32/Flag_of_Pakistan.svg/40px-Flag_of_Pakistan.svg.png',ko:'\uD30C\uD0A4\uC2A4\uD0C4', num:586,en:'Pakistan'} },\n [IOS3166_1_Code.PNG]: { description: '', data: {emoji:'\uD83C\uDDF5\uD83C\uDDEC', alpha2: 'PG', alpha3:'PNG', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/e/e3/Flag_of_Papua_New_Guinea.svg/22px-Flag_of_Papua_New_Guinea.svg.png',ko:'\uD30C\uD478\uC544\uB274\uAE30\uB2C8', num:598,en:'Papua New Guinea'} },\n [IOS3166_1_Code.PLW]: { description: '', data: {emoji:'\uD83C\uDDF5\uD83C\uDDFC', alpha2: 'PW', alpha3:'PLW', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/4/48/Flag_of_Palau.svg/22px-Flag_of_Palau.svg.png',ko:'\uD314\uB77C\uC6B0', num:585,en:'Palau'} },\n [IOS3166_1_Code.PSE]: { description: '', data: {emoji:'\uD83C\uDDF5\uD83C\uDDF8', alpha2: 'PS', alpha3:'PSE', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/0/00/Flag_of_Palestine.svg/40px-Flag_of_Palestine.svg.png',ko:'\uD314\uB808\uC2A4\uD0C0\uC778', num:275,en:'Palestine'} },\n [IOS3166_1_Code.FRO]: { description: '', data: {emoji:'\uD83C\uDDEB\uD83C\uDDF4', alpha2: 'FO', alpha3:'FRO', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/3/3c/Flag_of_the_Faroe_Islands.svg/40px-Flag_of_the_Faroe_Islands.svg.png',ko:'\uD398\uB85C \uC81C\uB3C4', num:234,en:'Faroe Islands'} },\n [IOS3166_1_Code.PER]: { description: '', data: {emoji:'\uD83C\uDDF5\uD83C\uDDEA', alpha2: 'PE', alpha3:'PER', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/c/cf/Flag_of_Peru.svg/40px-Flag_of_Peru.svg.png',ko:'\uD398\uB8E8', num:604,en:'Peru, Republic of'} },\n [IOS3166_1_Code.PRT]: { description: '', data: {emoji:'\uD83C\uDDF5\uD83C\uDDF9', alpha2: 'PT', alpha3:'PRT', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/5/5c/Flag_of_Portugal.svg/22px-Flag_of_Portugal.svg.png',ko:'\uD3EC\uB974\uD22C\uAC08', num:620,en:'Portugal'} },\n [IOS3166_1_Code.FLK]: { description: '', data: {emoji:'\uD83C\uDDEB\uD83C\uDDF0', alpha2: 'FK', alpha3:'FLK', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/8/83/Flag_of_the_Falkland_Islands.svg/40px-Flag_of_the_Falkland_Islands.svg.png',ko:'\uD3EC\uD074\uB79C\uB4DC \uC81C\uB3C4', num:238,en:'Falkland Islands'} },\n [IOS3166_1_Code.POL]: { description: '', data: {emoji:'\uD83C\uDDF5\uD83C\uDDF1', alpha2: 'PL', alpha3:'POL', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/1/12/Flag_of_Poland.svg/22px-Flag_of_Poland.svg.png',ko:'\uD3F4\uB780\uB4DC', num:616,en:'Poland'} },\n [IOS3166_1_Code.PRI]: { description: '', data: {emoji:'\uD83C\uDDF5\uD83C\uDDF7', alpha2: 'PR', alpha3:'PRI', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/2/28/Flag_of_Puerto_Rico.svg/40px-Flag_of_Puerto_Rico.svg.png',ko:'\uD478\uC5D0\uB974\uD1A0\uB9AC\uCF54', num:630,en:'Puerto Rico'} },\n [IOS3166_1_Code.FRA]: { description: '', data: {emoji:'\uD83C\uDDEB\uD83C\uDDF7', alpha2: 'FR', alpha3:'FRA', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/4/4a/Flag_of_France_%282024%E2%80%93present%29.svg/40px-Flag_of_France_%282024%E2%80%93present%29.svg.png',ko:'\uD504\uB791\uC2A4', num:250,en:'France'} },\n [IOS3166_1_Code.GUF]: { description: '', data: {emoji:'\uD83C\uDDEC\uD83C\uDDEB', alpha2: 'GF', alpha3:'GUF', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/2/29/Flag_of_French_Guiana.svg/22px-Flag_of_French_Guiana.svg.png',ko:'\uD504\uB791\uC2A4\uB839 \uAE30\uC544\uB098', num:254,en:'French Guiana'} },\n [IOS3166_1_Code.ATF]: { description: '', data: {emoji:'\uD83C\uDDF9\uD83C\uDDEB', alpha2: 'TF', alpha3:'ATF', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/a/a7/Flag_of_the_French_Southern_and_Antarctic_Lands.svg/22px-Flag_of_the_French_Southern_and_Antarctic_Lands.svg.png',ko:'\uD504\uB791\uC2A4\uB839 \uB0A8\uBC29 \uBC0F \uB0A8\uADF9 \uC9C0\uC5ED', num:260,en:'French Southern and Antarctic regions'} },\n [IOS3166_1_Code.PYF]: { description: '', data: {emoji:'\uD83C\uDDF5\uD83C\uDDEB', alpha2: 'PF', alpha3:'PYF', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/d/db/Flag_of_French_Polynesia.svg/22px-Flag_of_French_Polynesia.svg.png',ko:'\uD504\uB791\uC2A4\uB839 \uD3F4\uB9AC\uB124\uC2DC\uC544', num:258,en:'French Polynesia'} },\n [IOS3166_1_Code.FJI]: { description: '', data: {emoji:'\uD83C\uDDEB\uD83C\uDDEF', alpha2: 'FJ', alpha3:'FJI', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/b/ba/Flag_of_Fiji.svg/22px-Flag_of_Fiji.svg.png',ko:'\uD53C\uC9C0', num:242,en:'Fiji'} },\n [IOS3166_1_Code.FIN]: { description: '', data: {emoji:'\uD83C\uDDEB\uD83C\uDDEE', alpha2: 'FI', alpha3:'FIN', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/b/bc/Flag_of_Finland.svg/40px-Flag_of_Finland.svg.png',ko:'\uD540\uB780\uB4DC', num:246,en:'Finland'} },\n [IOS3166_1_Code.PHL]: { description: '', data: {emoji:'\uD83C\uDDF5\uD83C\uDDED', alpha2: 'PH', alpha3:'PHL', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/9/99/Flag_of_the_Philippines.svg/40px-Flag_of_the_Philippines.svg.png',ko:'\uD544\uB9AC\uD540', num:608,en:'Philippines'} },\n [IOS3166_1_Code.PCN]: { description: '', data: {emoji:'\uD83C\uDDF5\uD83C\uDDF3', alpha2: 'PN', alpha3:'PCN', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/8/88/Flag_of_the_Pitcairn_Islands.svg/22px-Flag_of_the_Pitcairn_Islands.svg.png',ko:'\uD54F\uCF00\uC5B8 \uC81C\uB3C4', num:612,en:'Pitcairn Islands'} },\n [IOS3166_1_Code.HMD]: { description: '', data: {emoji:'\uD83C\uDDED\uD83C\uDDF2', alpha2: 'HM', alpha3:'HMD', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/b/b9/Flag_of_Australia.svg/40px-Flag_of_Australia.svg.png',ko:'\uD5C8\uB4DC \uB9E5\uB3C4\uB110\uB4DC \uC81C\uB3C4', num:334,en:'the Heard MacDonald Islands'} },\n [IOS3166_1_Code.HUN]: { description: '', data: {emoji:'\uD83C\uDDED\uD83C\uDDFA', alpha2: 'HU', alpha3:'HUN', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/c/c1/Flag_of_Hungary.svg/40px-Flag_of_Hungary.svg.png',ko:'\uD5DD\uAC00\uB9AC', num:348,en:'Hungary'} },\n [IOS3166_1_Code.HKG]: { description: '', data: {emoji:'\uD83C\uDDED\uD83C\uDDF0', alpha2: 'HK', alpha3:'HKG', img:'https://upload.wikimedia.org/wikipedia/commons/thumb/5/5b/Flag_of_Hong_Kong.svg/22px-Flag_of_Hong_Kong.svg.png',ko:'\uD64D\uCF69', num:344,en:'Hong Kong'} },\n};", "import { Promises } from '../promise/Promises';\n\nexport type LoadImageBitMapCallbackType = { onload: (img: ImageBitmap) => void, onerror: (e: any) => void };\n\nexport namespace ImageUtils {\n export function loadImageBitMap(src: string): Promise<ImageBitmap>;\n export function loadImageBitMap(src: string, callback: LoadImageBitMapCallbackType): void;\n export function loadImageBitMap(src: string, callback?: LoadImageBitMapCallbackType): Promise<ImageBitmap> | void {\n let targetCallback: (img: ImageBitmap) => void;\n let catchCallback: (e: any) => void;\n let promise: Promise<ImageBitmap> | undefined = undefined;\n if (callback) {\n targetCallback = callback.onload;\n catchCallback = callback.onerror;\n } else {\n const r = Promises.withResolvers<ImageBitmap>();\n promise = r.promise;\n targetCallback = r.resolve;\n catchCallback = r.reject;\n }\n\n fetch(src, {\n mode: 'cors', // CORS \uC694\uCCAD (\uAE30\uBCF8\uAC12)\n credentials: 'omit' // \"anonymous\"\uC640 \uC720\uC0AC: \uC778\uC99D \uC815\uBCF4(\uCFE0\uD0A4, HTTP \uC778\uC99D) \uD3EC\uD568\uD558\uC9C0 \uC54A\uC74C\n }).then(response => {\n return response.blob();\n }).then(it => {\n return createImageBitmap(it);\n }).then(it => {\n targetCallback(it);\n }).catch(it => {\n catchCallback(it);\n })\n return promise;\n }\n}", "import { StringUtils } from '../string/StringUtils';\n\nexport namespace Expression {\n\n // html = html.replace(/\\$\\{[\\s\\S]*?\\}\\$/g, '');\n\n export const bindExpression = (expression: string, bind: { [name: string]: ((arg: any) => any) | any }) => {\n // ${data} wow ${wow:parameter}\n // expression\uC5D0\uC11C ${...} \uD615\uD0DC\uB97C \uBAA8\uB450 \uCC3E\uC544\uC11C \uCC98\uB9AC\n return (expression ?? '').replace(/\\$\\{([\\s\\S.]*?)\\}/g, (_, group) => {\n // \uD30C\uB77C\uBBF8\uD130\uAC00 \uC788\uB294 \uACBD\uC6B0: name:param\n const [name, param] = group.split(':');\n const binder = bind[name];\n if (!binder) return '';\n if (typeof binder === 'function') {\n return binder(bind[param]);\n }\n return binder;\n });\n }\n\n /**\n * @deprecated\n */\n // export namespace Group {\n // export const isExpression = (data: string | null) => {\n // // const reg = /(?:[$#]\\{(?:(([$#]\\{)??[^$#]?[^{]*?)\\}[$#]))/g;\n // const reg = /[$#]\\{([\\s\\S.]*?)\\}[$#]/g;\n // return reg.test(data ?? '');\n // }\n //\n // export const expressionGroups = (data: string | null) => {\n // // const reg = /(?:[$#]\\{(?:(([$#]\\{)??[^$#]*?)\\}[$#]))/g;\n // // const reg = /(?:[$#]\\{(?:(([$#]\\{)??[^$#]?[^{]*?)\\}[$#]))/g;\n // const reg = /[$#]\\{([\\s\\S.]*?)\\}[$#]/g;\n // return StringUtils.regexExec(reg, data ?? '');\n // }\n // }\n export namespace Path {\n export type PathNameData = { [name: string]: string }\n export const pathNameData = (pathName: string, urlExpression: string) => {\n const urls = pathName.split('/');\n const urlExpressions = urlExpression.split('/');\n if (urls.length !== urlExpressions.length) {\n return;\n }\n const data: Path.PathNameData = {}\n for (let i = 0; i < urlExpressions.length; i++) {\n const it = urlExpressions[i];\n const urlit = urls[i];\n // ex) {serialNo:[0-9]+} or {no} ..\n const execResult = /^\\{(.+)\\}$/g.exec(it);\n if (!execResult) {\n if (it !== urlit) {\n return;\n }\n continue;\n }\n // regex check\n const [name, regex] = execResult[1].split(':'); // group1\n if (regex && !new RegExp(regex).test(urlit)) {\n return;\n }\n data[name] = urlit;\n }\n return data;\n }\n }\n}", "/**\n * ActionExpression - Dynamic expression detection and processing system\n * Supports multiple expression syntaxes: {{ }}, {{= }}, {{@ }}\n * Also supports custom wrap expressions via config\n */\n\n/**\n * \uD45C\uD604\uC2DD\uC758 \uD0C0\uC785\uC744 \uC815\uC758\uD569\uB2C8\uB2E4.\n * - 'replace': {{ script }} - \uBB38\uC790\uC5F4 \uCE58\uD658\n * - 'call-return': {{= script }} - \uD568\uC218 \uD638\uCD9C \uD6C4 \uBC18\uD658\uAC12 \uC0AC\uC6A9\n * - 'call': {{@ script }} - \uD568\uC218 \uD638\uCD9C\uB9CC \uC218\uD589 (\uBC18\uD658\uAC12 \uBB34\uC2DC)\n */\n// export type ExpressionMarker = { start: string | RegExp; end: string | RegExp }; ///asdasdasd\nexport type ExpressionMarker = { start: string | RegExp; end: string | RegExp }; ///asdasdasd\n\nexport type ExpressionConfig = {\n replace?: ExpressionMarker;\n callReturn?: ExpressionMarker;\n call?: ExpressionMarker;\n};\n\nexport type ExpressionType = keyof ExpressionConfig;\n\nexport type ExpressionResult = {\n id: string;\n type: ExpressionType;\n original: string;\n script: string;\n expressionStart: string;\n expressionEnd: string;\n index?: number;\n};\n\nexport type GetExpressionConfig = {\n expression?: ExpressionConfig;\n};\n\nexport type ExpressionFilterOptions = {\n type?: ExpressionType;\n};\n\nexport const DEFAULT_EXPRESSION_CONFIG: Required<ExpressionConfig> = {\n 'callReturn': { start: '{{=', end: '}}' },\n 'call': { start: '{{@', end: '}}' },\n 'replace': { start: '{{', end: '}}' }\n};\n\nexport class ActionExpression {\n private originalTemplate: string;\n private maskingTemplate: string;\n private expressions: ExpressionResult[];\n private idToMarker: Map<string, string>;\n private processedIds: Set<string>;\n private currentTemplate: string;\n\n constructor(value: string, config?: GetExpressionConfig) {\n this.originalTemplate = value || '';\n this.idToMarker = new Map();\n this.processedIds = new Set();\n this.expressions = [];\n\n if (!value || typeof value !== 'string') {\n this.maskingTemplate = this.originalTemplate;\n this.currentTemplate = this.originalTemplate;\n return;\n }\n\n this.maskingTemplate = value;\n this.currentTemplate = value;\n\n const exprConfig = {\n 'callReturn': config?.expression?.['callReturn'] || DEFAULT_EXPRESSION_CONFIG['callReturn'],\n 'call': config?.expression?.call || DEFAULT_EXPRESSION_CONFIG.call,\n 'replace': config?.expression?.replace || DEFAULT_EXPRESSION_CONFIG.replace,\n };\n\n const types: ExpressionType[] = ['callReturn', 'call', 'replace'];\n types.sort((a, b) => {\n const startFirst = exprConfig[b].start;\n const startLast = exprConfig[a].start;\n const fLength = typeof startFirst ==='string' ? startFirst.length : startFirst.source.length;\n const lLength = typeof startLast ==='string' ? startLast.length : startLast.source.length;\n return fLength - lLength;\n });\n\n for (const type of types) {\n const marker = exprConfig[type];\n if (marker) {\n this.processExpressionType(type, marker.start, marker.end);\n }\n }\n\n this.sortExpressionsByPosition();\n this.maskingTemplate = this.currentTemplate;\n }\n\n private sortExpressionsByPosition(): void {\n this.expressions.forEach(expr => {\n const index = this.originalTemplate.indexOf(expr.original);\n expr.index = index >= 0 ? index : 0;\n });\n\n this.expressions.sort((a, b) => (a.index ?? 0) - (b.index ?? 0));\n }\n\n private processExpressionType(type: ExpressionType, start: string | RegExp, end: string | RegExp): void {\n // const escapedStart = start.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n // const escapedEnd = end.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n\n const getPattern = (v: string | RegExp) => {\n if (v instanceof RegExp) {\n return v.source; // \uD83D\uDC48 \uD575\uC2EC\n }\n return v.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'); // escape\n };\n const escapedStart = getPattern(start);\n const escapedEnd = getPattern(end);\n\n const regex = new RegExp(`${escapedStart}\\\\s*([\\\\s\\\\S]+?)\\\\s*${escapedEnd}`, 'g');\n let match;\n\n const valueToMatch = this.currentTemplate;\n\n while ((match = regex.exec(valueToMatch)) !== null) {\n this.addExpression(match, type);\n }\n }\n\n private addExpression(match: RegExpExecArray, type: ExpressionType): void {\n const id = Math.random().toString(36).substr(2, 9);\n const original = match[0];\n const rawScript = match[1];\n const marker = `__EXPR_${id}__`;\n\n const expressionStart = original.substring(0, original.indexOf(rawScript));\n const expressionEnd = original.substring(original.indexOf(rawScript) + rawScript.length);\n\n this.idToMarker.set(id, marker);\n this.currentTemplate = this.currentTemplate.replace(original, marker);\n\n this.expressions.push({\n id,\n type,\n original,\n script: rawScript.trim(),\n expressionStart,\n expressionEnd\n });\n }\n\n replace(id: string, value: string): string;\n replace(expr: ExpressionResult, value: string): string;\n replace(id: string, callback: (expr: ExpressionResult) => string): string;\n replace(expr: ExpressionResult, callback: (expr: ExpressionResult) => string): string;\n replace(idOrExpr: string | ExpressionResult, valueOrCallback: string | ((expr: ExpressionResult) => string)): string {\n const id = typeof idOrExpr === 'string' ? idOrExpr : idOrExpr.id;\n\n let expr: ExpressionResult | undefined;\n if (typeof valueOrCallback === 'function') {\n expr = this.expressions.find(e => e.id === id);\n if (!expr) return this.getUnprocessedTemplate();\n }\n\n const value = typeof valueOrCallback === 'function' ? valueOrCallback(expr!) : valueOrCallback;\n\n const marker = this.idToMarker.get(id);\n if (marker) {\n this.processedIds.add(id);\n this.currentTemplate = this.currentTemplate.replace(marker, value);\n }\n\n return this.getUnprocessedTemplate();\n }\n\n getExpressions(): ExpressionResult[];\n getExpressions(type: ExpressionType): ExpressionResult[];\n getExpressions(options: ExpressionFilterOptions): ExpressionResult[];\n getExpressions(typeOrOptions?: ExpressionType | ExpressionFilterOptions): ExpressionResult[] {\n if (!typeOrOptions) {\n return this.expressions;\n }\n if (typeof typeOrOptions === 'string') {\n return this.expressions.filter(expr => expr.type === typeOrOptions);\n }\n const options = typeOrOptions as ExpressionFilterOptions;\n return this.expressions.filter(expr => {\n if (options.type && expr.type !== options.type) return false;\n return true;\n });\n }\n\n getFirstExpression(): ExpressionResult | undefined;\n getFirstExpression(type: ExpressionType): ExpressionResult | undefined;\n getFirstExpression(options: ExpressionFilterOptions): ExpressionResult | undefined;\n getFirstExpression(typeOrOptions?: ExpressionType | ExpressionFilterOptions): ExpressionResult | undefined {\n if (!typeOrOptions) {\n return this.getExpressions()[0];\n }\n if (typeof typeOrOptions === 'string') {\n return this.getExpressions(typeOrOptions)[0];\n }\n return this.getExpressions(typeOrOptions as ExpressionFilterOptions)[0];\n }\n\n getOriginalTemplate(): string { return this.originalTemplate; }\n getMaskingTemplate(): string { return this.maskingTemplate; }\n getCurrentTemplate(): string { return this.currentTemplate; }\n\n toResult(): string {\n return this.getUnprocessedTemplate();\n }\n getUnprocessedTemplate(): string {\n let result = this.currentTemplate;\n for (const expr of this.expressions) {\n if (!this.processedIds.has(expr.id)) {\n const m = this.idToMarker.get(expr.id);\n if (m) {\n result = result.replace(m, expr.original);\n }\n }\n }\n return result;\n }\n}\n\nexport type GetExpressionResult = {\n originalTemplate: string;\n maskingTemplate: string;\n expressions: ExpressionResult[];\n replace: (id: string, value: string) => string;\n};\n\nexport function getExpression(value: string, config?: GetExpressionConfig): GetExpressionResult {\n const ae = new ActionExpression(value, config);\n\n return {\n originalTemplate: ae.getOriginalTemplate(),\n maskingTemplate: ae.getMaskingTemplate(),\n expressions: ae.getExpressions(),\n replace: (id: string, value: string) => ae.replace(id, value)\n };\n}\n", "export namespace HashUtils{\n\n const core53 = (str: string, seed: number): string => {\n let h1 = 0xdeadbeef ^ seed, h2 = 0x41c6ce57 ^ seed;\n for (let i = 0; i < str.length; i++) {\n const ch = str.charCodeAt(i);\n h1 = Math.imul(h1 ^ ch, 2654435761);\n h2 = Math.imul(h2 ^ ch, 1597334677);\n }\n h1 = Math.imul(h1 ^ (h1 >>> 16), 2246822507) ^ Math.imul(h2 ^ (h2 >>> 13), 3266489909);\n h2 = Math.imul(h2 ^ (h2 >>> 16), 2246822507) ^ Math.imul(h1 ^ (h1 >>> 13), 3266489909);\n return (4294967296 * (2097151 & h2) + (h1 >>> 0)).toString(16).padStart(14, '0');\n };\n\n /** cyrb53 \u2014 \uC21C\uC218 JS 53\uBE44\uD2B8 \uD574\uC2DC \u2192 hex (node:crypto \uC5C6\uC774 \uBE0C\uB77C\uC6B0\uC800\u00B7\uB178\uB4DC \uACF5\uD1B5).\n * \uB3D9\uC77C \uC785\uB825 \u2192 \uB3D9\uC77C \uCD9C\uB825. \uC790\uB9BF\uC218\uB294 xyz(\uAE30\uBCF8 16)\uB85C \uC790\uB984.\n * @example HashUtils.hash53('abc') // 16\uC790\uB9AC hex */\n export const hash53 = (str: string, seed = 0, xyz = 16): string =>\n `${core53(str, seed)}${core53(str, seed + 1)}`.slice(0, Math.max(1, xyz));\n\n}", "import { Observable, OperatorFunction } from '../Observable';\n\nexport function filter<T, S extends T>(\n predicate: (value: T, index: number) => value is S\n): OperatorFunction<T, S>;\nexport function filter<T, S extends T>(\n predicate: (value: T) => value is S\n): OperatorFunction<T, S>;\nexport function filter<T>(\n predicate: (value: T, index: number) => boolean\n): OperatorFunction<T, T>;\nexport function filter<T>(\n predicate: (value: T) => boolean\n): OperatorFunction<T, T>;\nexport function filter<T, S extends T>(\n predicate: ((value: T, index: number) => value is S) | ((value: T, index: number) => boolean)\n): OperatorFunction<T, S> | OperatorFunction<T, T> {\n return (source: Observable<T, any>): Observable<S, any> | Observable<T, any> => {\n return new Observable(subscriber => {\n let index = 0;\n const subscription = source.subscribe({\n next: (value) => {\n try {\n if (predicate(value, index++)) {\n subscriber.next(value as any);\n }\n } catch (err) {\n subscriber.error(err as any);\n }\n },\n error: (err) => {\n subscriber.error(err);\n },\n complete: () => {\n subscriber.complete();\n }\n });\n return subscription; // Return the subscription for teardown\n });\n };\n}\n"],
5
+ "mappings": "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AM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;AACNA,oBAAA,KAAA,IAAM;A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",
6
6
  "names": ["ValidUtils", "isDefined", "ArrayUtils", "ObjectUtils", "filter", "Path", "Script", "StringUtils", "DateUtils", "format", "age", "milliSecond", "MathUtil", "min", "max", "minMax", "sum", "ratio", "x", "bezier", "ConvertUtils", "obj", "RandomUtils", "uuid", "hex", "_Subscription", "empty", "e", "timer", "Promises", "Result", "p", "value", "target", "event", "fetch", "e", "_RenderTransactionDrawObj", "startPoint", "points", "index", "e", "Schedule", "UrlUtils", "LoggerLevel", "item", "ReflectUtils", "FunctionUtils", "_Optional", "OptionalUtils", "IOS3166_1_Code", "ImageUtils", "Expression", "Path", "value", "HashUtils"]
7
7
  }