ngx-drupal8-rest
Version:
> A wrapper library to connect to a Drupal8+ based backend
1 lines • 90.3 kB
Source Map (JSON)
{"version":3,"file":"ngx-drupal8-rest.mjs","sources":["../../../projects/ngx-drupal8-rest/src/lib/config/drupal-constants.ts","../../../projects/ngx-drupal8-rest/src/lib/models/commerce.ts","../../../projects/ngx-drupal8-rest/src/lib/http/base.service.ts","../../../projects/ngx-drupal8-rest/src/lib/http/user.service.ts","../../../projects/ngx-drupal8-rest/src/lib/http/view.service.ts","../../../projects/ngx-drupal8-rest/src/lib/http/content.service.ts","../../../projects/ngx-drupal8-rest/src/lib/http/taxonomy.service.ts","../../../projects/ngx-drupal8-rest/src/lib/http/file.service.ts","../../../projects/ngx-drupal8-rest/src/lib/http/media.service.ts","../../../projects/ngx-drupal8-rest/src/lib/http/flag.service.ts","../../../projects/ngx-drupal8-rest/src/lib/http/webform.service.ts","../../../projects/ngx-drupal8-rest/src/lib/http/push.service.ts","../../../projects/ngx-drupal8-rest/src/lib/http/commerce.service.ts","../../../projects/ngx-drupal8-rest/src/lib/http/comment.service.ts","../../../projects/ngx-drupal8-rest/src/lib/http/quiz.service.ts","../../../projects/ngx-drupal8-rest/src/lib/ngx-drupal8-rest.module.ts","../../../projects/ngx-drupal8-rest/src/public_api.ts","../../../projects/ngx-drupal8-rest/src/ngx-drupal8-rest.ts"],"sourcesContent":["import { Settings, LoginResponse } from '../models';\r\n\r\n// @dynamic\r\nexport class DrupalConstants {\r\n // Singletons\r\n private static instance: DrupalConstants;\r\n // props\r\n private settings: Settings;\r\n private connection: LoginResponse;\r\n private token: string;\r\n private tokenInit = false;\r\n\r\n /**\r\n * Init the module with Drupal 8 website configs\r\n * @param settings Drupal 8 back-end config\r\n */\r\n static init(settings: Settings) {\r\n // Optional config default values\r\n if (!settings.requestTimeout) {\r\n // 10 seconds\r\n settings.requestTimeout = 10000;\r\n }\r\n if (!settings.cookieLifetime) {\r\n // 23 days\r\n settings.cookieLifetime = 2000000;\r\n }\r\n this.Instance.settings = settings;\r\n }\r\n\r\n static get Token(): string {\r\n return this.Instance.token;\r\n }\r\n\r\n static set Token(value: string) {\r\n this.Instance.tokenInit = value ? true : false;\r\n this.Instance.token = value;\r\n }\r\n\r\n static get TokenInit(): boolean {\r\n return this.Instance.tokenInit;\r\n }\r\n\r\n static set TokenInit(value: boolean) {\r\n this.Instance.tokenInit = value;\r\n }\r\n\r\n /**\r\n * Get the settings object, Supports dynamic config\r\n */\r\n static get Settings(): Settings {\r\n if (!this.Instance.settings) {\r\n throw new Error('ngx-drupal8-rest: Application settings are not set, Please read README.MD file');\r\n }\r\n return this.Instance.settings;\r\n }\r\n\r\n /**\r\n * Get the back-end structured url\r\n */\r\n static get backEndUrl(): string {\r\n const settings = this.Settings;\r\n // Add protocol\r\n const url = settings.protocol + '://' + settings.host;\r\n // Check for port and return\r\n return settings.port ? url + ':' + settings.port : url;\r\n }\r\n\r\n /**\r\n * Get Singleton instance\r\n */\r\n private static get Instance() {\r\n if (!this.instance) {\r\n this.instance = new DrupalConstants();\r\n }\r\n return this.instance;\r\n }\r\n\r\n /**\r\n * Set the current connection info\r\n */\r\n static set Connection(newConnection: LoginResponse) {\r\n this.Instance.connection = newConnection;\r\n }\r\n\r\n /**\r\n * Get current connection info\r\n */\r\n static get Connection(): LoginResponse {\r\n return this.Instance.connection;\r\n }\r\n}\r\n","// Shared\r\n\r\nimport { FieldNumber, FieldText, FieldEntityReference, FieldEntityReferenceUrl, FieldBoolean } from './field';\r\n\r\nexport interface CommercePrice {\r\n number?: number;\r\n currency_code?: string;\r\n formatted?: string;\r\n}\r\n\r\nexport interface CommerceOrderEntity {\r\n order_id: FieldNumber[];\r\n uuid: FieldText[];\r\n type: FieldEntityReference[];\r\n order_number: FieldText[];\r\n store_id: FieldEntityReference[];\r\n uid: FieldEntityReferenceUrl[];\r\n mail: FieldText[];\r\n ip_address: FieldText[];\r\n billing_profile: FieldEntityReferenceUrl[];\r\n order_items: FieldEntityReference[];\r\n total_price: CommercePrice[];\r\n total_paid: CommercePrice[];\r\n state: FieldText[];\r\n data: { paid_event_dispatched: boolean }[];\r\n locked: FieldBoolean[];\r\n created: FieldNumber[];\r\n changed: FieldNumber[];\r\n placed: FieldNumber[];\r\n completed: FieldNumber[];\r\n cart: FieldBoolean[];\r\n payment_gateway: FieldEntityReference[];\r\n payment_method: FieldEntityReference[];\r\n}\r\n\r\nexport interface CommercePaymentEntity {\r\n payment_id: FieldNumber[];\r\n uuid: FieldText[];\r\n type: FieldText[];\r\n payment_gateway: FieldEntityReference[];\r\n payment_gateway_mode: FieldText[];\r\n payment_method: FieldEntityReference[];\r\n order_id: FieldEntityReference[];\r\n remote_id: FieldText[];\r\n amount: CommercePrice[];\r\n refunded_amount: CommercePrice[];\r\n state: FieldText[];\r\n expires: FieldNumber[];\r\n completed: FieldNumber[];\r\n}\r\n\r\n// Commerce Cart API\r\n\r\nexport interface CartOrder {\r\n order_id: number;\r\n uuid: string;\r\n store_id: number;\r\n order_items: CartOrderItem[];\r\n total_price: CommercePrice;\r\n coupons: any[]; // TODO\r\n order_number?: number;\r\n}\r\n\r\nexport interface CartOrderItem {\r\n order_item_id: number;\r\n uuid: string;\r\n order_id: number;\r\n title: string;\r\n quantity: number;\r\n unit_price: CommercePrice;\r\n total_price: CommercePrice;\r\n purchased_entity: CartProduct;\r\n}\r\n\r\nexport interface CartProduct {\r\n variation_id: number;\r\n uuid: string;\r\n type: string;\r\n product_id: number;\r\n sku: string;\r\n title: string;\r\n list_price: CommercePrice;\r\n price: CommercePrice;\r\n content_translation_source: string;\r\n content_translation_outdated: boolean;\r\n attribute_color: number;\r\n attribute_size: number;\r\n printful_reference: string;\r\n [key: string]: any; // custom fields\r\n weight?: number;\r\n}\r\n\r\nexport interface CartProductAdd {\r\n purchased_entity_type: string;\r\n purchased_entity_id: number;\r\n quantity: number;\r\n}\r\n\r\n// Commerce Decoupled Checkout\r\n\r\nexport interface CommerceOrder {\r\n order?: {\r\n order_items?: CommerceOrdeItem[];\r\n type?: string;\r\n email?: string;\r\n store?: number;\r\n [key: string]: any; // custom fields\r\n };\r\n // User profile associated with the order.\r\n profile?: {\r\n type?: string;\r\n status?: boolean;\r\n [key: string]: any; // custom fields\r\n };\r\n // A user account associated with the transaction.\r\n // Creates a new user if didn't not exist, or uses existing one.\r\n // In the second case fields WILL NOT be updated.\r\n user: {\r\n mail: string;\r\n name?: string;\r\n status?: boolean;\r\n [key: string]: any; // custom fields\r\n };\r\n // If you want to process the payment alongside with order submission,\r\n // then fill in the details of this field. Otherwise you can skip it\r\n // and use other REST endpoints to handle payments separately.\r\n payment?: CommercePayment;\r\n}\r\n\r\nexport interface CommerceOrdeItem {\r\n purchased_entity: {\r\n sku: string;\r\n };\r\n type?: string;\r\n title?: string;\r\n quantity?: number;\r\n unit_price?: CommercePrice;\r\n [key: string]: any; // custom fields\r\n}\r\n\r\nexport interface CommercePayment {\r\n gateway: string;\r\n type: string;\r\n details?: any[];\r\n capture?: boolean;\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Inject, Injectable, PLATFORM_ID } from '@angular/core';\r\n\r\n// RXJS\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { mergeMap, tap, timeout } from 'rxjs/operators';\r\n\r\n// Custom imports\r\nimport { isPlatformBrowser, isPlatformServer } from '@angular/common';\r\nimport { DrupalConstants } from '../config';\r\nimport { HttpOptions, LoginResponse } from '../models';\r\n\r\n@Injectable()\r\nexport class BaseService {\r\n private static currentTokenRequest: Subject<string> = null;\r\n\r\n constructor(\r\n private httpClient: HttpClient,\r\n @Inject(PLATFORM_ID) private platform: string\r\n ) {}\r\n\r\n getToken(): Observable<string> {\r\n if (BaseService.currentTokenRequest) {\r\n return BaseService.currentTokenRequest.asObservable();\r\n }\r\n\r\n BaseService.currentTokenRequest = new Subject<string>();\r\n const tokenOptions: HttpOptions = {\r\n method: 'get',\r\n responseType: 'text',\r\n };\r\n this.request(tokenOptions, '/session/token')\r\n .pipe(\r\n tap((token) => {\r\n if (DrupalConstants.Token && token !== DrupalConstants.Token) {\r\n this.deleteConnection();\r\n }\r\n DrupalConstants.Token = token;\r\n if (isPlatformBrowser(this.platform)) {\r\n localStorage.setItem('token', token);\r\n }\r\n // If connection is not init but localstorage contains a connection\r\n if (!DrupalConstants.Connection && this.connection) {\r\n DrupalConstants.Connection = this.connection;\r\n }\r\n return token;\r\n })\r\n )\r\n .subscribe({\r\n next: (token) => {\r\n queueMicrotask(() => {\r\n BaseService.currentTokenRequest.next(token);\r\n BaseService.currentTokenRequest.complete();\r\n BaseService.currentTokenRequest = null;\r\n });\r\n },\r\n error: (error) => {\r\n BaseService.currentTokenRequest = null;\r\n throw Error(error);\r\n },\r\n });\r\n return BaseService.currentTokenRequest.asObservable();\r\n }\r\n\r\n /**\r\n * Check for current user if logged in or not.\r\n * Based on current connection and expiration date\r\n */\r\n get isLoggedIn(): boolean {\r\n // if the connection expired, delete the connection\r\n if (this.connectionExpired) {\r\n this.deleteConnection();\r\n return false;\r\n }\r\n\r\n return DrupalConstants.Connection || this.connection ? true : false;\r\n }\r\n\r\n /**\r\n * Get current user login connection\r\n */\r\n get connection(): LoginResponse {\r\n if (!isPlatformServer(this.platform)) {\r\n if (DrupalConstants.Connection) {\r\n return DrupalConstants.Connection;\r\n }\r\n const storageToken = localStorage.getItem('token');\r\n if (storageToken) {\r\n DrupalConstants.Token = localStorage.getItem('token');\r\n }\r\n // get connection from localstorage\r\n const connection = <LoginResponse>(\r\n JSON.parse(localStorage.getItem('connection'))\r\n );\r\n if (connection) {\r\n DrupalConstants.Connection = connection;\r\n }\r\n // parse and return the data\r\n return connection;\r\n }\r\n }\r\n\r\n /**\r\n * Check if the current connection is expired\r\n */\r\n protected get connectionExpired(): boolean {\r\n if (!isPlatformServer(this.platform)) {\r\n // get expiration time in ms\r\n const expiration = +localStorage.getItem('expiration');\r\n // get current date\r\n const now = new Date();\r\n return expiration ? now.getTime() > expiration : true;\r\n }\r\n }\r\n\r\n /**\r\n * save the user login connection in localstorage and constants singleton\r\n * @param data connection to be saved\r\n */\r\n protected saveConnection(data: LoginResponse, token: string) {\r\n if (!isPlatformServer(this.platform)) {\r\n // set the current session\r\n DrupalConstants.Connection = data;\r\n DrupalConstants.Token = token;\r\n // save the connection in localstorage\r\n localStorage.setItem('connection', JSON.stringify(data));\r\n // get current time in ms\r\n const now = new Date().getTime();\r\n // get the future expiration time in ms\r\n const expiration = now + DrupalConstants.Settings.cookieLifetime * 1000;\r\n // set the expiration time\r\n localStorage.setItem('expiration', expiration.toString());\r\n localStorage.setItem('token', token);\r\n }\r\n }\r\n\r\n /**\r\n * remove the current session details\r\n */\r\n protected deleteConnection() {\r\n if (!isPlatformServer(this.platform)) {\r\n // empty current session\r\n DrupalConstants.Connection = undefined;\r\n DrupalConstants.Token = undefined;\r\n // removed saved data\r\n localStorage.removeItem('connection');\r\n localStorage.removeItem('expiration');\r\n localStorage.removeItem('token');\r\n }\r\n }\r\n\r\n /**\r\n * Main method for implementing all the HttpClient requests and return the results\r\n * @param options Custom HttpOptions to be overrided\r\n * @param resource The resource url, Token frags will be replaced from options.frags, EX: {'/user/{uid}'}\r\n * @param body the content to be sent with the request, Only for patch and post methods\r\n */\r\n protected request(\r\n options: HttpOptions,\r\n resource: string,\r\n body?\r\n ): Observable<any> {\r\n // Get full url\r\n const structuredResource = this.structureResource(resource, options.frags);\r\n\r\n let request: Observable<Object>;\r\n // Init http options\r\n const httpOptions = this.httpOptions(options);\r\n\r\n // Use the desired method\r\n if (options.method === 'patch' || options.method === 'post') {\r\n request = this.httpClient[options.method](\r\n structuredResource,\r\n body,\r\n httpOptions\r\n );\r\n } else {\r\n request = (this.httpClient[options.method] as any)(\r\n structuredResource,\r\n httpOptions\r\n );\r\n }\r\n if (resource !== '/session/token' && !DrupalConstants.TokenInit) {\r\n return this.getToken().pipe(\r\n mergeMap(() =>\r\n request.pipe(timeout(DrupalConstants.Settings.requestTimeout))\r\n )\r\n );\r\n }\r\n // Set requests time out from drupal config\r\n return request.pipe(timeout(DrupalConstants.Settings.requestTimeout));\r\n }\r\n\r\n /**\r\n * Get default HttpOptions or replace the custom ones.\r\n * Supports url params, responseType, headers, observer\r\n * @param options Custom httpOptions to override the defaults\r\n */\r\n private httpOptions(options: HttpOptions) {\r\n // Init default options\r\n const httpOptions: any = {\r\n reportProgress: true, // allow for progress\r\n withCredentials: true,\r\n responseType: 'json',\r\n params: {\r\n _format: 'json', // required by drupal 8 rest\r\n },\r\n headers: {},\r\n observe: 'body',\r\n };\r\n\r\n // If the user is logged in, add the CSRF header token\r\n if (DrupalConstants.Connection && DrupalConstants.Connection.csrf_token) {\r\n httpOptions.headers['X-CSRF-Token'] =\r\n DrupalConstants.Connection.csrf_token;\r\n } else if (DrupalConstants.Token) {\r\n httpOptions.headers['X-CSRF-Token'] = DrupalConstants.Token;\r\n }\r\n\r\n // Override defaults\r\n if (options.params) {\r\n httpOptions.params = options.params;\r\n }\r\n if (options.responseType) {\r\n httpOptions.responseType = options.responseType;\r\n }\r\n if (options.headers) {\r\n httpOptions.headers = options.headers;\r\n }\r\n if (options.observe) {\r\n httpOptions.observe = options.observe;\r\n }\r\n\r\n return httpOptions;\r\n }\r\n\r\n /**\r\n * get full resource structure after adding the frags\r\n * @param resource drupal base resource url\r\n * @param frags frags to change it with the value that inside brackets\r\n */\r\n private structureResource(\r\n resource: string,\r\n frags: string[] | number[] = []\r\n ): string {\r\n // if there is no custom frags\r\n if (frags.length === 0) {\r\n return DrupalConstants.backEndUrl + resource;\r\n }\r\n // split the resource to fragments\r\n const resourceParts = resource.split('/');\r\n // init empty string\r\n let resourceFrags = '';\r\n // check for each frag and replace it\r\n resourceParts.forEach((part, index) => {\r\n // if the part is a frag\r\n if (part[0] === '{') {\r\n // get the value from frags array and remove it\r\n resourceFrags += `/${frags.shift()}`;\r\n } else {\r\n // if part is not a frag add it directly\r\n resourceFrags += `/${part}`;\r\n }\r\n });\r\n // remove duplicate / at the start of the resource\r\n resourceFrags = resourceFrags.substr(1);\r\n return DrupalConstants.backEndUrl + resourceFrags;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n// RXJS\r\nimport { Observable, of, throwError } from 'rxjs';\r\nimport { tap, mergeMap, map, catchError } from 'rxjs/operators';\r\n\r\n// Custom imports\r\nimport {\r\n HttpOptions,\r\n LoginCredentials,\r\n LoginResponse,\r\n UserEntity,\r\n} from '../models';\r\nimport { BaseService } from './base.service';\r\n\r\n@Injectable()\r\nexport class UserService extends BaseService {\r\n private static readonly keyStoreCredentials: string = 'drx_8_derc';\r\n /**\r\n * Implements resource /user/login POST\r\n * Logs the user in using cookie authentication method\r\n * @param credentials username and password object style of the user\r\n */\r\n login(credentials: LoginCredentials): Observable<LoginResponse> {\r\n const httpOptions: HttpOptions = {\r\n method: 'post',\r\n };\r\n return this.request(httpOptions, '/user/login', credentials).pipe(\r\n mergeMap((response: LoginResponse) => {\r\n this.saveCredentialsInStorage(credentials);\r\n return this.getToken().pipe(\r\n map((token: string) => {\r\n // Save the response connection\r\n this.saveConnection(response, token);\r\n return response;\r\n })\r\n );\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Implements /user/logout POST\r\n * Logs the user out.\r\n * Will throw and error if the user is not logged in\r\n */\r\n logout(): Observable<null> {\r\n // if the user is not logged in yet, throw an observable error\r\n if (!this.isLoggedIn) {\r\n return throwError(() => 'User is not logged in.');\r\n }\r\n\r\n // set the options and logout token\r\n const httpOptions: HttpOptions = {\r\n method: 'post',\r\n params: {\r\n _format: 'json',\r\n token: this.connection.logout_token,\r\n },\r\n };\r\n\r\n // delete the saved connection after logging out\r\n return this.request(httpOptions, '/user/logout').pipe(\r\n tap(this.deleteConnection),\r\n tap(this.deleteStoredCredentials),\r\n catchError((err) => {\r\n if (err && err.status === 403) {\r\n this.deleteConnection();\r\n }\r\n throw err;\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Implement resource /user/{user} GET\r\n * @param uid the user id\r\n */\r\n get(uid: number): Observable<UserEntity> {\r\n const httpOptions: HttpOptions = {\r\n method: 'get',\r\n frags: [uid],\r\n };\r\n return this.request(httpOptions, '/user/{user}');\r\n }\r\n\r\n /**\r\n * Implement resource /entity/user: POST\r\n * @param user user object to create\r\n */\r\n create(user: UserEntity): Observable<UserEntity> {\r\n const httpOptions: HttpOptions = {\r\n method: 'post',\r\n };\r\n return this.request(httpOptions, '/entity/user', user);\r\n }\r\n\r\n /**\r\n * Implement resource /user/{user}: PATCH\r\n * @param uid user id to update\r\n * @param user user object with required values\r\n */\r\n update(uid: number, user: UserEntity): Observable<UserEntity> {\r\n const httpOptions: HttpOptions = {\r\n method: 'patch',\r\n frags: [uid],\r\n };\r\n return this.request(httpOptions, '/user/{user}', user);\r\n }\r\n\r\n /**\r\n * Implement resource /user/{user}: DELETE\r\n * @param uid user id to delete\r\n */\r\n delete(uid: number): Observable<null> {\r\n const httpOptions: HttpOptions = {\r\n method: 'delete',\r\n frags: [uid],\r\n };\r\n return this.request(httpOptions, '/user/{user}');\r\n }\r\n\r\n /**\r\n * Implement resource /user/register: POST\r\n * @param user user info object to register\r\n */\r\n register(user: {\r\n name: string[];\r\n pass: string[];\r\n mail: string[];\r\n [key:string]: any[]\r\n }): Observable<UserEntity> {\r\n const httpOptions: HttpOptions = {\r\n method: 'post',\r\n };\r\n return this.request(httpOptions, '/user/register', user);\r\n }\r\n /**\r\n * try to login user with the saved credentials in local storage if they exist\r\n * @returns Observable<LoginResponse>\r\n */\r\n\r\n attemptToLoginWithSavedCredentials(): Observable<LoginResponse> {\r\n const credentials = this.getStoredCredentials();\r\n if (!credentials) {\r\n return throwError(() => 'No credentials stored');\r\n }\r\n return this.login(credentials);\r\n }\r\n\r\n /**\r\n * Delete credentials from localstorage\r\n */\r\n deleteStoredCredentials(): void {\r\n localStorage.removeItem(UserService.keyStoreCredentials);\r\n }\r\n\r\n /**\r\n * Get the current user credentials from localstorage\r\n */\r\n getStoredCredentials(): LoginCredentials | null {\r\n const credStore = localStorage.getItem(UserService.keyStoreCredentials);\r\n if (!credStore) {\r\n return null;\r\n }\r\n return <LoginCredentials>JSON.parse(credStore);\r\n }\r\n\r\n /**\r\n * Save credentials in localstorage\r\n * @param credentials credentials to save in localstorage\r\n */\r\n protected saveCredentialsInStorage(credentials: LoginCredentials): void {\r\n localStorage.setItem(\r\n UserService.keyStoreCredentials,\r\n JSON.stringify(credentials)\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n// RXJS\r\nimport { Observable } from 'rxjs';\r\n\r\n// Custom imports\r\nimport { BaseService } from './base.service';\r\nimport { ViewOptions, HttpOptions, ViewEntity } from '../models';\r\n\r\n@Injectable()\r\nexport class ViewService extends BaseService {\r\n\r\n /**\r\n * Implements /entity/view/{view}: GET\r\n * Get view result\r\n * @param machineName view machine name\r\n */\r\n getView(machineName: string): Observable<ViewEntity> {\r\n const httpOptions: HttpOptions = {\r\n method: 'get',\r\n frags: [machineName],\r\n };\r\n return this.request(httpOptions, '/entity/view/{view}');\r\n }\r\n\r\n /**\r\n * Implements Views rest export\r\n * Returns array of view rows\r\n * @param viewPath the view url path, EX: '/view/my_custom_view_path'\r\n */\r\n get(viewPath: string, viewOptions: ViewOptions = {}): Observable<any[]> {\r\n const httpOptions: HttpOptions = {\r\n method: 'get',\r\n params: {\r\n '_format': 'json'\r\n }\r\n };\r\n\r\n if (viewOptions.args) {\r\n viewPath += '/' + viewOptions.args.join('/');\r\n }\r\n\r\n if (viewOptions.filters) {\r\n httpOptions.params = { ...httpOptions.params, ...viewOptions.filters };\r\n }\r\n\r\n if (viewOptions.pagination) {\r\n httpOptions.params = { ...httpOptions.params, ...viewOptions.pagination };\r\n }\r\n\r\n\r\n if (viewOptions.sorting) {\r\n httpOptions.params = { ...httpOptions.params, ...viewOptions.sorting };\r\n }\r\n\r\n return this.request(httpOptions, viewPath);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n// RXJS\r\nimport { Observable } from 'rxjs';\r\n\r\n// Custom imports\r\nimport { BaseService } from './base.service';\r\nimport { HttpOptions, ContentEntity, ContentType } from '../models';\r\n\r\n@Injectable()\r\nexport class ContentService extends BaseService {\r\n\r\n /**\r\n * Implement resource /node/{node} GET\r\n * @param nid the node id\r\n */\r\n get(nid: number): Observable<ContentEntity> {\r\n const httpOptions: HttpOptions = {\r\n method: 'get',\r\n frags: [nid]\r\n };\r\n return this.request(httpOptions, '/node/{node}');\r\n }\r\n\r\n /**\r\n * Implement resource /node: POST\r\n * @param content node object to create\r\n */\r\n create(content: ContentEntity): Observable<ContentEntity> {\r\n const httpOptions: HttpOptions = {\r\n method: 'post',\r\n };\r\n return this.request(httpOptions, '/node', content);\r\n }\r\n\r\n /**\r\n * Implement resource /node/{node}: PATCH\r\n * @param nid node id to update\r\n * @param content node object with required values\r\n */\r\n update(nid: number, content: ContentEntity): Observable<ContentEntity> {\r\n const httpOptions: HttpOptions = {\r\n method: 'patch',\r\n frags: [nid]\r\n };\r\n return this.request(httpOptions, '/node/{node}', content);\r\n }\r\n\r\n /**\r\n * Implement resource /node/{node}: DELETE\r\n * @param nid content id to delete\r\n */\r\n delete(nid: number): Observable<null> {\r\n const httpOptions: HttpOptions = {\r\n method: 'delete',\r\n frags: [nid]\r\n };\r\n return this.request(httpOptions, '/node/{node}');\r\n }\r\n\r\n /**\r\n * Implement resource /entity/node_type/{node_type}\r\n * @param type node type or machine name like page, article\r\n */\r\n contentType(type: string): Observable<ContentType> {\r\n const httpOptions: HttpOptions = {\r\n method: 'get',\r\n frags: [type]\r\n };\r\n return this.request(httpOptions, '/entity/node_type/{node_type}');\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n// RXJS\r\nimport { Observable } from 'rxjs';\r\n\r\n// Custom imports\r\nimport { BaseService } from './base.service';\r\nimport { HttpOptions, TaxonomyTermEntity, TaxonomyVocabularyEntity } from '../models';\r\n\r\n@Injectable()\r\nexport class TaxonomyService extends BaseService {\r\n\r\n /**\r\n * Implement resource /taxonomy/term/{taxonomy_term} GET\r\n * @param tid the term id\r\n */\r\n get(tid: number): Observable<TaxonomyTermEntity> {\r\n const httpOptions: HttpOptions = {\r\n method: 'get',\r\n frags: [tid]\r\n };\r\n return this.request(httpOptions, '/taxonomy/term/{taxonomy_term}');\r\n }\r\n\r\n /**\r\n * Implement resource /taxonomy/term: POST\r\n * @param term term object to create\r\n */\r\n create(term: TaxonomyTermEntity): Observable<TaxonomyTermEntity> {\r\n const httpOptions: HttpOptions = {\r\n method: 'post',\r\n };\r\n return this.request(httpOptions, '/taxonomy/term', term);\r\n }\r\n\r\n /**\r\n * Implement resource /taxonomy/term/{taxonomy_term}: PATCH\r\n * @param tid node id to update\r\n * @param term term object with required values\r\n */\r\n update(tid: number, term: TaxonomyTermEntity): Observable<TaxonomyTermEntity> {\r\n const httpOptions: HttpOptions = {\r\n method: 'patch',\r\n frags: [tid]\r\n };\r\n return this.request(httpOptions, '/taxonomy/term/{taxonomy_term}', term);\r\n }\r\n\r\n /**\r\n * Implement resource /taxonomy/term/{taxonomy_term}: DELETE\r\n * @param tid term id to delete\r\n */\r\n delete(tid: number): Observable<null> {\r\n const httpOptions: HttpOptions = {\r\n method: 'delete',\r\n frags: [tid]\r\n };\r\n return this.request(httpOptions, '/taxonomy/term/{taxonomy_term}');\r\n }\r\n\r\n /**\r\n * Implement /entity/taxonomy_vocabulary/{taxonomy_vocabulary}: Get\r\n * @param machineName vocabulary machine name like tags\r\n */\r\n vocabulary(machineName: string): Observable<TaxonomyVocabularyEntity> {\r\n const httpOptions: HttpOptions = {\r\n method: 'get',\r\n frags: [machineName]\r\n };\r\n return this.request(httpOptions, '/entity/taxonomy_vocabulary/{taxonomy_vocabulary}');\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n// RXJS\r\nimport { Observable } from 'rxjs';\r\n\r\n// Custom imports\r\nimport { BaseService } from './base.service';\r\nimport { HttpOptions, FileEntity } from '../models';\r\nimport { DrupalConstants } from '../config';\r\n\r\n@Injectable()\r\nexport class FileService extends BaseService {\r\n\r\n /**\r\n * Implement resource /entity/file/{file}: GET\r\n * @param fid the file id\r\n */\r\n get(fid: number): Observable<FileEntity> {\r\n const httpOptions: HttpOptions = {\r\n method: 'get',\r\n frags: [fid]\r\n };\r\n return this.request(httpOptions, '/entity/file/{file}');\r\n }\r\n\r\n /**\r\n * Implement resource /file/upload/{entity_type_id}/{bundle}/{field_name}: POST\r\n * @param file the file to create\r\n */\r\n upload(entityType: string, bundle: string, fieldName: string, file: File): Observable<FileEntity> {\r\n const httpOptions: HttpOptions = {\r\n method: 'post',\r\n frags: [entityType, bundle, fieldName],\r\n headers: {\r\n 'Content-Type': 'application/octet-stream',\r\n 'Content-Disposition': `file; filename=\"${file.name}\"`\r\n },\r\n };\r\n\r\n // If the user is logged in, add the CSRF header token\r\n if (DrupalConstants.Connection && DrupalConstants.Connection.csrf_token) {\r\n httpOptions.headers['X-CSRF-Token'] = DrupalConstants.Connection.csrf_token;\r\n }\r\n return this.request(httpOptions, '/file/upload/{entity_type_id}/{bundle}/{field_name}', file);\r\n }\r\n\r\n /**\r\n * Implement resource /entity/file/{file}: PATCH\r\n * @param fid the file id\r\n * @param file the file content to be updated\r\n */\r\n update(fid: number, file: FileEntity): Observable<FileEntity> {\r\n const httpOptions: HttpOptions = {\r\n method: 'patch',\r\n frags: [fid],\r\n };\r\n\r\n return this.request(httpOptions, '/entity/file/{file}', file);\r\n }\r\n\r\n /**\r\n * Implement resource /entity/file/{file}: DELETE\r\n * @param fid the file id\r\n */\r\n delete(fid: number): Observable<null> {\r\n const httpOptions: HttpOptions = {\r\n method: 'delete',\r\n frags: [fid],\r\n };\r\n\r\n return this.request(httpOptions, '/entity/file/{file}');\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n// RXJS\r\nimport { Observable } from 'rxjs';\r\n\r\n// Custom imports\r\nimport { BaseService } from './base.service';\r\nimport { HttpOptions, MediaEntity, MediaType } from '../models';\r\n\r\n@Injectable()\r\nexport class MediaService extends BaseService {\r\n\r\n /**\r\n * Implement resource /media/{media}/edit GET\r\n * @param mid the media id\r\n */\r\n get(mid: number): Observable<MediaEntity> {\r\n const httpOptions: HttpOptions = {\r\n method: 'get',\r\n frags: [mid]\r\n };\r\n return this.request(httpOptions, '/media/{media}/edit');\r\n }\r\n\r\n /**\r\n * Implement resource /entity/media: POST\r\n * @param media media object to create\r\n */\r\n create(media: MediaEntity): Observable<MediaEntity> {\r\n const httpOptions: HttpOptions = {\r\n method: 'post',\r\n };\r\n return this.request(httpOptions, '/entity/media', media);\r\n }\r\n\r\n /**\r\n * Implement resource /media/{media}/edit: PATCH\r\n * @param mid media id to update\r\n * @param media media object with required values\r\n */\r\n update(mid: number, media: MediaEntity): Observable<MediaEntity> {\r\n const httpOptions: HttpOptions = {\r\n method: 'patch',\r\n frags: [mid]\r\n };\r\n return this.request(httpOptions, '/media/{media}/edit', media);\r\n }\r\n\r\n /**\r\n * Implement resource /media/{media}/edit: DELETE\r\n * @param mid media id to delete\r\n */\r\n delete(mid: number): Observable<null> {\r\n const httpOptions: HttpOptions = {\r\n method: 'delete',\r\n frags: [mid]\r\n };\r\n return this.request(httpOptions, '/media/{media}/edit');\r\n }\r\n\r\n /**\r\n * Implement resource /entity/media_type/{media_type}\r\n * @param type media type or machine name like audio, image and video\r\n */\r\n mediaType(type: string): Observable<MediaType> {\r\n const httpOptions: HttpOptions = {\r\n method: 'get',\r\n frags: [type]\r\n };\r\n return this.request(httpOptions, '/entity/media_type/{media_type}');\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n// RXJS\r\nimport { Observable } from 'rxjs';\r\n\r\n// Custom imports\r\nimport { BaseService } from './base.service';\r\nimport { HttpOptions, FlagRegisteration, FlagEntity } from '../models';\r\n\r\n@Injectable()\r\nexport class FlagService extends BaseService {\r\n\r\n /**\r\n * Implement resource /entity/flagging/{flagging}: GET\r\n * @param fid the flag id\r\n */\r\n get(fid: number): Observable<FlagEntity> {\r\n const httpOptions: HttpOptions = {\r\n method: 'get',\r\n frags: [fid]\r\n };\r\n return this.request(httpOptions, '/entity/flagging/{flagging}');\r\n }\r\n\r\n /**\r\n * Implement resource /entity/flagging: POST\r\n * @param flag: flag content\r\n */\r\n post(flag: FlagRegisteration): Observable<FlagEntity> {\r\n const httpOptions: HttpOptions = {\r\n method: 'post',\r\n };\r\n return this.request(httpOptions, '/entity/flagging', flag);\r\n }\r\n\r\n update(fid: number, flag: FlagEntity): Observable<FlagEntity> {\r\n const httpOptions: HttpOptions = {\r\n method: 'patch',\r\n frags: [fid]\r\n };\r\n return this.request(httpOptions, '/entity/flagging/{flagging}', flag);\r\n }\r\n\r\n delete(fid: number): Observable<null> {\r\n const httpOptions: HttpOptions = {\r\n method: 'delete',\r\n frags: [fid]\r\n };\r\n return this.request(httpOptions, '/entity/flagging/{flagging}');\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n// RXJS\r\nimport { Observable } from 'rxjs';\r\n\r\n// Custom imports\r\nimport { BaseService } from './base.service';\r\nimport {\r\n HttpOptions,\r\n WebformEntity,\r\n WebformFields,\r\n WebformSubmission,\r\n} from '../models';\r\nimport { DrupalConstants } from '../config';\r\n\r\n@Injectable()\r\nexport class WebformService extends BaseService {\r\n /**\r\n * Implement resource \t/webform/{webform} GET\r\n * @param name the webform machine name\r\n * @param langCode the language code for the webform\r\n */\r\n get(machineName: string, langCode?: string): Observable<WebformEntity> {\r\n const httpOptions: HttpOptions = {\r\n method: 'get',\r\n frags: [machineName],\r\n };\r\n if (langCode) {\r\n httpOptions.params = { langcode: langCode };\r\n }\r\n return this.request(httpOptions, '/webform/{webform}');\r\n }\r\n\r\n /**\r\n * Implement resource /webform_rest/{webform_id}/fields GET\r\n * @param machineName the webform machine name\r\n * @param langCode the language code for the webform\r\n */\r\n fields(machineName: string, langCode?: string): Observable<WebformFields> {\r\n const httpOptions: HttpOptions = {\r\n method: 'get',\r\n frags: [machineName],\r\n };\r\n if (langCode) {\r\n httpOptions.params = { langcode: langCode };\r\n }\r\n return this.request(httpOptions, '/webform_rest/{webform_id}/fields');\r\n }\r\n\r\n /**\r\n * Implement resource /webform_rest/{webform_id}/submission/{sid} GET\r\n * @param machineName the webform machine name\r\n * @param sid the webform submittion id\r\n */\r\n getSubmission(\r\n machineName: string,\r\n sid: string,\r\n langCode?: string\r\n ): Observable<WebformSubmission> {\r\n const httpOptions: HttpOptions = {\r\n method: 'get',\r\n frags: [machineName, sid.toString()],\r\n };\r\n if (langCode) {\r\n httpOptions.params = { langcode: langCode };\r\n }\r\n return this.request(\r\n httpOptions,\r\n '/webform_rest/{webform_id}/submission/{sid}'\r\n );\r\n }\r\n\r\n /**\r\n * Implement resource /webform_rest/{webform_id}/submission/{sid} PATCH\r\n * @param machineName the webform machine name\r\n * @param sid the webform submittion id\r\n * @param webformSubmission the submission content object of fields\r\n */\r\n updateSubmission(\r\n machineName: string,\r\n sid: string,\r\n webformSubmission: any\r\n ): Observable<{ sid: string } | { error: { message: string } }> {\r\n const httpOptions: HttpOptions = {\r\n method: 'patch',\r\n frags: [machineName, sid.toString()],\r\n };\r\n return this.request(\r\n httpOptions,\r\n '/webform_rest/{webform_id}/submission/{sid}',\r\n webformSubmission\r\n );\r\n }\r\n\r\n /**\r\n * Implement resource /webform_rest/submit POST\r\n * @param webformSubmission the submission content object of fields\r\n * All required fields should be added or the request will return error 400 :/\r\n */\r\n submit(webformSubmission: {\r\n webform_id: string;\r\n [key: string]: any;\r\n }): Observable<{ sid: string }> {\r\n const httpOptions: HttpOptions = {\r\n method: 'post',\r\n };\r\n return this.request(httpOptions, '/webform_rest/submit', webformSubmission);\r\n }\r\n\r\n /**\r\n * Implement resource /webform_rest/{webform_id}/upload/{field_name}: POST\r\n * @param file the file to upload\r\n */\r\n upload(machineName: string, fieldName: string, file: File) {\r\n const httpOptions: HttpOptions = {\r\n method: 'post',\r\n frags: [machineName, fieldName],\r\n headers: {\r\n 'Content-Type': 'application/octet-stream',\r\n 'Content-Disposition': `file; filename=\"${file.name}\"`,\r\n },\r\n };\r\n\r\n // If the user is logged in, add the CSRF header token\r\n if (DrupalConstants.Connection && DrupalConstants.Connection.csrf_token) {\r\n httpOptions.headers['X-CSRF-Token'] =\r\n DrupalConstants.Connection.csrf_token;\r\n }\r\n return this.request(\r\n httpOptions,\r\n '/webform_rest/{webform_id}/upload/{field_name}',\r\n file\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n// RXJS\r\nimport { Observable } from 'rxjs';\r\n\r\n// Custom imports\r\nimport { BaseService } from './base.service';\r\nimport { HttpOptions, PushRegistration, PushRegisterationResponse } from '../models';\r\n\r\n@Injectable()\r\nexport class PushService extends BaseService {\r\n\r\n register(registration: PushRegistration): Observable<PushRegisterationResponse> {\r\n const httpOptions: HttpOptions = {\r\n method: 'post',\r\n };\r\n return this.request(httpOptions, '/entity/push_notifications_token', registration);\r\n }\r\n\r\n get(tokenId: number): Observable<PushRegisterationResponse> {\r\n const httpOptions: HttpOptions = {\r\n method: 'get',\r\n frags: [tokenId]\r\n };\r\n return this.request(httpOptions, '/push_notifications/token/{push_notifications_token}');\r\n }\r\n\r\n update(tokenId: number, registration: PushRegistration): Observable<PushRegisterationResponse> {\r\n const httpOptions: HttpOptions = {\r\n method: 'patch',\r\n frags: [tokenId]\r\n };\r\n return this.request(httpOptions, '/push_notifications/token/{push_notifications_token}', registration);\r\n }\r\n\r\n delete(tokenId: number): Observable<null> {\r\n const httpOptions: HttpOptions = {\r\n method: 'delete',\r\n frags: [tokenId]\r\n };\r\n return this.request(httpOptions, '/push_notifications/token/{push_notifications_token}');\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n// RXJS\r\nimport { Observable } from 'rxjs';\r\n\r\n// Custom imports\r\nimport { BaseService } from './base.service';\r\nimport {\r\n HttpOptions,\r\n CartOrder,\r\n CartProductAdd,\r\n CommerceOrder,\r\n CommerceOrderEntity,\r\n CommercePayment,\r\n CommercePaymentEntity,\r\n} from '../models';\r\n\r\n@Injectable()\r\nexport class CommerceService extends BaseService {\r\n // Commerce Cart API\r\n\r\n getCart(): Observable<CartOrder[]> {\r\n const httpOptions: HttpOptions = {\r\n method: 'get',\r\n };\r\n return this.request(httpOptions, '/cart');\r\n }\r\n\r\n getCartOrder(orderId: number): Observable<CartOrder> {\r\n const httpOptions: HttpOptions = {\r\n method: 'get',\r\n frags: [orderId],\r\n };\r\n return this.request(httpOptions, '/cart/{order}');\r\n }\r\n\r\n addToCart(data: CartProductAdd[]): Observable<CartOrder[]> {\r\n const httpOptions: HttpOptions = {\r\n method: 'post',\r\n };\r\n return this.request(httpOptions, '/cart/add', data);\r\n }\r\n\r\n updateCartOrderItems(\r\n orderId: number,\r\n items: { [key: number]: { quantity: number } }\r\n ): Observable<CartOrder> {\r\n const httpOptions: HttpOptions = {\r\n method: 'patch',\r\n frags: [orderId],\r\n };\r\n return this.request(httpOptions, '/cart/{order}/items', items);\r\n }\r\n\r\n deleteCartOrderItem(orderId: number, itemId: number): Observable<null> {\r\n const httpOptions: HttpOptions = {\r\n method: 'delete',\r\n frags: [orderId, itemId],\r\n };\r\n return this.request(httpOptions, '/cart/{order}/items/{item}');\r\n }\r\n\r\n deleteCartOrderItems(orderId: number): Observable<null> {\r\n const httpOptions: HttpOptions = {\r\n method: 'delete',\r\n frags: [orderId],\r\n };\r\n return this.request(httpOptions, '/cart/{order}/items');\r\n }\r\n\r\n // Commerce Decoupled Checkout\r\n\r\n createOrder(order: CommerceOrder): Observable<CommerceOrderEntity> {\r\n const httpOptions: HttpOptions = {\r\n method: 'post',\r\n };\r\n return this.request(httpOptions, '/commerce/order/create', order);\r\n }\r\n\r\n createPayment(\r\n orderId: number,\r\n payment: CommercePayment\r\n ): Observable<CommercePaymentEntity> {\r\n const httpOptions: HttpOptions = {\r\n method: 'post',\r\n frags: [orderId],\r\n };\r\n return this.request(\r\n httpOptions,\r\n '/commerce/payment/create/{order_id}',\r\n payment\r\n );\r\n }\r\n\r\n capturePayment(orderId: number, paymenId: number): Observable<null> {\r\n const httpOptions: HttpOptions = {\r\n method: 'post',\r\n frags: [orderId, paymenId],\r\n };\r\n return this.request(\r\n httpOptions,\r\n '/commerce/payment/capture/{order_id}/{payment_id}',\r\n {}\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n// RXJS\r\nimport { Observable } from 'rxjs';\r\n\r\n// Custom imports\r\nimport { BaseService } from './base.service';\r\nimport { HttpOptions, CommentType, Comment, CommentEntity } from '../models';\r\n\r\n@Injectable()\r\nexport class CommentService extends BaseService {\r\n\r\n create(comment: Comment): Observable<CommentEntity> {\r\n const httpOptions: HttpOptions = {\r\n method: 'post',\r\n };\r\n return this.request(httpOptions, '/comment', comment);\r\n }\r\n\r\n update(cid: number, comment: Comment): Observable<CommentEntity> {\r\n const httpOptions: HttpOptions = {\r\n method: 'patch',\r\n frags: [cid],\r\n };\r\n return this.request(httpOptions, '/comment/{comment}', comment);\r\n }\r\n\r\n delete(cid: number): Observable<null> {\r\n const httpOptions: HttpOptions = {\r\n method: 'delete',\r\n frags: [cid],\r\n };\r\n return this.request(httpOptions, '/comment/{comment}');\r\n }\r\n\r\n getById(cid: number): Observable<CommentEntity> {\r\n const httpOptions: HttpOptions = {\r\n method: 'get',\r\n frags: [cid],\r\n };\r\n return this.request(httpOptions, '/comment/{comment}');\r\n }\r\n\r\n getType(type: string): Observable<CommentType> {\r\n const httpOptions: HttpOptions = {\r\n method: 'get',\r\n frags: [type],\r\n };\r\n return this.request(httpOptions, '/entity/comment_type/{comment_type}');\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n// RXJS\r\nimport { Observable } from 'rxjs';\r\n\r\n// Custom imports\r\nimport { BaseService } from './base.service';\r\nimport {\r\n QuizEntity,\r\n HttpOptions,\r\n QuizFeedbackTypeEntity,\r\n QuizQuestionEntity,\r\n EntityBundleType,\r\n QuizQuestionRelationshipEntity,\r\n QuizResultEntity,\r\n QuizResultAnswerEntity,\r\n} from '../models';\r\n\r\n@Injectable()\r\nexport class QuizService extends BaseService {\r\n /**\r\n * Implements /quiz/{quiz}: GET\r\n * Returns quiz entity\r\n * @param qid the quiz entity ID\r\n */\r\n get(qid: number): Observable<QuizEntity> {\r\n const httpOptions: HttpOptions = {\r\n method: 'get',\r\n params: {\r\n _format: 'json',\r\n },\r\n frags: [qid],\r\n };\r\n\r\n return this.request(httpOptions, '/quiz/{quiz}');\r\n }\r\n\r\n /**\r\n * Implements /entity/quiz: POST\r\n * Returns quiz created entity\r\n * @param quiz the quiz entity with updated values\r\n */\r\n create(quiz: QuizEntity): Observable<QuizEntity> {\r\n const httpOptions: HttpOptions = {\r\n method: 'post',\r\n params: {\r\n _format: 'json',\r\n },\r\n };\r\n\r\n return this.request(httpOptions, '/entity/quiz', quiz);\r\n }\r\n\r\n /**\r\n * Implements /quiz/{quiz}: PATCH\r\n * Returns quiz updated entity\r\n * @param qid the quiz entity ID\r\n * @param quiz the quiz entity with updated values\r\n */\r\n update(qid: number, quiz: QuizEntity): Observable<QuizEntity> {\r\n const httpOptions: HttpOptions = {\r\n method: 'patch',\r\n params: {\r\n _format: 'json',\r\n },\r\n frags: [qid],\r\n };\r\n\r\n return this.request(httpOptions, '/quiz/{quiz}', quiz);\r\n }\r\n\r\n /**\r\n * Implements /quiz/{quiz}: DELETE\r\n * @param qid the quiz entity ID\r\n */\r\n delete(qid: number): Observable<null> {\r\n const httpOptions: HttpOptions = {\r\n method: 'delete',\r\n params: {\r\n _format: 'json',\r\n },\r\n frags: [qid],\r\n };\r\n\r\n return this.request(httpOptions, '/quiz/{quiz}');\r\n }\r\n\r\n /**\r\n * Implements /entity/quiz_type/{quiz_type}: GET\r\n * Returns quiz type\r\n * @param quizMachineName the quiz type machine name\r\n */\r\n getType(quizMachineName: string): Observable<EntityBundleType> {\r\n const httpOptions: HttpOptions = {\r\n method: 'get',\r\n params: {\r\n _format: 'json',\r\n },\r\n frags: [quizMachineName],\r\n };\r\n\r\n return this.request(httpOptions, '/entity/quiz_type/{quiz_type}');\r\n }\r\n\r\n /**\r\n * Implements /entity/quiz_feedback_type/{quiz_feedback_type}: GET\r\n * Returns quiz feedback type\r\n * @param feedbackMachineName the feedback type machine name\r\n */\r\n getFeedbackType(\r\n feedbackMachineName: string\r\n ): Observable<QuizFeedbackTypeEntity> {\r\n const httpOptions: HttpOptions = {\r\n method: 'get',\r\n params: {\r\n _format: 'json',\r\n },\r\n frags: [feedbackMachineName],\r\n };\r\n\r\n return this.request(\r\n httpOptions,\r\n '/entity/quiz_feedback_type/{quiz_feedback_type}'\r\n );\r\n }\r\n\r\n // Question\r\n\r\n /**\r\n * Implements /quiz-question/{quiz_question}: GET\r\n * Returns quiz question entity\r\n * @param qqid the quiz question entity ID\r\n */\r\n getQuestion(qqid: number): Observable<QuizQuestionEntity> {\r\n const httpOptions: HttpOptions = {\r\n method: 'get',\r\n params: {\r\n _format: 'json',\r\n },\r\n frags: [qqid],\r\n };\r\n\r\n return this.request(httpOptions, '/quiz-question/{quiz_question}');\r\n }\r\n\r\n /**\r\n * Implements /entity/quiz_question: POST\r\n * Returns question created entity\r\n * @param question the quiz question entity to create\r\n */\r\n createQuestion(question: QuizQuestionEntity): Observable<QuizQuestionEntity> {\r\n const httpOptions: HttpOptions = {\r\n method: 'post',\r\n params: {\r\n _format: 'json',\r\n },\r\n };\r\n\r\n return this.request(httpOptions, '/entity/quiz_question', question);\r\n }\r\n\r\n /**\r\n * Implements /quiz-question/{quiz_question}: PATCH\r\n * Returns question updated entity\r\n * @param qqid the quiz question entity ID\r\n * @param question the quiz question entity with updated values\r\n */\r\n updateQuestion(\r\n qqid: number,\r\n question: QuizQuestionEntity\r\n ): Observable<QuizQuestionEntity> {\r\n const httpOptions: HttpOptions = {\r\n method: 'patch',\r\n params: {\r\n _format: 'json',\r\n },\r\n frags: [qqid],\r\n };\r\n\r\n return this.request(\r\n httpOptions,\r\n '/quiz-question/{quiz_question}',\r\n question\r\n );\r\n }\r\n\r\n /**\r\n * Implements /quiz-question/{quiz_question}: DELETE\r\n * @param qqid the question entity ID\r\n */\r\n deleteQuestion(qqid: number): Observable<null> {\r\n const httpOptions: HttpOptions = {\r\n method: 'delete',\r\n params: {\r\n _format: 'json',\r\n },\r\n frags: [qqid],\r\n };\r\n\r\n return this.request(httpOptions, '/quiz-question/{quiz_question}');\r\n }\r\n\r\n /**\r\n * Implements /entity/quiz_question_type/{quiz_question_type}: GET\r\n * Returns quiz question type\r\n * @param feedbackMachineName the type machine name\r\n */\r\n getQuestionType(typeMachineName: string): Observable<EntityBundleType> {\r\n const httpOptions: HttpOptions = {\r\n method: 'get',\r\n params: {\r\n _format: 'json',\r\n },\r\n frags: [typeMachineName],\r\n };\r\n\r\n return this.request(\r\n httpOptions,\r\n '/entity/quiz_question_type/{quiz_question_type}'\r\n );\r\n }\r\n\r\n // Relationship\r\n\r\n /**\r\n * Implements /quiz-question-relationship/{quiz_question_relationship}: GET\r\n * Returns quiz question relationship entity\r\n * @param qqrid the quiz question relationship entity ID 'question id'\r\n */\r\n getQuestionRelationship(\r\n qqrid: number\r\n ): Observable<QuizQuestionRelationshipEntity> {\r\n const httpOptions: HttpOptions = {\r\n method: 'get',\r\n params: {\r\n _format: 'json',\r\n },\r\n frags: [qqrid],\r\n };\r\n\r\n return this.request(\r\n httpOptions,\r\n '/quiz-question-relationship/{quiz_question_relationship}'\r\n );\r\n }\r\n\r\n /**\r\n * Implements /quiz-question-relationship/{quiz_question_relationship}: POST\r\n * Returns quiz question relationship created entity\r\n * @param questionRelationship the quiz question relationship entity to create\r\n */\r\n createQuestionRelationship(\r\n questionRelationship: QuizQuestionRelationshipEntity\r\n ): Observable<QuizQuestionRelationshipEntity> {\r\n const httpOptions: HttpOptions = {\r\n method: 'post',\r\n params: {\r\n _format: 'json',\r\n },\r\n };\r\n\r\n return this.request(\r\n httpOptions,\r\n '/entity/quiz_question_relationship',\r\n questionRelationship\r\n );\r\n }\r\n\r\n /**\r\n * Implements /quiz-question-relationship/{quiz_question_relationship}: PATCH\r\n * Returns quiz question relationship updated entity\r\n * @param qqrid the quiz question relationship entity ID 'question id'\r\n * @param questionRelationship the quiz question relationship updated entity\r\n */\r\n updateQuestionRelationship(\r\n qqrid: number,\r\n questionRelationship: QuizQuestionRelationshipEntity\r\n ): Observable<QuizQuestionRelationshipEntity> {\r\n const httpOptions: HttpOptions = {\r\n method: 'patch',\r\n params: {\r\n _format: 'json',\r\n },\r\n frags: [qqrid],\r\n };\r\n\r\n return this.request(\r\n httpOptions,\r\n '/quiz-question-relationship/{quiz_question_relationship}',\r\n questionRelationship\r\n );\r\n }\r\n\r\n /**\r\n * Implements /quiz-question-relationship/{quiz_question_relationship}: DELETE\r\n * @param qqrid the quiz question relationship entity ID 'question id'\r\n */\r\n deleteQuestionRelationship(qqrid: number): Observable<null> {\r\n const httpOptions: HttpOptions = {\r\n method: 'delete',\r\n params: {\r\n _format: 'json',\r\n },\r\n frags: [qqrid],\r\n };\r\n\r\n return this.request(\r\n httpOptions,\r\n '/quiz-question-relationship/{quiz_question_relationship}'\r\n );\r\n }\r\n\r\n // Result\r\n\r\n /**\r\n * Implements /quiz/{quiz}/result/{quiz_result}: GET\r\n * Returns quiz result entity\r\n * @param qid the quiz entity ID\r\n * @param qrid the quiz result entity ID\r\n */\r\n getResult(qid: number, qrid: number): Observable<QuizResultEntity> {\r\n const httpOptions: HttpOptions = {\r\n method: 'get',\r\n params: {\r\n _format: 'json',\r\n },\r\n frags: [qid, qrid],\r\n };\r\n\r\n return this.request(httpOptions, '/quiz/{quiz}/result/{quiz_result}');\r\n }\r\n\r\n /**\r\n * Implements /entity/quiz_result: POST\r\n * Returns quiz result created entity\r\n * @param result the quiz result entity\r\n */\r\n createResult(result: QuizResultEntity): Observable<QuizResultEntity> {\r\n const httpOptions: HttpOptions = {\r\n method: 'post',\r\n params: {\r\n _format: 'json',\r\n },\r\n };\r\n\r\n return this.request(httpOptions, '/entity/quiz_result', result);\r\n }\r\n\r\n /**\r\n * Implements /quiz/{quiz}/result/{quiz_result}: PATCH\r\n * Returns quiz result updated entity\r\n * @param qid the quiz entity ID\r\n * @param qrid the quiz result entity ID\r\n * @param result the quiz result updated entity\r\n */\r\n updateResult(qid: number, qrid: number, result: QuizResultEntity): Observable<QuizResultEntity> {\r\n const httpOptions: HttpOptions = {\r\n method: 'patch',\r\n params: {\r\n _format: 'json',\r\n },\r\n frags: [qid, qrid]\r\n };\r\n\r\n return this.request(httpOptions, '/quiz/{quiz}/result/{quiz_result}', result);\r\n }\r\n\r\n /**\r\n * Implements /quiz/{quiz}/result/{quiz_result}: DELETE\r\n * @param qid the quiz entity ID\r\n * @param qrid the quiz result entity ID\r\n */\r\n deleteResult(qid: number, qrid: number): Observable<null> {\r\n const httpOptions: HttpOptions = {\r\n method: 'delete',\r\n params: {\r\n _format: 'json',\r\n },\r\n frags: [qid, qrid]\r\n };\r\n\r\n return this.request(httpOptions, '/quiz/{quiz}/result/{quiz_result}');\r\n }\r\n\r\n /**\r\n * Implements /entity/quiz_result_type/{quiz_result_type}: GET\r\n * Returns quiz result type\r\n * @param resultMachineName the type machine name\r\n */\r\n getResultType(resultMachineName: string): Observable<EntityBundleType> {\r\n const httpOptions: HttpOptions = {\r\n method: 'get',\r\n params: {\r\n _format: 'json',\r\n },\r\n frags: [resultMachineName],\r\n };\r\n\r\n return this.request(\r\n httpOptions,\r\n '/entity/quiz_result_type/{quiz_result_type}'\r\n );\r\n }\r\n\r\n // Result answer: interfaces TODO\r\n\r\n /**\r\n * Implements /quiz/{quiz}/result/{quiz_result}/answer/{quiz_result_answer}: GET\r\n * Returns quiz result answer entity\r\n * @param qid the quiz entity ID\r\n * @param qrid the quiz result entity ID\r\n * @param qrid the quiz result answer entity ID\r\n */\r\n getResultAnswer(qid: number, qrid: number, raid: number): Observable<any> {\r\n const httpOptions: HttpOptions = {\r\n method: 'get',\r\n params: {\r\n _format: 'json',\r\n },\r\n frags: [qid, qrid, raid],\r\n };\r\n\r\n return this.request(httpOptions, '/quiz/{quiz}/result/{quiz_result}/answer/{quiz_result_answer}');\r\n }\r\n\r\n /**\r\n * Implements /entity/quiz_result_answer: POST\r\n * Returns quiz result answer created entity\r\n * @param answer the quiz result answer entity\r\n */\r\n createResultAnswer(answer: any): Observable<any> {\r\n const httpOptions: HttpOptions = {\r\n method: 'post',\r\n params: {\r\n _format: 'json',\r\n },\r\n };\r\n\r\n return this.request(httpOptions, '/entity/quiz_result_answer', answer);\r\n }\r\n\r\n /**\r\n * Implements /quiz/{quiz}/result/{quiz_result}/answer/{quiz_result_answer}: PATCH\r\n * Returns quiz result updated entity\r\n * Returns quiz result answer entity\r\n * @param qid the quiz entity ID\r\n * @param qrid the quiz result entity ID\r\n * @param qrid the quiz result answer entity ID\r\n * @param answer the quiz result answer entity\r\n */\r\n updateResultAnswer(qid: number, qrid: number, raid: number, answer: any): Observable<any> {\r\n const httpOptions: HttpOptions = {\r\n method: 'patch',\r\n params: {\r\n _format: 'json',\r\n },\r\n frags: [qid, qrid, raid]\r\n };\r\n\r\n return this.request(httpOptions, '/quiz/{quiz}/result/{quiz_result}/answer/{quiz_result_answer}', answer);\r\n }\r\n\r\n /**\r\n * Implements /quiz/{quiz}/result/{quiz_result}/answer/{quiz_result_answer}: DELETE\r\n * @param qid the quiz entity ID\r\n * @param qrid the quiz result entity ID\r\n * @param qrid the quiz result answer entity ID\r\n */\r\n deleteResultAnswer(qid: number, qrid: number, raid: number): Observable<null> {\r\n const httpOptions: HttpOptions = {\r\n method: 'delete',\r\n params: {\r\n _format: 'json',\r\n },\r\n frags: [qid, qrid, raid]\r\n };\r\n\r\n return this.request(httpOptions, '/quiz/{quiz}/result/{quiz_result}/answer/{quiz_result_answer}');\r\n }\r\n\r\n/**\r\n * Implements /entity/quiz_result_answer_type/{quiz_result_answer_type}: GET\r\n * Returns quiz answer result type\r\n * @param resultMachineName the type machine name\r\n */\r\n getResultAnswerType(resultAnswerMachineName: string): Observable<EntityBundleType> {\r\n const httpOptions: HttpOptions = {\r\n method: 'get',\r\n params: {\r\n _format: 'json',\r\n },\r\n frags: [resultAnswerMachineName],\r\n };\r\n\r\n return this.request(\r\n httpOptions,\r\n '/entity/quiz_result_answer_type/{quiz_result_answer_type}'\r\n );\r\n }\r\n}\r\n","import { NgModule, APP_INITIALIZER } from '@angular/core';\r\nimport { HttpClientModule } from '@angular/common/http';\r\n\r\nimport { DrupalConstants } from './config';\r\nimport { UserService } from './http/user.service';\r\nimport { BaseService } from './http/base.service';\r\nimport { ViewService } from './http/view.service';\r\nimport { ContentService } from './http/content.service';\r\nimport { TaxonomyService } from './http/taxonomy.service';\r\nimport { FileService } from './http/file.service';\r\nimport { MediaService } from './http/media.service';\r\nimport { FlagService } from './http/flag.service';\r\nimport { WebformService } from './http/webform.service';\r\nimport { PushService } from './http/push.service';\r\nimport { CommerceService } from './http/commerce.service';\r\nimport { CommentService } from './http/comment.service';\r\nimport { QuizService } from './http/quiz.service';\r\n\r\n/**\r\n * implement APP_INITIALIZER\r\n * @param userService user service\r\n * @see https://gillespie59.github.io/2016/12/04/angular2-code-before-rendering.html\r\n */\r\nexport function init(userService: UserService): () => void {\r\n return () => {\r\n DrupalConstants.Connection = userService.connection;\r\n };\r\n}\r\n// @dynamic\r\n@NgModule({\r\n imports: [\r\n HttpClientModule\r\n ],\r\n providers: [\r\n BaseService,\r\n UserService,\r\n ViewService,\r\n ContentService,\r\n TaxonomyService,\r\n FileService,\r\n MediaService,\r\n FlagService,\r\n WebformService,\r\n PushService,\r\n CommerceService,\r\n CommentService,\r\n QuizService,\r\n {\r\n 'provide': APP_INITIALIZER,\r\n 'useFactory': init,\r\n 'deps': [UserService],\r\n 'multi': true\r\n }\r\n ]\r\n})\r\nexport class Drupal8RestModule { }\r\n\r\nexport {\r\n BaseService,\r\n UserService,\r\n ViewService,\r\n ContentService,\r\n TaxonomyService,\r\n FileService,\r\n MediaService,\r\n FlagService,\r\n WebformService,\r\n PushService,\r\n CommerceService,\r\n CommentService,\r\n QuizService\r\n};\r\n","/*\r\n * Public API Surface of ngx-drupal8-rest\r\n */\r\nexport * from './lib/config';\r\nexport * from './lib/models';\r\nexport * from './lib/ngx-drupal8-rest.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;;;AAEA;MACa,eAAe,CAAA;;IAElB,OAAO,QAAQ;;AAEf,IAAA,QAAQ;AACR,IAAA,UAAU;AACV,IAAA,KAAK;IACL,SAAS,GAAG,KAAK;AAEzB;;;AAGG;IACH,OAAO,IAAI,CAAC,QAAkB,EAAA;;AAE5B,QAAA,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE;;AAE5B,YAAA,QAAQ,CAAC,cAAc,GAAG,KAAK;;AAEjC,QAAA,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE;;AAE5B,YAAA,QAAQ,CAAC,cAAc,GAAG,OAAO;;AAEnC,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,QAAQ;;AAGnC,IAAA,WAAW,KAAK,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK;;IAG5B,WAAW,KAAK,CAAC,KAAa,EAAA;AAC5B,QAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK;AAC9C,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,KAAK;;AAG7B,IAAA,WAAW,SAAS,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS;;IAGhC,WAAW,SAAS,CAAC,KAAc,EAAA;AACjC,QAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,KAAK;;AAGjC;;AAEG;AACH,IAAA,WAAW,QAAQ,GAAA;AACjB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;AAC3B,YAAA,MAAM,IAAI,KAAK,CAAC,gFAAgF,CAAC;;AAEnG,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ;;AAG/B;;AAEG;AACH,IAAA,WAAW,UAAU,GAAA;AACnB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ;;QAE9B,MAAM,GAAG,GAAG,QAAQ,CAAC,QAAQ,GAAG,KAAK,GAAG,QAAQ,CAAC,IAAI;;AAErD,QAAA,OAAO,QAAQ,CAAC,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,QAAQ,CAAC,IAAI,GAAG,GAAG;;AAGxD;;AAEG;AACK,IAAA,WAAW,QAAQ,GAAA;AACzB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,eAAe,EAAE;;QAEvC,OAAO,IAAI,CAAC,QAAQ;;AAGtB;;AAEG;IACH,WAAW,UAAU,CAAC,aAA4B,EAAA;AAChD,QAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,aAAa;;AAG1C;;AAEG;AACH,IAAA,WAAW,UAAU,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU;;AAElC;;AC1FD;;MCaa,WAAW,CAAA;AAIZ,IAAA,UAAA;AACqB,IAAA,QAAA;AAJvB,IAAA,OAAO,mBAAmB,GAAoB,IAAI;IAE1D,WACU,CAAA,UAAsB,EACD,QAAgB,EAAA;QADrC,IAAU,CAAA,UAAA,GAAV,UAAU;QACW,IAAQ,CAAA,QAAA,GAAR,QAAQ;;IAGvC,QAAQ,GAAA;AACN,QAAA,IAAI,WAAW,CAAC,mBAAmB,EAAE;AACnC,YAAA,OAAO,WAAW,CAAC,mBAAmB,CAAC,YAAY,EAAE;;AAGvD,QAAA,WAAW,CAAC,mBAAmB,GAAG,IAAI,OAAO,EAAU;AACvD,QAAA,MAAM,YAAY,GAAgB;AAChC,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,YAAY,EAAE,MAAM;SACrB;AACD,QAAA,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,gBAAgB;AACxC,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,KAAK,KAAI;YACZ,IAAI,eAAe,CAAC,KAAK,IAAI,KAAK,KAAK,eAAe,CAAC,KAAK,EAAE;gBAC5D,IAAI,CAAC,gBAAgB,EAAE;;AAEzB,YAAA,eAAe,CAAC,KAAK,GAAG,KAAK;AAC7B,YAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;AACpC,gBAAA,YAAY,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC;;;YAGtC,IAAI,CAAC,eAAe,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,EAAE;AAClD,gBAAA,eAAe,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU;;AAE9C,YAAA,OAAO,KAAK;AACd,SAAC,CAAC;AAEH,aAAA,SAAS,CAAC;AACT,YAAA,IAAI,EAAE,CAAC,KAAK,KAAI;gBACd,cAAc,CAAC,MAAK;AAClB,oBAAA,WAAW,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC;AAC3C,oBAAA,WAAW,CAAC,mBAAmB,CAAC,QAAQ,EAAE;AAC1C,oBAAA,WAAW,CAAC,mBAAmB,GAAG,IAAI;AACxC,iBAAC,CAAC;aACH;AACD,YAAA,KAAK,EAAE,CAAC,KAAK,KAAI;AACf,gBAAA,WAAW,CAAC,mBAAmB,GAAG,IAAI;AACtC,gBAAA,MAAM,KAAK,CAAC,KAAK,CAAC;aACnB;AACF,SAAA,CAAC;AACJ,QAAA,OAAO,WAAW,CAAC,mBAAmB,CAAC,YAAY,EAAE;;AAGvD;;;AAGG;AACH,IAAA,IAAI,UAAU,GAAA;;AAEZ,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;YAC1B,IAAI,CAAC,gBAAgB,EAAE;AACvB,YAAA,OAAO,KAAK;;AAGd,QAAA,OAAO,eAAe,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,KAAK;;AAGrE;;AAEG;AACH,IAAA,IAAI,UAAU,GAAA;QACZ,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;AACpC,YAAA,IAAI,eAAe,CAAC,UAAU,EAAE;gBAC9B,OAAO,eAAe,CAAC,UAAU;;YAEnC,MAAM,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC;YAClD,IAAI,YAAY,EAAE;gBAChB,eAAe,CAAC,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC;;;AAGvD,YAAA,MAAM,UAAU,IACd,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAC/C;YACD,IAAI,UAAU,EAAE;AACd,gBAAA,eAAe,CAAC,UAAU,GAAG,UAAU;;;AAGzC,YAAA,OAAO,UAAU;;;AAIrB;;AAEG;AACH,IAAA,IAAc,iBAAiB,GAAA;QAC7B,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;;YAEpC,MAAM,UAAU,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC;;AAEtD,YAAA,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE;AACtB,YAAA,OAAO,UAAU,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,UAAU,GAAG,IAAI;;;AAIzD;;;AAGG;IACO,cAAc,CAAC,IAAmB,EAAE,KAAa,EAAA;QACzD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;;AAEpC,YAAA,eAAe,CAAC,UAAU,GAAG,IAAI;AACjC,YAAA,eAAe,CAAC,KAAK,GAAG,KAAK;;AAE7B,YAAA,YAAY,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;;YAExD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE;;YAEhC,MAAM,UAAU,GAAG,GAAG,GAAG,eAAe,CAAC,QAAQ,CAAC,cAAc,GAAG,IAAI;;YAEvE,YAAY,CAAC,OAAO,CAAC,YAAY,EAAE,UAAU,CAAC,QAAQ,EAAE,CAAC;AACzD,YAAA,YAAY,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC;;;AAIxC;;AAEG;IACO,gBAAgB,GAAA;QACxB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;;AAEpC,YAAA,eAAe,CAAC,UAAU,GAAG,SAAS;AACtC,YAAA,eAAe,CAAC,KAAK,GAAG,SAAS;;AAEjC,YAAA,YAAY,CAAC,UAAU,CAAC,YAAY,CAAC;AACrC,YAAA,YAAY,CAAC,UAAU,CAAC,YAAY,CAAC;AACrC,YAAA,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC;;;AAIpC;;;;;AAKG;AACO,IAAA,OAAO,CACf,OAAoB,EACpB,QAAgB,EAChB,IAAK,EAAA;;AAGL,QAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC;AAE1E,QAAA,IAAI,OAA2B;;QAE/B,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;;AAG7C,QAAA,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE;AAC3D,YAAA,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CACvC,kBAAkB,EAClB,IAAI,EACJ,WAAW,CACZ;;aACI;AACL,YAAA,OAAO,GAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAS,CAChD,kBAAkB,EAClB,WAAW,CACZ;;QAEH,IAAI,QAAQ,KAAK,gBAAgB,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE;YAC/D,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CACzB,QAAQ,CAAC,MACP,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAC/D,CACF;;;AAGH,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;;AAGvE;;;;AAIG;AACK,IAAA,WAAW,CAAC,OAAoB,EAAA;;AAEtC,QAAA,MAAM,WAAW,GAAQ;YACvB,cAAc,EAAE,IAAI;AACpB,YAAA,eAAe,EAAE,IAAI;AACrB,YAAA,YAAY,EAAE,MAAM;AACpB,YAAA,MAAM,EAAE;gBACN,OAAO,EAAE,MAAM;AAChB,aAAA;AACD,YAAA,OAAO,EAAE,EAAE;AACX,YAAA,OAAO,EAAE,MAAM;SAChB;;QAGD,IAAI,eAAe,CAAC,UAAU,IAAI,eAAe,CAAC,UAAU,CAAC,UAAU,EAAE;AACvE,YAAA,WAAW,CAAC,OAAO,CAAC,cAAc,CAAC;AACjC,gBAAA,eAAe,CAAC,UAAU,CAAC,UAAU;;AAClC,aAAA,IAAI,eAAe,CAAC,KAAK,EAAE;YAChC,WAAW,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,eAAe,CAAC,KAAK;;;AAI7D,QAAA,IAAI,OAAO,CAAC,MAAM,EAAE;AAClB,YAAA,WAAW,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM;;AAErC,QAAA,IAAI,OAAO,CAAC,YAAY,EAAE;AACxB,YAAA,WAAW,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY;;AAEjD,QAAA,IAAI,OAAO,CAAC,OAAO,EAAE;AACnB,YAAA,WAAW,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO;;AAEvC,QAAA,IAAI,OAAO,CAAC,OAAO,EAAE;AACnB,YAAA,WAAW,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO;;AAGvC,QAAA,OAAO,WAAW;;AAGpB;;;;AAIG;AACK,IAAA,iBAAiB,CACvB,QAAgB,EAChB,KAAA,GAA6B,EAAE,EAAA;;AAG/B,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AACtB,YAAA,OAAO,eAAe,CAAC,UAAU,GAAG,QAAQ;;;QAG9C,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC;;QAEzC,IAAI,aAAa,GAAG,EAAE;;QAEtB,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;;AAEpC,YAAA,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;;AAEnB,gBAAA,aAAa,IAAI,CAAI,CAAA,EAAA,KAAK,CAAC,KAAK,EAAE,EAAE;;iBAC/B;;AAEL,gBAAA,aAAa,IAAI,CAAA,CAAA,EAAI,IAAI,CAAA,CAAE;;AAE/B,SAAC,CAAC;;AAEF,QAAA,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;AACvC,QAAA,OAAO,eAAe,CAAC,UAAU,GAAG,aAAa;;AA7PxC,uBAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,4CAKZ,WAAW,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;8HALV,WAAW,EAAA,CAAA;;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBADvB;;0BAMI,MAAM;2BAAC,WAAW;;;ACFjB,MAAO,WAAY,SAAQ,WAAW,CAAA;AAClC,IAAA,OAAgB,mBAAmB,GAAW,YAAY;AAClE;;;;AAIG;AACH,IAAA,KAAK,CAAC,WAA6B,EAAA;AACjC,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,MAAM;SACf;AACD,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC,IAAI,CAC/D,QAAQ,CAAC,CAAC,QAAuB,KAAI;AACnC,YAAA,IAAI,CAAC,wBAAwB,CAAC,WAAW,CAAC;AAC1C,YAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CACzB,GAAG,CAAC,CAAC,KAAa,KAAI;;AAEpB,gBAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC;AACpC,gBAAA,OAAO,QAAQ;aAChB,CAAC,CACH;SACF,CAAC,CACH;;AAGH;;;;AAIG;IACH,MAAM,GAAA;;AAEJ,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AACpB,YAAA,OAAO,UAAU,CAAC,MAAM,wBAAwB,CAAC;;;AAInD,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,MAAM,EAAE;AACN,gBAAA,OAAO,EAAE,MAAM;AACf,gBAAA,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,YAAY;AACpC,aAAA;SACF;;AAGD,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC,IAAI,CACnD,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAC1B,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EACjC,UAAU,CAAC,CAAC,GAAG,KAAI;YACjB,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE;gBAC7B,IAAI,CAAC,gBAAgB,EAAE;;AAEzB,YAAA,MAAM,GAAG;SACV,CAAC,CACH;;AAGH;;;AAGG;AACH,IAAA,GAAG,CAAC,GAAW,EAAA;AACb,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,CAAC,GAAG,CAAC;SACb;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,cAAc,CAAC;;AAGlD;;;AAGG;AACH,IAAA,MAAM,CAAC,IAAgB,EAAA;AACrB,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,MAAM;SACf;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,cAAc,EAAE,IAAI,CAAC;;AAGxD;;;;AAIG;IACH,MAAM,CAAC,GAAW,EAAE,IAAgB,EAAA;AAClC,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,OAAO;YACf,KAAK,EAAE,CAAC,GAAG,CAAC;SACb;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,cAAc,EAAE,IAAI,CAAC;;AAGxD;;;AAGG;AACH,IAAA,MAAM,CAAC,GAAW,EAAA;AAChB,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,QAAQ;YAChB,KAAK,EAAE,CAAC,GAAG,CAAC;SACb;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,cAAc,CAAC;;AAGlD;;;AAGG;AACH,IAAA,QAAQ,CAAC,IAKR,EAAA;AACC,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,MAAM;SACf;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,gBAAgB,EAAE,IAAI,CAAC;;AAE1D;;;AAGG;IAEH,kCAAkC,GAAA;AAChC,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,oBAAoB,EAAE;QAC/C,IAAI,CAAC,WAAW,EAAE;AAChB,YAAA,OAAO,UAAU,CAAC,MAAM,uBAAuB,CAAC;;AAElD,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;;AAGhC;;AAEG;IACH,uBAAuB,GAAA;AACrB,QAAA,YAAY,CAAC,UAAU,CAAC,WAAW,CAAC,mBAAmB,CAAC;;AAG1D;;AAEG;IACH,oBAAoB,GAAA;QAClB,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC;QACvE,IAAI,CAAC,SAAS,EAAE;AACd,YAAA,OAAO,IAAI;;AAEb,QAAA,OAAyB,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;;AAGhD;;;AAGG;AACO,IAAA,wBAAwB,CAAC,WAA6B,EAAA;AAC9D,QAAA,YAAY,CAAC,OAAO,CAClB,WAAW,CAAC,mBAAmB,EAC/B,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAC5B;;0HAhKQ,WAAW,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;8HAAX,WAAW,EAAA,CAAA;;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBADvB;;;ACLK,MAAO,WAAY,SAAQ,WAAW,CAAA;AAE1C;;;;AAIG;AACH,IAAA,OAAO,CAAC,WAAmB,EAAA;AACzB,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,CAAC,WAAW,CAAC;SACrB;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,qBAAqB,CAAC;;AAGzD;;;;AAIG;AACH,IAAA,GAAG,CAAC,QAAgB,EAAE,WAAA,GAA2B,EAAE,EAAA;AACjD,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,MAAM,EAAE;AACN,gBAAA,SAAS,EAAE;AACZ;SACF;AAED,QAAA,IAAI,WAAW,CAAC,IAAI,EAAE;YACpB,QAAQ,IAAI,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;;AAG9C,QAAA,IAAI,WAAW,CAAC,OAAO,EAAE;AACvB,YAAA,WAAW,CAAC,MAAM,GAAG,EAAE,GAAG,WAAW,CAAC,MAAM,EAAE,GAAG,WAAW,CAAC,OAAO,EAAE;;AAGxE,QAAA,IAAI,WAAW,CAAC,UAAU,EAAE;AAC1B,YAAA,WAAW,CAAC,MAAM,GAAG,EAAE,GAAG,WAAW,CAAC,MAAM,EAAE,GAAG,WAAW,CAAC,UAAU,EAAE;;AAI3E,QAAA,IAAI,WAAW,CAAC,OAAO,EAAE;AACvB,YAAA,WAAW,CAAC,MAAM,GAAG,EAAE,GAAG,WAAW,CAAC,MAAM,EAAE,GAAG,WAAW,CAAC,OAAO,EAAE;;QAGxE,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,QAAQ,CAAC;;0HA7CjC,WAAW,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;8HAAX,WAAW,EAAA,CAAA;;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBADvB;;;ACCK,MAAO,cAAe,SAAQ,WAAW,CAAA;AAE7C;;;AAGG;AACH,IAAA,GAAG,CAAC,GAAW,EAAA;AACb,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,CAAC,GAAG;SACZ;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,cAAc,CAAC;;AAGlD;;;AAGG;AACH,IAAA,MAAM,CAAC,OAAsB,EAAA;AAC3B,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,MAAM;SACf;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC;;AAGpD;;;;AAIG;IACH,MAAM,CAAC,GAAW,EAAE,OAAsB,EAAA;AACxC,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,OAAO;YACf,KAAK,EAAE,CAAC,GAAG;SACZ;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,cAAc,EAAE,OAAO,CAAC;;AAG3D;;;AAGG;AACH,IAAA,MAAM,CAAC,GAAW,EAAA;AAChB,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,QAAQ;YAChB,KAAK,EAAE,CAAC,GAAG;SACZ;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,cAAc,CAAC;;AAGlD;;;AAGG;AACH,IAAA,WAAW,CAAC,IAAY,EAAA;AACtB,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,CAAC,IAAI;SACb;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,+BAA+B,CAAC;;0HA3DxD,cAAc,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;8HAAd,cAAc,EAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B;;;ACCK,MAAO,eAAgB,SAAQ,WAAW,CAAA;AAE9C;;;AAGG;AACH,IAAA,GAAG,CAAC,GAAW,EAAA;AACb,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,CAAC,GAAG;SACZ;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,gCAAgC,CAAC;;AAGpE;;;AAGG;AACH,IAAA,MAAM,CAAC,IAAwB,EAAA;AAC7B,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,MAAM;SACf;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,gBAAgB,EAAE,IAAI,CAAC;;AAG1D;;;;AAIG;IACH,MAAM,CAAC,GAAW,EAAE,IAAwB,EAAA;AAC1C,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,OAAO;YACf,KAAK,EAAE,CAAC,GAAG;SACZ;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,gCAAgC,EAAE,IAAI,CAAC;;AAG1E;;;AAGG;AACH,IAAA,MAAM,CAAC,GAAW,EAAA;AAChB,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,QAAQ;YAChB,KAAK,EAAE,CAAC,GAAG;SACZ;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,gCAAgC,CAAC;;AAGpE;;;AAGG;AACH,IAAA,UAAU,CAAC,WAAmB,EAAA;AAC5B,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,CAAC,WAAW;SACpB;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,mDAAmD,CAAC;;0HA3D5E,eAAe,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;8HAAf,eAAe,EAAA,CAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B;;;ACEK,MAAO,WAAY,SAAQ,WAAW,CAAA;AAE1C;;;AAGG;AACH,IAAA,GAAG,CAAC,GAAW,EAAA;AACb,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,CAAC,GAAG;SACZ;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,qBAAqB,CAAC;;AAGzD;;;AAGG;AACH,IAAA,MAAM,CAAC,UAAkB,EAAE,MAAc,EAAE,SAAiB,EAAE,IAAU,EAAA;AACtE,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,KAAK,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,CAAC;AACtC,YAAA,OAAO,EAAE;AACP,gBAAA,cAAc,EAAE,0BAA0B;AAC1C,gBAAA,qBAAqB,EAAE,CAAA,gBAAA,EAAmB,IAAI,CAAC,IAAI,CAAG,CAAA;AACvD,aAAA;SACF;;QAGD,IAAI,eAAe,CAAC,UAAU,IAAI,eAAe,CAAC,UAAU,CAAC,UAAU,EAAE;YACvE,WAAW,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,eAAe,CAAC,UAAU,CAAC,UAAU;;QAE7E,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,qDAAqD,EAAE,IAAI,CAAC;;AAG/F;;;;AAIG;IACH,MAAM,CAAC,GAAW,EAAE,IAAgB,EAAA;AAClC,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,OAAO;YACf,KAAK,EAAE,CAAC,GAAG,CAAC;SACb;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,qBAAqB,EAAE,IAAI,CAAC;;AAG/D;;;AAGG;AACH,IAAA,MAAM,CAAC,GAAW,EAAA;AAChB,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,QAAQ;YAChB,KAAK,EAAE,CAAC,GAAG,CAAC;SACb;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,qBAAqB,CAAC;;0HA3D9C,WAAW,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;8HAAX,WAAW,EAAA,CAAA;;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBADvB;;;ACAK,MAAO,YAAa,SAAQ,WAAW,CAAA;AAE3C;;;AAGG;AACH,IAAA,GAAG,CAAC,GAAW,EAAA;AACb,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,CAAC,GAAG;SACZ;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,qBAAqB,CAAC;;AAGzD;;;AAGG;AACH,IAAA,MAAM,CAAC,KAAkB,EAAA;AACvB,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,MAAM;SACf;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,eAAe,EAAE,KAAK,CAAC;;AAG1D;;;;AAIG;IACH,MAAM,CAAC,GAAW,EAAE,KAAkB,EAAA;AACpC,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,OAAO;YACf,KAAK,EAAE,CAAC,GAAG;SACZ;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,qBAAqB,EAAE,KAAK,CAAC;;AAGhE;;;AAGG;AACH,IAAA,MAAM,CAAC,GAAW,EAAA;AAChB,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,QAAQ;YAChB,KAAK,EAAE,CAAC,GAAG;SACZ;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,qBAAqB,CAAC;;AAGzD;;;AAGG;AACH,IAAA,SAAS,CAAC,IAAY,EAAA;AACpB,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,CAAC,IAAI;SACb;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,iCAAiC,CAAC;;0HA3D1D,YAAY,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;8HAAZ,YAAY,EAAA,CAAA;;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBADxB;;;ACCK,MAAO,WAAY,SAAQ,WAAW,CAAA;AAE1C;;;AAGG;AACH,IAAA,GAAG,CAAC,GAAW,EAAA;AACb,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,CAAC,GAAG;SACZ;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,6BAA6B,CAAC;;AAGjE;;;AAGG;AACH,IAAA,IAAI,CAAC,IAAuB,EAAA;AAC1B,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,MAAM;SACf;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,kBAAkB,EAAE,IAAI,CAAC;;IAG5D,MAAM,CAAC,GAAW,EAAE,IAAgB,EAAA;AAClC,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,OAAO;YACf,KAAK,EAAE,CAAC,GAAG;SACZ;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,6BAA6B,EAAE,IAAI,CAAC;;AAGvE,IAAA,MAAM,CAAC,GAAW,EAAA;AAChB,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,QAAQ;YAChB,KAAK,EAAE,CAAC,GAAG;SACZ;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,6BAA6B,CAAC;;0HAtCtD,WAAW,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;8HAAX,WAAW,EAAA,CAAA;;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBADvB;;;ACOK,MAAO,cAAe,SAAQ,WAAW,CAAA;AAC7C;;;;AAIG;IACH,GAAG,CAAC,WAAmB,EAAE,QAAiB,EAAA;AACxC,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,CAAC,WAAW,CAAC;SACrB;QACD,IAAI,QAAQ,EAAE;YACZ,WAAW,CAAC,MAAM,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE;;QAE7C,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,oBAAoB,CAAC;;AAGxD;;;;AAIG;IACH,MAAM,CAAC,WAAmB,EAAE,QAAiB,EAAA;AAC3C,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,CAAC,WAAW,CAAC;SACrB;QACD,IAAI,QAAQ,EAAE;YACZ,WAAW,CAAC,MAAM,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE;;QAE7C,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,mCAAmC,CAAC;;AAGvE;;;;AAIG;AACH,IAAA,aAAa,CACX,WAAmB,EACnB,GAAW,EACX,QAAiB,EAAA;AAEjB,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,CAAC,WAAW,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC;SACrC;QACD,IAAI,QAAQ,EAAE;YACZ,WAAW,CAAC,MAAM,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE;;QAE7C,OAAO,IAAI,CAAC,OAAO,CACjB,WAAW,EACX,6CAA6C,CAC9C;;AAGH;;;;;AAKG;AACH,IAAA,gBAAgB,CACd,WAAmB,EACnB,GAAW,EACX,iBAAsB,EAAA;AAEtB,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,OAAO;YACf,KAAK,EAAE,CAAC,WAAW,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC;SACrC;QACD,OAAO,IAAI,CAAC,OAAO,CACjB,WAAW,EACX,6CAA6C,EAC7C,iBAAiB,CAClB;;AAGH;;;;AAIG;AACH,IAAA,MAAM,CAAC,iBAGN,EAAA;AACC,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,MAAM;SACf;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,sBAAsB,EAAE,iBAAiB,CAAC;;AAG7E;;;AAGG;AACH,IAAA,MAAM,CAAC,WAAmB,EAAE,SAAiB,EAAE,IAAU,EAAA;AACvD,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,KAAK,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC;AAC/B,YAAA,OAAO,EAAE;AACP,gBAAA,cAAc,EAAE,0BAA0B;AAC1C,gBAAA,qBAAqB,EAAE,CAAA,gBAAA,EAAmB,IAAI,CAAC,IAAI,CAAG,CAAA,CAAA;AACvD,aAAA;SACF;;QAGD,IAAI,eAAe,CAAC,UAAU,IAAI,eAAe,CAAC,UAAU,CAAC,UAAU,EAAE;AACvE,YAAA,WAAW,CAAC,OAAO,CAAC,cAAc,CAAC;AACjC,gBAAA,eAAe,CAAC,UAAU,CAAC,UAAU;;QAEzC,OAAO,IAAI,CAAC,OAAO,CACjB,WAAW,EACX,gDAAgD,EAChD,IAAI,CACL;;0HApHQ,cAAc,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;8HAAd,cAAc,EAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B;;;ACLK,MAAO,WAAY,SAAQ,WAAW,CAAA;AAE1C,IAAA,QAAQ,CAAC,YAA8B,EAAA;AACrC,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,MAAM;SACf;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,kCAAkC,EAAE,YAAY,CAAC;;AAGpF,IAAA,GAAG,CAAC,OAAe,EAAA;AACjB,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,CAAC,OAAO;SAChB;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,sDAAsD,CAAC;;IAG1F,MAAM,CAAC,OAAe,EAAE,YAA8B,EAAA;AACpD,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,OAAO;YACf,KAAK,EAAE,CAAC,OAAO;SAChB;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,sDAAsD,EAAE,YAAY,CAAC;;AAGxG,IAAA,MAAM,CAAC,OAAe,EAAA;AACpB,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,QAAQ;YAChB,KAAK,EAAE,CAAC,OAAO;SAChB;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,sDAAsD,CAAC;;0HA9B/E,WAAW,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;8HAAX,WAAW,EAAA,CAAA;;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBADvB;;;ACSK,MAAO,eAAgB,SAAQ,WAAW,CAAA;;IAG9C,OAAO,GAAA;AACL,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,KAAK;SACd;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC;;AAG3C,IAAA,YAAY,CAAC,OAAe,EAAA;AAC1B,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,CAAC,OAAO,CAAC;SACjB;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,eAAe,CAAC;;AAGnD,IAAA,SAAS,CAAC,IAAsB,EAAA;AAC9B,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,MAAM;SACf;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,WAAW,EAAE,IAAI,CAAC;;IAGrD,oBAAoB,CAClB,OAAe,EACf,KAA8C,EAAA;AAE9C,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,OAAO;YACf,KAAK,EAAE,CAAC,OAAO,CAAC;SACjB;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,qBAAqB,EAAE,KAAK,CAAC;;IAGhE,mBAAmB,CAAC,OAAe,EAAE,MAAc,EAAA;AACjD,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;SACzB;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,4BAA4B,CAAC;;AAGhE,IAAA,oBAAoB,CAAC,OAAe,EAAA;AAClC,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,QAAQ;YAChB,KAAK,EAAE,CAAC,OAAO,CAAC;SACjB;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,qBAAqB,CAAC;;;AAKzD,IAAA,WAAW,CAAC,KAAoB,EAAA;AAC9B,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,MAAM;SACf;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,wBAAwB,EAAE,KAAK,CAAC;;IAGnE,aAAa,CACX,OAAe,EACf,OAAwB,EAAA;AAExB,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,MAAM;YACd,KAAK,EAAE,CAAC,OAAO,CAAC;SACjB;QACD,OAAO,IAAI,CAAC,OAAO,CACjB,WAAW,EACX,qCAAqC,EACrC,OAAO,CACR;;IAGH,cAAc,CAAC,OAAe,EAAE,QAAgB,EAAA;AAC9C,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,KAAK,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;SAC3B;QACD,OAAO,IAAI,CAAC,OAAO,CACjB,WAAW,EACX,mDAAmD,EACnD,EAAE,CACH;;0HArFQ,eAAe,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;8HAAf,eAAe,EAAA,CAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B;;;ACPK,MAAO,cAAe,SAAQ,WAAW,CAAA;AAE7C,IAAA,MAAM,CAAC,OAAgB,EAAA;AACrB,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,MAAM;SACf;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,UAAU,EAAE,OAAO,CAAC;;IAGvD,MAAM,CAAC,GAAW,EAAE,OAAgB,EAAA;AAClC,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,OAAO;YACf,KAAK,EAAE,CAAC,GAAG,CAAC;SACb;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,oBAAoB,EAAE,OAAO,CAAC;;AAGjE,IAAA,MAAM,CAAC,GAAW,EAAA;AAChB,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,QAAQ;YAChB,KAAK,EAAE,CAAC,GAAG,CAAC;SACb;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,oBAAoB,CAAC;;AAGxD,IAAA,OAAO,CAAC,GAAW,EAAA;AACjB,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,CAAC,GAAG,CAAC;SACb;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,oBAAoB,CAAC;;AAGxD,IAAA,OAAO,CAAC,IAAY,EAAA;AAClB,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,CAAC,IAAI,CAAC;SACd;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,qCAAqC,CAAC;;0HAtC9D,cAAc,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;8HAAd,cAAc,EAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B;;;ACUK,MAAO,WAAY,SAAQ,WAAW,CAAA;AAC1C;;;;AAIG;AACH,IAAA,GAAG,CAAC,GAAW,EAAA;AACb,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,MAAM,EAAE;AACN,gBAAA,OAAO,EAAE,MAAM;AAChB,aAAA;YACD,KAAK,EAAE,CAAC,GAAG,CAAC;SACb;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,cAAc,CAAC;;AAGlD;;;;AAIG;AACH,IAAA,MAAM,CAAC,IAAgB,EAAA;AACrB,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,MAAM,EAAE;AACN,gBAAA,OAAO,EAAE,MAAM;AAChB,aAAA;SACF;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,cAAc,EAAE,IAAI,CAAC;;AAGxD;;;;;AAKG;IACH,MAAM,CAAC,GAAW,EAAE,IAAgB,EAAA;AAClC,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,OAAO;AACf,YAAA,MAAM,EAAE;AACN,gBAAA,OAAO,EAAE,MAAM;AAChB,aAAA;YACD,KAAK,EAAE,CAAC,GAAG,CAAC;SACb;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,cAAc,EAAE,IAAI,CAAC;;AAGxD;;;AAGG;AACH,IAAA,MAAM,CAAC,GAAW,EAAA;AAChB,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,MAAM,EAAE;AACN,gBAAA,OAAO,EAAE,MAAM;AAChB,aAAA;YACD,KAAK,EAAE,CAAC,GAAG,CAAC;SACb;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,cAAc,CAAC;;AAGlD;;;;AAIG;AACH,IAAA,OAAO,CAAC,eAAuB,EAAA;AAC7B,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,MAAM,EAAE;AACN,gBAAA,OAAO,EAAE,MAAM;AAChB,aAAA;YACD,KAAK,EAAE,CAAC,eAAe,CAAC;SACzB;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,+BAA+B,CAAC;;AAGnE;;;;AAIG;AACH,IAAA,eAAe,CACb,mBAA2B,EAAA;AAE3B,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,MAAM,EAAE;AACN,gBAAA,OAAO,EAAE,MAAM;AAChB,aAAA;YACD,KAAK,EAAE,CAAC,mBAAmB,CAAC;SAC7B;QAED,OAAO,IAAI,CAAC,OAAO,CACjB,WAAW,EACX,iDAAiD,CAClD;;;AAKH;;;;AAIG;AACH,IAAA,WAAW,CAAC,IAAY,EAAA;AACtB,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,MAAM,EAAE;AACN,gBAAA,OAAO,EAAE,MAAM;AAChB,aAAA;YACD,KAAK,EAAE,CAAC,IAAI,CAAC;SACd;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,gCAAgC,CAAC;;AAGpE;;;;AAIG;AACH,IAAA,cAAc,CAAC,QAA4B,EAAA;AACzC,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,MAAM,EAAE;AACN,gBAAA,OAAO,EAAE,MAAM;AAChB,aAAA;SACF;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,uBAAuB,EAAE,QAAQ,CAAC;;AAGrE;;;;;AAKG;IACH,cAAc,CACZ,IAAY,EACZ,QAA4B,EAAA;AAE5B,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,OAAO;AACf,YAAA,MAAM,EAAE;AACN,gBAAA,OAAO,EAAE,MAAM;AAChB,aAAA;YACD,KAAK,EAAE,CAAC,IAAI,CAAC;SACd;QAED,OAAO,IAAI,CAAC,OAAO,CACjB,WAAW,EACX,gCAAgC,EAChC,QAAQ,CACT;;AAGH;;;AAGG;AACH,IAAA,cAAc,CAAC,IAAY,EAAA;AACzB,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,MAAM,EAAE;AACN,gBAAA,OAAO,EAAE,MAAM;AAChB,aAAA;YACD,KAAK,EAAE,CAAC,IAAI,CAAC;SACd;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,gCAAgC,CAAC;;AAGpE;;;;AAIG;AACH,IAAA,eAAe,CAAC,eAAuB,EAAA;AACrC,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,MAAM,EAAE;AACN,gBAAA,OAAO,EAAE,MAAM;AAChB,aAAA;YACD,KAAK,EAAE,CAAC,eAAe,CAAC;SACzB;QAED,OAAO,IAAI,CAAC,OAAO,CACjB,WAAW,EACX,iDAAiD,CAClD;;;AAKH;;;;AAIG;AACH,IAAA,uBAAuB,CACrB,KAAa,EAAA;AAEb,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,MAAM,EAAE;AACN,gBAAA,OAAO,EAAE,MAAM;AAChB,aAAA;YACD,KAAK,EAAE,CAAC,KAAK,CAAC;SACf;QAED,OAAO,IAAI,CAAC,OAAO,CACjB,WAAW,EACX,0DAA0D,CAC3D;;AAGH;;;;AAIG;AACH,IAAA,0BAA0B,CACxB,oBAAoD,EAAA;AAEpD,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,MAAM,EAAE;AACN,gBAAA,OAAO,EAAE,MAAM;AAChB,aAAA;SACF;QAED,OAAO,IAAI,CAAC,OAAO,CACjB,WAAW,EACX,oCAAoC,EACpC,oBAAoB,CACrB;;AAGH;;;;;AAKG;IACH,0BAA0B,CACxB,KAAa,EACb,oBAAoD,EAAA;AAEpD,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,OAAO;AACf,YAAA,MAAM,EAAE;AACN,gBAAA,OAAO,EAAE,MAAM;AAChB,aAAA;YACD,KAAK,EAAE,CAAC,KAAK,CAAC;SACf;QAED,OAAO,IAAI,CAAC,OAAO,CACjB,WAAW,EACX,0DAA0D,EAC1D,oBAAoB,CACrB;;AAGH;;;AAGG;AACH,IAAA,0BAA0B,CAAC,KAAa,EAAA;AACtC,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,MAAM,EAAE;AACN,gBAAA,OAAO,EAAE,MAAM;AAChB,aAAA;YACD,KAAK,EAAE,CAAC,KAAK,CAAC;SACf;QAED,OAAO,IAAI,CAAC,OAAO,CACjB,WAAW,EACX,0DAA0D,CAC3D;;;AAKH;;;;;AAKG;IACH,SAAS,CAAC,GAAW,EAAE,IAAY,EAAA;AACjC,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,MAAM,EAAE;AACN,gBAAA,OAAO,EAAE,MAAM;AAChB,aAAA;AACD,YAAA,KAAK,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC;SACnB;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,mCAAmC,CAAC;;AAGvE;;;;AAIG;AACH,IAAA,YAAY,CAAC,MAAwB,EAAA;AACnC,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,MAAM,EAAE;AACN,gBAAA,OAAO,EAAE,MAAM;AAChB,aAAA;SACF;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,qBAAqB,EAAE,MAAM,CAAC;;AAGjE;;;;;;AAMG;AACF,IAAA,YAAY,CAAC,GAAW,EAAE,IAAY,EAAE,MAAwB,EAAA;AAC/D,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,OAAO;AACf,YAAA,MAAM,EAAE;AACN,gBAAA,OAAO,EAAE,MAAM;AAChB,aAAA;AACD,YAAA,KAAK,EAAE,CAAC,GAAG,EAAE,IAAI;SAClB;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,mCAAmC,EAAE,MAAM,CAAC;;AAG/E;;;;AAIG;IACF,YAAY,CAAC,GAAW,EAAE,IAAY,EAAA;AACrC,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,MAAM,EAAE;AACN,gBAAA,OAAO,EAAE,MAAM;AAChB,aAAA;AACD,YAAA,KAAK,EAAE,CAAC,GAAG,EAAE,IAAI;SAClB;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,mCAAmC,CAAC;;AAGvE;;;;AAIG;AACF,IAAA,aAAa,CAAC,iBAAyB,EAAA;AACtC,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,MAAM,EAAE;AACN,gBAAA,OAAO,EAAE,MAAM;AAChB,aAAA;YACD,KAAK,EAAE,CAAC,iBAAiB,CAAC;SAC3B;QAED,OAAO,IAAI,CAAC,OAAO,CACjB,WAAW,EACX,6CAA6C,CAC9C;;;AAKH;;;;;;AAMG;AACF,IAAA,eAAe,CAAC,GAAW,EAAE,IAAY,EAAE,IAAY,EAAA;AACtD,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,MAAM,EAAE;AACN,gBAAA,OAAO,EAAE,MAAM;AAChB,aAAA;AACD,YAAA,KAAK,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC;SACzB;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,+DAA+D,CAAC;;AAGnG;;;;AAIG;AACH,IAAA,kBAAkB,CAAC,MAAW,EAAA;AAC5B,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,MAAM,EAAE;AACN,gBAAA,OAAO,EAAE,MAAM;AAChB,aAAA;SACF;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,4BAA4B,EAAE,MAAM,CAAC;;AAGxE;;;;;;;;AAQG;AACF,IAAA,kBAAkB,CAAC,GAAW,EAAE,IAAY,EAAE,IAAY,EAAE,MAAW,EAAA;AACtE,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,OAAO;AACf,YAAA,MAAM,EAAE;AACN,gBAAA,OAAO,EAAE,MAAM;AAChB,aAAA;AACD,YAAA,KAAK,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI;SACxB;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,+DAA+D,EAAE,MAAM,CAAC;;AAG3G;;;;;AAKG;AACF,IAAA,kBAAkB,CAAC,GAAW,EAAE,IAAY,EAAE,IAAY,EAAA;AACzD,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,MAAM,EAAE;AACN,gBAAA,OAAO,EAAE,MAAM;AAChB,aAAA;AACD,YAAA,KAAK,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI;SACxB;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,+DAA+D,CAAC;;AAGrG;;;;AAIK;AACH,IAAA,mBAAmB,CAAC,uBAA+B,EAAA;AACjD,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,MAAM,EAAE;AACN,gBAAA,OAAO,EAAE,MAAM;AAChB,aAAA;YACD,KAAK,EAAE,CAAC,uBAAuB,CAAC;SACjC;QAED,OAAO,IAAI,CAAC,OAAO,CACjB,WAAW,EACX,2DAA2D,CAC5D;;0HA9dQ,WAAW,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;8HAAX,WAAW,EAAA,CAAA;;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBADvB;;;ACAD;;;;AAIG;AACG,SAAU,IAAI,CAAC,WAAwB,EAAA;AAC3C,IAAA,OAAO,MAAK;AACV,QAAA,eAAe,CAAC,UAAU,GAAG,WAAW,CAAC,UAAU;AACrD,KAAC;AACH;AACA;MA2Ba,iBAAiB,CAAA;0HAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAjB,uBAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,YAxB1B,gBAAgB,CAAA,EAAA,CAAA;AAwBP,uBAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,EAtBjB,SAAA,EAAA;YACT,WAAW;YACX,WAAW;YACX,WAAW;YACX,cAAc;YACd,eAAe;YACf,WAAW;YACX,YAAY;YACZ,WAAW;YACX,cAAc;YACd,WAAW;YACX,eAAe;YACf,cAAc;YACd,WAAW;AACX,YAAA;AACE,gBAAA,SAAS,EAAE,eAAe;AAC1B,gBAAA,YAAY,EAAE,IAAI;gBAClB,MAAM,EAAE,CAAC,WAAW,CAAC;AACrB,gBAAA,OAAO,EAAE;AACV;AACF,SAAA,EAAA,OAAA,EAAA,CAtBC,gBAAgB,CAAA,EAAA,CAAA;;2FAwBP,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBA1B7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP;AACD,qBAAA;AACD,oBAAA,SAAS,EAAE;wBACT,WAAW;wBACX,WAAW;wBACX,WAAW;wBACX,cAAc;wBACd,eAAe;wBACf,WAAW;wBACX,YAAY;wBACZ,WAAW;wBACX,cAAc;wBACd,WAAW;wBACX,eAAe;wBACf,cAAc;wBACd,WAAW;AACX,wBAAA;AACE,4BAAA,SAAS,EAAE,eAAe;AAC1B,4BAAA,YAAY,EAAE,IAAI;4BAClB,MAAM,EAAE,CAAC,WAAW,CAAC;AACrB,4BAAA,OAAO,EAAE;AACV;AACF;AACF,iBAAA;;;ACtDD;;AAEG;;ACFH;;AAEG;;;;"}