diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/.gitignore b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..d78e950d520085b03d11c92bcbb5403132da68a9 --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/.gitignore @@ -0,0 +1,10 @@ +/oh_modules +/local.properties +/.idea +**/build +**/oh-package-lock.json5 +/.hvigor +.cxx +/.clangd +/.clang-format +/.clang-tidy \ No newline at end of file diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/AppScope/app.json5 b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/AppScope/app.json5 new file mode 100644 index 0000000000000000000000000000000000000000..23b4224cb89de0ac0030f7b1578ecb335b89b5ae --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/AppScope/app.json5 @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "app": { + "bundleName": "com.samples.devicemanagementcollection", + "vendor": "samples", + "versionCode": 1000000, + "versionName": "1.0.0", + "icon": "$media:app_icon", + "label": "$string:app_name", + "distributedNotificationEnabled": true + } +} diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/AppScope/resources/base/element/string.json b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/AppScope/resources/base/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..5e28dc3ae0a364e5bdb0159a282daa742314f135 --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/AppScope/resources/base/element/string.json @@ -0,0 +1,8 @@ +{ + "string": [ + { + "name": "app_name", + "value": "DeviceManagementCollection" + } + ] +} diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/AppScope/resources/base/media/app_icon.png b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/AppScope/resources/base/media/app_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/build-profile.json5 b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/build-profile.json5 new file mode 100644 index 0000000000000000000000000000000000000000..74814a5b1f8e982fb8af7a67fa86c466fa6f1353 --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/build-profile.json5 @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "app": { + "signingConfigs": [], + "products": [ + { + "name": "default", + "signingConfig": "default", + "compileSdkVersion": "4.0.0(10)", + "compatibleSdkVersion": "4.0.0(10)", + "runtimeOS": "HarmonyOS" + } + ] + }, + "modules": [ + { + "name": "entry", + "srcPath": "./entry", + "targets": [ + { + "name": "default", + "applyToProducts": [ + "default" + ] + } + ] + }, + { + "name": "menuitems", + "srcPath": "./feature/menuitems" + }, + { + "name": "capabilities", + "srcPath": "./feature/capabilities" + }, + { + "name": "common", + "srcPath": "./common" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/common/.gitignore b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/common/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..a019ce37e1060f6d3997f100d64085cdf55c78f5 --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/common/.gitignore @@ -0,0 +1,3 @@ +/oh_modules +/.preview +/build \ No newline at end of file diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/common/Index.ets b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/common/Index.ets new file mode 100644 index 0000000000000000000000000000000000000000..5443b7acfbc7a8fdfb7130a7ef2d7f727973a255 --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/common/Index.ets @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export { logger } from './src/main/ets/util/Logger'; + +export { CustomDataSource } from './src/main/ets/components/CustomDataSource'; + +export { getString, getStringArray } from './src/main/ets/util/ResourceUtil'; \ No newline at end of file diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/common/build-profile.json5 b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/common/build-profile.json5 new file mode 100644 index 0000000000000000000000000000000000000000..431999870d30f72c7c6e728d63eb40d9b271f976 --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/common/build-profile.json5 @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "apiType": "stageMode", + "buildOption": { + } +} diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/common/hvigorfile.ts b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/common/hvigorfile.ts new file mode 100644 index 0000000000000000000000000000000000000000..9c3992ac05f1a4b3c5c93a44388308fd1dc45aa8 --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/common/hvigorfile.ts @@ -0,0 +1,17 @@ +/** + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Script for compiling build behavior. It is built in the build plug-in and cannot be modified currently. +module.exports = require('@ohos/hvigor-ohos-plugin').harTasks + diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/common/oh-package.json5 b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/common/oh-package.json5 new file mode 100644 index 0000000000000000000000000000000000000000..73e8108fba92719a48731604651c19e4add513e3 --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/common/oh-package.json5 @@ -0,0 +1,11 @@ +{ + "license": "ISC", + "types": "", + "devDependencies": {}, + "name": "@ohos/common", + "description": "a npm package which contains arkUI2.0 page", + "main": "Index.ts", + "repository": {}, + "version": "1.0.0", + "dependencies": {} +} diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/common/src/main/ets/components/CustomDataSource.ets b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/common/src/main/ets/components/CustomDataSource.ets new file mode 100644 index 0000000000000000000000000000000000000000..1b16c62b1c12f39a903ab17bcf92b3658f3c4d27 --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/common/src/main/ets/components/CustomDataSource.ets @@ -0,0 +1,81 @@ +/** + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +class BasicDataSource implements IDataSource { + private listeners: DataChangeListener[] = []; + + public totalCount(): number { + return 0; + } + + public getData(index: number): string { + return ''; + } + + registerDataChangeListener(listener: DataChangeListener): void { + if (this.listeners.indexOf(listener) < 0) { + this.listeners.push(listener); + } + } + + unregisterDataChangeListener(listener: DataChangeListener): void { + const pos = this.listeners.indexOf(listener); + if (pos >= 0) { + this.listeners.splice(pos, 1); + } + } + + notifyDataReload(): void { + this.listeners.forEach(listener => { + listener.onDataReloaded(); + }) + } + + notifyDataAdd(index: number): void { + this.listeners.forEach(listener => { + listener.onDataAdded(index); + }) + } + + notifyDataChange(index: number): void { + this.listeners.forEach(listener => { + listener.onDataChanged(index); + }) + } +} + +export class CustomDataSource extends BasicDataSource { + public dataArray: string[] = []; + + constructor(ele: Array) { + super() + for (let index = 0; index < ele.length; index++) { + this.dataArray.push(ele[index]); + } + } + + public totalCount(): number { + return this.dataArray.length; + } + + public getData(index: number): string { + return this.dataArray[index]; + } + + public addData(index: number, data: string): void { + this.dataArray.splice(index, 0); + this.notifyDataAdd(index); + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/common/src/main/ets/util/Logger.ets b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/common/src/main/ets/util/Logger.ets new file mode 100644 index 0000000000000000000000000000000000000000..db0f58489e61d9af5e5f3e4184fc00b37052c42a --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/common/src/main/ets/util/Logger.ets @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import hilog from '@ohos.hilog'; + +class Logger { + private domain: number; + private prefix: string; + private format: string = '%{public}s, %{public}s'; + + constructor(prefix: string) { + this.prefix = prefix; + this.domain = 0xFF00; + } + + debug(...args: string[]): void { + hilog.debug(this.domain, this.prefix, this.format, args); + } + + info(...args: string[]): void { + hilog.info(this.domain, this.prefix, this.format, args); + } + + warn(...args: string[]): void { + hilog.warn(this.domain, this.prefix, this.format, args); + } + + error(...args: string[]): void { + hilog.error(this.domain, this.prefix, this.format, args); + } +} + +export const logger = new Logger('Sample_DeviceManagement') \ No newline at end of file diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/common/src/main/ets/util/ResourceUtil.ets b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/common/src/main/ets/util/ResourceUtil.ets new file mode 100644 index 0000000000000000000000000000000000000000..ec54102cf9de20bbc14b8957ff0a8993ab5445c9 --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/common/src/main/ets/util/ResourceUtil.ets @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import common from '@ohos.app.ability.common'; + +export async function getStringArray(resource: Resource): Promise> { + let context = getContext() as common.UIAbilityContext; + let menuList: Array = await context.resourceManager.getStringArrayValue(resource); + return menuList; +} + +export function getString(resource: Resource): string { + let context = getContext() as common.UIAbilityContext; + return context.resourceManager.getStringSync(resource); +} diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/common/src/main/module.json5 b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/common/src/main/module.json5 new file mode 100644 index 0000000000000000000000000000000000000000..922bccb772db0e621d51b402ed41626ab05d47d4 --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/common/src/main/module.json5 @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "module": { + "name": "common", + "type": "har", + "deviceTypes": [ + "default", + "tablet" + ] + } +} diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/common/src/main/resources/base/element/color.json b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/common/src/main/resources/base/element/color.json new file mode 100644 index 0000000000000000000000000000000000000000..2de6679edfc567d5d41f6b7976b85eeec93a02ec --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/common/src/main/resources/base/element/color.json @@ -0,0 +1,32 @@ +{ + "color": [ + { + "name": "white", + "value": "#FFF" + }, + { + "name": "black", + "value": "#000" + }, + { + "name": "list_background", + "value": "#F1F3F5" + }, + { + "name": "list_title", + "value": "#1A1A1A" + }, + { + "name": "list_content", + "value": "#666" + }, + { + "name": "list_sub_content", + "value": "#999" + }, + { + "name": "divider", + "value": "#f1f1f1" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/common/src/main/resources/base/element/string.json b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/common/src/main/resources/base/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..1e76de0c66777cfe83568615c5c2e68c61d23fed --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/common/src/main/resources/base/element/string.json @@ -0,0 +1,8 @@ +{ + "string": [ + { + "name": "page_show", + "value": "page from npm package" + } + ] +} diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/.gitignore b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..e751b1182973906a77849f215a940ea5359328d4 --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/.gitignore @@ -0,0 +1,4 @@ +/oh_modules +/.preview +/build +/.cxx \ No newline at end of file diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/build-profile.json5 b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/build-profile.json5 new file mode 100644 index 0000000000000000000000000000000000000000..88af87e8b017a66588612c6e988372fbf1039313 --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/build-profile.json5 @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "apiType": 'stageMode', + "buildOption": { +// "compileMode": "esmodule" + }, + "targets": [ + { + "name": "default", + }, + { + "name": "ohosTest", + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/hvigorfile.ts b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/hvigorfile.ts new file mode 100644 index 0000000000000000000000000000000000000000..27a66d9a3cbadf06e3a3857221a0a1b7c1087e89 --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/hvigorfile.ts @@ -0,0 +1,16 @@ +/** + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Script for compiling build behavior. It is built in the build plug-in and cannot be modified currently. +export { hapTasks } from '@ohos/hvigor-ohos-plugin'; diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/oh-package.json5 b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/oh-package.json5 new file mode 100644 index 0000000000000000000000000000000000000000..fab6d8f60b69e40b967579115c79e7efa4ef0e2f --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/oh-package.json5 @@ -0,0 +1,13 @@ +{ + "license": "ISC", + "devDependencies": {}, + "name": "entry", + "description": "example description", + "repository": {}, + "version": "1.0.0", + "dependencies": { + "@ohos/capabilities": "file:../feature/capabilities", + "@ohos/menuitems": "../feature/menuitems", + "@ohos/common": "../common" + } +} diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/main/ets/entryability/EntryAbility.ets b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/main/ets/entryability/EntryAbility.ets new file mode 100644 index 0000000000000000000000000000000000000000..dc36c5690294c21214262b5514f490f7d5df9815 --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/main/ets/entryability/EntryAbility.ets @@ -0,0 +1,97 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import display from '@ohos.display'; +import UIAbility from '@ohos.app.ability.UIAbility'; +import window from '@ohos.window'; +import { logger } from '@ohos/common'; +import Want from '@ohos.app.ability.Want'; +import AbilityConstant from '@ohos.app.ability.AbilityConstant'; + +const BREAKPOINT_MD: number = 600; +const BREAKPOINT_BIG: number = 840; +const PARAMS_PX_TO_VP: number = 160; +const TAG: string = 'EntryAbility'; + +export default class EntryAbility extends UIAbility { + onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void { + logger.info(TAG, 'Ability onCreate'); + AppStorage.SetOrCreate('selectedLabel', ''); + } + + updateBreakpoint(windowWidth: number): void { + let windowWidthVp: number = windowWidth / (display.getDefaultDisplaySync().densityDPI / PARAMS_PX_TO_VP); + let curBp: string; + if (windowWidthVp < BREAKPOINT_MD) { + curBp = 'sm'; + } else if (windowWidthVp < BREAKPOINT_BIG) { + curBp = 'md'; + } else { + curBp = 'lg'; + } + logger.info(TAG, 'window width: ' + windowWidth + ', window width vp: ' + windowWidthVp + ', breakpoint: ' + curBp); + AppStorage.SetOrCreate('currentBreakpoint', curBp); + AppStorage.SetOrCreate('windowWidth', windowWidthVp); + AppStorage.SetOrCreate('isSplitMode', curBp === 'sm' ? false : true); + } + + onDestroy(): void { + logger.info(TAG, 'Ability onDestroy'); + } + + onWindowStageCreate(windowStage: window.WindowStage): void { + // Main window is created, set main page for this ability + logger.info(TAG, 'Ability onWindowStageCreate'); + + windowStage.getMainWindow().then((windowObj: window.Window) => { + let windowWidth: number = windowObj.getWindowProperties().windowRect.width; + this.updateBreakpoint(windowWidth); + windowObj.on('windowSizeChange', (newSize: window.Size) => { + let windowWidth: number = newSize.width; + this.updateBreakpoint(windowWidth); + + if (windowObj.getWindowProperties().isFullScreen) { + logger.info(TAG, 'isFullScreen'); + } + if (windowObj.getWindowProperties().isLayoutFullScreen) { + logger.info(TAG, 'isLayoutFullScreen'); + } + }); + }); + + windowStage.loadContent('pages/Index', (err, data) => { + if (err.code) { + logger.error(TAG, `Failed to load the content. Cause: ${JSON.stringify(err)}`); + return; + } + logger.info(TAG, `Succeeded in loading the content. Data: ${JSON.stringify(data)}`); + }); + } + + onWindowStageDestroy(): void { + // Main window is destroyed, release UI related resources + logger.info(TAG, 'Ability onWindowStageDestroy'); + } + + onForeground(): void { + // Ability has brought to foreground + logger.info(TAG, 'Ability onForeground'); + } + + onBackground(): void { + // Ability has back to background + logger.info(TAG, 'Ability onBackground'); + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/main/ets/pages/Index.ets b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/main/ets/pages/Index.ets new file mode 100644 index 0000000000000000000000000000000000000000..b5a6ab48f45b53f72b161f86b77e051b2ba8def3 --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/main/ets/pages/Index.ets @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { Capabilities } from './components/Capabilities'; +import { MenuList } from '@ohos/menuitems'; + +@Entry +@Component +struct Index { + @StorageProp('windowWidth') windowWidth: number = 300; + @StorageProp('isSplitMode') isSplitMode: boolean = false; + @State title: string = ''; + + aboutToAppear() { + this.title = getContext().resourceManager.getStringSync($r('app.string.device_management').id); + } + + build() { + Navigation() { + Column() { + MenuList({ menuList: $r('app.strarray.device_management_list') }) { + Capabilities() + } + } + .padding(16) + } + .title(this.CustomTitle()) + .mode(this.isSplitMode ? NavigationMode.Split : NavigationMode.Stack) + .navBarWidth(0.4 * this.windowWidth) + .titleMode(NavigationTitleMode.Full) + .hideToolBar(true) + .width('100%') + .height('100%') + .backgroundColor($r("app.color.list_background")) + } + + @Builder + CustomTitle() { + Row() { + Text(this.title) + .fontColor($r("app.color.list_title")) + .fontSize(26) + .fontWeight(FontWeight.Medium) + .padding({left: 16}) + } + .width('100%') + .height('100%') + .alignItems(VerticalAlign.Bottom) + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/main/ets/pages/components/Capabilities.ets b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/main/ets/pages/components/Capabilities.ets new file mode 100644 index 0000000000000000000000000000000000000000..1ada80fff5c53b471a46fbaad3538be3386e5906 --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/main/ets/pages/components/Capabilities.ets @@ -0,0 +1,58 @@ +/** + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { getString } from '@ohos/common'; +import { + BatteryInfo, + RunningLockManager, + PowerManager, + SettingsManager, + Thermal, + UsbManager, + StationaryManager +} from '@ohos/capabilities'; + +@Component +export struct Capabilities { + @StorageLink('selectedLabel') selectedLabel: string = ''; + @State label: string = ''; + + aboutToAppear() { + // StorageLink会触发多次刷新,用State接收 + this.label = this.selectedLabel; + } + + build() { + Column() { + // 此处根据选中的菜单,显示对应的页面内容 + if (this.label === getString($r('app.string.battery_info'))) { + BatteryInfo() + } else if (this.label === getString($r('app.string.running_lock'))) { + RunningLockManager() + } else if (this.label === getString($r('app.string.power_manager'))) { + PowerManager() + } else if (this.label === getString($r('app.string.settings'))) { + SettingsManager() + } else if (this.label === getString($r('app.string.stationary'))) { + StationaryManager() + } else if (this.label === getString($r('app.string.thermal'))) { + Thermal() + } else if (this.label === getString($r('app.string.usb_manager'))) { + UsbManager() + } + } + .padding({ left: 12, right: 12 }) + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/main/module.json5 b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/main/module.json5 new file mode 100644 index 0000000000000000000000000000000000000000..577a20d19fd46b781e661a766621e7a56ee489eb --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/main/module.json5 @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "module": { + "name": "entry", + "type": "entry", + "description": "$string:module_desc", + "mainElement": "EntryAbility", + "deviceTypes": [ + "default", + "tablet" + ], + "deliveryWithInstall": true, + "installationFree": false, + "pages": "$profile:main_pages", + "abilities": [ + { + "name": "EntryAbility", + "srcEntry": "./ets/entryability/EntryAbility.ets", + "description": "$string:EntryAbility_desc", + "icon": "$media:icon", + "label": "$string:device_management", + "startWindowIcon": "$media:icon", + "startWindowBackground": "$color:start_window_background", + "exported": true, + "skills": [ + { + "entities": [ + "entity.system.home" + ], + "actions": [ + "action.system.home" + ] + } + ] + } + ], + "requestPermissions": [ + { + "name": "ohos.permission.RUNNING_LOCK" + } + ] + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/main/resources/base/element/color.json b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/main/resources/base/element/color.json new file mode 100644 index 0000000000000000000000000000000000000000..3c712962da3c2751c2b9ddb53559afcbd2b54a02 --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/main/resources/base/element/color.json @@ -0,0 +1,8 @@ +{ + "color": [ + { + "name": "start_window_background", + "value": "#FFFFFF" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/main/resources/base/element/strarray.json b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/main/resources/base/element/strarray.json new file mode 100644 index 0000000000000000000000000000000000000000..f1ac8a5d68e6dd20323d180680ca6853bcaaeaa3 --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/main/resources/base/element/strarray.json @@ -0,0 +1,66 @@ +{ + "strarray": [ + { + "name": "device_management_list", + "value": [ + { + "value": "Battery Information" + }, + { + "value": "Charging Type" + }, + { + "value": "Device Information" + }, + { + "value": "Runninglock" + }, + { + "value": "System Power Management" + }, + { + "value": "Data Item Settings" + }, + { + "value": "Device Status Awareness Framework" + }, + { + "value": "Thermal Management" + }, + { + "value": "USB Management" + }, + { + "value": "Input Consumer" + }, + { + "value": "Input Device" + }, + { + "value": "Input Event" + }, + { + "value": "Key Event Injection" + }, + { + "value": "Input Monitor" + }, + { + "value": "Key Code" + }, + { + "value": "Key Event" + }, + { + "value": "Mouse Event" + }, + { + "value": "Mouse Pointer" + }, + { + "value": "Touch Event" + } + ] + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/main/resources/base/element/string.json b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/main/resources/base/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..fd8c7a324cd260ee142c7ab79e7a00e00501e9bc --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/main/resources/base/element/string.json @@ -0,0 +1,44 @@ +{ + "string": [ + { + "name": "module_desc", + "value": "module description" + }, + { + "name": "EntryAbility_desc", + "value": "description" + }, + { + "name": "device_management", + "value": "Device Management" + }, + { + "name": "battery_info", + "value": "Battery Information" + }, + { + "name": "running_lock", + "value": "Runninglock" + }, + { + "name": "thermal", + "value": "Thermal Management" + }, + { + "name": "usb_manager", + "value": "USB Management" + }, + { + "name": "power_manager", + "value": "System Power Management" + }, + { + "name": "settings", + "value": "Data Item Settings" + }, + { + "name": "stationary", + "value": "Device Status Awareness Framework" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/main/resources/base/media/icon.png b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/main/resources/base/media/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ce307a8827bd75456441ceb57d530e4c8d45d36c Binary files /dev/null and b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/main/resources/base/media/icon.png differ diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/main/resources/base/profile/main_pages.json b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/main/resources/base/profile/main_pages.json new file mode 100644 index 0000000000000000000000000000000000000000..55c3f007f87b7ce5206d325f968cc56f2f79441f --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/main/resources/base/profile/main_pages.json @@ -0,0 +1,5 @@ +{ + "src": [ + "pages/Index" + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/main/resources/en_US/element/strarray.json b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/main/resources/en_US/element/strarray.json new file mode 100644 index 0000000000000000000000000000000000000000..f1ac8a5d68e6dd20323d180680ca6853bcaaeaa3 --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/main/resources/en_US/element/strarray.json @@ -0,0 +1,66 @@ +{ + "strarray": [ + { + "name": "device_management_list", + "value": [ + { + "value": "Battery Information" + }, + { + "value": "Charging Type" + }, + { + "value": "Device Information" + }, + { + "value": "Runninglock" + }, + { + "value": "System Power Management" + }, + { + "value": "Data Item Settings" + }, + { + "value": "Device Status Awareness Framework" + }, + { + "value": "Thermal Management" + }, + { + "value": "USB Management" + }, + { + "value": "Input Consumer" + }, + { + "value": "Input Device" + }, + { + "value": "Input Event" + }, + { + "value": "Key Event Injection" + }, + { + "value": "Input Monitor" + }, + { + "value": "Key Code" + }, + { + "value": "Key Event" + }, + { + "value": "Mouse Event" + }, + { + "value": "Mouse Pointer" + }, + { + "value": "Touch Event" + } + ] + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/main/resources/en_US/element/string.json b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/main/resources/en_US/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..7f8cc37ff18d364039c85af9da7ce4db577c1b96 --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/main/resources/en_US/element/string.json @@ -0,0 +1,44 @@ +{ + "string": [ + { + "name": "module_desc", + "value": "module description" + }, + { + "name": "EntryAbility_desc", + "value": "description" + }, + { + "name": "device_management", + "value": "Device Management" + }, + { + "name": "battery_info", + "value": "Battery Information" + }, + { + "name": "thermal", + "value": "Thermal Management" + }, + { + "name": "usb_manager", + "value": "USB Management" + }, + { + "name": "power_manager", + "value": "System Power Management" + }, + { + "name": "running_lock", + "value": "Runninglock" + }, + { + "name": "settings", + "value": "Data Item Settings" + }, + { + "name": "stationary", + "value": "Device Status Awareness Framework" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/main/resources/zh_CN/element/strarray.json b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/main/resources/zh_CN/element/strarray.json new file mode 100644 index 0000000000000000000000000000000000000000..2de83886e793b503dfde350e8e8f2a024383d4d3 --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/main/resources/zh_CN/element/strarray.json @@ -0,0 +1,66 @@ +{ + "strarray": [ + { + "name": "device_management_list", + "value": [ + { + "value": "电量信息" + }, + { + "value": "充电类型" + }, + { + "value": "设备信息" + }, + { + "value": "RunningLock锁" + }, + { + "value": "系统电源管理" + }, + { + "value": "设置数据项名称" + }, + { + "value": "设备状态感知框架" + }, + { + "value": "热管理" + }, + { + "value": "USB管理" + }, + { + "value": "组合按键" + }, + { + "value": "输入设备" + }, + { + "value": "输入事件" + }, + { + "value": "按键注入" + }, + { + "value": "输入监听" + }, + { + "value": "键值" + }, + { + "value": "按键输入事件" + }, + { + "value": "鼠标输入事件" + }, + { + "value": "鼠标指针" + }, + { + "value": "触摸输入事件" + } + ] + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/main/resources/zh_CN/element/string.json b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/main/resources/zh_CN/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..4a9920dc5c950b501ea2973d5a3b21283b4c1a2d --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/main/resources/zh_CN/element/string.json @@ -0,0 +1,44 @@ +{ + "string": [ + { + "name": "module_desc", + "value": "模块描述" + }, + { + "name": "EntryAbility_desc", + "value": "description" + }, + { + "name": "device_management", + "value": "设备管理" + }, + { + "name": "battery_info", + "value": "电量信息" + }, + { + "name": "thermal", + "value": "热管理" + }, + { + "name": "usb_manager", + "value": "USB管理" + }, + { + "name": "power_manager", + "value": "系统电源管理" + }, + { + "name": "running_lock", + "value": "RunningLock锁" + }, + { + "name": "settings", + "value": "设置数据项名称" + }, + { + "name": "stationary", + "value": "设备状态感知框架" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/ohosTest/ets/TestRunner/OpenHarmonyTestRunner.ts b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/ohosTest/ets/TestRunner/OpenHarmonyTestRunner.ts new file mode 100644 index 0000000000000000000000000000000000000000..d25d79095872f62e17581b09ec737092852f9db9 --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/ohosTest/ets/TestRunner/OpenHarmonyTestRunner.ts @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import AbilityDelegatorRegistry from '@ohos.app.ability.abilityDelegatorRegistry'; +import type TestRunner from '@ohos.application.testRunner'; +import { logger } from '../util/Logger'; + +let abilityDelegator = undefined; +let abilityDelegatorArguments = undefined; +const TAG: string = 'OpenHarmonyTestRunner'; + +async function onAbilityCreateCallback() { + logger.info(TAG, 'onAbilityCreateCallback'); +} + +async function addAbilityMonitorCallback(err: any) { + logger.info(TAG, `addAbilityMonitorCallback : ${JSON.stringify(err) ?? ''} `); +} + +export default class OpenHarmonyTestRunner implements TestRunner { + constructor() { + } + + onPrepare() { + logger.info(TAG, 'OpenHarmonyTestRunner OnPrepare '); + } + + async onRun() { + logger.info(TAG, 'OpenHarmonyTestRunner onRun run'); + abilityDelegatorArguments = AbilityDelegatorRegistry.getArguments(); + abilityDelegator = AbilityDelegatorRegistry.getAbilityDelegator(); + let testAbilityName = abilityDelegatorArguments.bundleName + '.TestAbility'; + let lMonitor = { + abilityName: testAbilityName, + onAbilityCreate: onAbilityCreateCallback, + }; + abilityDelegator.addAbilityMonitor(lMonitor, addAbilityMonitorCallback); + let cmd = 'aa start -d 0 -a TestAbility' + ' -b ' + abilityDelegatorArguments.bundleName; + let debug = abilityDelegatorArguments.parameters['-D']; + if (debug == 'true') { + cmd += ' -D'; + } + logger.info(TAG, `cmd : ${cmd}`); + abilityDelegator.executeShellCommand(cmd, + (err: Error, d: { + stdResult: string, + exitCode: number + }) => { + logger.info(TAG, `executeShellCommand : err : ${JSON.stringify(err) ?? ''}`); + logger.info(TAG, `executeShellCommand : data : ${d.stdResult ?? ''}`); + logger.info(TAG, `executeShellCommand : data : ${d.exitCode ?? ''}`); + }); + logger.info(TAG, 'OpenHarmonyTestRunner onRun end'); + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/ohosTest/ets/test/Ability.test.ets b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/ohosTest/ets/test/Ability.test.ets new file mode 100644 index 0000000000000000000000000000000000000000..6c28f9e236adee4f28493954e0e8aaeb1a20c28e --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/ohosTest/ets/test/Ability.test.ets @@ -0,0 +1,344 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import AbilityDelegatorRegistry from '@ohos.app.ability.abilityDelegatorRegistry'; +import { describe, beforeAll, it } from '@ohos/hypium'; +import { Driver, ON, MatchPattern } from '@ohos.UiTest'; +import { logger } from '../util/Logger'; +import { getString, getStringArray } from '../util/ResourceUtil'; +import Want from '@ohos.app.ability.Want'; + +const TAG: string = 'Sample_DeviceManagement'; +const BUNDLE = 'DeviceManagement_'; +const delegator = AbilityDelegatorRegistry.getAbilityDelegator(); + +export default function abilityTest() { + /** + * 启动测试app + */ + beforeAll(async () => { + logger.info(TAG, `${BUNDLE}StartAbility_001, begin`); + let want : Want = { + bundleName: "com.samples.devicemanagementcollection", + abilityName: "EntryAbility" + }; + let driver: Driver = Driver.create(); + delegator.startAbility(want, (err) => { + logger.info(TAG, `${BUNDLE}StartAbility_001, success`); + }) + await driver.delayMs(1000); + logger.info(TAG, `${BUNDLE}StartAbility_001, end`); + }) + describe('ActsAbilityTest', () => { + + /** + * 电量信息 + */ + it(BUNDLE + 'BatteryInfo_001', 0, async (done: Function) => { + let driver: Driver = Driver.create(); + await driver.delayMs(200); + logger.info(TAG, `${BUNDLE}BatteryInfo_001, begin`); + await driver.assertComponentExist(ON.type('List')); + let list = await driver.findComponent(ON.type('List')); + logger.info(TAG, `${BUNDLE}BatteryInfo_001, find ${getString($r('app.string.battery_info'))}`); + let button = await list.scrollSearch(ON.text(getString($r('app.string.battery_info')))); + logger.info(TAG, `${BUNDLE}BatteryInfo_001, click ${getString($r('app.string.battery_info'))}`); + await button.click(); + await driver.delayMs(200); + + logger.info(TAG, `${BUNDLE}BatteryInfo_001, success`); + await driver.assertComponentExist(ON.text('Battery SOC')); + logger.info(TAG, `${BUNDLE}BatteryInfo_001, end`); + + await driver.pressBack(); + done(); + }) + + /** + * RunningLock + */ + it(BUNDLE + 'RunningLock_001', 0, async (done: Function) => { + let driver: Driver = Driver.create(); + await driver.delayMs(200); + logger.info(TAG, `${BUNDLE}RunningLock_001, begin`); + await driver.assertComponentExist(ON.type('List')); + let list = await driver.findComponent(ON.type('List')); + logger.info(TAG, `${BUNDLE}RunningLock_001, find ${getString($r('app.string.running_lock'))}`); + let button = await list.scrollSearch(ON.text(getString($r('app.string.running_lock')))); + logger.info(TAG, `${BUNDLE}RunningLock_001, click ${getString($r('app.string.running_lock'))}`); + await button.click(); + await driver.delayMs(200); + logger.info(TAG, `${BUNDLE}RunningLock_001, end`); + + let opts = await getStringArray($r('app.strarray.running_lock_operations')) + logger.info(TAG, `${BUNDLE}RunningLock_002, begin`); + logger.info(TAG, `${BUNDLE}RunningLock_002, find ${opts[0]}`); + await driver.assertComponentExist(ON.text(opts[0])); + let btn1 = await driver.findComponent(ON.text(opts[0])); + logger.info(TAG, `${BUNDLE}RunningLock_002, click ${opts[0]}`); + await btn1.click(); + await driver.delayMs(200); + logger.info(TAG, `${BUNDLE}RunningLock_002, end`); + + logger.info(TAG, `${BUNDLE}RunningLock_003, begin`); + logger.info(TAG, `${BUNDLE}RunningLock_003, find ${opts[1]}`); + await driver.assertComponentExist(ON.text(opts[1])); + let btn2 = await driver.findComponent(ON.text(opts[1])); + logger.info(TAG, `${BUNDLE}RunningLock_003, click ${opts[1]}`); + await btn2.click(); + await driver.delayMs(200); + logger.info(TAG, `${BUNDLE}RunningLock_003, end`); + + logger.info(TAG, `${BUNDLE}RunningLock_004, begin`); + logger.info(TAG, `${BUNDLE}RunningLock_004, find ${opts[2]}`); + await driver.assertComponentExist(ON.text(opts[2])); + let btn3 = await driver.findComponent(ON.text(opts[2])); + logger.info(TAG, `${BUNDLE}RunningLock_004, click ${opts[2]}`); + await btn3.click(); + await driver.delayMs(3000); + logger.info(TAG, `${BUNDLE}RunningLock_004, end`); + + await driver.pressBack(); + done(); + }) + + /** + * 系统电源管理 + */ + it(BUNDLE + 'Power_001', 0, async (done: Function) => { + let driver: Driver = Driver.create(); + logger.info(TAG, `${BUNDLE}Power_001, begin`); + await driver.assertComponentExist(ON.type('List')); + let list = await driver.findComponent(ON.type('List')); + logger.info(TAG, `${BUNDLE}Power_001, find ${getString($r('app.string.power_manager'))}`); + let button = await list.scrollSearch(ON.text(getString($r('app.string.power_manager')))); + logger.info(TAG, `${BUNDLE}Power_001, click ${getString($r('app.string.power_manager'))}`); + await button.click(); + await driver.delayMs(200); + logger.info(TAG, `${BUNDLE}Power_001, end`); + let opts = await getStringArray($r('app.strarray.power_operations')) + + logger.info(TAG, `${BUNDLE}Power_002, begin`); + // 检测亮灭屏状态 + logger.info(TAG, `${BUNDLE}Power_002, find ${opts[0]}`); + await driver.assertComponentExist(ON.text(opts[0], MatchPattern.CONTAINS)); + let judge = await driver.findComponent(ON.text(opts[0], MatchPattern.CONTAINS)); + logger.info(TAG, `${BUNDLE}Power_002, click ${opts[0]}`); + await judge.click(); + await driver.delayMs(1000); + logger.info(TAG, `${BUNDLE}Power_002, find ${getString($r('app.string.screen_state'))}`); + await driver.assertComponentExist(ON.text(getString($r('app.string.screen_state')), MatchPattern.CONTAINS)); + await driver.delayMs(200); + logger.info(TAG, `${BUNDLE}Power_002, end`); + + logger.info(TAG, `${BUNDLE}Power_003, begin`); + // 获取电源模式 + logger.info(TAG, `${BUNDLE}Power_003, find ${opts[1]}`); + await driver.assertComponentExist(ON.text(opts[1], MatchPattern.CONTAINS)); + let modeBtn = await driver.findComponent(ON.text(opts[1], MatchPattern.CONTAINS)); + logger.info(TAG, `${BUNDLE}Power_003, click ${opts[1]}`); + await modeBtn.click(); + await driver.delayMs(1000); + logger.info(TAG, `${BUNDLE}Power_003, find ${getString($r('app.string.power_mode'))}:`); + await driver.assertComponentExist(ON.text(getString($r('app.string.power_mode')), MatchPattern.CONTAINS)); + await driver.delayMs(200); + logger.info(TAG, `${BUNDLE}Power_003, end`); + + await driver.pressBack(); + done(); + }) + + /** + * 设置数据项名称 + */ + it(BUNDLE + 'Settings_001', 0, async (done: Function) => { + let driver: Driver = Driver.create(); + await driver.delayMs(200); + logger.info(TAG, `${BUNDLE}Settings_001, begin`); + await driver.assertComponentExist(ON.type('List')); + let list = await driver.findComponent(ON.type('List')); + logger.info(TAG, `${BUNDLE}Settings_001, find ${getString($r('app.string.settings'))}`); + let button = await list.scrollSearch(ON.text(getString($r('app.string.settings')))); + logger.info(TAG, `${BUNDLE}Settings_001, click ${getString($r('app.string.settings'))}`); + await button.click(); + await driver.delayMs(200); + logger.info(TAG, `${BUNDLE}Settings_001, end`); + + let opts = await getStringArray($r('app.strarray.settings_operations')) + logger.info(TAG, `${BUNDLE}Settings_002, begin`); + logger.info(TAG, `${BUNDLE}Settings_002, find ${opts[0]}`); + await driver.assertComponentExist(ON.text(opts[0])); + let btn1 = await driver.findComponent(ON.text(opts[0])); + logger.info(TAG, `${BUNDLE}Settings_002, click ${opts[0]}`); + await btn1.click(); + await driver.delayMs(200); + logger.info(TAG, `${BUNDLE}Settings_002, check dataability`); + await driver.assertComponentExist(ON.text('dataability://', MatchPattern.CONTAINS)); + logger.info(TAG, `${BUNDLE}Settings_002, end`); + + logger.info(TAG, `${BUNDLE}Settings_003, begin`); + logger.info(TAG, `${BUNDLE}Settings_003, find ${opts[1]}`); + await driver.assertComponentExist(ON.text(opts[1])); + let btn3 = await driver.findComponent(ON.text(opts[1])); + logger.info(TAG, `${BUNDLE}Settings_003, click ${opts[1]}`); + await btn3.click(); + await driver.delayMs(200); + logger.info(TAG, `${BUNDLE}Settings_003, check ${getString($r('app.string.airplane_status'))}`); + await driver.assertComponentExist(ON.text(getString($r('app.string.airplane_status')), MatchPattern.CONTAINS)); + logger.info(TAG, `${BUNDLE}Settings_003, end`); + + logger.info(TAG, `${BUNDLE}Settings_004, begin`); + logger.info(TAG, `${BUNDLE}Settings_004, find ${opts[2]}`); + await driver.assertComponentExist(ON.text(opts[2])); + let btn4 = await driver.findComponent(ON.text(opts[2])); + logger.info(TAG, `${BUNDLE}Settings_004, click ${opts[2]}`); + await btn4.click(); + await driver.delayMs(200); + logger.info(TAG, `${BUNDLE}Settings_004, end`); + + await driver.pressBack(); + done(); + }) + + /** + * 设备状态感知框架 + */ + it(BUNDLE + 'Stationary_001', 0, async (done: Function) => { + let driver: Driver = Driver.create(); + await driver.delayMs(200); + logger.info(TAG, `${BUNDLE}Stationary_001, begin`); + await driver.assertComponentExist(ON.type('List')); + let list = await driver.findComponent(ON.type('List')); + logger.info(TAG, `${BUNDLE}Stationary_001, find ${getString($r('app.string.stationary'))}`); + let button = await list.scrollSearch(ON.text(getString($r('app.string.stationary')))); + logger.info(TAG, `${BUNDLE}Stationary_001, click ${getString($r('app.string.stationary'))}`); + await button.click(); + await driver.delayMs(200); + logger.info(TAG, `${BUNDLE}Stationary_001, end`); + + let opts = await getStringArray($r('app.strarray.stationary_operations')) + logger.info(TAG, `${BUNDLE}Stationary_002, begin`); + logger.info(TAG, `${BUNDLE}Stationary_002, find ${opts[0]}`); + await driver.assertComponentExist(ON.text(opts[1])); + let btn1 = await driver.findComponent(ON.text(opts[1])); + logger.info(TAG, `${BUNDLE}Stationary_002, click ${opts[0]}`); + await btn1.click(); + await driver.delayMs(200); + logger.info(TAG, `${BUNDLE}Stationary_002, end`); + + logger.info(TAG, `${BUNDLE}Stationary_003, begin`); + logger.info(TAG, `${BUNDLE}Stationary_003, find ${opts[1]}`); + await driver.assertComponentExist(ON.text(opts[1])); + let btn2 = await driver.findComponent(ON.text(opts[1])); + logger.info(TAG, `${BUNDLE}Stationary_003, click ${opts[1]}`); + await btn2.click(); + await driver.delayMs(200); + logger.info(TAG, `${BUNDLE}Stationary_003, end`); + + logger.info(TAG, `${BUNDLE}Stationary_004, begin`); + logger.info(TAG, `${BUNDLE}Stationary_004, find ${opts[2]}`); + await driver.assertComponentExist(ON.text(opts[2])); + let btn3 = await driver.findComponent(ON.text(opts[2])); + logger.info(TAG, `${BUNDLE}Stationary_004, click ${opts[2]}`); + await btn3.click(); + await driver.delayMs(200); + logger.info(TAG, `${BUNDLE}Stationary_004, end`); + + await driver.pressBack(); + done(); + }) + + /** + * 热管理 + */ + it(BUNDLE + 'Thermal_001', 0, async (done: Function) => { + let driver: Driver = Driver.create(); + await driver.delayMs(200); + logger.info(TAG, `${BUNDLE}Thermal_001, begin`); + await driver.assertComponentExist(ON.type('List')); + let list = await driver.findComponent(ON.type('List')); + logger.info(TAG, `${BUNDLE}Thermal_001, find ${getString($r('app.string.thermal'))}`); + let button = await list.scrollSearch(ON.text(getString($r('app.string.thermal')))); + logger.info(TAG, `${BUNDLE}Thermal_001, click ${getString($r('app.string.thermal'))}`); + await button.click(); + await driver.delayMs(500); + + logger.info(TAG, `${BUNDLE}Thermal_001, check Thermal level`); + await driver.assertComponentExist(ON.text('Thermal level')); + await driver.assertComponentExist(ON.text('Callback level')); + await driver.delayMs(200); + logger.info(TAG, `${BUNDLE}Thermal_001, end`); + + await driver.pressBack(); + done(); + }) + + /** + * USB管理 + */ + it(BUNDLE + 'UsbManager_001', 0, async (done: Function) => { + let driver: Driver = Driver.create(); + await driver.delayMs(200); + logger.info(TAG, `${BUNDLE}UsbManager_001, begin`); + await driver.assertComponentExist(ON.type('List')); + let list = await driver.findComponent(ON.type('List')); + logger.info(TAG, `${BUNDLE}UsbManager_001, find ${getString($r('app.string.usb_manager'))}`); + let button = await list.scrollSearch(ON.text(getString($r('app.string.usb_manager')))); + logger.info(TAG, `${BUNDLE}UsbManager_001, click ${getString($r('app.string.usb_manager'))}`); + await button.click(); + await driver.delayMs(200); + logger.info(TAG, `${BUNDLE}UsbManager_001, end`); + + logger.info(TAG, `${BUNDLE}UsbManager_002, begin`); + // 打开监听开关 + logger.info(TAG, `${BUNDLE}UsbManager_002, find Toggle`); + await driver.assertComponentExist(ON.type('Toggle')); + let toggle = await driver.findComponent(ON.type('Toggle')); + logger.info(TAG, `${BUNDLE}usb_manager_002, open Toggle`); + await toggle.click(); + await driver.delayMs(1000); + logger.info(TAG, `${BUNDLE}UsbManager_002, end`); + + // 点击列表Item + logger.info(TAG, `${BUNDLE}UsbManager_003, begin`); + logger.info(TAG, `${BUNDLE}UsbManager_003, find device_0`); + let device_0 = await driver.findComponent(ON.id('device_0')); + if (device_0) { + logger.info(TAG, `${BUNDLE}UsbManager_003, click device_0`); + await device_0.click(); + } + await driver.delayMs(200); + logger.info(TAG, `${BUNDLE}UsbManager_003, end`); + + // 点击详情对话框确定按钮 + logger.info(TAG, `${BUNDLE}UsbManager_004, begin`); + logger.info(TAG, `${BUNDLE}UsbManager_004, find dialog`); + let btn = await driver.findComponent(ON.text(getString($r('app.string.confirm')))); + if (btn) { + logger.info(TAG, `${BUNDLE}UsbManager_004, click dialog`); + await btn.click(); + } + await driver.delayMs(200); + // 关闭监听开关 + logger.info(TAG, `${BUNDLE}UsbManager_004, close toggle`); + await toggle.click(); + logger.info(TAG, `${BUNDLE}UsbManager_004, end`); + + await driver.delayMs(1000); + await driver.pressBack(); + done(); + }) + }) +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/ohosTest/ets/test/List.test.ets b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/ohosTest/ets/test/List.test.ets new file mode 100644 index 0000000000000000000000000000000000000000..657d194164f932396390ddb56c59cbd65c7d1259 --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/ohosTest/ets/test/List.test.ets @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import abilityTest from './Ability.test'; + +export default function testsuite() { + abilityTest(); +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/ohosTest/ets/testability/TestAbility.ets b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/ohosTest/ets/testability/TestAbility.ets new file mode 100644 index 0000000000000000000000000000000000000000..0b323052ef2b33e5d99dc9282cae8c9abc9f3da4 --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/ohosTest/ets/testability/TestAbility.ets @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import AbilityDelegatorRegistry from '@ohos.app.ability.abilityDelegatorRegistry'; +import testsuite from '../test/List.test'; +import UIAbility from '@ohos.app.ability.UIAbility'; +import window from '@ohos.window'; +import { Hypium } from '@ohos/hypium'; +import { logger } from '../util/Logger'; +import Want from '@ohos.app.ability.Want'; +import AbilityConstant from '@ohos.app.ability.AbilityConstant'; + +const TAG: string = 'TestAbility'; + +export default class TestAbility extends UIAbility { + onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) { + logger.info(TAG, 'TestAbility onCreate'); + logger.info(TAG, `want param: ${JSON.stringify(want)}`); + logger.info(TAG, `launchParam: ${JSON.stringify(launchParam)}`); + let abilityDelegator: AbilityDelegatorRegistry.AbilityDelegator; + abilityDelegator = AbilityDelegatorRegistry.getAbilityDelegator(); + let abilityDelegatorArguments: AbilityDelegatorRegistry.AbilityDelegatorArgs; + abilityDelegatorArguments = AbilityDelegatorRegistry.getArguments(); + logger.info(TAG, 'start run testcase!!!'); + Hypium.hypiumTest(abilityDelegator, abilityDelegatorArguments, testsuite); + } + + onDestroy() { + logger.info(TAG, 'TestAbility onDestroy'); + } + + onWindowStageCreate(windowStage: window.WindowStage) { + logger.info(TAG, 'TestAbility onWindowStageCreate'); + windowStage.loadContent('testability/pages/Index', (err, data) => { + if (err.code) { + logger.error(TAG, `Failed to load the content. Cause: ${JSON.stringify(err)}`); + return; + } + logger.info(TAG, `Succeeded in loading the content. Data: ${JSON.stringify(data) ?? ''}`); + }); + } + + onWindowStageDestroy() { + logger.info(TAG, 'TestAbility onWindowStageDestroy'); + } + + onForeground() { + logger.info(TAG, 'TestAbility onForeground'); + } + + onBackground() { + logger.info(TAG, 'TestAbility onBackground'); + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/ohosTest/ets/testability/pages/Index.ets b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/ohosTest/ets/testability/pages/Index.ets new file mode 100644 index 0000000000000000000000000000000000000000..2137549cfce5011eb5701c7fcd86bca7adae6c05 --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/ohosTest/ets/testability/pages/Index.ets @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { logger } from '../../util/Logger'; + +const TAG: string = 'TestIndex'; + +@Entry +@Component +struct Index { + aboutToAppear() { + logger.info(TAG, 'TestAbility index aboutToAppear'); + } + + @State message: string = 'Hello World'; + + build() { + Row() { + Column() { + Text(this.message) + .fontSize(50) + .fontWeight(FontWeight.Bold) + Button() { + Text('next page') + .fontSize(20) + .fontWeight(FontWeight.Bold) + } + .type(ButtonType.Capsule) + .margin({ + top: 20 + }) + .backgroundColor('#0D9FFB') + .width('35%') + .height('5%') + .onClick(() => { + }) + } + .width('100%') + } + .height('100%') + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/ohosTest/ets/util/Logger.ts b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/ohosTest/ets/util/Logger.ts new file mode 100644 index 0000000000000000000000000000000000000000..f1235290bd0ff9026be9cbe21ac34bc8d6e15d7c --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/ohosTest/ets/util/Logger.ts @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import hilog from '@ohos.hilog'; + +class Logger { + private domain: number; + private prefix: string; + private format: string = '%{public}s, %{public}s'; + + constructor(prefix: string) { + this.prefix = prefix; + this.domain = 0xF811; + } + + debug(...args: string[]): void { + hilog.debug(this.domain, this.prefix, this.format, args); + } + + info(...args: string[]): void { + hilog.info(this.domain, this.prefix, this.format, args); + } + + warn(...args: string[]): void { + hilog.warn(this.domain, this.prefix, this.format, args); + } + + error(...args: string[]): void { + hilog.error(this.domain, this.prefix, this.format, args); + } +} + +export const logger = new Logger('Sample_DeviceManagement_test'); \ No newline at end of file diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/ohosTest/ets/util/ResourceUtil.ets b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/ohosTest/ets/util/ResourceUtil.ets new file mode 100644 index 0000000000000000000000000000000000000000..b890bdb2ea04d1e1189f453b610aed8003da2647 --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/ohosTest/ets/util/ResourceUtil.ets @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2023 Hunan OpenValley Digital Industry Development Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import AbilityDelegatorRegistry from '@ohos.app.ability.abilityDelegatorRegistry'; + +const delegator = AbilityDelegatorRegistry.getAbilityDelegator(); + +export function getString(resource: Resource): string { + let manage = delegator.getAppContext().resourceManager + return manage.getStringSync(resource) +} + +export async function getStringArray(resource: Resource): Promise> { + let manage = delegator.getAppContext().resourceManager + let menuList: Array = await manage.getStringArrayValue(resource); + return menuList; +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/ohosTest/module.json5 b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/ohosTest/module.json5 new file mode 100644 index 0000000000000000000000000000000000000000..22e2c611f379dbb0fddf452b259ef27c508d058b --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/ohosTest/module.json5 @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "module": { + "name": "entry_test", + "type": "feature", + "description": "$string:module_test_desc", + "mainElement": "TestAbility", + "deviceTypes": [ + "default", + "tablet" + ], + "deliveryWithInstall": true, + "installationFree": false, + "pages": "$profile:test_pages", + "abilities": [ + { + "name": "TestAbility", + "srcEntrance": "./ets/testability/TestAbility.ets", + "description": "$string:TestAbility_desc", + "icon": "$media:icon", + "label": "$string:TestAbility_label", + "visible": true, + "startWindowIcon": "$media:icon", + "startWindowBackground": "$color:start_window_background", + "skills": [ + { + "actions": [ + "action.system.home" + ], + "entities": [ + "entity.system.home" + ] + } + ] + } + ] + } +} diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/ohosTest/resources/base/element/color.json b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/ohosTest/resources/base/element/color.json new file mode 100644 index 0000000000000000000000000000000000000000..3c712962da3c2751c2b9ddb53559afcbd2b54a02 --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/ohosTest/resources/base/element/color.json @@ -0,0 +1,8 @@ +{ + "color": [ + { + "name": "start_window_background", + "value": "#FFFFFF" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/ohosTest/resources/base/element/strarray.json b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/ohosTest/resources/base/element/strarray.json new file mode 100644 index 0000000000000000000000000000000000000000..4ddb1c98ead22be49b5cd5a0fb9d2d52816ef73d --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/ohosTest/resources/base/element/strarray.json @@ -0,0 +1,74 @@ +{ + "strarray": [ + { + "name": "power_operations", + "value": [ + { + "value": "Check whether the screen is on or off" + }, + { + "value": "Get Power Mode" + } + ] + }, + { + "name": "running_lock_operations", + "value": [ + { + "value": "Supported runningLock" + }, + { + "value": "Set Screen Sleep Lock" + }, + { + "value": "Set Proximity Screen Control Lock" + } + ] + }, + { + "name": "power_mode", + "value": [ + { + "value": "normal" + }, + { + "value": "power save" + }, + { + "value": "performance" + }, + { + "value": "extreme power save" + } + ] + }, + { + "name": "settings_operations", + "value": [ + { + "value": "Get Settings Uri" + }, + { + "value": "Enable Airplane Mode" + }, + { + "value": "Can Show Floating" + } + ] + }, + { + "name": "stationary_operations", + "value": [ + { + "value": "Subscribe to Device Status Service" + }, + { + "value": "Unsubscribe from Device Status Service" + }, + { + "value": "Query device status" + } + ] + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/ohosTest/resources/base/element/string.json b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/ohosTest/resources/base/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..6a7ff3cf7456e809315daa7eda4ec4ed9c94a084 --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/ohosTest/resources/base/element/string.json @@ -0,0 +1,60 @@ +{ + "string": [ + { + "name": "module_test_desc", + "value": "test ability description" + }, + { + "name": "TestAbility_desc", + "value": "the test ability" + }, + { + "name": "TestAbility_label", + "value": "test label" + }, + { + "name": "battery_info", + "value": "Battery Information" + }, + { + "name": "running_lock", + "value": "Runninglock" + }, + { + "name": "thermal", + "value": "Thermal Management" + }, + { + "name": "usb_manager", + "value": "USB Management" + }, + { + "name": "power_manager", + "value": "System Power Management" + }, + { + "name": "settings", + "value": "Data Item Settings" + }, + { + "name": "stationary", + "value": "Device Status Awareness Framework" + }, + { + "name": "screen_state", + "value": "The screen state:" + }, + { + "name": "power_mode", + "value": "current power mode:" + }, + { + "name": "airplane_status", + "value": "Airplane status:" + }, + { + "name": "confirm", + "value": "confirm" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/ohosTest/resources/base/media/icon.png b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/ohosTest/resources/base/media/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ce307a8827bd75456441ceb57d530e4c8d45d36c Binary files /dev/null and b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/ohosTest/resources/base/media/icon.png differ diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/ohosTest/resources/base/profile/test_pages.json b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/ohosTest/resources/base/profile/test_pages.json new file mode 100644 index 0000000000000000000000000000000000000000..b7e7343cacb32ce982a45e76daad86e435e054fe --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/ohosTest/resources/base/profile/test_pages.json @@ -0,0 +1,5 @@ +{ + "src": [ + "testability/pages/Index" + ] +} diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/ohosTest/resources/en_US/element/strarray.json b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/ohosTest/resources/en_US/element/strarray.json new file mode 100644 index 0000000000000000000000000000000000000000..4ddb1c98ead22be49b5cd5a0fb9d2d52816ef73d --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/ohosTest/resources/en_US/element/strarray.json @@ -0,0 +1,74 @@ +{ + "strarray": [ + { + "name": "power_operations", + "value": [ + { + "value": "Check whether the screen is on or off" + }, + { + "value": "Get Power Mode" + } + ] + }, + { + "name": "running_lock_operations", + "value": [ + { + "value": "Supported runningLock" + }, + { + "value": "Set Screen Sleep Lock" + }, + { + "value": "Set Proximity Screen Control Lock" + } + ] + }, + { + "name": "power_mode", + "value": [ + { + "value": "normal" + }, + { + "value": "power save" + }, + { + "value": "performance" + }, + { + "value": "extreme power save" + } + ] + }, + { + "name": "settings_operations", + "value": [ + { + "value": "Get Settings Uri" + }, + { + "value": "Enable Airplane Mode" + }, + { + "value": "Can Show Floating" + } + ] + }, + { + "name": "stationary_operations", + "value": [ + { + "value": "Subscribe to Device Status Service" + }, + { + "value": "Unsubscribe from Device Status Service" + }, + { + "value": "Query device status" + } + ] + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/ohosTest/resources/en_US/element/string.json b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/ohosTest/resources/en_US/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..acd50a4dbd167fce1ff2d586058f69ee657122c7 --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/ohosTest/resources/en_US/element/string.json @@ -0,0 +1,60 @@ +{ + "string": [ + { + "name": "module_test_desc", + "value": "test ability description" + }, + { + "name": "TestAbility_desc", + "value": "the test ability" + }, + { + "name": "TestAbility_label", + "value": "test label" + }, + { + "name": "battery_info", + "value": "Battery Information" + }, + { + "name": "thermal", + "value": "Thermal Management" + }, + { + "name": "usb_manager", + "value": "USB Management" + }, + { + "name": "power_manager", + "value": "System Power Management" + }, + { + "name": "running_lock", + "value": "Runninglock" + }, + { + "name": "settings", + "value": "Data Item Settings" + }, + { + "name": "stationary", + "value": "Device Status Awareness Framework" + }, + { + "name": "screen_state", + "value": "The screen state:" + }, + { + "name": "power_mode", + "value": "current power mode:" + }, + { + "name": "airplane_status", + "value": "Airplane status:" + }, + { + "name": "confirm", + "value": "confirm" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/ohosTest/resources/zh_CN/element/strarray.json b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/ohosTest/resources/zh_CN/element/strarray.json new file mode 100644 index 0000000000000000000000000000000000000000..0168e302df45231af92c9d5c7b58c141303c8742 --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/ohosTest/resources/zh_CN/element/strarray.json @@ -0,0 +1,74 @@ +{ + "strarray": [ + { + "name": "power_operations", + "value": [ + { + "value": "检测亮灭屏状态" + }, + { + "value": "获取电源模式" + } + ] + }, + { + "name": "running_lock_operations", + "value": [ + { + "value": "设备支持的休眠锁类型" + }, + { + "value": "设置阻止系统休眠的锁" + }, + { + "value": "设置是否通过接近或者远离状态来控制亮灭屏的锁" + } + ] + }, + { + "name": "power_mode", + "value": [ + { + "value": "标准模式" + }, + { + "value": "省电模式" + }, + { + "value": "性能模式" + }, + { + "value": "超级省电模式" + } + ] + }, + { + "name": "settings_operations", + "value": [ + { + "value": "获取数据项uri" + }, + { + "value": "开关飞行模式" + }, + { + "value": "检查应用是否能以悬浮窗形式显示" + } + ] + }, + { + "name": "stationary_operations", + "value": [ + { + "value": "订阅设备状态服务" + }, + { + "value": "取消订阅设备状态服务" + }, + { + "value": "查询设备状态" + } + ] + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/ohosTest/resources/zh_CN/element/string.json b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/ohosTest/resources/zh_CN/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..c25b43811b412f6bf75700d5946b0aa0c97d5d9f --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/entry/src/ohosTest/resources/zh_CN/element/string.json @@ -0,0 +1,60 @@ +{ + "string": [ + { + "name": "module_test_desc", + "value": "test ability description" + }, + { + "name": "TestAbility_desc", + "value": "the test ability" + }, + { + "name": "TestAbility_label", + "value": "test label" + }, + { + "name": "battery_info", + "value": "电量信息" + }, + { + "name": "thermal", + "value": "热管理" + }, + { + "name": "usb_manager", + "value": "USB管理" + }, + { + "name": "power_manager", + "value": "系统电源管理" + }, + { + "name": "running_lock", + "value": "RunningLock锁" + }, + { + "name": "settings", + "value": "设置数据项名称" + }, + { + "name": "stationary", + "value": "设备状态感知框架" + }, + { + "name": "screen_state", + "value": "亮灭屏状态:" + }, + { + "name": "power_mode", + "value": "当前电源模式:" + }, + { + "name": "airplane_status", + "value": "飞行模式状态:" + }, + { + "name": "confirm", + "value": "确定" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/.gitignore b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..e751b1182973906a77849f215a940ea5359328d4 --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/.gitignore @@ -0,0 +1,4 @@ +/oh_modules +/.preview +/build +/.cxx \ No newline at end of file diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/build-profile.json5 b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/build-profile.json5 new file mode 100644 index 0000000000000000000000000000000000000000..12fe2d844bdb69584fd05ebaa3e1cb197a25c3f1 --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/build-profile.json5 @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "apiType": "stageMode", + "buildOption": { + }, + "targets": [ + { + "name": "default" + } + ] +} diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/hvigorfile.ts b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/hvigorfile.ts new file mode 100644 index 0000000000000000000000000000000000000000..6522df25794b80abde0b0aa8654f3970c4a35cfa --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/hvigorfile.ts @@ -0,0 +1,16 @@ +/** + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Script for compiling build behavior. It is built in the build plug-in and cannot be modified currently. +export { harTasks } from '@ohos/hvigor-ohos-plugin'; \ No newline at end of file diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/index.ets b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/index.ets new file mode 100644 index 0000000000000000000000000000000000000000..6f0b2c5ea97872288c5a1c679f1c5004d8720b4e --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/index.ets @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export { UsbManager } from './src/main/ets/capabilities/UsbManager'; + +export { PowerManager } from './src/main/ets/capabilities/PowerManager'; + +export { BatteryInfo } from './src/main/ets/capabilities/BatteryInfo'; + +export { Thermal } from './src/main/ets/capabilities/Thermal'; + +export { RunningLockManager } from './src/main/ets/capabilities/RunningLockManager'; + +export { SettingsManager } from './src/main/ets/capabilities/SettingsManager'; + +export { StationaryManager } from './src/main/ets/capabilities/StationaryManager'; \ No newline at end of file diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/oh-package.json5 b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/oh-package.json5 new file mode 100644 index 0000000000000000000000000000000000000000..9969e0e44cf31c21c9f837bdb35e37d491284cfb --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/oh-package.json5 @@ -0,0 +1,12 @@ +{ + "license": "ISC", + "types": "", + "devDependencies": {}, + "name": "@ohos/capabilities", + "description": "a npm package which contains arkUI2.0 page", + "main": "index.ets", + "version": "1.0.0", + "dependencies": { + "@ohos/common": "file:../../common" + } +} diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/ets/capabilities/BatteryInfo.ets b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/ets/capabilities/BatteryInfo.ets new file mode 100644 index 0000000000000000000000000000000000000000..cd44e115b33ab174961cca2f018a4416b00591cc --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/ets/capabilities/BatteryInfo.ets @@ -0,0 +1,81 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { ListModel } from '../model/ListModel'; +import { BatteryUtil } from '../util/BatteryUtil'; + +@Extend(Text) function fancy() { + .height(50) + .fontSize(16) + .fontWeight(500) +} + +@Component +export struct BatteryInfo { + @State table: ListModel[] = [ + new ListModel('Battery SOC', BatteryUtil.batterySOC), + new ListModel('Charging Status', BatteryUtil.chargingStatus), + new ListModel('Health Status', BatteryUtil.healthStatus), + new ListModel('Plugged Type', BatteryUtil.pluggedType), + new ListModel('Voltage', BatteryUtil.voltage), + new ListModel('Technology', BatteryUtil.technology), + new ListModel('Battery Temperature', BatteryUtil.batteryTemperature), + new ListModel('Battery Present', BatteryUtil.isBatteryPresent), + new ListModel('Battery Capacity Level', BatteryUtil.batteryCapacityLevel) + ]; + + build() { + List() { + ForEach(this.table, (item: ListModel) => { + ListItem() { + Row() { + Text(item.title) + .textAlign(TextAlign.Start) + .fontSize(20) + .fontWeight(FontWeight.Medium) + .fontColor($r("app.color.list_title")) + Blank() + Text(item.getValue()) + .textAlign(TextAlign.End) + .fontSize(18) + .fontWeight(FontWeight.Regular) + .fontColor($r("app.color.list_sub_content")) + } + .padding({ + left: 16, + right: 16 + }) + .height(62) + .width('100%') + } + }) + } + .divider({ + strokeWidth: px2vp(1), + color: $r("app.color.divider"), + startMargin: 16, + endMargin: 16 + }) + .margin({ + top: 16, + bottom: 16, + left: 4, + right: 4 + }) + .width('100%') + .backgroundColor($r("app.color.white")) + .borderRadius(20) + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/ets/capabilities/PowerManager.ets b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/ets/capabilities/PowerManager.ets new file mode 100644 index 0000000000000000000000000000000000000000..e8b70ec8bb521cf6b89c1e63893017432c4fe109 --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/ets/capabilities/PowerManager.ets @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { ColumnOperation } from '../components/ColumnOperation'; +import { getString } from '@ohos/common'; +import { PowerManagerUtil } from '../util/PowerManagerUtil'; + +@Component +export struct PowerManager { + @State result: string = ''; + + build() { + Scroll() { + Column() { + Row() { + Text(this.result) + .fontWeight(FontWeight.Medium) + .fontSize(20) + } + .alignItems(VerticalAlign.Top) + .width('100%') + .backgroundColor($r("app.color.white")) + .height(160) + .padding(16) + .borderRadius(20) + .margin({ top: 16 }) + ColumnOperation({ operationRes: $r('app.strarray.power_operations'), doOperation: this.doOperation }) + } + .width('100%') + .padding(4) + } + .scrollBar(BarState.Off) + } + + doOperation = async (index: number) => { + switch (index) { + case 0: + try { + let isActive = PowerManagerUtil.isActive(); + this.result = `${getString($r('app.string.screen_state'))}${isActive}`; + } catch (err) { + this.result = `isActive fail:${err}`; + } + break + case 1: + try { + let modeName = await PowerManagerUtil.getPowerModeName(); + this.result = `${getString($r('app.string.power_mode'))}${modeName}`; + } catch (err) { + this.result = `getPowerModeName fail:${err}`; + } + break + default: + break + } + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/ets/capabilities/RunningLockManager.ets b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/ets/capabilities/RunningLockManager.ets new file mode 100644 index 0000000000000000000000000000000000000000..3c09daa3e99af121eb9d6da15902fa85248c220c --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/ets/capabilities/RunningLockManager.ets @@ -0,0 +1,91 @@ +/* + * Copyright (c) 2023 Hunan OpenValley Digital Industry Development Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import runningLock from '@ohos.runningLock'; +import { ColumnOperation } from '../components/ColumnOperation'; +import { getString } from '@ohos/common'; + +@Component +export struct RunningLockManager { + @State result: string = ''; + private timeoutID: number = 0; + + aboutToDisappear() { + if (this.timeoutID) { + clearTimeout(this.timeoutID); + } + } + + build() { + Scroll() { + Column() { + Row() { + Text(this.result) + .fontWeight(FontWeight.Medium) + .fontSize(20) + } + .alignItems(VerticalAlign.Top) + .width('100%') + .backgroundColor($r("app.color.white")) + .height(160) + .padding(16) + .borderRadius(20) + .margin({ top: 16 }) + ColumnOperation({ operationRes: $r('app.strarray.running_lock_operations'), doOperation: this.doOperation }) + } + .width('100%') + .padding(4) + } + .scrollBar(BarState.Off) + } + + doOperation = async (index: number) => { + switch (index) { + case 0: + let res1 = runningLock.isSupported(runningLock.RunningLockType.BACKGROUND); + let res2 = runningLock.isSupported(runningLock.RunningLockType.PROXIMITY_SCREEN_CONTROL); + this.result = `${getString($r('app.string.running_lock_background'))}${res1}\n${getString($r('app.string.running_lock_proximity_screen_control'))}${res2}`; + break + case 1: + try { + let lock = await runningLock.create('running_lock_test', runningLock.RunningLockType.BACKGROUND); + lock.hold(3000); + this.result = `lock time 3s, isLock: true`; + this.timeoutID = setTimeout(() => { + let isHolding = lock.isHolding(); + this.result = `lock time 3s, isLock: ${isHolding}`; + }, 3100) + } catch (err) { + this.result = `lock fail:${err}`; + } + break + case 2: + try { + let lock = await runningLock.create('running_lock_test2', runningLock.RunningLockType.PROXIMITY_SCREEN_CONTROL); + lock.hold(3000); + this.result = `lock time 3s, isLock: true`; + this.timeoutID = setTimeout(() => { + let isHolding = lock.isHolding(); + this.result = `lock time 3s, isLock: ${isHolding}`; + }, 3100) + } catch (err) { + this.result = `lock fail:${err}`; + } + break + default: + break + } + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/ets/capabilities/SettingsManager.ets b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/ets/capabilities/SettingsManager.ets new file mode 100644 index 0000000000000000000000000000000000000000..9edeedc76741a6268ded8194e25e439fc70c0a61 --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/ets/capabilities/SettingsManager.ets @@ -0,0 +1,76 @@ +/* + * Copyright (c) 2023 Hunan OpenValley Digital Industry Development Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import settings from '@ohos.settings'; +import { ColumnOperation } from '../components/ColumnOperation'; +import { getString } from '@ohos/common'; + +@Component +export struct SettingsManager { + @State result: string = ''; + private enableAirplane: boolean = false; + + build() { + Scroll() { + Column() { + Row() { + Text(this.result) + .fontWeight(FontWeight.Medium) + .fontSize(20) + } + .alignItems(VerticalAlign.Top) + .width('100%') + .backgroundColor($r("app.color.white")) + .height(160) + .padding(16) + .borderRadius(20) + .margin({ top: 16 }) + ColumnOperation({ operationRes: $r('app.strarray.settings_operations'), doOperation: this.doOperation }) + } + .width('100%') + .padding(4) + } + .scrollBar(BarState.Off) + } + + doOperation = async (index: number) => { + switch (index) { + case 0: + let uri = settings.getUriSync(settings.display.SCREEN_BRIGHTNESS_STATUS); + this.result = `${uri}`; + break + case 1: + try { + this.enableAirplane = !this.enableAirplane; + settings.enableAirplaneMode(this.enableAirplane, () => { + this.result = `${getString($r('app.string.airplane_status'))}${this.enableAirplane}`; + }) + } catch (err) { + this.result = `${getString($r('app.string.airplane_status'))}error:${JSON.stringify(err)}`; + } + break + case 2: + try { + let res = await settings.canShowFloating(); + this.result = `${getString($r('app.string.show_floating_status'))}${res}`; + } catch (err) { + this.result = `${getString($r('app.string.show_floating_status'))}error: ${JSON.stringify(err)}`; + } + break + default: + break + } + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/ets/capabilities/StationaryManager.ets b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/ets/capabilities/StationaryManager.ets new file mode 100644 index 0000000000000000000000000000000000000000..ebe6b3b6874751397471274bc915a47dd59974ac --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/ets/capabilities/StationaryManager.ets @@ -0,0 +1,81 @@ +/* + * Copyright (c) 2023 Hunan OpenValley Digital Industry Development Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import stationary from '@ohos.stationary'; +import { ColumnOperation } from '../components/ColumnOperation'; + +@Component +export struct StationaryManager { + @State result: string = ''; + + build() { + Scroll() { + Column() { + Row() { + Text(this.result) + .fontWeight(FontWeight.Medium) + .fontSize(20) + } + .alignItems(VerticalAlign.Top) + .width('100%') + .backgroundColor($r("app.color.white")) + .height(160) + .padding(16) + .borderRadius(20) + .margin({ top: 16 }) + ColumnOperation({ operationRes: $r('app.strarray.stationary_operations'), doOperation: this.doOperation }) + } + .width('100%') + .padding(4) + } + .scrollBar(BarState.Off) + } + + doOperation = async (index: number) => { + switch (index) { + case 0: + try { + stationary.on('still', stationary.ActivityEvent.ENTER_EXIT, 3, (data) => { + this.result = `on still success:${JSON.stringify(data)}`; + }) + this.result = ``; + } catch (err) { + this.result = `on still fail:${JSON.stringify(err)}`; + } + break + case 1: + try { + stationary.off('still', stationary.ActivityEvent.ENTER_EXIT, (data) => { + this.result = `off still success:${JSON.stringify(data)}`; + }) + this.result = ``; + } catch (err) { + this.result = `off still fail:${JSON.stringify(err)}`; + } + break + case 2: + try { + stationary.once('still', (data) => { + this.result = `once still success:${JSON.stringify(data)}`; + }) + } catch (err) { + this.result = `once still fail:${JSON.stringify(err)}`; + } + break + default: + break + } + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/ets/capabilities/Thermal.ets b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/ets/capabilities/Thermal.ets new file mode 100644 index 0000000000000000000000000000000000000000..8e1b47f0d785ea2fa6bfc7f7f52876ac655f8ed9 --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/ets/capabilities/Thermal.ets @@ -0,0 +1,110 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import systemTime from '@ohos.systemDateTime'; +import { ListModel } from '../model/ListModel'; +import thermal from '@ohos.thermal'; +import { ThermalUtil } from '../util/ThermalUtil'; +import promptAction from '@ohos.promptAction'; + +@Extend(Text) function fancy() { + .height(50) + .fontSize(16) + .fontWeight(500) +} + +@Component +export struct Thermal { + @State table: ListModel[] = [ + new ListModel('Thermal level', ThermalUtil.getLevel), + new ListModel('Callback level', undefined), + new ListModel('Last callback time', undefined) + ]; + + aboutToAppear() { + this.initThermal(); + } + + aboutToDisappear() { + ThermalUtil.unregisterThermalLevelCallback(); + } + + build() { + List() { + ForEach(this.table, (item: ListModel) => { + ListItem() { + Row() { + Text(item.title) + .fontSize(20) + .fontWeight(FontWeight.Medium) + .fontColor($r("app.color.list_title")) + .textAlign(TextAlign.Start) + Blank() + Text(item.getValue()) + .fontSize(18) + .fontWeight(FontWeight.Medium) + .fontColor($r("app.color.list_sub_content")) + .textAlign(TextAlign.End) + } + .padding({ left: 16, right: 16 }) + .height(62) + .width('100%') + } + }) + } + .divider({ + strokeWidth: px2vp(1), + color: $r("app.color.divider"), + startMargin: 16, + endMargin: 16 + }) + .borderRadius(20) + .backgroundColor($r("app.color.white")) + .margin({ + top: 16, + bottom: 16, + left: 4, + right: 4 + }) + .width('100%') + } + + initThermal() { + const INDEX_0 = 0; + const INDEX_1 = 1; + ThermalUtil.registerThermalLevelCallback((level: number) => { + this.table[INDEX_0] = new ListModel('Thermal level', undefined, ThermalUtil.getLevel()); + this.table[INDEX_1] = new ListModel('Callback level', undefined, ThermalUtil.getStrLevel(level)); + this.getCurrentTime(); + if (level === thermal.ThermalLevel.WARNING) { + try { + promptAction.showToast({ + message: $r('app.string.thermal_warning'), + duration: 2000, + }); + } catch (error) { + console.error(`showToast args error code is ${error?.code}, message is ${error?.message}`); + } + } + }) + } + + getCurrentTime() { + const INDEX_2 = 2; + systemTime.getCurrentTime().then((date: number) => { + this.table[INDEX_2] = new ListModel('Last callback time', undefined, ThermalUtil.timestampToTime(date)); + }) + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/ets/capabilities/UsbManager.ets b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/ets/capabilities/UsbManager.ets new file mode 100644 index 0000000000000000000000000000000000000000..948c38906ba2ff8ca1d19c17ea4f76a35112797d --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/ets/capabilities/UsbManager.ets @@ -0,0 +1,96 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { DeviceAttribute } from '../model/DeviceAttribute'; +import { DeviceCustomDialog } from '../components/usbmanager/DeviceCustomDialog'; +import { DeviceList } from '../components/usbmanager/DeviceList'; +import { createUsbSubscribe, cancelUsbSubscribe, getDeviceList } from '../util/UsbManagerUtil'; + +@Component +export struct UsbManager { + @State isListener: boolean = false; + @State isRefreshing: boolean = false; + @Provide('devicesList') devices: Array = []; + @State device: DeviceAttribute = new DeviceAttribute(); + private dialogController: CustomDialogController = new CustomDialogController({ + builder: DeviceCustomDialog({ device: this.device }), + autoCancel: true, + cancel: () => {} + }); + + build() { + Column({ space: 12 }) { + Row() { + Text($r('app.string.usb_listener')) + .fontSize(20) + .fontWeight(FontWeight.Medium) + Blank() + Toggle({ type: ToggleType.Switch, isOn: this.isListener }) + .onChange((isOn: boolean) => { + this.isListener = !this.isListener + this.listenerSwitch(this.isListener) + }) + } + .backgroundColor($r("app.color.white")) + .borderRadius(20) + .padding({ left: 16, right: 16 }) + .width('100%') + .height(60) + + + DeviceList({ + isRefreshing: $isRefreshing, + device: $device, + getDeviceList: () => { + this.devices = getDeviceList(); + }, + openDialog: () => { + this.dialogController.open(); + } + }) + } + .width('100%') + .height('100%') + .padding(16) + } + + @Builder + SingleAttribute(title: Resource, info: string) { + Row() { + Text(title) + .fontSize(20) + .width('100') + .fontWeight(FontWeight.Bold) + + Text(info) + .fontSize(20) + .layoutWeight(1) + .textAlign(TextAlign.Start) + } + .margin({ top: 10 }) + .alignSelf(ItemAlign.Start) + } + + listenerSwitch(isListener: boolean) { + if (isListener) { + this.devices = getDeviceList(); + createUsbSubscribe(() => { + this.devices = getDeviceList(); + }) + } else { + cancelUsbSubscribe(); + } + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/ets/components/ColumnOperation.ets b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/ets/components/ColumnOperation.ets new file mode 100644 index 0000000000000000000000000000000000000000..67c7bf9843e7ee1d114cde16043013f892cd9382 --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/ets/components/ColumnOperation.ets @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { CustomDataSource, getStringArray } from '@ohos/common'; + +@Component +export struct ColumnOperation { + private operationRes?: Resource = undefined; + private operationSource: CustomDataSource = new CustomDataSource([]); + private doOperation: (index: number) => void = () => { + }; + + build() { + List() { + LazyForEach(this.operationSource, (item: string, index: number) => { + ListItem(){ + Row() { + Button() { + Text(item) + .fontSize(20) + .fontWeight(FontWeight.Medium) + .fontColor($r("app.color.list_title")) + .width('100%') + .padding({ + left: 16 + }) + .textAlign(TextAlign.Start) + } + .width('100%') + .height(68) + .borderRadius(20) + .type(ButtonType.Normal) + .backgroundColor($r("app.color.white")) + .margin({ top: 16 }) + .onClick(() => { + this.doOperation(index) + }) + } + .width('100%') + .justifyContent(FlexAlign.Start) + } + }, (index: number) => index.toString()) + } + .width('100%') + } + + async aboutToAppear() { + if (this.operationRes) { + let menuList = await getStringArray(this.operationRes); + this.operationSource.dataArray = menuList; + this.operationSource.notifyDataReload(); + } + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/ets/components/InfoItemView.ets b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/ets/components/InfoItemView.ets new file mode 100644 index 0000000000000000000000000000000000000000..f8ae465398b001ed20f4e38a431367538302a014 --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/ets/components/InfoItemView.ets @@ -0,0 +1,47 @@ +/** + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +@Component +export struct InfoItemView { + private name: string | Resource = ''; + private value: string | Resource = ''; + + build() { + Row() { + Text(this.name) + .fontSize(16) + .lineHeight(22) + .fontWeight(FontWeight.Medium) + .fontFamily('HarmonyHeiTi') + .fontColor($r('sys.color.ohos_id_color_text_primary')) + .align(Alignment.Start) + .margin({ left: 16 }) + Blank() + Text(this.value) + .fontSize(16) + .lineHeight(22) + .fontWeight(FontWeight.Medium) + .fontFamily('HarmonyHeiTi') + .fontColor($r('sys.color.ohos_id_color_text_primary')) + .align(Alignment.Start) + .margin({ right: 16 }) + } + .alignItems(VerticalAlign.Center) + .width('100%') + .height(56) + .borderRadius(20) + .padding({ left: 8, right: 8 }) + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/ets/components/RadiusColumn.ets b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/ets/components/RadiusColumn.ets new file mode 100644 index 0000000000000000000000000000000000000000..943843aa4915cfbca9f3f747ef1152acc989d8bd --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/ets/components/RadiusColumn.ets @@ -0,0 +1,35 @@ +/** + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +@Component +export struct RadiusColumn { + @BuilderParam noParam: () => void; + + build() { + Column() { + this.noParam(); + } + .width('100%') + .borderRadius(24) + .backgroundColor($r('sys.color.ohos_id_color_foreground_contrary')) + .padding({ + left: 12, + right: 12, + top: 6, + bottom: 6 + }) + .margin({ top: 6, bottom: 6 }) + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/ets/components/usbmanager/DeviceCustomDialog.ets b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/ets/components/usbmanager/DeviceCustomDialog.ets new file mode 100644 index 0000000000000000000000000000000000000000..bbb8283679d5f60c30e4893c2339e3d7da9fa68f --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/ets/components/usbmanager/DeviceCustomDialog.ets @@ -0,0 +1,112 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { Component } from '@ohos.UiTest'; + +import { DeviceAttribute } from '../../model/DeviceAttribute'; + +@Preview +@CustomDialog +export struct DeviceCustomDialog { + private device: DeviceAttribute = new DeviceAttribute(); + private controller?: CustomDialogController; + + build() { + Column() { + Column() { + Text(`${this.device.manufacturerName} ${this.device.productName}`) + .width('100%') + .fontSize(26) + .margin({ top: 22, bottom: 22 }) + .fontWeight(FontWeight.Medium) + .textAlign(TextAlign.Center) + + List() { + ListItem() { + this.SingleAttribute($r('app.string.bus_address'), this.device.busAddress.toString()); + } + ListItem() { + this.SingleAttribute($r('app.string.device_address'), this.device.deviceAddress.toString()); + } + ListItem() { + this.SingleAttribute($r('app.string.serial'), this.device.serial); + } + ListItem() { + this.SingleAttribute($r('app.string.device_name'), this.device.name); + } + ListItem() { + this.SingleAttribute($r('app.string.manufacturer_name'), this.device.manufacturerName); + } + ListItem() { + this.SingleAttribute($r('app.string.product_name'), this.device.productName); + } + ListItem() { + this.SingleAttribute($r('app.string.version'), this.device.version); + } + ListItem() { + this.SingleAttribute($r('app.string.vendor_id'), this.device.vendorId.toString()); + } + ListItem() { + this.SingleAttribute($r('app.string.product_id'), this.device.productId.toString()); + } + ListItem() { + this.SingleAttribute($r('app.string.device_class'), this.device.clazz.toString()); + } + } + .scrollBar(BarState.Off) + .divider({ + strokeWidth: px2vp(1), + color: $r("app.color.divider") + }) + .width('100%') + .backgroundColor($r("app.color.white")) + .borderRadius(20) + + } + .margin({ + left: 32, + right: 32, + bottom: 72 + }) + .layoutWeight(1) + + Text($r('app.string.confirm')) + .fontSize(20) + .height(62) + .margin({ top: 8, bottom: 8 }) + .fontColor($r("sys.color.ohos_id_color_activated")) + .onClick(() => { + this.controller?.close(); + }) + } + } + + @Builder + SingleAttribute(title: Resource, info: string) { + Row() { + Text(title) + .fontSize(20) + .fontColor($r("app.color.list_content")) + .fontWeight(FontWeight.Medium) + .layoutWeight(1) + + Text(info) + .fontSize(18) + .fontColor($r("app.color.list_sub_content")) + .fontWeight(FontWeight.Regular) + } + .height(48) + .alignSelf(ItemAlign.Start) + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/ets/components/usbmanager/DeviceList.ets b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/ets/components/usbmanager/DeviceList.ets new file mode 100644 index 0000000000000000000000000000000000000000..5f917618d43afef74f30a0a3032fb2e6678a245d --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/ets/components/usbmanager/DeviceList.ets @@ -0,0 +1,85 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { DeviceAttribute } from '../../model/DeviceAttribute'; + +@Component +export struct DeviceList { + @Link isRefreshing: boolean; + @Link device: DeviceAttribute; + @Consume('devicesList') devices: Array; + public getDeviceList: () => void = () => { + }; + public openDialog: () => void = () => { + }; + + build() { + Column() { + Text($r('app.string.device_list')) + .fontSize(16) + .fontColor($r('app.color.list_sub_content')) + .fontWeight(FontWeight.Medium) + .margin({ + left: 16, + top: 24, + bottom: 12 + }) + .width('100%') + + Refresh({ refreshing: this.isRefreshing, offset: 120, friction: 100 }) { + List() { + ForEach(this.devices, (item: DeviceAttribute, index: number) => { + ListItem() { + Text(`${item.manufacturerName} ${item.productName}`) + .height(60) + .fontSize(20) + .fontWeight(FontWeight.Medium) + .width('100%') + .fontColor($r("app.color.black")) + .backgroundColor($r("app.color.white")) + .padding({ left: 16, right: 16 }) + } + .onClick(() => { + this.device = this.devices[index] + this.openDialog() + }) + }) + } + .width('100%') + .borderRadius(20) + .divider({ + strokeWidth: px2vp(1), + color: $r("app.color.divider"), + startMargin: 16, + endMargin: 16 + }) + } + .width('100%') + .margin({ bottom: 20 }) + .layoutWeight(1) + .onRefreshing(() => { + this.isRefreshing = true; + this.getDeviceList(); + setTimeout(() => { + this.isRefreshing = false; + }, 1000) + }) + } + .width('100%') + .layoutWeight(1) + .borderRadius(20) + .backgroundColor($r('app.color.list_background')) + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/ets/model/DeviceAttribute.ts b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/ets/model/DeviceAttribute.ts new file mode 100644 index 0000000000000000000000000000000000000000..f824bf7c5ad8595606b6c8b3c93a17a3fd9c29a3 --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/ets/model/DeviceAttribute.ts @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export class DeviceAttribute { + public busAddress: number; // 总线地址 + public deviceAddress: number; // 设备地址 + public serial: string; // 序列号 + public name: string; // 设备名字 + public manufacturerName: string; // 产商信息 + public productName: string; // 产品信息 + public version: string; // 版本 + public vendorId: number; // 厂商ID + public productId: number; // 产品ID + public clazz: number; // 设备类 + + constructor() { + this.busAddress = 0; + this.deviceAddress = 0; + this.serial = ''; + this.name = ''; + this.manufacturerName = ''; + this.productName = ''; + this.version = ''; + this.vendorId = 0; + this.productId = 0; + this.clazz = 0; + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/ets/model/ListModel.ets b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/ets/model/ListModel.ets new file mode 100644 index 0000000000000000000000000000000000000000..f9bee907f72fa6847ae663e51cf0f6fcf9566188 --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/ets/model/ListModel.ets @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export class ListModel { + title: string; + function: Function | undefined; + value: string; + + constructor(title: string, func: Function | undefined, value: string = '') { + this.title = title; + this.function = func; + this.value = value; + } + + setValue(value: string) { + this.value = value; + } + + getValue() { + if (this.function == undefined) { + return this.value; + } + this.value = this.function(); + return this.value; + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/ets/util/AlertDialogUtil.ets b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/ets/util/AlertDialogUtil.ets new file mode 100644 index 0000000000000000000000000000000000000000..2ff142d266fdfe9a6aae857a64ed252ee4703960 --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/ets/util/AlertDialogUtil.ets @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export function showAlertDialog(title: Resource | string, message: Resource | string, action: () => void) { + AlertDialog.show( + { + title: title, + message: message, + primaryButton: { + value: $r('app.string.cancel'), + action: () => { + } + }, + secondaryButton: { + value: $r('app.string.confirm'), + action: () => { + action(); + } + } + } + ) +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/ets/util/BatteryUtil.ets b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/ets/util/BatteryUtil.ets new file mode 100644 index 0000000000000000000000000000000000000000..4da58ce6dc462bd339289607a94fce90b72b70cc --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/ets/util/BatteryUtil.ets @@ -0,0 +1,131 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import batteryInfo from '@ohos.batteryInfo'; + +export class BatteryUtil { + static batterySOC() { + return batteryInfo.batterySOC + ''; + } + + static chargingStatus() { + let value = 'NONE'; + switch (batteryInfo.chargingStatus) { + case batteryInfo.BatteryChargeState.NONE: + value = 'NONE'; + break + case batteryInfo.BatteryChargeState.ENABLE: + value = 'ENABLE'; + break + case batteryInfo.BatteryChargeState.DISABLE: + value = 'DISABLE'; + break + case batteryInfo.BatteryChargeState.FULL: + value = 'FULL'; + break + default: + break + } + return value; + } + + static healthStatus() { + let value = 'UNKNOWN'; + switch (batteryInfo.healthStatus) { + case batteryInfo.BatteryHealthState.UNKNOWN: + value = 'UNKNOWN'; + break + case batteryInfo.BatteryHealthState.GOOD: + value = 'GOOD'; + break + case batteryInfo.BatteryHealthState.OVERVOLTAGE: + value = 'OVERVOLTAGE'; + break + case batteryInfo.BatteryHealthState.OVERHEAT: + value = 'OVERHEAT'; + break + case batteryInfo.BatteryHealthState.COLD: + value = 'COLD'; + break + case batteryInfo.BatteryHealthState.DEAD: + value = 'DEAD'; + break + default: + break + } + return value; + } + + static pluggedType() { + let value = 'NONE'; + switch (batteryInfo.pluggedType) { + case batteryInfo.BatteryPluggedType.NONE: + value = 'NONE'; + break + case batteryInfo.BatteryPluggedType.AC: + value = 'AC'; + break + case batteryInfo.BatteryPluggedType.USB: + value = 'USB'; + break + case batteryInfo.BatteryPluggedType.WIRELESS: + value = 'WIRELESS'; + break + default: + break + } + return value; + } + + static voltage() { + return batteryInfo.voltage + "(μV)"; + } + + static technology() { + return batteryInfo.technology; + } + + static batteryTemperature() { + return (batteryInfo.batteryTemperature / 10).toFixed(2) + "(℃)"; + } + + static isBatteryPresent() { + return batteryInfo.isBatteryPresent ? 'TRUE' : 'FALSE'; + } + + static batteryCapacityLevel() { + let value = 'NONE'; + switch (batteryInfo.batteryCapacityLevel) { + case batteryInfo.BatteryCapacityLevel.LEVEL_FULL: + value = 'LEVEL_FULL'; + break + case batteryInfo.BatteryCapacityLevel.LEVEL_HIGH: + value = 'LEVEL_HIGH'; + break + case batteryInfo.BatteryCapacityLevel.LEVEL_NORMAL: + value = 'LEVEL_NORMAL'; + break + case batteryInfo.BatteryCapacityLevel.LEVEL_LOW: + value = 'LEVEL_LOW'; + break + case batteryInfo.BatteryCapacityLevel.LEVEL_CRITICAL: + value = 'LEVEL_CRITICAL'; + break + default: + break + } + return value; + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/ets/util/CheckEmptyUtils.ts b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/ets/util/CheckEmptyUtils.ts new file mode 100644 index 0000000000000000000000000000000000000000..618ea68441845b8f0586b8a5607199cc2902a408 --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/ets/util/CheckEmptyUtils.ts @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import usbManager from '@ohos.usbManager'; + +export default { + isEmpty(object: Object): boolean { + return (typeof object === 'undefined' || object === null || object === ''); + }, + + isEmptyArray(array: Array): boolean { + return (array.length === 0 ? true : false); + } +}; \ No newline at end of file diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/ets/util/PowerManagerUtil.ets b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/ets/util/PowerManagerUtil.ets new file mode 100644 index 0000000000000000000000000000000000000000..bbf11b2f240e00bcbcf689c4aff45911f1d23d32 --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/ets/util/PowerManagerUtil.ets @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2023 Hunan OpenValley Digital Industry Development Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import power from '@ohos.power'; +import { getStringArray } from '@ohos/common'; + +let powerModes: Array = [ +power.DevicePowerMode.MODE_NORMAL, +power.DevicePowerMode.MODE_POWER_SAVE, +power.DevicePowerMode.MODE_PERFORMANCE, +power.DevicePowerMode.MODE_EXTREME_POWER_SAVE +]; + +export class PowerManagerUtil { + + static isActive(): boolean { + return power.isActive(); + } + + /** + MODE_NORMAL 600 表示标准模式,默认值。 + MODE_POWER_SAVE 601 表示省电模式。 + MODE_PERFORMANCE 602 表示性能模式。 + MODE_EXTREME_POWER_SAVE 603 表示超级省电模式。 + */ + static async getPowerModeName(): Promise { + let powerModeNames = await getStringArray($r('app.strarray.power_mode')) + switch (power.getPowerMode()) { + case powerModes[0]: + return powerModeNames[0]; + case powerModes[1]: + return powerModeNames[1]; + case powerModes[2]: + return powerModeNames[2]; + case powerModes[3]: + return powerModeNames[3]; + default: + return '' + } + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/ets/util/ThermalUtil.ets b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/ets/util/ThermalUtil.ets new file mode 100644 index 0000000000000000000000000000000000000000..55c953b8633223fecf6d388222cdae562be9a397 --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/ets/util/ThermalUtil.ets @@ -0,0 +1,71 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import thermal from '@ohos.thermal'; + +export class ThermalUtil { + static getLevel(): string { + return ThermalUtil.getStrLevel(thermal.getLevel()); + } + + static getStrLevel(level: Number) { + let value = "NONE"; + switch (level) { + case thermal.ThermalLevel.COOL: + value = 'COOL 0'; + break + case thermal.ThermalLevel.NORMAL: + value = 'NORMAL 1'; + break + case thermal.ThermalLevel.WARM: + value = 'WARM 2'; + break + case thermal.ThermalLevel.HOT: + value = 'HOT 3'; + break + case thermal.ThermalLevel.OVERHEATED: + value = 'OVERHEATED 4'; + break + case thermal.ThermalLevel.WARNING: + value = 'WARNING 5'; + break + case thermal.ThermalLevel.EMERGENCY: + value = 'EMERGENCY 6'; + break + default: + break + } + return value + } + + static registerThermalLevelCallback(callback: (level: number) => void) { + thermal.registerThermalLevelCallback(callback); + } + + static unregisterThermalLevelCallback() { + thermal.unregisterThermalLevelCallback(); + } + + static timestampToTime(timestamp: number) { + let date = new Date(timestamp); + let Y = date.getFullYear() + '-'; + let M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-'; + let D = (date.getDate() < 10 ? ('0' + date.getDate()) : date.getDate()) + ' '; + let h = (date.getHours() < 10 ? ('0' + date.getHours()) : date.getHours()) + ':'; + let m = (date.getMinutes() < 10 ? ('0' + date.getMinutes()) : date.getMinutes()) + ':'; + let s = date.getSeconds() < 10 ? ('0' + date.getSeconds()) : date.getSeconds(); + return (Y + M + D + h + m + s) + ''; + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/ets/util/UsbManagerUtil.ets b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/ets/util/UsbManagerUtil.ets new file mode 100644 index 0000000000000000000000000000000000000000..f17767950729cff3af50a08f18b9420d081dde53 --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/ets/util/UsbManagerUtil.ets @@ -0,0 +1,105 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import commonEventManager from '@ohos.commonEventManager'; +import promptAction from '@ohos.promptAction'; +import usbManager from '@ohos.usbManager'; +import { BusinessError } from '@ohos.base'; +import CheckEmptyUtils from './CheckEmptyUtils'; +import { DeviceAttribute } from '../model/DeviceAttribute'; +import { logger } from '@ohos/common'; + +const TAG: string = 'UsbManagerUtil'; +let commonEventSubscriber : commonEventManager.CommonEventSubscriber | undefined = undefined; + +export function getDeviceList(): DeviceAttribute[] { + let usbDevices: usbManager.USBDevice[] = usbManager.getDevices(); + logger.info(TAG, `usb getDeviceList 000 is : ${JSON.stringify(usbDevices)}`); + if (CheckEmptyUtils.isEmpty(usbDevices)) { + logger.info(TAG, `usbDevices is null`); + return []; + } + if (CheckEmptyUtils.isEmptyArray(usbDevices)) { + logger.info(TAG, `usb getDeviceList is null`); + return []; + } + let devices: DeviceAttribute[] = []; + for (let index = 0;index < usbDevices.length; index++) { + logger.info(TAG, `usb devices ${index} : ${JSON.stringify(devices)}`); + let deviceAttribute: DeviceAttribute = { + version: usbDevices[index].version, + serial: usbDevices[index].serial, + productName: usbDevices[index].productName, + manufacturerName: usbDevices[index].manufacturerName, + name: usbDevices[index].name, + productId: usbDevices[index].productId, + vendorId: usbDevices[index].vendorId, + busAddress: usbDevices[index].busNum, + clazz: usbDevices[index].clazz, + deviceAddress: usbDevices[index].devAddress + }; + if (devices.indexOf(deviceAttribute) === -1) { + devices.push(deviceAttribute); + } + } + logger.info(TAG, `usb devices : ${JSON.stringify(devices)}`); + return devices; +} + +export function createUsbSubscribe(callback: () => void) { + if (!CheckEmptyUtils.isEmpty(commonEventSubscriber)) { + logger.info(TAG, `usb event not subscribed`); + return; + } + logger.info(TAG, 'usb subUsbListener....'); + let commonEventSubscribeInfo: commonEventManager.CommonEventSubscribeInfo = { + events: [commonEventManager.Support.COMMON_EVENT_USB_DEVICE_DETACHED, commonEventManager.Support.COMMON_EVENT_USB_DEVICE_ATTACHED] + }; + let promise = commonEventManager.createSubscriber(commonEventSubscribeInfo); + let usbSubscribeCallback = (err: BusinessError, data: commonEventManager.CommonEventData) => { + logger.info(TAG, `SubscriberCallBack data = ${JSON.stringify(data)}`); + if (data.event === 'usual.event.hardware.usb.action.USB_DEVICE_ATTACHED') { + promptAction.showToast({ message: $r('app.string.toast_inserted') }); + } else { + promptAction.showToast({ message: $r('app.string.toast_removed') }); + } + callback(); + }; + promise.then((data) => { + promptAction.showToast({ message: $r('app.string.toast_start_listening') }); + logger.info(TAG, 'usb CreateSubscriberCallBack....'); + commonEventSubscriber = data; + commonEventManager.subscribe(commonEventSubscriber, usbSubscribeCallback); + logger.info(TAG, 'Subscriber.subscribe success'); + }).catch((err: BusinessError) => { + logger.info(TAG, `Subscriber.createSubscriber promise err = ${JSON.stringify(err)}`); + }) +} + +export function cancelUsbSubscribe(): void { + if (CheckEmptyUtils.isEmpty(commonEventSubscriber)) { + logger.info(TAG, 'usb event already subscribed'); + return; + } + try { + commonEventManager.unsubscribe(commonEventSubscriber, () => { + logger.info(TAG, `usb event unsubscribed`); + commonEventSubscriber = undefined; + promptAction.showToast({ message: $r('app.string.toast_listening_cancel') }); + }) + } catch (err) { + logger.error(TAG, `usb event unsubscribed fail:${JSON.parse(err)}`); + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/module.json5 b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/module.json5 new file mode 100644 index 0000000000000000000000000000000000000000..0bcf7bea5413f5d3bdc95336954a95e7bd653438 --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/module.json5 @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "module": { + "name": "capabilities", + "type": "har", + "deviceTypes": [ + "default", + "tablet" + ], + "requestPermissions": [ + { + "name": "ohos.permission.RUNNING_LOCK" + } + ] + } +} diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/resources/base/element/strarray.json b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/resources/base/element/strarray.json new file mode 100644 index 0000000000000000000000000000000000000000..4ddb1c98ead22be49b5cd5a0fb9d2d52816ef73d --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/resources/base/element/strarray.json @@ -0,0 +1,74 @@ +{ + "strarray": [ + { + "name": "power_operations", + "value": [ + { + "value": "Check whether the screen is on or off" + }, + { + "value": "Get Power Mode" + } + ] + }, + { + "name": "running_lock_operations", + "value": [ + { + "value": "Supported runningLock" + }, + { + "value": "Set Screen Sleep Lock" + }, + { + "value": "Set Proximity Screen Control Lock" + } + ] + }, + { + "name": "power_mode", + "value": [ + { + "value": "normal" + }, + { + "value": "power save" + }, + { + "value": "performance" + }, + { + "value": "extreme power save" + } + ] + }, + { + "name": "settings_operations", + "value": [ + { + "value": "Get Settings Uri" + }, + { + "value": "Enable Airplane Mode" + }, + { + "value": "Can Show Floating" + } + ] + }, + { + "name": "stationary_operations", + "value": [ + { + "value": "Subscribe to Device Status Service" + }, + { + "value": "Unsubscribe from Device Status Service" + }, + { + "value": "Query device status" + } + ] + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/resources/base/element/string.json b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/resources/base/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..d3c4616d2f723035ee8791ba535a34521f8b064f --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/resources/base/element/string.json @@ -0,0 +1,124 @@ +{ + "string": [ + { + "name": "page_show", + "value": "page from npm package" + }, + { + "name": "no_battery", + "value": "The battery is supported or present" + }, + { + "name": "battery_charge_percent", + "value": "Battery charge percent" + }, + { + "name": "charging_status", + "value": "ChargingStatus" + }, + { + "name": "usb_listener", + "value": "USB Listener" + }, + { + "name": "device_list", + "value": "device list" + }, + { + "name": "confirm", + "value": "confirm" + }, + { + "name": "bus_address", + "value": "bus address" + }, + { + "name": "device_address", + "value": "device address" + }, + { + "name": "serial", + "value": "serial" + }, + { + "name": "device_name", + "value": "device name" + }, + { + "name": "manufacturer_name", + "value": "manufacturer name" + }, + { + "name": "product_name", + "value": "product name" + }, + { + "name": "version", + "value": "version" + }, + { + "name": "vendor_id", + "value": "vendor id" + }, + { + "name": "product_id", + "value": "product id" + }, + { + "name": "device_class", + "value": "device class" + }, + { + "name": "toast_start_listening", + "value": "Start listening" + }, + { + "name": "toast_inserted", + "value": "USB inserted" + }, + { + "name": "toast_removed", + "value": "Device removed" + }, + { + "name": "toast_listening_cancel", + "value": "Cancel listening" + }, + { + "name": "cancel", + "value": "Cancel" + }, + { + "name": "screen_state", + "value": "The screen state:" + }, + { + "name": "power_mode", + "value": "current power mode:" + }, + { + "name": "running_lock_proximity_screen_control", + "value": "proximity screen control:" + }, + { + "name": "running_lock_background", + "value": "Background:" + }, + { + "name": "airplane_status", + "value": "Airplane status:" + }, + { + "name": "show_floating_status", + "value": "show floating status:" + }, + { + "name": "thermal_warning", + "value": "The current device battery temperature is too high!" + }, + { + "name": "no_usb_device", + "value": "No USB Device" + } + ] +} diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/resources/base/media/icon.png b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/resources/base/media/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ce307a8827bd75456441ceb57d530e4c8d45d36c Binary files /dev/null and b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/resources/base/media/icon.png differ diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/resources/en_US/element/strarray.json b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/resources/en_US/element/strarray.json new file mode 100644 index 0000000000000000000000000000000000000000..4ddb1c98ead22be49b5cd5a0fb9d2d52816ef73d --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/resources/en_US/element/strarray.json @@ -0,0 +1,74 @@ +{ + "strarray": [ + { + "name": "power_operations", + "value": [ + { + "value": "Check whether the screen is on or off" + }, + { + "value": "Get Power Mode" + } + ] + }, + { + "name": "running_lock_operations", + "value": [ + { + "value": "Supported runningLock" + }, + { + "value": "Set Screen Sleep Lock" + }, + { + "value": "Set Proximity Screen Control Lock" + } + ] + }, + { + "name": "power_mode", + "value": [ + { + "value": "normal" + }, + { + "value": "power save" + }, + { + "value": "performance" + }, + { + "value": "extreme power save" + } + ] + }, + { + "name": "settings_operations", + "value": [ + { + "value": "Get Settings Uri" + }, + { + "value": "Enable Airplane Mode" + }, + { + "value": "Can Show Floating" + } + ] + }, + { + "name": "stationary_operations", + "value": [ + { + "value": "Subscribe to Device Status Service" + }, + { + "value": "Unsubscribe from Device Status Service" + }, + { + "value": "Query device status" + } + ] + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/resources/en_US/element/string.json b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/resources/en_US/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..3003ed8526f4394583095946d5cdba01d3472701 --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/resources/en_US/element/string.json @@ -0,0 +1,124 @@ +{ + "string": [ + { + "name": "page_show", + "value": "page from npm package" + }, + { + "name": "no_battery", + "value": "The battery is supported or present" + }, + { + "name": "battery_charge_percent", + "value": "Battery charge percent" + }, + { + "name": "charging_status", + "value": "ChargingStatus" + }, + { + "name": "usb_listener", + "value": "USB Listener" + }, + { + "name": "device_list", + "value": "device list" + }, + { + "name": "confirm", + "value": "confirm" + }, + { + "name": "bus_address", + "value": "bus address" + }, + { + "name": "device_address", + "value": "device address" + }, + { + "name": "serial", + "value": "serial" + }, + { + "name": "device_name", + "value": "device name" + }, + { + "name": "manufacturer_name", + "value": "manufacturer name" + }, + { + "name": "product_name", + "value": "product name" + }, + { + "name": "version", + "value": "version" + }, + { + "name": "vendor_id", + "value": "vendor id" + }, + { + "name": "product_id", + "value": "product id" + }, + { + "name": "device_class", + "value": "device class" + }, + { + "name": "toast_start_listening", + "value": "Start listening" + }, + { + "name": "toast_inserted", + "value": "USB inserted" + }, + { + "name": "toast_removed", + "value": "Device removed" + }, + { + "name": "toast_listening_cancel", + "value": "Cancel listening" + }, + { + "name": "cancel", + "value": "Cancel" + }, + { + "name": "screen_state", + "value": "The screen state:" + }, + { + "name": "power_mode", + "value": "current power mode:" + }, + { + "name": "running_lock_proximity_screen_control", + "value": "proximity screen control:" + }, + { + "name": "running_lock_background", + "value": "Background:" + }, + { + "name": "airplane_status", + "value": "Airplane status:" + }, + { + "name": "thermal_warning", + "value": "The current device battery temperature is too high!" + }, + { + "name": "no_usb_device", + "value": "No USB Device" + }, + { + "name": "show_floating_status", + "value": "show floating status:" + } + ] +} diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/resources/zh_CN/element/strarray.json b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/resources/zh_CN/element/strarray.json new file mode 100644 index 0000000000000000000000000000000000000000..0168e302df45231af92c9d5c7b58c141303c8742 --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/resources/zh_CN/element/strarray.json @@ -0,0 +1,74 @@ +{ + "strarray": [ + { + "name": "power_operations", + "value": [ + { + "value": "检测亮灭屏状态" + }, + { + "value": "获取电源模式" + } + ] + }, + { + "name": "running_lock_operations", + "value": [ + { + "value": "设备支持的休眠锁类型" + }, + { + "value": "设置阻止系统休眠的锁" + }, + { + "value": "设置是否通过接近或者远离状态来控制亮灭屏的锁" + } + ] + }, + { + "name": "power_mode", + "value": [ + { + "value": "标准模式" + }, + { + "value": "省电模式" + }, + { + "value": "性能模式" + }, + { + "value": "超级省电模式" + } + ] + }, + { + "name": "settings_operations", + "value": [ + { + "value": "获取数据项uri" + }, + { + "value": "开关飞行模式" + }, + { + "value": "检查应用是否能以悬浮窗形式显示" + } + ] + }, + { + "name": "stationary_operations", + "value": [ + { + "value": "订阅设备状态服务" + }, + { + "value": "取消订阅设备状态服务" + }, + { + "value": "查询设备状态" + } + ] + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/resources/zh_CN/element/string.json b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/resources/zh_CN/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..f7238657f54b230d0bd0d8f4106e5a1cd7494d8b --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/capabilities/src/main/resources/zh_CN/element/string.json @@ -0,0 +1,124 @@ +{ + "string": [ + { + "name": "page_show", + "value": "page from npm package" + }, + { + "name": "no_battery", + "value": "当前设备不支持电池或电池不在位" + }, + { + "name": "battery_charge_percent", + "value": "电池电量百分比" + }, + { + "name": "charging_status", + "value": "充电状态" + }, + { + "name": "usb_listener", + "value": "USB监听" + }, + { + "name": "device_list", + "value": "设备列表" + }, + { + "name": "confirm", + "value": "确定" + }, + { + "name": "bus_address", + "value": "总线地址" + }, + { + "name": "device_address", + "value": "设备地址" + }, + { + "name": "serial", + "value": "序列号" + }, + { + "name": "device_name", + "value": "设备名字" + }, + { + "name": "manufacturer_name", + "value": "产商信息" + }, + { + "name": "product_name", + "value": "产品信息" + }, + { + "name": "version", + "value": "版本" + }, + { + "name": "vendor_id", + "value": "厂商ID" + }, + { + "name": "product_id", + "value": "产品ID" + }, + { + "name": "device_class", + "value": "设备类" + }, + { + "name": "toast_start_listening", + "value": "开始监听" + }, + { + "name": "toast_inserted", + "value": "USB已插入" + }, + { + "name": "toast_removed", + "value": "设备已移除" + }, + { + "name": "toast_listening_cancel", + "value": "取消监听" + }, + { + "name": "cancel", + "value": "取消" + }, + { + "name": "screen_state", + "value": "亮灭屏状态:" + }, + { + "name": "power_mode", + "value": "当前电源模式:" + }, + { + "name": "running_lock_background", + "value": "阻止系统休眠的锁:" + }, + { + "name": "running_lock_proximity_screen_control", + "value": "通过接近或者远离状态来控制亮灭屏的锁:" + }, + { + "name": "airplane_status", + "value": "飞行模式状态:" + }, + { + "name": "thermal_warning", + "value": "当前设备电池温度过高!" + }, + { + "name": "no_usb_device", + "value": "暂无USB设备" + }, + { + "name": "show_floating_status", + "value": "应用是否能以悬浮窗形式显示:" + } + ] +} diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/menuitems/.gitignore b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/menuitems/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..e751b1182973906a77849f215a940ea5359328d4 --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/menuitems/.gitignore @@ -0,0 +1,4 @@ +/oh_modules +/.preview +/build +/.cxx \ No newline at end of file diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/menuitems/build-profile.json5 b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/menuitems/build-profile.json5 new file mode 100644 index 0000000000000000000000000000000000000000..12fe2d844bdb69584fd05ebaa3e1cb197a25c3f1 --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/menuitems/build-profile.json5 @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "apiType": "stageMode", + "buildOption": { + }, + "targets": [ + { + "name": "default" + } + ] +} diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/menuitems/hvigorfile.ts b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/menuitems/hvigorfile.ts new file mode 100644 index 0000000000000000000000000000000000000000..6522df25794b80abde0b0aa8654f3970c4a35cfa --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/menuitems/hvigorfile.ts @@ -0,0 +1,16 @@ +/** + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Script for compiling build behavior. It is built in the build plug-in and cannot be modified currently. +export { harTasks } from '@ohos/hvigor-ohos-plugin'; \ No newline at end of file diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/menuitems/index.ets b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/menuitems/index.ets new file mode 100644 index 0000000000000000000000000000000000000000..0e02ba6f8124992edcf5a89f14484737a6944537 --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/menuitems/index.ets @@ -0,0 +1,16 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export { MenuList } from './src/main/ets/menulist/MenuList'; diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/menuitems/oh-package.json5 b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/menuitems/oh-package.json5 new file mode 100644 index 0000000000000000000000000000000000000000..c87ef18f196779f877dc8d89a9b495cade9e496e --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/menuitems/oh-package.json5 @@ -0,0 +1,12 @@ +{ + "license": "ISC", + "types": "", + "devDependencies": {}, + "name": "menuitems", + "description": "a npm package which contains arkUI2.0 page", + "main": "index.ets", + "version": "1.0.0", + "dependencies": { + "@ohos/common": "file:../../common" + } +} diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/menuitems/src/main/ets/components/ItemGroup.ets b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/menuitems/src/main/ets/components/ItemGroup.ets new file mode 100644 index 0000000000000000000000000000000000000000..8c0a6ba93d64782516c5044ce1c1c887cef89bd2 --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/menuitems/src/main/ets/components/ItemGroup.ets @@ -0,0 +1,29 @@ +/** + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +@Component +export struct ItemGroup { + @BuilderParam noParam: () => void; + + build() { + Column() { + this.noParam(); + } + .width('100%') + .borderRadius(20) + .backgroundColor($r('sys.color.ohos_id_color_foreground_contrary')) + .margin({ bottom: 12 }) + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/menuitems/src/main/ets/components/MainItem.ets b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/menuitems/src/main/ets/components/MainItem.ets new file mode 100644 index 0000000000000000000000000000000000000000..01d390439d7da6ea39ce9d6e341c25e972fabdc9 --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/menuitems/src/main/ets/components/MainItem.ets @@ -0,0 +1,52 @@ +/** + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +@Component +export struct MainItem { + private title?: string | Resource; + @LocalStorageProp('isSplitMode') isSplitMode: boolean = false; + @State isTouched: boolean = false; + + build() { + Row() { + Text(this.title) + .fontSize(20) + .lineHeight(22) + .fontWeight(FontWeight.Medium) + .fontColor($r("app.color.list_title")) + .align(Alignment.Start) + + Blank() + + Image($r('app.media.ic_arrow')) + .width(16) + .height(32) + .fillColor($r('sys.color.ohos_id_color_fourth')) + } + .alignItems(VerticalAlign.Center) + .width('100%') + .height(62) + .borderRadius(20) + .padding({ left: 16, right: 16 }) + .backgroundColor(this.isTouched ? $r('app.color.itemActivated') : $r('app.color.itemInactivated')) + .onTouch((event: TouchEvent) => { + if (event.type === TouchType.Down) { + this.isTouched = true; + } else if (event.type === TouchType.Up) { + this.isTouched = false; + } + }) + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/menuitems/src/main/ets/components/MenuNavRouter.ets b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/menuitems/src/main/ets/components/MenuNavRouter.ets new file mode 100644 index 0000000000000000000000000000000000000000..832165997592414ec5c3d694c450c034f3a6acd2 --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/menuitems/src/main/ets/components/MenuNavRouter.ets @@ -0,0 +1,65 @@ +/** + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +import { ItemGroup } from './ItemGroup'; +import { logger } from '@ohos/common'; +import { MainItem } from './MainItem'; + +const TAG: string = 'MenuNavRouter'; + +@Component +export struct MenuNavRouter { + @StorageLink('selectedLabel') selectedLabel: string = ''; + @BuilderParam navDestination: () => void; + private childList: Array = []; + + @Builder CustomDivider() { + Divider() + .strokeWidth('1px') + .color($r("app.color.divider")) + .margin({ left: 16, right: 16 }) + } + + build() { + ItemGroup() { + Column() { + ForEach(this.childList, (item: string, index: number) => { + if (index > 0) { + this.CustomDivider(); + } + NavRouter() { + MainItem({ + title: item + }) + NavDestination() { + Column() { + this.navDestination(); + } + } + .title(item) + .backgroundColor($r('sys.color.ohos_id_color_sub_background')) + } + .onStateChange((isActivated: boolean) => { + if (isActivated) { + this.selectedLabel = item; + logger.info(TAG, `NavRouter isActivated= ${isActivated}, selectedLabel=${item}`); + } + }) + }, (item: string) => JSON.stringify(item)) + } + } + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/menuitems/src/main/ets/menulist/MenuList.ets b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/menuitems/src/main/ets/menulist/MenuList.ets new file mode 100644 index 0000000000000000000000000000000000000000..e0a6982e5168dd6730fb1b29dce3deac378343d6 --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/menuitems/src/main/ets/menulist/MenuList.ets @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { getStringArray } from '@ohos/common'; +import { MenuNavRouter } from '../components/MenuNavRouter'; + +@Component +export struct MenuList { + @State menuListData: Array = []; + @BuilderParam childNavDestination: () => void; + private menuList?: Resource = undefined; + + build() { + List() { + ListItem() { + if (this.menuListData.length > 0) { + MenuNavRouter({ childList: this.menuListData }) { + this.childNavDestination(); + } + } + } + } + .borderRadius(20) + .width('100%') + .scrollBar(BarState.Off) + .backgroundColor($r('sys.color.ohos_id_color_sub_background')) + } + + aboutToAppear() { + this.getData(); + } + + getData = async () => { + if (this.menuList) { + this.menuListData = await getStringArray(this.menuList); + } + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/menuitems/src/main/module.json5 b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/menuitems/src/main/module.json5 new file mode 100644 index 0000000000000000000000000000000000000000..d5bce3912c27bc0bb32977eb83fc2493c46e5af3 --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/menuitems/src/main/module.json5 @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "module": { + "name": "menuitems", + "type": "har", + "deviceTypes": [ + "default", + "tablet" + ] + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/menuitems/src/main/resources/base/element/color.json b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/menuitems/src/main/resources/base/element/color.json new file mode 100644 index 0000000000000000000000000000000000000000..d652db2230e76039c0262d6880a291d1a8db7c93 --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/menuitems/src/main/resources/base/element/color.json @@ -0,0 +1,20 @@ +{ + "color": [ + { + "name": "white", + "value": "#FFFFFF" + }, + { + "name": "itemActivated", + "value": "#335291FF" + }, + { + "name": "itemInactivated", + "value": "#FFFFFF" + }, + { + "name": "level_title", + "value": "#77000000" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/menuitems/src/main/resources/base/element/string.json b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/menuitems/src/main/resources/base/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..1e76de0c66777cfe83568615c5c2e68c61d23fed --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/menuitems/src/main/resources/base/element/string.json @@ -0,0 +1,8 @@ +{ + "string": [ + { + "name": "page_show", + "value": "page from npm package" + } + ] +} diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/menuitems/src/main/resources/base/media/ic_arrow.svg b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/menuitems/src/main/resources/base/media/ic_arrow.svg new file mode 100644 index 0000000000000000000000000000000000000000..16246dd69c9d648803cc573e60252694661c868a --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/menuitems/src/main/resources/base/media/ic_arrow.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/menuitems/src/main/resources/en_US/element/string.json b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/menuitems/src/main/resources/en_US/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..1e76de0c66777cfe83568615c5c2e68c61d23fed --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/menuitems/src/main/resources/en_US/element/string.json @@ -0,0 +1,8 @@ +{ + "string": [ + { + "name": "page_show", + "value": "page from npm package" + } + ] +} diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/menuitems/src/main/resources/zh_CN/element/string.json b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/menuitems/src/main/resources/zh_CN/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..1e76de0c66777cfe83568615c5c2e68c61d23fed --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/feature/menuitems/src/main/resources/zh_CN/element/string.json @@ -0,0 +1,8 @@ +{ + "string": [ + { + "name": "page_show", + "value": "page from npm package" + } + ] +} diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/hvigor/hvigor-config.json5 b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/hvigor/hvigor-config.json5 new file mode 100644 index 0000000000000000000000000000000000000000..31605fe9da39e9459a19efce32c5505c7b2bd83e --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/hvigor/hvigor-config.json5 @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +{ + "hvigorVersion": "3.0.9-s", + "dependencies": { + "@ohos/hvigor-ohos-plugin": "3.0.9-s" + }, + "execution": { + // "daemon": true, /* Enable daemon compilation. Default: true */ + // "incremental": true, /* Enable incremental compilation. Default: true */ + // "parallel": true, /* Enable parallel compilation. Default: true */ + // "typeCheck": false, /* Enable typeCheck. Default: false */ + }, + "logging": { + // "level": "info" /* Define the log level. Value: [ "debug" | "info" | "warn" | "error" ]. Default: "info" */ + }, + "debugging": { + // "stacktrace": false /* Disable stacktrace compilation. Default: false */ + } +} diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/hvigor/hvigor-wrapper.js b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/hvigor/hvigor-wrapper.js new file mode 100644 index 0000000000000000000000000000000000000000..994f22987bd0739b9faa07c966b066c2d9218602 --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/hvigor/hvigor-wrapper.js @@ -0,0 +1,2 @@ +"use strict";var e=require("fs"),t=require("path"),n=require("os"),r=require("crypto"),u=require("child_process"),o=require("constants"),i=require("stream"),s=require("util"),c=require("assert"),a=require("tty"),l=require("zlib"),f=require("net");function d(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var D=d(e),p=d(t),E=d(n),m=d(r),h=d(u),y=d(o),C=d(i),F=d(s),g=d(c),A=d(a),v=d(l),S=d(f),w="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},O={},b={},_={},B=w&&w.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(_,"__esModule",{value:!0}),_.isMac=_.isLinux=_.isWindows=void 0;const P=B(E.default),k="Windows_NT",x="Linux",N="Darwin";_.isWindows=function(){return P.default.type()===k},_.isLinux=function(){return P.default.type()===x},_.isMac=function(){return P.default.type()===N};var I={},T=w&&w.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var u=Object.getOwnPropertyDescriptor(t,n);u&&!("get"in u?!t.__esModule:u.writable||u.configurable)||(u={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,u)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),R=w&&w.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),M=w&&w.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&T(t,e,n);return R(t,e),t};Object.defineProperty(I,"__esModule",{value:!0}),I.hash=void 0;const L=M(m.default);I.hash=function(e,t="md5"){return L.createHash(t).update(e,"utf-8").digest("hex")},function(e){var t=w&&w.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var u=Object.getOwnPropertyDescriptor(t,n);u&&!("get"in u?!t.__esModule:u.writable||u.configurable)||(u={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,u)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),n=w&&w.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),r=w&&w.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(null!=e)for(var u in e)"default"!==u&&Object.prototype.hasOwnProperty.call(e,u)&&t(r,e,u);return n(r,e),r};Object.defineProperty(e,"__esModule",{value:!0}),e.HVIGOR_BOOT_JS_FILE_PATH=e.HVIGOR_PROJECT_DEPENDENCY_PACKAGE_JSON_PATH=e.HVIGOR_PROJECT_DEPENDENCIES_HOME=e.HVIGOR_PROJECT_WRAPPER_HOME=e.HVIGOR_PROJECT_NAME=e.HVIGOR_PROJECT_ROOT_DIR=e.HVIGOR_PROJECT_CACHES_HOME=e.HVIGOR_PNPM_STORE_PATH=e.HVIGOR_WRAPPER_PNPM_SCRIPT_PATH=e.HVIGOR_WRAPPER_TOOLS_HOME=e.HVIGOR_USER_HOME=e.DEFAULT_PACKAGE_JSON=e.DEFAULT_HVIGOR_CONFIG_JSON_FILE_NAME=e.PNPM=e.HVIGOR=e.NPM_TOOL=e.PNPM_TOOL=e.HVIGOR_ENGINE_PACKAGE_NAME=void 0;const u=r(p.default),o=r(E.default),i=_,s=I;e.HVIGOR_ENGINE_PACKAGE_NAME="@ohos/hvigor",e.PNPM_TOOL=(0,i.isWindows)()?"pnpm.cmd":"pnpm",e.NPM_TOOL=(0,i.isWindows)()?"npm.cmd":"npm",e.HVIGOR="hvigor",e.PNPM="pnpm",e.DEFAULT_HVIGOR_CONFIG_JSON_FILE_NAME="hvigor-config.json5",e.DEFAULT_PACKAGE_JSON="package.json",e.HVIGOR_USER_HOME=u.resolve(o.homedir(),".hvigor"),e.HVIGOR_WRAPPER_TOOLS_HOME=u.resolve(e.HVIGOR_USER_HOME,"wrapper","tools"),e.HVIGOR_WRAPPER_PNPM_SCRIPT_PATH=u.resolve(e.HVIGOR_WRAPPER_TOOLS_HOME,"node_modules",".bin",e.PNPM_TOOL),e.HVIGOR_PNPM_STORE_PATH=u.resolve(e.HVIGOR_USER_HOME,"caches"),e.HVIGOR_PROJECT_CACHES_HOME=u.resolve(e.HVIGOR_USER_HOME,"project_caches"),e.HVIGOR_PROJECT_ROOT_DIR=process.cwd(),e.HVIGOR_PROJECT_NAME=u.basename((0,s.hash)(e.HVIGOR_PROJECT_ROOT_DIR)),e.HVIGOR_PROJECT_WRAPPER_HOME=u.resolve(e.HVIGOR_PROJECT_ROOT_DIR,e.HVIGOR),e.HVIGOR_PROJECT_DEPENDENCIES_HOME=u.resolve(e.HVIGOR_PROJECT_CACHES_HOME,e.HVIGOR_PROJECT_NAME,"workspace"),e.HVIGOR_PROJECT_DEPENDENCY_PACKAGE_JSON_PATH=u.resolve(e.HVIGOR_PROJECT_DEPENDENCIES_HOME,e.DEFAULT_PACKAGE_JSON),e.HVIGOR_BOOT_JS_FILE_PATH=u.resolve(e.HVIGOR_PROJECT_DEPENDENCIES_HOME,"node_modules","@ohos","hvigor","bin","hvigor.js")}(b);var j={},$={};Object.defineProperty($,"__esModule",{value:!0}),$.logInfoPrintConsole=$.logErrorAndExit=void 0,$.logErrorAndExit=function(e){e instanceof Error?console.error(e.message):console.error(e),process.exit(-1)},$.logInfoPrintConsole=function(e){console.log(e)};var H=w&&w.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var u=Object.getOwnPropertyDescriptor(t,n);u&&!("get"in u?!t.__esModule:u.writable||u.configurable)||(u={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,u)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),J=w&&w.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),G=w&&w.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&H(t,e,n);return J(t,e),t},V=w&&w.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(j,"__esModule",{value:!0}),j.isFileExists=j.offlinePluginConversion=j.executeCommand=j.getNpmPath=j.hasNpmPackInPaths=void 0;const U=h.default,W=G(p.default),z=b,K=$,q=V(D.default);j.hasNpmPackInPaths=function(e,t){try{return require.resolve(e,{paths:[...t]}),!0}catch(e){return!1}},j.getNpmPath=function(){const e=process.execPath;return W.join(W.dirname(e),z.NPM_TOOL)},j.executeCommand=function(e,t,n){0!==(0,U.spawnSync)(e,t,n).status&&(0,K.logErrorAndExit)(`Error: ${e} ${t} execute failed.See above for details.`)},j.offlinePluginConversion=function(e,t){return t.startsWith("file:")||t.endsWith(".tgz")?W.resolve(e,z.HVIGOR,t.replace("file:","")):t},j.isFileExists=function(e){return q.default.existsSync(e)&&q.default.statSync(e).isFile()},function(e){var t=w&&w.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var u=Object.getOwnPropertyDescriptor(t,n);u&&!("get"in u?!t.__esModule:u.writable||u.configurable)||(u={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,u)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),n=w&&w.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),r=w&&w.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(null!=e)for(var u in e)"default"!==u&&Object.prototype.hasOwnProperty.call(e,u)&&t(r,e,u);return n(r,e),r},u=w&&w.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,"__esModule",{value:!0}),e.executeInstallPnpm=e.isPnpmAvailable=e.environmentHandler=e.checkNpmConifg=e.PNPM_VERSION=void 0;const o=r(D.default),i=b,s=j,c=r(p.default),a=$,l=h.default,f=u(E.default);e.PNPM_VERSION="7.30.0",e.checkNpmConifg=function(){const e=c.resolve(i.HVIGOR_PROJECT_ROOT_DIR,".npmrc"),t=c.resolve(f.default.homedir(),".npmrc");if((0,s.isFileExists)(e)||(0,s.isFileExists)(t))return;const n=(0,s.getNpmPath)(),r=(0,l.spawnSync)(n,["config","get","prefix"],{cwd:i.HVIGOR_PROJECT_ROOT_DIR});if(0!==r.status||!r.stdout)return void(0,a.logErrorAndExit)("Error: The hvigor depends on the npmrc file. Configure the npmrc file first.");const u=c.resolve(`${r.stdout}`.replace(/[\r\n]/gi,""),".npmrc");(0,s.isFileExists)(u)||(0,a.logErrorAndExit)("Error: The hvigor depends on the npmrc file. Configure the npmrc file first.")},e.environmentHandler=function(){process.env["npm_config_update-notifier"]="false"},e.isPnpmAvailable=function(){return!!o.existsSync(i.HVIGOR_WRAPPER_PNPM_SCRIPT_PATH)&&(0,s.hasNpmPackInPaths)("pnpm",[i.HVIGOR_WRAPPER_TOOLS_HOME])},e.executeInstallPnpm=function(){(0,a.logInfoPrintConsole)(`Installing pnpm@${e.PNPM_VERSION}...`);const t=(0,s.getNpmPath)();!function(){const t=c.resolve(i.HVIGOR_WRAPPER_TOOLS_HOME,i.DEFAULT_PACKAGE_JSON);try{o.existsSync(i.HVIGOR_WRAPPER_TOOLS_HOME)||o.mkdirSync(i.HVIGOR_WRAPPER_TOOLS_HOME,{recursive:!0});const n={dependencies:{}};n.dependencies[i.PNPM]=e.PNPM_VERSION,o.writeFileSync(t,JSON.stringify(n))}catch(e){(0,a.logErrorAndExit)(`Error: EPERM: operation not permitted,create ${t} failed.`)}}(),(0,s.executeCommand)(t,["install","pnpm"],{cwd:i.HVIGOR_WRAPPER_TOOLS_HOME,stdio:["inherit","inherit","inherit"],env:process.env}),(0,a.logInfoPrintConsole)("Pnpm install success.")}}(O);var Y={},X={},Z={},Q={};Object.defineProperty(Q,"__esModule",{value:!0}),Q.Unicode=void 0;class ee{}Q.Unicode=ee,ee.Space_Separator=/[\u1680\u2000-\u200A\u202F\u205F\u3000]/,ee.ID_Start=/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/,ee.ID_Continue=/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDE00-\uDE3E\uDE47\uDE50-\uDE83\uDE86-\uDE99\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/,Object.defineProperty(Z,"__esModule",{value:!0}),Z.JudgeUtil=void 0;const te=Q;Z.JudgeUtil=class{static isIgnoreChar(e){return"string"==typeof e&&("\t"===e||"\v"===e||"\f"===e||" "===e||" "===e||"\ufeff"===e||"\n"===e||"\r"===e||"\u2028"===e||"\u2029"===e)}static isSpaceSeparator(e){return"string"==typeof e&&te.Unicode.Space_Separator.test(e)}static isIdStartChar(e){return"string"==typeof e&&(e>="a"&&e<="z"||e>="A"&&e<="Z"||"$"===e||"_"===e||te.Unicode.ID_Start.test(e))}static isIdContinueChar(e){return"string"==typeof e&&(e>="a"&&e<="z"||e>="A"&&e<="Z"||e>="0"&&e<="9"||"$"===e||"_"===e||"‌"===e||"‍"===e||te.Unicode.ID_Continue.test(e))}static isDigitWithoutZero(e){return/[1-9]/.test(e)}static isDigit(e){return"string"==typeof e&&/[0-9]/.test(e)}static isHexDigit(e){return"string"==typeof e&&/[0-9A-Fa-f]/.test(e)}};var ne={},re={fromCallback:function(e){return Object.defineProperty((function(...t){if("function"!=typeof t[t.length-1])return new Promise(((n,r)=>{e.call(this,...t,((e,t)=>null!=e?r(e):n(t)))}));e.apply(this,t)}),"name",{value:e.name})},fromPromise:function(e){return Object.defineProperty((function(...t){const n=t[t.length-1];if("function"!=typeof n)return e.apply(this,t);e.apply(this,t.slice(0,-1)).then((e=>n(null,e)),n)}),"name",{value:e.name})}},ue=y.default,oe=process.cwd,ie=null,se=process.env.GRACEFUL_FS_PLATFORM||process.platform;process.cwd=function(){return ie||(ie=oe.call(process)),ie};try{process.cwd()}catch(e){}if("function"==typeof process.chdir){var ce=process.chdir;process.chdir=function(e){ie=null,ce.call(process,e)},Object.setPrototypeOf&&Object.setPrototypeOf(process.chdir,ce)}var ae=function(e){ue.hasOwnProperty("O_SYMLINK")&&process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)&&function(e){e.lchmod=function(t,n,r){e.open(t,ue.O_WRONLY|ue.O_SYMLINK,n,(function(t,u){t?r&&r(t):e.fchmod(u,n,(function(t){e.close(u,(function(e){r&&r(t||e)}))}))}))},e.lchmodSync=function(t,n){var r,u=e.openSync(t,ue.O_WRONLY|ue.O_SYMLINK,n),o=!0;try{r=e.fchmodSync(u,n),o=!1}finally{if(o)try{e.closeSync(u)}catch(e){}else e.closeSync(u)}return r}}(e);e.lutimes||function(e){ue.hasOwnProperty("O_SYMLINK")&&e.futimes?(e.lutimes=function(t,n,r,u){e.open(t,ue.O_SYMLINK,(function(t,o){t?u&&u(t):e.futimes(o,n,r,(function(t){e.close(o,(function(e){u&&u(t||e)}))}))}))},e.lutimesSync=function(t,n,r){var u,o=e.openSync(t,ue.O_SYMLINK),i=!0;try{u=e.futimesSync(o,n,r),i=!1}finally{if(i)try{e.closeSync(o)}catch(e){}else e.closeSync(o)}return u}):e.futimes&&(e.lutimes=function(e,t,n,r){r&&process.nextTick(r)},e.lutimesSync=function(){})}(e);e.chown=r(e.chown),e.fchown=r(e.fchown),e.lchown=r(e.lchown),e.chmod=t(e.chmod),e.fchmod=t(e.fchmod),e.lchmod=t(e.lchmod),e.chownSync=u(e.chownSync),e.fchownSync=u(e.fchownSync),e.lchownSync=u(e.lchownSync),e.chmodSync=n(e.chmodSync),e.fchmodSync=n(e.fchmodSync),e.lchmodSync=n(e.lchmodSync),e.stat=o(e.stat),e.fstat=o(e.fstat),e.lstat=o(e.lstat),e.statSync=i(e.statSync),e.fstatSync=i(e.fstatSync),e.lstatSync=i(e.lstatSync),e.chmod&&!e.lchmod&&(e.lchmod=function(e,t,n){n&&process.nextTick(n)},e.lchmodSync=function(){});e.chown&&!e.lchown&&(e.lchown=function(e,t,n,r){r&&process.nextTick(r)},e.lchownSync=function(){});"win32"===se&&(e.rename="function"!=typeof e.rename?e.rename:function(t){function n(n,r,u){var o=Date.now(),i=0;t(n,r,(function s(c){if(c&&("EACCES"===c.code||"EPERM"===c.code||"EBUSY"===c.code)&&Date.now()-o<6e4)return setTimeout((function(){e.stat(r,(function(e,o){e&&"ENOENT"===e.code?t(n,r,s):u(c)}))}),i),void(i<100&&(i+=10));u&&u(c)}))}return Object.setPrototypeOf&&Object.setPrototypeOf(n,t),n}(e.rename));function t(t){return t?function(n,r,u){return t.call(e,n,r,(function(e){s(e)&&(e=null),u&&u.apply(this,arguments)}))}:t}function n(t){return t?function(n,r){try{return t.call(e,n,r)}catch(e){if(!s(e))throw e}}:t}function r(t){return t?function(n,r,u,o){return t.call(e,n,r,u,(function(e){s(e)&&(e=null),o&&o.apply(this,arguments)}))}:t}function u(t){return t?function(n,r,u){try{return t.call(e,n,r,u)}catch(e){if(!s(e))throw e}}:t}function o(t){return t?function(n,r,u){function o(e,t){t&&(t.uid<0&&(t.uid+=4294967296),t.gid<0&&(t.gid+=4294967296)),u&&u.apply(this,arguments)}return"function"==typeof r&&(u=r,r=null),r?t.call(e,n,r,o):t.call(e,n,o)}:t}function i(t){return t?function(n,r){var u=r?t.call(e,n,r):t.call(e,n);return u&&(u.uid<0&&(u.uid+=4294967296),u.gid<0&&(u.gid+=4294967296)),u}:t}function s(e){return!e||("ENOSYS"===e.code||!(process.getuid&&0===process.getuid()||"EINVAL"!==e.code&&"EPERM"!==e.code))}e.read="function"!=typeof e.read?e.read:function(t){function n(n,r,u,o,i,s){var c;if(s&&"function"==typeof s){var a=0;c=function(l,f,d){if(l&&"EAGAIN"===l.code&&a<10)return a++,t.call(e,n,r,u,o,i,c);s.apply(this,arguments)}}return t.call(e,n,r,u,o,i,c)}return Object.setPrototypeOf&&Object.setPrototypeOf(n,t),n}(e.read),e.readSync="function"!=typeof e.readSync?e.readSync:(c=e.readSync,function(t,n,r,u,o){for(var i=0;;)try{return c.call(e,t,n,r,u,o)}catch(e){if("EAGAIN"===e.code&&i<10){i++;continue}throw e}});var c};var le=C.default.Stream,fe=function(e){return{ReadStream:function t(n,r){if(!(this instanceof t))return new t(n,r);le.call(this);var u=this;this.path=n,this.fd=null,this.readable=!0,this.paused=!1,this.flags="r",this.mode=438,this.bufferSize=65536,r=r||{};for(var o=Object.keys(r),i=0,s=o.length;ithis.end)throw new Error("start must be <= end");this.pos=this.start}if(null!==this.fd)return void process.nextTick((function(){u._read()}));e.open(this.path,this.flags,this.mode,(function(e,t){if(e)return u.emit("error",e),void(u.readable=!1);u.fd=t,u.emit("open",t),u._read()}))},WriteStream:function t(n,r){if(!(this instanceof t))return new t(n,r);le.call(this),this.path=n,this.fd=null,this.writable=!0,this.flags="w",this.encoding="binary",this.mode=438,this.bytesWritten=0,r=r||{};for(var u=Object.keys(r),o=0,i=u.length;o= zero");this.pos=this.start}this.busy=!1,this._queue=[],null===this.fd&&(this._open=e.open,this._queue.push([this._open,this.path,this.flags,this.mode,void 0]),this.flush())}}};var de=function(e){if(null===e||"object"!=typeof e)return e;if(e instanceof Object)var t={__proto__:De(e)};else t=Object.create(null);return Object.getOwnPropertyNames(e).forEach((function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(e,n))})),t},De=Object.getPrototypeOf||function(e){return e.__proto__};var pe,Ee,me=D.default,he=ae,ye=fe,Ce=de,Fe=F.default;function ge(e,t){Object.defineProperty(e,pe,{get:function(){return t}})}"function"==typeof Symbol&&"function"==typeof Symbol.for?(pe=Symbol.for("graceful-fs.queue"),Ee=Symbol.for("graceful-fs.previous")):(pe="___graceful-fs.queue",Ee="___graceful-fs.previous");var Ae=function(){};if(Fe.debuglog?Ae=Fe.debuglog("gfs4"):/\bgfs4\b/i.test(process.env.NODE_DEBUG||"")&&(Ae=function(){var e=Fe.format.apply(Fe,arguments);e="GFS4: "+e.split(/\n/).join("\nGFS4: "),console.error(e)}),!me[pe]){var ve=w[pe]||[];ge(me,ve),me.close=function(e){function t(t,n){return e.call(me,t,(function(e){e||_e(),"function"==typeof n&&n.apply(this,arguments)}))}return Object.defineProperty(t,Ee,{value:e}),t}(me.close),me.closeSync=function(e){function t(t){e.apply(me,arguments),_e()}return Object.defineProperty(t,Ee,{value:e}),t}(me.closeSync),/\bgfs4\b/i.test(process.env.NODE_DEBUG||"")&&process.on("exit",(function(){Ae(me[pe]),g.default.equal(me[pe].length,0)}))}w[pe]||ge(w,me[pe]);var Se,we=Oe(Ce(me));function Oe(e){he(e),e.gracefulify=Oe,e.createReadStream=function(t,n){return new e.ReadStream(t,n)},e.createWriteStream=function(t,n){return new e.WriteStream(t,n)};var t=e.readFile;e.readFile=function(e,n,r){"function"==typeof n&&(r=n,n=null);return function e(n,r,u,o){return t(n,r,(function(t){!t||"EMFILE"!==t.code&&"ENFILE"!==t.code?"function"==typeof u&&u.apply(this,arguments):be([e,[n,r,u],t,o||Date.now(),Date.now()])}))}(e,n,r)};var n=e.writeFile;e.writeFile=function(e,t,r,u){"function"==typeof r&&(u=r,r=null);return function e(t,r,u,o,i){return n(t,r,u,(function(n){!n||"EMFILE"!==n.code&&"ENFILE"!==n.code?"function"==typeof o&&o.apply(this,arguments):be([e,[t,r,u,o],n,i||Date.now(),Date.now()])}))}(e,t,r,u)};var r=e.appendFile;r&&(e.appendFile=function(e,t,n,u){"function"==typeof n&&(u=n,n=null);return function e(t,n,u,o,i){return r(t,n,u,(function(r){!r||"EMFILE"!==r.code&&"ENFILE"!==r.code?"function"==typeof o&&o.apply(this,arguments):be([e,[t,n,u,o],r,i||Date.now(),Date.now()])}))}(e,t,n,u)});var u=e.copyFile;u&&(e.copyFile=function(e,t,n,r){"function"==typeof n&&(r=n,n=0);return function e(t,n,r,o,i){return u(t,n,r,(function(u){!u||"EMFILE"!==u.code&&"ENFILE"!==u.code?"function"==typeof o&&o.apply(this,arguments):be([e,[t,n,r,o],u,i||Date.now(),Date.now()])}))}(e,t,n,r)});var o=e.readdir;e.readdir=function(e,t,n){"function"==typeof t&&(n=t,t=null);var r=i.test(process.version)?function(e,t,n,r){return o(e,u(e,t,n,r))}:function(e,t,n,r){return o(e,t,u(e,t,n,r))};return r(e,t,n);function u(e,t,n,u){return function(o,i){!o||"EMFILE"!==o.code&&"ENFILE"!==o.code?(i&&i.sort&&i.sort(),"function"==typeof n&&n.call(this,o,i)):be([r,[e,t,n],o,u||Date.now(),Date.now()])}}};var i=/^v[0-5]\./;if("v0.8"===process.version.substr(0,4)){var s=ye(e);d=s.ReadStream,D=s.WriteStream}var c=e.ReadStream;c&&(d.prototype=Object.create(c.prototype),d.prototype.open=function(){var e=this;E(e.path,e.flags,e.mode,(function(t,n){t?(e.autoClose&&e.destroy(),e.emit("error",t)):(e.fd=n,e.emit("open",n),e.read())}))});var a=e.WriteStream;a&&(D.prototype=Object.create(a.prototype),D.prototype.open=function(){var e=this;E(e.path,e.flags,e.mode,(function(t,n){t?(e.destroy(),e.emit("error",t)):(e.fd=n,e.emit("open",n))}))}),Object.defineProperty(e,"ReadStream",{get:function(){return d},set:function(e){d=e},enumerable:!0,configurable:!0}),Object.defineProperty(e,"WriteStream",{get:function(){return D},set:function(e){D=e},enumerable:!0,configurable:!0});var l=d;Object.defineProperty(e,"FileReadStream",{get:function(){return l},set:function(e){l=e},enumerable:!0,configurable:!0});var f=D;function d(e,t){return this instanceof d?(c.apply(this,arguments),this):d.apply(Object.create(d.prototype),arguments)}function D(e,t){return this instanceof D?(a.apply(this,arguments),this):D.apply(Object.create(D.prototype),arguments)}Object.defineProperty(e,"FileWriteStream",{get:function(){return f},set:function(e){f=e},enumerable:!0,configurable:!0});var p=e.open;function E(e,t,n,r){return"function"==typeof n&&(r=n,n=null),function e(t,n,r,u,o){return p(t,n,r,(function(i,s){!i||"EMFILE"!==i.code&&"ENFILE"!==i.code?"function"==typeof u&&u.apply(this,arguments):be([e,[t,n,r,u],i,o||Date.now(),Date.now()])}))}(e,t,n,r)}return e.open=E,e}function be(e){Ae("ENQUEUE",e[0].name,e[1]),me[pe].push(e),Be()}function _e(){for(var e=Date.now(),t=0;t2&&(me[pe][t][3]=e,me[pe][t][4]=e);Be()}function Be(){if(clearTimeout(Se),Se=void 0,0!==me[pe].length){var e=me[pe].shift(),t=e[0],n=e[1],r=e[2],u=e[3],o=e[4];if(void 0===u)Ae("RETRY",t.name,n),t.apply(null,n);else if(Date.now()-u>=6e4){Ae("TIMEOUT",t.name,n);var i=n.pop();"function"==typeof i&&i.call(null,r)}else{var s=Date.now()-o,c=Math.max(o-u,1);s>=Math.min(1.2*c,100)?(Ae("RETRY",t.name,n),t.apply(null,n.concat([u]))):me[pe].push(e)}void 0===Se&&(Se=setTimeout(Be,0))}}process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH&&!me.__patched&&(we=Oe(me),me.__patched=!0),function(e){const t=re.fromCallback,n=we,r=["access","appendFile","chmod","chown","close","copyFile","fchmod","fchown","fdatasync","fstat","fsync","ftruncate","futimes","lchmod","lchown","link","lstat","mkdir","mkdtemp","open","opendir","readdir","readFile","readlink","realpath","rename","rm","rmdir","stat","symlink","truncate","unlink","utimes","writeFile"].filter((e=>"function"==typeof n[e]));Object.assign(e,n),r.forEach((r=>{e[r]=t(n[r])})),e.realpath.native=t(n.realpath.native),e.exists=function(e,t){return"function"==typeof t?n.exists(e,t):new Promise((t=>n.exists(e,t)))},e.read=function(e,t,r,u,o,i){return"function"==typeof i?n.read(e,t,r,u,o,i):new Promise(((i,s)=>{n.read(e,t,r,u,o,((e,t,n)=>{if(e)return s(e);i({bytesRead:t,buffer:n})}))}))},e.write=function(e,t,...r){return"function"==typeof r[r.length-1]?n.write(e,t,...r):new Promise(((u,o)=>{n.write(e,t,...r,((e,t,n)=>{if(e)return o(e);u({bytesWritten:t,buffer:n})}))}))},"function"==typeof n.writev&&(e.writev=function(e,t,...r){return"function"==typeof r[r.length-1]?n.writev(e,t,...r):new Promise(((u,o)=>{n.writev(e,t,...r,((e,t,n)=>{if(e)return o(e);u({bytesWritten:t,buffers:n})}))}))})}(ne);var Pe={},ke={};const xe=p.default;ke.checkPath=function(e){if("win32"===process.platform){if(/[<>:"|?*]/.test(e.replace(xe.parse(e).root,""))){const t=new Error(`Path contains invalid characters: ${e}`);throw t.code="EINVAL",t}}};const Ne=ne,{checkPath:Ie}=ke,Te=e=>"number"==typeof e?e:{mode:511,...e}.mode;Pe.makeDir=async(e,t)=>(Ie(e),Ne.mkdir(e,{mode:Te(t),recursive:!0})),Pe.makeDirSync=(e,t)=>(Ie(e),Ne.mkdirSync(e,{mode:Te(t),recursive:!0}));const Re=re.fromPromise,{makeDir:Me,makeDirSync:Le}=Pe,je=Re(Me);var $e={mkdirs:je,mkdirsSync:Le,mkdirp:je,mkdirpSync:Le,ensureDir:je,ensureDirSync:Le};const He=re.fromPromise,Je=ne;var Ge={pathExists:He((function(e){return Je.access(e).then((()=>!0)).catch((()=>!1))})),pathExistsSync:Je.existsSync};const Ve=we;var Ue=function(e,t,n,r){Ve.open(e,"r+",((e,u)=>{if(e)return r(e);Ve.futimes(u,t,n,(e=>{Ve.close(u,(t=>{r&&r(e||t)}))}))}))},We=function(e,t,n){const r=Ve.openSync(e,"r+");return Ve.futimesSync(r,t,n),Ve.closeSync(r)};const ze=ne,Ke=p.default,qe=F.default;function Ye(e,t,n){const r=n.dereference?e=>ze.stat(e,{bigint:!0}):e=>ze.lstat(e,{bigint:!0});return Promise.all([r(e),r(t).catch((e=>{if("ENOENT"===e.code)return null;throw e}))]).then((([e,t])=>({srcStat:e,destStat:t})))}function Xe(e,t){return t.ino&&t.dev&&t.ino===e.ino&&t.dev===e.dev}function Ze(e,t){const n=Ke.resolve(e).split(Ke.sep).filter((e=>e)),r=Ke.resolve(t).split(Ke.sep).filter((e=>e));return n.reduce(((e,t,n)=>e&&r[n]===t),!0)}function Qe(e,t,n){return`Cannot ${n} '${e}' to a subdirectory of itself, '${t}'.`}var et={checkPaths:function(e,t,n,r,u){qe.callbackify(Ye)(e,t,r,((r,o)=>{if(r)return u(r);const{srcStat:i,destStat:s}=o;if(s){if(Xe(i,s)){const r=Ke.basename(e),o=Ke.basename(t);return"move"===n&&r!==o&&r.toLowerCase()===o.toLowerCase()?u(null,{srcStat:i,destStat:s,isChangingCase:!0}):u(new Error("Source and destination must not be the same."))}if(i.isDirectory()&&!s.isDirectory())return u(new Error(`Cannot overwrite non-directory '${t}' with directory '${e}'.`));if(!i.isDirectory()&&s.isDirectory())return u(new Error(`Cannot overwrite directory '${t}' with non-directory '${e}'.`))}return i.isDirectory()&&Ze(e,t)?u(new Error(Qe(e,t,n))):u(null,{srcStat:i,destStat:s})}))},checkPathsSync:function(e,t,n,r){const{srcStat:u,destStat:o}=function(e,t,n){let r;const u=n.dereference?e=>ze.statSync(e,{bigint:!0}):e=>ze.lstatSync(e,{bigint:!0}),o=u(e);try{r=u(t)}catch(e){if("ENOENT"===e.code)return{srcStat:o,destStat:null};throw e}return{srcStat:o,destStat:r}}(e,t,r);if(o){if(Xe(u,o)){const r=Ke.basename(e),i=Ke.basename(t);if("move"===n&&r!==i&&r.toLowerCase()===i.toLowerCase())return{srcStat:u,destStat:o,isChangingCase:!0};throw new Error("Source and destination must not be the same.")}if(u.isDirectory()&&!o.isDirectory())throw new Error(`Cannot overwrite non-directory '${t}' with directory '${e}'.`);if(!u.isDirectory()&&o.isDirectory())throw new Error(`Cannot overwrite directory '${t}' with non-directory '${e}'.`)}if(u.isDirectory()&&Ze(e,t))throw new Error(Qe(e,t,n));return{srcStat:u,destStat:o}},checkParentPaths:function e(t,n,r,u,o){const i=Ke.resolve(Ke.dirname(t)),s=Ke.resolve(Ke.dirname(r));if(s===i||s===Ke.parse(s).root)return o();ze.stat(s,{bigint:!0},((i,c)=>i?"ENOENT"===i.code?o():o(i):Xe(n,c)?o(new Error(Qe(t,r,u))):e(t,n,s,u,o)))},checkParentPathsSync:function e(t,n,r,u){const o=Ke.resolve(Ke.dirname(t)),i=Ke.resolve(Ke.dirname(r));if(i===o||i===Ke.parse(i).root)return;let s;try{s=ze.statSync(i,{bigint:!0})}catch(e){if("ENOENT"===e.code)return;throw e}if(Xe(n,s))throw new Error(Qe(t,r,u));return e(t,n,i,u)},isSrcSubdir:Ze,areIdentical:Xe};const tt=we,nt=p.default,rt=$e.mkdirs,ut=Ge.pathExists,ot=Ue,it=et;function st(e,t,n,r,u){const o=nt.dirname(n);ut(o,((i,s)=>i?u(i):s?at(e,t,n,r,u):void rt(o,(o=>o?u(o):at(e,t,n,r,u)))))}function ct(e,t,n,r,u,o){Promise.resolve(u.filter(n,r)).then((i=>i?e(t,n,r,u,o):o()),(e=>o(e)))}function at(e,t,n,r,u){(r.dereference?tt.stat:tt.lstat)(t,((o,i)=>o?u(o):i.isDirectory()?function(e,t,n,r,u,o){return t?Dt(n,r,u,o):function(e,t,n,r,u){tt.mkdir(n,(o=>{if(o)return u(o);Dt(t,n,r,(t=>t?u(t):dt(n,e,u)))}))}(e.mode,n,r,u,o)}(i,e,t,n,r,u):i.isFile()||i.isCharacterDevice()||i.isBlockDevice()?function(e,t,n,r,u,o){return t?function(e,t,n,r,u){if(!r.overwrite)return r.errorOnExist?u(new Error(`'${n}' already exists`)):u();tt.unlink(n,(o=>o?u(o):lt(e,t,n,r,u)))}(e,n,r,u,o):lt(e,n,r,u,o)}(i,e,t,n,r,u):i.isSymbolicLink()?function(e,t,n,r,u){tt.readlink(t,((t,o)=>t?u(t):(r.dereference&&(o=nt.resolve(process.cwd(),o)),e?void tt.readlink(n,((t,i)=>t?"EINVAL"===t.code||"UNKNOWN"===t.code?tt.symlink(o,n,u):u(t):(r.dereference&&(i=nt.resolve(process.cwd(),i)),it.isSrcSubdir(o,i)?u(new Error(`Cannot copy '${o}' to a subdirectory of itself, '${i}'.`)):e.isDirectory()&&it.isSrcSubdir(i,o)?u(new Error(`Cannot overwrite '${i}' with '${o}'.`)):function(e,t,n){tt.unlink(t,(r=>r?n(r):tt.symlink(e,t,n)))}(o,n,u)))):tt.symlink(o,n,u))))}(e,t,n,r,u):i.isSocket()?u(new Error(`Cannot copy a socket file: ${t}`)):i.isFIFO()?u(new Error(`Cannot copy a FIFO pipe: ${t}`)):u(new Error(`Unknown file: ${t}`))))}function lt(e,t,n,r,u){tt.copyFile(t,n,(o=>o?u(o):r.preserveTimestamps?function(e,t,n,r){if(function(e){return 0==(128&e)}(e))return function(e,t,n){return dt(e,128|t,n)}(n,e,(u=>u?r(u):ft(e,t,n,r)));return ft(e,t,n,r)}(e.mode,t,n,u):dt(n,e.mode,u)))}function ft(e,t,n,r){!function(e,t,n){tt.stat(e,((e,r)=>e?n(e):ot(t,r.atime,r.mtime,n)))}(t,n,(t=>t?r(t):dt(n,e,r)))}function dt(e,t,n){return tt.chmod(e,t,n)}function Dt(e,t,n,r){tt.readdir(e,((u,o)=>u?r(u):pt(o,e,t,n,r)))}function pt(e,t,n,r,u){const o=e.pop();return o?function(e,t,n,r,u,o){const i=nt.join(n,t),s=nt.join(r,t);it.checkPaths(i,s,"copy",u,((t,c)=>{if(t)return o(t);const{destStat:a}=c;!function(e,t,n,r,u){r.filter?ct(at,e,t,n,r,u):at(e,t,n,r,u)}(a,i,s,u,(t=>t?o(t):pt(e,n,r,u,o)))}))}(e,o,t,n,r,u):u()}var Et=function(e,t,n,r){"function"!=typeof n||r?"function"==typeof n&&(n={filter:n}):(r=n,n={}),r=r||function(){},(n=n||{}).clobber=!("clobber"in n)||!!n.clobber,n.overwrite="overwrite"in n?!!n.overwrite:n.clobber,n.preserveTimestamps&&"ia32"===process.arch&&console.warn("fs-extra: Using the preserveTimestamps option in 32-bit node is not recommended;\n\n see https://github.com/jprichardson/node-fs-extra/issues/269"),it.checkPaths(e,t,"copy",n,((u,o)=>{if(u)return r(u);const{srcStat:i,destStat:s}=o;it.checkParentPaths(e,i,t,"copy",(u=>u?r(u):n.filter?ct(st,s,e,t,n,r):st(s,e,t,n,r)))}))};const mt=we,ht=p.default,yt=$e.mkdirsSync,Ct=We,Ft=et;function gt(e,t,n,r){const u=(r.dereference?mt.statSync:mt.lstatSync)(t);if(u.isDirectory())return function(e,t,n,r,u){return t?St(n,r,u):function(e,t,n,r){return mt.mkdirSync(n),St(t,n,r),vt(n,e)}(e.mode,n,r,u)}(u,e,t,n,r);if(u.isFile()||u.isCharacterDevice()||u.isBlockDevice())return function(e,t,n,r,u){return t?function(e,t,n,r){if(r.overwrite)return mt.unlinkSync(n),At(e,t,n,r);if(r.errorOnExist)throw new Error(`'${n}' already exists`)}(e,n,r,u):At(e,n,r,u)}(u,e,t,n,r);if(u.isSymbolicLink())return function(e,t,n,r){let u=mt.readlinkSync(t);r.dereference&&(u=ht.resolve(process.cwd(),u));if(e){let e;try{e=mt.readlinkSync(n)}catch(e){if("EINVAL"===e.code||"UNKNOWN"===e.code)return mt.symlinkSync(u,n);throw e}if(r.dereference&&(e=ht.resolve(process.cwd(),e)),Ft.isSrcSubdir(u,e))throw new Error(`Cannot copy '${u}' to a subdirectory of itself, '${e}'.`);if(mt.statSync(n).isDirectory()&&Ft.isSrcSubdir(e,u))throw new Error(`Cannot overwrite '${e}' with '${u}'.`);return function(e,t){return mt.unlinkSync(t),mt.symlinkSync(e,t)}(u,n)}return mt.symlinkSync(u,n)}(e,t,n,r);if(u.isSocket())throw new Error(`Cannot copy a socket file: ${t}`);if(u.isFIFO())throw new Error(`Cannot copy a FIFO pipe: ${t}`);throw new Error(`Unknown file: ${t}`)}function At(e,t,n,r){return mt.copyFileSync(t,n),r.preserveTimestamps&&function(e,t,n){(function(e){return 0==(128&e)})(e)&&function(e,t){vt(e,128|t)}(n,e);(function(e,t){const n=mt.statSync(e);Ct(t,n.atime,n.mtime)})(t,n)}(e.mode,t,n),vt(n,e.mode)}function vt(e,t){return mt.chmodSync(e,t)}function St(e,t,n){mt.readdirSync(e).forEach((r=>function(e,t,n,r){const u=ht.join(t,e),o=ht.join(n,e),{destStat:i}=Ft.checkPathsSync(u,o,"copy",r);return function(e,t,n,r){if(!r.filter||r.filter(t,n))return gt(e,t,n,r)}(i,u,o,r)}(r,e,t,n)))}var wt=function(e,t,n){"function"==typeof n&&(n={filter:n}),(n=n||{}).clobber=!("clobber"in n)||!!n.clobber,n.overwrite="overwrite"in n?!!n.overwrite:n.clobber,n.preserveTimestamps&&"ia32"===process.arch&&console.warn("fs-extra: Using the preserveTimestamps option in 32-bit node is not recommended;\n\n see https://github.com/jprichardson/node-fs-extra/issues/269");const{srcStat:r,destStat:u}=Ft.checkPathsSync(e,t,"copy",n);return Ft.checkParentPathsSync(e,r,t,"copy"),function(e,t,n,r){if(r.filter&&!r.filter(t,n))return;const u=ht.dirname(n);mt.existsSync(u)||yt(u);return gt(e,t,n,r)}(u,e,t,n)};var Ot={copy:(0,re.fromCallback)(Et),copySync:wt};const bt=we,_t=p.default,Bt=g.default,Pt="win32"===process.platform;function kt(e){["unlink","chmod","stat","lstat","rmdir","readdir"].forEach((t=>{e[t]=e[t]||bt[t],e[t+="Sync"]=e[t]||bt[t]})),e.maxBusyTries=e.maxBusyTries||3}function xt(e,t,n){let r=0;"function"==typeof t&&(n=t,t={}),Bt(e,"rimraf: missing path"),Bt.strictEqual(typeof e,"string","rimraf: path should be a string"),Bt.strictEqual(typeof n,"function","rimraf: callback function required"),Bt(t,"rimraf: invalid options argument provided"),Bt.strictEqual(typeof t,"object","rimraf: options should be object"),kt(t),Nt(e,t,(function u(o){if(o){if(("EBUSY"===o.code||"ENOTEMPTY"===o.code||"EPERM"===o.code)&&rNt(e,t,u)),100*r)}"ENOENT"===o.code&&(o=null)}n(o)}))}function Nt(e,t,n){Bt(e),Bt(t),Bt("function"==typeof n),t.lstat(e,((r,u)=>r&&"ENOENT"===r.code?n(null):r&&"EPERM"===r.code&&Pt?It(e,t,r,n):u&&u.isDirectory()?Rt(e,t,r,n):void t.unlink(e,(r=>{if(r){if("ENOENT"===r.code)return n(null);if("EPERM"===r.code)return Pt?It(e,t,r,n):Rt(e,t,r,n);if("EISDIR"===r.code)return Rt(e,t,r,n)}return n(r)}))))}function It(e,t,n,r){Bt(e),Bt(t),Bt("function"==typeof r),t.chmod(e,438,(u=>{u?r("ENOENT"===u.code?null:n):t.stat(e,((u,o)=>{u?r("ENOENT"===u.code?null:n):o.isDirectory()?Rt(e,t,n,r):t.unlink(e,r)}))}))}function Tt(e,t,n){let r;Bt(e),Bt(t);try{t.chmodSync(e,438)}catch(e){if("ENOENT"===e.code)return;throw n}try{r=t.statSync(e)}catch(e){if("ENOENT"===e.code)return;throw n}r.isDirectory()?Lt(e,t,n):t.unlinkSync(e)}function Rt(e,t,n,r){Bt(e),Bt(t),Bt("function"==typeof r),t.rmdir(e,(u=>{!u||"ENOTEMPTY"!==u.code&&"EEXIST"!==u.code&&"EPERM"!==u.code?u&&"ENOTDIR"===u.code?r(n):r(u):function(e,t,n){Bt(e),Bt(t),Bt("function"==typeof n),t.readdir(e,((r,u)=>{if(r)return n(r);let o,i=u.length;if(0===i)return t.rmdir(e,n);u.forEach((r=>{xt(_t.join(e,r),t,(r=>{if(!o)return r?n(o=r):void(0==--i&&t.rmdir(e,n))}))}))}))}(e,t,r)}))}function Mt(e,t){let n;kt(t=t||{}),Bt(e,"rimraf: missing path"),Bt.strictEqual(typeof e,"string","rimraf: path should be a string"),Bt(t,"rimraf: missing options"),Bt.strictEqual(typeof t,"object","rimraf: options should be object");try{n=t.lstatSync(e)}catch(n){if("ENOENT"===n.code)return;"EPERM"===n.code&&Pt&&Tt(e,t,n)}try{n&&n.isDirectory()?Lt(e,t,null):t.unlinkSync(e)}catch(n){if("ENOENT"===n.code)return;if("EPERM"===n.code)return Pt?Tt(e,t,n):Lt(e,t,n);if("EISDIR"!==n.code)throw n;Lt(e,t,n)}}function Lt(e,t,n){Bt(e),Bt(t);try{t.rmdirSync(e)}catch(r){if("ENOTDIR"===r.code)throw n;if("ENOTEMPTY"===r.code||"EEXIST"===r.code||"EPERM"===r.code)!function(e,t){if(Bt(e),Bt(t),t.readdirSync(e).forEach((n=>Mt(_t.join(e,n),t))),!Pt){return t.rmdirSync(e,t)}{const n=Date.now();do{try{return t.rmdirSync(e,t)}catch{}}while(Date.now()-n<500)}}(e,t);else if("ENOENT"!==r.code)throw r}}var jt=xt;xt.sync=Mt;const $t=we,Ht=re.fromCallback,Jt=jt;var Gt={remove:Ht((function(e,t){if($t.rm)return $t.rm(e,{recursive:!0,force:!0},t);Jt(e,t)})),removeSync:function(e){if($t.rmSync)return $t.rmSync(e,{recursive:!0,force:!0});Jt.sync(e)}};const Vt=re.fromPromise,Ut=ne,Wt=p.default,zt=$e,Kt=Gt,qt=Vt((async function(e){let t;try{t=await Ut.readdir(e)}catch{return zt.mkdirs(e)}return Promise.all(t.map((t=>Kt.remove(Wt.join(e,t)))))}));function Yt(e){let t;try{t=Ut.readdirSync(e)}catch{return zt.mkdirsSync(e)}t.forEach((t=>{t=Wt.join(e,t),Kt.removeSync(t)}))}var Xt={emptyDirSync:Yt,emptydirSync:Yt,emptyDir:qt,emptydir:qt};const Zt=re.fromCallback,Qt=p.default,en=we,tn=$e;var nn={createFile:Zt((function(e,t){function n(){en.writeFile(e,"",(e=>{if(e)return t(e);t()}))}en.stat(e,((r,u)=>{if(!r&&u.isFile())return t();const o=Qt.dirname(e);en.stat(o,((e,r)=>{if(e)return"ENOENT"===e.code?tn.mkdirs(o,(e=>{if(e)return t(e);n()})):t(e);r.isDirectory()?n():en.readdir(o,(e=>{if(e)return t(e)}))}))}))})),createFileSync:function(e){let t;try{t=en.statSync(e)}catch{}if(t&&t.isFile())return;const n=Qt.dirname(e);try{en.statSync(n).isDirectory()||en.readdirSync(n)}catch(e){if(!e||"ENOENT"!==e.code)throw e;tn.mkdirsSync(n)}en.writeFileSync(e,"")}};const rn=re.fromCallback,un=p.default,on=we,sn=$e,cn=Ge.pathExists,{areIdentical:an}=et;var ln={createLink:rn((function(e,t,n){function r(e,t){on.link(e,t,(e=>{if(e)return n(e);n(null)}))}on.lstat(t,((u,o)=>{on.lstat(e,((u,i)=>{if(u)return u.message=u.message.replace("lstat","ensureLink"),n(u);if(o&&an(i,o))return n(null);const s=un.dirname(t);cn(s,((u,o)=>u?n(u):o?r(e,t):void sn.mkdirs(s,(u=>{if(u)return n(u);r(e,t)}))))}))}))})),createLinkSync:function(e,t){let n;try{n=on.lstatSync(t)}catch{}try{const t=on.lstatSync(e);if(n&&an(t,n))return}catch(e){throw e.message=e.message.replace("lstat","ensureLink"),e}const r=un.dirname(t);return on.existsSync(r)||sn.mkdirsSync(r),on.linkSync(e,t)}};const fn=p.default,dn=we,Dn=Ge.pathExists;var pn={symlinkPaths:function(e,t,n){if(fn.isAbsolute(e))return dn.lstat(e,(t=>t?(t.message=t.message.replace("lstat","ensureSymlink"),n(t)):n(null,{toCwd:e,toDst:e})));{const r=fn.dirname(t),u=fn.join(r,e);return Dn(u,((t,o)=>t?n(t):o?n(null,{toCwd:u,toDst:e}):dn.lstat(e,(t=>t?(t.message=t.message.replace("lstat","ensureSymlink"),n(t)):n(null,{toCwd:e,toDst:fn.relative(r,e)})))))}},symlinkPathsSync:function(e,t){let n;if(fn.isAbsolute(e)){if(n=dn.existsSync(e),!n)throw new Error("absolute srcpath does not exist");return{toCwd:e,toDst:e}}{const r=fn.dirname(t),u=fn.join(r,e);if(n=dn.existsSync(u),n)return{toCwd:u,toDst:e};if(n=dn.existsSync(e),!n)throw new Error("relative srcpath does not exist");return{toCwd:e,toDst:fn.relative(r,e)}}}};const En=we;var mn={symlinkType:function(e,t,n){if(n="function"==typeof t?t:n,t="function"!=typeof t&&t)return n(null,t);En.lstat(e,((e,r)=>{if(e)return n(null,"file");t=r&&r.isDirectory()?"dir":"file",n(null,t)}))},symlinkTypeSync:function(e,t){let n;if(t)return t;try{n=En.lstatSync(e)}catch{return"file"}return n&&n.isDirectory()?"dir":"file"}};const hn=re.fromCallback,yn=p.default,Cn=ne,Fn=$e.mkdirs,gn=$e.mkdirsSync,An=pn.symlinkPaths,vn=pn.symlinkPathsSync,Sn=mn.symlinkType,wn=mn.symlinkTypeSync,On=Ge.pathExists,{areIdentical:bn}=et;function _n(e,t,n,r){An(e,t,((u,o)=>{if(u)return r(u);e=o.toDst,Sn(o.toCwd,n,((n,u)=>{if(n)return r(n);const o=yn.dirname(t);On(o,((n,i)=>n?r(n):i?Cn.symlink(e,t,u,r):void Fn(o,(n=>{if(n)return r(n);Cn.symlink(e,t,u,r)}))))}))}))}var Bn={createSymlink:hn((function(e,t,n,r){r="function"==typeof n?n:r,n="function"!=typeof n&&n,Cn.lstat(t,((u,o)=>{!u&&o.isSymbolicLink()?Promise.all([Cn.stat(e),Cn.stat(t)]).then((([u,o])=>{if(bn(u,o))return r(null);_n(e,t,n,r)})):_n(e,t,n,r)}))})),createSymlinkSync:function(e,t,n){let r;try{r=Cn.lstatSync(t)}catch{}if(r&&r.isSymbolicLink()){const n=Cn.statSync(e),r=Cn.statSync(t);if(bn(n,r))return}const u=vn(e,t);e=u.toDst,n=wn(u.toCwd,n);const o=yn.dirname(t);return Cn.existsSync(o)||gn(o),Cn.symlinkSync(e,t,n)}};const{createFile:Pn,createFileSync:kn}=nn,{createLink:xn,createLinkSync:Nn}=ln,{createSymlink:In,createSymlinkSync:Tn}=Bn;var Rn={createFile:Pn,createFileSync:kn,ensureFile:Pn,ensureFileSync:kn,createLink:xn,createLinkSync:Nn,ensureLink:xn,ensureLinkSync:Nn,createSymlink:In,createSymlinkSync:Tn,ensureSymlink:In,ensureSymlinkSync:Tn};var Mn={stringify:function(e,{EOL:t="\n",finalEOL:n=!0,replacer:r=null,spaces:u}={}){const o=n?t:"";return JSON.stringify(e,r,u).replace(/\n/g,t)+o},stripBom:function(e){return Buffer.isBuffer(e)&&(e=e.toString("utf8")),e.replace(/^\uFEFF/,"")}};let Ln;try{Ln=we}catch(e){Ln=D.default}const jn=re,{stringify:$n,stripBom:Hn}=Mn;const Jn=jn.fromPromise((async function(e,t={}){"string"==typeof t&&(t={encoding:t});const n=t.fs||Ln,r=!("throws"in t)||t.throws;let u,o=await jn.fromCallback(n.readFile)(e,t);o=Hn(o);try{u=JSON.parse(o,t?t.reviver:null)}catch(t){if(r)throw t.message=`${e}: ${t.message}`,t;return null}return u}));const Gn=jn.fromPromise((async function(e,t,n={}){const r=n.fs||Ln,u=$n(t,n);await jn.fromCallback(r.writeFile)(e,u,n)}));const Vn={readFile:Jn,readFileSync:function(e,t={}){"string"==typeof t&&(t={encoding:t});const n=t.fs||Ln,r=!("throws"in t)||t.throws;try{let r=n.readFileSync(e,t);return r=Hn(r),JSON.parse(r,t.reviver)}catch(t){if(r)throw t.message=`${e}: ${t.message}`,t;return null}},writeFile:Gn,writeFileSync:function(e,t,n={}){const r=n.fs||Ln,u=$n(t,n);return r.writeFileSync(e,u,n)}};var Un={readJson:Vn.readFile,readJsonSync:Vn.readFileSync,writeJson:Vn.writeFile,writeJsonSync:Vn.writeFileSync};const Wn=re.fromCallback,zn=we,Kn=p.default,qn=$e,Yn=Ge.pathExists;var Xn={outputFile:Wn((function(e,t,n,r){"function"==typeof n&&(r=n,n="utf8");const u=Kn.dirname(e);Yn(u,((o,i)=>o?r(o):i?zn.writeFile(e,t,n,r):void qn.mkdirs(u,(u=>{if(u)return r(u);zn.writeFile(e,t,n,r)}))))})),outputFileSync:function(e,...t){const n=Kn.dirname(e);if(zn.existsSync(n))return zn.writeFileSync(e,...t);qn.mkdirsSync(n),zn.writeFileSync(e,...t)}};const{stringify:Zn}=Mn,{outputFile:Qn}=Xn;var er=async function(e,t,n={}){const r=Zn(t,n);await Qn(e,r,n)};const{stringify:tr}=Mn,{outputFileSync:nr}=Xn;var rr=function(e,t,n){const r=tr(t,n);nr(e,r,n)};const ur=re.fromPromise,or=Un;or.outputJson=ur(er),or.outputJsonSync=rr,or.outputJSON=or.outputJson,or.outputJSONSync=or.outputJsonSync,or.writeJSON=or.writeJson,or.writeJSONSync=or.writeJsonSync,or.readJSON=or.readJson,or.readJSONSync=or.readJsonSync;var ir=or;const sr=we,cr=p.default,ar=Ot.copy,lr=Gt.remove,fr=$e.mkdirp,dr=Ge.pathExists,Dr=et;function pr(e,t,n,r,u){return r?Er(e,t,n,u):n?lr(t,(r=>r?u(r):Er(e,t,n,u))):void dr(t,((r,o)=>r?u(r):o?u(new Error("dest already exists.")):Er(e,t,n,u)))}function Er(e,t,n,r){sr.rename(e,t,(u=>u?"EXDEV"!==u.code?r(u):function(e,t,n,r){const u={overwrite:n,errorOnExist:!0};ar(e,t,u,(t=>t?r(t):lr(e,r)))}(e,t,n,r):r()))}var mr=function(e,t,n,r){"function"==typeof n&&(r=n,n={});const u=n.overwrite||n.clobber||!1;Dr.checkPaths(e,t,"move",n,((n,o)=>{if(n)return r(n);const{srcStat:i,isChangingCase:s=!1}=o;Dr.checkParentPaths(e,i,t,"move",(n=>n?r(n):function(e){const t=cr.dirname(e);return cr.parse(t).root===t}(t)?pr(e,t,u,s,r):void fr(cr.dirname(t),(n=>n?r(n):pr(e,t,u,s,r)))))}))};const hr=we,yr=p.default,Cr=Ot.copySync,Fr=Gt.removeSync,gr=$e.mkdirpSync,Ar=et;function vr(e,t,n){try{hr.renameSync(e,t)}catch(r){if("EXDEV"!==r.code)throw r;return function(e,t,n){const r={overwrite:n,errorOnExist:!0};return Cr(e,t,r),Fr(e)}(e,t,n)}}var Sr=function(e,t,n){const r=(n=n||{}).overwrite||n.clobber||!1,{srcStat:u,isChangingCase:o=!1}=Ar.checkPathsSync(e,t,"move",n);return Ar.checkParentPathsSync(e,u,t,"move"),function(e){const t=yr.dirname(e);return yr.parse(t).root===t}(t)||gr(yr.dirname(t)),function(e,t,n,r){if(r)return vr(e,t,n);if(n)return Fr(t),vr(e,t,n);if(hr.existsSync(t))throw new Error("dest already exists.");return vr(e,t,n)}(e,t,r,o)};var wr,Or,br,_r,Br,Pr={move:(0,re.fromCallback)(mr),moveSync:Sr},kr={...ne,...Ot,...Xt,...Rn,...ir,...$e,...Pr,...Xn,...Ge,...Gt},xr={},Nr={exports:{}},Ir={exports:{}};function Tr(){if(Or)return wr;Or=1;var e=1e3,t=60*e,n=60*t,r=24*n,u=7*r,o=365.25*r;function i(e,t,n,r){var u=t>=1.5*n;return Math.round(e/n)+" "+r+(u?"s":"")}return wr=function(s,c){c=c||{};var a=typeof s;if("string"===a&&s.length>0)return function(i){if((i=String(i)).length>100)return;var s=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(i);if(!s)return;var c=parseFloat(s[1]);switch((s[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return c*o;case"weeks":case"week":case"w":return c*u;case"days":case"day":case"d":return c*r;case"hours":case"hour":case"hrs":case"hr":case"h":return c*n;case"minutes":case"minute":case"mins":case"min":case"m":return c*t;case"seconds":case"second":case"secs":case"sec":case"s":return c*e;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return c;default:return}}(s);if("number"===a&&isFinite(s))return c.long?function(u){var o=Math.abs(u);if(o>=r)return i(u,o,r,"day");if(o>=n)return i(u,o,n,"hour");if(o>=t)return i(u,o,t,"minute");if(o>=e)return i(u,o,e,"second");return u+" ms"}(s):function(u){var o=Math.abs(u);if(o>=r)return Math.round(u/r)+"d";if(o>=n)return Math.round(u/n)+"h";if(o>=t)return Math.round(u/t)+"m";if(o>=e)return Math.round(u/e)+"s";return u+"ms"}(s);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(s))}}function Rr(){if(_r)return br;return _r=1,br=function(e){function t(e){let r,u,o,i=null;function s(...e){if(!s.enabled)return;const n=s,u=Number(new Date),o=u-(r||u);n.diff=o,n.prev=r,n.curr=u,r=u,e[0]=t.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let i=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,((r,u)=>{if("%%"===r)return"%";i++;const o=t.formatters[u];if("function"==typeof o){const t=e[i];r=o.call(n,t),e.splice(i,1),i--}return r})),t.formatArgs.call(n,e);(n.log||t.log).apply(n,e)}return s.namespace=e,s.useColors=t.useColors(),s.color=t.selectColor(e),s.extend=n,s.destroy=t.destroy,Object.defineProperty(s,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==i?i:(u!==t.namespaces&&(u=t.namespaces,o=t.enabled(e)),o),set:e=>{i=e}}),"function"==typeof t.init&&t.init(s),s}function n(e,n){const r=t(this.namespace+(void 0===n?":":n)+e);return r.log=this.log,r}function r(e){return e.toString().substring(2,e.toString().length-2).replace(/\.\*\?$/,"*")}return t.debug=t,t.default=t,t.coerce=function(e){if(e instanceof Error)return e.stack||e.message;return e},t.disable=function(){const e=[...t.names.map(r),...t.skips.map(r).map((e=>"-"+e))].join(",");return t.enable(""),e},t.enable=function(e){let n;t.save(e),t.namespaces=e,t.names=[],t.skips=[];const r=("string"==typeof e?e:"").split(/[\s,]+/),u=r.length;for(n=0;n{t[n]=e[n]})),t.names=[],t.skips=[],t.formatters={},t.selectColor=function(e){let n=0;for(let t=0;t{const n=e.startsWith("-")?"":1===e.length?"-":"--",r=t.indexOf(n+e),u=t.indexOf("--");return-1!==r&&(-1===u||r{}),"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."),t.colors=[6,2,3,4,5,1];try{const e=function(){if($r)return jr;$r=1;const e=E.default,t=A.default,n=Vr(),{env:r}=process;let u;function o(e){return 0!==e&&{level:e,hasBasic:!0,has256:e>=2,has16m:e>=3}}function i(t,o){if(0===u)return 0;if(n("color=16m")||n("color=full")||n("color=truecolor"))return 3;if(n("color=256"))return 2;if(t&&!o&&void 0===u)return 0;const i=u||0;if("dumb"===r.TERM)return i;if("win32"===process.platform){const t=e.release().split(".");return Number(t[0])>=10&&Number(t[2])>=10586?Number(t[2])>=14931?3:2:1}if("CI"in r)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI","GITHUB_ACTIONS","BUILDKITE"].some((e=>e in r))||"codeship"===r.CI_NAME?1:i;if("TEAMCITY_VERSION"in r)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(r.TEAMCITY_VERSION)?1:0;if("truecolor"===r.COLORTERM)return 3;if("TERM_PROGRAM"in r){const e=parseInt((r.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(r.TERM_PROGRAM){case"iTerm.app":return e>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(r.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(r.TERM)||"COLORTERM"in r?1:i}return n("no-color")||n("no-colors")||n("color=false")||n("color=never")?u=0:(n("color")||n("colors")||n("color=true")||n("color=always"))&&(u=1),"FORCE_COLOR"in r&&(u="true"===r.FORCE_COLOR?1:"false"===r.FORCE_COLOR?0:0===r.FORCE_COLOR.length?1:Math.min(parseInt(r.FORCE_COLOR,10),3)),jr={supportsColor:function(e){return o(i(e,e&&e.isTTY))},stdout:o(i(!0,t.isatty(1))),stderr:o(i(!0,t.isatty(2)))}}();e&&(e.stderr||e).level>=2&&(t.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221])}catch(e){}t.inspectOpts=Object.keys(process.env).filter((e=>/^debug_/i.test(e))).reduce(((e,t)=>{const n=t.substring(6).toLowerCase().replace(/_([a-z])/g,((e,t)=>t.toUpperCase()));let r=process.env[t];return r=!!/^(yes|on|true|enabled)$/i.test(r)||!/^(no|off|false|disabled)$/i.test(r)&&("null"===r?null:Number(r)),e[n]=r,e}),{}),e.exports=Rr()(t);const{formatters:u}=e.exports;u.o=function(e){return this.inspectOpts.colors=this.useColors,r.inspect(e,this.inspectOpts).split("\n").map((e=>e.trim())).join(" ")},u.O=function(e){return this.inspectOpts.colors=this.useColors,r.inspect(e,this.inspectOpts)}}(Gr,Gr.exports)),Gr.exports}Jr=Nr,"undefined"==typeof process||"renderer"===process.type||!0===process.browser||process.__nwjs?Jr.exports=(Br||(Br=1,function(e,t){t.formatArgs=function(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const n="color: "+this.color;t.splice(1,0,n,"color: inherit");let r=0,u=0;t[0].replace(/%[a-zA-Z%]/g,(e=>{"%%"!==e&&(r++,"%c"===e&&(u=r))})),t.splice(u,0,n)},t.save=function(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch(e){}},t.load=function(){let e;try{e=t.storage.getItem("debug")}catch(e){}return!e&&"undefined"!=typeof process&&"env"in process&&(e=process.env.DEBUG),e},t.useColors=function(){return!("undefined"==typeof window||!window.process||"renderer"!==window.process.type&&!window.process.__nwjs)||("undefined"==typeof navigator||!navigator.userAgent||!navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))&&("undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))},t.storage=function(){try{return localStorage}catch(e){}}(),t.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],t.log=console.debug||console.log||(()=>{}),e.exports=Rr()(t);const{formatters:n}=e.exports;n.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}}(Ir,Ir.exports)),Ir.exports):Jr.exports=Ur();var Wr=function(e){return(e=e||{}).circles?function(e){var t=[],n=[];return e.proto?function e(u){if("object"!=typeof u||null===u)return u;if(u instanceof Date)return new Date(u);if(Array.isArray(u))return r(u,e);if(u instanceof Map)return new Map(r(Array.from(u),e));if(u instanceof Set)return new Set(r(Array.from(u),e));var o={};for(var i in t.push(u),n.push(o),u){var s=u[i];if("object"!=typeof s||null===s)o[i]=s;else if(s instanceof Date)o[i]=new Date(s);else if(s instanceof Map)o[i]=new Map(r(Array.from(s),e));else if(s instanceof Set)o[i]=new Set(r(Array.from(s),e));else if(ArrayBuffer.isView(s))o[i]=zr(s);else{var c=t.indexOf(s);o[i]=-1!==c?n[c]:e(s)}}return t.pop(),n.pop(),o}:function e(u){if("object"!=typeof u||null===u)return u;if(u instanceof Date)return new Date(u);if(Array.isArray(u))return r(u,e);if(u instanceof Map)return new Map(r(Array.from(u),e));if(u instanceof Set)return new Set(r(Array.from(u),e));var o={};for(var i in t.push(u),n.push(o),u)if(!1!==Object.hasOwnProperty.call(u,i)){var s=u[i];if("object"!=typeof s||null===s)o[i]=s;else if(s instanceof Date)o[i]=new Date(s);else if(s instanceof Map)o[i]=new Map(r(Array.from(s),e));else if(s instanceof Set)o[i]=new Set(r(Array.from(s),e));else if(ArrayBuffer.isView(s))o[i]=zr(s);else{var c=t.indexOf(s);o[i]=-1!==c?n[c]:e(s)}}return t.pop(),n.pop(),o};function r(e,r){for(var u=Object.keys(e),o=new Array(u.length),i=0;i!e,Qr=e=>e&&"object"==typeof e&&!Array.isArray(e),eu=(e,t,n)=>{(Array.isArray(t)?t:[t]).forEach((t=>{if(t)throw new Error(`Problem with log4js configuration: (${Kr.inspect(e,{depth:5})}) - ${n}`)}))};var tu={configure:e=>{qr("New configuration to be validated: ",e),eu(e,Zr(Qr(e)),"must be an object."),qr(`Calling pre-processing listeners (${Yr.length})`),Yr.forEach((t=>t(e))),qr("Configuration pre-processing finished."),qr(`Calling configuration listeners (${Xr.length})`),Xr.forEach((t=>t(e))),qr("Configuration finished.")},addListener:e=>{Xr.push(e),qr(`Added listener, now ${Xr.length} listeners`)},addPreProcessingListener:e=>{Yr.push(e),qr(`Added pre-processing listener, now ${Yr.length} listeners`)},throwExceptionIf:eu,anObject:Qr,anInteger:e=>e&&"number"==typeof e&&Number.isInteger(e),validIdentifier:e=>/^[A-Za-z][A-Za-z0-9_]*$/g.test(e),not:Zr},nu={exports:{}};!function(e){function t(e,t){for(var n=e.toString();n.length-1?s:c,l=n(u.getHours()),f=n(u.getMinutes()),d=n(u.getSeconds()),D=t(u.getMilliseconds(),3),p=function(e){var t=Math.abs(e),n=String(Math.floor(t/60)),r=String(t%60);return n=("0"+n).slice(-2),r=("0"+r).slice(-2),0===e?"Z":(e<0?"+":"-")+n+":"+r}(u.getTimezoneOffset());return r.replace(/dd/g,o).replace(/MM/g,i).replace(/y{1,4}/g,a).replace(/hh/g,l).replace(/mm/g,f).replace(/ss/g,d).replace(/SSS/g,D).replace(/O/g,p)}function u(e,t,n,r){e["set"+(r?"":"UTC")+t](n)}e.exports=r,e.exports.asString=r,e.exports.parse=function(t,n,r){if(!t)throw new Error("pattern must be supplied");return function(t,n,r){var o=t.indexOf("O")<0,i=!1,s=[{pattern:/y{1,4}/,regexp:"\\d{1,4}",fn:function(e,t){u(e,"FullYear",t,o)}},{pattern:/MM/,regexp:"\\d{1,2}",fn:function(e,t){u(e,"Month",t-1,o),e.getMonth()!==t-1&&(i=!0)}},{pattern:/dd/,regexp:"\\d{1,2}",fn:function(e,t){i&&u(e,"Month",e.getMonth()-1,o),u(e,"Date",t,o)}},{pattern:/hh/,regexp:"\\d{1,2}",fn:function(e,t){u(e,"Hours",t,o)}},{pattern:/mm/,regexp:"\\d\\d",fn:function(e,t){u(e,"Minutes",t,o)}},{pattern:/ss/,regexp:"\\d\\d",fn:function(e,t){u(e,"Seconds",t,o)}},{pattern:/SSS/,regexp:"\\d\\d\\d",fn:function(e,t){u(e,"Milliseconds",t,o)}},{pattern:/O/,regexp:"[+-]\\d{1,2}:?\\d{2}?|Z",fn:function(e,t){t="Z"===t?0:t.replace(":","");var n=Math.abs(t),r=(t>0?-1:1)*(n%100+60*Math.floor(n/100));e.setUTCMinutes(e.getUTCMinutes()+r)}}],c=s.reduce((function(e,t){return t.pattern.test(e.regexp)?(t.index=e.regexp.match(t.pattern).index,e.regexp=e.regexp.replace(t.pattern,"("+t.regexp+")")):t.index=-1,e}),{regexp:t,index:[]}),a=s.filter((function(e){return e.index>-1}));a.sort((function(e,t){return e.index-t.index}));var l=new RegExp(c.regexp).exec(n);if(l){var f=r||e.exports.now();return a.forEach((function(e,t){e.fn(f,l[t+1])})),f}throw new Error("String '"+n+"' could not be parsed as '"+t+"'")}(t,n,r)},e.exports.now=function(){return new Date},e.exports.ISO8601_FORMAT="yyyy-MM-ddThh:mm:ss.SSS",e.exports.ISO8601_WITH_TZ_OFFSET_FORMAT="yyyy-MM-ddThh:mm:ss.SSSO",e.exports.DATETIME_FORMAT="dd MM yyyy hh:mm:ss.SSS",e.exports.ABSOLUTETIME_FORMAT="hh:mm:ss.SSS"}(nu);const ru=nu.exports,uu=E.default,ou=F.default,iu=p.default,su={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[90,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[91,39],yellow:[33,39]};function cu(e){return e?`[${su[e][0]}m`:""}function au(e){return e?`[${su[e][1]}m`:""}function lu(e,t){return n=ou.format("[%s] [%s] %s - ",ru.asString(e.startTime),e.level.toString(),e.categoryName),cu(r=t)+n+au(r);var n,r}function fu(e){return lu(e)+ou.format(...e.data)}function du(e){return lu(e,e.level.colour)+ou.format(...e.data)}function Du(e){return ou.format(...e.data)}function pu(e){return e.data[0]}function Eu(e,t){const n=/%(-?[0-9]+)?(\.?-?[0-9]+)?([[\]cdhmnprzxXyflos%])(\{([^}]+)\})?|([^%]+)/;function r(e){return e&&e.pid?e.pid.toString():process.pid.toString()}e=e||"%r %p %c - %m%n";const u={c:function(e,t){let n=e.categoryName;if(t){const e=parseInt(t,10),r=n.split(".");ee&&(n=r.slice(-e).join(iu.sep))}return n},l:function(e){return e.lineNumber?`${e.lineNumber}`:""},o:function(e){return e.columnNumber?`${e.columnNumber}`:""},s:function(e){return e.callStack||""}};function o(e,t,n){return u[e](t,n)}function i(e,t,n){let r=e;return r=function(e,t){let n;return e?(n=parseInt(e.substr(1),10),n>0?t.slice(0,n):t.slice(n)):t}(t,r),r=function(e,t){let n;if(e)if("-"===e.charAt(0))for(n=parseInt(e.substr(1),10);t.lengthDu,basic:()=>fu,colored:()=>du,coloured:()=>du,pattern:e=>Eu(e&&e.pattern,e&&e.tokens),dummy:()=>pu};var hu={basicLayout:fu,messagePassThroughLayout:Du,patternLayout:Eu,colouredLayout:du,coloredLayout:du,dummyLayout:pu,addLayout(e,t){mu[e]=t},layout:(e,t)=>mu[e]&&mu[e](t)};const yu=tu,Cu=["white","grey","black","blue","cyan","green","magenta","red","yellow"];class Fu{constructor(e,t,n){this.level=e,this.levelStr=t,this.colour=n}toString(){return this.levelStr}static getLevel(e,t){return e?e instanceof Fu?e:(e instanceof Object&&e.levelStr&&(e=e.levelStr),Fu[e.toString().toUpperCase()]||t):t}static addLevels(e){if(e){Object.keys(e).forEach((t=>{const n=t.toUpperCase();Fu[n]=new Fu(e[t].value,n,e[t].colour);const r=Fu.levels.findIndex((e=>e.levelStr===n));r>-1?Fu.levels[r]=Fu[n]:Fu.levels.push(Fu[n])})),Fu.levels.sort(((e,t)=>e.level-t.level))}}isLessThanOrEqualTo(e){return"string"==typeof e&&(e=Fu.getLevel(e)),this.level<=e.level}isGreaterThanOrEqualTo(e){return"string"==typeof e&&(e=Fu.getLevel(e)),this.level>=e.level}isEqualTo(e){return"string"==typeof e&&(e=Fu.getLevel(e)),this.level===e.level}}Fu.levels=[],Fu.addLevels({ALL:{value:Number.MIN_VALUE,colour:"grey"},TRACE:{value:5e3,colour:"blue"},DEBUG:{value:1e4,colour:"cyan"},INFO:{value:2e4,colour:"green"},WARN:{value:3e4,colour:"yellow"},ERROR:{value:4e4,colour:"red"},FATAL:{value:5e4,colour:"magenta"},MARK:{value:9007199254740992,colour:"grey"},OFF:{value:Number.MAX_VALUE,colour:"grey"}}),yu.addListener((e=>{const t=e.levels;if(t){yu.throwExceptionIf(e,yu.not(yu.anObject(t)),"levels must be an object");Object.keys(t).forEach((n=>{yu.throwExceptionIf(e,yu.not(yu.validIdentifier(n)),`level name "${n}" is not a valid identifier (must start with a letter, only contain A-Z,a-z,0-9,_)`),yu.throwExceptionIf(e,yu.not(yu.anObject(t[n])),`level "${n}" must be an object`),yu.throwExceptionIf(e,yu.not(t[n].value),`level "${n}" must have a 'value' property`),yu.throwExceptionIf(e,yu.not(yu.anInteger(t[n].value)),`level "${n}".value must have an integer value`),yu.throwExceptionIf(e,yu.not(t[n].colour),`level "${n}" must have a 'colour' property`),yu.throwExceptionIf(e,yu.not(Cu.indexOf(t[n].colour)>-1),`level "${n}".colour must be one of ${Cu.join(", ")}`)}))}})),yu.addListener((e=>{Fu.addLevels(e.levels)}));var gu=Fu,Au={exports:{}},vu={};/*! (c) 2020 Andrea Giammarchi */ +const{parse:Su,stringify:wu}=JSON,{keys:Ou}=Object,bu=String,_u="string",Bu={},Pu="object",ku=(e,t)=>t,xu=e=>e instanceof bu?bu(e):e,Nu=(e,t)=>typeof t===_u?new bu(t):t,Iu=(e,t,n,r)=>{const u=[];for(let o=Ou(n),{length:i}=o,s=0;s{const r=bu(t.push(n)-1);return e.set(n,r),r},Ru=(e,t)=>{const n=Su(e,Nu).map(xu),r=n[0],u=t||ku,o=typeof r===Pu&&r?Iu(n,new Set,r,u):r;return u.call({"":o},"",o)};vu.parse=Ru;const Mu=(e,t,n)=>{const r=t&&typeof t===Pu?(e,n)=>""===e||-1Su(Mu(e));vu.fromJSON=e=>Ru(wu(e));const Lu=vu,ju=gu;class $u{constructor(e,t,n,r,u){this.startTime=new Date,this.categoryName=e,this.data=n,this.level=t,this.context=Object.assign({},r),this.pid=process.pid,u&&(this.functionName=u.functionName,this.fileName=u.fileName,this.lineNumber=u.lineNumber,this.columnNumber=u.columnNumber,this.callStack=u.callStack)}serialise(){const e=this.data.map((e=>(e&&e.message&&e.stack&&(e=Object.assign({message:e.message,stack:e.stack},e)),e)));return this.data=e,Lu.stringify(this)}static deserialise(e){let t;try{const n=Lu.parse(e);n.data=n.data.map((e=>{if(e&&e.message&&e.stack){const t=new Error(e);Object.keys(e).forEach((n=>{t[n]=e[n]})),e=t}return e})),t=new $u(n.categoryName,ju.getLevel(n.level.levelStr),n.data,n.context),t.startTime=new Date(n.startTime),t.pid=n.pid,t.cluster=n.cluster}catch(n){t=new $u("log4js",ju.ERROR,["Unable to parse log:",e,"because: ",n])}return t}}var Hu=$u;const Ju=Nr.exports("log4js:clustering"),Gu=Hu,Vu=tu;let Uu=!1,Wu=null;try{Wu=require("cluster")}catch(e){Ju("cluster module not present"),Uu=!0}const zu=[];let Ku=!1,qu="NODE_APP_INSTANCE";const Yu=()=>Ku&&"0"===process.env[qu],Xu=()=>Uu||Wu.isMaster||Yu(),Zu=e=>{zu.forEach((t=>t(e)))},Qu=(e,t)=>{if(Ju("cluster message received from worker ",e,": ",t),e.topic&&e.data&&(t=e,e=void 0),t&&t.topic&&"log4js:message"===t.topic){Ju("received message: ",t.data);const e=Gu.deserialise(t.data);Zu(e)}};Uu||Vu.addListener((e=>{zu.length=0,({pm2:Ku,disableClustering:Uu,pm2InstanceVar:qu="NODE_APP_INSTANCE"}=e),Ju(`clustering disabled ? ${Uu}`),Ju(`cluster.isMaster ? ${Wu&&Wu.isMaster}`),Ju(`pm2 enabled ? ${Ku}`),Ju(`pm2InstanceVar = ${qu}`),Ju(`process.env[${qu}] = ${process.env[qu]}`),Ku&&process.removeListener("message",Qu),Wu&&Wu.removeListener&&Wu.removeListener("message",Qu),Uu||e.disableClustering?Ju("Not listening for cluster messages, because clustering disabled."):Yu()?(Ju("listening for PM2 broadcast messages"),process.on("message",Qu)):Wu.isMaster?(Ju("listening for cluster messages"),Wu.on("message",Qu)):Ju("not listening for messages, because we are not a master process")}));var eo={onlyOnMaster:(e,t)=>Xu()?e():t,isMaster:Xu,send:e=>{Xu()?Zu(e):(Ku||(e.cluster={workerId:Wu.worker.id,worker:process.pid}),process.send({topic:"log4js:message",data:e.serialise()}))},onMessage:e=>{zu.push(e)}},to={};function no(e){if("number"==typeof e&&Number.isInteger(e))return e;const t={K:1024,M:1048576,G:1073741824},n=Object.keys(t),r=e.substr(e.length-1).toLocaleUpperCase(),u=e.substring(0,e.length-1).trim();if(n.indexOf(r)<0||!Number.isInteger(Number(u)))throw Error(`maxLogSize: "${e}" is invalid`);return u*t[r]}function ro(e){return function(e,t){const n=Object.assign({},t);return Object.keys(e).forEach((r=>{n[r]&&(n[r]=e[r](t[r]))})),n}({maxLogSize:no},e)}const uo={file:ro,fileSync:ro};to.modifyConfig=e=>uo[e.type]?uo[e.type](e):e;var oo={};const io=console.log.bind(console);oo.configure=function(e,t){let n=t.colouredLayout;return e.layout&&(n=t.layout(e.layout.type,e.layout)),function(e,t){return n=>{io(e(n,t))}}(n,e.timezoneOffset)};var so={};so.configure=function(e,t){let n=t.colouredLayout;return e.layout&&(n=t.layout(e.layout.type,e.layout)),function(e,t){return n=>{process.stdout.write(`${e(n,t)}\n`)}}(n,e.timezoneOffset)};var co={};co.configure=function(e,t){let n=t.colouredLayout;return e.layout&&(n=t.layout(e.layout.type,e.layout)),function(e,t){return n=>{process.stderr.write(`${e(n,t)}\n`)}}(n,e.timezoneOffset)};var ao={};ao.configure=function(e,t,n,r){const u=n(e.appender);return function(e,t,n,r){const u=r.getLevel(e),o=r.getLevel(t,r.FATAL);return e=>{const t=e.level;t.isGreaterThanOrEqualTo(u)&&t.isLessThanOrEqualTo(o)&&n(e)}}(e.level,e.maxLevel,u,r)};var lo={};const fo=Nr.exports("log4js:categoryFilter");lo.configure=function(e,t,n){const r=n(e.appender);return function(e,t){return"string"==typeof e&&(e=[e]),n=>{fo(`Checking ${n.categoryName} against ${e}`),-1===e.indexOf(n.categoryName)&&(fo("Not excluded, sending to appender"),t(n))}}(e.exclude,r)};var Do={};const po=Nr.exports("log4js:noLogFilter");Do.configure=function(e,t,n){const r=n(e.appender);return function(e,t){return n=>{po(`Checking data: ${n.data} against filters: ${e}`),"string"==typeof e&&(e=[e]),e=e.filter((e=>null!=e&&""!==e));const r=new RegExp(e.join("|"),"i");(0===e.length||n.data.findIndex((e=>r.test(e)))<0)&&(po("Not excluded, sending to appender"),t(n))}}(e.exclude,r)};var Eo={},mo={exports:{}},ho={},yo={fromCallback:function(e){return Object.defineProperty((function(){if("function"!=typeof arguments[arguments.length-1])return new Promise(((t,n)=>{arguments[arguments.length]=(e,r)=>{if(e)return n(e);t(r)},arguments.length++,e.apply(this,arguments)}));e.apply(this,arguments)}),"name",{value:e.name})},fromPromise:function(e){return Object.defineProperty((function(){const t=arguments[arguments.length-1];if("function"!=typeof t)return e.apply(this,arguments);e.apply(this,arguments).then((e=>t(null,e)),t)}),"name",{value:e.name})}};!function(e){const t=yo.fromCallback,n=we,r=["access","appendFile","chmod","chown","close","copyFile","fchmod","fchown","fdatasync","fstat","fsync","ftruncate","futimes","lchown","lchmod","link","lstat","mkdir","mkdtemp","open","readFile","readdir","readlink","realpath","rename","rmdir","stat","symlink","truncate","unlink","utimes","writeFile"].filter((e=>"function"==typeof n[e]));Object.keys(n).forEach((t=>{"promises"!==t&&(e[t]=n[t])})),r.forEach((r=>{e[r]=t(n[r])})),e.exists=function(e,t){return"function"==typeof t?n.exists(e,t):new Promise((t=>n.exists(e,t)))},e.read=function(e,t,r,u,o,i){return"function"==typeof i?n.read(e,t,r,u,o,i):new Promise(((i,s)=>{n.read(e,t,r,u,o,((e,t,n)=>{if(e)return s(e);i({bytesRead:t,buffer:n})}))}))},e.write=function(e,t,...r){return"function"==typeof r[r.length-1]?n.write(e,t,...r):new Promise(((u,o)=>{n.write(e,t,...r,((e,t,n)=>{if(e)return o(e);u({bytesWritten:t,buffer:n})}))}))},"function"==typeof n.realpath.native&&(e.realpath.native=t(n.realpath.native))}(ho);const Co=p.default;function Fo(e){return(e=Co.normalize(Co.resolve(e)).split(Co.sep)).length>0?e[0]:null}const go=/[<>:"|?*]/;var Ao=function(e){const t=Fo(e);return e=e.replace(t,""),go.test(e)};const vo=we,So=p.default,wo=Ao,Oo=parseInt("0777",8);var bo=function e(t,n,r,u){if("function"==typeof n?(r=n,n={}):n&&"object"==typeof n||(n={mode:n}),"win32"===process.platform&&wo(t)){const e=new Error(t+" contains invalid WIN32 path characters.");return e.code="EINVAL",r(e)}let o=n.mode;const i=n.fs||vo;void 0===o&&(o=Oo&~process.umask()),u||(u=null),r=r||function(){},t=So.resolve(t),i.mkdir(t,o,(o=>{if(!o)return r(null,u=u||t);if("ENOENT"===o.code){if(So.dirname(t)===t)return r(o);e(So.dirname(t),n,((u,o)=>{u?r(u,o):e(t,n,r,o)}))}else i.stat(t,((e,t)=>{e||!t.isDirectory()?r(o,u):r(null,u)}))}))};const _o=we,Bo=p.default,Po=Ao,ko=parseInt("0777",8);var xo=function e(t,n,r){n&&"object"==typeof n||(n={mode:n});let u=n.mode;const o=n.fs||_o;if("win32"===process.platform&&Po(t)){const e=new Error(t+" contains invalid WIN32 path characters.");throw e.code="EINVAL",e}void 0===u&&(u=ko&~process.umask()),r||(r=null),t=Bo.resolve(t);try{o.mkdirSync(t,u),r=r||t}catch(u){if("ENOENT"===u.code){if(Bo.dirname(t)===t)throw u;r=e(Bo.dirname(t),n,r),e(t,n,r)}else{let e;try{e=o.statSync(t)}catch(e){throw u}if(!e.isDirectory())throw u}}return r};const No=(0,yo.fromCallback)(bo);var Io={mkdirs:No,mkdirsSync:xo,mkdirp:No,mkdirpSync:xo,ensureDir:No,ensureDirSync:xo};const To=we;E.default,p.default;var Ro=function(e,t,n,r){To.open(e,"r+",((e,u)=>{if(e)return r(e);To.futimes(u,t,n,(e=>{To.close(u,(t=>{r&&r(e||t)}))}))}))},Mo=function(e,t,n){const r=To.openSync(e,"r+");return To.futimesSync(r,t,n),To.closeSync(r)};const Lo=we,jo=p.default,$o=10,Ho=5,Jo=0,Go=process.versions.node.split("."),Vo=Number.parseInt(Go[0],10),Uo=Number.parseInt(Go[1],10),Wo=Number.parseInt(Go[2],10);function zo(){if(Vo>$o)return!0;if(Vo===$o){if(Uo>Ho)return!0;if(Uo===Ho&&Wo>=Jo)return!0}return!1}function Ko(e,t){const n=jo.resolve(e).split(jo.sep).filter((e=>e)),r=jo.resolve(t).split(jo.sep).filter((e=>e));return n.reduce(((e,t,n)=>e&&r[n]===t),!0)}function qo(e,t,n){return`Cannot ${n} '${e}' to a subdirectory of itself, '${t}'.`}var Yo,Xo,Zo={checkPaths:function(e,t,n,r){!function(e,t,n){zo()?Lo.stat(e,{bigint:!0},((e,r)=>{if(e)return n(e);Lo.stat(t,{bigint:!0},((e,t)=>e?"ENOENT"===e.code?n(null,{srcStat:r,destStat:null}):n(e):n(null,{srcStat:r,destStat:t})))})):Lo.stat(e,((e,r)=>{if(e)return n(e);Lo.stat(t,((e,t)=>e?"ENOENT"===e.code?n(null,{srcStat:r,destStat:null}):n(e):n(null,{srcStat:r,destStat:t})))}))}(e,t,((u,o)=>{if(u)return r(u);const{srcStat:i,destStat:s}=o;return s&&s.ino&&s.dev&&s.ino===i.ino&&s.dev===i.dev?r(new Error("Source and destination must not be the same.")):i.isDirectory()&&Ko(e,t)?r(new Error(qo(e,t,n))):r(null,{srcStat:i,destStat:s})}))},checkPathsSync:function(e,t,n){const{srcStat:r,destStat:u}=function(e,t){let n,r;n=zo()?Lo.statSync(e,{bigint:!0}):Lo.statSync(e);try{r=zo()?Lo.statSync(t,{bigint:!0}):Lo.statSync(t)}catch(e){if("ENOENT"===e.code)return{srcStat:n,destStat:null};throw e}return{srcStat:n,destStat:r}}(e,t);if(u&&u.ino&&u.dev&&u.ino===r.ino&&u.dev===r.dev)throw new Error("Source and destination must not be the same.");if(r.isDirectory()&&Ko(e,t))throw new Error(qo(e,t,n));return{srcStat:r,destStat:u}},checkParentPaths:function e(t,n,r,u,o){const i=jo.resolve(jo.dirname(t)),s=jo.resolve(jo.dirname(r));if(s===i||s===jo.parse(s).root)return o();zo()?Lo.stat(s,{bigint:!0},((i,c)=>i?"ENOENT"===i.code?o():o(i):c.ino&&c.dev&&c.ino===n.ino&&c.dev===n.dev?o(new Error(qo(t,r,u))):e(t,n,s,u,o))):Lo.stat(s,((i,c)=>i?"ENOENT"===i.code?o():o(i):c.ino&&c.dev&&c.ino===n.ino&&c.dev===n.dev?o(new Error(qo(t,r,u))):e(t,n,s,u,o)))},checkParentPathsSync:function e(t,n,r,u){const o=jo.resolve(jo.dirname(t)),i=jo.resolve(jo.dirname(r));if(i===o||i===jo.parse(i).root)return;let s;try{s=zo()?Lo.statSync(i,{bigint:!0}):Lo.statSync(i)}catch(e){if("ENOENT"===e.code)return;throw e}if(s.ino&&s.dev&&s.ino===n.ino&&s.dev===n.dev)throw new Error(qo(t,r,u));return e(t,n,i,u)},isSrcSubdir:Ko};const Qo=we,ei=p.default,ti=Io.mkdirsSync,ni=Mo,ri=Zo;function ui(e,t,n,r){if(!r.filter||r.filter(t,n))return function(e,t,n,r){const u=r.dereference?Qo.statSync:Qo.lstatSync,o=u(t);if(o.isDirectory())return function(e,t,n,r,u){if(!t)return function(e,t,n,r){return Qo.mkdirSync(n),ii(t,n,r),Qo.chmodSync(n,e.mode)}(e,n,r,u);if(t&&!t.isDirectory())throw new Error(`Cannot overwrite non-directory '${r}' with directory '${n}'.`);return ii(n,r,u)}(o,e,t,n,r);if(o.isFile()||o.isCharacterDevice()||o.isBlockDevice())return function(e,t,n,r,u){return t?function(e,t,n,r){if(r.overwrite)return Qo.unlinkSync(n),oi(e,t,n,r);if(r.errorOnExist)throw new Error(`'${n}' already exists`)}(e,n,r,u):oi(e,n,r,u)}(o,e,t,n,r);if(o.isSymbolicLink())return function(e,t,n,r){let u=Qo.readlinkSync(t);r.dereference&&(u=ei.resolve(process.cwd(),u));if(e){let e;try{e=Qo.readlinkSync(n)}catch(e){if("EINVAL"===e.code||"UNKNOWN"===e.code)return Qo.symlinkSync(u,n);throw e}if(r.dereference&&(e=ei.resolve(process.cwd(),e)),ri.isSrcSubdir(u,e))throw new Error(`Cannot copy '${u}' to a subdirectory of itself, '${e}'.`);if(Qo.statSync(n).isDirectory()&&ri.isSrcSubdir(e,u))throw new Error(`Cannot overwrite '${e}' with '${u}'.`);return function(e,t){return Qo.unlinkSync(t),Qo.symlinkSync(e,t)}(u,n)}return Qo.symlinkSync(u,n)}(e,t,n,r)}(e,t,n,r)}function oi(e,t,n,r){return"function"==typeof Qo.copyFileSync?(Qo.copyFileSync(t,n),Qo.chmodSync(n,e.mode),r.preserveTimestamps?ni(n,e.atime,e.mtime):void 0):function(e,t,n,r){const u=65536,o=(Xo?Yo:(Xo=1,Yo=function(e){if("function"==typeof Buffer.allocUnsafe)try{return Buffer.allocUnsafe(e)}catch(t){return new Buffer(e)}return new Buffer(e)}))(u),i=Qo.openSync(t,"r"),s=Qo.openSync(n,"w",e.mode);let c=0;for(;cfunction(e,t,n,r){const u=ei.join(t,e),o=ei.join(n,e),{destStat:i}=ri.checkPathsSync(u,o,"copy");return ui(i,u,o,r)}(r,e,t,n)))}var si=function(e,t,n){"function"==typeof n&&(n={filter:n}),(n=n||{}).clobber=!("clobber"in n)||!!n.clobber,n.overwrite="overwrite"in n?!!n.overwrite:n.clobber,n.preserveTimestamps&&"ia32"===process.arch&&console.warn("fs-extra: Using the preserveTimestamps option in 32-bit node is not recommended;\n\n see https://github.com/jprichardson/node-fs-extra/issues/269");const{srcStat:r,destStat:u}=ri.checkPathsSync(e,t,"copy");return ri.checkParentPathsSync(e,r,t,"copy"),function(e,t,n,r){if(r.filter&&!r.filter(t,n))return;const u=ei.dirname(n);Qo.existsSync(u)||ti(u);return ui(e,t,n,r)}(u,e,t,n)},ci={copySync:si};const ai=yo.fromPromise,li=ho;var fi={pathExists:ai((function(e){return li.access(e).then((()=>!0)).catch((()=>!1))})),pathExistsSync:li.existsSync};const di=we,Di=p.default,pi=Io.mkdirs,Ei=fi.pathExists,mi=Ro,hi=Zo;function yi(e,t,n,r,u){const o=Di.dirname(n);Ei(o,((i,s)=>i?u(i):s?Fi(e,t,n,r,u):void pi(o,(o=>o?u(o):Fi(e,t,n,r,u)))))}function Ci(e,t,n,r,u,o){Promise.resolve(u.filter(n,r)).then((i=>i?e(t,n,r,u,o):o()),(e=>o(e)))}function Fi(e,t,n,r,u){return r.filter?Ci(gi,e,t,n,r,u):gi(e,t,n,r,u)}function gi(e,t,n,r,u){(r.dereference?di.stat:di.lstat)(t,((o,i)=>o?u(o):i.isDirectory()?function(e,t,n,r,u,o){if(!t)return function(e,t,n,r,u){di.mkdir(n,(o=>{if(o)return u(o);Si(t,n,r,(t=>t?u(t):di.chmod(n,e.mode,u)))}))}(e,n,r,u,o);if(t&&!t.isDirectory())return o(new Error(`Cannot overwrite non-directory '${r}' with directory '${n}'.`));return Si(n,r,u,o)}(i,e,t,n,r,u):i.isFile()||i.isCharacterDevice()||i.isBlockDevice()?function(e,t,n,r,u,o){return t?function(e,t,n,r,u){if(!r.overwrite)return r.errorOnExist?u(new Error(`'${n}' already exists`)):u();di.unlink(n,(o=>o?u(o):Ai(e,t,n,r,u)))}(e,n,r,u,o):Ai(e,n,r,u,o)}(i,e,t,n,r,u):i.isSymbolicLink()?function(e,t,n,r,u){di.readlink(t,((t,o)=>t?u(t):(r.dereference&&(o=Di.resolve(process.cwd(),o)),e?void di.readlink(n,((t,i)=>t?"EINVAL"===t.code||"UNKNOWN"===t.code?di.symlink(o,n,u):u(t):(r.dereference&&(i=Di.resolve(process.cwd(),i)),hi.isSrcSubdir(o,i)?u(new Error(`Cannot copy '${o}' to a subdirectory of itself, '${i}'.`)):e.isDirectory()&&hi.isSrcSubdir(i,o)?u(new Error(`Cannot overwrite '${i}' with '${o}'.`)):function(e,t,n){di.unlink(t,(r=>r?n(r):di.symlink(e,t,n)))}(o,n,u)))):di.symlink(o,n,u))))}(e,t,n,r,u):void 0))}function Ai(e,t,n,r,u){return"function"==typeof di.copyFile?di.copyFile(t,n,(t=>t?u(t):vi(e,n,r,u))):function(e,t,n,r,u){const o=di.createReadStream(t);o.on("error",(e=>u(e))).once("open",(()=>{const t=di.createWriteStream(n,{mode:e.mode});t.on("error",(e=>u(e))).on("open",(()=>o.pipe(t))).once("close",(()=>vi(e,n,r,u)))}))}(e,t,n,r,u)}function vi(e,t,n,r){di.chmod(t,e.mode,(u=>u?r(u):n.preserveTimestamps?mi(t,e.atime,e.mtime,r):r()))}function Si(e,t,n,r){di.readdir(e,((u,o)=>u?r(u):wi(o,e,t,n,r)))}function wi(e,t,n,r,u){const o=e.pop();return o?function(e,t,n,r,u,o){const i=Di.join(n,t),s=Di.join(r,t);hi.checkPaths(i,s,"copy",((t,c)=>{if(t)return o(t);const{destStat:a}=c;Fi(a,i,s,u,(t=>t?o(t):wi(e,n,r,u,o)))}))}(e,o,t,n,r,u):u()}var Oi=function(e,t,n,r){"function"!=typeof n||r?"function"==typeof n&&(n={filter:n}):(r=n,n={}),r=r||function(){},(n=n||{}).clobber=!("clobber"in n)||!!n.clobber,n.overwrite="overwrite"in n?!!n.overwrite:n.clobber,n.preserveTimestamps&&"ia32"===process.arch&&console.warn("fs-extra: Using the preserveTimestamps option in 32-bit node is not recommended;\n\n see https://github.com/jprichardson/node-fs-extra/issues/269"),hi.checkPaths(e,t,"copy",((u,o)=>{if(u)return r(u);const{srcStat:i,destStat:s}=o;hi.checkParentPaths(e,i,t,"copy",(u=>u?r(u):n.filter?Ci(yi,s,e,t,n,r):yi(s,e,t,n,r)))}))};var bi={copy:(0,yo.fromCallback)(Oi)};const _i=we,Bi=p.default,Pi=g.default,ki="win32"===process.platform;function xi(e){["unlink","chmod","stat","lstat","rmdir","readdir"].forEach((t=>{e[t]=e[t]||_i[t],e[t+="Sync"]=e[t]||_i[t]})),e.maxBusyTries=e.maxBusyTries||3}function Ni(e,t,n){let r=0;"function"==typeof t&&(n=t,t={}),Pi(e,"rimraf: missing path"),Pi.strictEqual(typeof e,"string","rimraf: path should be a string"),Pi.strictEqual(typeof n,"function","rimraf: callback function required"),Pi(t,"rimraf: invalid options argument provided"),Pi.strictEqual(typeof t,"object","rimraf: options should be object"),xi(t),Ii(e,t,(function u(o){if(o){if(("EBUSY"===o.code||"ENOTEMPTY"===o.code||"EPERM"===o.code)&&rIi(e,t,u)),100*r)}"ENOENT"===o.code&&(o=null)}n(o)}))}function Ii(e,t,n){Pi(e),Pi(t),Pi("function"==typeof n),t.lstat(e,((r,u)=>r&&"ENOENT"===r.code?n(null):r&&"EPERM"===r.code&&ki?Ti(e,t,r,n):u&&u.isDirectory()?Mi(e,t,r,n):void t.unlink(e,(r=>{if(r){if("ENOENT"===r.code)return n(null);if("EPERM"===r.code)return ki?Ti(e,t,r,n):Mi(e,t,r,n);if("EISDIR"===r.code)return Mi(e,t,r,n)}return n(r)}))))}function Ti(e,t,n,r){Pi(e),Pi(t),Pi("function"==typeof r),n&&Pi(n instanceof Error),t.chmod(e,438,(u=>{u?r("ENOENT"===u.code?null:n):t.stat(e,((u,o)=>{u?r("ENOENT"===u.code?null:n):o.isDirectory()?Mi(e,t,n,r):t.unlink(e,r)}))}))}function Ri(e,t,n){let r;Pi(e),Pi(t),n&&Pi(n instanceof Error);try{t.chmodSync(e,438)}catch(e){if("ENOENT"===e.code)return;throw n}try{r=t.statSync(e)}catch(e){if("ENOENT"===e.code)return;throw n}r.isDirectory()?ji(e,t,n):t.unlinkSync(e)}function Mi(e,t,n,r){Pi(e),Pi(t),n&&Pi(n instanceof Error),Pi("function"==typeof r),t.rmdir(e,(u=>{!u||"ENOTEMPTY"!==u.code&&"EEXIST"!==u.code&&"EPERM"!==u.code?u&&"ENOTDIR"===u.code?r(n):r(u):function(e,t,n){Pi(e),Pi(t),Pi("function"==typeof n),t.readdir(e,((r,u)=>{if(r)return n(r);let o,i=u.length;if(0===i)return t.rmdir(e,n);u.forEach((r=>{Ni(Bi.join(e,r),t,(r=>{if(!o)return r?n(o=r):void(0==--i&&t.rmdir(e,n))}))}))}))}(e,t,r)}))}function Li(e,t){let n;xi(t=t||{}),Pi(e,"rimraf: missing path"),Pi.strictEqual(typeof e,"string","rimraf: path should be a string"),Pi(t,"rimraf: missing options"),Pi.strictEqual(typeof t,"object","rimraf: options should be object");try{n=t.lstatSync(e)}catch(n){if("ENOENT"===n.code)return;"EPERM"===n.code&&ki&&Ri(e,t,n)}try{n&&n.isDirectory()?ji(e,t,null):t.unlinkSync(e)}catch(n){if("ENOENT"===n.code)return;if("EPERM"===n.code)return ki?Ri(e,t,n):ji(e,t,n);if("EISDIR"!==n.code)throw n;ji(e,t,n)}}function ji(e,t,n){Pi(e),Pi(t),n&&Pi(n instanceof Error);try{t.rmdirSync(e)}catch(r){if("ENOTDIR"===r.code)throw n;if("ENOTEMPTY"===r.code||"EEXIST"===r.code||"EPERM"===r.code)!function(e,t){if(Pi(e),Pi(t),t.readdirSync(e).forEach((n=>Li(Bi.join(e,n),t))),!ki){return t.rmdirSync(e,t)}{const n=Date.now();do{try{return t.rmdirSync(e,t)}catch(e){}}while(Date.now()-n<500)}}(e,t);else if("ENOENT"!==r.code)throw r}}var $i=Ni;Ni.sync=Li;const Hi=$i;var Ji={remove:(0,yo.fromCallback)(Hi),removeSync:Hi.sync};const Gi=yo.fromCallback,Vi=we,Ui=p.default,Wi=Io,zi=Ji,Ki=Gi((function(e,t){t=t||function(){},Vi.readdir(e,((n,r)=>{if(n)return Wi.mkdirs(e,t);r=r.map((t=>Ui.join(e,t))),function e(){const n=r.pop();if(!n)return t();zi.remove(n,(n=>{if(n)return t(n);e()}))}()}))}));function qi(e){let t;try{t=Vi.readdirSync(e)}catch(t){return Wi.mkdirsSync(e)}t.forEach((t=>{t=Ui.join(e,t),zi.removeSync(t)}))}var Yi={emptyDirSync:qi,emptydirSync:qi,emptyDir:Ki,emptydir:Ki};const Xi=yo.fromCallback,Zi=p.default,Qi=we,es=Io,ts=fi.pathExists;var ns={createFile:Xi((function(e,t){function n(){Qi.writeFile(e,"",(e=>{if(e)return t(e);t()}))}Qi.stat(e,((r,u)=>{if(!r&&u.isFile())return t();const o=Zi.dirname(e);ts(o,((e,r)=>e?t(e):r?n():void es.mkdirs(o,(e=>{if(e)return t(e);n()}))))}))})),createFileSync:function(e){let t;try{t=Qi.statSync(e)}catch(e){}if(t&&t.isFile())return;const n=Zi.dirname(e);Qi.existsSync(n)||es.mkdirsSync(n),Qi.writeFileSync(e,"")}};const rs=yo.fromCallback,us=p.default,os=we,is=Io,ss=fi.pathExists;var cs={createLink:rs((function(e,t,n){function r(e,t){os.link(e,t,(e=>{if(e)return n(e);n(null)}))}ss(t,((u,o)=>u?n(u):o?n(null):void os.lstat(e,(u=>{if(u)return u.message=u.message.replace("lstat","ensureLink"),n(u);const o=us.dirname(t);ss(o,((u,i)=>u?n(u):i?r(e,t):void is.mkdirs(o,(u=>{if(u)return n(u);r(e,t)}))))}))))})),createLinkSync:function(e,t){if(os.existsSync(t))return;try{os.lstatSync(e)}catch(e){throw e.message=e.message.replace("lstat","ensureLink"),e}const n=us.dirname(t);return os.existsSync(n)||is.mkdirsSync(n),os.linkSync(e,t)}};const as=p.default,ls=we,fs=fi.pathExists;var ds={symlinkPaths:function(e,t,n){if(as.isAbsolute(e))return ls.lstat(e,(t=>t?(t.message=t.message.replace("lstat","ensureSymlink"),n(t)):n(null,{toCwd:e,toDst:e})));{const r=as.dirname(t),u=as.join(r,e);return fs(u,((t,o)=>t?n(t):o?n(null,{toCwd:u,toDst:e}):ls.lstat(e,(t=>t?(t.message=t.message.replace("lstat","ensureSymlink"),n(t)):n(null,{toCwd:e,toDst:as.relative(r,e)})))))}},symlinkPathsSync:function(e,t){let n;if(as.isAbsolute(e)){if(n=ls.existsSync(e),!n)throw new Error("absolute srcpath does not exist");return{toCwd:e,toDst:e}}{const r=as.dirname(t),u=as.join(r,e);if(n=ls.existsSync(u),n)return{toCwd:u,toDst:e};if(n=ls.existsSync(e),!n)throw new Error("relative srcpath does not exist");return{toCwd:e,toDst:as.relative(r,e)}}}};const Ds=we;var ps={symlinkType:function(e,t,n){if(n="function"==typeof t?t:n,t="function"!=typeof t&&t)return n(null,t);Ds.lstat(e,((e,r)=>{if(e)return n(null,"file");t=r&&r.isDirectory()?"dir":"file",n(null,t)}))},symlinkTypeSync:function(e,t){let n;if(t)return t;try{n=Ds.lstatSync(e)}catch(e){return"file"}return n&&n.isDirectory()?"dir":"file"}};const Es=yo.fromCallback,ms=p.default,hs=we,ys=Io.mkdirs,Cs=Io.mkdirsSync,Fs=ds.symlinkPaths,gs=ds.symlinkPathsSync,As=ps.symlinkType,vs=ps.symlinkTypeSync,Ss=fi.pathExists;var ws={createSymlink:Es((function(e,t,n,r){r="function"==typeof n?n:r,n="function"!=typeof n&&n,Ss(t,((u,o)=>u?r(u):o?r(null):void Fs(e,t,((u,o)=>{if(u)return r(u);e=o.toDst,As(o.toCwd,n,((n,u)=>{if(n)return r(n);const o=ms.dirname(t);Ss(o,((n,i)=>n?r(n):i?hs.symlink(e,t,u,r):void ys(o,(n=>{if(n)return r(n);hs.symlink(e,t,u,r)}))))}))}))))})),createSymlinkSync:function(e,t,n){if(hs.existsSync(t))return;const r=gs(e,t);e=r.toDst,n=vs(r.toCwd,n);const u=ms.dirname(t);return hs.existsSync(u)||Cs(u),hs.symlinkSync(e,t,n)}};var Os,bs={createFile:ns.createFile,createFileSync:ns.createFileSync,ensureFile:ns.createFile,ensureFileSync:ns.createFileSync,createLink:cs.createLink,createLinkSync:cs.createLinkSync,ensureLink:cs.createLink,ensureLinkSync:cs.createLinkSync,createSymlink:ws.createSymlink,createSymlinkSync:ws.createSymlinkSync,ensureSymlink:ws.createSymlink,ensureSymlinkSync:ws.createSymlinkSync};try{Os=we}catch(e){Os=D.default}function _s(e,t){var n,r="\n";return"object"==typeof t&&null!==t&&(t.spaces&&(n=t.spaces),t.EOL&&(r=t.EOL)),JSON.stringify(e,t?t.replacer:null,n).replace(/\n/g,r)+r}function Bs(e){return Buffer.isBuffer(e)&&(e=e.toString("utf8")),e=e.replace(/^\uFEFF/,"")}var Ps={readFile:function(e,t,n){null==n&&(n=t,t={}),"string"==typeof t&&(t={encoding:t});var r=(t=t||{}).fs||Os,u=!0;"throws"in t&&(u=t.throws),r.readFile(e,t,(function(r,o){if(r)return n(r);var i;o=Bs(o);try{i=JSON.parse(o,t?t.reviver:null)}catch(t){return u?(t.message=e+": "+t.message,n(t)):n(null,null)}n(null,i)}))},readFileSync:function(e,t){"string"==typeof(t=t||{})&&(t={encoding:t});var n=t.fs||Os,r=!0;"throws"in t&&(r=t.throws);try{var u=n.readFileSync(e,t);return u=Bs(u),JSON.parse(u,t.reviver)}catch(t){if(r)throw t.message=e+": "+t.message,t;return null}},writeFile:function(e,t,n,r){null==r&&(r=n,n={});var u=(n=n||{}).fs||Os,o="";try{o=_s(t,n)}catch(e){return void(r&&r(e,null))}u.writeFile(e,o,n,r)},writeFileSync:function(e,t,n){var r=(n=n||{}).fs||Os,u=_s(t,n);return r.writeFileSync(e,u,n)}},ks=Ps;const xs=yo.fromCallback,Ns=ks;var Is={readJson:xs(Ns.readFile),readJsonSync:Ns.readFileSync,writeJson:xs(Ns.writeFile),writeJsonSync:Ns.writeFileSync};const Ts=p.default,Rs=Io,Ms=fi.pathExists,Ls=Is;var js=function(e,t,n,r){"function"==typeof n&&(r=n,n={});const u=Ts.dirname(e);Ms(u,((o,i)=>o?r(o):i?Ls.writeJson(e,t,n,r):void Rs.mkdirs(u,(u=>{if(u)return r(u);Ls.writeJson(e,t,n,r)}))))};const $s=we,Hs=p.default,Js=Io,Gs=Is;var Vs=function(e,t,n){const r=Hs.dirname(e);$s.existsSync(r)||Js.mkdirsSync(r),Gs.writeJsonSync(e,t,n)};const Us=yo.fromCallback,Ws=Is;Ws.outputJson=Us(js),Ws.outputJsonSync=Vs,Ws.outputJSON=Ws.outputJson,Ws.outputJSONSync=Ws.outputJsonSync,Ws.writeJSON=Ws.writeJson,Ws.writeJSONSync=Ws.writeJsonSync,Ws.readJSON=Ws.readJson,Ws.readJSONSync=Ws.readJsonSync;var zs=Ws;const Ks=we,qs=p.default,Ys=ci.copySync,Xs=Ji.removeSync,Zs=Io.mkdirpSync,Qs=Zo;function ec(e,t,n){try{Ks.renameSync(e,t)}catch(r){if("EXDEV"!==r.code)throw r;return function(e,t,n){const r={overwrite:n,errorOnExist:!0};return Ys(e,t,r),Xs(e)}(e,t,n)}}var tc=function(e,t,n){const r=(n=n||{}).overwrite||n.clobber||!1,{srcStat:u}=Qs.checkPathsSync(e,t,"move");return Qs.checkParentPathsSync(e,u,t,"move"),Zs(qs.dirname(t)),function(e,t,n){if(n)return Xs(t),ec(e,t,n);if(Ks.existsSync(t))throw new Error("dest already exists.");return ec(e,t,n)}(e,t,r)},nc={moveSync:tc};const rc=we,uc=p.default,oc=bi.copy,ic=Ji.remove,sc=Io.mkdirp,cc=fi.pathExists,ac=Zo;function lc(e,t,n,r){rc.rename(e,t,(u=>u?"EXDEV"!==u.code?r(u):function(e,t,n,r){const u={overwrite:n,errorOnExist:!0};oc(e,t,u,(t=>t?r(t):ic(e,r)))}(e,t,n,r):r()))}var fc=function(e,t,n,r){"function"==typeof n&&(r=n,n={});const u=n.overwrite||n.clobber||!1;ac.checkPaths(e,t,"move",((n,o)=>{if(n)return r(n);const{srcStat:i}=o;ac.checkParentPaths(e,i,t,"move",(n=>{if(n)return r(n);sc(uc.dirname(t),(n=>n?r(n):function(e,t,n,r){if(n)return ic(t,(u=>u?r(u):lc(e,t,n,r)));cc(t,((u,o)=>u?r(u):o?r(new Error("dest already exists.")):lc(e,t,n,r)))}(e,t,u,r)))}))}))};var dc={move:(0,yo.fromCallback)(fc)};const Dc=yo.fromCallback,pc=we,Ec=p.default,mc=Io,hc=fi.pathExists;var yc={outputFile:Dc((function(e,t,n,r){"function"==typeof n&&(r=n,n="utf8");const u=Ec.dirname(e);hc(u,((o,i)=>o?r(o):i?pc.writeFile(e,t,n,r):void mc.mkdirs(u,(u=>{if(u)return r(u);pc.writeFile(e,t,n,r)}))))})),outputFileSync:function(e,...t){const n=Ec.dirname(e);if(pc.existsSync(n))return pc.writeFileSync(e,...t);mc.mkdirsSync(n),pc.writeFileSync(e,...t)}};!function(e){e.exports=Object.assign({},ho,ci,bi,Yi,bs,zs,Io,nc,dc,yc,fi,Ji);const t=D.default;Object.getOwnPropertyDescriptor(t,"promises")&&Object.defineProperty(e.exports,"promises",{get:()=>t.promises})}(mo);const Cc=Nr.exports("streamroller:fileNameFormatter"),Fc=p.default;const gc=Nr.exports("streamroller:fileNameParser"),Ac=nu.exports;const vc=Nr.exports("streamroller:moveAndMaybeCompressFile"),Sc=mo.exports,wc=v.default;var Oc=async(e,t,n)=>{if(n=function(e){const t={mode:parseInt("0600",8),compress:!1},n=Object.assign({},t,e);return vc(`_parseOption: moveAndMaybeCompressFile called with option=${JSON.stringify(n)}`),n}(n),e!==t){if(await Sc.pathExists(e))if(vc(`moveAndMaybeCompressFile: moving file from ${e} to ${t} ${n.compress?"with":"without"} compress`),n.compress)await new Promise(((r,u)=>{let o=!1;const i=Sc.createWriteStream(t,{mode:n.mode,flags:"wx"}).on("open",(()=>{o=!0;const t=Sc.createReadStream(e).on("open",(()=>{t.pipe(wc.createGzip()).pipe(i)})).on("error",(t=>{vc(`moveAndMaybeCompressFile: error reading ${e}`,t),i.destroy(t)}))})).on("finish",(()=>{vc(`moveAndMaybeCompressFile: finished compressing ${t}, deleting ${e}`),Sc.unlink(e).then(r).catch((t=>{vc(`moveAndMaybeCompressFile: error deleting ${e}, truncating instead`,t),Sc.truncate(e).then(r).catch((t=>{vc(`moveAndMaybeCompressFile: error truncating ${e}`,t),u(t)}))}))})).on("error",(e=>{o?(vc(`moveAndMaybeCompressFile: error writing ${t}, deleting`,e),Sc.unlink(t).then((()=>{u(e)})).catch((e=>{vc(`moveAndMaybeCompressFile: error deleting ${t}`,e),u(e)}))):(vc(`moveAndMaybeCompressFile: error creating ${t}`,e),u(e))}))})).catch((()=>{}));else{vc(`moveAndMaybeCompressFile: renaming ${e} to ${t}`);try{await Sc.move(e,t,{overwrite:!0})}catch(n){if(vc(`moveAndMaybeCompressFile: error renaming ${e} to ${t}`,n),"ENOENT"!==n.code){vc("moveAndMaybeCompressFile: trying copy+truncate instead");try{await Sc.copy(e,t,{overwrite:!0}),await Sc.truncate(e)}catch(e){vc("moveAndMaybeCompressFile: error copy+truncate",e)}}}}}else vc("moveAndMaybeCompressFile: source and target are the same, not doing anything")};const bc=Nr.exports("streamroller:RollingFileWriteStream"),_c=mo.exports,Bc=p.default,Pc=E.default,kc=()=>new Date,xc=nu.exports,{Writable:Nc}=C.default,Ic=({file:e,keepFileExt:t,needsIndex:n,alwaysIncludeDate:r,compress:u,fileNameSep:o})=>{let i=o||".";const s=Fc.join(e.dir,e.name),c=t=>t+e.ext,a=(e,t,r)=>!n&&r||!t?e:e+i+t,l=(e,t,n)=>(t>0||r)&&n?e+i+n:e,f=(e,t)=>t&&u?e+".gz":e,d=t?[l,a,c,f]:[c,l,a,f];return({date:e,index:t})=>(Cc(`_formatFileName: date=${e}, index=${t}`),d.reduce(((n,r)=>r(n,t,e)),s))},Tc=({file:e,keepFileExt:t,pattern:n,fileNameSep:r})=>{let u=r||".";const o="__NOT_MATCHING__";let i=[(e,t)=>e.endsWith(".gz")?(gc("it is gzipped"),t.isCompressed=!0,e.slice(0,-1*".gz".length)):e,t?t=>t.startsWith(e.name)&&t.endsWith(e.ext)?(gc("it starts and ends with the right things"),t.slice(e.name.length+1,-1*e.ext.length)):o:t=>t.startsWith(e.base)?(gc("it starts with the right things"),t.slice(e.base.length+1)):o,n?(e,t)=>{const r=e.split(u);let o=r[r.length-1];gc("items: ",r,", indexStr: ",o);let i=e;void 0!==o&&o.match(/^\d+$/)?(i=e.slice(0,-1*(o.length+1)),gc(`dateStr is ${i}`),n&&!i&&(i=o,o="0")):o="0";try{const r=Ac.parse(n,i,new Date(0,0));return Ac.asString(n,r)!==i?e:(t.index=parseInt(o,10),t.date=i,t.timestamp=r.getTime(),"")}catch(t){return gc(`Problem parsing ${i} as ${n}, error was: `,t),e}}:(e,t)=>e.match(/^\d+$/)?(gc("it has an index"),t.index=parseInt(e,10),""):e];return e=>{let t={filename:e,index:0,isCompressed:!1};return i.reduce(((e,n)=>n(e,t)),e)?null:t}},Rc=Oc;var Mc=class extends Nc{constructor(e,t){if(bc(`constructor: creating RollingFileWriteStream. path=${e}`),"string"!=typeof e||0===e.length)throw new Error(`Invalid filename: ${e}`);if(e.endsWith(Bc.sep))throw new Error(`Filename is a directory: ${e}`);0===e.indexOf(`~${Bc.sep}`)&&(e=e.replace("~",Pc.homedir())),super(t),this.options=this._parseOption(t),this.fileObject=Bc.parse(e),""===this.fileObject.dir&&(this.fileObject=Bc.parse(Bc.join(process.cwd(),e))),this.fileFormatter=Ic({file:this.fileObject,alwaysIncludeDate:this.options.alwaysIncludePattern,needsIndex:this.options.maxSize 0`)}else delete n.maxSize;if(n.numBackups||0===n.numBackups){if(n.numBackups<0)throw new Error(`options.numBackups (${n.numBackups}) should be >= 0`);if(n.numBackups>=Number.MAX_SAFE_INTEGER)throw new Error(`options.numBackups (${n.numBackups}) should be < Number.MAX_SAFE_INTEGER`);n.numToKeep=n.numBackups+1}else if(n.numToKeep<=0)throw new Error(`options.numToKeep (${n.numToKeep}) should be > 0`);return bc(`_parseOption: creating stream with option=${JSON.stringify(n)}`),n}_final(e){this.currentFileStream.end("",this.options.encoding,e)}_write(e,t,n){this._shouldRoll().then((()=>{bc(`_write: writing chunk. file=${this.currentFileStream.path} state=${JSON.stringify(this.state)} chunk=${e}`),this.currentFileStream.write(e,t,(t=>{this.state.currentSize+=e.length,n(t)}))}))}async _shouldRoll(){(this._dateChanged()||this._tooBig())&&(bc(`_shouldRoll: rolling because dateChanged? ${this._dateChanged()} or tooBig? ${this._tooBig()}`),await this._roll())}_dateChanged(){return this.state.currentDate&&this.state.currentDate!==xc(this.options.pattern,kc())}_tooBig(){return this.state.currentSize>=this.options.maxSize}_roll(){return bc("_roll: closing the current stream"),new Promise(((e,t)=>{this.currentFileStream.end("",this.options.encoding,(()=>{this._moveOldFiles().then(e).catch(t)}))}))}async _moveOldFiles(){const e=await this._getExistingFiles();for(let t=(this.state.currentDate?e.filter((e=>e.date===this.state.currentDate)):e).length;t>=0;t--){bc(`_moveOldFiles: i = ${t}`);const e=this.fileFormatter({date:this.state.currentDate,index:t}),n=this.fileFormatter({date:this.state.currentDate,index:t+1}),r={compress:this.options.compress&&0===t,mode:this.options.mode};await Rc(e,n,r)}this.state.currentSize=0,this.state.currentDate=this.state.currentDate?xc(this.options.pattern,kc()):null,bc(`_moveOldFiles: finished rolling files. state=${JSON.stringify(this.state)}`),this._renewWriteStream(),await new Promise(((e,t)=>{this.currentFileStream.write("","utf8",(()=>{this._clean().then(e).catch(t)}))}))}async _getExistingFiles(){const e=await _c.readdir(this.fileObject.dir).catch((()=>[]));bc(`_getExistingFiles: files=${e}`);const t=e.map((e=>this.fileNameParser(e))).filter((e=>e)),n=e=>(e.timestamp?e.timestamp:kc().getTime())-e.index;return t.sort(((e,t)=>n(e)-n(t))),t}_renewWriteStream(){const e=this.fileFormatter({date:this.state.currentDate,index:0}),t=e=>{try{return _c.mkdirSync(e,{recursive:!0})}catch(n){if("ENOENT"===n.code)return t(Bc.dirname(e)),t(e);if("EEXIST"!==n.code&&"EROFS"!==n.code)throw n;try{if(_c.statSync(e).isDirectory())return e;throw n}catch(e){throw n}}};t(this.fileObject.dir);const n={flags:this.options.flags,encoding:this.options.encoding,mode:this.options.mode};var r,u;_c.appendFileSync(e,"",(r={...n},u="flags",r["flag"]=r[u],delete r[u],r)),this.currentFileStream=_c.createWriteStream(e,n),this.currentFileStream.on("error",(e=>{this.emit("error",e)}))}async _clean(){const e=await this._getExistingFiles();if(bc(`_clean: numToKeep = ${this.options.numToKeep}, existingFiles = ${e.length}`),bc("_clean: existing files are: ",e),this._tooManyFiles(e.length)){const n=e.slice(0,e.length-this.options.numToKeep).map((e=>Bc.format({dir:this.fileObject.dir,base:e.filename})));await(t=n,bc(`deleteFiles: files to delete: ${t}`),Promise.all(t.map((e=>_c.unlink(e).catch((t=>{bc(`deleteFiles: error when unlinking ${e}, ignoring. Error was ${t}`)}))))))}var t}_tooManyFiles(e){return this.options.numToKeep>0&&e>this.options.numToKeep}};const Lc=Mc;var jc=class extends Lc{constructor(e,t,n,r){r||(r={}),t&&(r.maxSize=t),r.numBackups||0===r.numBackups||(n||0===n||(n=1),r.numBackups=n),super(e,r),this.backups=r.numBackups,this.size=this.options.maxSize}get theStream(){return this.currentFileStream}};const $c=Mc;var Hc={RollingFileWriteStream:Mc,RollingFileStream:jc,DateRollingFileStream:class extends $c{constructor(e,t,n){t&&"object"==typeof t&&(n=t,t=null),n||(n={}),t||(t="yyyy-MM-dd"),n.pattern=t,n.numBackups||0===n.numBackups?n.daysToKeep=n.numBackups:(n.daysToKeep||0===n.daysToKeep?process.emitWarning("options.daysToKeep is deprecated due to the confusion it causes when used together with file size rolling. Please use options.numBackups instead.","DeprecationWarning","streamroller-DEP0001"):n.daysToKeep=1,n.numBackups=n.daysToKeep),super(e,n),this.mode=this.options.mode}get theStream(){return this.currentFileStream}}};const Jc=Nr.exports("log4js:file"),Gc=p.default,Vc=Hc,Uc=E.default.EOL;let Wc=!1;const zc=new Set;function Kc(){zc.forEach((e=>{e.sighupHandler()}))}function qc(e,t,n,r){const u=new Vc.RollingFileStream(e,t,n,r);return u.on("error",(t=>{console.error("log4js.fileAppender - Writing to file %s, error happened ",e,t)})),u.on("drain",(()=>{process.emit("log4js:pause",!1)})),u}Eo.configure=function(e,t){let n=t.basicLayout;return e.layout&&(n=t.layout(e.layout.type,e.layout)),e.mode=e.mode||384,function(e,t,n,r,u,o){e=Gc.normalize(e),Jc("Creating file appender (",e,", ",n,", ",r=r||0===r?r:5,", ",u,", ",o,")");let i=qc(e,n,r,u);const s=function(e){if(i.writable){if(!0===u.removeColor){const t=/\x1b[[0-9;]*m/g;e.data=e.data.map((e=>"string"==typeof e?e.replace(t,""):e))}i.write(t(e,o)+Uc,"utf8")||process.emit("log4js:pause",!0)}};return s.reopen=function(){i.end((()=>{i=qc(e,n,r,u)}))},s.sighupHandler=function(){Jc("SIGHUP handler called."),s.reopen()},s.shutdown=function(e){zc.delete(s),0===zc.size&&Wc&&(process.removeListener("SIGHUP",Kc),Wc=!1),i.end("","utf-8",e)},zc.add(s),Wc||(process.on("SIGHUP",Kc),Wc=!0),s}(e.filename,n,e.maxLogSize,e.backups,e,e.timezoneOffset)};var Yc={};const Xc=Hc,Zc=E.default.EOL;function Qc(e,t,n,r,u){r.maxSize=r.maxLogSize;const o=function(e,t,n){const r=new Xc.DateRollingFileStream(e,t,n);return r.on("error",(t=>{console.error("log4js.dateFileAppender - Writing to file %s, error happened ",e,t)})),r.on("drain",(()=>{process.emit("log4js:pause",!1)})),r}(e,t,r),i=function(e){o.writable&&(o.write(n(e,u)+Zc,"utf8")||process.emit("log4js:pause",!0))};return i.shutdown=function(e){o.end("","utf-8",e)},i}Yc.configure=function(e,t){let n=t.basicLayout;return e.layout&&(n=t.layout(e.layout.type,e.layout)),e.alwaysIncludePattern||(e.alwaysIncludePattern=!1),e.mode=e.mode||384,Qc(e.filename,e.pattern,n,e,e.timezoneOffset)};var ea={};const ta=Nr.exports("log4js:fileSync"),na=p.default,ra=D.default,ua=E.default.EOL||"\n";function oa(e,t){if(ra.existsSync(e))return;const n=ra.openSync(e,t.flags,t.mode);ra.closeSync(n)}class ia{constructor(e,t,n,r){ta("In RollingFileStream"),function(){if(!e||!t||t<=0)throw new Error("You must specify a filename and file size")}(),this.filename=e,this.size=t,this.backups=n,this.options=r,this.currentSize=0,this.currentSize=function(e){let t=0;try{t=ra.statSync(e).size}catch(t){oa(e,r)}return t}(this.filename)}shouldRoll(){return ta("should roll with current size %d, and max size %d",this.currentSize,this.size),this.currentSize>=this.size}roll(e){const t=this,n=new RegExp(`^${na.basename(e)}`);function r(e){return n.test(e)}function u(t){return parseInt(t.substring(`${na.basename(e)}.`.length),10)||0}function o(e,t){return u(e)>u(t)?1:u(e) ${e}.${r+1}`),ra.renameSync(na.join(na.dirname(e),n),`${e}.${r+1}`)}}ta("Rolling, rolling, rolling"),ta("Renaming the old files"),ra.readdirSync(na.dirname(e)).filter(r).sort(o).reverse().forEach(i)}write(e,t){const n=this;ta("in write"),this.shouldRoll()&&(this.currentSize=0,this.roll(this.filename)),ta("writing the chunk to the file"),n.currentSize+=e.length,ra.appendFileSync(n.filename,e)}}ea.configure=function(e,t){let n=t.basicLayout;e.layout&&(n=t.layout(e.layout.type,e.layout));const r={flags:e.flags||"a",encoding:e.encoding||"utf8",mode:e.mode||384};return function(e,t,n,r,u,o){ta("fileSync appender created");const i=function(e,t,n){let r;var u;return t?r=new ia(e,t,n,o):(oa(u=e,o),r={write(e){ra.appendFileSync(u,e)}}),r}(e=na.normalize(e),n,r=r||0===r?r:5);return e=>{i.write(t(e,u)+ua)}}(e.filename,n,e.maxLogSize,e.backups,e.timezoneOffset,r)};var sa={};const ca=Nr.exports("log4js:tcp"),aa=S.default;sa.configure=function(e,t){ca(`configure with config = ${e}`);let n=function(e){return e.serialise()};return e.layout&&(n=t.layout(e.layout.type,e.layout)),function(e,t){let n=!1;const r=[];let u,o=3,i="__LOG4JS__";function s(e){ca("Writing log event to socket"),n=u.write(`${t(e)}${i}`,"utf8")}function c(){let e;for(ca("emptying buffer");e=r.shift();)s(e)}function a(e){n?s(e):(ca("buffering log event because it cannot write at the moment"),r.push(e))}return function t(){ca(`appender creating socket to ${e.host||"localhost"}:${e.port||5e3}`),i=`${e.endMsg||"__LOG4JS__"}`,u=aa.createConnection(e.port||5e3,e.host||"localhost"),u.on("connect",(()=>{ca("socket connected"),c(),n=!0})),u.on("drain",(()=>{ca("drain event received, emptying buffer"),n=!0,c()})),u.on("timeout",u.end.bind(u)),u.on("error",(e=>{ca("connection error",e),n=!1,c()})),u.on("close",t)}(),a.shutdown=function(e){ca("shutdown called"),r.length&&o?(ca("buffer has items, waiting 100ms to empty"),o-=1,setTimeout((()=>{a.shutdown(e)}),100)):(u.removeAllListeners("close"),u.end(e))},a}(e,n)};const la=p.default,fa=Nr.exports("log4js:appenders"),da=tu,Da=eo,pa=gu,Ea=hu,ma=to,ha=new Map;ha.set("console",oo),ha.set("stdout",so),ha.set("stderr",co),ha.set("logLevelFilter",ao),ha.set("categoryFilter",lo),ha.set("noLogFilter",Do),ha.set("file",Eo),ha.set("dateFile",Yc),ha.set("fileSync",ea),ha.set("tcp",sa);const ya=new Map,Ca=(e,t)=>{fa("Loading module from ",e);try{return require(e)}catch(n){return void da.throwExceptionIf(t,"MODULE_NOT_FOUND"!==n.code,`appender "${e}" could not be loaded (error was: ${n})`)}},Fa=new Set,ga=(e,t)=>{if(ya.has(e))return ya.get(e);if(!t.appenders[e])return!1;if(Fa.has(e))throw new Error(`Dependency loop detected for appender ${e}.`);Fa.add(e),fa(`Creating appender ${e}`);const n=Aa(e,t);return Fa.delete(e),ya.set(e,n),n},Aa=(e,t)=>{const n=t.appenders[e],r=n.type.configure?n.type:((e,t)=>ha.get(e)||Ca(`./${e}`,t)||Ca(e,t)||require.main&&Ca(la.join(la.dirname(require.main.filename),e),t)||Ca(la.join(process.cwd(),e),t))(n.type,t);return da.throwExceptionIf(t,da.not(r),`appender "${e}" is not valid (type "${n.type}" could not be found)`),r.appender&&fa(`DEPRECATION: Appender ${n.type} exports an appender function.`),r.shutdown&&fa(`DEPRECATION: Appender ${n.type} exports a shutdown function.`),fa(`${e}: clustering.isMaster ? ${Da.isMaster()}`),fa(`${e}: appenderModule is ${F.default.inspect(r)}`),Da.onlyOnMaster((()=>(fa(`calling appenderModule.configure for ${e} / ${n.type}`),r.configure(ma.modifyConfig(n),Ea,(e=>ga(e,t)),pa))),(()=>{}))},va=e=>{ya.clear(),Fa.clear();const t=[];Object.values(e.categories).forEach((e=>{t.push(...e.appenders)})),Object.keys(e.appenders).forEach((n=>{(t.includes(n)||"tcp-server"===e.appenders[n].type)&&ga(n,e)}))},Sa=()=>{va({appenders:{out:{type:"stdout"}},categories:{default:{appenders:["out"],level:"trace"}}})};Sa(),da.addListener((e=>{da.throwExceptionIf(e,da.not(da.anObject(e.appenders)),'must have a property "appenders" of type object.');const t=Object.keys(e.appenders);da.throwExceptionIf(e,da.not(t.length),"must define at least one appender."),t.forEach((t=>{da.throwExceptionIf(e,da.not(e.appenders[t].type),`appender "${t}" is not valid (must be an object with property "type")`)}))})),da.addListener(va),Au.exports=ya,Au.exports.init=Sa;var wa={exports:{}};!function(e){const t=Nr.exports("log4js:categories"),n=tu,r=gu,u=Au.exports,o=new Map;function i(e,t,n){if(!1===t.inherit)return;const r=n.lastIndexOf(".");if(r<0)return;const u=n.substring(0,r);let o=e.categories[u];o||(o={inherit:!0,appenders:[]}),i(e,o,u),!e.categories[u]&&o.appenders&&o.appenders.length&&o.level&&(e.categories[u]=o),t.appenders=t.appenders||[],t.level=t.level||o.level,o.appenders.forEach((e=>{t.appenders.includes(e)||t.appenders.push(e)})),t.parent=o}function s(e){if(!e.categories)return;Object.keys(e.categories).forEach((t=>{const n=e.categories[t];i(e,n,t)}))}n.addPreProcessingListener((e=>s(e))),n.addListener((e=>{n.throwExceptionIf(e,n.not(n.anObject(e.categories)),'must have a property "categories" of type object.');const t=Object.keys(e.categories);n.throwExceptionIf(e,n.not(t.length),"must define at least one category."),t.forEach((t=>{const o=e.categories[t];n.throwExceptionIf(e,[n.not(o.appenders),n.not(o.level)],`category "${t}" is not valid (must be an object with properties "appenders" and "level")`),n.throwExceptionIf(e,n.not(Array.isArray(o.appenders)),`category "${t}" is not valid (appenders must be an array of appender names)`),n.throwExceptionIf(e,n.not(o.appenders.length),`category "${t}" is not valid (appenders must contain at least one appender name)`),Object.prototype.hasOwnProperty.call(o,"enableCallStack")&&n.throwExceptionIf(e,"boolean"!=typeof o.enableCallStack,`category "${t}" is not valid (enableCallStack must be boolean type)`),o.appenders.forEach((r=>{n.throwExceptionIf(e,n.not(u.get(r)),`category "${t}" is not valid (appender "${r}" is not defined)`)})),n.throwExceptionIf(e,n.not(r.getLevel(o.level)),`category "${t}" is not valid (level "${o.level}" not recognised; valid levels are ${r.levels.join(", ")})`)})),n.throwExceptionIf(e,n.not(e.categories.default),'must define a "default" category.')}));const c=e=>{o.clear();Object.keys(e.categories).forEach((n=>{const i=e.categories[n],s=[];i.appenders.forEach((e=>{s.push(u.get(e)),t(`Creating category ${n}`),o.set(n,{appenders:s,level:r.getLevel(i.level),enableCallStack:i.enableCallStack||!1})}))}))},a=()=>{c({categories:{default:{appenders:["out"],level:"OFF"}}})};a(),n.addListener(c);const l=e=>(t(`configForCategory: searching for config for ${e}`),o.has(e)?(t(`configForCategory: ${e} exists in config, returning it`),o.get(e)):e.indexOf(".")>0?(t(`configForCategory: ${e} has hierarchy, searching for parents`),l(e.substring(0,e.lastIndexOf(".")))):(t("configForCategory: returning config for default category"),l("default")));e.exports=o,e.exports=Object.assign(e.exports,{appendersForCategory:e=>l(e).appenders,getLevelForCategory:e=>l(e).level,setLevelForCategory:(e,n)=>{let r=o.get(e);if(t(`setLevelForCategory: found ${r} for ${e}`),!r){const n=l(e);t(`setLevelForCategory: no config found for category, found ${n} for parents of ${e}`),r={appenders:n.appenders}}r.level=n,o.set(e,r)},getEnableCallStackForCategory:e=>!0===l(e).enableCallStack,setEnableCallStackForCategory:(e,t)=>{l(e).enableCallStack=t},init:a})}(wa);const Oa=Nr.exports("log4js:logger"),ba=Hu,_a=gu,Ba=eo,Pa=wa.exports,ka=tu,xa=/at (?:(.+)\s+\()?(?:(.+?):(\d+)(?::(\d+))?|([^)]+))\)?/;function Na(e,t=4){const n=e.stack.split("\n").slice(t),r=xa.exec(n[0]);return r&&6===r.length?{functionName:r[1],fileName:r[2],lineNumber:parseInt(r[3],10),columnNumber:parseInt(r[4],10),callStack:n.join("\n")}:null}class Ia{constructor(e){if(!e)throw new Error("No category provided.");this.category=e,this.context={},this.parseCallStack=Na,Oa(`Logger created (${this.category}, ${this.level})`)}get level(){return _a.getLevel(Pa.getLevelForCategory(this.category),_a.TRACE)}set level(e){Pa.setLevelForCategory(this.category,_a.getLevel(e,this.level))}get useCallStack(){return Pa.getEnableCallStackForCategory(this.category)}set useCallStack(e){Pa.setEnableCallStackForCategory(this.category,!0===e)}log(e,...t){let n=_a.getLevel(e);n||(this._log(_a.WARN,"log4js:logger.log: invalid value for log-level as first parameter given: ",e),n=_a.INFO),this.isLevelEnabled(n)&&this._log(n,t)}isLevelEnabled(e){return this.level.isLessThanOrEqualTo(e)}_log(e,t){Oa(`sending log data (${e}) to appenders`);const n=new ba(this.category,e,t,this.context,this.useCallStack&&this.parseCallStack(new Error));Ba.send(n)}addContext(e,t){this.context[e]=t}removeContext(e){delete this.context[e]}clearContext(){this.context={}}setParseCallStackFunction(e){this.parseCallStack=e}}function Ta(e){const t=_a.getLevel(e),n=t.toString().toLowerCase().replace(/_([a-z])/g,(e=>e[1].toUpperCase())),r=n[0].toUpperCase()+n.slice(1);Ia.prototype[`is${r}Enabled`]=function(){return this.isLevelEnabled(t)},Ia.prototype[n]=function(...e){this.log(t,...e)}}_a.levels.forEach(Ta),ka.addListener((()=>{_a.levels.forEach(Ta)}));var Ra=Ia;const Ma=gu;function La(e){return e.originalUrl||e.url}function ja(e,t){for(let n=0;ne.source?e.source:e));t=new RegExp(n.join("|"))}return t}(t.nolog);return(e,i,s)=>{if(e._logging)return s();if(o&&o.test(e.originalUrl))return s();if(n.isLevelEnabled(r)||"auto"===t.level){const o=new Date,{writeHead:s}=i;e._logging=!0,i.writeHead=(e,t)=>{i.writeHead=s,i.writeHead(e,t),i.__statusCode=e,i.__headers=t||{}},i.on("finish",(()=>{i.responseTime=new Date-o,i.statusCode&&"auto"===t.level&&(r=Ma.INFO,i.statusCode>=300&&(r=Ma.WARN),i.statusCode>=400&&(r=Ma.ERROR)),r=function(e,t,n){let r=t;if(n){const t=n.find((t=>{let n=!1;return n=t.from&&t.to?e>=t.from&&e<=t.to:-1!==t.codes.indexOf(e),n}));t&&(r=Ma.getLevel(t.level,r))}return r}(i.statusCode,r,t.statusRules);const s=function(e,t,n){const r=[];return r.push({token:":url",replacement:La(e)}),r.push({token:":protocol",replacement:e.protocol}),r.push({token:":hostname",replacement:e.hostname}),r.push({token:":method",replacement:e.method}),r.push({token:":status",replacement:t.__statusCode||t.statusCode}),r.push({token:":response-time",replacement:t.responseTime}),r.push({token:":date",replacement:(new Date).toUTCString()}),r.push({token:":referrer",replacement:e.headers.referer||e.headers.referrer||""}),r.push({token:":http-version",replacement:`${e.httpVersionMajor}.${e.httpVersionMinor}`}),r.push({token:":remote-addr",replacement:e.headers["x-forwarded-for"]||e.ip||e._remoteAddress||e.socket&&(e.socket.remoteAddress||e.socket.socket&&e.socket.socket.remoteAddress)}),r.push({token:":user-agent",replacement:e.headers["user-agent"]}),r.push({token:":content-length",replacement:t.getHeader("content-length")||t.__headers&&t.__headers["Content-Length"]||"-"}),r.push({token:/:req\[([^\]]+)]/g,replacement:(t,n)=>e.headers[n.toLowerCase()]}),r.push({token:/:res\[([^\]]+)]/g,replacement:(e,n)=>t.getHeader(n.toLowerCase())||t.__headers&&t.__headers[n]}),(e=>{const t=e.concat();for(let e=0;eja(e,s)));t&&n.log(r,t)}else n.log(r,ja(u,s));t.context&&n.removeContext("res")}))}return s()}},nl=Va;let rl=!1;function ul(e){if(!rl)return;Ua("Received log event ",e);Za.appendersForCategory(e.categoryName).forEach((t=>{t(e)}))}function ol(e){rl&&il();let t=e;return"string"==typeof t&&(t=function(e){Ua(`Loading configuration from ${e}`);try{return JSON.parse(Wa.readFileSync(e,"utf8"))}catch(t){throw new Error(`Problem reading config from file "${e}". Error was ${t.message}`,t)}}(e)),Ua(`Configuration is ${t}`),Ka.configure(za(t)),el.onMessage(ul),rl=!0,sl}function il(e){Ua("Shutdown called. Disabling all log writing."),rl=!1;const t=Array.from(Xa.values());Xa.init(),Za.init();const n=t.reduceRight(((e,t)=>t.shutdown?e+1:e),0);if(0===n)return Ua("No appenders with shutdown functions found."),void 0!==e&&e();let r,u=0;function o(t){r=r||t,u+=1,Ua(`Appender shutdowns complete: ${u} / ${n}`),u>=n&&(Ua("All shutdown functions completed."),e&&e(r))}return Ua(`Found ${n} appenders with shutdown functions.`),t.filter((e=>e.shutdown)).forEach((e=>e.shutdown(o))),null}const sl={getLogger:function(e){return rl||ol(process.env.LOG4JS_CONFIG||{appenders:{out:{type:"stdout"}},categories:{default:{appenders:["out"],level:"OFF"}}}),new Qa(e||"default")},configure:ol,shutdown:il,connectLogger:tl,levels:Ya,addLayout:qa.addLayout,recording:function(){return nl}};var cl=sl,al={};Object.defineProperty(al,"__esModule",{value:!0}),al.levelMap=al.getLevel=al.setCategoriesLevel=al.getConfiguration=al.setConfiguration=void 0;const ll=cl;let fl={appenders:{debug:{type:"stdout",layout:{type:"pattern",pattern:"[%d] > hvigor %p %c %[%m%]"}},info:{type:"stdout",layout:{type:"pattern",pattern:"[%d] > hvigor %[%m%]"}},"no-pattern-info":{type:"stdout",layout:{type:"pattern",pattern:"%m"}},wrong:{type:"stderr",layout:{type:"pattern",pattern:"[%d] > hvigor %[%p: %m%]"}},"just-debug":{type:"logLevelFilter",appender:"debug",level:"debug",maxLevel:"debug"},"just-info":{type:"logLevelFilter",appender:"info",level:"info",maxLevel:"info"},"just-wrong":{type:"logLevelFilter",appender:"wrong",level:"warn",maxLevel:"error"}},categories:{default:{appenders:["just-debug","just-info","just-wrong"],level:"debug"},"no-pattern-info":{appenders:["no-pattern-info"],level:"info"}}};al.setConfiguration=e=>{fl=e};al.getConfiguration=()=>fl;let dl=ll.levels.DEBUG;al.setCategoriesLevel=(e,t)=>{dl=e;const n=fl.categories;for(const r in n)(null==t?void 0:t.includes(r))||Object.prototype.hasOwnProperty.call(n,r)&&(n[r].level=e.levelStr)};al.getLevel=()=>dl,al.levelMap=new Map([["ALL",ll.levels.ALL],["MARK",ll.levels.MARK],["TRACE",ll.levels.TRACE],["DEBUG",ll.levels.DEBUG],["INFO",ll.levels.INFO],["WARN",ll.levels.WARN],["ERROR",ll.levels.ERROR],["FATAL",ll.levels.FATAL],["OFF",ll.levels.OFF]]);var Dl=w&&w.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var u=Object.getOwnPropertyDescriptor(t,n);u&&!("get"in u?!t.__esModule:u.writable||u.configurable)||(u={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,u)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),pl=w&&w.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),El=w&&w.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&Dl(t,e,n);return pl(t,e),t};Object.defineProperty(xr,"__esModule",{value:!0}),xr.evaluateLogLevel=xr.HvigorLogger=void 0;const ml=El(cl),hl=cl,yl=El(F.default),Cl=al;class Fl{constructor(e){ml.configure((0,Cl.getConfiguration)()),this._logger=ml.getLogger(e),this._logger.level=(0,Cl.getLevel)()}static getLogger(e){return new Fl(e)}log(e,...t){this._logger.log(e,...t)}debug(e,...t){this._logger.debug(e,...t)}info(e,...t){this._logger.info(e,...t)}warn(e,...t){void 0!==e&&""!==e&&this._logger.warn(e,...t)}error(e,...t){this._logger.error(e,...t)}_printTaskExecuteInfo(e,t){this.info(`Finished :${e}... after ${t}`)}_printFailedTaskInfo(e){this.error(`Failed :${e}... `)}_printDisabledTaskInfo(e){this.info(`Disabled :${e}... `)}_printUpToDateTaskInfo(e){this.info(`UP-TO-DATE :${e}... `)}errorMessageExit(e,...t){throw new Error(yl.format(e,...t))}errorExit(e,t,...n){t&&this._logger.error(t,n),this._logger.error(e.stack)}setLevel(e,t){(0,Cl.setCategoriesLevel)(e,t),ml.shutdown(),ml.configure((0,Cl.getConfiguration)())}getLevel(){return this._logger.level}configure(e){const t=(0,Cl.getConfiguration)(),n={appenders:{...t.appenders,...e.appenders},categories:{...t.categories,...e.categories}};(0,Cl.setConfiguration)(n),ml.shutdown(),ml.configure(n)}}xr.HvigorLogger=Fl,xr.evaluateLogLevel=function(e,t){t.debug?e.setLevel(hl.levels.DEBUG):t.warn?e.setLevel(hl.levels.WARN):t.error?e.setLevel(hl.levels.ERROR):e.setLevel(hl.levels.INFO)};var gl=w&&w.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(X,"__esModule",{value:!0}),X.parseJsonText=X.parseJsonFile=void 0;const Al=Z,vl=gl(kr),Sl=gl(p.default),wl=gl(E.default),Ol=xr.HvigorLogger.getLogger("parse-json-util");var bl;!function(e){e[e.Char=0]="Char",e[e.EOF=1]="EOF",e[e.Identifier=2]="Identifier"}(bl||(bl={}));let _l,Bl,Pl,kl,xl,Nl,Il="start",Tl=[],Rl=0,Ml=1,Ll=0,jl=!1,$l="default",Hl="'",Jl=1;function Gl(e,t=!1){Bl=String(e),Il="start",Tl=[],Rl=0,Ml=1,Ll=0,kl=void 0,jl=t;do{_l=Vl(),Xl[Il]()}while("eof"!==_l.type);return kl}function Vl(){for($l="default",xl="",Hl="'",Jl=1;;){Nl=Ul();const e=zl[$l]();if(e)return e}}function Ul(){if(Bl[Rl])return String.fromCodePoint(Bl.codePointAt(Rl))}function Wl(){const e=Ul();return"\n"===e?(Ml++,Ll=0):e?Ll+=e.length:Ll++,e&&(Rl+=e.length),e}X.parseJsonFile=function(e,t=!1,n="utf-8"){const r=vl.default.readFileSync(Sl.default.resolve(e),{encoding:n});try{return Gl(r,t)}catch(t){if(t instanceof SyntaxError){const n=t.message.split("at");2===n.length&&Ol.errorMessageExit(`${n[0].trim()}${wl.default.EOL}\t at ${e}:${n[1].trim()}`)}Ol.errorMessageExit(`${e} is not in valid JSON/JSON5 format.`)}},X.parseJsonText=Gl;const zl={default(){switch(Nl){case"/":return Wl(),void($l="comment");case void 0:return Wl(),Kl("eof")}if(!Al.JudgeUtil.isIgnoreChar(Nl)&&!Al.JudgeUtil.isSpaceSeparator(Nl))return zl[Il]();Wl()},start(){$l="value"},beforePropertyName(){switch(Nl){case"$":case"_":return xl=Wl(),void($l="identifierName");case"\\":return Wl(),void($l="identifierNameStartEscape");case"}":return Kl("punctuator",Wl());case'"':case"'":return Hl=Nl,Wl(),void($l="string")}if(Al.JudgeUtil.isIdStartChar(Nl))return xl+=Wl(),void($l="identifierName");throw tf(bl.Char,Wl())},afterPropertyName(){if(":"===Nl)return Kl("punctuator",Wl());throw tf(bl.Char,Wl())},beforePropertyValue(){$l="value"},afterPropertyValue(){switch(Nl){case",":case"}":return Kl("punctuator",Wl())}throw tf(bl.Char,Wl())},beforeArrayValue(){if("]"===Nl)return Kl("punctuator",Wl());$l="value"},afterArrayValue(){switch(Nl){case",":case"]":return Kl("punctuator",Wl())}throw tf(bl.Char,Wl())},end(){throw tf(bl.Char,Wl())},comment(){switch(Nl){case"*":return Wl(),void($l="multiLineComment");case"/":return Wl(),void($l="singleLineComment")}throw tf(bl.Char,Wl())},multiLineComment(){switch(Nl){case"*":return Wl(),void($l="multiLineCommentAsterisk");case void 0:throw tf(bl.Char,Wl())}Wl()},multiLineCommentAsterisk(){switch(Nl){case"*":return void Wl();case"/":return Wl(),void($l="default");case void 0:throw tf(bl.Char,Wl())}Wl(),$l="multiLineComment"},singleLineComment(){switch(Nl){case"\n":case"\r":case"\u2028":case"\u2029":return Wl(),void($l="default");case void 0:return Wl(),Kl("eof")}Wl()},value(){switch(Nl){case"{":case"[":return Kl("punctuator",Wl());case"n":return Wl(),ql("ull"),Kl("null",null);case"t":return Wl(),ql("rue"),Kl("boolean",!0);case"f":return Wl(),ql("alse"),Kl("boolean",!1);case"-":case"+":return"-"===Wl()&&(Jl=-1),void($l="numerical");case".":case"0":case"I":case"N":return void($l="numerical");case'"':case"'":return Hl=Nl,Wl(),xl="",void($l="string")}if(void 0===Nl||!Al.JudgeUtil.isDigitWithoutZero(Nl))throw tf(bl.Char,Wl());$l="numerical"},numerical(){switch(Nl){case".":return xl=Wl(),void($l="decimalPointLeading");case"0":return xl=Wl(),void($l="zero");case"I":return Wl(),ql("nfinity"),Kl("numeric",Jl*(1/0));case"N":return Wl(),ql("aN"),Kl("numeric",NaN)}if(void 0!==Nl&&Al.JudgeUtil.isDigitWithoutZero(Nl))return xl=Wl(),void($l="decimalInteger");throw tf(bl.Char,Wl())},zero(){switch(Nl){case".":case"e":case"E":return void($l="decimal");case"x":case"X":return xl+=Wl(),void($l="hexadecimal")}return Kl("numeric",0)},decimalInteger(){switch(Nl){case".":case"e":case"E":return void($l="decimal")}if(!Al.JudgeUtil.isDigit(Nl))return Kl("numeric",Jl*Number(xl));xl+=Wl()},decimal(){switch(Nl){case".":xl+=Wl(),$l="decimalFraction";break;case"e":case"E":xl+=Wl(),$l="decimalExponent"}},decimalPointLeading(){if(Al.JudgeUtil.isDigit(Nl))return xl+=Wl(),void($l="decimalFraction");throw tf(bl.Char,Wl())},decimalFraction(){switch(Nl){case"e":case"E":return xl+=Wl(),void($l="decimalExponent")}if(!Al.JudgeUtil.isDigit(Nl))return Kl("numeric",Jl*Number(xl));xl+=Wl()},decimalExponent(){switch(Nl){case"+":case"-":return xl+=Wl(),void($l="decimalExponentSign")}if(Al.JudgeUtil.isDigit(Nl))return xl+=Wl(),void($l="decimalExponentInteger");throw tf(bl.Char,Wl())},decimalExponentSign(){if(Al.JudgeUtil.isDigit(Nl))return xl+=Wl(),void($l="decimalExponentInteger");throw tf(bl.Char,Wl())},decimalExponentInteger(){if(!Al.JudgeUtil.isDigit(Nl))return Kl("numeric",Jl*Number(xl));xl+=Wl()},hexadecimal(){if(Al.JudgeUtil.isHexDigit(Nl))return xl+=Wl(),void($l="hexadecimalInteger");throw tf(bl.Char,Wl())},hexadecimalInteger(){if(!Al.JudgeUtil.isHexDigit(Nl))return Kl("numeric",Jl*Number(xl));xl+=Wl()},identifierNameStartEscape(){if("u"!==Nl)throw tf(bl.Char,Wl());Wl();const e=Yl();switch(e){case"$":case"_":break;default:if(!Al.JudgeUtil.isIdStartChar(e))throw tf(bl.Identifier)}xl+=e,$l="identifierName"},identifierName(){switch(Nl){case"$":case"_":case"‌":case"‍":return void(xl+=Wl());case"\\":return Wl(),void($l="identifierNameEscape")}if(!Al.JudgeUtil.isIdContinueChar(Nl))return Kl("identifier",xl);xl+=Wl()},identifierNameEscape(){if("u"!==Nl)throw tf(bl.Char,Wl());Wl();const e=Yl();switch(e){case"$":case"_":case"‌":case"‍":break;default:if(!Al.JudgeUtil.isIdContinueChar(e))throw tf(bl.Identifier)}xl+=e,$l="identifierName"},string(){switch(Nl){case"\\":return Wl(),void(xl+=function(){const e=Ul(),t=function(){switch(Ul()){case"b":return Wl(),"\b";case"f":return Wl(),"\f";case"n":return Wl(),"\n";case"r":return Wl(),"\r";case"t":return Wl(),"\t";case"v":return Wl(),"\v"}return}();if(t)return t;switch(e){case"0":if(Wl(),Al.JudgeUtil.isDigit(Ul()))throw tf(bl.Char,Wl());return"\0";case"x":return Wl(),function(){let e="",t=Ul();if(!Al.JudgeUtil.isHexDigit(t))throw tf(bl.Char,Wl());if(e+=Wl(),t=Ul(),!Al.JudgeUtil.isHexDigit(t))throw tf(bl.Char,Wl());return e+=Wl(),String.fromCodePoint(parseInt(e,16))}();case"u":return Wl(),Yl();case"\n":case"\u2028":case"\u2029":return Wl(),"";case"\r":return Wl(),"\n"===Ul()&&Wl(),""}if(void 0===e||Al.JudgeUtil.isDigitWithoutZero(e))throw tf(bl.Char,Wl());return Wl()}());case'"':case"'":if(Nl===Hl){const e=Kl("string",xl);return Wl(),e}return void(xl+=Wl());case"\n":case"\r":case void 0:throw tf(bl.Char,Wl());case"\u2028":case"\u2029":!function(e){Ol.warn(`JSON5: '${ef(e)}' in strings is not valid ECMAScript; consider escaping.`)}(Nl)}xl+=Wl()}};function Kl(e,t){return{type:e,value:t,line:Ml,column:Ll}}function ql(e){for(const t of e){if(Ul()!==t)throw tf(bl.Char,Wl());Wl()}}function Yl(){let e="",t=4;for(;t-- >0;){const t=Ul();if(!Al.JudgeUtil.isHexDigit(t))throw tf(bl.Char,Wl());e+=Wl()}return String.fromCodePoint(parseInt(e,16))}const Xl={start(){if("eof"===_l.type)throw tf(bl.EOF);Zl()},beforePropertyName(){switch(_l.type){case"identifier":case"string":return Pl=_l.value,void(Il="afterPropertyName");case"punctuator":return void Ql();case"eof":throw tf(bl.EOF)}},afterPropertyName(){if("eof"===_l.type)throw tf(bl.EOF);Il="beforePropertyValue"},beforePropertyValue(){if("eof"===_l.type)throw tf(bl.EOF);Zl()},afterPropertyValue(){if("eof"===_l.type)throw tf(bl.EOF);switch(_l.value){case",":return void(Il="beforePropertyName");case"}":Ql()}},beforeArrayValue(){if("eof"===_l.type)throw tf(bl.EOF);"punctuator"!==_l.type||"]"!==_l.value?Zl():Ql()},afterArrayValue(){if("eof"===_l.type)throw tf(bl.EOF);switch(_l.value){case",":return void(Il="beforeArrayValue");case"]":Ql()}},end(){}};function Zl(){const e=function(){let e;switch(_l.type){case"punctuator":switch(_l.value){case"{":e={};break;case"[":e=[]}break;case"null":case"boolean":case"numeric":case"string":e=_l.value}return e}();if(jl&&"object"==typeof e&&(e._line=Ml,e._column=Ll),void 0===kl)kl=e;else{const t=Tl[Tl.length-1];Array.isArray(t)?jl&&"object"!=typeof e?t.push({value:e,_line:Ml,_column:Ll}):t.push(e):t[Pl]=jl&&"object"!=typeof e?{value:e,_line:Ml,_column:Ll}:e}!function(e){if(e&&"object"==typeof e)Tl.push(e),Il=Array.isArray(e)?"beforeArrayValue":"beforePropertyName";else{const e=Tl[Tl.length-1];Il=e?Array.isArray(e)?"afterArrayValue":"afterPropertyValue":"end"}}(e)}function Ql(){Tl.pop();const e=Tl[Tl.length-1];Il=e?Array.isArray(e)?"afterArrayValue":"afterPropertyValue":"end"}function ef(e){const t={"'":"\\'",'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\v":"\\v","\0":"\\0","\u2028":"\\u2028","\u2029":"\\u2029"};if(t[e])return t[e];if(e<" "){const t=e.charCodeAt(0).toString(16);return`\\x${`00${t}`.substring(t.length)}`}return e}function tf(e,t){let n="";switch(e){case bl.Char:n=void 0===t?`JSON5: invalid end of input at ${Ml}:${Ll}`:`JSON5: invalid character '${ef(t)}' at ${Ml}:${Ll}`;break;case bl.EOF:n=`JSON5: invalid end of input at ${Ml}:${Ll}`;break;case bl.Identifier:Ll-=5,n=`JSON5: invalid identifier character at ${Ml}:${Ll}`}const r=new nf(n);return r.lineNumber=Ml,r.columnNumber=Ll,r}class nf extends SyntaxError{}var rf=w&&w.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var u=Object.getOwnPropertyDescriptor(t,n);u&&!("get"in u?!t.__esModule:u.writable||u.configurable)||(u={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,u)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),uf=w&&w.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),of=w&&w.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&rf(t,e,n);return uf(t,e),t};Object.defineProperty(Y,"__esModule",{value:!0});var sf=Y.cleanWorkSpace=Ff=Y.executeInstallHvigor=yf=Y.isHvigorInstalled=mf=Y.isAllDependenciesInstalled=void 0;const cf=of(D.default),af=of(p.default),lf=b,ff=j,df=$,Df=X;let pf,Ef;var mf=Y.isAllDependenciesInstalled=function(){function e(e){const t=null==e?void 0:e.dependencies;return void 0===t?0:Object.getOwnPropertyNames(t).length}if(pf=gf(),Ef=Af(),e(pf)+1!==e(Ef))return!1;for(const e in null==pf?void 0:pf.dependencies)if(!(0,ff.hasNpmPackInPaths)(e,[lf.HVIGOR_PROJECT_DEPENDENCIES_HOME])||!hf(e,pf,Ef))return!1;return!0};function hf(e,t,n){return void 0!==n.dependencies&&(0,ff.offlinePluginConversion)(lf.HVIGOR_PROJECT_ROOT_DIR,t.dependencies[e])===n.dependencies[e]}var yf=Y.isHvigorInstalled=function(){return pf=gf(),Ef=Af(),(0,ff.hasNpmPackInPaths)(lf.HVIGOR_ENGINE_PACKAGE_NAME,[lf.HVIGOR_PROJECT_DEPENDENCIES_HOME])&&(0,ff.offlinePluginConversion)(lf.HVIGOR_PROJECT_ROOT_DIR,pf.hvigorVersion)===Ef.dependencies[lf.HVIGOR_ENGINE_PACKAGE_NAME]};const Cf={cwd:lf.HVIGOR_PROJECT_DEPENDENCIES_HOME,stdio:["inherit","inherit","inherit"]};var Ff=Y.executeInstallHvigor=function(){(0,df.logInfoPrintConsole)("Hvigor installing...");const e={dependencies:{}};e.dependencies[lf.HVIGOR_ENGINE_PACKAGE_NAME]=(0,ff.offlinePluginConversion)(lf.HVIGOR_PROJECT_ROOT_DIR,pf.hvigorVersion);try{cf.mkdirSync(lf.HVIGOR_PROJECT_DEPENDENCIES_HOME,{recursive:!0});const t=af.resolve(lf.HVIGOR_PROJECT_DEPENDENCIES_HOME,lf.DEFAULT_PACKAGE_JSON);cf.writeFileSync(t,JSON.stringify(e))}catch(e){(0,df.logErrorAndExit)(e)}!function(){const e=["config","set","store-dir",lf.HVIGOR_PNPM_STORE_PATH];(0,ff.executeCommand)(lf.HVIGOR_WRAPPER_PNPM_SCRIPT_PATH,e,Cf)}(),(0,ff.executeCommand)(lf.HVIGOR_WRAPPER_PNPM_SCRIPT_PATH,["install"],Cf)};function gf(){const e=af.resolve(lf.HVIGOR_PROJECT_WRAPPER_HOME,lf.DEFAULT_HVIGOR_CONFIG_JSON_FILE_NAME);return cf.existsSync(e)||(0,df.logErrorAndExit)(`Error: Hvigor config file ${e} does not exist.`),(0,Df.parseJsonFile)(e)}function Af(){return cf.existsSync(lf.HVIGOR_PROJECT_DEPENDENCY_PACKAGE_JSON_PATH)?(0,Df.parseJsonFile)(lf.HVIGOR_PROJECT_DEPENDENCY_PACKAGE_JSON_PATH):{dependencies:{}}}sf=Y.cleanWorkSpace=function(){if((0,df.logInfoPrintConsole)("Hvigor cleaning..."),!cf.existsSync(lf.HVIGOR_PROJECT_DEPENDENCIES_HOME))return;const e=cf.readdirSync(lf.HVIGOR_PROJECT_DEPENDENCIES_HOME);if(e&&0!==e.length){cf.existsSync(lf.HVIGOR_BOOT_JS_FILE_PATH)&&(0,ff.executeCommand)(process.argv[0],[lf.HVIGOR_BOOT_JS_FILE_PATH,"--stop-daemon"],{});try{e.forEach((e=>{cf.rmSync(af.resolve(lf.HVIGOR_PROJECT_DEPENDENCIES_HOME,e),{recursive:!0})}))}catch(e){(0,df.logErrorAndExit)(`The hvigor build tool cannot be installed. Please manually clear the workspace directory and synchronize the project again.\n\n Workspace Path: ${lf.HVIGOR_PROJECT_DEPENDENCIES_HOME}.`)}}};var vf={},Sf=w&&w.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var u=Object.getOwnPropertyDescriptor(t,n);u&&!("get"in u?!t.__esModule:u.writable||u.configurable)||(u={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,u)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),wf=w&&w.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Of=w&&w.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&Sf(t,e,n);return wf(t,e),t};Object.defineProperty(vf,"__esModule",{value:!0});var bf=vf.executeBuild=void 0;const _f=b,Bf=Of(D.default),Pf=Of(p.default),kf=$;bf=vf.executeBuild=function(){const e=Pf.resolve(_f.HVIGOR_PROJECT_DEPENDENCIES_HOME,"node_modules","@ohos","hvigor","bin","hvigor.js");try{const t=Bf.realpathSync(e);require(t)}catch(t){(0,kf.logErrorAndExit)(`Error: ENOENT: no such file ${e},delete ${_f.HVIGOR_PROJECT_DEPENDENCIES_HOME} and retry.`)}},function(){if(O.checkNpmConifg(),O.environmentHandler(),O.isPnpmAvailable()||O.executeInstallPnpm(),yf()&&mf())bf();else{sf();try{Ff()}catch(e){return void sf()}bf()}}(); \ No newline at end of file diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/hvigorfile.ts b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/hvigorfile.ts new file mode 100644 index 0000000000000000000000000000000000000000..988feb9d12f64df2ee8460ffcaee81e8c2a010c7 --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/hvigorfile.ts @@ -0,0 +1,16 @@ +/** + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Script for compiling build behavior. It is built in the build plug-in and cannot be modified currently. +export { appTasks } from '@ohos/hvigor-ohos-plugin'; \ No newline at end of file diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/hvigorw b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/hvigorw new file mode 100644 index 0000000000000000000000000000000000000000..0576aadb4186f97941d687f221099bd29c2cdba0 --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/hvigorw @@ -0,0 +1,61 @@ +#!/bin/bash +# ---------------------------------------------------------------------------- +# Copyright (c) 2023 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ---------------------------------------------------------------------------- +# ---------------------------------------------------------------------------- +# Hvigor startup script, version 1.0.0 +# +# Required ENV vars: +# ------------------ +# NODE_HOME - location of a Node home dir +# or +# Add /usr/local/nodejs/bin to the PATH environment variable +# ---------------------------------------------------------------------------- + +HVIGOR_APP_HOME=$(dirname $(readlink -f $0)) +HVIGOR_WRAPPER_SCRIPT=${HVIGOR_APP_HOME}/hvigor/hvigor-wrapper.js +warn() { + echo "" + echo -e "\033[1;33m`date '+[%Y-%m-%d %H:%M:%S]'`$@\033[0m" +} + +error() { + echo "" + echo -e "\033[1;31m`date '+[%Y-%m-%d %H:%M:%S]'`$@\033[0m" +} + +fail() { + error "$@" + exit 1 +} + +# Determine node to start hvigor wrapper script +if [ -n "${NODE_HOME}" ];then + EXECUTABLE_NODE="${NODE_HOME}/bin/node" + if [ ! -x "$EXECUTABLE_NODE" ];then + fail "ERROR: NODE_HOME is set to an invalid directory,check $NODE_HOME\n\nPlease set NODE_HOME in your environment to the location where your nodejs installed" + fi +else + EXECUTABLE_NODE="node" + which ${EXECUTABLE_NODE} > /dev/null 2>&1 || fail "ERROR: NODE_HOME is not set and not 'node' command found in your path" +fi + +# Check hvigor wrapper script +if [ ! -r "$HVIGOR_WRAPPER_SCRIPT" ];then + fail "ERROR: Couldn't find hvigor/hvigor-wrapper.js in ${HVIGOR_APP_HOME}" +fi + +# start hvigor-wrapper script +exec "${EXECUTABLE_NODE}" \ + "${HVIGOR_WRAPPER_SCRIPT}" "$@" diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/hvigorw.bat b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/hvigorw.bat new file mode 100644 index 0000000000000000000000000000000000000000..418f4a88c1ad2d7d0a8dae95b316bec26110d2f0 --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/hvigorw.bat @@ -0,0 +1,71 @@ +:: Copyright (c) 2023 Huawei Device Co., Ltd. +:: Licensed under the Apache License, Version 2.0 (the "License"); +:: you may not use this file except in compliance with the License. +:: You may obtain a copy of the License at +:: +:: http://www.apache.org/licenses/LICENSE-2.0 +:: +:: Unless required by applicable law or agreed to in writing, software +:: distributed under the License is distributed on an "AS IS" BASIS, +:: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +:: See the License for the specific language governing permissions and +:: limitations under the License. + +@echo off +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Hvigor startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +set WRAPPER_MODULE_PATH=%APP_HOME%\hvigor\hvigor-wrapper.js +set NODE_EXE=node.exe + +goto start + +:start +@rem Find node.exe +if defined NODE_HOME goto findNodeFromNodeHome + +%NODE_EXE% --version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: NODE_HOME is not set and no 'node' command could be found in your PATH. +echo. +echo Please set the NODE_HOME variable in your environment to match the +echo location of your NodeJs installation. + +goto fail + +:findNodeFromNodeHome +set NODE_HOME=%NODE_HOME:"=% +set NODE_EXE_PATH=%NODE_HOME%/%NODE_EXE% + +if exist "%NODE_EXE_PATH%" goto execute +echo. +echo ERROR: NODE_HOME is not set and no 'node' command could be found in your PATH. +echo. +echo Please set the NODE_HOME variable in your environment to match the +echo location of your NodeJs installation. + +goto fail + +:execute +@rem Execute hvigor +"%NODE_EXE%" %WRAPPER_MODULE_PATH% %* + +:fail +exit /b 1 diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/oh-package.json5 b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/oh-package.json5 new file mode 100644 index 0000000000000000000000000000000000000000..33b914af4e609913b58bc68721b509c0bb5e7228 --- /dev/null +++ b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/oh-package.json5 @@ -0,0 +1,11 @@ +{ + "license": "ISC", + "devDependencies": { + "@ohos/hypium": "1.0.6" + }, + "name": "devicemanagementcollection", + "description": "example description", + "repository": {}, + "version": "1.0.0", + "dependencies": {} +} diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/screenshots/devices/battery.jpg b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/screenshots/devices/battery.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f0a528426c56627efc96784c3fd0759d842e73e4 Binary files /dev/null and b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/screenshots/devices/battery.jpg differ diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/screenshots/devices/home.jpg b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/screenshots/devices/home.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2a7118e41a396c5f36eab7a1f05e6f91c94487b3 Binary files /dev/null and b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/screenshots/devices/home.jpg differ diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/screenshots/devices/power.jpg b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/screenshots/devices/power.jpg new file mode 100644 index 0000000000000000000000000000000000000000..80d3f000da15db18e8b356b59016f1f1704fb157 Binary files /dev/null and b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/screenshots/devices/power.jpg differ diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/screenshots/devices/runninglock.jpg b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/screenshots/devices/runninglock.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cf20f24b26cb830209b65685a60d937f41bd6c6d Binary files /dev/null and b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/screenshots/devices/runninglock.jpg differ diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/screenshots/devices/settings.jpg b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/screenshots/devices/settings.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fe6da30f59ba714cbaa280ac1ef97d938207c7a9 Binary files /dev/null and b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/screenshots/devices/settings.jpg differ diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/screenshots/devices/stationary.jpg b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/screenshots/devices/stationary.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2966b500606b2fe74c921974c44ce509220fdb9f Binary files /dev/null and b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/screenshots/devices/stationary.jpg differ diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/screenshots/devices/thermal.jpg b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/screenshots/devices/thermal.jpg new file mode 100644 index 0000000000000000000000000000000000000000..be23beeffaa5476991dd4055de38a234badd3043 Binary files /dev/null and b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/screenshots/devices/thermal.jpg differ diff --git a/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/screenshots/devices/usb.jpg b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/screenshots/devices/usb.jpg new file mode 100644 index 0000000000000000000000000000000000000000..26165842661473d57f23ea9995a3db4793fbfdc2 Binary files /dev/null and b/HarmonyOS_NEXT/DeviceManagement/DeviceManagementCollection/screenshots/devices/usb.jpg differ diff --git a/HarmonyOS_NEXT/Media/VideoPlay/.gitignore b/HarmonyOS_NEXT/Media/VideoPlay/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..353cdecff2c656ce58be8c7494c0fe462138873e --- /dev/null +++ b/HarmonyOS_NEXT/Media/VideoPlay/.gitignore @@ -0,0 +1,15 @@ +/node_modules +/local.properties +/.idea +**/build +/.hvigor +.cxx +/.clangd +/.clang-format +/.clang-tidy +/package-lock.json +**/.preview +**/package-lock.json +/oh_modules +**/oh_module +/oh-package-lock.json5 \ No newline at end of file diff --git a/HarmonyOS_NEXT/Media/VideoPlay/AppScope/app.json5 b/HarmonyOS_NEXT/Media/VideoPlay/AppScope/app.json5 new file mode 100644 index 0000000000000000000000000000000000000000..83474faa86f70f58c8d2474835d9f19e51c85101 --- /dev/null +++ b/HarmonyOS_NEXT/Media/VideoPlay/AppScope/app.json5 @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "app": { + "bundleName": "net.openvally.videoplay", + "vendor": "example", + "versionCode": 1000000, + "versionName": "1.0.0", + "icon": "$media:app_icon", + "label": "$string:app_name", + "distributedNotificationEnabled": true + } +} diff --git a/HarmonyOS_NEXT/Media/VideoPlay/AppScope/resources/base/element/string.json b/HarmonyOS_NEXT/Media/VideoPlay/AppScope/resources/base/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..890b5c1cef25ffee69bf80276ba3a0e3a560cbc3 --- /dev/null +++ b/HarmonyOS_NEXT/Media/VideoPlay/AppScope/resources/base/element/string.json @@ -0,0 +1,8 @@ +{ + "string": [ + { + "name": "app_name", + "value": "VideoPlay" + } + ] +} diff --git a/HarmonyOS_NEXT/Media/VideoPlay/AppScope/resources/base/media/app_icon.png b/HarmonyOS_NEXT/Media/VideoPlay/AppScope/resources/base/media/app_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ce307a8827bd75456441ceb57d530e4c8d45d36c Binary files /dev/null and b/HarmonyOS_NEXT/Media/VideoPlay/AppScope/resources/base/media/app_icon.png differ diff --git a/HarmonyOS_NEXT/Media/VideoPlay/build-profile.json5 b/HarmonyOS_NEXT/Media/VideoPlay/build-profile.json5 new file mode 100644 index 0000000000000000000000000000000000000000..af66eb5d3f8a295790d29ac07e362f42a1d9442f --- /dev/null +++ b/HarmonyOS_NEXT/Media/VideoPlay/build-profile.json5 @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "app": { + "signingConfigs": [], + "products": [ + { + "name": "default", + "signingConfig": "default", + "compileSdkVersion": "4.0.0(10)", + "compatibleSdkVersion": "4.0.0(10)", + "runtimeOS": "HarmonyOS" + } + ], + }, + "modules": [ + { + "name": "entry", + "srcPath": "./entry", + "targets": [ + { + "name": "default", + "applyToProducts": [ + "default" + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Media/VideoPlay/entry/build-profile.json5 b/HarmonyOS_NEXT/Media/VideoPlay/entry/build-profile.json5 new file mode 100644 index 0000000000000000000000000000000000000000..ddd6e5f1ac23a18a1d1d0d8d7470c6d4726ef66e --- /dev/null +++ b/HarmonyOS_NEXT/Media/VideoPlay/entry/build-profile.json5 @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "apiType": 'stageMode', + "buildOption": { + }, + "targets": [ + { + "name": "default" + }, + { + "name": "ohosTest", + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Media/VideoPlay/entry/hvigorfile.ts b/HarmonyOS_NEXT/Media/VideoPlay/entry/hvigorfile.ts new file mode 100644 index 0000000000000000000000000000000000000000..80e4ec5b81689f238c34614b167a0b9e9c83e8d9 --- /dev/null +++ b/HarmonyOS_NEXT/Media/VideoPlay/entry/hvigorfile.ts @@ -0,0 +1,2 @@ +// Script for compiling build behavior. It is built in the build plug-in and cannot be modified currently. +export { hapTasks } from '@ohos/hvigor-ohos-plugin'; diff --git a/HarmonyOS_NEXT/Media/VideoPlay/entry/oh-package.json5 b/HarmonyOS_NEXT/Media/VideoPlay/entry/oh-package.json5 new file mode 100644 index 0000000000000000000000000000000000000000..907d65a0ae8875e2e4edf794a0b25c1be29bb392 --- /dev/null +++ b/HarmonyOS_NEXT/Media/VideoPlay/entry/oh-package.json5 @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "license": "ISC", + "devDependencies": {}, + "name": "entry", + "description": "example description", + "repository": {}, + "version": "1.0.0", + "dependencies": {} +} diff --git a/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/ets/components/ExitVideo.ets b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/ets/components/ExitVideo.ets new file mode 100644 index 0000000000000000000000000000000000000000..54732a78ae82a4e6c6b2ca46a0ab38eaa4de602d --- /dev/null +++ b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/ets/components/ExitVideo.ets @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { GlobalContext } from '../utils/GlobalContext'; +import common from '@ohos.app.ability.common'; + +@Component +export struct ExitVideo { + @StorageLink('videoName') videoName: Resource = $r('app.string.video_res_1'); + + build() { + Row() { + // 退出 + Image($r("app.media.ic_video_back")) + .id('Exit') + .width($r('app.float.size_35')) + .height($r('app.float.size_35')) + + Text(this.videoName) + .fontColor(Color.White) + .fontWeight(FontWeight.Medium) + .fontSize($r('app.float.size_24')) + .margin({ left: $r('app.float.size_16') }) + } + .margin({ top: $r('app.float.size_20'), left: $r('app.float.size_25') }) + .onClick(() => { + (GlobalContext.getContext().getObject('context') as (common.UIAbilityContext)).terminateSelf(); + }) + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/ets/components/SpeedDialog.ets b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/ets/components/SpeedDialog.ets new file mode 100644 index 0000000000000000000000000000000000000000..3a5bef22e15e7a88c3563344aa3246dc98ca1c36 --- /dev/null +++ b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/ets/components/SpeedDialog.ets @@ -0,0 +1,118 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import avPlayManage from '../videomanager/AvPlayManager'; + +const ZERO = 0; // 倍速列表索引 +const ONE = 1; // 倍速列表索引 +const TWO = 2; // 倍速列表索引 +const THREE = 3; // 倍速列表索引 + +@CustomDialog +export struct SpeedDialog { + @State speedList: Resource[] = [$r('app.string.video_speed_1_0X'), $r('app.string.video_speed_1_25X'), $r('app.string.video_speed_1_75X'), $r('app.string.video_speed_2_0X')]; + @Link speedSelect: number; // 当前选择项的索引 + @StorageLink('avPlayManage') avPlayManage: avPlayManage = new avPlayManage(); + private controller: CustomDialogController; + + build() { + Column() { + Text($r('app.string.dialog_play_speed')) + .fontSize($r('app.float.size_20')) + .width("90%") + .fontColor(Color.Black) + .textAlign(TextAlign.Start) + .margin({ top: $r('app.float.size_20'), bottom: $r('app.float.size_12') }) + + List() { + ForEach(this.speedList, (item: Resource, index) => { + ListItem() { + Column() { + Row() { + Text(item) + .fontSize($r('app.float.size_16')) + .fontColor(Color.Black) + .fontWeight(FontWeight.Medium) + .textAlign(TextAlign.Center) + Blank() + Image(this.speedSelect == index ? $r('app.media.ic_radio_selected') : $r('app.media.ic_radio')) + .width($r('app.float.size_24')) + .height($r('app.float.size_24')) + .objectFit(ImageFit.Contain) + } + .width('100%') + + if (index != this.speedList.length - ONE) { + Divider() + .vertical(false) + .strokeWidth(1) + .margin({ top: $r('app.float.size_10') }) + .color($r('app.color.speed_dialog')) + .width('100%') + } + } + .width("90%") + } + .width("100%") + .height($r('app.float.size_48')) + .onClick(() => { + this.speedSelect = index; + AppStorage.setOrCreate('speedName', this.speedList[this.speedSelect]); + AppStorage.setOrCreate('speedIndex', this.speedSelect); + this.controller.close(); + switch (this.speedSelect) { + case ZERO: + this.avPlayManage.videoSpeedOne(); + break; + case ONE: + this.avPlayManage.videoSpeedOnePointTwentyFive(); + break; + case TWO: + this.avPlayManage.videoSpeedOnePointSeventyFive(); + break; + case THREE: + this.avPlayManage.videoSpeedTwo(); + break; + } + }) + }) + } + .width("100%") + .margin({ + top: $r('app.float.size_12') + }) + + Row() { + Text($r('app.string.dialog_cancel')) + .fontSize($r('app.float.size_16')) + .fontColor('#0A59F7') + .fontWeight(FontWeight.Medium) + .layoutWeight(1) + .textAlign(TextAlign.Center) + .onClick(() => { + this.controller.close() + }) + } + .alignItems(VerticalAlign.Center) + .height($r('app.float.size_50')) + .padding({ bottom: $r('app.float.size_5') }) + .width("100%") + } + .alignItems(HorizontalAlign.Center) + .width("90%") + .borderRadius($r('app.float.size_24')) + .backgroundColor(Color.White) + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/ets/components/VideoOperate.ets b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/ets/components/VideoOperate.ets new file mode 100644 index 0000000000000000000000000000000000000000..9c9827ee9e06f89394545b09447f9573dc0dff37 --- /dev/null +++ b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/ets/components/VideoOperate.ets @@ -0,0 +1,119 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { timeConvert } from '../utils/TimeUtils'; +import avPlayManage from '../videomanager/AvPlayManager'; +import { SpeedDialog } from '../components/SpeedDialog'; + +@Component +export struct VideoOperate { + @State videoList: Resource[] = [$r('app.string.video_res_1'), $r('app.string.video_res_2'), $r('app.string.video_res_3')]; + @State speedSelect: number = 0; // 倍速选择 + @Link currentTime: number; + @Link durationTime: number; + @Link isSwiping: boolean; + @Link avPlayManage: avPlayManage; + @Link flag: boolean; + @Link XComponentFlag: boolean; + @StorageLink('speedIndex') speedIndex: number = 0; // 倍速索引 + @StorageLink('sliderWidth') sliderWidth: string = ''; + @StorageLink('speedName') speedName: Resource = $r('app.string.video_speed_1_0X'); + private dialogController: CustomDialogController = new CustomDialogController({ + builder: SpeedDialog({ speedSelect: $speedSelect }), + alignment: DialogAlignment.Bottom, + offset: { dx: $r('app.float.size_zero'), dy: $r('app.float.size_down_20') } + }); + + build() { + Row() { + Row() { + Image(this.flag ? $r("app.media.ic_video_play") : $r("app.media.ic_video_pause")) // 暂停/播放 + .id('play') + .width($r('app.float.size_40')) + .height($r('app.float.size_40')) + .onClick(() => { + if (this.flag) { + this.avPlayManage.videoPause(); + this.flag = false; + } else { + this.avPlayManage.videoPlay(); + this.flag = true; + } + }) + + // 左侧时间 + Text(timeConvert(this.currentTime)) + .fontColor(Color.White) + .textAlign(TextAlign.End) + .fontWeight(FontWeight.Regular) + .margin({ left: $r('app.float.size_10') }) + } + + Row() { + Slider({ + value: this.currentTime, + min: 0, + max: this.durationTime, + style: SliderStyle.OutSet + }) + .id('Slider') + .blockColor(Color.White) + .trackColor(Color.Gray) + .selectedColor($r("app.color.slider_selected")) + .showTips(false) + .onChange((value: number, mode: SliderChangeMode) => { + if (mode == SliderChangeMode.Begin) { + this.isSwiping = true; + this.avPlayManage.videoPause(); + } + this.avPlayManage.videoSeek(value); + this.currentTime = value; + if (mode == SliderChangeMode.End) { + this.isSwiping = false; + this.flag = true; + this.avPlayManage.videoPlay(); + } + }) + } + .layoutWeight(1) + + Row() { + // 右侧时间 + Text(timeConvert(this.durationTime)) + .fontColor(Color.White) + .fontWeight(FontWeight.Regular) + + Button(this.speedName, { type: ButtonType.Normal }) + .border({ width: $r('app.float.size_1'), color: Color.White }) + .width($r('app.float.size_75')) + .height($r('app.float.size_40')) + .fontSize($r('app.float.size_15')) + .borderRadius($r('app.float.size_24') ) + .fontColor(Color.White) + .backgroundColor(Color.Black) + .opacity($r('app.float.size_1') ) + .margin({ left: $r('app.float.size_10') }) + .id('Speed') + .onClick(() => { + this.speedSelect = this.speedIndex; + this.dialogController.open(); + }) + } + } + .justifyContent(FlexAlign.Center) + .padding({ left: $r('app.float.size_25'), right: $r('app.float.size_30') }) + .width('100%') + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/ets/components/VideoPanel.ets b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/ets/components/VideoPanel.ets new file mode 100644 index 0000000000000000000000000000000000000000..023a56fb313f9eb6ade0b90a857e8f329ce2a11d --- /dev/null +++ b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/ets/components/VideoPanel.ets @@ -0,0 +1,158 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import avPlayManage from '../videomanager/AvPlayManager'; +import media from '@ohos.multimedia.media'; +import wf from '@ohos.wifiManager'; +import promptAction from '@ohos.promptAction'; +import resourceManager from '@ohos.resourceManager'; +import { GlobalContext } from '../utils/GlobalContext'; +import common from '@ohos.app.ability.common'; + +const VIDEOSELECT = 2; // 网络视频索引 + +@Component +export struct VideoPanel { + @State videoList: Resource[] = [$r('app.string.video_res_1'), $r('app.string.video_res_2'), $r('app.string.video_res_3')]; + @State selectColor: boolean = true; + @Link show: boolean; + @Link videoSelect: number; // 当前选择项的索引 + @StorageLink('avPlayManage') avPlayManage: avPlayManage = new avPlayManage(); + @State linkSpeed: number = 0; + + // 判断是否联网 + async checkWifiState(): Promise { + let linkInfo = await wf.getLinkedInfo(); + if (linkInfo.connState !== wf.ConnState.CONNECTED) { + return false; + } + return true; + } + + async isInternet(): Promise { + if (!await this.checkWifiState() && this.videoSelect === VIDEOSELECT) { + this.toast(); + } + } + + async toast() { + promptAction.showToast({ + message: $r('app.string.video_warn'), + duration: 2000, + }); + setTimeout(() => { + (GlobalContext.getContext().getObject('context') as (common.UIAbilityContext)).terminateSelf(); + }, 1000) + } + + async aboutToAppear() { + setInterval(async () => { + try { + await this.isInternet(); + } catch (err) { + if (!wf.isConnected() && this.videoSelect === VIDEOSELECT) { + this.toast(); + } + } + }, 2000) + } + + build() { + Panel(this.show) { + Column() { + RelativeContainer() { + Text(this.videoList[this.videoSelect]) + .fontColor(Color.White) + .fontSize($r('app.float.size_18')) + .fontWeight(FontWeight.Regular) + .alignRules({ + middle: { anchor: '__container__', align: HorizontalAlign.Center }, + center: { anchor: '__container__', align: VerticalAlign.Center } + }) + .id("test1") + Image($r('app.media.ic_video_list_down')) + .width($r('app.float.size_30')) + .height($r('app.float.size_20')) + .alignRules({ + right: { anchor: '__container__', align: HorizontalAlign.End }, + center: { anchor: '__container__', align: VerticalAlign.Center } + }).id("test2") + } + .height($r('app.float.size_20')) + .width("90%") + .margin({ top: $r('app.float.size_20'), bottom: $r('app.float.size_20') }) + + List() { + ForEach(this.videoList, (item: Resource, index) => { + ListItem() { + Column() { + Row() { + Text(item) + .fontSize($r('app.float.size_20')) + .fontColor(Color.White) + .fontWeight(FontWeight.Regular) + .textAlign(TextAlign.Center) + + Blank() + + if (this.videoSelect === index) { + Text($r('app.string.playing')) + .fontSize($r('app.float.size_20')) + .fontColor(Color.White) + .opacity($r('app.float.size_zero_six')) + .fontWeight(FontWeight.Regular) + .textAlign(TextAlign.Center) + } + } + .width("90%") + } + .width("100%") + } + .backgroundColor(this.videoSelect === index ? $r('app.color.video_play_selected') : "") + .width("100%") + .height($r('app.float.size_64')) + .onClick(async () => { + this.videoSelect = index; + AppStorage.setOrCreate('videoName', this.videoList[this.videoSelect]); + AppStorage.setOrCreate('videoIndex', this.videoSelect); + AppStorage.setOrCreate('speedName', $r('app.string.video_speed_1_0X')); + AppStorage.setOrCreate('speedIndex', 0); + this.show = false; + let str = await (GlobalContext.getContext().getObject('context') as (common.UIAbilityContext)) + .resourceManager.getStringValue(this.videoList[this.videoSelect]); + this.avPlayManage.videoChoose(str, this.videoSelect, (avPlayer: media.AVPlayer) => { + }); + }) + }) + } + .width("100%") + } + } + .onClick(() => { + this.show = false; + }) + .onChange(() => { + this.show = false; + }) + .backgroundColor($r('app.color.video_play')) + .type(PanelType.Foldable) + .mode(PanelMode.Half) + .dragBar(false) + .halfHeight(254) + .width('100%') + .mode(PanelMode.Half) + .padding({ top: $r('app.float.size_5') }) + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/ets/entryability/EntryAbility.ets b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/ets/entryability/EntryAbility.ets new file mode 100644 index 0000000000000000000000000000000000000000..8d32e2d7ccb9d1983c081575adc7e87130429b97 --- /dev/null +++ b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/ets/entryability/EntryAbility.ets @@ -0,0 +1,84 @@ +/* + * Copyright (c) 2023 Hunan OpenValley Digital Industry Development Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import UIAbility from '@ohos.app.ability.UIAbility'; +import AbilityConstant from '@ohos.app.ability.AbilityConstant'; +import hilog from '@ohos.hilog'; +import window from '@ohos.window'; +import emitter from '@ohos.events.emitter'; +import Want from '@ohos.app.ability.Want'; +import { GlobalContext } from '../utils/GlobalContext'; + +export default class EntryAbility extends UIAbility { + private tag = 'entryAbility'; + + onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) { + GlobalContext.getContext().setObject('abilityWant', want) + GlobalContext.getContext().setObject('context', this.context) + if (want.parameters) { + if (want.parameters.currentTime) { + GlobalContext.getContext().setObject('currentTime', want.parameters.currentTime); + console.info(this.tag, 'time: ' + want.parameters.currentTime); + } + } + hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate'); + } + + onDestroy() { + hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onDestroy'); + } + + onWindowStageCreate(windowStage: window.WindowStage): void { + hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageCreate'); + windowStage.getMainWindow().then((win: window.Window) => { + win.setWindowKeepScreenOn(true); + win.setWindowSystemBarProperties({ + statusBarColor: '#000000' + }); + win.on('windowSizeChange', (newSize: window.Size) => { + let eventWHData: emitter.EventData= { + data: { + 'width': newSize.width, + 'height': newSize.height + } + }; + let innerEventWH: emitter.InnerEvent = { + eventId: 3, + priority: emitter.EventPriority.HIGH + }; + emitter.emit(innerEventWH, eventWHData); + }); + }); + windowStage.loadContent('pages/Index', (err, data) => { + if (err.code) { + hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? ''); + return; + } + hilog.info(0x0000, 'testTag', 'Succeeded in loading the content. Data: %{public}s', JSON.stringify(data) ?? ''); + }); + } + + onWindowStageDestroy() { + hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageDestroy'); + } + + onForeground() { + hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onForeground'); + } + + onBackground() { + hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onBackground'); + } +} diff --git a/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/ets/pages/Index.ets b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/ets/pages/Index.ets new file mode 100644 index 0000000000000000000000000000000000000000..17a5f52eff728ad178cf665cacbc7ec638f5d62a --- /dev/null +++ b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/ets/pages/Index.ets @@ -0,0 +1,285 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import avPlayManage from '../videomanager/AvPlayManager'; +import media from '@ohos.multimedia.media'; +import display from '@ohos.display'; +import emitter from '@ohos.events.emitter'; +import { VideoOperate } from '../components/VideoOperate'; +import { ExitVideo } from '../components/ExitVideo'; +import { timeConvert } from '../utils/TimeUtils'; +import { VideoPanel } from '../components/VideoPanel'; +import { GlobalContext } from '../utils/GlobalContext'; + +const PROPORTION = 0.99; // 占屏幕比例 +const SURFACEW = 0.9; // 表面宽比例 +const SURFACEH = 1.78; // 表面高比例 +const TIMEOUT = 0; // 定时器编号 +const SET_TIME_OUT = 8000; // 间隔8s +const SET_INTERVAL = 100; // interval间隔时间 + +class innerInfo{ + eventId: number = 0 + priority: emitter.EventPriority = 0 +} + +let innerEventFalse: innerInfo = { + eventId: 1, + priority: emitter.EventPriority.HIGH +}; + +let innerEventTrue: innerInfo = { + eventId: 2, + priority: emitter.EventPriority.HIGH +}; + +let innerEventWH: innerInfo = { + eventId: 3, + priority: emitter.EventPriority.HIGH +}; + +@Entry +@Component +struct Index { + private surfaceId: string = ''; + private timeout: number = 0; // 定时器编号 + private xComponentController: XComponentController = new XComponentController(); + @State avPlayManage: avPlayManage = new avPlayManage(); + @State isSwiping: boolean = false; // 用户滑动过程中 + @State isClickScreen: boolean = false; // 是否点击 + @State flag: boolean = true; // 暂停播放 + @State XComponentFlag: boolean = false; + @State speedSelect: number = 0; // 倍速选择 + @State videoListSelect: number = 0; // 视频列表选择 + @State durationTime: number = 0; // 视频总时长 + @State currentTime: number = 0; // 视频当前时间 + @State surfaceW: number = 0; + @State surfaceH: number = 0; + @State show: boolean = false; // videoPanel组件是否弹出 + @State videoSelect: number = 0; // 视频列表选择 + @State percent: number = 0; + @State windowWidth: number = 300; + @State windowHeight: number = 300; + @StorageLink('videoName') videoName: Resource = $r('app.string.video_res_1'); + @StorageLink('videoIndex') videoIndex: number = 0; // 视频索引 + setTimer(): void { + let that = this; + this.timeout = setTimeout(() => { + that.isClickScreen = false; // 隐藏操作面板 + }, SET_TIME_OUT); // 8秒后隐藏 + } + + clearTimer(): void { + if (this.timeout !== TIMEOUT) { + clearTimeout(this.timeout); + this.timeout = TIMEOUT; + } + } + + aboutToAppear() { + this.windowWidth = display.getDefaultDisplaySync().width; + this.windowHeight = display.getDefaultDisplaySync().height; + this.surfaceW = (GlobalContext.getContext().getObject('windowWidth') as number) * SURFACEW; + this.surfaceH = this.surfaceW / SURFACEH; + this.flag = true; + AppStorage.setOrCreate('avPlayManage', this.avPlayManage); + } + + aboutToDisappear() { + this.avPlayManage.videoRelease(); + emitter.off(innerEventFalse.eventId); + } + + onPageHide() { + this.avPlayManage.videoPause(); + this.flag = false; + } + + onPageShow() { + emitter.on(innerEventTrue, (res) => { + if (res.data) { + this.flag = res.data.flag; + this.XComponentFlag = res.data.flag; + } + }); + emitter.on(innerEventFalse, (res) => { + if (res.data) { + this.flag = res.data.flag; + } + }); + emitter.on(innerEventWH, (res) => { + if (res.data) { + this.windowWidth = res.data.width; + this.windowHeight = res.data.height; + this.setVideoWH(); + } + }); + + if (this.flag == false) { + this.clearTimer(); + } + } + + setVideoWH(): void { + if (this.percent >= 1) { // 横向视频 + this.surfaceW = Math.round(this.windowWidth * PROPORTION); + this.surfaceH = Math.round(this.surfaceW / this.percent); + } else { // 纵向视频 + this.surfaceH = Math.round(this.windowHeight * PROPORTION); + this.surfaceW = Math.round(this.surfaceH * this.percent); + } + } + + @Builder + CoverXComponent() { + XComponent({ // 装载视频容器 + id: 'xComponent', + type: 'surface', + controller: this.xComponentController + }) + .visibility(this.XComponentFlag ? Visibility.Visible : Visibility.Hidden) + .onLoad(() => { + this.surfaceId = this.xComponentController.getXComponentSurfaceId(); + this.avPlayManage.initPlayer(this.surfaceId, (avPlayer: media.AVPlayer) => { + this.percent = avPlayer.width / avPlayer.height; + this.setVideoWH(); + this.durationTime = this.avPlayManage.getDurationTime(); + setInterval(() => { // 更新当前时间 + if (!this.isSwiping) { + this.currentTime = this.avPlayManage.getCurrentTime(); + } + }, SET_INTERVAL); + }) + }) + .height(`${this.surfaceH}px`) + .width(`${this.surfaceW}px`) + } + + build() { + Stack() { + Column() { + this.CoverXComponent() + } + .align(Alignment.TopStart) + .margin({ top: $r('app.float.size_80') }) + .id('Video') + .justifyContent(FlexAlign.Center) + + Text() + .height(`${this.surfaceH}px`) + .width(`${this.surfaceW}px`) + .margin({ top: $r('app.float.size_80') }) + .backgroundColor(Color.Black) + .opacity($r('app.float.size_zero_five')) + .visibility(this.isSwiping ? Visibility.Visible : Visibility.Hidden) + + VideoPanel({ show: $show, videoSelect: $videoSelect }) + .zIndex(3) + + Row() { + Text(timeConvert(this.currentTime)) + .fontSize($r('app.float.size_24')) + .opacity($r('app.float.size_1')) + .fontColor($r("app.color.slider_selected")) + Text("/" + timeConvert(this.durationTime)) + .fontSize($r('app.float.size_24')) + .opacity($r('app.float.size_1')) + .fontColor(Color.White) + } + .margin({ top: $r('app.float.size_80') }) + .visibility(this.isSwiping ? Visibility.Visible : Visibility.Hidden) + + Column() { + Row() { + // 返回 + ExitVideo() + } + .width('100%') + .justifyContent(FlexAlign.Start) + + Blank() + + Column() { + // 进度条 + VideoOperate({ + flag: $flag, + avPlayManage: $avPlayManage, + currentTime: $currentTime, + durationTime: $durationTime, + isSwiping: $isSwiping, + XComponentFlag: $XComponentFlag + }) + .width('100%') + + Row() { + Image($r('app.media.ic_video_view_list')) + .width($r('app.float.size_32')) + .height($r('app.float.size_32')) + .margin({ left: $r('app.float.size_30') }) + Text(this.videoName) + .fontSize($r('app.float.size_20')) + .fontColor(Color.White) + .fontWeight(FontWeight.Regular) + .margin({ left: $r('app.float.size_10') }) + Blank() + Column() { + Image($r('app.media.ic_video_list_up')) + .width($r('app.float.size_30')) + .height($r('app.float.size_20')) + } + .margin({ right: $r('app.float.size_25') }) + } + .id('Choose') + .margin({ top: $r('app.float.size_10') }) + .width('100%') + .height($r('app.float.size_50')) + .backgroundColor($r('app.color.video_play')) + .borderRadius({ topLeft: $r('app.float.size_45'), topRight: $r('app.float.size_45') }) + .alignItems(VerticalAlign.Center) + .onClick(() => { + this.show = !this.show; + this.videoSelect = this.videoIndex; + }) + } + .justifyContent(FlexAlign.Center) + } + .onTouch((event) => { + if (event.type == TouchType.Down) { + this.isClickScreen = true; + this.clearTimer(); + } else if (event.type == TouchType.Up) { + this.setTimer(); + } else if (event.type == TouchType.Move) { + this.isClickScreen = true; + this.clearTimer(); + } + }) + .visibility(this.isClickScreen ? Visibility.Visible : Visibility.Hidden) + .width('100%') + .height('100%') + } + .onClick(() => { + this.isClickScreen = !this.isClickScreen; + if (this.isClickScreen) { + this.setTimer(); + } else { + this.clearTimer(); + } + }) + .backgroundColor(Color.Black) + .height('100%') + .width('100%') + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/ets/utils/GlobalContext.ets b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/ets/utils/GlobalContext.ets new file mode 100644 index 0000000000000000000000000000000000000000..23f5130a61c9e0ac09c5d885cdcaa2c878e0d522 --- /dev/null +++ b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/ets/utils/GlobalContext.ets @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License,Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export class GlobalContext { + private constructor() { + } + + private static instance: GlobalContext; + private _objects = new Map(); + + public static getContext(): GlobalContext { + if (!GlobalContext.instance) { + GlobalContext.instance = new GlobalContext(); + } + return GlobalContext.instance; + } + + getObject(value: string): Object | undefined { + return this._objects.get(value); + } + + setObject(key: string, objectClass: Object): void { + this._objects.set(key, objectClass); + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/ets/utils/Logger.ts b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/ets/utils/Logger.ts new file mode 100644 index 0000000000000000000000000000000000000000..46c5a5d1d4ecf499162c78015a691c1fe214791b --- /dev/null +++ b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/ets/utils/Logger.ts @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import hilog from '@ohos.hilog'; + +class Logger { + private domain: number; + private prefix: string; + private format: string = '%{public}s, %{public}s'; + + constructor(prefix: string) { + this.prefix = prefix; + this.domain = 0xFF00; + } + + debug(...args: string[]): void { + hilog.debug(this.domain, this.prefix, this.format, args); + } + + info(...args: string[]): void { + hilog.info(this.domain, this.prefix, this.format, args); + } + + warn(...args: string[]): void { + hilog.warn(this.domain, this.prefix, this.format, args); + } + + error(...args: string[]): void { + hilog.error(this.domain, this.prefix, this.format, args); + } +} + +export default new Logger('[Samples_VideoPlay]'); \ No newline at end of file diff --git a/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/ets/utils/ResourceUtil.ets b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/ets/utils/ResourceUtil.ets new file mode 100644 index 0000000000000000000000000000000000000000..92a3b9dcd74c3c6079df795c0e83e34a7c51a5e2 --- /dev/null +++ b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/ets/utils/ResourceUtil.ets @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import AbilityDelegatorRegistry from '@ohos.app.ability.abilityDelegatorRegistry' + +let context: Context + +export async function getString(str: Resource) { + if (context == null) { + const abilityDelegatorRegistry = AbilityDelegatorRegistry.getAbilityDelegator() + context = await abilityDelegatorRegistry.getAppContext() + } + let manager = context.resourceManager + return await manager.getStringValue(str); +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/ets/utils/TimeUtils.ts b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/ets/utils/TimeUtils.ts new file mode 100644 index 0000000000000000000000000000000000000000..113977995250f6abb1745f611932e16f1a16b05e --- /dev/null +++ b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/ets/utils/TimeUtils.ts @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +const TIME_ONE = 60000; +const TIME_TWO = 1000; +const TIME_THREE = 10; + +export function timeConvert(time: number): string { + let min: number = Math.floor(time / TIME_ONE); + let second: string = ((time % TIME_ONE) / TIME_TWO).toFixed(0); + return `${min}:${(+second < TIME_THREE ? '0' : '') + second}`; +} + diff --git a/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/ets/videomanager/AvPlayManager.ets b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/ets/videomanager/AvPlayManager.ets new file mode 100644 index 0000000000000000000000000000000000000000..bbc14b307ee32c36f3f62b3a3a034122f5482490 --- /dev/null +++ b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/ets/videomanager/AvPlayManager.ets @@ -0,0 +1,343 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import media from '@ohos.multimedia.media'; +import resourceManager from '@ohos.resourceManager'; +import emitter from '@ohos.events.emitter'; +import Logger from '../utils/Logger'; +import { GlobalContext } from '../utils/GlobalContext'; +import common from '@ohos.app.ability.common'; + +const CASE_ZERO = 0; +const CASE_ONE = 1; +const CASE_TWO = 2; +const CASE_THREE = 3; + +export default class AvPlayManage { + private tag: string = 'AVPlayManage'; + private flag: boolean = false; + private avPlayer: media.AVPlayer | null = null ; + private surfaceID: string = ''; + private mgr: resourceManager.ResourceManager = {} as resourceManager.ResourceManager; + private currentTime: number = 0; // 视频当前时间 + private durationTime: number = 0; // 视频总长 + private speedSelect: number = 0; // 倍速选择 + private fileDescriptor: resourceManager.RawFileDescriptor | null = null; + private videoSrc: string = ''; + private fileSrc: string = ''; + /** + * 初始化视频 + */ + async initPlayer(surfaceId: string, callback: (avPlayer: media.AVPlayer) => void): Promise { + Logger.info(this.tag, 'initPlayer==initCamera surfaceId== ${surfaceId}'); + this.surfaceID = surfaceId; + Logger.info(this.tag, 'initPlayer==this.surfaceID surfaceId== ${this.surfaceID}'); + try { + Logger.info(this.tag, 'initPlayer videoPlay avPlayerDemo'); + // 创建avPlayer实例对象 + this.avPlayer = await media.createAVPlayer(); + // 创建状态机变化回调函数 + await this.setAVPlayerCallback(callback); + Logger.info(this.tag, 'initPlayer videoPlay setAVPlayerCallback'); + this.mgr = (GlobalContext.getContext().getObject('context') as (common.UIAbilityContext)).resourceManager; + Logger.info(this.tag, 'initPlayer videoPlay this.mgr'); + this.fileDescriptor = await this.mgr.getRawFd('test1.mp4'); + Logger.info(this.tag, 'initPlayer videoPlay fileDescriptor = ${JSON.stringify(this.fileDescriptor)}'); + this.avPlayer.fdSrc = this.fileDescriptor; + } catch (e) { + Logger.error(this.tag, 'initPlayer initPlayer err:${e}'); + } + } + + // 注册avplayer回调函数 + async setAVPlayerCallback(callback: (avPlayer: media.AVPlayer) => void, videoSrc?: string): Promise { + if (this.avPlayer === null) { + return; + } + // seek操作结果回调函数 + this.avPlayer.on('seekDone', (seekDoneTime) => { + Logger.info(this.tag, 'setAVPlayerCallback AVPlayer seek succeeded, seek time is ${seekDoneTime}'); + }); + // error回调监听函数,当avPlayer在操作过程中出现错误时调用reset接口触发重置流程 + this.avPlayer.on('error', (err) => { + if (this.avPlayer === null) { + return; + } + Logger.error(this.tag, 'setAVPlayerCallback Invoke avPlayer failed, code is ${err.code}, message is ${err.message}'); + this.avPlayer.reset(); + }); + // 状态机变化回调函数 + this.avPlayer.on('stateChange', async (state, reason) => { + if (this.avPlayer === null) { + return; + } + switch (state) { + case 'idle': // 成功调用reset接口后触发该状态机上报 + this.avPlayer.release(); + this.avPlayerChoose(callback); + Logger.info(this.tag, 'setAVPlayerCallback AVPlayer state idle called.'); + break; + case 'initialized': // avplayer 设置播放源后触发该状态上报 + Logger.info(this.tag, 'setAVPlayerCallback AVPlayerstate initialized called.'); + this.avPlayer.surfaceId = this.surfaceID; // 设置显示画面,当播放的资源为纯音频时无需设置 + Logger.info(this.tag, 'setAVPlayerCallback this.avPlayer.surfaceId = ${this.avPlayer.surfaceId}'); + this.avPlayer.prepare(); + break; + case 'prepared': // prepare调用成功后上报该状态机 + Logger.info(this.tag, 'setAVPlayerCallback AVPlayer state prepared called.'); + this.durationTime = this.avPlayer.duration; + this.currentTime = this.avPlayer.currentTime; + this.avPlayer.play(); // 调用播放接口开始播放 + Logger.info(this.tag, 'setAVPlayerCallback this.speedSelect = ${this.speedSelect}'); + switch (this.speedSelect) { + case CASE_ZERO: + this.videoSpeedOne(); + break; + case CASE_ONE: + this.videoSpeedOnePointTwentyFive(); + break; + case CASE_TWO: + this.videoSpeedOnePointSeventyFive(); + break; + case CASE_THREE: + this.videoSpeedTwo(); + break; + } + callback(this.avPlayer); + break; + case 'playing': // play成功调用后触发该状态机上报 + Logger.info(this.tag, 'setAVPlayerCallback AVPlayer state playing called.'); + let eventDataTrue: emitter.EventData = { + data: { + 'flag': true + } + }; + let innerEventTrue: emitter.InnerEvent = { + eventId: 2, + priority: emitter.EventPriority.HIGH + }; + emitter.emit(innerEventTrue, eventDataTrue); + break; + case 'completed': // 播放结束后触发该状态机上报 + Logger.info(this.tag, 'setAVPlayerCallback AVPlayer state completed called.'); + let eventDataFalse: emitter.EventData = { + data: { + 'flag': false + } + }; + let innerEvent: emitter.InnerEvent = { + eventId: 1, + priority: emitter.EventPriority.HIGH + }; + emitter.emit(innerEvent, eventDataFalse); + break; + default: + Logger.info(this.tag, 'setAVPlayerCallback AVPlayer state unknown called.'); + break; + } + }); + // 时间上报监听函数 + this.avPlayer.on('timeUpdate', (time: number) => { + this.currentTime = time; + Logger.info(this.tag, 'setAVPlayerCallback timeUpdate success,and new time is = ${this.currentTime}'); + }); + } + + /** + * 获取总时间 + */ + getDurationTime(): number { + return this.durationTime; + } + + /** + * 获取当前时间 + */ + getCurrentTime(): number { + return this.currentTime; + } + + /** + * 视频播放 + */ + videoPlay(): void { + if (this.avPlayer) { + try { + this.avPlayer.play(); + } catch (e) { + Logger.error(this.tag, 'videoPlay = ${JSON.stringify(e)}'); + } + } + } + + /** + * 视频暂停 + */ + videoPause(): void { + if (this.avPlayer) { + try { + this.avPlayer.pause(); + Logger.info(this.tag, 'videoPause=='); + } catch (e) { + Logger.info(this.tag, 'videoPause== ${JSON.stringify(e)}'); + } + } + } + + /** + * 调节1.0倍速 + */ + videoSpeedOne(): void { + if (this.avPlayer) { + try { + this.avPlayer.setSpeed(media.PlaybackSpeed.SPEED_FORWARD_1_00_X); + Logger.info(this.tag, 'videoSpeed_1_00'); + } catch (e) { + Logger.info(this.tag, 'videoSpeed_1_00== ${JSON.stringify(e)}'); + } + } + } + + /** + * 调节1.25倍速 + */ + videoSpeedOnePointTwentyFive(): void { + if (this.avPlayer) { + try { + this.avPlayer.setSpeed(media.PlaybackSpeed.SPEED_FORWARD_1_25_X); + Logger.info(this.tag, 'videoSpeed_1_25'); + } catch (e) { + Logger.info(this.tag, 'videoSpeed_1_25== ${JSON.stringify(e)}'); + } + } + } + + /** + * 调节1.75倍速 + */ + videoSpeedOnePointSeventyFive(): void { + if (this.avPlayer) { + try { + this.avPlayer.setSpeed(media.PlaybackSpeed.SPEED_FORWARD_1_75_X); + Logger.info(this.tag, 'videoSpeed_1_75'); + } catch (e) { + Logger.info(this.tag, 'videoSpeed_1_75==' + JSON.stringify(e)); + } + } + } + + /** + * 调节2.0倍速 + */ + videoSpeedTwo(): void { + if (this.avPlayer) { + try { + this.avPlayer.setSpeed(media.PlaybackSpeed.SPEED_FORWARD_2_00_X); + Logger.info(this.tag, 'videoSpeed_2_0'); + } catch (e) { + Logger.info(this.tag, 'videoSpeed_2_0== ${JSON.stringify(e)}'); + } + } + } + + /** + * 视频跳转 + */ + videoSeek(seekTime: number): void { + if (this.avPlayer) { + try { + this.avPlayer.seek(seekTime, media.SeekMode.SEEK_PREV_SYNC); + Logger.info(this.tag, 'videoSeek== ${seekTime}'); + } catch (e) { + Logger.info(this.tag, 'videoSeek== ${JSON.stringify(e)}'); + } + } + } + + /** + * 视频重置 + */ + async videoReset(): Promise { + if (this.avPlayer === null) { + return; + } + this.avPlayer.reset(); + } + + /** + * 释放视频资源 + */ + async videoRelease(): Promise { + if (this.avPlayer === null) { + return; + } + this.avPlayer.release((err) => { + if (err == null) { + Logger.info(this.tag, 'videoRelease release success'); + } else { + Logger.error(this.tag, 'videoRelease release filed,error message is = ${err.message}'); + } + }); + } + + /** + * 视频切换,前台调用 + */ + async videoChoose(videoSrc: string, speedSelect: number, callback: (avPlayer: media.AVPlayer) => void): Promise { + try { + this.flag = false; + this.videoSrc = videoSrc; + this.speedSelect = speedSelect; + Logger.info(this.tag, 'videoChoose this.videoSrc = ${this.videoSrc}'); + this.videoReset(); + } catch (e) { + Logger.info(this.tag, 'videoChoose== ${JSON.stringify(e)}'); + } + } + + /** + * 视频切换,换视频资源 + */ + async avPlayerChoose(callback: (avPlayer: media.AVPlayer) => void): Promise { + try { + Logger.info(this.tag, 'avPlayerChoose avPlayerDemo'); + // 创建avPlayer实例对象 + this.avPlayer = await media.createAVPlayer(); + // 创建状态机变化回调函数 + this.fileDescriptor = null; + Logger.info(this.tag, 'avPlayerChoose this.fileDescriptor = ${this.fileDescriptor}'); + await this.setAVPlayerCallback(callback); + Logger.info(this.tag, 'avPlayerChoose setAVPlayerCallback'); + if (this.videoSrc === 'network.mp4') { + this.fileSrc = 'https:\/\/vd3.bdstatic.com\/mda-pdc2kmwtd2vxhiy4\/cae_h264\/1681502407203843413\/mda-pdc2kmwtd2vxhiy4.mp4'; + } else { + this.fileSrc = this.videoSrc; + } + let regex: RegExp = new RegExp ('^(http|https)','i'); + let bool = regex.test(this.fileSrc); + if (bool) { + Logger.info(this.tag, 'avPlayerChoose avPlayerChoose fileDescriptor = ${JSON.stringify(this.fileDescriptor)}'); + this.avPlayer.url = this.fileSrc; + } else { + this.fileDescriptor = await this.mgr.getRawFd(this.fileSrc); + Logger.info(this.tag, 'avPlayerChoose avPlayerChoose fileDescriptor = ${JSON.stringify(this.fileDescriptor)}'); + this.avPlayer.fdSrc = this.fileDescriptor; + } + } catch (e) { + Logger.info(this.tag, 'avPlayerChoose trycatch avPlayerChoose'); + this.videoReset(); + } + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/module.json5 b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/module.json5 new file mode 100644 index 0000000000000000000000000000000000000000..c5d26322c021e39867283df048a4a32241cda6f9 --- /dev/null +++ b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/module.json5 @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "module": { + "name": "entry", + "type": "entry", + "description": "$string:module_desc", + "mainElement": "EntryAbility", + "deviceTypes": [ + "default", + "tablet" + ], + "deliveryWithInstall": true, + "installationFree": false, + "pages": "$profile:main_pages", + "abilities": [ + { + "name": "EntryAbility", + "srcEntrance": "./ets/entryability/EntryAbility.ets", + "description": "$string:entryAbility_desc", + "icon": "$media:icon", + "label": "$string:entryAbility_label", + "startWindowIcon": "$media:icon", + "startWindowBackground": "$color:start_window_background", + "visible": true, + "skills": [ + { + "entities": [ + "entity.system.home" + ], + "actions": [ + "action.system.home" + ] + } + ] + } + ], + "requestPermissions": [ + { + "name": "ohos.permission.INTERNET" + }, + { + "name": "ohos.permission.GET_WIFI_INFO" + } + ] + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/resources/base/element/color.json b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/resources/base/element/color.json new file mode 100644 index 0000000000000000000000000000000000000000..419aa49d53413d68acdd73edc8d2b80d01ef60e9 --- /dev/null +++ b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/resources/base/element/color.json @@ -0,0 +1,24 @@ +{ + "color": [ + { + "name": "start_window_background", + "value": "#FFFFFF" + }, + { + "name": "slider_selected", + "value": "#007DFF" + }, + { + "name": "speed_dialog", + "value": "#33bab4b4" + }, + { + "name": "video_play", + "value": "#333333" + }, + { + "name": "video_play_selected", + "value": "#5c5c5c" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/resources/base/element/float.json b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/resources/base/element/float.json new file mode 100644 index 0000000000000000000000000000000000000000..1ea100d17b3e64467b32d74ac46263d8846b277b --- /dev/null +++ b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/resources/base/element/float.json @@ -0,0 +1,104 @@ +{ + "float": [ + { + "name": "size_zero_five", + "value": "0.5" + }, + { + "name": "size_zero_six", + "value": "0.6" + }, + { + "name": "size_zero", + "value": "0" + }, + { + "name": "size_1", + "value": "1" + }, + { + "name": "size_5", + "value": "5" + }, + { + "name": "size_10", + "value": "10" + }, + { + "name": "size_12", + "value": "12" + }, + { + "name": "size_15", + "value": "15" + }, + { + "name": "size_16", + "value": "16" + }, + { + "name": "size_18", + "value": "18" + }, + { + "name": "size_20", + "value": "20" + }, + { + "name": "size_down_20", + "value": "-20" + }, + { + "name": "size_24", + "value": "24" + }, + { + "name": "size_25", + "value": "25" + }, + { + "name": "size_30", + "value": "30" + }, + { + "name": "size_32", + "value": "32" + }, + { + "name": "size_35", + "value": "35" + }, + { + "name": "size_40", + "value": "40" + }, + { + "name": "size_45", + "value": "45" + }, + { + "name": "size_48", + "value": "48" + }, + { + "name": "size_50", + "value": "50" + }, + { + "name": "size_64", + "value": "64" + }, + { + "name": "size_75", + "value": "75" + }, + { + "name": "size_80", + "value": "-80" + }, + { + "name": "size_254", + "value": "254" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/resources/base/element/string.json b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/resources/base/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..59540d1362da1e2844e202bbe7d50ba151882405 --- /dev/null +++ b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/resources/base/element/string.json @@ -0,0 +1,60 @@ +{ + "string": [ + { + "name": "module_desc", + "value": "module description" + }, + { + "name": "entryAbility_desc", + "value": "description" + }, + { + "name": "entryAbility_label", + "value": "视频播放" + }, + { + "name": "video_res_1", + "value": "test1.mp4" + }, + { + "name": "video_res_2", + "value": "test2.mp4" + }, + { + "name": "video_res_3", + "value": "network.mp4" + }, + { + "name": "video_speed_1_0X", + "value": "1.0X" + }, + { + "name": "video_speed_1_25X", + "value": "1.25X" + }, + { + "name": "video_speed_1_75X", + "value": "1.75X" + }, + { + "name": "video_speed_2_0X", + "value": "2.0X" + }, + { + "name": "video_warn", + "value": "退出程序,请检查网络是否连接或可用!" + }, + { + "name": "dialog_play_speed", + "value": "播放倍速" + }, + { + "name": "dialog_cancel", + "value": "取消" + }, + { + "name": "playing", + "value": "当前播放" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/resources/base/media/ic_radio.png b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/resources/base/media/ic_radio.png new file mode 100644 index 0000000000000000000000000000000000000000..9c5f71f9c655cca2f4b3d05606e3841a372e813c Binary files /dev/null and b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/resources/base/media/ic_radio.png differ diff --git a/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/resources/base/media/ic_radio_selected.svg b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/resources/base/media/ic_radio_selected.svg new file mode 100644 index 0000000000000000000000000000000000000000..f115d62baa097b60a6b7764edd5ea81295cb12d4 --- /dev/null +++ b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/resources/base/media/ic_radio_selected.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/resources/base/media/ic_screen_switch.svg b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/resources/base/media/ic_screen_switch.svg new file mode 100644 index 0000000000000000000000000000000000000000..64bda6d74d09bbae5c3a96d593852fb279c7e20a --- /dev/null +++ b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/resources/base/media/ic_screen_switch.svg @@ -0,0 +1,13 @@ + + + Public/ic_public_shuffle + + + + + + + + + + \ No newline at end of file diff --git a/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/resources/base/media/ic_video_back.svg b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/resources/base/media/ic_video_back.svg new file mode 100644 index 0000000000000000000000000000000000000000..7da6964ff75d09ab7434afcc9c451311184ca863 --- /dev/null +++ b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/resources/base/media/ic_video_back.svg @@ -0,0 +1,13 @@ + + + Public/ic_public_back + + + + + + + + + + \ No newline at end of file diff --git a/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/resources/base/media/ic_video_list.svg b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/resources/base/media/ic_video_list.svg new file mode 100644 index 0000000000000000000000000000000000000000..f56a83eff6b0680fc6ddd8f5cd5654f50b14125b --- /dev/null +++ b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/resources/base/media/ic_video_list.svg @@ -0,0 +1,13 @@ + + + Public/ic_public_view_list + + + + + + + + + + \ No newline at end of file diff --git a/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/resources/base/media/ic_video_list_down.svg b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/resources/base/media/ic_video_list_down.svg new file mode 100644 index 0000000000000000000000000000000000000000..c74821d7a7b0b888d0de4c76e532a34531bf7670 --- /dev/null +++ b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/resources/base/media/ic_video_list_down.svg @@ -0,0 +1,15 @@ + + + + 画板 + Created with Sketch. + + + + + + + + + + \ No newline at end of file diff --git a/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/resources/base/media/ic_video_list_up.svg b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/resources/base/media/ic_video_list_up.svg new file mode 100644 index 0000000000000000000000000000000000000000..b56a7c5aef39d028bb6cd16e1cf159a2bba1647f --- /dev/null +++ b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/resources/base/media/ic_video_list_up.svg @@ -0,0 +1,13 @@ + + + Public/ic_public_arrow_up_0 + + + + + + + + + + \ No newline at end of file diff --git a/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/resources/base/media/ic_video_pause.svg b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/resources/base/media/ic_video_pause.svg new file mode 100644 index 0000000000000000000000000000000000000000..b18a4a3d00cf2f80fe90c55faef56b39ed485a1b --- /dev/null +++ b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/resources/base/media/ic_video_pause.svg @@ -0,0 +1,13 @@ + + + Public/ic_public_play + + + + + + + + + + \ No newline at end of file diff --git a/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/resources/base/media/ic_video_play.svg b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/resources/base/media/ic_video_play.svg new file mode 100644 index 0000000000000000000000000000000000000000..675bf7f87b66ed5011191b77c1f3f678625be68a --- /dev/null +++ b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/resources/base/media/ic_video_play.svg @@ -0,0 +1,13 @@ + + + Public/ic_public_pause + + + + + + + + + + \ No newline at end of file diff --git a/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/resources/base/media/ic_video_view_list.svg b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/resources/base/media/ic_video_view_list.svg new file mode 100644 index 0000000000000000000000000000000000000000..3a7c8392a5ce10f74a34578415041614a8bce1d8 --- /dev/null +++ b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/resources/base/media/ic_video_view_list.svg @@ -0,0 +1,13 @@ + + + Public/ic_public_view_list_filled + + + + + + + + + + \ No newline at end of file diff --git a/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/resources/base/media/icon.png b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/resources/base/media/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ce307a8827bd75456441ceb57d530e4c8d45d36c Binary files /dev/null and b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/resources/base/media/icon.png differ diff --git a/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/resources/base/profile/main_pages.json b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/resources/base/profile/main_pages.json new file mode 100644 index 0000000000000000000000000000000000000000..1898d94f58d6128ab712be2c68acc7c98e9ab9ce --- /dev/null +++ b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/resources/base/profile/main_pages.json @@ -0,0 +1,5 @@ +{ + "src": [ + "pages/Index" + ] +} diff --git a/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/resources/en_US/element/string.json b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/resources/en_US/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..ae18c016b33dcc18a434d43ea2e364c8ba3768e7 --- /dev/null +++ b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/resources/en_US/element/string.json @@ -0,0 +1,60 @@ +{ + "string": [ + { + "name": "module_desc", + "value": "module description" + }, + { + "name": "entryAbility_desc", + "value": "description" + }, + { + "name": "entryAbility_label", + "value": "video play" + }, + { + "name": "video_res_1", + "value": "test1.mp4" + }, + { + "name": "video_res_2", + "value": "test2.mp4" + }, + { + "name": "video_res_3", + "value": "network.mp4" + }, + { + "name": "video_speed_1_0X", + "value": "1.0X" + }, + { + "name": "video_speed_1_25X", + "value": "1.25X" + }, + { + "name": "video_speed_1_75X", + "value": "1.75X" + }, + { + "name": "video_speed_2_0X", + "value": "2.0X" + }, + { + "name": "video_warn", + "value": "Exit the program and check if the network is connected or available!" + }, + { + "name": "dialog_cancel", + "value": "cancel" + }, + { + "name": "dialog_play_speed", + "value": "play speed" + }, + { + "name": "playing", + "value": "playing" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/resources/rawfile/test1.mp4 b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/resources/rawfile/test1.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..1a9c91dc5903956c3e6a925c8758b77e623cf49f Binary files /dev/null and b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/resources/rawfile/test1.mp4 differ diff --git a/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/resources/rawfile/test2.mp4 b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/resources/rawfile/test2.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..895cb24b6ae12cc1a9cc3a46b9d777a1ae912f63 Binary files /dev/null and b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/resources/rawfile/test2.mp4 differ diff --git a/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/resources/zh_CN/element/string.json b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/resources/zh_CN/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..232af0e3cd07fd0028ee53601018a9d1fd8d46fc --- /dev/null +++ b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/main/resources/zh_CN/element/string.json @@ -0,0 +1,60 @@ +{ + "string": [ + { + "name": "module_desc", + "value": "模块描述" + }, + { + "name": "entryAbility_desc", + "value": "description" + }, + { + "name": "entryAbility_label", + "value": "视频播放" + }, + { + "name": "video_warn", + "value": "退出程序,请检查网络是否连接或可用!" + }, + { + "name": "video_speed_1_0X", + "value": "1.0X" + }, + { + "name": "video_speed_1_25X", + "value": "1.25X" + }, + { + "name": "video_speed_1_75X", + "value": "1.75X" + }, + { + "name": "video_res_1", + "value": "test1.mp4" + }, + { + "name": "video_res_2", + "value": "test2.mp4" + }, + { + "name": "video_res_3", + "value": "network.mp4" + }, + { + "name": "video_speed_2_0X", + "value": "2.0X" + }, + { + "name": "dialog_cancel", + "value": "取消" + }, + { + "name": "dialog_play_speed", + "value": "播放倍速" + }, + { + "name": "playing", + "value": "当前播放" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Media/VideoPlay/entry/src/ohosTest/ets/TestRunner/OpenHarmonyTestRunner.ts b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/ohosTest/ets/TestRunner/OpenHarmonyTestRunner.ts new file mode 100644 index 0000000000000000000000000000000000000000..40e3332a8bd4ab4a3e6d2124042fac8b2a718135 --- /dev/null +++ b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/ohosTest/ets/TestRunner/OpenHarmonyTestRunner.ts @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2023 Hunan OpenValley Digital Industry Development Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import hilog from '@ohos.hilog'; +import TestRunner from '@ohos.application.testRunner'; +import AbilityDelegatorRegistry from '@ohos.app.ability.abilityDelegatorRegistry'; + +var abilityDelegator = undefined +var abilityDelegatorArguments = undefined + +async function onAbilityCreateCallback() { + hilog.info(0x0000, 'testTag', '%{public}s', 'onAbilityCreateCallback'); +} + +async function addAbilityMonitorCallback(err: any) { + hilog.info(0x0000, 'testTag', 'addAbilityMonitorCallback : %{public}s', JSON.stringify(err) ?? ''); +} + +export default class OpenHarmonyTestRunner implements TestRunner { + constructor() { + } + + onPrepare() { + hilog.info(0x0000, 'testTag', '%{public}s', 'OpenHarmonyTestRunner OnPrepare '); + } + + async onRun() { + hilog.info(0x0000, 'testTag', '%{public}s', 'OpenHarmonyTestRunner onRun run'); + abilityDelegatorArguments = AbilityDelegatorRegistry.getArguments() + abilityDelegator = AbilityDelegatorRegistry.getAbilityDelegator() + let testAbilityName = abilityDelegatorArguments.bundleName + '.TestAbility'; + let lMonitor = { + abilityName: testAbilityName, + onAbilityCreate: onAbilityCreateCallback, + }; + abilityDelegator.addAbilityMonitor(lMonitor, addAbilityMonitorCallback) + let cmd = 'aa start -d 0 -a TestAbility' + ' -b ' + abilityDelegatorArguments.bundleName; + let debug = abilityDelegatorArguments.parameters['-D']; + if (debug == 'true') { + cmd += ' -D' + } + hilog.info(0x0000, 'testTag', 'cmd : %{public}s', cmd); + abilityDelegator.executeShellCommand(cmd, + (err: any, d: any) => { + hilog.info(0x0000, 'testTag', 'executeShellCommand : err : %{public}s', JSON.stringify(err) ?? ''); + hilog.info(0x0000, 'testTag', 'executeShellCommand : data : %{public}s', d.stdResult ?? ''); + hilog.info(0x0000, 'testTag', 'executeShellCommand : data : %{public}s', d.exitCode ?? ''); + }); + hilog.info(0x0000, 'testTag', '%{public}s', 'OpenHarmonyTestRunner onRun end'); + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Media/VideoPlay/entry/src/ohosTest/ets/test/Ability.test.ets b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/ohosTest/ets/test/Ability.test.ets new file mode 100644 index 0000000000000000000000000000000000000000..4056901ae78e30358c804a8a441584c091cfdfbe --- /dev/null +++ b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/ohosTest/ets/test/Ability.test.ets @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2023 Hunan OpenValley Digital Industry Development Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import hilog from '@ohos.hilog'; +import { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from '@ohos/hypium'; + +export default function abilityTest() { + describe('ActsAbilityTest', () => { + // Defines a test suite. Two parameters are supported: test suite name and test suite function. + beforeAll(() => { + // Presets an action, which is performed only once before all test cases of the test suite start. + // This API supports only one parameter: preset action function. + }) + beforeEach(() => { + // Presets an action, which is performed before each unit test case starts. + // The number of execution times is the same as the number of test cases defined by **it**. + // This API supports only one parameter: preset action function. + }) + afterEach(() => { + // Presets a clear action, which is performed after each unit test case ends. + // The number of execution times is the same as the number of test cases defined by **it**. + // This API supports only one parameter: clear action function. + }) + afterAll(() => { + // Presets a clear action, which is performed after all test cases of the test suite end. + // This API supports only one parameter: clear action function. + }) + it('assertContain', 0, () => { + // Defines a test case. This API supports three parameters: test case name, filter parameter, and test case function. + hilog.info(0x0000, 'testTag', '%{public}s', 'it begin'); + let a = 'abc'; + let b = 'b'; + // Defines a variety of assertion methods, which are used to declare expected boolean conditions. + expect(a).assertContain(b); + expect(a).assertEqual(a); + }) + }) +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Media/VideoPlay/entry/src/ohosTest/ets/test/Choose.test.ets b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/ohosTest/ets/test/Choose.test.ets new file mode 100644 index 0000000000000000000000000000000000000000..32f3e9fca90f7a985c6afe9e98d7a146e4e2a33c --- /dev/null +++ b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/ohosTest/ets/test/Choose.test.ets @@ -0,0 +1,111 @@ +/* + * Copyright (c) 2023 Hunan OpenValley Digital Industry Development Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { describe, it } from '@ohos/hypium'; +import { Driver, ON } from '@ohos.UiTest'; +import AbilityDelegatorRegistry from '@ohos.app.ability.abilityDelegatorRegistry'; +import { getString } from '../../../main/ets/utils/ResourceUtil'; +import hilog from '@ohos.hilog'; + +const TAG = '[Sample_VideoPlay]'; +const DOMAIN = 0xF811; +const BUNDLE = 'VideoPlay_'; + +export default function ChooseTest() { + describe('ChooseTest', () => { + /** + * 切换test2.mp4视频 + */ + it(BUNDLE + 'Choose_001', 0, async (done: Function) => { + // 启动Ability + hilog.info(DOMAIN, TAG, BUNDLE + 'Choose_001 begin'); + let abilityDelegatorRegistry = AbilityDelegatorRegistry.getAbilityDelegator(); + await abilityDelegatorRegistry.executeShellCommand('aa start -a EntryAbility -b net.openvally.videoplay'); + + // 拉起操作界面 + let driver = await Driver.create(); + await driver.delayMs(1000); + await driver.assertComponentExist(ON.id('Video')); + let stack = await driver.findComponent(ON.id('Video')); + await driver.delayMs(5000); + await stack.click(); + // 点击视频列表 + await driver.assertComponentExist(ON.id('Choose')); + let btnPlay = await driver.findComponent(ON.id('Choose')); + await btnPlay.click(); + + // 点击test2.mp4 + const str = await getString($r('app.string.video_res_2')); + await driver.assertComponentExist(ON.text(str)); + let button = await driver.findComponent(ON.text(str)); + await button.click(); + await driver.delayMs(1000); + done(); + hilog.info(DOMAIN, TAG, BUNDLE + 'Choose_001 end'); + }) + + /** + * 切换network.mp4视频 + */ + it(BUNDLE + 'Choose_002', 0, async (done: Function) => { + hilog.info(DOMAIN, TAG, BUNDLE + 'Choose_002 begin'); + let driver = await Driver.create(); + await driver.delayMs(1000); + // 拉起操作界面 + await driver.assertComponentExist(ON.id('Video')); + let stack = await driver.findComponent(ON.id('Video')); + await driver.delayMs(5000); + await stack.click(); + // 点击视频列表 + await driver.assertComponentExist(ON.id('Choose')); + let btnPlay = await driver.findComponent(ON.id('Choose')); + await btnPlay.click(); + // 点击netWork.mp4 + const str = await getString($r('app.string.video_res_3')); + await driver.assertComponentExist(ON.text(str)); + let button = await driver.findComponent(ON.text(str)); + await button.click(); + await driver.delayMs(3000); + done(); + hilog.info(DOMAIN, TAG, BUNDLE + 'Choose_002 end'); + }) + + /** + * 切换test1.mp4视频 + */ + it(BUNDLE + 'Choose_003', 0, async (done: Function) => { + hilog.info(DOMAIN, TAG, BUNDLE + 'Choose_003 begin'); + let driver = await Driver.create(); + await driver.delayMs(1000); + // 拉起操作界面 + await driver.assertComponentExist(ON.id('Video')); + let stack = await driver.findComponent(ON.id('Video')); + await driver.delayMs(5000); + await stack.click(); + // 点击视频列表 + await driver.assertComponentExist(ON.id('Choose')); + let btnPlay = await driver.findComponent(ON.id('Choose')); + await btnPlay.click(); + + // 点击test1.mp4 + const str = await getString($r('app.string.video_res_1')); + await driver.assertComponentExist(ON.text(str)); + let button = await driver.findComponent(ON.text(str)); + await button.click(); + await driver.delayMs(1000); + done(); + hilog.info(DOMAIN, TAG, BUNDLE + 'Choose_003 end'); + }) + }) +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Media/VideoPlay/entry/src/ohosTest/ets/test/Exit.test.ets b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/ohosTest/ets/test/Exit.test.ets new file mode 100644 index 0000000000000000000000000000000000000000..5f3fef0abc81b507f9840090c252d7afc86334ed --- /dev/null +++ b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/ohosTest/ets/test/Exit.test.ets @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2023 Hunan OpenValley Digital Industry Development Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { describe, it } from '@ohos/hypium'; +import { Driver, ON } from '@ohos.UiTest'; +import AbilityDelegatorRegistry from '@ohos.app.ability.abilityDelegatorRegistry'; +import hilog from '@ohos.hilog'; + +const TAG = '[Sample_VideoPlay]'; +const DOMAIN = 0xF811; +const BUNDLE = 'VideoPlay_'; + +const delegator = AbilityDelegatorRegistry.getAbilityDelegator(); + +export default function ExitTest() { + describe('ExitTest', () => { + /** + * 退出测试 + */ + it(BUNDLE + 'Exit_001', 0, async (done: Function) => { + hilog.info(DOMAIN, TAG, BUNDLE + 'Exit_001 begin'); + await delegator.executeShellCommand('aa start -a EntryAbility -b net.openvally.videoplay'); + // 拉起操作界面 + let driver = Driver.create(); + await driver.delayMs(1000); + await driver.assertComponentExist(ON.id('Video')); + let stack = await driver.findComponent(ON.id('Video')); + await stack.click(); + // 点击退出 + await driver.delayMs(1000); + await driver.assertComponentExist(ON.id('Exit')); + let Exit = await driver.findComponent(ON.id('Exit')); + await Exit.click(); + done(); + hilog.info(DOMAIN, TAG, BUNDLE + 'Exit_001 end'); + }) + }) +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Media/VideoPlay/entry/src/ohosTest/ets/test/List.test.ets b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/ohosTest/ets/test/List.test.ets new file mode 100644 index 0000000000000000000000000000000000000000..dcc020541396b124069a58352447a4e7df7cf125 --- /dev/null +++ b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/ohosTest/ets/test/List.test.ets @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2023 Hunan OpenValley Digital Industry Development Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import ExitTest from './Exit.test' +import SliderTest from './Slider.test' +import ChooseTest from './Choose.test' +import SpeedTest from './Speed.test' +import PlayPauseTest from './PlayPause.test' +import abilityTest from './Ability.test' + +export default function testsuite() { + abilityTest() + PlayPauseTest() + SpeedTest() + ChooseTest() + SliderTest() + ExitTest() +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Media/VideoPlay/entry/src/ohosTest/ets/test/PlayPause.test.ets b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/ohosTest/ets/test/PlayPause.test.ets new file mode 100644 index 0000000000000000000000000000000000000000..d51891be824d946302e4e9ac8ff811669ec655c2 --- /dev/null +++ b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/ohosTest/ets/test/PlayPause.test.ets @@ -0,0 +1,70 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { describe, it } from '@ohos/hypium'; +import { Driver, ON } from '@ohos.UiTest'; +import AbilityDelegatorRegistry from '@ohos.app.ability.abilityDelegatorRegistry'; +import hilog from '@ohos.hilog'; + +const TAG = '[Sample_VideoPlay]'; +const DOMAIN = 0xF811; +const BUNDLE = 'VideoPlay_'; + +export default function PlayPauseTest() { + /** + * 暂停、播放 + */ + describe('PlayPauseTest', () => { + /** + * 点击暂停 + */ + it(BUNDLE + 'PlayPause_001', 0, async (done: Function) => { + hilog.info(DOMAIN, TAG, BUNDLE + 'PlayPause_001 begin'); + let abilityDelegatorRegistry = AbilityDelegatorRegistry.getAbilityDelegator(); + await abilityDelegatorRegistry.executeShellCommand('aa start -a EntryAbility -b net.openvally.videoplay'); + let driver = Driver.create(); + await driver.delayMs(2000); + // 拉起操作界面 + await driver.assertComponentExist(ON.id('Video')); + let stack = await driver.findComponent(ON.id('Video')); + await stack.click(); + // 点击暂停 + await driver.assertComponentExist(ON.id('play')); + let btnPlay = await driver.findComponent(ON.id('play')); + await btnPlay.click(); + await driver.delayMs(2000); + done(); + hilog.info(DOMAIN, TAG, BUNDLE + 'PlayPause_001 end'); + }) + /** + * 点击播放 + */ + it(BUNDLE + 'PlayPause_002', 0, async (done: Function) => { + hilog.info(DOMAIN, TAG, BUNDLE + 'PlayPause_002 begin'); + let driver = Driver.create(); + await driver.delayMs(6000); + // 拉起操作界面 + await driver.assertComponentExist(ON.id('Video')); + let stack = await driver.findComponent(ON.id('Video')); + await stack.click(); + // 点击播放 + await driver.assertComponentExist(ON.id('play')); + let btnPlay = await driver.findComponent(ON.id('play')); + await btnPlay.click(); + await driver.delayMs(2000); + done(); + hilog.info(DOMAIN, TAG, BUNDLE + 'PlayPause_002 end'); + }) + }) +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Media/VideoPlay/entry/src/ohosTest/ets/test/Slider.test.ets b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/ohosTest/ets/test/Slider.test.ets new file mode 100644 index 0000000000000000000000000000000000000000..097521d42cbc7dc55493f4c9ea94e3c7637a4c5e --- /dev/null +++ b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/ohosTest/ets/test/Slider.test.ets @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2023 Hunan OpenValley Digital Industry Development Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { describe, it } from '@ohos/hypium'; +import { Driver, ON } from '@ohos.UiTest'; +import AbilityDelegatorRegistry from '@ohos.app.ability.abilityDelegatorRegistry'; +import hilog from '@ohos.hilog'; + +const TAG = '[Sample_VideoPlay]'; +const DOMAIN = 0xF811; +const BUNDLE = 'VideoPlay_'; + +export default function SliderTest() { + describe('SliderTest', () => { + /** + * 进度条测试 + */ + it(BUNDLE + 'Slider_001', 0, async (done: Function) => { + hilog.info(DOMAIN, TAG, BUNDLE + 'Slider_001 begin'); + let abilityDelegatorRegistry = AbilityDelegatorRegistry.getAbilityDelegator(); + await abilityDelegatorRegistry.executeShellCommand('aa start -a EntryAbility -b net.openvally.videoplay'); + // 拉起操作界面 + let driver = Driver.create(); + await driver.delayMs(1000); + await driver.assertComponentExist(ON.id('Video')); + let stack = await driver.findComponent(ON.id('Video')); + await stack.click(); + // 滑动滑块 + await driver.assertComponentExist(ON.id('Slider')); + let Slider = await driver.findComponent(ON.id('Slider')); + let point = await Slider.getBoundsCenter(); + await driver.drag(point.x - 50, point.y, point.x + 50, point.y, 800); + await driver.delayMs(2000); + done(); + hilog.info(DOMAIN, TAG, BUNDLE + 'Slider_001 end'); + }) + }) +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Media/VideoPlay/entry/src/ohosTest/ets/test/Speed.test.ets b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/ohosTest/ets/test/Speed.test.ets new file mode 100644 index 0000000000000000000000000000000000000000..5171d035da89e33eec2c9dd57ddc93cd932146fd --- /dev/null +++ b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/ohosTest/ets/test/Speed.test.ets @@ -0,0 +1,139 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { describe, it } from '@ohos/hypium'; +import { Driver, ON } from '@ohos.UiTest'; +import AbilityDelegatorRegistry from '@ohos.app.ability.abilityDelegatorRegistry'; +import { getString } from '../../../main/ets/utils/ResourceUtil'; +import hilog from '@ohos.hilog'; + +const TAG = '[Sample_VideoPlay]'; +const DOMAIN = 0xF811; +const BUNDLE = 'VideoPlay_'; + +export default function SpeedTest() { + describe('SpeedTest', () => { + /** + * 调节倍速2.0X + */ + it(BUNDLE + 'Speed_001', 0, async (done: Function) => { + // 启动Ability + hilog.info(DOMAIN, TAG, BUNDLE + 'Speed_001 begin'); + let abilityDelegatorRegistry = AbilityDelegatorRegistry.getAbilityDelegator(); + await abilityDelegatorRegistry.executeShellCommand('aa start -a EntryAbility -b net.openvally.videoplay'); + + // 拉起操作界面 + let driver = await Driver.create(); + await driver.delayMs(1000); + await driver.assertComponentExist(ON.id('Video')); + let stack = await driver.findComponent(ON.id('Video')); + await driver.delayMs(5000); + await stack.click(); + + // 点击倍速 + await driver.assertComponentExist(ON.id('Speed')); + let btnPlay = await driver.findComponent(ON.id('Speed')); + await btnPlay.click(); + + // 点击2.0X + const str = await getString($r('app.string.video_speed_2_0X')); + await driver.assertComponentExist(ON.text(str)); + let button = await driver.findComponent(ON.text(str)); + await button.click(); + await driver.delayMs(1000); + done(); + hilog.info(DOMAIN, TAG, BUNDLE + 'Speed_001 end'); + }) + + /** + * 调节倍速1.75X + */ + it(BUNDLE + 'Speed_002', 0, async (done: Function) => { + hilog.info(DOMAIN, TAG, BUNDLE + 'Speed_002 begin'); + let driver = await Driver.create(); + await driver.assertComponentExist(ON.id('Video')); + let stack = await driver.findComponent(ON.id('Video')); + await driver.delayMs(5000); + await stack.click(); + // 点击倍速 + await driver.delayMs(1000); + await driver.assertComponentExist(ON.id('Speed')); + let btnPlay = await driver.findComponent(ON.id('Speed')); + await btnPlay.click(); + + // 点击1.75X + const str = await getString($r('app.string.video_speed_1_75X')); + await driver.assertComponentExist(ON.text(str)); + let button = await driver.findComponent(ON.text(str)); + await button.click(); + await driver.delayMs(1000); + done(); + hilog.info(DOMAIN, TAG, BUNDLE + 'Speed_002 end'); + }) + + /** + * 调节倍速1.25X + */ + it(BUNDLE + 'Speed_003', 0, async (done: Function) => { + hilog.info(DOMAIN, TAG, BUNDLE + 'Speed_003 begin'); + let driver = await Driver.create(); + await driver.assertComponentExist(ON.id('Video')); + let stack = await driver.findComponent(ON.id('Video')); + await driver.delayMs(5000); + await stack.click(); + // 点击倍速 + await driver.delayMs(1000); + await driver.assertComponentExist(ON.id('Speed')); + let btnPlay = await driver.findComponent(ON.id('Speed')); + await btnPlay.click(); + + // 点击1.25X + await driver.delayMs(1000); + const str = await getString($r('app.string.video_speed_1_25X')); + await driver.assertComponentExist(ON.text(str)); + let button = await driver.findComponent(ON.text(str)); + await button.click(); + await driver.delayMs(1000); + done(); + hilog.info(DOMAIN, TAG, BUNDLE + 'Speed_003 end'); + }) + + /** + * 调节倍速1.0X + */ + it(BUNDLE + 'Speed_004', 0, async (done: Function) => { + hilog.info(DOMAIN, TAG, BUNDLE + 'Speed_004 begin'); + let driver = await Driver.create(); + await driver.assertComponentExist(ON.id('Video')); + let stack = await driver.findComponent(ON.id('Video')); + await driver.delayMs(5000); + await stack.click(); + // 点击倍速 + await driver.delayMs(1000); + await driver.assertComponentExist(ON.id('Speed')); + let btnPlay = await driver.findComponent(ON.id('Speed')); + await btnPlay.click(); + + // 点击1.0X + await driver.delayMs(1000); + const str = await getString($r('app.string.video_speed_1_0X')); + await driver.assertComponentExist(ON.text(str)); + let button = await driver.findComponent(ON.text(str)); + await button.click(); + await driver.delayMs(1000); + hilog.info(DOMAIN, TAG, BUNDLE + 'Speed_004 end'); + done(); + }) + }) +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Media/VideoPlay/entry/src/ohosTest/ets/testability/TestAbility.ets b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/ohosTest/ets/testability/TestAbility.ets new file mode 100644 index 0000000000000000000000000000000000000000..d72a487c50d8295be25093373bf75a09ce9f3f46 --- /dev/null +++ b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/ohosTest/ets/testability/TestAbility.ets @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2023 Hunan OpenValley Digital Industry Development Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import UIAbility from '@ohos.app.ability.UIAbility'; +import AbilityDelegatorRegistry from '@ohos.app.ability.abilityDelegatorRegistry'; +import AbilityConstant from '@ohos.app.ability.AbilityConstant'; +import hilog from '@ohos.hilog'; +import { Hypium } from '@ohos/hypium'; +import testsuite from '../test/List.test'; +import window from '@ohos.window'; +import Want from '@ohos.app.ability.Want'; + +export default class TestAbility extends UIAbility { + onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) { + hilog.info(0x0000, 'testTag', '%{public}s', 'TestAbility onCreate'); + hilog.info(0x0000, 'testTag', '%{public}s', 'want param:' + JSON.stringify(want) ?? '') + hilog.info(0x0000, 'testTag', '%{public}s', 'launchParam:' + JSON.stringify(launchParam) ?? '') + let abilityDelegator = AbilityDelegatorRegistry.getAbilityDelegator(); + let abilityDelegatorArguments = AbilityDelegatorRegistry.getArguments(); + hilog.info(0x0000, 'testTag', '%{public}s', 'start run testcase!!!'); + Hypium.hypiumTest(abilityDelegator, abilityDelegatorArguments, testsuite) + } + + onDestroy() { + hilog.info(0x0000, 'testTag', '%{public}s', 'TestAbility onDestroy') + } + + onWindowStageCreate(windowStage: window.WindowStage) { + hilog.info(0x0000, 'testTag', '%{public}s', 'TestAbility onWindowStageCreate'); + windowStage.loadContent('testability/pages/Index', (err, data) => { + if (err.code) { + hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? '') + return + } + hilog.info(0x0000, 'testTag', 'Succeeded in loading the content. Data: %{public}s', + JSON.stringify(data) ?? '') + }); + } + + onWindowStageDestroy() { + hilog.info(0x0000, 'testTag', '%{public}s', 'TestAbility onWindowStageDestroy') + } + + onForeground() { + hilog.info(0x0000, 'testTag', '%{public}s', 'TestAbility onForeground') + } + + onBackground() { + hilog.info(0x0000, 'testTag', '%{public}s', 'TestAbility onBackground') + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Media/VideoPlay/entry/src/ohosTest/ets/testability/pages/Index.ets b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/ohosTest/ets/testability/pages/Index.ets new file mode 100644 index 0000000000000000000000000000000000000000..b867a26fec8f91f1dc0914a45b66cb07e4e13ff9 --- /dev/null +++ b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/ohosTest/ets/testability/pages/Index.ets @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2023 Hunan OpenValley Digital Industry Development Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import hilog from '@ohos.hilog'; + +@Entry +@Component +struct Index { + aboutToAppear() { + hilog.info(0x0000, 'testTag', '%{public}s', 'TestAbility index aboutToAppear'); + } + + @State message: string = 'Hello World' + + build() { + Row() { + Column() { + Text(this.message) + .fontSize(50) + .fontWeight(FontWeight.Bold) + Button() { + Text('next page') + .fontSize(20) + .fontWeight(FontWeight.Bold) + } + .type(ButtonType.Capsule) + .margin({ + top: 20 + }) + .backgroundColor('#0D9FFB') + .width('35%') + .height('5%') + .onClick(() => { + }) + } + .width('100%') + } + .height('100%') + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Media/VideoPlay/entry/src/ohosTest/module.json5 b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/ohosTest/module.json5 new file mode 100644 index 0000000000000000000000000000000000000000..21251ffe9ed1145fdcc43f08560857fa8a4fcb57 --- /dev/null +++ b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/ohosTest/module.json5 @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2023 Hunan OpenValley Digital Industry Development Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "module": { + "name": "entry_test", + "type": "feature", + "description": "$string:module_test_desc", + "mainElement": "TestAbility", + "deviceTypes": [ + "default", + "tablet" + ], + "deliveryWithInstall": true, + "installationFree": false, + "pages": "$profile:test_pages", + "abilities": [ + { + "name": "TestAbility", + "srcEntrance": "./ets/testability/TestAbility.ets", + "description": "$string:TestAbility_desc", + "icon": "$media:icon", + "label": "$string:TestAbility_label", + "visible": true, + "startWindowIcon": "$media:icon", + "startWindowBackground": "$color:start_window_background", + "skills": [ + { + "actions": [ + "action.system.home" + ], + "entities": [ + "entity.system.home" + ] + } + ] + } + ] + } +} diff --git a/HarmonyOS_NEXT/Media/VideoPlay/entry/src/ohosTest/resources/base/element/color.json b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/ohosTest/resources/base/element/color.json new file mode 100644 index 0000000000000000000000000000000000000000..3c712962da3c2751c2b9ddb53559afcbd2b54a02 --- /dev/null +++ b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/ohosTest/resources/base/element/color.json @@ -0,0 +1,8 @@ +{ + "color": [ + { + "name": "start_window_background", + "value": "#FFFFFF" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Media/VideoPlay/entry/src/ohosTest/resources/base/element/string.json b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/ohosTest/resources/base/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..37f168f33209241278f208dd8515d27060716d26 --- /dev/null +++ b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/ohosTest/resources/base/element/string.json @@ -0,0 +1,64 @@ +{ + "string": [ + { + "name": "module_test_desc", + "value": "test ability description" + }, + { + "name": "TestAbility_desc", + "value": "the test ability" + }, + { + "name": "TestAbility_label", + "value": "test label" + }, + { + "name": "entryAbility_label", + "value": "视频播放" + }, + { + "name": "video_res_1", + "value": "test1.mp4" + }, + { + "name": "video_res_2", + "value": "test2.mp4" + }, + { + "name": "video_res_3", + "value": "network.mp4" + }, + { + "name": "video_speed_1_0X", + "value": "1.0X" + }, + { + "name": "video_speed_1_25X", + "value": "1.25X" + }, + { + "name": "video_speed_1_75X", + "value": "1.75X" + }, + { + "name": "video_speed_2_0X", + "value": "2.0X" + }, + { + "name": "video_warn", + "value": "退出程序,请检查网络是否连接或可用!" + }, + { + "name": "dialog_play_speed", + "value": "播放倍速" + }, + { + "name": "dialog_cancel", + "value": "取消" + }, + { + "name": "playing", + "value": "当前播放" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Media/VideoPlay/entry/src/ohosTest/resources/base/media/icon.png b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/ohosTest/resources/base/media/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ce307a8827bd75456441ceb57d530e4c8d45d36c Binary files /dev/null and b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/ohosTest/resources/base/media/icon.png differ diff --git a/HarmonyOS_NEXT/Media/VideoPlay/entry/src/ohosTest/resources/base/profile/test_pages.json b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/ohosTest/resources/base/profile/test_pages.json new file mode 100644 index 0000000000000000000000000000000000000000..b7e7343cacb32ce982a45e76daad86e435e054fe --- /dev/null +++ b/HarmonyOS_NEXT/Media/VideoPlay/entry/src/ohosTest/resources/base/profile/test_pages.json @@ -0,0 +1,5 @@ +{ + "src": [ + "testability/pages/Index" + ] +} diff --git a/HarmonyOS_NEXT/Media/VideoPlay/hvigor/hvigor-config.json5 b/HarmonyOS_NEXT/Media/VideoPlay/hvigor/hvigor-config.json5 new file mode 100644 index 0000000000000000000000000000000000000000..1c0ce0e828f64b0b9ebdbbf19b5ade05aef99343 --- /dev/null +++ b/HarmonyOS_NEXT/Media/VideoPlay/hvigor/hvigor-config.json5 @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2023 Hunan OpenValley Digital Industry Development Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "hvigorVersion": "3.0.9-s", + "dependencies": { + "@ohos/hvigor-ohos-plugin": "3.0.9-s" + }, + "execution": { + // "daemon": true, /* Enable daemon compilation. Default: true */ + // "incremental": true, /* Enable incremental compilation. Default: true */ + // "parallel": true, /* Enable parallel compilation. Default: true */ + // "typeCheck": false, /* Enable typeCheck. Default: false */ + }, + "logging": { + // "level": "info" /* Define the log level. Value: [ "debug" | "info" | "warn" | "error" ]. Default: "info" */ + }, + "debugging": { + // "stacktrace": false /* Disable stacktrace compilation. Default: false */ + } +} diff --git a/HarmonyOS_NEXT/Media/VideoPlay/hvigor/hvigor-wrapper.js b/HarmonyOS_NEXT/Media/VideoPlay/hvigor/hvigor-wrapper.js new file mode 100644 index 0000000000000000000000000000000000000000..994f22987bd0739b9faa07c966b066c2d9218602 --- /dev/null +++ b/HarmonyOS_NEXT/Media/VideoPlay/hvigor/hvigor-wrapper.js @@ -0,0 +1,2 @@ +"use strict";var e=require("fs"),t=require("path"),n=require("os"),r=require("crypto"),u=require("child_process"),o=require("constants"),i=require("stream"),s=require("util"),c=require("assert"),a=require("tty"),l=require("zlib"),f=require("net");function d(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var D=d(e),p=d(t),E=d(n),m=d(r),h=d(u),y=d(o),C=d(i),F=d(s),g=d(c),A=d(a),v=d(l),S=d(f),w="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},O={},b={},_={},B=w&&w.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(_,"__esModule",{value:!0}),_.isMac=_.isLinux=_.isWindows=void 0;const P=B(E.default),k="Windows_NT",x="Linux",N="Darwin";_.isWindows=function(){return P.default.type()===k},_.isLinux=function(){return P.default.type()===x},_.isMac=function(){return P.default.type()===N};var I={},T=w&&w.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var u=Object.getOwnPropertyDescriptor(t,n);u&&!("get"in u?!t.__esModule:u.writable||u.configurable)||(u={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,u)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),R=w&&w.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),M=w&&w.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&T(t,e,n);return R(t,e),t};Object.defineProperty(I,"__esModule",{value:!0}),I.hash=void 0;const L=M(m.default);I.hash=function(e,t="md5"){return L.createHash(t).update(e,"utf-8").digest("hex")},function(e){var t=w&&w.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var u=Object.getOwnPropertyDescriptor(t,n);u&&!("get"in u?!t.__esModule:u.writable||u.configurable)||(u={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,u)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),n=w&&w.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),r=w&&w.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(null!=e)for(var u in e)"default"!==u&&Object.prototype.hasOwnProperty.call(e,u)&&t(r,e,u);return n(r,e),r};Object.defineProperty(e,"__esModule",{value:!0}),e.HVIGOR_BOOT_JS_FILE_PATH=e.HVIGOR_PROJECT_DEPENDENCY_PACKAGE_JSON_PATH=e.HVIGOR_PROJECT_DEPENDENCIES_HOME=e.HVIGOR_PROJECT_WRAPPER_HOME=e.HVIGOR_PROJECT_NAME=e.HVIGOR_PROJECT_ROOT_DIR=e.HVIGOR_PROJECT_CACHES_HOME=e.HVIGOR_PNPM_STORE_PATH=e.HVIGOR_WRAPPER_PNPM_SCRIPT_PATH=e.HVIGOR_WRAPPER_TOOLS_HOME=e.HVIGOR_USER_HOME=e.DEFAULT_PACKAGE_JSON=e.DEFAULT_HVIGOR_CONFIG_JSON_FILE_NAME=e.PNPM=e.HVIGOR=e.NPM_TOOL=e.PNPM_TOOL=e.HVIGOR_ENGINE_PACKAGE_NAME=void 0;const u=r(p.default),o=r(E.default),i=_,s=I;e.HVIGOR_ENGINE_PACKAGE_NAME="@ohos/hvigor",e.PNPM_TOOL=(0,i.isWindows)()?"pnpm.cmd":"pnpm",e.NPM_TOOL=(0,i.isWindows)()?"npm.cmd":"npm",e.HVIGOR="hvigor",e.PNPM="pnpm",e.DEFAULT_HVIGOR_CONFIG_JSON_FILE_NAME="hvigor-config.json5",e.DEFAULT_PACKAGE_JSON="package.json",e.HVIGOR_USER_HOME=u.resolve(o.homedir(),".hvigor"),e.HVIGOR_WRAPPER_TOOLS_HOME=u.resolve(e.HVIGOR_USER_HOME,"wrapper","tools"),e.HVIGOR_WRAPPER_PNPM_SCRIPT_PATH=u.resolve(e.HVIGOR_WRAPPER_TOOLS_HOME,"node_modules",".bin",e.PNPM_TOOL),e.HVIGOR_PNPM_STORE_PATH=u.resolve(e.HVIGOR_USER_HOME,"caches"),e.HVIGOR_PROJECT_CACHES_HOME=u.resolve(e.HVIGOR_USER_HOME,"project_caches"),e.HVIGOR_PROJECT_ROOT_DIR=process.cwd(),e.HVIGOR_PROJECT_NAME=u.basename((0,s.hash)(e.HVIGOR_PROJECT_ROOT_DIR)),e.HVIGOR_PROJECT_WRAPPER_HOME=u.resolve(e.HVIGOR_PROJECT_ROOT_DIR,e.HVIGOR),e.HVIGOR_PROJECT_DEPENDENCIES_HOME=u.resolve(e.HVIGOR_PROJECT_CACHES_HOME,e.HVIGOR_PROJECT_NAME,"workspace"),e.HVIGOR_PROJECT_DEPENDENCY_PACKAGE_JSON_PATH=u.resolve(e.HVIGOR_PROJECT_DEPENDENCIES_HOME,e.DEFAULT_PACKAGE_JSON),e.HVIGOR_BOOT_JS_FILE_PATH=u.resolve(e.HVIGOR_PROJECT_DEPENDENCIES_HOME,"node_modules","@ohos","hvigor","bin","hvigor.js")}(b);var j={},$={};Object.defineProperty($,"__esModule",{value:!0}),$.logInfoPrintConsole=$.logErrorAndExit=void 0,$.logErrorAndExit=function(e){e instanceof Error?console.error(e.message):console.error(e),process.exit(-1)},$.logInfoPrintConsole=function(e){console.log(e)};var H=w&&w.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var u=Object.getOwnPropertyDescriptor(t,n);u&&!("get"in u?!t.__esModule:u.writable||u.configurable)||(u={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,u)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),J=w&&w.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),G=w&&w.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&H(t,e,n);return J(t,e),t},V=w&&w.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(j,"__esModule",{value:!0}),j.isFileExists=j.offlinePluginConversion=j.executeCommand=j.getNpmPath=j.hasNpmPackInPaths=void 0;const U=h.default,W=G(p.default),z=b,K=$,q=V(D.default);j.hasNpmPackInPaths=function(e,t){try{return require.resolve(e,{paths:[...t]}),!0}catch(e){return!1}},j.getNpmPath=function(){const e=process.execPath;return W.join(W.dirname(e),z.NPM_TOOL)},j.executeCommand=function(e,t,n){0!==(0,U.spawnSync)(e,t,n).status&&(0,K.logErrorAndExit)(`Error: ${e} ${t} execute failed.See above for details.`)},j.offlinePluginConversion=function(e,t){return t.startsWith("file:")||t.endsWith(".tgz")?W.resolve(e,z.HVIGOR,t.replace("file:","")):t},j.isFileExists=function(e){return q.default.existsSync(e)&&q.default.statSync(e).isFile()},function(e){var t=w&&w.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var u=Object.getOwnPropertyDescriptor(t,n);u&&!("get"in u?!t.__esModule:u.writable||u.configurable)||(u={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,u)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),n=w&&w.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),r=w&&w.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(null!=e)for(var u in e)"default"!==u&&Object.prototype.hasOwnProperty.call(e,u)&&t(r,e,u);return n(r,e),r},u=w&&w.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,"__esModule",{value:!0}),e.executeInstallPnpm=e.isPnpmAvailable=e.environmentHandler=e.checkNpmConifg=e.PNPM_VERSION=void 0;const o=r(D.default),i=b,s=j,c=r(p.default),a=$,l=h.default,f=u(E.default);e.PNPM_VERSION="7.30.0",e.checkNpmConifg=function(){const e=c.resolve(i.HVIGOR_PROJECT_ROOT_DIR,".npmrc"),t=c.resolve(f.default.homedir(),".npmrc");if((0,s.isFileExists)(e)||(0,s.isFileExists)(t))return;const n=(0,s.getNpmPath)(),r=(0,l.spawnSync)(n,["config","get","prefix"],{cwd:i.HVIGOR_PROJECT_ROOT_DIR});if(0!==r.status||!r.stdout)return void(0,a.logErrorAndExit)("Error: The hvigor depends on the npmrc file. Configure the npmrc file first.");const u=c.resolve(`${r.stdout}`.replace(/[\r\n]/gi,""),".npmrc");(0,s.isFileExists)(u)||(0,a.logErrorAndExit)("Error: The hvigor depends on the npmrc file. Configure the npmrc file first.")},e.environmentHandler=function(){process.env["npm_config_update-notifier"]="false"},e.isPnpmAvailable=function(){return!!o.existsSync(i.HVIGOR_WRAPPER_PNPM_SCRIPT_PATH)&&(0,s.hasNpmPackInPaths)("pnpm",[i.HVIGOR_WRAPPER_TOOLS_HOME])},e.executeInstallPnpm=function(){(0,a.logInfoPrintConsole)(`Installing pnpm@${e.PNPM_VERSION}...`);const t=(0,s.getNpmPath)();!function(){const t=c.resolve(i.HVIGOR_WRAPPER_TOOLS_HOME,i.DEFAULT_PACKAGE_JSON);try{o.existsSync(i.HVIGOR_WRAPPER_TOOLS_HOME)||o.mkdirSync(i.HVIGOR_WRAPPER_TOOLS_HOME,{recursive:!0});const n={dependencies:{}};n.dependencies[i.PNPM]=e.PNPM_VERSION,o.writeFileSync(t,JSON.stringify(n))}catch(e){(0,a.logErrorAndExit)(`Error: EPERM: operation not permitted,create ${t} failed.`)}}(),(0,s.executeCommand)(t,["install","pnpm"],{cwd:i.HVIGOR_WRAPPER_TOOLS_HOME,stdio:["inherit","inherit","inherit"],env:process.env}),(0,a.logInfoPrintConsole)("Pnpm install success.")}}(O);var Y={},X={},Z={},Q={};Object.defineProperty(Q,"__esModule",{value:!0}),Q.Unicode=void 0;class ee{}Q.Unicode=ee,ee.Space_Separator=/[\u1680\u2000-\u200A\u202F\u205F\u3000]/,ee.ID_Start=/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/,ee.ID_Continue=/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDE00-\uDE3E\uDE47\uDE50-\uDE83\uDE86-\uDE99\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/,Object.defineProperty(Z,"__esModule",{value:!0}),Z.JudgeUtil=void 0;const te=Q;Z.JudgeUtil=class{static isIgnoreChar(e){return"string"==typeof e&&("\t"===e||"\v"===e||"\f"===e||" "===e||" "===e||"\ufeff"===e||"\n"===e||"\r"===e||"\u2028"===e||"\u2029"===e)}static isSpaceSeparator(e){return"string"==typeof e&&te.Unicode.Space_Separator.test(e)}static isIdStartChar(e){return"string"==typeof e&&(e>="a"&&e<="z"||e>="A"&&e<="Z"||"$"===e||"_"===e||te.Unicode.ID_Start.test(e))}static isIdContinueChar(e){return"string"==typeof e&&(e>="a"&&e<="z"||e>="A"&&e<="Z"||e>="0"&&e<="9"||"$"===e||"_"===e||"‌"===e||"‍"===e||te.Unicode.ID_Continue.test(e))}static isDigitWithoutZero(e){return/[1-9]/.test(e)}static isDigit(e){return"string"==typeof e&&/[0-9]/.test(e)}static isHexDigit(e){return"string"==typeof e&&/[0-9A-Fa-f]/.test(e)}};var ne={},re={fromCallback:function(e){return Object.defineProperty((function(...t){if("function"!=typeof t[t.length-1])return new Promise(((n,r)=>{e.call(this,...t,((e,t)=>null!=e?r(e):n(t)))}));e.apply(this,t)}),"name",{value:e.name})},fromPromise:function(e){return Object.defineProperty((function(...t){const n=t[t.length-1];if("function"!=typeof n)return e.apply(this,t);e.apply(this,t.slice(0,-1)).then((e=>n(null,e)),n)}),"name",{value:e.name})}},ue=y.default,oe=process.cwd,ie=null,se=process.env.GRACEFUL_FS_PLATFORM||process.platform;process.cwd=function(){return ie||(ie=oe.call(process)),ie};try{process.cwd()}catch(e){}if("function"==typeof process.chdir){var ce=process.chdir;process.chdir=function(e){ie=null,ce.call(process,e)},Object.setPrototypeOf&&Object.setPrototypeOf(process.chdir,ce)}var ae=function(e){ue.hasOwnProperty("O_SYMLINK")&&process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)&&function(e){e.lchmod=function(t,n,r){e.open(t,ue.O_WRONLY|ue.O_SYMLINK,n,(function(t,u){t?r&&r(t):e.fchmod(u,n,(function(t){e.close(u,(function(e){r&&r(t||e)}))}))}))},e.lchmodSync=function(t,n){var r,u=e.openSync(t,ue.O_WRONLY|ue.O_SYMLINK,n),o=!0;try{r=e.fchmodSync(u,n),o=!1}finally{if(o)try{e.closeSync(u)}catch(e){}else e.closeSync(u)}return r}}(e);e.lutimes||function(e){ue.hasOwnProperty("O_SYMLINK")&&e.futimes?(e.lutimes=function(t,n,r,u){e.open(t,ue.O_SYMLINK,(function(t,o){t?u&&u(t):e.futimes(o,n,r,(function(t){e.close(o,(function(e){u&&u(t||e)}))}))}))},e.lutimesSync=function(t,n,r){var u,o=e.openSync(t,ue.O_SYMLINK),i=!0;try{u=e.futimesSync(o,n,r),i=!1}finally{if(i)try{e.closeSync(o)}catch(e){}else e.closeSync(o)}return u}):e.futimes&&(e.lutimes=function(e,t,n,r){r&&process.nextTick(r)},e.lutimesSync=function(){})}(e);e.chown=r(e.chown),e.fchown=r(e.fchown),e.lchown=r(e.lchown),e.chmod=t(e.chmod),e.fchmod=t(e.fchmod),e.lchmod=t(e.lchmod),e.chownSync=u(e.chownSync),e.fchownSync=u(e.fchownSync),e.lchownSync=u(e.lchownSync),e.chmodSync=n(e.chmodSync),e.fchmodSync=n(e.fchmodSync),e.lchmodSync=n(e.lchmodSync),e.stat=o(e.stat),e.fstat=o(e.fstat),e.lstat=o(e.lstat),e.statSync=i(e.statSync),e.fstatSync=i(e.fstatSync),e.lstatSync=i(e.lstatSync),e.chmod&&!e.lchmod&&(e.lchmod=function(e,t,n){n&&process.nextTick(n)},e.lchmodSync=function(){});e.chown&&!e.lchown&&(e.lchown=function(e,t,n,r){r&&process.nextTick(r)},e.lchownSync=function(){});"win32"===se&&(e.rename="function"!=typeof e.rename?e.rename:function(t){function n(n,r,u){var o=Date.now(),i=0;t(n,r,(function s(c){if(c&&("EACCES"===c.code||"EPERM"===c.code||"EBUSY"===c.code)&&Date.now()-o<6e4)return setTimeout((function(){e.stat(r,(function(e,o){e&&"ENOENT"===e.code?t(n,r,s):u(c)}))}),i),void(i<100&&(i+=10));u&&u(c)}))}return Object.setPrototypeOf&&Object.setPrototypeOf(n,t),n}(e.rename));function t(t){return t?function(n,r,u){return t.call(e,n,r,(function(e){s(e)&&(e=null),u&&u.apply(this,arguments)}))}:t}function n(t){return t?function(n,r){try{return t.call(e,n,r)}catch(e){if(!s(e))throw e}}:t}function r(t){return t?function(n,r,u,o){return t.call(e,n,r,u,(function(e){s(e)&&(e=null),o&&o.apply(this,arguments)}))}:t}function u(t){return t?function(n,r,u){try{return t.call(e,n,r,u)}catch(e){if(!s(e))throw e}}:t}function o(t){return t?function(n,r,u){function o(e,t){t&&(t.uid<0&&(t.uid+=4294967296),t.gid<0&&(t.gid+=4294967296)),u&&u.apply(this,arguments)}return"function"==typeof r&&(u=r,r=null),r?t.call(e,n,r,o):t.call(e,n,o)}:t}function i(t){return t?function(n,r){var u=r?t.call(e,n,r):t.call(e,n);return u&&(u.uid<0&&(u.uid+=4294967296),u.gid<0&&(u.gid+=4294967296)),u}:t}function s(e){return!e||("ENOSYS"===e.code||!(process.getuid&&0===process.getuid()||"EINVAL"!==e.code&&"EPERM"!==e.code))}e.read="function"!=typeof e.read?e.read:function(t){function n(n,r,u,o,i,s){var c;if(s&&"function"==typeof s){var a=0;c=function(l,f,d){if(l&&"EAGAIN"===l.code&&a<10)return a++,t.call(e,n,r,u,o,i,c);s.apply(this,arguments)}}return t.call(e,n,r,u,o,i,c)}return Object.setPrototypeOf&&Object.setPrototypeOf(n,t),n}(e.read),e.readSync="function"!=typeof e.readSync?e.readSync:(c=e.readSync,function(t,n,r,u,o){for(var i=0;;)try{return c.call(e,t,n,r,u,o)}catch(e){if("EAGAIN"===e.code&&i<10){i++;continue}throw e}});var c};var le=C.default.Stream,fe=function(e){return{ReadStream:function t(n,r){if(!(this instanceof t))return new t(n,r);le.call(this);var u=this;this.path=n,this.fd=null,this.readable=!0,this.paused=!1,this.flags="r",this.mode=438,this.bufferSize=65536,r=r||{};for(var o=Object.keys(r),i=0,s=o.length;ithis.end)throw new Error("start must be <= end");this.pos=this.start}if(null!==this.fd)return void process.nextTick((function(){u._read()}));e.open(this.path,this.flags,this.mode,(function(e,t){if(e)return u.emit("error",e),void(u.readable=!1);u.fd=t,u.emit("open",t),u._read()}))},WriteStream:function t(n,r){if(!(this instanceof t))return new t(n,r);le.call(this),this.path=n,this.fd=null,this.writable=!0,this.flags="w",this.encoding="binary",this.mode=438,this.bytesWritten=0,r=r||{};for(var u=Object.keys(r),o=0,i=u.length;o= zero");this.pos=this.start}this.busy=!1,this._queue=[],null===this.fd&&(this._open=e.open,this._queue.push([this._open,this.path,this.flags,this.mode,void 0]),this.flush())}}};var de=function(e){if(null===e||"object"!=typeof e)return e;if(e instanceof Object)var t={__proto__:De(e)};else t=Object.create(null);return Object.getOwnPropertyNames(e).forEach((function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(e,n))})),t},De=Object.getPrototypeOf||function(e){return e.__proto__};var pe,Ee,me=D.default,he=ae,ye=fe,Ce=de,Fe=F.default;function ge(e,t){Object.defineProperty(e,pe,{get:function(){return t}})}"function"==typeof Symbol&&"function"==typeof Symbol.for?(pe=Symbol.for("graceful-fs.queue"),Ee=Symbol.for("graceful-fs.previous")):(pe="___graceful-fs.queue",Ee="___graceful-fs.previous");var Ae=function(){};if(Fe.debuglog?Ae=Fe.debuglog("gfs4"):/\bgfs4\b/i.test(process.env.NODE_DEBUG||"")&&(Ae=function(){var e=Fe.format.apply(Fe,arguments);e="GFS4: "+e.split(/\n/).join("\nGFS4: "),console.error(e)}),!me[pe]){var ve=w[pe]||[];ge(me,ve),me.close=function(e){function t(t,n){return e.call(me,t,(function(e){e||_e(),"function"==typeof n&&n.apply(this,arguments)}))}return Object.defineProperty(t,Ee,{value:e}),t}(me.close),me.closeSync=function(e){function t(t){e.apply(me,arguments),_e()}return Object.defineProperty(t,Ee,{value:e}),t}(me.closeSync),/\bgfs4\b/i.test(process.env.NODE_DEBUG||"")&&process.on("exit",(function(){Ae(me[pe]),g.default.equal(me[pe].length,0)}))}w[pe]||ge(w,me[pe]);var Se,we=Oe(Ce(me));function Oe(e){he(e),e.gracefulify=Oe,e.createReadStream=function(t,n){return new e.ReadStream(t,n)},e.createWriteStream=function(t,n){return new e.WriteStream(t,n)};var t=e.readFile;e.readFile=function(e,n,r){"function"==typeof n&&(r=n,n=null);return function e(n,r,u,o){return t(n,r,(function(t){!t||"EMFILE"!==t.code&&"ENFILE"!==t.code?"function"==typeof u&&u.apply(this,arguments):be([e,[n,r,u],t,o||Date.now(),Date.now()])}))}(e,n,r)};var n=e.writeFile;e.writeFile=function(e,t,r,u){"function"==typeof r&&(u=r,r=null);return function e(t,r,u,o,i){return n(t,r,u,(function(n){!n||"EMFILE"!==n.code&&"ENFILE"!==n.code?"function"==typeof o&&o.apply(this,arguments):be([e,[t,r,u,o],n,i||Date.now(),Date.now()])}))}(e,t,r,u)};var r=e.appendFile;r&&(e.appendFile=function(e,t,n,u){"function"==typeof n&&(u=n,n=null);return function e(t,n,u,o,i){return r(t,n,u,(function(r){!r||"EMFILE"!==r.code&&"ENFILE"!==r.code?"function"==typeof o&&o.apply(this,arguments):be([e,[t,n,u,o],r,i||Date.now(),Date.now()])}))}(e,t,n,u)});var u=e.copyFile;u&&(e.copyFile=function(e,t,n,r){"function"==typeof n&&(r=n,n=0);return function e(t,n,r,o,i){return u(t,n,r,(function(u){!u||"EMFILE"!==u.code&&"ENFILE"!==u.code?"function"==typeof o&&o.apply(this,arguments):be([e,[t,n,r,o],u,i||Date.now(),Date.now()])}))}(e,t,n,r)});var o=e.readdir;e.readdir=function(e,t,n){"function"==typeof t&&(n=t,t=null);var r=i.test(process.version)?function(e,t,n,r){return o(e,u(e,t,n,r))}:function(e,t,n,r){return o(e,t,u(e,t,n,r))};return r(e,t,n);function u(e,t,n,u){return function(o,i){!o||"EMFILE"!==o.code&&"ENFILE"!==o.code?(i&&i.sort&&i.sort(),"function"==typeof n&&n.call(this,o,i)):be([r,[e,t,n],o,u||Date.now(),Date.now()])}}};var i=/^v[0-5]\./;if("v0.8"===process.version.substr(0,4)){var s=ye(e);d=s.ReadStream,D=s.WriteStream}var c=e.ReadStream;c&&(d.prototype=Object.create(c.prototype),d.prototype.open=function(){var e=this;E(e.path,e.flags,e.mode,(function(t,n){t?(e.autoClose&&e.destroy(),e.emit("error",t)):(e.fd=n,e.emit("open",n),e.read())}))});var a=e.WriteStream;a&&(D.prototype=Object.create(a.prototype),D.prototype.open=function(){var e=this;E(e.path,e.flags,e.mode,(function(t,n){t?(e.destroy(),e.emit("error",t)):(e.fd=n,e.emit("open",n))}))}),Object.defineProperty(e,"ReadStream",{get:function(){return d},set:function(e){d=e},enumerable:!0,configurable:!0}),Object.defineProperty(e,"WriteStream",{get:function(){return D},set:function(e){D=e},enumerable:!0,configurable:!0});var l=d;Object.defineProperty(e,"FileReadStream",{get:function(){return l},set:function(e){l=e},enumerable:!0,configurable:!0});var f=D;function d(e,t){return this instanceof d?(c.apply(this,arguments),this):d.apply(Object.create(d.prototype),arguments)}function D(e,t){return this instanceof D?(a.apply(this,arguments),this):D.apply(Object.create(D.prototype),arguments)}Object.defineProperty(e,"FileWriteStream",{get:function(){return f},set:function(e){f=e},enumerable:!0,configurable:!0});var p=e.open;function E(e,t,n,r){return"function"==typeof n&&(r=n,n=null),function e(t,n,r,u,o){return p(t,n,r,(function(i,s){!i||"EMFILE"!==i.code&&"ENFILE"!==i.code?"function"==typeof u&&u.apply(this,arguments):be([e,[t,n,r,u],i,o||Date.now(),Date.now()])}))}(e,t,n,r)}return e.open=E,e}function be(e){Ae("ENQUEUE",e[0].name,e[1]),me[pe].push(e),Be()}function _e(){for(var e=Date.now(),t=0;t2&&(me[pe][t][3]=e,me[pe][t][4]=e);Be()}function Be(){if(clearTimeout(Se),Se=void 0,0!==me[pe].length){var e=me[pe].shift(),t=e[0],n=e[1],r=e[2],u=e[3],o=e[4];if(void 0===u)Ae("RETRY",t.name,n),t.apply(null,n);else if(Date.now()-u>=6e4){Ae("TIMEOUT",t.name,n);var i=n.pop();"function"==typeof i&&i.call(null,r)}else{var s=Date.now()-o,c=Math.max(o-u,1);s>=Math.min(1.2*c,100)?(Ae("RETRY",t.name,n),t.apply(null,n.concat([u]))):me[pe].push(e)}void 0===Se&&(Se=setTimeout(Be,0))}}process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH&&!me.__patched&&(we=Oe(me),me.__patched=!0),function(e){const t=re.fromCallback,n=we,r=["access","appendFile","chmod","chown","close","copyFile","fchmod","fchown","fdatasync","fstat","fsync","ftruncate","futimes","lchmod","lchown","link","lstat","mkdir","mkdtemp","open","opendir","readdir","readFile","readlink","realpath","rename","rm","rmdir","stat","symlink","truncate","unlink","utimes","writeFile"].filter((e=>"function"==typeof n[e]));Object.assign(e,n),r.forEach((r=>{e[r]=t(n[r])})),e.realpath.native=t(n.realpath.native),e.exists=function(e,t){return"function"==typeof t?n.exists(e,t):new Promise((t=>n.exists(e,t)))},e.read=function(e,t,r,u,o,i){return"function"==typeof i?n.read(e,t,r,u,o,i):new Promise(((i,s)=>{n.read(e,t,r,u,o,((e,t,n)=>{if(e)return s(e);i({bytesRead:t,buffer:n})}))}))},e.write=function(e,t,...r){return"function"==typeof r[r.length-1]?n.write(e,t,...r):new Promise(((u,o)=>{n.write(e,t,...r,((e,t,n)=>{if(e)return o(e);u({bytesWritten:t,buffer:n})}))}))},"function"==typeof n.writev&&(e.writev=function(e,t,...r){return"function"==typeof r[r.length-1]?n.writev(e,t,...r):new Promise(((u,o)=>{n.writev(e,t,...r,((e,t,n)=>{if(e)return o(e);u({bytesWritten:t,buffers:n})}))}))})}(ne);var Pe={},ke={};const xe=p.default;ke.checkPath=function(e){if("win32"===process.platform){if(/[<>:"|?*]/.test(e.replace(xe.parse(e).root,""))){const t=new Error(`Path contains invalid characters: ${e}`);throw t.code="EINVAL",t}}};const Ne=ne,{checkPath:Ie}=ke,Te=e=>"number"==typeof e?e:{mode:511,...e}.mode;Pe.makeDir=async(e,t)=>(Ie(e),Ne.mkdir(e,{mode:Te(t),recursive:!0})),Pe.makeDirSync=(e,t)=>(Ie(e),Ne.mkdirSync(e,{mode:Te(t),recursive:!0}));const Re=re.fromPromise,{makeDir:Me,makeDirSync:Le}=Pe,je=Re(Me);var $e={mkdirs:je,mkdirsSync:Le,mkdirp:je,mkdirpSync:Le,ensureDir:je,ensureDirSync:Le};const He=re.fromPromise,Je=ne;var Ge={pathExists:He((function(e){return Je.access(e).then((()=>!0)).catch((()=>!1))})),pathExistsSync:Je.existsSync};const Ve=we;var Ue=function(e,t,n,r){Ve.open(e,"r+",((e,u)=>{if(e)return r(e);Ve.futimes(u,t,n,(e=>{Ve.close(u,(t=>{r&&r(e||t)}))}))}))},We=function(e,t,n){const r=Ve.openSync(e,"r+");return Ve.futimesSync(r,t,n),Ve.closeSync(r)};const ze=ne,Ke=p.default,qe=F.default;function Ye(e,t,n){const r=n.dereference?e=>ze.stat(e,{bigint:!0}):e=>ze.lstat(e,{bigint:!0});return Promise.all([r(e),r(t).catch((e=>{if("ENOENT"===e.code)return null;throw e}))]).then((([e,t])=>({srcStat:e,destStat:t})))}function Xe(e,t){return t.ino&&t.dev&&t.ino===e.ino&&t.dev===e.dev}function Ze(e,t){const n=Ke.resolve(e).split(Ke.sep).filter((e=>e)),r=Ke.resolve(t).split(Ke.sep).filter((e=>e));return n.reduce(((e,t,n)=>e&&r[n]===t),!0)}function Qe(e,t,n){return`Cannot ${n} '${e}' to a subdirectory of itself, '${t}'.`}var et={checkPaths:function(e,t,n,r,u){qe.callbackify(Ye)(e,t,r,((r,o)=>{if(r)return u(r);const{srcStat:i,destStat:s}=o;if(s){if(Xe(i,s)){const r=Ke.basename(e),o=Ke.basename(t);return"move"===n&&r!==o&&r.toLowerCase()===o.toLowerCase()?u(null,{srcStat:i,destStat:s,isChangingCase:!0}):u(new Error("Source and destination must not be the same."))}if(i.isDirectory()&&!s.isDirectory())return u(new Error(`Cannot overwrite non-directory '${t}' with directory '${e}'.`));if(!i.isDirectory()&&s.isDirectory())return u(new Error(`Cannot overwrite directory '${t}' with non-directory '${e}'.`))}return i.isDirectory()&&Ze(e,t)?u(new Error(Qe(e,t,n))):u(null,{srcStat:i,destStat:s})}))},checkPathsSync:function(e,t,n,r){const{srcStat:u,destStat:o}=function(e,t,n){let r;const u=n.dereference?e=>ze.statSync(e,{bigint:!0}):e=>ze.lstatSync(e,{bigint:!0}),o=u(e);try{r=u(t)}catch(e){if("ENOENT"===e.code)return{srcStat:o,destStat:null};throw e}return{srcStat:o,destStat:r}}(e,t,r);if(o){if(Xe(u,o)){const r=Ke.basename(e),i=Ke.basename(t);if("move"===n&&r!==i&&r.toLowerCase()===i.toLowerCase())return{srcStat:u,destStat:o,isChangingCase:!0};throw new Error("Source and destination must not be the same.")}if(u.isDirectory()&&!o.isDirectory())throw new Error(`Cannot overwrite non-directory '${t}' with directory '${e}'.`);if(!u.isDirectory()&&o.isDirectory())throw new Error(`Cannot overwrite directory '${t}' with non-directory '${e}'.`)}if(u.isDirectory()&&Ze(e,t))throw new Error(Qe(e,t,n));return{srcStat:u,destStat:o}},checkParentPaths:function e(t,n,r,u,o){const i=Ke.resolve(Ke.dirname(t)),s=Ke.resolve(Ke.dirname(r));if(s===i||s===Ke.parse(s).root)return o();ze.stat(s,{bigint:!0},((i,c)=>i?"ENOENT"===i.code?o():o(i):Xe(n,c)?o(new Error(Qe(t,r,u))):e(t,n,s,u,o)))},checkParentPathsSync:function e(t,n,r,u){const o=Ke.resolve(Ke.dirname(t)),i=Ke.resolve(Ke.dirname(r));if(i===o||i===Ke.parse(i).root)return;let s;try{s=ze.statSync(i,{bigint:!0})}catch(e){if("ENOENT"===e.code)return;throw e}if(Xe(n,s))throw new Error(Qe(t,r,u));return e(t,n,i,u)},isSrcSubdir:Ze,areIdentical:Xe};const tt=we,nt=p.default,rt=$e.mkdirs,ut=Ge.pathExists,ot=Ue,it=et;function st(e,t,n,r,u){const o=nt.dirname(n);ut(o,((i,s)=>i?u(i):s?at(e,t,n,r,u):void rt(o,(o=>o?u(o):at(e,t,n,r,u)))))}function ct(e,t,n,r,u,o){Promise.resolve(u.filter(n,r)).then((i=>i?e(t,n,r,u,o):o()),(e=>o(e)))}function at(e,t,n,r,u){(r.dereference?tt.stat:tt.lstat)(t,((o,i)=>o?u(o):i.isDirectory()?function(e,t,n,r,u,o){return t?Dt(n,r,u,o):function(e,t,n,r,u){tt.mkdir(n,(o=>{if(o)return u(o);Dt(t,n,r,(t=>t?u(t):dt(n,e,u)))}))}(e.mode,n,r,u,o)}(i,e,t,n,r,u):i.isFile()||i.isCharacterDevice()||i.isBlockDevice()?function(e,t,n,r,u,o){return t?function(e,t,n,r,u){if(!r.overwrite)return r.errorOnExist?u(new Error(`'${n}' already exists`)):u();tt.unlink(n,(o=>o?u(o):lt(e,t,n,r,u)))}(e,n,r,u,o):lt(e,n,r,u,o)}(i,e,t,n,r,u):i.isSymbolicLink()?function(e,t,n,r,u){tt.readlink(t,((t,o)=>t?u(t):(r.dereference&&(o=nt.resolve(process.cwd(),o)),e?void tt.readlink(n,((t,i)=>t?"EINVAL"===t.code||"UNKNOWN"===t.code?tt.symlink(o,n,u):u(t):(r.dereference&&(i=nt.resolve(process.cwd(),i)),it.isSrcSubdir(o,i)?u(new Error(`Cannot copy '${o}' to a subdirectory of itself, '${i}'.`)):e.isDirectory()&&it.isSrcSubdir(i,o)?u(new Error(`Cannot overwrite '${i}' with '${o}'.`)):function(e,t,n){tt.unlink(t,(r=>r?n(r):tt.symlink(e,t,n)))}(o,n,u)))):tt.symlink(o,n,u))))}(e,t,n,r,u):i.isSocket()?u(new Error(`Cannot copy a socket file: ${t}`)):i.isFIFO()?u(new Error(`Cannot copy a FIFO pipe: ${t}`)):u(new Error(`Unknown file: ${t}`))))}function lt(e,t,n,r,u){tt.copyFile(t,n,(o=>o?u(o):r.preserveTimestamps?function(e,t,n,r){if(function(e){return 0==(128&e)}(e))return function(e,t,n){return dt(e,128|t,n)}(n,e,(u=>u?r(u):ft(e,t,n,r)));return ft(e,t,n,r)}(e.mode,t,n,u):dt(n,e.mode,u)))}function ft(e,t,n,r){!function(e,t,n){tt.stat(e,((e,r)=>e?n(e):ot(t,r.atime,r.mtime,n)))}(t,n,(t=>t?r(t):dt(n,e,r)))}function dt(e,t,n){return tt.chmod(e,t,n)}function Dt(e,t,n,r){tt.readdir(e,((u,o)=>u?r(u):pt(o,e,t,n,r)))}function pt(e,t,n,r,u){const o=e.pop();return o?function(e,t,n,r,u,o){const i=nt.join(n,t),s=nt.join(r,t);it.checkPaths(i,s,"copy",u,((t,c)=>{if(t)return o(t);const{destStat:a}=c;!function(e,t,n,r,u){r.filter?ct(at,e,t,n,r,u):at(e,t,n,r,u)}(a,i,s,u,(t=>t?o(t):pt(e,n,r,u,o)))}))}(e,o,t,n,r,u):u()}var Et=function(e,t,n,r){"function"!=typeof n||r?"function"==typeof n&&(n={filter:n}):(r=n,n={}),r=r||function(){},(n=n||{}).clobber=!("clobber"in n)||!!n.clobber,n.overwrite="overwrite"in n?!!n.overwrite:n.clobber,n.preserveTimestamps&&"ia32"===process.arch&&console.warn("fs-extra: Using the preserveTimestamps option in 32-bit node is not recommended;\n\n see https://github.com/jprichardson/node-fs-extra/issues/269"),it.checkPaths(e,t,"copy",n,((u,o)=>{if(u)return r(u);const{srcStat:i,destStat:s}=o;it.checkParentPaths(e,i,t,"copy",(u=>u?r(u):n.filter?ct(st,s,e,t,n,r):st(s,e,t,n,r)))}))};const mt=we,ht=p.default,yt=$e.mkdirsSync,Ct=We,Ft=et;function gt(e,t,n,r){const u=(r.dereference?mt.statSync:mt.lstatSync)(t);if(u.isDirectory())return function(e,t,n,r,u){return t?St(n,r,u):function(e,t,n,r){return mt.mkdirSync(n),St(t,n,r),vt(n,e)}(e.mode,n,r,u)}(u,e,t,n,r);if(u.isFile()||u.isCharacterDevice()||u.isBlockDevice())return function(e,t,n,r,u){return t?function(e,t,n,r){if(r.overwrite)return mt.unlinkSync(n),At(e,t,n,r);if(r.errorOnExist)throw new Error(`'${n}' already exists`)}(e,n,r,u):At(e,n,r,u)}(u,e,t,n,r);if(u.isSymbolicLink())return function(e,t,n,r){let u=mt.readlinkSync(t);r.dereference&&(u=ht.resolve(process.cwd(),u));if(e){let e;try{e=mt.readlinkSync(n)}catch(e){if("EINVAL"===e.code||"UNKNOWN"===e.code)return mt.symlinkSync(u,n);throw e}if(r.dereference&&(e=ht.resolve(process.cwd(),e)),Ft.isSrcSubdir(u,e))throw new Error(`Cannot copy '${u}' to a subdirectory of itself, '${e}'.`);if(mt.statSync(n).isDirectory()&&Ft.isSrcSubdir(e,u))throw new Error(`Cannot overwrite '${e}' with '${u}'.`);return function(e,t){return mt.unlinkSync(t),mt.symlinkSync(e,t)}(u,n)}return mt.symlinkSync(u,n)}(e,t,n,r);if(u.isSocket())throw new Error(`Cannot copy a socket file: ${t}`);if(u.isFIFO())throw new Error(`Cannot copy a FIFO pipe: ${t}`);throw new Error(`Unknown file: ${t}`)}function At(e,t,n,r){return mt.copyFileSync(t,n),r.preserveTimestamps&&function(e,t,n){(function(e){return 0==(128&e)})(e)&&function(e,t){vt(e,128|t)}(n,e);(function(e,t){const n=mt.statSync(e);Ct(t,n.atime,n.mtime)})(t,n)}(e.mode,t,n),vt(n,e.mode)}function vt(e,t){return mt.chmodSync(e,t)}function St(e,t,n){mt.readdirSync(e).forEach((r=>function(e,t,n,r){const u=ht.join(t,e),o=ht.join(n,e),{destStat:i}=Ft.checkPathsSync(u,o,"copy",r);return function(e,t,n,r){if(!r.filter||r.filter(t,n))return gt(e,t,n,r)}(i,u,o,r)}(r,e,t,n)))}var wt=function(e,t,n){"function"==typeof n&&(n={filter:n}),(n=n||{}).clobber=!("clobber"in n)||!!n.clobber,n.overwrite="overwrite"in n?!!n.overwrite:n.clobber,n.preserveTimestamps&&"ia32"===process.arch&&console.warn("fs-extra: Using the preserveTimestamps option in 32-bit node is not recommended;\n\n see https://github.com/jprichardson/node-fs-extra/issues/269");const{srcStat:r,destStat:u}=Ft.checkPathsSync(e,t,"copy",n);return Ft.checkParentPathsSync(e,r,t,"copy"),function(e,t,n,r){if(r.filter&&!r.filter(t,n))return;const u=ht.dirname(n);mt.existsSync(u)||yt(u);return gt(e,t,n,r)}(u,e,t,n)};var Ot={copy:(0,re.fromCallback)(Et),copySync:wt};const bt=we,_t=p.default,Bt=g.default,Pt="win32"===process.platform;function kt(e){["unlink","chmod","stat","lstat","rmdir","readdir"].forEach((t=>{e[t]=e[t]||bt[t],e[t+="Sync"]=e[t]||bt[t]})),e.maxBusyTries=e.maxBusyTries||3}function xt(e,t,n){let r=0;"function"==typeof t&&(n=t,t={}),Bt(e,"rimraf: missing path"),Bt.strictEqual(typeof e,"string","rimraf: path should be a string"),Bt.strictEqual(typeof n,"function","rimraf: callback function required"),Bt(t,"rimraf: invalid options argument provided"),Bt.strictEqual(typeof t,"object","rimraf: options should be object"),kt(t),Nt(e,t,(function u(o){if(o){if(("EBUSY"===o.code||"ENOTEMPTY"===o.code||"EPERM"===o.code)&&rNt(e,t,u)),100*r)}"ENOENT"===o.code&&(o=null)}n(o)}))}function Nt(e,t,n){Bt(e),Bt(t),Bt("function"==typeof n),t.lstat(e,((r,u)=>r&&"ENOENT"===r.code?n(null):r&&"EPERM"===r.code&&Pt?It(e,t,r,n):u&&u.isDirectory()?Rt(e,t,r,n):void t.unlink(e,(r=>{if(r){if("ENOENT"===r.code)return n(null);if("EPERM"===r.code)return Pt?It(e,t,r,n):Rt(e,t,r,n);if("EISDIR"===r.code)return Rt(e,t,r,n)}return n(r)}))))}function It(e,t,n,r){Bt(e),Bt(t),Bt("function"==typeof r),t.chmod(e,438,(u=>{u?r("ENOENT"===u.code?null:n):t.stat(e,((u,o)=>{u?r("ENOENT"===u.code?null:n):o.isDirectory()?Rt(e,t,n,r):t.unlink(e,r)}))}))}function Tt(e,t,n){let r;Bt(e),Bt(t);try{t.chmodSync(e,438)}catch(e){if("ENOENT"===e.code)return;throw n}try{r=t.statSync(e)}catch(e){if("ENOENT"===e.code)return;throw n}r.isDirectory()?Lt(e,t,n):t.unlinkSync(e)}function Rt(e,t,n,r){Bt(e),Bt(t),Bt("function"==typeof r),t.rmdir(e,(u=>{!u||"ENOTEMPTY"!==u.code&&"EEXIST"!==u.code&&"EPERM"!==u.code?u&&"ENOTDIR"===u.code?r(n):r(u):function(e,t,n){Bt(e),Bt(t),Bt("function"==typeof n),t.readdir(e,((r,u)=>{if(r)return n(r);let o,i=u.length;if(0===i)return t.rmdir(e,n);u.forEach((r=>{xt(_t.join(e,r),t,(r=>{if(!o)return r?n(o=r):void(0==--i&&t.rmdir(e,n))}))}))}))}(e,t,r)}))}function Mt(e,t){let n;kt(t=t||{}),Bt(e,"rimraf: missing path"),Bt.strictEqual(typeof e,"string","rimraf: path should be a string"),Bt(t,"rimraf: missing options"),Bt.strictEqual(typeof t,"object","rimraf: options should be object");try{n=t.lstatSync(e)}catch(n){if("ENOENT"===n.code)return;"EPERM"===n.code&&Pt&&Tt(e,t,n)}try{n&&n.isDirectory()?Lt(e,t,null):t.unlinkSync(e)}catch(n){if("ENOENT"===n.code)return;if("EPERM"===n.code)return Pt?Tt(e,t,n):Lt(e,t,n);if("EISDIR"!==n.code)throw n;Lt(e,t,n)}}function Lt(e,t,n){Bt(e),Bt(t);try{t.rmdirSync(e)}catch(r){if("ENOTDIR"===r.code)throw n;if("ENOTEMPTY"===r.code||"EEXIST"===r.code||"EPERM"===r.code)!function(e,t){if(Bt(e),Bt(t),t.readdirSync(e).forEach((n=>Mt(_t.join(e,n),t))),!Pt){return t.rmdirSync(e,t)}{const n=Date.now();do{try{return t.rmdirSync(e,t)}catch{}}while(Date.now()-n<500)}}(e,t);else if("ENOENT"!==r.code)throw r}}var jt=xt;xt.sync=Mt;const $t=we,Ht=re.fromCallback,Jt=jt;var Gt={remove:Ht((function(e,t){if($t.rm)return $t.rm(e,{recursive:!0,force:!0},t);Jt(e,t)})),removeSync:function(e){if($t.rmSync)return $t.rmSync(e,{recursive:!0,force:!0});Jt.sync(e)}};const Vt=re.fromPromise,Ut=ne,Wt=p.default,zt=$e,Kt=Gt,qt=Vt((async function(e){let t;try{t=await Ut.readdir(e)}catch{return zt.mkdirs(e)}return Promise.all(t.map((t=>Kt.remove(Wt.join(e,t)))))}));function Yt(e){let t;try{t=Ut.readdirSync(e)}catch{return zt.mkdirsSync(e)}t.forEach((t=>{t=Wt.join(e,t),Kt.removeSync(t)}))}var Xt={emptyDirSync:Yt,emptydirSync:Yt,emptyDir:qt,emptydir:qt};const Zt=re.fromCallback,Qt=p.default,en=we,tn=$e;var nn={createFile:Zt((function(e,t){function n(){en.writeFile(e,"",(e=>{if(e)return t(e);t()}))}en.stat(e,((r,u)=>{if(!r&&u.isFile())return t();const o=Qt.dirname(e);en.stat(o,((e,r)=>{if(e)return"ENOENT"===e.code?tn.mkdirs(o,(e=>{if(e)return t(e);n()})):t(e);r.isDirectory()?n():en.readdir(o,(e=>{if(e)return t(e)}))}))}))})),createFileSync:function(e){let t;try{t=en.statSync(e)}catch{}if(t&&t.isFile())return;const n=Qt.dirname(e);try{en.statSync(n).isDirectory()||en.readdirSync(n)}catch(e){if(!e||"ENOENT"!==e.code)throw e;tn.mkdirsSync(n)}en.writeFileSync(e,"")}};const rn=re.fromCallback,un=p.default,on=we,sn=$e,cn=Ge.pathExists,{areIdentical:an}=et;var ln={createLink:rn((function(e,t,n){function r(e,t){on.link(e,t,(e=>{if(e)return n(e);n(null)}))}on.lstat(t,((u,o)=>{on.lstat(e,((u,i)=>{if(u)return u.message=u.message.replace("lstat","ensureLink"),n(u);if(o&&an(i,o))return n(null);const s=un.dirname(t);cn(s,((u,o)=>u?n(u):o?r(e,t):void sn.mkdirs(s,(u=>{if(u)return n(u);r(e,t)}))))}))}))})),createLinkSync:function(e,t){let n;try{n=on.lstatSync(t)}catch{}try{const t=on.lstatSync(e);if(n&&an(t,n))return}catch(e){throw e.message=e.message.replace("lstat","ensureLink"),e}const r=un.dirname(t);return on.existsSync(r)||sn.mkdirsSync(r),on.linkSync(e,t)}};const fn=p.default,dn=we,Dn=Ge.pathExists;var pn={symlinkPaths:function(e,t,n){if(fn.isAbsolute(e))return dn.lstat(e,(t=>t?(t.message=t.message.replace("lstat","ensureSymlink"),n(t)):n(null,{toCwd:e,toDst:e})));{const r=fn.dirname(t),u=fn.join(r,e);return Dn(u,((t,o)=>t?n(t):o?n(null,{toCwd:u,toDst:e}):dn.lstat(e,(t=>t?(t.message=t.message.replace("lstat","ensureSymlink"),n(t)):n(null,{toCwd:e,toDst:fn.relative(r,e)})))))}},symlinkPathsSync:function(e,t){let n;if(fn.isAbsolute(e)){if(n=dn.existsSync(e),!n)throw new Error("absolute srcpath does not exist");return{toCwd:e,toDst:e}}{const r=fn.dirname(t),u=fn.join(r,e);if(n=dn.existsSync(u),n)return{toCwd:u,toDst:e};if(n=dn.existsSync(e),!n)throw new Error("relative srcpath does not exist");return{toCwd:e,toDst:fn.relative(r,e)}}}};const En=we;var mn={symlinkType:function(e,t,n){if(n="function"==typeof t?t:n,t="function"!=typeof t&&t)return n(null,t);En.lstat(e,((e,r)=>{if(e)return n(null,"file");t=r&&r.isDirectory()?"dir":"file",n(null,t)}))},symlinkTypeSync:function(e,t){let n;if(t)return t;try{n=En.lstatSync(e)}catch{return"file"}return n&&n.isDirectory()?"dir":"file"}};const hn=re.fromCallback,yn=p.default,Cn=ne,Fn=$e.mkdirs,gn=$e.mkdirsSync,An=pn.symlinkPaths,vn=pn.symlinkPathsSync,Sn=mn.symlinkType,wn=mn.symlinkTypeSync,On=Ge.pathExists,{areIdentical:bn}=et;function _n(e,t,n,r){An(e,t,((u,o)=>{if(u)return r(u);e=o.toDst,Sn(o.toCwd,n,((n,u)=>{if(n)return r(n);const o=yn.dirname(t);On(o,((n,i)=>n?r(n):i?Cn.symlink(e,t,u,r):void Fn(o,(n=>{if(n)return r(n);Cn.symlink(e,t,u,r)}))))}))}))}var Bn={createSymlink:hn((function(e,t,n,r){r="function"==typeof n?n:r,n="function"!=typeof n&&n,Cn.lstat(t,((u,o)=>{!u&&o.isSymbolicLink()?Promise.all([Cn.stat(e),Cn.stat(t)]).then((([u,o])=>{if(bn(u,o))return r(null);_n(e,t,n,r)})):_n(e,t,n,r)}))})),createSymlinkSync:function(e,t,n){let r;try{r=Cn.lstatSync(t)}catch{}if(r&&r.isSymbolicLink()){const n=Cn.statSync(e),r=Cn.statSync(t);if(bn(n,r))return}const u=vn(e,t);e=u.toDst,n=wn(u.toCwd,n);const o=yn.dirname(t);return Cn.existsSync(o)||gn(o),Cn.symlinkSync(e,t,n)}};const{createFile:Pn,createFileSync:kn}=nn,{createLink:xn,createLinkSync:Nn}=ln,{createSymlink:In,createSymlinkSync:Tn}=Bn;var Rn={createFile:Pn,createFileSync:kn,ensureFile:Pn,ensureFileSync:kn,createLink:xn,createLinkSync:Nn,ensureLink:xn,ensureLinkSync:Nn,createSymlink:In,createSymlinkSync:Tn,ensureSymlink:In,ensureSymlinkSync:Tn};var Mn={stringify:function(e,{EOL:t="\n",finalEOL:n=!0,replacer:r=null,spaces:u}={}){const o=n?t:"";return JSON.stringify(e,r,u).replace(/\n/g,t)+o},stripBom:function(e){return Buffer.isBuffer(e)&&(e=e.toString("utf8")),e.replace(/^\uFEFF/,"")}};let Ln;try{Ln=we}catch(e){Ln=D.default}const jn=re,{stringify:$n,stripBom:Hn}=Mn;const Jn=jn.fromPromise((async function(e,t={}){"string"==typeof t&&(t={encoding:t});const n=t.fs||Ln,r=!("throws"in t)||t.throws;let u,o=await jn.fromCallback(n.readFile)(e,t);o=Hn(o);try{u=JSON.parse(o,t?t.reviver:null)}catch(t){if(r)throw t.message=`${e}: ${t.message}`,t;return null}return u}));const Gn=jn.fromPromise((async function(e,t,n={}){const r=n.fs||Ln,u=$n(t,n);await jn.fromCallback(r.writeFile)(e,u,n)}));const Vn={readFile:Jn,readFileSync:function(e,t={}){"string"==typeof t&&(t={encoding:t});const n=t.fs||Ln,r=!("throws"in t)||t.throws;try{let r=n.readFileSync(e,t);return r=Hn(r),JSON.parse(r,t.reviver)}catch(t){if(r)throw t.message=`${e}: ${t.message}`,t;return null}},writeFile:Gn,writeFileSync:function(e,t,n={}){const r=n.fs||Ln,u=$n(t,n);return r.writeFileSync(e,u,n)}};var Un={readJson:Vn.readFile,readJsonSync:Vn.readFileSync,writeJson:Vn.writeFile,writeJsonSync:Vn.writeFileSync};const Wn=re.fromCallback,zn=we,Kn=p.default,qn=$e,Yn=Ge.pathExists;var Xn={outputFile:Wn((function(e,t,n,r){"function"==typeof n&&(r=n,n="utf8");const u=Kn.dirname(e);Yn(u,((o,i)=>o?r(o):i?zn.writeFile(e,t,n,r):void qn.mkdirs(u,(u=>{if(u)return r(u);zn.writeFile(e,t,n,r)}))))})),outputFileSync:function(e,...t){const n=Kn.dirname(e);if(zn.existsSync(n))return zn.writeFileSync(e,...t);qn.mkdirsSync(n),zn.writeFileSync(e,...t)}};const{stringify:Zn}=Mn,{outputFile:Qn}=Xn;var er=async function(e,t,n={}){const r=Zn(t,n);await Qn(e,r,n)};const{stringify:tr}=Mn,{outputFileSync:nr}=Xn;var rr=function(e,t,n){const r=tr(t,n);nr(e,r,n)};const ur=re.fromPromise,or=Un;or.outputJson=ur(er),or.outputJsonSync=rr,or.outputJSON=or.outputJson,or.outputJSONSync=or.outputJsonSync,or.writeJSON=or.writeJson,or.writeJSONSync=or.writeJsonSync,or.readJSON=or.readJson,or.readJSONSync=or.readJsonSync;var ir=or;const sr=we,cr=p.default,ar=Ot.copy,lr=Gt.remove,fr=$e.mkdirp,dr=Ge.pathExists,Dr=et;function pr(e,t,n,r,u){return r?Er(e,t,n,u):n?lr(t,(r=>r?u(r):Er(e,t,n,u))):void dr(t,((r,o)=>r?u(r):o?u(new Error("dest already exists.")):Er(e,t,n,u)))}function Er(e,t,n,r){sr.rename(e,t,(u=>u?"EXDEV"!==u.code?r(u):function(e,t,n,r){const u={overwrite:n,errorOnExist:!0};ar(e,t,u,(t=>t?r(t):lr(e,r)))}(e,t,n,r):r()))}var mr=function(e,t,n,r){"function"==typeof n&&(r=n,n={});const u=n.overwrite||n.clobber||!1;Dr.checkPaths(e,t,"move",n,((n,o)=>{if(n)return r(n);const{srcStat:i,isChangingCase:s=!1}=o;Dr.checkParentPaths(e,i,t,"move",(n=>n?r(n):function(e){const t=cr.dirname(e);return cr.parse(t).root===t}(t)?pr(e,t,u,s,r):void fr(cr.dirname(t),(n=>n?r(n):pr(e,t,u,s,r)))))}))};const hr=we,yr=p.default,Cr=Ot.copySync,Fr=Gt.removeSync,gr=$e.mkdirpSync,Ar=et;function vr(e,t,n){try{hr.renameSync(e,t)}catch(r){if("EXDEV"!==r.code)throw r;return function(e,t,n){const r={overwrite:n,errorOnExist:!0};return Cr(e,t,r),Fr(e)}(e,t,n)}}var Sr=function(e,t,n){const r=(n=n||{}).overwrite||n.clobber||!1,{srcStat:u,isChangingCase:o=!1}=Ar.checkPathsSync(e,t,"move",n);return Ar.checkParentPathsSync(e,u,t,"move"),function(e){const t=yr.dirname(e);return yr.parse(t).root===t}(t)||gr(yr.dirname(t)),function(e,t,n,r){if(r)return vr(e,t,n);if(n)return Fr(t),vr(e,t,n);if(hr.existsSync(t))throw new Error("dest already exists.");return vr(e,t,n)}(e,t,r,o)};var wr,Or,br,_r,Br,Pr={move:(0,re.fromCallback)(mr),moveSync:Sr},kr={...ne,...Ot,...Xt,...Rn,...ir,...$e,...Pr,...Xn,...Ge,...Gt},xr={},Nr={exports:{}},Ir={exports:{}};function Tr(){if(Or)return wr;Or=1;var e=1e3,t=60*e,n=60*t,r=24*n,u=7*r,o=365.25*r;function i(e,t,n,r){var u=t>=1.5*n;return Math.round(e/n)+" "+r+(u?"s":"")}return wr=function(s,c){c=c||{};var a=typeof s;if("string"===a&&s.length>0)return function(i){if((i=String(i)).length>100)return;var s=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(i);if(!s)return;var c=parseFloat(s[1]);switch((s[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return c*o;case"weeks":case"week":case"w":return c*u;case"days":case"day":case"d":return c*r;case"hours":case"hour":case"hrs":case"hr":case"h":return c*n;case"minutes":case"minute":case"mins":case"min":case"m":return c*t;case"seconds":case"second":case"secs":case"sec":case"s":return c*e;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return c;default:return}}(s);if("number"===a&&isFinite(s))return c.long?function(u){var o=Math.abs(u);if(o>=r)return i(u,o,r,"day");if(o>=n)return i(u,o,n,"hour");if(o>=t)return i(u,o,t,"minute");if(o>=e)return i(u,o,e,"second");return u+" ms"}(s):function(u){var o=Math.abs(u);if(o>=r)return Math.round(u/r)+"d";if(o>=n)return Math.round(u/n)+"h";if(o>=t)return Math.round(u/t)+"m";if(o>=e)return Math.round(u/e)+"s";return u+"ms"}(s);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(s))}}function Rr(){if(_r)return br;return _r=1,br=function(e){function t(e){let r,u,o,i=null;function s(...e){if(!s.enabled)return;const n=s,u=Number(new Date),o=u-(r||u);n.diff=o,n.prev=r,n.curr=u,r=u,e[0]=t.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let i=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,((r,u)=>{if("%%"===r)return"%";i++;const o=t.formatters[u];if("function"==typeof o){const t=e[i];r=o.call(n,t),e.splice(i,1),i--}return r})),t.formatArgs.call(n,e);(n.log||t.log).apply(n,e)}return s.namespace=e,s.useColors=t.useColors(),s.color=t.selectColor(e),s.extend=n,s.destroy=t.destroy,Object.defineProperty(s,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==i?i:(u!==t.namespaces&&(u=t.namespaces,o=t.enabled(e)),o),set:e=>{i=e}}),"function"==typeof t.init&&t.init(s),s}function n(e,n){const r=t(this.namespace+(void 0===n?":":n)+e);return r.log=this.log,r}function r(e){return e.toString().substring(2,e.toString().length-2).replace(/\.\*\?$/,"*")}return t.debug=t,t.default=t,t.coerce=function(e){if(e instanceof Error)return e.stack||e.message;return e},t.disable=function(){const e=[...t.names.map(r),...t.skips.map(r).map((e=>"-"+e))].join(",");return t.enable(""),e},t.enable=function(e){let n;t.save(e),t.namespaces=e,t.names=[],t.skips=[];const r=("string"==typeof e?e:"").split(/[\s,]+/),u=r.length;for(n=0;n{t[n]=e[n]})),t.names=[],t.skips=[],t.formatters={},t.selectColor=function(e){let n=0;for(let t=0;t{const n=e.startsWith("-")?"":1===e.length?"-":"--",r=t.indexOf(n+e),u=t.indexOf("--");return-1!==r&&(-1===u||r{}),"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."),t.colors=[6,2,3,4,5,1];try{const e=function(){if($r)return jr;$r=1;const e=E.default,t=A.default,n=Vr(),{env:r}=process;let u;function o(e){return 0!==e&&{level:e,hasBasic:!0,has256:e>=2,has16m:e>=3}}function i(t,o){if(0===u)return 0;if(n("color=16m")||n("color=full")||n("color=truecolor"))return 3;if(n("color=256"))return 2;if(t&&!o&&void 0===u)return 0;const i=u||0;if("dumb"===r.TERM)return i;if("win32"===process.platform){const t=e.release().split(".");return Number(t[0])>=10&&Number(t[2])>=10586?Number(t[2])>=14931?3:2:1}if("CI"in r)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI","GITHUB_ACTIONS","BUILDKITE"].some((e=>e in r))||"codeship"===r.CI_NAME?1:i;if("TEAMCITY_VERSION"in r)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(r.TEAMCITY_VERSION)?1:0;if("truecolor"===r.COLORTERM)return 3;if("TERM_PROGRAM"in r){const e=parseInt((r.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(r.TERM_PROGRAM){case"iTerm.app":return e>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(r.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(r.TERM)||"COLORTERM"in r?1:i}return n("no-color")||n("no-colors")||n("color=false")||n("color=never")?u=0:(n("color")||n("colors")||n("color=true")||n("color=always"))&&(u=1),"FORCE_COLOR"in r&&(u="true"===r.FORCE_COLOR?1:"false"===r.FORCE_COLOR?0:0===r.FORCE_COLOR.length?1:Math.min(parseInt(r.FORCE_COLOR,10),3)),jr={supportsColor:function(e){return o(i(e,e&&e.isTTY))},stdout:o(i(!0,t.isatty(1))),stderr:o(i(!0,t.isatty(2)))}}();e&&(e.stderr||e).level>=2&&(t.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221])}catch(e){}t.inspectOpts=Object.keys(process.env).filter((e=>/^debug_/i.test(e))).reduce(((e,t)=>{const n=t.substring(6).toLowerCase().replace(/_([a-z])/g,((e,t)=>t.toUpperCase()));let r=process.env[t];return r=!!/^(yes|on|true|enabled)$/i.test(r)||!/^(no|off|false|disabled)$/i.test(r)&&("null"===r?null:Number(r)),e[n]=r,e}),{}),e.exports=Rr()(t);const{formatters:u}=e.exports;u.o=function(e){return this.inspectOpts.colors=this.useColors,r.inspect(e,this.inspectOpts).split("\n").map((e=>e.trim())).join(" ")},u.O=function(e){return this.inspectOpts.colors=this.useColors,r.inspect(e,this.inspectOpts)}}(Gr,Gr.exports)),Gr.exports}Jr=Nr,"undefined"==typeof process||"renderer"===process.type||!0===process.browser||process.__nwjs?Jr.exports=(Br||(Br=1,function(e,t){t.formatArgs=function(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const n="color: "+this.color;t.splice(1,0,n,"color: inherit");let r=0,u=0;t[0].replace(/%[a-zA-Z%]/g,(e=>{"%%"!==e&&(r++,"%c"===e&&(u=r))})),t.splice(u,0,n)},t.save=function(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch(e){}},t.load=function(){let e;try{e=t.storage.getItem("debug")}catch(e){}return!e&&"undefined"!=typeof process&&"env"in process&&(e=process.env.DEBUG),e},t.useColors=function(){return!("undefined"==typeof window||!window.process||"renderer"!==window.process.type&&!window.process.__nwjs)||("undefined"==typeof navigator||!navigator.userAgent||!navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))&&("undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))},t.storage=function(){try{return localStorage}catch(e){}}(),t.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],t.log=console.debug||console.log||(()=>{}),e.exports=Rr()(t);const{formatters:n}=e.exports;n.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}}(Ir,Ir.exports)),Ir.exports):Jr.exports=Ur();var Wr=function(e){return(e=e||{}).circles?function(e){var t=[],n=[];return e.proto?function e(u){if("object"!=typeof u||null===u)return u;if(u instanceof Date)return new Date(u);if(Array.isArray(u))return r(u,e);if(u instanceof Map)return new Map(r(Array.from(u),e));if(u instanceof Set)return new Set(r(Array.from(u),e));var o={};for(var i in t.push(u),n.push(o),u){var s=u[i];if("object"!=typeof s||null===s)o[i]=s;else if(s instanceof Date)o[i]=new Date(s);else if(s instanceof Map)o[i]=new Map(r(Array.from(s),e));else if(s instanceof Set)o[i]=new Set(r(Array.from(s),e));else if(ArrayBuffer.isView(s))o[i]=zr(s);else{var c=t.indexOf(s);o[i]=-1!==c?n[c]:e(s)}}return t.pop(),n.pop(),o}:function e(u){if("object"!=typeof u||null===u)return u;if(u instanceof Date)return new Date(u);if(Array.isArray(u))return r(u,e);if(u instanceof Map)return new Map(r(Array.from(u),e));if(u instanceof Set)return new Set(r(Array.from(u),e));var o={};for(var i in t.push(u),n.push(o),u)if(!1!==Object.hasOwnProperty.call(u,i)){var s=u[i];if("object"!=typeof s||null===s)o[i]=s;else if(s instanceof Date)o[i]=new Date(s);else if(s instanceof Map)o[i]=new Map(r(Array.from(s),e));else if(s instanceof Set)o[i]=new Set(r(Array.from(s),e));else if(ArrayBuffer.isView(s))o[i]=zr(s);else{var c=t.indexOf(s);o[i]=-1!==c?n[c]:e(s)}}return t.pop(),n.pop(),o};function r(e,r){for(var u=Object.keys(e),o=new Array(u.length),i=0;i!e,Qr=e=>e&&"object"==typeof e&&!Array.isArray(e),eu=(e,t,n)=>{(Array.isArray(t)?t:[t]).forEach((t=>{if(t)throw new Error(`Problem with log4js configuration: (${Kr.inspect(e,{depth:5})}) - ${n}`)}))};var tu={configure:e=>{qr("New configuration to be validated: ",e),eu(e,Zr(Qr(e)),"must be an object."),qr(`Calling pre-processing listeners (${Yr.length})`),Yr.forEach((t=>t(e))),qr("Configuration pre-processing finished."),qr(`Calling configuration listeners (${Xr.length})`),Xr.forEach((t=>t(e))),qr("Configuration finished.")},addListener:e=>{Xr.push(e),qr(`Added listener, now ${Xr.length} listeners`)},addPreProcessingListener:e=>{Yr.push(e),qr(`Added pre-processing listener, now ${Yr.length} listeners`)},throwExceptionIf:eu,anObject:Qr,anInteger:e=>e&&"number"==typeof e&&Number.isInteger(e),validIdentifier:e=>/^[A-Za-z][A-Za-z0-9_]*$/g.test(e),not:Zr},nu={exports:{}};!function(e){function t(e,t){for(var n=e.toString();n.length-1?s:c,l=n(u.getHours()),f=n(u.getMinutes()),d=n(u.getSeconds()),D=t(u.getMilliseconds(),3),p=function(e){var t=Math.abs(e),n=String(Math.floor(t/60)),r=String(t%60);return n=("0"+n).slice(-2),r=("0"+r).slice(-2),0===e?"Z":(e<0?"+":"-")+n+":"+r}(u.getTimezoneOffset());return r.replace(/dd/g,o).replace(/MM/g,i).replace(/y{1,4}/g,a).replace(/hh/g,l).replace(/mm/g,f).replace(/ss/g,d).replace(/SSS/g,D).replace(/O/g,p)}function u(e,t,n,r){e["set"+(r?"":"UTC")+t](n)}e.exports=r,e.exports.asString=r,e.exports.parse=function(t,n,r){if(!t)throw new Error("pattern must be supplied");return function(t,n,r){var o=t.indexOf("O")<0,i=!1,s=[{pattern:/y{1,4}/,regexp:"\\d{1,4}",fn:function(e,t){u(e,"FullYear",t,o)}},{pattern:/MM/,regexp:"\\d{1,2}",fn:function(e,t){u(e,"Month",t-1,o),e.getMonth()!==t-1&&(i=!0)}},{pattern:/dd/,regexp:"\\d{1,2}",fn:function(e,t){i&&u(e,"Month",e.getMonth()-1,o),u(e,"Date",t,o)}},{pattern:/hh/,regexp:"\\d{1,2}",fn:function(e,t){u(e,"Hours",t,o)}},{pattern:/mm/,regexp:"\\d\\d",fn:function(e,t){u(e,"Minutes",t,o)}},{pattern:/ss/,regexp:"\\d\\d",fn:function(e,t){u(e,"Seconds",t,o)}},{pattern:/SSS/,regexp:"\\d\\d\\d",fn:function(e,t){u(e,"Milliseconds",t,o)}},{pattern:/O/,regexp:"[+-]\\d{1,2}:?\\d{2}?|Z",fn:function(e,t){t="Z"===t?0:t.replace(":","");var n=Math.abs(t),r=(t>0?-1:1)*(n%100+60*Math.floor(n/100));e.setUTCMinutes(e.getUTCMinutes()+r)}}],c=s.reduce((function(e,t){return t.pattern.test(e.regexp)?(t.index=e.regexp.match(t.pattern).index,e.regexp=e.regexp.replace(t.pattern,"("+t.regexp+")")):t.index=-1,e}),{regexp:t,index:[]}),a=s.filter((function(e){return e.index>-1}));a.sort((function(e,t){return e.index-t.index}));var l=new RegExp(c.regexp).exec(n);if(l){var f=r||e.exports.now();return a.forEach((function(e,t){e.fn(f,l[t+1])})),f}throw new Error("String '"+n+"' could not be parsed as '"+t+"'")}(t,n,r)},e.exports.now=function(){return new Date},e.exports.ISO8601_FORMAT="yyyy-MM-ddThh:mm:ss.SSS",e.exports.ISO8601_WITH_TZ_OFFSET_FORMAT="yyyy-MM-ddThh:mm:ss.SSSO",e.exports.DATETIME_FORMAT="dd MM yyyy hh:mm:ss.SSS",e.exports.ABSOLUTETIME_FORMAT="hh:mm:ss.SSS"}(nu);const ru=nu.exports,uu=E.default,ou=F.default,iu=p.default,su={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[90,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[91,39],yellow:[33,39]};function cu(e){return e?`[${su[e][0]}m`:""}function au(e){return e?`[${su[e][1]}m`:""}function lu(e,t){return n=ou.format("[%s] [%s] %s - ",ru.asString(e.startTime),e.level.toString(),e.categoryName),cu(r=t)+n+au(r);var n,r}function fu(e){return lu(e)+ou.format(...e.data)}function du(e){return lu(e,e.level.colour)+ou.format(...e.data)}function Du(e){return ou.format(...e.data)}function pu(e){return e.data[0]}function Eu(e,t){const n=/%(-?[0-9]+)?(\.?-?[0-9]+)?([[\]cdhmnprzxXyflos%])(\{([^}]+)\})?|([^%]+)/;function r(e){return e&&e.pid?e.pid.toString():process.pid.toString()}e=e||"%r %p %c - %m%n";const u={c:function(e,t){let n=e.categoryName;if(t){const e=parseInt(t,10),r=n.split(".");ee&&(n=r.slice(-e).join(iu.sep))}return n},l:function(e){return e.lineNumber?`${e.lineNumber}`:""},o:function(e){return e.columnNumber?`${e.columnNumber}`:""},s:function(e){return e.callStack||""}};function o(e,t,n){return u[e](t,n)}function i(e,t,n){let r=e;return r=function(e,t){let n;return e?(n=parseInt(e.substr(1),10),n>0?t.slice(0,n):t.slice(n)):t}(t,r),r=function(e,t){let n;if(e)if("-"===e.charAt(0))for(n=parseInt(e.substr(1),10);t.lengthDu,basic:()=>fu,colored:()=>du,coloured:()=>du,pattern:e=>Eu(e&&e.pattern,e&&e.tokens),dummy:()=>pu};var hu={basicLayout:fu,messagePassThroughLayout:Du,patternLayout:Eu,colouredLayout:du,coloredLayout:du,dummyLayout:pu,addLayout(e,t){mu[e]=t},layout:(e,t)=>mu[e]&&mu[e](t)};const yu=tu,Cu=["white","grey","black","blue","cyan","green","magenta","red","yellow"];class Fu{constructor(e,t,n){this.level=e,this.levelStr=t,this.colour=n}toString(){return this.levelStr}static getLevel(e,t){return e?e instanceof Fu?e:(e instanceof Object&&e.levelStr&&(e=e.levelStr),Fu[e.toString().toUpperCase()]||t):t}static addLevels(e){if(e){Object.keys(e).forEach((t=>{const n=t.toUpperCase();Fu[n]=new Fu(e[t].value,n,e[t].colour);const r=Fu.levels.findIndex((e=>e.levelStr===n));r>-1?Fu.levels[r]=Fu[n]:Fu.levels.push(Fu[n])})),Fu.levels.sort(((e,t)=>e.level-t.level))}}isLessThanOrEqualTo(e){return"string"==typeof e&&(e=Fu.getLevel(e)),this.level<=e.level}isGreaterThanOrEqualTo(e){return"string"==typeof e&&(e=Fu.getLevel(e)),this.level>=e.level}isEqualTo(e){return"string"==typeof e&&(e=Fu.getLevel(e)),this.level===e.level}}Fu.levels=[],Fu.addLevels({ALL:{value:Number.MIN_VALUE,colour:"grey"},TRACE:{value:5e3,colour:"blue"},DEBUG:{value:1e4,colour:"cyan"},INFO:{value:2e4,colour:"green"},WARN:{value:3e4,colour:"yellow"},ERROR:{value:4e4,colour:"red"},FATAL:{value:5e4,colour:"magenta"},MARK:{value:9007199254740992,colour:"grey"},OFF:{value:Number.MAX_VALUE,colour:"grey"}}),yu.addListener((e=>{const t=e.levels;if(t){yu.throwExceptionIf(e,yu.not(yu.anObject(t)),"levels must be an object");Object.keys(t).forEach((n=>{yu.throwExceptionIf(e,yu.not(yu.validIdentifier(n)),`level name "${n}" is not a valid identifier (must start with a letter, only contain A-Z,a-z,0-9,_)`),yu.throwExceptionIf(e,yu.not(yu.anObject(t[n])),`level "${n}" must be an object`),yu.throwExceptionIf(e,yu.not(t[n].value),`level "${n}" must have a 'value' property`),yu.throwExceptionIf(e,yu.not(yu.anInteger(t[n].value)),`level "${n}".value must have an integer value`),yu.throwExceptionIf(e,yu.not(t[n].colour),`level "${n}" must have a 'colour' property`),yu.throwExceptionIf(e,yu.not(Cu.indexOf(t[n].colour)>-1),`level "${n}".colour must be one of ${Cu.join(", ")}`)}))}})),yu.addListener((e=>{Fu.addLevels(e.levels)}));var gu=Fu,Au={exports:{}},vu={};/*! (c) 2020 Andrea Giammarchi */ +const{parse:Su,stringify:wu}=JSON,{keys:Ou}=Object,bu=String,_u="string",Bu={},Pu="object",ku=(e,t)=>t,xu=e=>e instanceof bu?bu(e):e,Nu=(e,t)=>typeof t===_u?new bu(t):t,Iu=(e,t,n,r)=>{const u=[];for(let o=Ou(n),{length:i}=o,s=0;s{const r=bu(t.push(n)-1);return e.set(n,r),r},Ru=(e,t)=>{const n=Su(e,Nu).map(xu),r=n[0],u=t||ku,o=typeof r===Pu&&r?Iu(n,new Set,r,u):r;return u.call({"":o},"",o)};vu.parse=Ru;const Mu=(e,t,n)=>{const r=t&&typeof t===Pu?(e,n)=>""===e||-1Su(Mu(e));vu.fromJSON=e=>Ru(wu(e));const Lu=vu,ju=gu;class $u{constructor(e,t,n,r,u){this.startTime=new Date,this.categoryName=e,this.data=n,this.level=t,this.context=Object.assign({},r),this.pid=process.pid,u&&(this.functionName=u.functionName,this.fileName=u.fileName,this.lineNumber=u.lineNumber,this.columnNumber=u.columnNumber,this.callStack=u.callStack)}serialise(){const e=this.data.map((e=>(e&&e.message&&e.stack&&(e=Object.assign({message:e.message,stack:e.stack},e)),e)));return this.data=e,Lu.stringify(this)}static deserialise(e){let t;try{const n=Lu.parse(e);n.data=n.data.map((e=>{if(e&&e.message&&e.stack){const t=new Error(e);Object.keys(e).forEach((n=>{t[n]=e[n]})),e=t}return e})),t=new $u(n.categoryName,ju.getLevel(n.level.levelStr),n.data,n.context),t.startTime=new Date(n.startTime),t.pid=n.pid,t.cluster=n.cluster}catch(n){t=new $u("log4js",ju.ERROR,["Unable to parse log:",e,"because: ",n])}return t}}var Hu=$u;const Ju=Nr.exports("log4js:clustering"),Gu=Hu,Vu=tu;let Uu=!1,Wu=null;try{Wu=require("cluster")}catch(e){Ju("cluster module not present"),Uu=!0}const zu=[];let Ku=!1,qu="NODE_APP_INSTANCE";const Yu=()=>Ku&&"0"===process.env[qu],Xu=()=>Uu||Wu.isMaster||Yu(),Zu=e=>{zu.forEach((t=>t(e)))},Qu=(e,t)=>{if(Ju("cluster message received from worker ",e,": ",t),e.topic&&e.data&&(t=e,e=void 0),t&&t.topic&&"log4js:message"===t.topic){Ju("received message: ",t.data);const e=Gu.deserialise(t.data);Zu(e)}};Uu||Vu.addListener((e=>{zu.length=0,({pm2:Ku,disableClustering:Uu,pm2InstanceVar:qu="NODE_APP_INSTANCE"}=e),Ju(`clustering disabled ? ${Uu}`),Ju(`cluster.isMaster ? ${Wu&&Wu.isMaster}`),Ju(`pm2 enabled ? ${Ku}`),Ju(`pm2InstanceVar = ${qu}`),Ju(`process.env[${qu}] = ${process.env[qu]}`),Ku&&process.removeListener("message",Qu),Wu&&Wu.removeListener&&Wu.removeListener("message",Qu),Uu||e.disableClustering?Ju("Not listening for cluster messages, because clustering disabled."):Yu()?(Ju("listening for PM2 broadcast messages"),process.on("message",Qu)):Wu.isMaster?(Ju("listening for cluster messages"),Wu.on("message",Qu)):Ju("not listening for messages, because we are not a master process")}));var eo={onlyOnMaster:(e,t)=>Xu()?e():t,isMaster:Xu,send:e=>{Xu()?Zu(e):(Ku||(e.cluster={workerId:Wu.worker.id,worker:process.pid}),process.send({topic:"log4js:message",data:e.serialise()}))},onMessage:e=>{zu.push(e)}},to={};function no(e){if("number"==typeof e&&Number.isInteger(e))return e;const t={K:1024,M:1048576,G:1073741824},n=Object.keys(t),r=e.substr(e.length-1).toLocaleUpperCase(),u=e.substring(0,e.length-1).trim();if(n.indexOf(r)<0||!Number.isInteger(Number(u)))throw Error(`maxLogSize: "${e}" is invalid`);return u*t[r]}function ro(e){return function(e,t){const n=Object.assign({},t);return Object.keys(e).forEach((r=>{n[r]&&(n[r]=e[r](t[r]))})),n}({maxLogSize:no},e)}const uo={file:ro,fileSync:ro};to.modifyConfig=e=>uo[e.type]?uo[e.type](e):e;var oo={};const io=console.log.bind(console);oo.configure=function(e,t){let n=t.colouredLayout;return e.layout&&(n=t.layout(e.layout.type,e.layout)),function(e,t){return n=>{io(e(n,t))}}(n,e.timezoneOffset)};var so={};so.configure=function(e,t){let n=t.colouredLayout;return e.layout&&(n=t.layout(e.layout.type,e.layout)),function(e,t){return n=>{process.stdout.write(`${e(n,t)}\n`)}}(n,e.timezoneOffset)};var co={};co.configure=function(e,t){let n=t.colouredLayout;return e.layout&&(n=t.layout(e.layout.type,e.layout)),function(e,t){return n=>{process.stderr.write(`${e(n,t)}\n`)}}(n,e.timezoneOffset)};var ao={};ao.configure=function(e,t,n,r){const u=n(e.appender);return function(e,t,n,r){const u=r.getLevel(e),o=r.getLevel(t,r.FATAL);return e=>{const t=e.level;t.isGreaterThanOrEqualTo(u)&&t.isLessThanOrEqualTo(o)&&n(e)}}(e.level,e.maxLevel,u,r)};var lo={};const fo=Nr.exports("log4js:categoryFilter");lo.configure=function(e,t,n){const r=n(e.appender);return function(e,t){return"string"==typeof e&&(e=[e]),n=>{fo(`Checking ${n.categoryName} against ${e}`),-1===e.indexOf(n.categoryName)&&(fo("Not excluded, sending to appender"),t(n))}}(e.exclude,r)};var Do={};const po=Nr.exports("log4js:noLogFilter");Do.configure=function(e,t,n){const r=n(e.appender);return function(e,t){return n=>{po(`Checking data: ${n.data} against filters: ${e}`),"string"==typeof e&&(e=[e]),e=e.filter((e=>null!=e&&""!==e));const r=new RegExp(e.join("|"),"i");(0===e.length||n.data.findIndex((e=>r.test(e)))<0)&&(po("Not excluded, sending to appender"),t(n))}}(e.exclude,r)};var Eo={},mo={exports:{}},ho={},yo={fromCallback:function(e){return Object.defineProperty((function(){if("function"!=typeof arguments[arguments.length-1])return new Promise(((t,n)=>{arguments[arguments.length]=(e,r)=>{if(e)return n(e);t(r)},arguments.length++,e.apply(this,arguments)}));e.apply(this,arguments)}),"name",{value:e.name})},fromPromise:function(e){return Object.defineProperty((function(){const t=arguments[arguments.length-1];if("function"!=typeof t)return e.apply(this,arguments);e.apply(this,arguments).then((e=>t(null,e)),t)}),"name",{value:e.name})}};!function(e){const t=yo.fromCallback,n=we,r=["access","appendFile","chmod","chown","close","copyFile","fchmod","fchown","fdatasync","fstat","fsync","ftruncate","futimes","lchown","lchmod","link","lstat","mkdir","mkdtemp","open","readFile","readdir","readlink","realpath","rename","rmdir","stat","symlink","truncate","unlink","utimes","writeFile"].filter((e=>"function"==typeof n[e]));Object.keys(n).forEach((t=>{"promises"!==t&&(e[t]=n[t])})),r.forEach((r=>{e[r]=t(n[r])})),e.exists=function(e,t){return"function"==typeof t?n.exists(e,t):new Promise((t=>n.exists(e,t)))},e.read=function(e,t,r,u,o,i){return"function"==typeof i?n.read(e,t,r,u,o,i):new Promise(((i,s)=>{n.read(e,t,r,u,o,((e,t,n)=>{if(e)return s(e);i({bytesRead:t,buffer:n})}))}))},e.write=function(e,t,...r){return"function"==typeof r[r.length-1]?n.write(e,t,...r):new Promise(((u,o)=>{n.write(e,t,...r,((e,t,n)=>{if(e)return o(e);u({bytesWritten:t,buffer:n})}))}))},"function"==typeof n.realpath.native&&(e.realpath.native=t(n.realpath.native))}(ho);const Co=p.default;function Fo(e){return(e=Co.normalize(Co.resolve(e)).split(Co.sep)).length>0?e[0]:null}const go=/[<>:"|?*]/;var Ao=function(e){const t=Fo(e);return e=e.replace(t,""),go.test(e)};const vo=we,So=p.default,wo=Ao,Oo=parseInt("0777",8);var bo=function e(t,n,r,u){if("function"==typeof n?(r=n,n={}):n&&"object"==typeof n||(n={mode:n}),"win32"===process.platform&&wo(t)){const e=new Error(t+" contains invalid WIN32 path characters.");return e.code="EINVAL",r(e)}let o=n.mode;const i=n.fs||vo;void 0===o&&(o=Oo&~process.umask()),u||(u=null),r=r||function(){},t=So.resolve(t),i.mkdir(t,o,(o=>{if(!o)return r(null,u=u||t);if("ENOENT"===o.code){if(So.dirname(t)===t)return r(o);e(So.dirname(t),n,((u,o)=>{u?r(u,o):e(t,n,r,o)}))}else i.stat(t,((e,t)=>{e||!t.isDirectory()?r(o,u):r(null,u)}))}))};const _o=we,Bo=p.default,Po=Ao,ko=parseInt("0777",8);var xo=function e(t,n,r){n&&"object"==typeof n||(n={mode:n});let u=n.mode;const o=n.fs||_o;if("win32"===process.platform&&Po(t)){const e=new Error(t+" contains invalid WIN32 path characters.");throw e.code="EINVAL",e}void 0===u&&(u=ko&~process.umask()),r||(r=null),t=Bo.resolve(t);try{o.mkdirSync(t,u),r=r||t}catch(u){if("ENOENT"===u.code){if(Bo.dirname(t)===t)throw u;r=e(Bo.dirname(t),n,r),e(t,n,r)}else{let e;try{e=o.statSync(t)}catch(e){throw u}if(!e.isDirectory())throw u}}return r};const No=(0,yo.fromCallback)(bo);var Io={mkdirs:No,mkdirsSync:xo,mkdirp:No,mkdirpSync:xo,ensureDir:No,ensureDirSync:xo};const To=we;E.default,p.default;var Ro=function(e,t,n,r){To.open(e,"r+",((e,u)=>{if(e)return r(e);To.futimes(u,t,n,(e=>{To.close(u,(t=>{r&&r(e||t)}))}))}))},Mo=function(e,t,n){const r=To.openSync(e,"r+");return To.futimesSync(r,t,n),To.closeSync(r)};const Lo=we,jo=p.default,$o=10,Ho=5,Jo=0,Go=process.versions.node.split("."),Vo=Number.parseInt(Go[0],10),Uo=Number.parseInt(Go[1],10),Wo=Number.parseInt(Go[2],10);function zo(){if(Vo>$o)return!0;if(Vo===$o){if(Uo>Ho)return!0;if(Uo===Ho&&Wo>=Jo)return!0}return!1}function Ko(e,t){const n=jo.resolve(e).split(jo.sep).filter((e=>e)),r=jo.resolve(t).split(jo.sep).filter((e=>e));return n.reduce(((e,t,n)=>e&&r[n]===t),!0)}function qo(e,t,n){return`Cannot ${n} '${e}' to a subdirectory of itself, '${t}'.`}var Yo,Xo,Zo={checkPaths:function(e,t,n,r){!function(e,t,n){zo()?Lo.stat(e,{bigint:!0},((e,r)=>{if(e)return n(e);Lo.stat(t,{bigint:!0},((e,t)=>e?"ENOENT"===e.code?n(null,{srcStat:r,destStat:null}):n(e):n(null,{srcStat:r,destStat:t})))})):Lo.stat(e,((e,r)=>{if(e)return n(e);Lo.stat(t,((e,t)=>e?"ENOENT"===e.code?n(null,{srcStat:r,destStat:null}):n(e):n(null,{srcStat:r,destStat:t})))}))}(e,t,((u,o)=>{if(u)return r(u);const{srcStat:i,destStat:s}=o;return s&&s.ino&&s.dev&&s.ino===i.ino&&s.dev===i.dev?r(new Error("Source and destination must not be the same.")):i.isDirectory()&&Ko(e,t)?r(new Error(qo(e,t,n))):r(null,{srcStat:i,destStat:s})}))},checkPathsSync:function(e,t,n){const{srcStat:r,destStat:u}=function(e,t){let n,r;n=zo()?Lo.statSync(e,{bigint:!0}):Lo.statSync(e);try{r=zo()?Lo.statSync(t,{bigint:!0}):Lo.statSync(t)}catch(e){if("ENOENT"===e.code)return{srcStat:n,destStat:null};throw e}return{srcStat:n,destStat:r}}(e,t);if(u&&u.ino&&u.dev&&u.ino===r.ino&&u.dev===r.dev)throw new Error("Source and destination must not be the same.");if(r.isDirectory()&&Ko(e,t))throw new Error(qo(e,t,n));return{srcStat:r,destStat:u}},checkParentPaths:function e(t,n,r,u,o){const i=jo.resolve(jo.dirname(t)),s=jo.resolve(jo.dirname(r));if(s===i||s===jo.parse(s).root)return o();zo()?Lo.stat(s,{bigint:!0},((i,c)=>i?"ENOENT"===i.code?o():o(i):c.ino&&c.dev&&c.ino===n.ino&&c.dev===n.dev?o(new Error(qo(t,r,u))):e(t,n,s,u,o))):Lo.stat(s,((i,c)=>i?"ENOENT"===i.code?o():o(i):c.ino&&c.dev&&c.ino===n.ino&&c.dev===n.dev?o(new Error(qo(t,r,u))):e(t,n,s,u,o)))},checkParentPathsSync:function e(t,n,r,u){const o=jo.resolve(jo.dirname(t)),i=jo.resolve(jo.dirname(r));if(i===o||i===jo.parse(i).root)return;let s;try{s=zo()?Lo.statSync(i,{bigint:!0}):Lo.statSync(i)}catch(e){if("ENOENT"===e.code)return;throw e}if(s.ino&&s.dev&&s.ino===n.ino&&s.dev===n.dev)throw new Error(qo(t,r,u));return e(t,n,i,u)},isSrcSubdir:Ko};const Qo=we,ei=p.default,ti=Io.mkdirsSync,ni=Mo,ri=Zo;function ui(e,t,n,r){if(!r.filter||r.filter(t,n))return function(e,t,n,r){const u=r.dereference?Qo.statSync:Qo.lstatSync,o=u(t);if(o.isDirectory())return function(e,t,n,r,u){if(!t)return function(e,t,n,r){return Qo.mkdirSync(n),ii(t,n,r),Qo.chmodSync(n,e.mode)}(e,n,r,u);if(t&&!t.isDirectory())throw new Error(`Cannot overwrite non-directory '${r}' with directory '${n}'.`);return ii(n,r,u)}(o,e,t,n,r);if(o.isFile()||o.isCharacterDevice()||o.isBlockDevice())return function(e,t,n,r,u){return t?function(e,t,n,r){if(r.overwrite)return Qo.unlinkSync(n),oi(e,t,n,r);if(r.errorOnExist)throw new Error(`'${n}' already exists`)}(e,n,r,u):oi(e,n,r,u)}(o,e,t,n,r);if(o.isSymbolicLink())return function(e,t,n,r){let u=Qo.readlinkSync(t);r.dereference&&(u=ei.resolve(process.cwd(),u));if(e){let e;try{e=Qo.readlinkSync(n)}catch(e){if("EINVAL"===e.code||"UNKNOWN"===e.code)return Qo.symlinkSync(u,n);throw e}if(r.dereference&&(e=ei.resolve(process.cwd(),e)),ri.isSrcSubdir(u,e))throw new Error(`Cannot copy '${u}' to a subdirectory of itself, '${e}'.`);if(Qo.statSync(n).isDirectory()&&ri.isSrcSubdir(e,u))throw new Error(`Cannot overwrite '${e}' with '${u}'.`);return function(e,t){return Qo.unlinkSync(t),Qo.symlinkSync(e,t)}(u,n)}return Qo.symlinkSync(u,n)}(e,t,n,r)}(e,t,n,r)}function oi(e,t,n,r){return"function"==typeof Qo.copyFileSync?(Qo.copyFileSync(t,n),Qo.chmodSync(n,e.mode),r.preserveTimestamps?ni(n,e.atime,e.mtime):void 0):function(e,t,n,r){const u=65536,o=(Xo?Yo:(Xo=1,Yo=function(e){if("function"==typeof Buffer.allocUnsafe)try{return Buffer.allocUnsafe(e)}catch(t){return new Buffer(e)}return new Buffer(e)}))(u),i=Qo.openSync(t,"r"),s=Qo.openSync(n,"w",e.mode);let c=0;for(;cfunction(e,t,n,r){const u=ei.join(t,e),o=ei.join(n,e),{destStat:i}=ri.checkPathsSync(u,o,"copy");return ui(i,u,o,r)}(r,e,t,n)))}var si=function(e,t,n){"function"==typeof n&&(n={filter:n}),(n=n||{}).clobber=!("clobber"in n)||!!n.clobber,n.overwrite="overwrite"in n?!!n.overwrite:n.clobber,n.preserveTimestamps&&"ia32"===process.arch&&console.warn("fs-extra: Using the preserveTimestamps option in 32-bit node is not recommended;\n\n see https://github.com/jprichardson/node-fs-extra/issues/269");const{srcStat:r,destStat:u}=ri.checkPathsSync(e,t,"copy");return ri.checkParentPathsSync(e,r,t,"copy"),function(e,t,n,r){if(r.filter&&!r.filter(t,n))return;const u=ei.dirname(n);Qo.existsSync(u)||ti(u);return ui(e,t,n,r)}(u,e,t,n)},ci={copySync:si};const ai=yo.fromPromise,li=ho;var fi={pathExists:ai((function(e){return li.access(e).then((()=>!0)).catch((()=>!1))})),pathExistsSync:li.existsSync};const di=we,Di=p.default,pi=Io.mkdirs,Ei=fi.pathExists,mi=Ro,hi=Zo;function yi(e,t,n,r,u){const o=Di.dirname(n);Ei(o,((i,s)=>i?u(i):s?Fi(e,t,n,r,u):void pi(o,(o=>o?u(o):Fi(e,t,n,r,u)))))}function Ci(e,t,n,r,u,o){Promise.resolve(u.filter(n,r)).then((i=>i?e(t,n,r,u,o):o()),(e=>o(e)))}function Fi(e,t,n,r,u){return r.filter?Ci(gi,e,t,n,r,u):gi(e,t,n,r,u)}function gi(e,t,n,r,u){(r.dereference?di.stat:di.lstat)(t,((o,i)=>o?u(o):i.isDirectory()?function(e,t,n,r,u,o){if(!t)return function(e,t,n,r,u){di.mkdir(n,(o=>{if(o)return u(o);Si(t,n,r,(t=>t?u(t):di.chmod(n,e.mode,u)))}))}(e,n,r,u,o);if(t&&!t.isDirectory())return o(new Error(`Cannot overwrite non-directory '${r}' with directory '${n}'.`));return Si(n,r,u,o)}(i,e,t,n,r,u):i.isFile()||i.isCharacterDevice()||i.isBlockDevice()?function(e,t,n,r,u,o){return t?function(e,t,n,r,u){if(!r.overwrite)return r.errorOnExist?u(new Error(`'${n}' already exists`)):u();di.unlink(n,(o=>o?u(o):Ai(e,t,n,r,u)))}(e,n,r,u,o):Ai(e,n,r,u,o)}(i,e,t,n,r,u):i.isSymbolicLink()?function(e,t,n,r,u){di.readlink(t,((t,o)=>t?u(t):(r.dereference&&(o=Di.resolve(process.cwd(),o)),e?void di.readlink(n,((t,i)=>t?"EINVAL"===t.code||"UNKNOWN"===t.code?di.symlink(o,n,u):u(t):(r.dereference&&(i=Di.resolve(process.cwd(),i)),hi.isSrcSubdir(o,i)?u(new Error(`Cannot copy '${o}' to a subdirectory of itself, '${i}'.`)):e.isDirectory()&&hi.isSrcSubdir(i,o)?u(new Error(`Cannot overwrite '${i}' with '${o}'.`)):function(e,t,n){di.unlink(t,(r=>r?n(r):di.symlink(e,t,n)))}(o,n,u)))):di.symlink(o,n,u))))}(e,t,n,r,u):void 0))}function Ai(e,t,n,r,u){return"function"==typeof di.copyFile?di.copyFile(t,n,(t=>t?u(t):vi(e,n,r,u))):function(e,t,n,r,u){const o=di.createReadStream(t);o.on("error",(e=>u(e))).once("open",(()=>{const t=di.createWriteStream(n,{mode:e.mode});t.on("error",(e=>u(e))).on("open",(()=>o.pipe(t))).once("close",(()=>vi(e,n,r,u)))}))}(e,t,n,r,u)}function vi(e,t,n,r){di.chmod(t,e.mode,(u=>u?r(u):n.preserveTimestamps?mi(t,e.atime,e.mtime,r):r()))}function Si(e,t,n,r){di.readdir(e,((u,o)=>u?r(u):wi(o,e,t,n,r)))}function wi(e,t,n,r,u){const o=e.pop();return o?function(e,t,n,r,u,o){const i=Di.join(n,t),s=Di.join(r,t);hi.checkPaths(i,s,"copy",((t,c)=>{if(t)return o(t);const{destStat:a}=c;Fi(a,i,s,u,(t=>t?o(t):wi(e,n,r,u,o)))}))}(e,o,t,n,r,u):u()}var Oi=function(e,t,n,r){"function"!=typeof n||r?"function"==typeof n&&(n={filter:n}):(r=n,n={}),r=r||function(){},(n=n||{}).clobber=!("clobber"in n)||!!n.clobber,n.overwrite="overwrite"in n?!!n.overwrite:n.clobber,n.preserveTimestamps&&"ia32"===process.arch&&console.warn("fs-extra: Using the preserveTimestamps option in 32-bit node is not recommended;\n\n see https://github.com/jprichardson/node-fs-extra/issues/269"),hi.checkPaths(e,t,"copy",((u,o)=>{if(u)return r(u);const{srcStat:i,destStat:s}=o;hi.checkParentPaths(e,i,t,"copy",(u=>u?r(u):n.filter?Ci(yi,s,e,t,n,r):yi(s,e,t,n,r)))}))};var bi={copy:(0,yo.fromCallback)(Oi)};const _i=we,Bi=p.default,Pi=g.default,ki="win32"===process.platform;function xi(e){["unlink","chmod","stat","lstat","rmdir","readdir"].forEach((t=>{e[t]=e[t]||_i[t],e[t+="Sync"]=e[t]||_i[t]})),e.maxBusyTries=e.maxBusyTries||3}function Ni(e,t,n){let r=0;"function"==typeof t&&(n=t,t={}),Pi(e,"rimraf: missing path"),Pi.strictEqual(typeof e,"string","rimraf: path should be a string"),Pi.strictEqual(typeof n,"function","rimraf: callback function required"),Pi(t,"rimraf: invalid options argument provided"),Pi.strictEqual(typeof t,"object","rimraf: options should be object"),xi(t),Ii(e,t,(function u(o){if(o){if(("EBUSY"===o.code||"ENOTEMPTY"===o.code||"EPERM"===o.code)&&rIi(e,t,u)),100*r)}"ENOENT"===o.code&&(o=null)}n(o)}))}function Ii(e,t,n){Pi(e),Pi(t),Pi("function"==typeof n),t.lstat(e,((r,u)=>r&&"ENOENT"===r.code?n(null):r&&"EPERM"===r.code&&ki?Ti(e,t,r,n):u&&u.isDirectory()?Mi(e,t,r,n):void t.unlink(e,(r=>{if(r){if("ENOENT"===r.code)return n(null);if("EPERM"===r.code)return ki?Ti(e,t,r,n):Mi(e,t,r,n);if("EISDIR"===r.code)return Mi(e,t,r,n)}return n(r)}))))}function Ti(e,t,n,r){Pi(e),Pi(t),Pi("function"==typeof r),n&&Pi(n instanceof Error),t.chmod(e,438,(u=>{u?r("ENOENT"===u.code?null:n):t.stat(e,((u,o)=>{u?r("ENOENT"===u.code?null:n):o.isDirectory()?Mi(e,t,n,r):t.unlink(e,r)}))}))}function Ri(e,t,n){let r;Pi(e),Pi(t),n&&Pi(n instanceof Error);try{t.chmodSync(e,438)}catch(e){if("ENOENT"===e.code)return;throw n}try{r=t.statSync(e)}catch(e){if("ENOENT"===e.code)return;throw n}r.isDirectory()?ji(e,t,n):t.unlinkSync(e)}function Mi(e,t,n,r){Pi(e),Pi(t),n&&Pi(n instanceof Error),Pi("function"==typeof r),t.rmdir(e,(u=>{!u||"ENOTEMPTY"!==u.code&&"EEXIST"!==u.code&&"EPERM"!==u.code?u&&"ENOTDIR"===u.code?r(n):r(u):function(e,t,n){Pi(e),Pi(t),Pi("function"==typeof n),t.readdir(e,((r,u)=>{if(r)return n(r);let o,i=u.length;if(0===i)return t.rmdir(e,n);u.forEach((r=>{Ni(Bi.join(e,r),t,(r=>{if(!o)return r?n(o=r):void(0==--i&&t.rmdir(e,n))}))}))}))}(e,t,r)}))}function Li(e,t){let n;xi(t=t||{}),Pi(e,"rimraf: missing path"),Pi.strictEqual(typeof e,"string","rimraf: path should be a string"),Pi(t,"rimraf: missing options"),Pi.strictEqual(typeof t,"object","rimraf: options should be object");try{n=t.lstatSync(e)}catch(n){if("ENOENT"===n.code)return;"EPERM"===n.code&&ki&&Ri(e,t,n)}try{n&&n.isDirectory()?ji(e,t,null):t.unlinkSync(e)}catch(n){if("ENOENT"===n.code)return;if("EPERM"===n.code)return ki?Ri(e,t,n):ji(e,t,n);if("EISDIR"!==n.code)throw n;ji(e,t,n)}}function ji(e,t,n){Pi(e),Pi(t),n&&Pi(n instanceof Error);try{t.rmdirSync(e)}catch(r){if("ENOTDIR"===r.code)throw n;if("ENOTEMPTY"===r.code||"EEXIST"===r.code||"EPERM"===r.code)!function(e,t){if(Pi(e),Pi(t),t.readdirSync(e).forEach((n=>Li(Bi.join(e,n),t))),!ki){return t.rmdirSync(e,t)}{const n=Date.now();do{try{return t.rmdirSync(e,t)}catch(e){}}while(Date.now()-n<500)}}(e,t);else if("ENOENT"!==r.code)throw r}}var $i=Ni;Ni.sync=Li;const Hi=$i;var Ji={remove:(0,yo.fromCallback)(Hi),removeSync:Hi.sync};const Gi=yo.fromCallback,Vi=we,Ui=p.default,Wi=Io,zi=Ji,Ki=Gi((function(e,t){t=t||function(){},Vi.readdir(e,((n,r)=>{if(n)return Wi.mkdirs(e,t);r=r.map((t=>Ui.join(e,t))),function e(){const n=r.pop();if(!n)return t();zi.remove(n,(n=>{if(n)return t(n);e()}))}()}))}));function qi(e){let t;try{t=Vi.readdirSync(e)}catch(t){return Wi.mkdirsSync(e)}t.forEach((t=>{t=Ui.join(e,t),zi.removeSync(t)}))}var Yi={emptyDirSync:qi,emptydirSync:qi,emptyDir:Ki,emptydir:Ki};const Xi=yo.fromCallback,Zi=p.default,Qi=we,es=Io,ts=fi.pathExists;var ns={createFile:Xi((function(e,t){function n(){Qi.writeFile(e,"",(e=>{if(e)return t(e);t()}))}Qi.stat(e,((r,u)=>{if(!r&&u.isFile())return t();const o=Zi.dirname(e);ts(o,((e,r)=>e?t(e):r?n():void es.mkdirs(o,(e=>{if(e)return t(e);n()}))))}))})),createFileSync:function(e){let t;try{t=Qi.statSync(e)}catch(e){}if(t&&t.isFile())return;const n=Zi.dirname(e);Qi.existsSync(n)||es.mkdirsSync(n),Qi.writeFileSync(e,"")}};const rs=yo.fromCallback,us=p.default,os=we,is=Io,ss=fi.pathExists;var cs={createLink:rs((function(e,t,n){function r(e,t){os.link(e,t,(e=>{if(e)return n(e);n(null)}))}ss(t,((u,o)=>u?n(u):o?n(null):void os.lstat(e,(u=>{if(u)return u.message=u.message.replace("lstat","ensureLink"),n(u);const o=us.dirname(t);ss(o,((u,i)=>u?n(u):i?r(e,t):void is.mkdirs(o,(u=>{if(u)return n(u);r(e,t)}))))}))))})),createLinkSync:function(e,t){if(os.existsSync(t))return;try{os.lstatSync(e)}catch(e){throw e.message=e.message.replace("lstat","ensureLink"),e}const n=us.dirname(t);return os.existsSync(n)||is.mkdirsSync(n),os.linkSync(e,t)}};const as=p.default,ls=we,fs=fi.pathExists;var ds={symlinkPaths:function(e,t,n){if(as.isAbsolute(e))return ls.lstat(e,(t=>t?(t.message=t.message.replace("lstat","ensureSymlink"),n(t)):n(null,{toCwd:e,toDst:e})));{const r=as.dirname(t),u=as.join(r,e);return fs(u,((t,o)=>t?n(t):o?n(null,{toCwd:u,toDst:e}):ls.lstat(e,(t=>t?(t.message=t.message.replace("lstat","ensureSymlink"),n(t)):n(null,{toCwd:e,toDst:as.relative(r,e)})))))}},symlinkPathsSync:function(e,t){let n;if(as.isAbsolute(e)){if(n=ls.existsSync(e),!n)throw new Error("absolute srcpath does not exist");return{toCwd:e,toDst:e}}{const r=as.dirname(t),u=as.join(r,e);if(n=ls.existsSync(u),n)return{toCwd:u,toDst:e};if(n=ls.existsSync(e),!n)throw new Error("relative srcpath does not exist");return{toCwd:e,toDst:as.relative(r,e)}}}};const Ds=we;var ps={symlinkType:function(e,t,n){if(n="function"==typeof t?t:n,t="function"!=typeof t&&t)return n(null,t);Ds.lstat(e,((e,r)=>{if(e)return n(null,"file");t=r&&r.isDirectory()?"dir":"file",n(null,t)}))},symlinkTypeSync:function(e,t){let n;if(t)return t;try{n=Ds.lstatSync(e)}catch(e){return"file"}return n&&n.isDirectory()?"dir":"file"}};const Es=yo.fromCallback,ms=p.default,hs=we,ys=Io.mkdirs,Cs=Io.mkdirsSync,Fs=ds.symlinkPaths,gs=ds.symlinkPathsSync,As=ps.symlinkType,vs=ps.symlinkTypeSync,Ss=fi.pathExists;var ws={createSymlink:Es((function(e,t,n,r){r="function"==typeof n?n:r,n="function"!=typeof n&&n,Ss(t,((u,o)=>u?r(u):o?r(null):void Fs(e,t,((u,o)=>{if(u)return r(u);e=o.toDst,As(o.toCwd,n,((n,u)=>{if(n)return r(n);const o=ms.dirname(t);Ss(o,((n,i)=>n?r(n):i?hs.symlink(e,t,u,r):void ys(o,(n=>{if(n)return r(n);hs.symlink(e,t,u,r)}))))}))}))))})),createSymlinkSync:function(e,t,n){if(hs.existsSync(t))return;const r=gs(e,t);e=r.toDst,n=vs(r.toCwd,n);const u=ms.dirname(t);return hs.existsSync(u)||Cs(u),hs.symlinkSync(e,t,n)}};var Os,bs={createFile:ns.createFile,createFileSync:ns.createFileSync,ensureFile:ns.createFile,ensureFileSync:ns.createFileSync,createLink:cs.createLink,createLinkSync:cs.createLinkSync,ensureLink:cs.createLink,ensureLinkSync:cs.createLinkSync,createSymlink:ws.createSymlink,createSymlinkSync:ws.createSymlinkSync,ensureSymlink:ws.createSymlink,ensureSymlinkSync:ws.createSymlinkSync};try{Os=we}catch(e){Os=D.default}function _s(e,t){var n,r="\n";return"object"==typeof t&&null!==t&&(t.spaces&&(n=t.spaces),t.EOL&&(r=t.EOL)),JSON.stringify(e,t?t.replacer:null,n).replace(/\n/g,r)+r}function Bs(e){return Buffer.isBuffer(e)&&(e=e.toString("utf8")),e=e.replace(/^\uFEFF/,"")}var Ps={readFile:function(e,t,n){null==n&&(n=t,t={}),"string"==typeof t&&(t={encoding:t});var r=(t=t||{}).fs||Os,u=!0;"throws"in t&&(u=t.throws),r.readFile(e,t,(function(r,o){if(r)return n(r);var i;o=Bs(o);try{i=JSON.parse(o,t?t.reviver:null)}catch(t){return u?(t.message=e+": "+t.message,n(t)):n(null,null)}n(null,i)}))},readFileSync:function(e,t){"string"==typeof(t=t||{})&&(t={encoding:t});var n=t.fs||Os,r=!0;"throws"in t&&(r=t.throws);try{var u=n.readFileSync(e,t);return u=Bs(u),JSON.parse(u,t.reviver)}catch(t){if(r)throw t.message=e+": "+t.message,t;return null}},writeFile:function(e,t,n,r){null==r&&(r=n,n={});var u=(n=n||{}).fs||Os,o="";try{o=_s(t,n)}catch(e){return void(r&&r(e,null))}u.writeFile(e,o,n,r)},writeFileSync:function(e,t,n){var r=(n=n||{}).fs||Os,u=_s(t,n);return r.writeFileSync(e,u,n)}},ks=Ps;const xs=yo.fromCallback,Ns=ks;var Is={readJson:xs(Ns.readFile),readJsonSync:Ns.readFileSync,writeJson:xs(Ns.writeFile),writeJsonSync:Ns.writeFileSync};const Ts=p.default,Rs=Io,Ms=fi.pathExists,Ls=Is;var js=function(e,t,n,r){"function"==typeof n&&(r=n,n={});const u=Ts.dirname(e);Ms(u,((o,i)=>o?r(o):i?Ls.writeJson(e,t,n,r):void Rs.mkdirs(u,(u=>{if(u)return r(u);Ls.writeJson(e,t,n,r)}))))};const $s=we,Hs=p.default,Js=Io,Gs=Is;var Vs=function(e,t,n){const r=Hs.dirname(e);$s.existsSync(r)||Js.mkdirsSync(r),Gs.writeJsonSync(e,t,n)};const Us=yo.fromCallback,Ws=Is;Ws.outputJson=Us(js),Ws.outputJsonSync=Vs,Ws.outputJSON=Ws.outputJson,Ws.outputJSONSync=Ws.outputJsonSync,Ws.writeJSON=Ws.writeJson,Ws.writeJSONSync=Ws.writeJsonSync,Ws.readJSON=Ws.readJson,Ws.readJSONSync=Ws.readJsonSync;var zs=Ws;const Ks=we,qs=p.default,Ys=ci.copySync,Xs=Ji.removeSync,Zs=Io.mkdirpSync,Qs=Zo;function ec(e,t,n){try{Ks.renameSync(e,t)}catch(r){if("EXDEV"!==r.code)throw r;return function(e,t,n){const r={overwrite:n,errorOnExist:!0};return Ys(e,t,r),Xs(e)}(e,t,n)}}var tc=function(e,t,n){const r=(n=n||{}).overwrite||n.clobber||!1,{srcStat:u}=Qs.checkPathsSync(e,t,"move");return Qs.checkParentPathsSync(e,u,t,"move"),Zs(qs.dirname(t)),function(e,t,n){if(n)return Xs(t),ec(e,t,n);if(Ks.existsSync(t))throw new Error("dest already exists.");return ec(e,t,n)}(e,t,r)},nc={moveSync:tc};const rc=we,uc=p.default,oc=bi.copy,ic=Ji.remove,sc=Io.mkdirp,cc=fi.pathExists,ac=Zo;function lc(e,t,n,r){rc.rename(e,t,(u=>u?"EXDEV"!==u.code?r(u):function(e,t,n,r){const u={overwrite:n,errorOnExist:!0};oc(e,t,u,(t=>t?r(t):ic(e,r)))}(e,t,n,r):r()))}var fc=function(e,t,n,r){"function"==typeof n&&(r=n,n={});const u=n.overwrite||n.clobber||!1;ac.checkPaths(e,t,"move",((n,o)=>{if(n)return r(n);const{srcStat:i}=o;ac.checkParentPaths(e,i,t,"move",(n=>{if(n)return r(n);sc(uc.dirname(t),(n=>n?r(n):function(e,t,n,r){if(n)return ic(t,(u=>u?r(u):lc(e,t,n,r)));cc(t,((u,o)=>u?r(u):o?r(new Error("dest already exists.")):lc(e,t,n,r)))}(e,t,u,r)))}))}))};var dc={move:(0,yo.fromCallback)(fc)};const Dc=yo.fromCallback,pc=we,Ec=p.default,mc=Io,hc=fi.pathExists;var yc={outputFile:Dc((function(e,t,n,r){"function"==typeof n&&(r=n,n="utf8");const u=Ec.dirname(e);hc(u,((o,i)=>o?r(o):i?pc.writeFile(e,t,n,r):void mc.mkdirs(u,(u=>{if(u)return r(u);pc.writeFile(e,t,n,r)}))))})),outputFileSync:function(e,...t){const n=Ec.dirname(e);if(pc.existsSync(n))return pc.writeFileSync(e,...t);mc.mkdirsSync(n),pc.writeFileSync(e,...t)}};!function(e){e.exports=Object.assign({},ho,ci,bi,Yi,bs,zs,Io,nc,dc,yc,fi,Ji);const t=D.default;Object.getOwnPropertyDescriptor(t,"promises")&&Object.defineProperty(e.exports,"promises",{get:()=>t.promises})}(mo);const Cc=Nr.exports("streamroller:fileNameFormatter"),Fc=p.default;const gc=Nr.exports("streamroller:fileNameParser"),Ac=nu.exports;const vc=Nr.exports("streamroller:moveAndMaybeCompressFile"),Sc=mo.exports,wc=v.default;var Oc=async(e,t,n)=>{if(n=function(e){const t={mode:parseInt("0600",8),compress:!1},n=Object.assign({},t,e);return vc(`_parseOption: moveAndMaybeCompressFile called with option=${JSON.stringify(n)}`),n}(n),e!==t){if(await Sc.pathExists(e))if(vc(`moveAndMaybeCompressFile: moving file from ${e} to ${t} ${n.compress?"with":"without"} compress`),n.compress)await new Promise(((r,u)=>{let o=!1;const i=Sc.createWriteStream(t,{mode:n.mode,flags:"wx"}).on("open",(()=>{o=!0;const t=Sc.createReadStream(e).on("open",(()=>{t.pipe(wc.createGzip()).pipe(i)})).on("error",(t=>{vc(`moveAndMaybeCompressFile: error reading ${e}`,t),i.destroy(t)}))})).on("finish",(()=>{vc(`moveAndMaybeCompressFile: finished compressing ${t}, deleting ${e}`),Sc.unlink(e).then(r).catch((t=>{vc(`moveAndMaybeCompressFile: error deleting ${e}, truncating instead`,t),Sc.truncate(e).then(r).catch((t=>{vc(`moveAndMaybeCompressFile: error truncating ${e}`,t),u(t)}))}))})).on("error",(e=>{o?(vc(`moveAndMaybeCompressFile: error writing ${t}, deleting`,e),Sc.unlink(t).then((()=>{u(e)})).catch((e=>{vc(`moveAndMaybeCompressFile: error deleting ${t}`,e),u(e)}))):(vc(`moveAndMaybeCompressFile: error creating ${t}`,e),u(e))}))})).catch((()=>{}));else{vc(`moveAndMaybeCompressFile: renaming ${e} to ${t}`);try{await Sc.move(e,t,{overwrite:!0})}catch(n){if(vc(`moveAndMaybeCompressFile: error renaming ${e} to ${t}`,n),"ENOENT"!==n.code){vc("moveAndMaybeCompressFile: trying copy+truncate instead");try{await Sc.copy(e,t,{overwrite:!0}),await Sc.truncate(e)}catch(e){vc("moveAndMaybeCompressFile: error copy+truncate",e)}}}}}else vc("moveAndMaybeCompressFile: source and target are the same, not doing anything")};const bc=Nr.exports("streamroller:RollingFileWriteStream"),_c=mo.exports,Bc=p.default,Pc=E.default,kc=()=>new Date,xc=nu.exports,{Writable:Nc}=C.default,Ic=({file:e,keepFileExt:t,needsIndex:n,alwaysIncludeDate:r,compress:u,fileNameSep:o})=>{let i=o||".";const s=Fc.join(e.dir,e.name),c=t=>t+e.ext,a=(e,t,r)=>!n&&r||!t?e:e+i+t,l=(e,t,n)=>(t>0||r)&&n?e+i+n:e,f=(e,t)=>t&&u?e+".gz":e,d=t?[l,a,c,f]:[c,l,a,f];return({date:e,index:t})=>(Cc(`_formatFileName: date=${e}, index=${t}`),d.reduce(((n,r)=>r(n,t,e)),s))},Tc=({file:e,keepFileExt:t,pattern:n,fileNameSep:r})=>{let u=r||".";const o="__NOT_MATCHING__";let i=[(e,t)=>e.endsWith(".gz")?(gc("it is gzipped"),t.isCompressed=!0,e.slice(0,-1*".gz".length)):e,t?t=>t.startsWith(e.name)&&t.endsWith(e.ext)?(gc("it starts and ends with the right things"),t.slice(e.name.length+1,-1*e.ext.length)):o:t=>t.startsWith(e.base)?(gc("it starts with the right things"),t.slice(e.base.length+1)):o,n?(e,t)=>{const r=e.split(u);let o=r[r.length-1];gc("items: ",r,", indexStr: ",o);let i=e;void 0!==o&&o.match(/^\d+$/)?(i=e.slice(0,-1*(o.length+1)),gc(`dateStr is ${i}`),n&&!i&&(i=o,o="0")):o="0";try{const r=Ac.parse(n,i,new Date(0,0));return Ac.asString(n,r)!==i?e:(t.index=parseInt(o,10),t.date=i,t.timestamp=r.getTime(),"")}catch(t){return gc(`Problem parsing ${i} as ${n}, error was: `,t),e}}:(e,t)=>e.match(/^\d+$/)?(gc("it has an index"),t.index=parseInt(e,10),""):e];return e=>{let t={filename:e,index:0,isCompressed:!1};return i.reduce(((e,n)=>n(e,t)),e)?null:t}},Rc=Oc;var Mc=class extends Nc{constructor(e,t){if(bc(`constructor: creating RollingFileWriteStream. path=${e}`),"string"!=typeof e||0===e.length)throw new Error(`Invalid filename: ${e}`);if(e.endsWith(Bc.sep))throw new Error(`Filename is a directory: ${e}`);0===e.indexOf(`~${Bc.sep}`)&&(e=e.replace("~",Pc.homedir())),super(t),this.options=this._parseOption(t),this.fileObject=Bc.parse(e),""===this.fileObject.dir&&(this.fileObject=Bc.parse(Bc.join(process.cwd(),e))),this.fileFormatter=Ic({file:this.fileObject,alwaysIncludeDate:this.options.alwaysIncludePattern,needsIndex:this.options.maxSize 0`)}else delete n.maxSize;if(n.numBackups||0===n.numBackups){if(n.numBackups<0)throw new Error(`options.numBackups (${n.numBackups}) should be >= 0`);if(n.numBackups>=Number.MAX_SAFE_INTEGER)throw new Error(`options.numBackups (${n.numBackups}) should be < Number.MAX_SAFE_INTEGER`);n.numToKeep=n.numBackups+1}else if(n.numToKeep<=0)throw new Error(`options.numToKeep (${n.numToKeep}) should be > 0`);return bc(`_parseOption: creating stream with option=${JSON.stringify(n)}`),n}_final(e){this.currentFileStream.end("",this.options.encoding,e)}_write(e,t,n){this._shouldRoll().then((()=>{bc(`_write: writing chunk. file=${this.currentFileStream.path} state=${JSON.stringify(this.state)} chunk=${e}`),this.currentFileStream.write(e,t,(t=>{this.state.currentSize+=e.length,n(t)}))}))}async _shouldRoll(){(this._dateChanged()||this._tooBig())&&(bc(`_shouldRoll: rolling because dateChanged? ${this._dateChanged()} or tooBig? ${this._tooBig()}`),await this._roll())}_dateChanged(){return this.state.currentDate&&this.state.currentDate!==xc(this.options.pattern,kc())}_tooBig(){return this.state.currentSize>=this.options.maxSize}_roll(){return bc("_roll: closing the current stream"),new Promise(((e,t)=>{this.currentFileStream.end("",this.options.encoding,(()=>{this._moveOldFiles().then(e).catch(t)}))}))}async _moveOldFiles(){const e=await this._getExistingFiles();for(let t=(this.state.currentDate?e.filter((e=>e.date===this.state.currentDate)):e).length;t>=0;t--){bc(`_moveOldFiles: i = ${t}`);const e=this.fileFormatter({date:this.state.currentDate,index:t}),n=this.fileFormatter({date:this.state.currentDate,index:t+1}),r={compress:this.options.compress&&0===t,mode:this.options.mode};await Rc(e,n,r)}this.state.currentSize=0,this.state.currentDate=this.state.currentDate?xc(this.options.pattern,kc()):null,bc(`_moveOldFiles: finished rolling files. state=${JSON.stringify(this.state)}`),this._renewWriteStream(),await new Promise(((e,t)=>{this.currentFileStream.write("","utf8",(()=>{this._clean().then(e).catch(t)}))}))}async _getExistingFiles(){const e=await _c.readdir(this.fileObject.dir).catch((()=>[]));bc(`_getExistingFiles: files=${e}`);const t=e.map((e=>this.fileNameParser(e))).filter((e=>e)),n=e=>(e.timestamp?e.timestamp:kc().getTime())-e.index;return t.sort(((e,t)=>n(e)-n(t))),t}_renewWriteStream(){const e=this.fileFormatter({date:this.state.currentDate,index:0}),t=e=>{try{return _c.mkdirSync(e,{recursive:!0})}catch(n){if("ENOENT"===n.code)return t(Bc.dirname(e)),t(e);if("EEXIST"!==n.code&&"EROFS"!==n.code)throw n;try{if(_c.statSync(e).isDirectory())return e;throw n}catch(e){throw n}}};t(this.fileObject.dir);const n={flags:this.options.flags,encoding:this.options.encoding,mode:this.options.mode};var r,u;_c.appendFileSync(e,"",(r={...n},u="flags",r["flag"]=r[u],delete r[u],r)),this.currentFileStream=_c.createWriteStream(e,n),this.currentFileStream.on("error",(e=>{this.emit("error",e)}))}async _clean(){const e=await this._getExistingFiles();if(bc(`_clean: numToKeep = ${this.options.numToKeep}, existingFiles = ${e.length}`),bc("_clean: existing files are: ",e),this._tooManyFiles(e.length)){const n=e.slice(0,e.length-this.options.numToKeep).map((e=>Bc.format({dir:this.fileObject.dir,base:e.filename})));await(t=n,bc(`deleteFiles: files to delete: ${t}`),Promise.all(t.map((e=>_c.unlink(e).catch((t=>{bc(`deleteFiles: error when unlinking ${e}, ignoring. Error was ${t}`)}))))))}var t}_tooManyFiles(e){return this.options.numToKeep>0&&e>this.options.numToKeep}};const Lc=Mc;var jc=class extends Lc{constructor(e,t,n,r){r||(r={}),t&&(r.maxSize=t),r.numBackups||0===r.numBackups||(n||0===n||(n=1),r.numBackups=n),super(e,r),this.backups=r.numBackups,this.size=this.options.maxSize}get theStream(){return this.currentFileStream}};const $c=Mc;var Hc={RollingFileWriteStream:Mc,RollingFileStream:jc,DateRollingFileStream:class extends $c{constructor(e,t,n){t&&"object"==typeof t&&(n=t,t=null),n||(n={}),t||(t="yyyy-MM-dd"),n.pattern=t,n.numBackups||0===n.numBackups?n.daysToKeep=n.numBackups:(n.daysToKeep||0===n.daysToKeep?process.emitWarning("options.daysToKeep is deprecated due to the confusion it causes when used together with file size rolling. Please use options.numBackups instead.","DeprecationWarning","streamroller-DEP0001"):n.daysToKeep=1,n.numBackups=n.daysToKeep),super(e,n),this.mode=this.options.mode}get theStream(){return this.currentFileStream}}};const Jc=Nr.exports("log4js:file"),Gc=p.default,Vc=Hc,Uc=E.default.EOL;let Wc=!1;const zc=new Set;function Kc(){zc.forEach((e=>{e.sighupHandler()}))}function qc(e,t,n,r){const u=new Vc.RollingFileStream(e,t,n,r);return u.on("error",(t=>{console.error("log4js.fileAppender - Writing to file %s, error happened ",e,t)})),u.on("drain",(()=>{process.emit("log4js:pause",!1)})),u}Eo.configure=function(e,t){let n=t.basicLayout;return e.layout&&(n=t.layout(e.layout.type,e.layout)),e.mode=e.mode||384,function(e,t,n,r,u,o){e=Gc.normalize(e),Jc("Creating file appender (",e,", ",n,", ",r=r||0===r?r:5,", ",u,", ",o,")");let i=qc(e,n,r,u);const s=function(e){if(i.writable){if(!0===u.removeColor){const t=/\x1b[[0-9;]*m/g;e.data=e.data.map((e=>"string"==typeof e?e.replace(t,""):e))}i.write(t(e,o)+Uc,"utf8")||process.emit("log4js:pause",!0)}};return s.reopen=function(){i.end((()=>{i=qc(e,n,r,u)}))},s.sighupHandler=function(){Jc("SIGHUP handler called."),s.reopen()},s.shutdown=function(e){zc.delete(s),0===zc.size&&Wc&&(process.removeListener("SIGHUP",Kc),Wc=!1),i.end("","utf-8",e)},zc.add(s),Wc||(process.on("SIGHUP",Kc),Wc=!0),s}(e.filename,n,e.maxLogSize,e.backups,e,e.timezoneOffset)};var Yc={};const Xc=Hc,Zc=E.default.EOL;function Qc(e,t,n,r,u){r.maxSize=r.maxLogSize;const o=function(e,t,n){const r=new Xc.DateRollingFileStream(e,t,n);return r.on("error",(t=>{console.error("log4js.dateFileAppender - Writing to file %s, error happened ",e,t)})),r.on("drain",(()=>{process.emit("log4js:pause",!1)})),r}(e,t,r),i=function(e){o.writable&&(o.write(n(e,u)+Zc,"utf8")||process.emit("log4js:pause",!0))};return i.shutdown=function(e){o.end("","utf-8",e)},i}Yc.configure=function(e,t){let n=t.basicLayout;return e.layout&&(n=t.layout(e.layout.type,e.layout)),e.alwaysIncludePattern||(e.alwaysIncludePattern=!1),e.mode=e.mode||384,Qc(e.filename,e.pattern,n,e,e.timezoneOffset)};var ea={};const ta=Nr.exports("log4js:fileSync"),na=p.default,ra=D.default,ua=E.default.EOL||"\n";function oa(e,t){if(ra.existsSync(e))return;const n=ra.openSync(e,t.flags,t.mode);ra.closeSync(n)}class ia{constructor(e,t,n,r){ta("In RollingFileStream"),function(){if(!e||!t||t<=0)throw new Error("You must specify a filename and file size")}(),this.filename=e,this.size=t,this.backups=n,this.options=r,this.currentSize=0,this.currentSize=function(e){let t=0;try{t=ra.statSync(e).size}catch(t){oa(e,r)}return t}(this.filename)}shouldRoll(){return ta("should roll with current size %d, and max size %d",this.currentSize,this.size),this.currentSize>=this.size}roll(e){const t=this,n=new RegExp(`^${na.basename(e)}`);function r(e){return n.test(e)}function u(t){return parseInt(t.substring(`${na.basename(e)}.`.length),10)||0}function o(e,t){return u(e)>u(t)?1:u(e) ${e}.${r+1}`),ra.renameSync(na.join(na.dirname(e),n),`${e}.${r+1}`)}}ta("Rolling, rolling, rolling"),ta("Renaming the old files"),ra.readdirSync(na.dirname(e)).filter(r).sort(o).reverse().forEach(i)}write(e,t){const n=this;ta("in write"),this.shouldRoll()&&(this.currentSize=0,this.roll(this.filename)),ta("writing the chunk to the file"),n.currentSize+=e.length,ra.appendFileSync(n.filename,e)}}ea.configure=function(e,t){let n=t.basicLayout;e.layout&&(n=t.layout(e.layout.type,e.layout));const r={flags:e.flags||"a",encoding:e.encoding||"utf8",mode:e.mode||384};return function(e,t,n,r,u,o){ta("fileSync appender created");const i=function(e,t,n){let r;var u;return t?r=new ia(e,t,n,o):(oa(u=e,o),r={write(e){ra.appendFileSync(u,e)}}),r}(e=na.normalize(e),n,r=r||0===r?r:5);return e=>{i.write(t(e,u)+ua)}}(e.filename,n,e.maxLogSize,e.backups,e.timezoneOffset,r)};var sa={};const ca=Nr.exports("log4js:tcp"),aa=S.default;sa.configure=function(e,t){ca(`configure with config = ${e}`);let n=function(e){return e.serialise()};return e.layout&&(n=t.layout(e.layout.type,e.layout)),function(e,t){let n=!1;const r=[];let u,o=3,i="__LOG4JS__";function s(e){ca("Writing log event to socket"),n=u.write(`${t(e)}${i}`,"utf8")}function c(){let e;for(ca("emptying buffer");e=r.shift();)s(e)}function a(e){n?s(e):(ca("buffering log event because it cannot write at the moment"),r.push(e))}return function t(){ca(`appender creating socket to ${e.host||"localhost"}:${e.port||5e3}`),i=`${e.endMsg||"__LOG4JS__"}`,u=aa.createConnection(e.port||5e3,e.host||"localhost"),u.on("connect",(()=>{ca("socket connected"),c(),n=!0})),u.on("drain",(()=>{ca("drain event received, emptying buffer"),n=!0,c()})),u.on("timeout",u.end.bind(u)),u.on("error",(e=>{ca("connection error",e),n=!1,c()})),u.on("close",t)}(),a.shutdown=function(e){ca("shutdown called"),r.length&&o?(ca("buffer has items, waiting 100ms to empty"),o-=1,setTimeout((()=>{a.shutdown(e)}),100)):(u.removeAllListeners("close"),u.end(e))},a}(e,n)};const la=p.default,fa=Nr.exports("log4js:appenders"),da=tu,Da=eo,pa=gu,Ea=hu,ma=to,ha=new Map;ha.set("console",oo),ha.set("stdout",so),ha.set("stderr",co),ha.set("logLevelFilter",ao),ha.set("categoryFilter",lo),ha.set("noLogFilter",Do),ha.set("file",Eo),ha.set("dateFile",Yc),ha.set("fileSync",ea),ha.set("tcp",sa);const ya=new Map,Ca=(e,t)=>{fa("Loading module from ",e);try{return require(e)}catch(n){return void da.throwExceptionIf(t,"MODULE_NOT_FOUND"!==n.code,`appender "${e}" could not be loaded (error was: ${n})`)}},Fa=new Set,ga=(e,t)=>{if(ya.has(e))return ya.get(e);if(!t.appenders[e])return!1;if(Fa.has(e))throw new Error(`Dependency loop detected for appender ${e}.`);Fa.add(e),fa(`Creating appender ${e}`);const n=Aa(e,t);return Fa.delete(e),ya.set(e,n),n},Aa=(e,t)=>{const n=t.appenders[e],r=n.type.configure?n.type:((e,t)=>ha.get(e)||Ca(`./${e}`,t)||Ca(e,t)||require.main&&Ca(la.join(la.dirname(require.main.filename),e),t)||Ca(la.join(process.cwd(),e),t))(n.type,t);return da.throwExceptionIf(t,da.not(r),`appender "${e}" is not valid (type "${n.type}" could not be found)`),r.appender&&fa(`DEPRECATION: Appender ${n.type} exports an appender function.`),r.shutdown&&fa(`DEPRECATION: Appender ${n.type} exports a shutdown function.`),fa(`${e}: clustering.isMaster ? ${Da.isMaster()}`),fa(`${e}: appenderModule is ${F.default.inspect(r)}`),Da.onlyOnMaster((()=>(fa(`calling appenderModule.configure for ${e} / ${n.type}`),r.configure(ma.modifyConfig(n),Ea,(e=>ga(e,t)),pa))),(()=>{}))},va=e=>{ya.clear(),Fa.clear();const t=[];Object.values(e.categories).forEach((e=>{t.push(...e.appenders)})),Object.keys(e.appenders).forEach((n=>{(t.includes(n)||"tcp-server"===e.appenders[n].type)&&ga(n,e)}))},Sa=()=>{va({appenders:{out:{type:"stdout"}},categories:{default:{appenders:["out"],level:"trace"}}})};Sa(),da.addListener((e=>{da.throwExceptionIf(e,da.not(da.anObject(e.appenders)),'must have a property "appenders" of type object.');const t=Object.keys(e.appenders);da.throwExceptionIf(e,da.not(t.length),"must define at least one appender."),t.forEach((t=>{da.throwExceptionIf(e,da.not(e.appenders[t].type),`appender "${t}" is not valid (must be an object with property "type")`)}))})),da.addListener(va),Au.exports=ya,Au.exports.init=Sa;var wa={exports:{}};!function(e){const t=Nr.exports("log4js:categories"),n=tu,r=gu,u=Au.exports,o=new Map;function i(e,t,n){if(!1===t.inherit)return;const r=n.lastIndexOf(".");if(r<0)return;const u=n.substring(0,r);let o=e.categories[u];o||(o={inherit:!0,appenders:[]}),i(e,o,u),!e.categories[u]&&o.appenders&&o.appenders.length&&o.level&&(e.categories[u]=o),t.appenders=t.appenders||[],t.level=t.level||o.level,o.appenders.forEach((e=>{t.appenders.includes(e)||t.appenders.push(e)})),t.parent=o}function s(e){if(!e.categories)return;Object.keys(e.categories).forEach((t=>{const n=e.categories[t];i(e,n,t)}))}n.addPreProcessingListener((e=>s(e))),n.addListener((e=>{n.throwExceptionIf(e,n.not(n.anObject(e.categories)),'must have a property "categories" of type object.');const t=Object.keys(e.categories);n.throwExceptionIf(e,n.not(t.length),"must define at least one category."),t.forEach((t=>{const o=e.categories[t];n.throwExceptionIf(e,[n.not(o.appenders),n.not(o.level)],`category "${t}" is not valid (must be an object with properties "appenders" and "level")`),n.throwExceptionIf(e,n.not(Array.isArray(o.appenders)),`category "${t}" is not valid (appenders must be an array of appender names)`),n.throwExceptionIf(e,n.not(o.appenders.length),`category "${t}" is not valid (appenders must contain at least one appender name)`),Object.prototype.hasOwnProperty.call(o,"enableCallStack")&&n.throwExceptionIf(e,"boolean"!=typeof o.enableCallStack,`category "${t}" is not valid (enableCallStack must be boolean type)`),o.appenders.forEach((r=>{n.throwExceptionIf(e,n.not(u.get(r)),`category "${t}" is not valid (appender "${r}" is not defined)`)})),n.throwExceptionIf(e,n.not(r.getLevel(o.level)),`category "${t}" is not valid (level "${o.level}" not recognised; valid levels are ${r.levels.join(", ")})`)})),n.throwExceptionIf(e,n.not(e.categories.default),'must define a "default" category.')}));const c=e=>{o.clear();Object.keys(e.categories).forEach((n=>{const i=e.categories[n],s=[];i.appenders.forEach((e=>{s.push(u.get(e)),t(`Creating category ${n}`),o.set(n,{appenders:s,level:r.getLevel(i.level),enableCallStack:i.enableCallStack||!1})}))}))},a=()=>{c({categories:{default:{appenders:["out"],level:"OFF"}}})};a(),n.addListener(c);const l=e=>(t(`configForCategory: searching for config for ${e}`),o.has(e)?(t(`configForCategory: ${e} exists in config, returning it`),o.get(e)):e.indexOf(".")>0?(t(`configForCategory: ${e} has hierarchy, searching for parents`),l(e.substring(0,e.lastIndexOf(".")))):(t("configForCategory: returning config for default category"),l("default")));e.exports=o,e.exports=Object.assign(e.exports,{appendersForCategory:e=>l(e).appenders,getLevelForCategory:e=>l(e).level,setLevelForCategory:(e,n)=>{let r=o.get(e);if(t(`setLevelForCategory: found ${r} for ${e}`),!r){const n=l(e);t(`setLevelForCategory: no config found for category, found ${n} for parents of ${e}`),r={appenders:n.appenders}}r.level=n,o.set(e,r)},getEnableCallStackForCategory:e=>!0===l(e).enableCallStack,setEnableCallStackForCategory:(e,t)=>{l(e).enableCallStack=t},init:a})}(wa);const Oa=Nr.exports("log4js:logger"),ba=Hu,_a=gu,Ba=eo,Pa=wa.exports,ka=tu,xa=/at (?:(.+)\s+\()?(?:(.+?):(\d+)(?::(\d+))?|([^)]+))\)?/;function Na(e,t=4){const n=e.stack.split("\n").slice(t),r=xa.exec(n[0]);return r&&6===r.length?{functionName:r[1],fileName:r[2],lineNumber:parseInt(r[3],10),columnNumber:parseInt(r[4],10),callStack:n.join("\n")}:null}class Ia{constructor(e){if(!e)throw new Error("No category provided.");this.category=e,this.context={},this.parseCallStack=Na,Oa(`Logger created (${this.category}, ${this.level})`)}get level(){return _a.getLevel(Pa.getLevelForCategory(this.category),_a.TRACE)}set level(e){Pa.setLevelForCategory(this.category,_a.getLevel(e,this.level))}get useCallStack(){return Pa.getEnableCallStackForCategory(this.category)}set useCallStack(e){Pa.setEnableCallStackForCategory(this.category,!0===e)}log(e,...t){let n=_a.getLevel(e);n||(this._log(_a.WARN,"log4js:logger.log: invalid value for log-level as first parameter given: ",e),n=_a.INFO),this.isLevelEnabled(n)&&this._log(n,t)}isLevelEnabled(e){return this.level.isLessThanOrEqualTo(e)}_log(e,t){Oa(`sending log data (${e}) to appenders`);const n=new ba(this.category,e,t,this.context,this.useCallStack&&this.parseCallStack(new Error));Ba.send(n)}addContext(e,t){this.context[e]=t}removeContext(e){delete this.context[e]}clearContext(){this.context={}}setParseCallStackFunction(e){this.parseCallStack=e}}function Ta(e){const t=_a.getLevel(e),n=t.toString().toLowerCase().replace(/_([a-z])/g,(e=>e[1].toUpperCase())),r=n[0].toUpperCase()+n.slice(1);Ia.prototype[`is${r}Enabled`]=function(){return this.isLevelEnabled(t)},Ia.prototype[n]=function(...e){this.log(t,...e)}}_a.levels.forEach(Ta),ka.addListener((()=>{_a.levels.forEach(Ta)}));var Ra=Ia;const Ma=gu;function La(e){return e.originalUrl||e.url}function ja(e,t){for(let n=0;ne.source?e.source:e));t=new RegExp(n.join("|"))}return t}(t.nolog);return(e,i,s)=>{if(e._logging)return s();if(o&&o.test(e.originalUrl))return s();if(n.isLevelEnabled(r)||"auto"===t.level){const o=new Date,{writeHead:s}=i;e._logging=!0,i.writeHead=(e,t)=>{i.writeHead=s,i.writeHead(e,t),i.__statusCode=e,i.__headers=t||{}},i.on("finish",(()=>{i.responseTime=new Date-o,i.statusCode&&"auto"===t.level&&(r=Ma.INFO,i.statusCode>=300&&(r=Ma.WARN),i.statusCode>=400&&(r=Ma.ERROR)),r=function(e,t,n){let r=t;if(n){const t=n.find((t=>{let n=!1;return n=t.from&&t.to?e>=t.from&&e<=t.to:-1!==t.codes.indexOf(e),n}));t&&(r=Ma.getLevel(t.level,r))}return r}(i.statusCode,r,t.statusRules);const s=function(e,t,n){const r=[];return r.push({token:":url",replacement:La(e)}),r.push({token:":protocol",replacement:e.protocol}),r.push({token:":hostname",replacement:e.hostname}),r.push({token:":method",replacement:e.method}),r.push({token:":status",replacement:t.__statusCode||t.statusCode}),r.push({token:":response-time",replacement:t.responseTime}),r.push({token:":date",replacement:(new Date).toUTCString()}),r.push({token:":referrer",replacement:e.headers.referer||e.headers.referrer||""}),r.push({token:":http-version",replacement:`${e.httpVersionMajor}.${e.httpVersionMinor}`}),r.push({token:":remote-addr",replacement:e.headers["x-forwarded-for"]||e.ip||e._remoteAddress||e.socket&&(e.socket.remoteAddress||e.socket.socket&&e.socket.socket.remoteAddress)}),r.push({token:":user-agent",replacement:e.headers["user-agent"]}),r.push({token:":content-length",replacement:t.getHeader("content-length")||t.__headers&&t.__headers["Content-Length"]||"-"}),r.push({token:/:req\[([^\]]+)]/g,replacement:(t,n)=>e.headers[n.toLowerCase()]}),r.push({token:/:res\[([^\]]+)]/g,replacement:(e,n)=>t.getHeader(n.toLowerCase())||t.__headers&&t.__headers[n]}),(e=>{const t=e.concat();for(let e=0;eja(e,s)));t&&n.log(r,t)}else n.log(r,ja(u,s));t.context&&n.removeContext("res")}))}return s()}},nl=Va;let rl=!1;function ul(e){if(!rl)return;Ua("Received log event ",e);Za.appendersForCategory(e.categoryName).forEach((t=>{t(e)}))}function ol(e){rl&&il();let t=e;return"string"==typeof t&&(t=function(e){Ua(`Loading configuration from ${e}`);try{return JSON.parse(Wa.readFileSync(e,"utf8"))}catch(t){throw new Error(`Problem reading config from file "${e}". Error was ${t.message}`,t)}}(e)),Ua(`Configuration is ${t}`),Ka.configure(za(t)),el.onMessage(ul),rl=!0,sl}function il(e){Ua("Shutdown called. Disabling all log writing."),rl=!1;const t=Array.from(Xa.values());Xa.init(),Za.init();const n=t.reduceRight(((e,t)=>t.shutdown?e+1:e),0);if(0===n)return Ua("No appenders with shutdown functions found."),void 0!==e&&e();let r,u=0;function o(t){r=r||t,u+=1,Ua(`Appender shutdowns complete: ${u} / ${n}`),u>=n&&(Ua("All shutdown functions completed."),e&&e(r))}return Ua(`Found ${n} appenders with shutdown functions.`),t.filter((e=>e.shutdown)).forEach((e=>e.shutdown(o))),null}const sl={getLogger:function(e){return rl||ol(process.env.LOG4JS_CONFIG||{appenders:{out:{type:"stdout"}},categories:{default:{appenders:["out"],level:"OFF"}}}),new Qa(e||"default")},configure:ol,shutdown:il,connectLogger:tl,levels:Ya,addLayout:qa.addLayout,recording:function(){return nl}};var cl=sl,al={};Object.defineProperty(al,"__esModule",{value:!0}),al.levelMap=al.getLevel=al.setCategoriesLevel=al.getConfiguration=al.setConfiguration=void 0;const ll=cl;let fl={appenders:{debug:{type:"stdout",layout:{type:"pattern",pattern:"[%d] > hvigor %p %c %[%m%]"}},info:{type:"stdout",layout:{type:"pattern",pattern:"[%d] > hvigor %[%m%]"}},"no-pattern-info":{type:"stdout",layout:{type:"pattern",pattern:"%m"}},wrong:{type:"stderr",layout:{type:"pattern",pattern:"[%d] > hvigor %[%p: %m%]"}},"just-debug":{type:"logLevelFilter",appender:"debug",level:"debug",maxLevel:"debug"},"just-info":{type:"logLevelFilter",appender:"info",level:"info",maxLevel:"info"},"just-wrong":{type:"logLevelFilter",appender:"wrong",level:"warn",maxLevel:"error"}},categories:{default:{appenders:["just-debug","just-info","just-wrong"],level:"debug"},"no-pattern-info":{appenders:["no-pattern-info"],level:"info"}}};al.setConfiguration=e=>{fl=e};al.getConfiguration=()=>fl;let dl=ll.levels.DEBUG;al.setCategoriesLevel=(e,t)=>{dl=e;const n=fl.categories;for(const r in n)(null==t?void 0:t.includes(r))||Object.prototype.hasOwnProperty.call(n,r)&&(n[r].level=e.levelStr)};al.getLevel=()=>dl,al.levelMap=new Map([["ALL",ll.levels.ALL],["MARK",ll.levels.MARK],["TRACE",ll.levels.TRACE],["DEBUG",ll.levels.DEBUG],["INFO",ll.levels.INFO],["WARN",ll.levels.WARN],["ERROR",ll.levels.ERROR],["FATAL",ll.levels.FATAL],["OFF",ll.levels.OFF]]);var Dl=w&&w.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var u=Object.getOwnPropertyDescriptor(t,n);u&&!("get"in u?!t.__esModule:u.writable||u.configurable)||(u={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,u)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),pl=w&&w.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),El=w&&w.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&Dl(t,e,n);return pl(t,e),t};Object.defineProperty(xr,"__esModule",{value:!0}),xr.evaluateLogLevel=xr.HvigorLogger=void 0;const ml=El(cl),hl=cl,yl=El(F.default),Cl=al;class Fl{constructor(e){ml.configure((0,Cl.getConfiguration)()),this._logger=ml.getLogger(e),this._logger.level=(0,Cl.getLevel)()}static getLogger(e){return new Fl(e)}log(e,...t){this._logger.log(e,...t)}debug(e,...t){this._logger.debug(e,...t)}info(e,...t){this._logger.info(e,...t)}warn(e,...t){void 0!==e&&""!==e&&this._logger.warn(e,...t)}error(e,...t){this._logger.error(e,...t)}_printTaskExecuteInfo(e,t){this.info(`Finished :${e}... after ${t}`)}_printFailedTaskInfo(e){this.error(`Failed :${e}... `)}_printDisabledTaskInfo(e){this.info(`Disabled :${e}... `)}_printUpToDateTaskInfo(e){this.info(`UP-TO-DATE :${e}... `)}errorMessageExit(e,...t){throw new Error(yl.format(e,...t))}errorExit(e,t,...n){t&&this._logger.error(t,n),this._logger.error(e.stack)}setLevel(e,t){(0,Cl.setCategoriesLevel)(e,t),ml.shutdown(),ml.configure((0,Cl.getConfiguration)())}getLevel(){return this._logger.level}configure(e){const t=(0,Cl.getConfiguration)(),n={appenders:{...t.appenders,...e.appenders},categories:{...t.categories,...e.categories}};(0,Cl.setConfiguration)(n),ml.shutdown(),ml.configure(n)}}xr.HvigorLogger=Fl,xr.evaluateLogLevel=function(e,t){t.debug?e.setLevel(hl.levels.DEBUG):t.warn?e.setLevel(hl.levels.WARN):t.error?e.setLevel(hl.levels.ERROR):e.setLevel(hl.levels.INFO)};var gl=w&&w.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(X,"__esModule",{value:!0}),X.parseJsonText=X.parseJsonFile=void 0;const Al=Z,vl=gl(kr),Sl=gl(p.default),wl=gl(E.default),Ol=xr.HvigorLogger.getLogger("parse-json-util");var bl;!function(e){e[e.Char=0]="Char",e[e.EOF=1]="EOF",e[e.Identifier=2]="Identifier"}(bl||(bl={}));let _l,Bl,Pl,kl,xl,Nl,Il="start",Tl=[],Rl=0,Ml=1,Ll=0,jl=!1,$l="default",Hl="'",Jl=1;function Gl(e,t=!1){Bl=String(e),Il="start",Tl=[],Rl=0,Ml=1,Ll=0,kl=void 0,jl=t;do{_l=Vl(),Xl[Il]()}while("eof"!==_l.type);return kl}function Vl(){for($l="default",xl="",Hl="'",Jl=1;;){Nl=Ul();const e=zl[$l]();if(e)return e}}function Ul(){if(Bl[Rl])return String.fromCodePoint(Bl.codePointAt(Rl))}function Wl(){const e=Ul();return"\n"===e?(Ml++,Ll=0):e?Ll+=e.length:Ll++,e&&(Rl+=e.length),e}X.parseJsonFile=function(e,t=!1,n="utf-8"){const r=vl.default.readFileSync(Sl.default.resolve(e),{encoding:n});try{return Gl(r,t)}catch(t){if(t instanceof SyntaxError){const n=t.message.split("at");2===n.length&&Ol.errorMessageExit(`${n[0].trim()}${wl.default.EOL}\t at ${e}:${n[1].trim()}`)}Ol.errorMessageExit(`${e} is not in valid JSON/JSON5 format.`)}},X.parseJsonText=Gl;const zl={default(){switch(Nl){case"/":return Wl(),void($l="comment");case void 0:return Wl(),Kl("eof")}if(!Al.JudgeUtil.isIgnoreChar(Nl)&&!Al.JudgeUtil.isSpaceSeparator(Nl))return zl[Il]();Wl()},start(){$l="value"},beforePropertyName(){switch(Nl){case"$":case"_":return xl=Wl(),void($l="identifierName");case"\\":return Wl(),void($l="identifierNameStartEscape");case"}":return Kl("punctuator",Wl());case'"':case"'":return Hl=Nl,Wl(),void($l="string")}if(Al.JudgeUtil.isIdStartChar(Nl))return xl+=Wl(),void($l="identifierName");throw tf(bl.Char,Wl())},afterPropertyName(){if(":"===Nl)return Kl("punctuator",Wl());throw tf(bl.Char,Wl())},beforePropertyValue(){$l="value"},afterPropertyValue(){switch(Nl){case",":case"}":return Kl("punctuator",Wl())}throw tf(bl.Char,Wl())},beforeArrayValue(){if("]"===Nl)return Kl("punctuator",Wl());$l="value"},afterArrayValue(){switch(Nl){case",":case"]":return Kl("punctuator",Wl())}throw tf(bl.Char,Wl())},end(){throw tf(bl.Char,Wl())},comment(){switch(Nl){case"*":return Wl(),void($l="multiLineComment");case"/":return Wl(),void($l="singleLineComment")}throw tf(bl.Char,Wl())},multiLineComment(){switch(Nl){case"*":return Wl(),void($l="multiLineCommentAsterisk");case void 0:throw tf(bl.Char,Wl())}Wl()},multiLineCommentAsterisk(){switch(Nl){case"*":return void Wl();case"/":return Wl(),void($l="default");case void 0:throw tf(bl.Char,Wl())}Wl(),$l="multiLineComment"},singleLineComment(){switch(Nl){case"\n":case"\r":case"\u2028":case"\u2029":return Wl(),void($l="default");case void 0:return Wl(),Kl("eof")}Wl()},value(){switch(Nl){case"{":case"[":return Kl("punctuator",Wl());case"n":return Wl(),ql("ull"),Kl("null",null);case"t":return Wl(),ql("rue"),Kl("boolean",!0);case"f":return Wl(),ql("alse"),Kl("boolean",!1);case"-":case"+":return"-"===Wl()&&(Jl=-1),void($l="numerical");case".":case"0":case"I":case"N":return void($l="numerical");case'"':case"'":return Hl=Nl,Wl(),xl="",void($l="string")}if(void 0===Nl||!Al.JudgeUtil.isDigitWithoutZero(Nl))throw tf(bl.Char,Wl());$l="numerical"},numerical(){switch(Nl){case".":return xl=Wl(),void($l="decimalPointLeading");case"0":return xl=Wl(),void($l="zero");case"I":return Wl(),ql("nfinity"),Kl("numeric",Jl*(1/0));case"N":return Wl(),ql("aN"),Kl("numeric",NaN)}if(void 0!==Nl&&Al.JudgeUtil.isDigitWithoutZero(Nl))return xl=Wl(),void($l="decimalInteger");throw tf(bl.Char,Wl())},zero(){switch(Nl){case".":case"e":case"E":return void($l="decimal");case"x":case"X":return xl+=Wl(),void($l="hexadecimal")}return Kl("numeric",0)},decimalInteger(){switch(Nl){case".":case"e":case"E":return void($l="decimal")}if(!Al.JudgeUtil.isDigit(Nl))return Kl("numeric",Jl*Number(xl));xl+=Wl()},decimal(){switch(Nl){case".":xl+=Wl(),$l="decimalFraction";break;case"e":case"E":xl+=Wl(),$l="decimalExponent"}},decimalPointLeading(){if(Al.JudgeUtil.isDigit(Nl))return xl+=Wl(),void($l="decimalFraction");throw tf(bl.Char,Wl())},decimalFraction(){switch(Nl){case"e":case"E":return xl+=Wl(),void($l="decimalExponent")}if(!Al.JudgeUtil.isDigit(Nl))return Kl("numeric",Jl*Number(xl));xl+=Wl()},decimalExponent(){switch(Nl){case"+":case"-":return xl+=Wl(),void($l="decimalExponentSign")}if(Al.JudgeUtil.isDigit(Nl))return xl+=Wl(),void($l="decimalExponentInteger");throw tf(bl.Char,Wl())},decimalExponentSign(){if(Al.JudgeUtil.isDigit(Nl))return xl+=Wl(),void($l="decimalExponentInteger");throw tf(bl.Char,Wl())},decimalExponentInteger(){if(!Al.JudgeUtil.isDigit(Nl))return Kl("numeric",Jl*Number(xl));xl+=Wl()},hexadecimal(){if(Al.JudgeUtil.isHexDigit(Nl))return xl+=Wl(),void($l="hexadecimalInteger");throw tf(bl.Char,Wl())},hexadecimalInteger(){if(!Al.JudgeUtil.isHexDigit(Nl))return Kl("numeric",Jl*Number(xl));xl+=Wl()},identifierNameStartEscape(){if("u"!==Nl)throw tf(bl.Char,Wl());Wl();const e=Yl();switch(e){case"$":case"_":break;default:if(!Al.JudgeUtil.isIdStartChar(e))throw tf(bl.Identifier)}xl+=e,$l="identifierName"},identifierName(){switch(Nl){case"$":case"_":case"‌":case"‍":return void(xl+=Wl());case"\\":return Wl(),void($l="identifierNameEscape")}if(!Al.JudgeUtil.isIdContinueChar(Nl))return Kl("identifier",xl);xl+=Wl()},identifierNameEscape(){if("u"!==Nl)throw tf(bl.Char,Wl());Wl();const e=Yl();switch(e){case"$":case"_":case"‌":case"‍":break;default:if(!Al.JudgeUtil.isIdContinueChar(e))throw tf(bl.Identifier)}xl+=e,$l="identifierName"},string(){switch(Nl){case"\\":return Wl(),void(xl+=function(){const e=Ul(),t=function(){switch(Ul()){case"b":return Wl(),"\b";case"f":return Wl(),"\f";case"n":return Wl(),"\n";case"r":return Wl(),"\r";case"t":return Wl(),"\t";case"v":return Wl(),"\v"}return}();if(t)return t;switch(e){case"0":if(Wl(),Al.JudgeUtil.isDigit(Ul()))throw tf(bl.Char,Wl());return"\0";case"x":return Wl(),function(){let e="",t=Ul();if(!Al.JudgeUtil.isHexDigit(t))throw tf(bl.Char,Wl());if(e+=Wl(),t=Ul(),!Al.JudgeUtil.isHexDigit(t))throw tf(bl.Char,Wl());return e+=Wl(),String.fromCodePoint(parseInt(e,16))}();case"u":return Wl(),Yl();case"\n":case"\u2028":case"\u2029":return Wl(),"";case"\r":return Wl(),"\n"===Ul()&&Wl(),""}if(void 0===e||Al.JudgeUtil.isDigitWithoutZero(e))throw tf(bl.Char,Wl());return Wl()}());case'"':case"'":if(Nl===Hl){const e=Kl("string",xl);return Wl(),e}return void(xl+=Wl());case"\n":case"\r":case void 0:throw tf(bl.Char,Wl());case"\u2028":case"\u2029":!function(e){Ol.warn(`JSON5: '${ef(e)}' in strings is not valid ECMAScript; consider escaping.`)}(Nl)}xl+=Wl()}};function Kl(e,t){return{type:e,value:t,line:Ml,column:Ll}}function ql(e){for(const t of e){if(Ul()!==t)throw tf(bl.Char,Wl());Wl()}}function Yl(){let e="",t=4;for(;t-- >0;){const t=Ul();if(!Al.JudgeUtil.isHexDigit(t))throw tf(bl.Char,Wl());e+=Wl()}return String.fromCodePoint(parseInt(e,16))}const Xl={start(){if("eof"===_l.type)throw tf(bl.EOF);Zl()},beforePropertyName(){switch(_l.type){case"identifier":case"string":return Pl=_l.value,void(Il="afterPropertyName");case"punctuator":return void Ql();case"eof":throw tf(bl.EOF)}},afterPropertyName(){if("eof"===_l.type)throw tf(bl.EOF);Il="beforePropertyValue"},beforePropertyValue(){if("eof"===_l.type)throw tf(bl.EOF);Zl()},afterPropertyValue(){if("eof"===_l.type)throw tf(bl.EOF);switch(_l.value){case",":return void(Il="beforePropertyName");case"}":Ql()}},beforeArrayValue(){if("eof"===_l.type)throw tf(bl.EOF);"punctuator"!==_l.type||"]"!==_l.value?Zl():Ql()},afterArrayValue(){if("eof"===_l.type)throw tf(bl.EOF);switch(_l.value){case",":return void(Il="beforeArrayValue");case"]":Ql()}},end(){}};function Zl(){const e=function(){let e;switch(_l.type){case"punctuator":switch(_l.value){case"{":e={};break;case"[":e=[]}break;case"null":case"boolean":case"numeric":case"string":e=_l.value}return e}();if(jl&&"object"==typeof e&&(e._line=Ml,e._column=Ll),void 0===kl)kl=e;else{const t=Tl[Tl.length-1];Array.isArray(t)?jl&&"object"!=typeof e?t.push({value:e,_line:Ml,_column:Ll}):t.push(e):t[Pl]=jl&&"object"!=typeof e?{value:e,_line:Ml,_column:Ll}:e}!function(e){if(e&&"object"==typeof e)Tl.push(e),Il=Array.isArray(e)?"beforeArrayValue":"beforePropertyName";else{const e=Tl[Tl.length-1];Il=e?Array.isArray(e)?"afterArrayValue":"afterPropertyValue":"end"}}(e)}function Ql(){Tl.pop();const e=Tl[Tl.length-1];Il=e?Array.isArray(e)?"afterArrayValue":"afterPropertyValue":"end"}function ef(e){const t={"'":"\\'",'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\v":"\\v","\0":"\\0","\u2028":"\\u2028","\u2029":"\\u2029"};if(t[e])return t[e];if(e<" "){const t=e.charCodeAt(0).toString(16);return`\\x${`00${t}`.substring(t.length)}`}return e}function tf(e,t){let n="";switch(e){case bl.Char:n=void 0===t?`JSON5: invalid end of input at ${Ml}:${Ll}`:`JSON5: invalid character '${ef(t)}' at ${Ml}:${Ll}`;break;case bl.EOF:n=`JSON5: invalid end of input at ${Ml}:${Ll}`;break;case bl.Identifier:Ll-=5,n=`JSON5: invalid identifier character at ${Ml}:${Ll}`}const r=new nf(n);return r.lineNumber=Ml,r.columnNumber=Ll,r}class nf extends SyntaxError{}var rf=w&&w.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var u=Object.getOwnPropertyDescriptor(t,n);u&&!("get"in u?!t.__esModule:u.writable||u.configurable)||(u={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,u)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),uf=w&&w.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),of=w&&w.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&rf(t,e,n);return uf(t,e),t};Object.defineProperty(Y,"__esModule",{value:!0});var sf=Y.cleanWorkSpace=Ff=Y.executeInstallHvigor=yf=Y.isHvigorInstalled=mf=Y.isAllDependenciesInstalled=void 0;const cf=of(D.default),af=of(p.default),lf=b,ff=j,df=$,Df=X;let pf,Ef;var mf=Y.isAllDependenciesInstalled=function(){function e(e){const t=null==e?void 0:e.dependencies;return void 0===t?0:Object.getOwnPropertyNames(t).length}if(pf=gf(),Ef=Af(),e(pf)+1!==e(Ef))return!1;for(const e in null==pf?void 0:pf.dependencies)if(!(0,ff.hasNpmPackInPaths)(e,[lf.HVIGOR_PROJECT_DEPENDENCIES_HOME])||!hf(e,pf,Ef))return!1;return!0};function hf(e,t,n){return void 0!==n.dependencies&&(0,ff.offlinePluginConversion)(lf.HVIGOR_PROJECT_ROOT_DIR,t.dependencies[e])===n.dependencies[e]}var yf=Y.isHvigorInstalled=function(){return pf=gf(),Ef=Af(),(0,ff.hasNpmPackInPaths)(lf.HVIGOR_ENGINE_PACKAGE_NAME,[lf.HVIGOR_PROJECT_DEPENDENCIES_HOME])&&(0,ff.offlinePluginConversion)(lf.HVIGOR_PROJECT_ROOT_DIR,pf.hvigorVersion)===Ef.dependencies[lf.HVIGOR_ENGINE_PACKAGE_NAME]};const Cf={cwd:lf.HVIGOR_PROJECT_DEPENDENCIES_HOME,stdio:["inherit","inherit","inherit"]};var Ff=Y.executeInstallHvigor=function(){(0,df.logInfoPrintConsole)("Hvigor installing...");const e={dependencies:{}};e.dependencies[lf.HVIGOR_ENGINE_PACKAGE_NAME]=(0,ff.offlinePluginConversion)(lf.HVIGOR_PROJECT_ROOT_DIR,pf.hvigorVersion);try{cf.mkdirSync(lf.HVIGOR_PROJECT_DEPENDENCIES_HOME,{recursive:!0});const t=af.resolve(lf.HVIGOR_PROJECT_DEPENDENCIES_HOME,lf.DEFAULT_PACKAGE_JSON);cf.writeFileSync(t,JSON.stringify(e))}catch(e){(0,df.logErrorAndExit)(e)}!function(){const e=["config","set","store-dir",lf.HVIGOR_PNPM_STORE_PATH];(0,ff.executeCommand)(lf.HVIGOR_WRAPPER_PNPM_SCRIPT_PATH,e,Cf)}(),(0,ff.executeCommand)(lf.HVIGOR_WRAPPER_PNPM_SCRIPT_PATH,["install"],Cf)};function gf(){const e=af.resolve(lf.HVIGOR_PROJECT_WRAPPER_HOME,lf.DEFAULT_HVIGOR_CONFIG_JSON_FILE_NAME);return cf.existsSync(e)||(0,df.logErrorAndExit)(`Error: Hvigor config file ${e} does not exist.`),(0,Df.parseJsonFile)(e)}function Af(){return cf.existsSync(lf.HVIGOR_PROJECT_DEPENDENCY_PACKAGE_JSON_PATH)?(0,Df.parseJsonFile)(lf.HVIGOR_PROJECT_DEPENDENCY_PACKAGE_JSON_PATH):{dependencies:{}}}sf=Y.cleanWorkSpace=function(){if((0,df.logInfoPrintConsole)("Hvigor cleaning..."),!cf.existsSync(lf.HVIGOR_PROJECT_DEPENDENCIES_HOME))return;const e=cf.readdirSync(lf.HVIGOR_PROJECT_DEPENDENCIES_HOME);if(e&&0!==e.length){cf.existsSync(lf.HVIGOR_BOOT_JS_FILE_PATH)&&(0,ff.executeCommand)(process.argv[0],[lf.HVIGOR_BOOT_JS_FILE_PATH,"--stop-daemon"],{});try{e.forEach((e=>{cf.rmSync(af.resolve(lf.HVIGOR_PROJECT_DEPENDENCIES_HOME,e),{recursive:!0})}))}catch(e){(0,df.logErrorAndExit)(`The hvigor build tool cannot be installed. Please manually clear the workspace directory and synchronize the project again.\n\n Workspace Path: ${lf.HVIGOR_PROJECT_DEPENDENCIES_HOME}.`)}}};var vf={},Sf=w&&w.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var u=Object.getOwnPropertyDescriptor(t,n);u&&!("get"in u?!t.__esModule:u.writable||u.configurable)||(u={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,u)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),wf=w&&w.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Of=w&&w.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&Sf(t,e,n);return wf(t,e),t};Object.defineProperty(vf,"__esModule",{value:!0});var bf=vf.executeBuild=void 0;const _f=b,Bf=Of(D.default),Pf=Of(p.default),kf=$;bf=vf.executeBuild=function(){const e=Pf.resolve(_f.HVIGOR_PROJECT_DEPENDENCIES_HOME,"node_modules","@ohos","hvigor","bin","hvigor.js");try{const t=Bf.realpathSync(e);require(t)}catch(t){(0,kf.logErrorAndExit)(`Error: ENOENT: no such file ${e},delete ${_f.HVIGOR_PROJECT_DEPENDENCIES_HOME} and retry.`)}},function(){if(O.checkNpmConifg(),O.environmentHandler(),O.isPnpmAvailable()||O.executeInstallPnpm(),yf()&&mf())bf();else{sf();try{Ff()}catch(e){return void sf()}bf()}}(); \ No newline at end of file diff --git a/HarmonyOS_NEXT/Media/VideoPlay/hvigorfile.ts b/HarmonyOS_NEXT/Media/VideoPlay/hvigorfile.ts new file mode 100644 index 0000000000000000000000000000000000000000..6478186902c0c1ad7c966a929c7d6b7d8ae7a9f3 --- /dev/null +++ b/HarmonyOS_NEXT/Media/VideoPlay/hvigorfile.ts @@ -0,0 +1,2 @@ +// Script for compiling build behavior. It is built in the build plug-in and cannot be modified currently. +export { appTasks } from '@ohos/hvigor-ohos-plugin'; \ No newline at end of file diff --git a/HarmonyOS_NEXT/Media/VideoPlay/hvigorw b/HarmonyOS_NEXT/Media/VideoPlay/hvigorw new file mode 100644 index 0000000000000000000000000000000000000000..e23d4ba499a273ff9ee504298746ac2e98d3b390 --- /dev/null +++ b/HarmonyOS_NEXT/Media/VideoPlay/hvigorw @@ -0,0 +1,63 @@ +#!/bin/bash + +# ---------------------------------------------------------------------------- +# Copyright (c) 2023 Hunan OpenValley Digital Industry Development Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Hvigor startup script, version 1.0.0 +# +# Required ENV vars: +# ------------------ +# NODE_HOME - location of a Node home dir +# or +# Add /usr/local/nodejs/bin to the PATH environment variable +# ---------------------------------------------------------------------------- + +HVIGOR_APP_HOME=$(dirname $(readlink -f $0)) +HVIGOR_WRAPPER_SCRIPT=${HVIGOR_APP_HOME}/hvigor/hvigor-wrapper.js +warn() { + echo "" + echo -e "\033[1;33m`date '+[%Y-%m-%d %H:%M:%S]'`$@\033[0m" +} + +error() { + echo "" + echo -e "\033[1;31m`date '+[%Y-%m-%d %H:%M:%S]'`$@\033[0m" +} + +fail() { + error "$@" + exit 1 +} + +# Determine node to start hvigor wrapper script +if [ -n "${NODE_HOME}" ];then + EXECUTABLE_NODE="${NODE_HOME}/bin/node" + if [ ! -x "$EXECUTABLE_NODE" ];then + fail "ERROR: NODE_HOME is set to an invalid directory,check $NODE_HOME\n\nPlease set NODE_HOME in your environment to the location where your nodejs installed" + fi +else + EXECUTABLE_NODE="node" + which ${EXECUTABLE_NODE} > /dev/null 2>&1 || fail "ERROR: NODE_HOME is not set and not 'node' command found in your path" +fi + +# Check hvigor wrapper script +if [ ! -r "$HVIGOR_WRAPPER_SCRIPT" ];then + fail "ERROR: Couldn't find hvigor/hvigor-wrapper.js in ${HVIGOR_APP_HOME}" +fi + +# start hvigor-wrapper script +exec "${EXECUTABLE_NODE}" \ + "${HVIGOR_WRAPPER_SCRIPT}" "$@" diff --git a/HarmonyOS_NEXT/Media/VideoPlay/hvigorw.bat b/HarmonyOS_NEXT/Media/VideoPlay/hvigorw.bat new file mode 100644 index 0000000000000000000000000000000000000000..0a51c82d20fd312da6164f5fce35e9d45ef65e22 --- /dev/null +++ b/HarmonyOS_NEXT/Media/VideoPlay/hvigorw.bat @@ -0,0 +1,71 @@ +:: Copyright (c) 2023 Hunan OpenValley Digital Industry Development Co., Ltd. +:: Licensed under the Apache License, Version 2.0 (the "License"); +:: you may not use this file except in compliance with the License. +:: You may obtain a copy of the License at +:: +:: http://www.apache.org/licenses/LICENSE-2.0 +:: +:: Unless required by applicable law or agreed to in writing, software +:: distributed under the License is distributed on an "AS IS" BASIS, +:: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +:: See the License for the specific language governing permissions and +:: limitations under the License. + +@echo off +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Hvigor startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +set WRAPPER_MODULE_PATH=%APP_HOME%\hvigor\hvigor-wrapper.js +set NODE_EXE=node.exe + +goto start + +:start +@rem Find node.exe +if defined NODE_HOME goto findNodeFromNodeHome + +%NODE_EXE% --version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: NODE_HOME is not set and no 'node' command could be found in your PATH. +echo. +echo Please set the NODE_HOME variable in your environment to match the +echo location of your NodeJs installation. + +goto fail + +:findNodeFromNodeHome +set NODE_HOME=%NODE_HOME:"=% +set NODE_EXE_PATH=%NODE_HOME%/%NODE_EXE% + +if exist "%NODE_EXE_PATH%" goto execute +echo. +echo ERROR: NODE_HOME is not set and no 'node' command could be found in your PATH. +echo. +echo Please set the NODE_HOME variable in your environment to match the +echo location of your NodeJs installation. + +goto fail + +:execute +@rem Execute hvigor +"%NODE_EXE%" %WRAPPER_MODULE_PATH% %* + +:fail +exit /b 1 diff --git a/HarmonyOS_NEXT/Media/VideoPlay/oh-package.json5 b/HarmonyOS_NEXT/Media/VideoPlay/oh-package.json5 new file mode 100644 index 0000000000000000000000000000000000000000..828bb59c3116a48337a7fb1f0c9652adc4784b89 --- /dev/null +++ b/HarmonyOS_NEXT/Media/VideoPlay/oh-package.json5 @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +{ + "license": "ISC", + "devDependencies": { + "@ohos/hypium": "1.0.6" + }, + "name": "myvideo", + "description": "example description", + "repository": {}, + "version": "1.0.0", + "dependencies": {} +} diff --git "a/HarmonyOS_NEXT/Media/VideoPlay/screenshots/devices/\345\200\215\351\200\237\345\274\271\347\252\227.png" "b/HarmonyOS_NEXT/Media/VideoPlay/screenshots/devices/\345\200\215\351\200\237\345\274\271\347\252\227.png" new file mode 100644 index 0000000000000000000000000000000000000000..c32daac8de11585f5b1d82f7b778186f5d68af54 Binary files /dev/null and "b/HarmonyOS_NEXT/Media/VideoPlay/screenshots/devices/\345\200\215\351\200\237\345\274\271\347\252\227.png" differ diff --git "a/HarmonyOS_NEXT/Media/VideoPlay/screenshots/devices/\346\213\226\345\212\250\346\273\221\345\212\250\346\235\241.png" "b/HarmonyOS_NEXT/Media/VideoPlay/screenshots/devices/\346\213\226\345\212\250\346\273\221\345\212\250\346\235\241.png" new file mode 100644 index 0000000000000000000000000000000000000000..03f5f1b31a8d826e56a28f1c863d60e6754b6ab9 Binary files /dev/null and "b/HarmonyOS_NEXT/Media/VideoPlay/screenshots/devices/\346\213\226\345\212\250\346\273\221\345\212\250\346\235\241.png" differ diff --git "a/HarmonyOS_NEXT/Media/VideoPlay/screenshots/devices/\346\222\255\346\224\276.png" "b/HarmonyOS_NEXT/Media/VideoPlay/screenshots/devices/\346\222\255\346\224\276.png" new file mode 100644 index 0000000000000000000000000000000000000000..5a9085bcedbc40dffb2250a61c2bfa926b0c5187 Binary files /dev/null and "b/HarmonyOS_NEXT/Media/VideoPlay/screenshots/devices/\346\222\255\346\224\276.png" differ diff --git "a/HarmonyOS_NEXT/Media/VideoPlay/screenshots/devices/\346\232\202\345\201\234.png" "b/HarmonyOS_NEXT/Media/VideoPlay/screenshots/devices/\346\232\202\345\201\234.png" new file mode 100644 index 0000000000000000000000000000000000000000..aead89ca7f480d2f17158394fa0ccf3005ee3928 Binary files /dev/null and "b/HarmonyOS_NEXT/Media/VideoPlay/screenshots/devices/\346\232\202\345\201\234.png" differ diff --git "a/HarmonyOS_NEXT/Media/VideoPlay/screenshots/devices/\350\247\206\351\242\221\345\210\227\350\241\250.png" "b/HarmonyOS_NEXT/Media/VideoPlay/screenshots/devices/\350\247\206\351\242\221\345\210\227\350\241\250.png" new file mode 100644 index 0000000000000000000000000000000000000000..fc73d1080254b74490f8a4df4f6b36c59d47c579 Binary files /dev/null and "b/HarmonyOS_NEXT/Media/VideoPlay/screenshots/devices/\350\247\206\351\242\221\345\210\227\350\241\250.png" differ diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/.gitignore b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..c681ec15316bd5e9ef9207fbf0720d6200802d95 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/.gitignore @@ -0,0 +1,9 @@ +/node_modules +/local.properties +/.idea +**/build +/.hvigor +/package-lock.json +/entry/package-lock.json +/oh_modules +**/oh_modules \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/AppScope/app.json5 b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/AppScope/app.json5 new file mode 100644 index 0000000000000000000000000000000000000000..5040a511f9328876976973e00df2f61ac3ffe588 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/AppScope/app.json5 @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "app": { + "bundleName": "ohos.samples.AdaptiveCapabilities", + "vendor": "samples", + "versionCode": 1000000, + "versionName": "1.0.0", + "icon": "$media:app_icon", + "label": "$string:app_name", + "distributedNotificationEnabled": true + } +} diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/AppScope/resources/base/element/string.json b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/AppScope/resources/base/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..a06d94441c235c9d58d50cd0de3bc0e2bec942af --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/AppScope/resources/base/element/string.json @@ -0,0 +1,8 @@ +{ + "string": [ + { + "name": "app_name", + "value": "AdaptiveCapabilities" + } + ] +} diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/AppScope/resources/base/media/app_icon.png b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/AppScope/resources/base/media/app_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ce307a8827bd75456441ceb57d530e4c8d45d36c Binary files /dev/null and b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/AppScope/resources/base/media/app_icon.png differ diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/build-profile.json5 b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/build-profile.json5 new file mode 100644 index 0000000000000000000000000000000000000000..ca8b60d74a870d21f8abafde0d74044fb06f01d6 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/build-profile.json5 @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "app": { + "signingConfigs": [], + "products": [ + { + "name": "default", + "signingConfig": "default", + "compileSdkVersion": "4.0.0(10)", + "compatibleSdkVersion": "4.0.0(10)", + "runtimeOS": "HarmonyOS", + } + ], + "buildModeSet": [ + { + "name": "debug", + }, + { + "name": "release" + } + ] + }, + "modules": [ + { + "name": "entry", + "srcPath": "./entry", + "targets": [ + { + "name": "default", + "applyToProducts": [ + "default" + ] + } + ] + } + ] +} diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/build-profile.json5 b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/build-profile.json5 new file mode 100644 index 0000000000000000000000000000000000000000..5022f93b6d0673db0a31d252a3fc89d5bfd86022 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/build-profile.json5 @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "apiType": 'stageMode', + "buildOption": { + }, + "targets": [ + { + "name": "default", + }, + { + "name": "ohosTest", + } + ] +} diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/hvigorfile.ts b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/hvigorfile.ts new file mode 100644 index 0000000000000000000000000000000000000000..c6edcd90486dd5a853cf7d34c8647f08414ca7a3 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/hvigorfile.ts @@ -0,0 +1,6 @@ +import { hapTasks } from '@ohos/hvigor-ohos-plugin'; + +export default { + system: hapTasks, /* Built-in plugin of Hvigor. It cannot be modified. */ + plugins:[] /* Custom plugin to extend the functionality of Hvigor. */ +} diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/oh-package.json5 b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/oh-package.json5 new file mode 100644 index 0000000000000000000000000000000000000000..d7388674afaf25264249e5792b6682f5d7b2eca7 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/oh-package.json5 @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "license": "ISC", + "devDependencies": {}, + "name": "entry", + "description": "example description", + "repository": {}, + "version": "1.0.0", + "dependencies": {} +} diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/common/BreakpointSystem.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/common/BreakpointSystem.ets new file mode 100644 index 0000000000000000000000000000000000000000..5d180d0398130ead018b3d7edf4b7433500340bb --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/common/BreakpointSystem.ets @@ -0,0 +1,108 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import mediaQuery from '@ohos.mediaquery' + +export class BreakPointTypeOptionEntity implements BreakPointTypeOption{ + xs?: T + sm?: T + md?: T + lg?: T + xl?: T + xxl?: T +} + +declare interface BreakPointTypeOption { + xs?: T + sm?: T + md?: T + lg?: T + xl?: T + xxl?: T +} + +export class BreakPointType { + options: BreakPointTypeOption; + + constructor(option: BreakPointTypeOption) { + this.options = option; + } + + getValue(currentBreakPoint: string) :T{ + if (currentBreakPoint === 'xs') { + return this.options.xs as T; + } else if (currentBreakPoint === 'sm') { + return this.options.sm as T; + } else if (currentBreakPoint === 'md') { + return this.options.md as T; + } else if (currentBreakPoint === 'lg') { + return this.options.lg as T; + } else if (currentBreakPoint === 'xl') { + return this.options.xl as T; + } else if (currentBreakPoint === 'xxl') { + return this.options.xxl as T; + } else { + return this.options.xs as T; + } + } +} + +class BreakpointEntity { + name: string = ''; + size: number = 0; + mediaQueryListener?: mediaQuery.MediaQueryListener; +} + +export class BreakpointSystem { + private currentBreakpoint: string = 'md'; + private breakpoints: BreakpointEntity[] = [ + { name: 'xs', size: 0 }, { name: 'sm', size: 320 }, + { name: 'md', size: 600 }, { name: 'lg', size: 840 } + ] + + private updateCurrentBreakpoint(breakpoint: string) { + if (this.currentBreakpoint !== breakpoint) { + this.currentBreakpoint = breakpoint; + AppStorage.Set('currentBreakpoint', this.currentBreakpoint); + console.log('on current breakpoint: ' + this.currentBreakpoint); + } + } + + public register() { + this.breakpoints.forEach((breakpoint: BreakpointEntity, index) => { + let condition :string = ''; + if (index === this.breakpoints.length - 1) { + condition = '(' + breakpoint.size + 'vp<=width' + ')'; + } else { + condition = '(' + breakpoint.size + 'vp<=width<' + this.breakpoints[index + 1].size + 'vp)'; + } + console.log(condition); + breakpoint.mediaQueryListener = mediaQuery.matchMediaSync(condition); + breakpoint.mediaQueryListener.on('change', (mediaQueryResult) => { + if (mediaQueryResult.matches) { + this.updateCurrentBreakpoint(breakpoint.name); + } + }) + }) + } + + public unregister() { + this.breakpoints.forEach((breakpoint: BreakpointEntity) => { + if(breakpoint != undefined && breakpoint.mediaQueryListener !=undefined){ + breakpoint.mediaQueryListener.off('change'); + } + }) + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/common/ColorEntity.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/common/ColorEntity.ets new file mode 100644 index 0000000000000000000000000000000000000000..1003757c682bbc8c56493d95b27a16764ca0a3fc --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/common/ColorEntity.ets @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export class ColorArr{ + index:number=0; + color:Resource|Color=0; +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/common/DirectoryList.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/common/DirectoryList.ets new file mode 100644 index 0000000000000000000000000000000000000000..507ee3a14f425f51839a18727d58c1a82ff59a7f --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/common/DirectoryList.ets @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import router from '@ohos.router' + +class DirectoryItem { + title: Resource | string = ''; + uri: string = ''; + id: string = ''; +} + +@Component +struct DirectoryList { + private directory: DirectoryItem[]=[]; + private title?: Resource; + + build() { + Scroll() { + Column() { + Text(this.title) + .fontSize(24) + .fontWeight(FontWeight.Bold) + .height(100); + + ForEach(this.directory, (item : DirectoryItem) => { + Button(item.title) + .id(item.id) + .fontSize(20) + .width('90%') + .height(55) + .margin(12) + .backgroundColor('#007DFF') + .onClick(() => { + router.pushUrl({ + url: item.uri + }) + }); + },(item:DirectoryItem)=>JSON.stringify(item)); + } + } + .width('100%') + .padding({left: 10, right: 10, bottom: 100}); + } +} + +export { DirectoryItem, DirectoryList } \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/common/GetValueOnBreakpoint.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/common/GetValueOnBreakpoint.ets new file mode 100644 index 0000000000000000000000000000000000000000..f210a9c1cf02d38326b19cfa30c29e41fc057fd5 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/common/GetValueOnBreakpoint.ets @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import window from '@ohos.window'; + +export class Breakpoints { + xs: number = 0; + sm: number = 0; + md: number = 0; + lg: number = 0; +} + +// 全局断点接口 +export default function getValueOnBreakpoint(breakpointsLabels: string[], breakpoints: Breakpoints): string { + if (breakpointsLabels.length < 4) { + return ''; + } + let windowObj: window.Window |undefined= AppStorage.Get('windowObj'); + if(windowObj == undefined){ + return ''; + } + let windowWidthVp = px2vp(windowObj.getWindowProperties().windowRect.width); + let newBreakpoint: string = ''; + if (windowWidthVp < breakpoints.sm) { + newBreakpoint = breakpointsLabels[0]; + } else if (windowWidthVp < breakpoints.md) { + newBreakpoint = breakpointsLabels[1]; + } else if (windowWidthVp < breakpoints.lg) { + newBreakpoint = breakpointsLabels[2]; + } else { + newBreakpoint = breakpointsLabels[3]; + } + return newBreakpoint; +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/entryability/EntryAbility.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/entryability/EntryAbility.ets new file mode 100644 index 0000000000000000000000000000000000000000..d76fa1396b49d1824b1407947e99899dda1b7df8 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/entryability/EntryAbility.ets @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2022-2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import UIAbility from '@ohos.app.ability.UIAbility'; +import Logger from '../model/Logger'; +import window from '@ohos.window'; +import Want from '@ohos.app.ability.Want'; +import AbilityConstant from '@ohos.app.ability.AbilityConstant'; + +export default class EntryAbility extends UIAbility { + onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void { + Logger.info('[Sample_AdaptiveCapabilities]', 'EntryAbility onCreate') + } + + onDestroy() : void{ + Logger.info('[Sample_AdaptiveCapabilities]', 'EntryAbility onDestroy') + } + + onWindowStageCreate(windowStage: window.WindowStage): void { + // Main window is created, set main page for this ability + Logger.info('[Sample_AdaptiveCapabilities]', 'onWindowStageCreate') + + windowStage.loadContent('pages/Index', (err, data) => { + if (err.code) { + Logger.error('0x0000', 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? ''); + return; + } + Logger.info('0x0000', 'testTag', 'Succeeded in loading the content. Data: %{public}s', JSON.stringify(data) ?? ''); + }); + } + + onWindowStageDestroy(): void { + // Main window is destroyed, release UI related resources + Logger.info('[Sample_AdaptiveCapabilities]', 'onWindowStageDestroy') + } + + onForeground(): void { + // Ability has brought to foreground + Logger.info('[Sample_AdaptiveCapabilities]', 'onForeground') + } + + onBackground(): void { + // Ability has back to background + Logger.info('[Sample_AdaptiveCapabilities]', 'onBackground') + } +} diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/model/Logger.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/model/Logger.ets new file mode 100644 index 0000000000000000000000000000000000000000..aa9578235c4bcd8c9c2497505740546a986e767c --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/model/Logger.ets @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import hilog from '@ohos.hilog' + +class Logger { + private domain: number + private prefix: string + private format: string = "%{public}s, %{public}s" + + constructor(prefix: string) { + this.prefix = prefix + this.domain = 0xFF00 + } + + debug(...args: string[]) { + hilog.debug(this.domain, this.prefix, this.format, args) + } + + info(...args: string[]) { + hilog.info(this.domain, this.prefix, this.format, args) + } + + warn(...args: string[]) { + hilog.warn(this.domain, this.prefix, this.format, args) + } + + error(...args: string[]) { + hilog.error(this.domain, this.prefix, this.format, args) + } +} + +export default new Logger('[AdaptiveCapabilities]') \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/Index.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/Index.ets new file mode 100644 index 0000000000000000000000000000000000000000..8a0dd6d076b52eb501290b90a7bd336931d52332 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/Index.ets @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { DirectoryItem, DirectoryList } from '../common/DirectoryList' + +@Entry +@Component +struct Index { + private directory: DirectoryItem[] = [ + { title: $r('app.string.atomic_capability'), uri: 'pages/atomicLayoutCapability/AtomicLayoutCapabilityIndex', id:'AtomicLayoutCapabilityIndex' }, + { title: $r('app.string.responsive_layout'), uri: 'pages/responsiveLayout/ResponsiveLayoutIndex', id:'ResponsiveLayoutIndex' }, + { title: $r('app.string.typical_scenario'), uri: 'pages/typicalScene/TypicalSceneIndex', id:'TypicalSceneIndex' }, + { title: $r('app.string.resource_qualifier'), uri: 'pages/resourceQualifier/ResourceQualifier', id:'ResourceQualifier' }, + { title: $r('app.string.interaction_norm_capability'), uri: 'pages/interactionNormCapability/InteractionNormCapability', id:'InteractionNormCapability' } + ] + @State inSetValue: number = 40 + + build() { + Column() { + DirectoryList({ title: $r('app.string.home_title'), directory: this.directory }) + } + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/atomicLayoutCapability/AtomicLayoutCapabilityIndex.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/atomicLayoutCapability/AtomicLayoutCapabilityIndex.ets new file mode 100644 index 0000000000000000000000000000000000000000..0c099d251303b3acbfe3afadc8b85398887a30bd --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/atomicLayoutCapability/AtomicLayoutCapabilityIndex.ets @@ -0,0 +1,72 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { DirectoryItem, DirectoryList } from '../../common/DirectoryList' + +@Entry +@Component +struct AtomicLayoutCapabilityIndex { + private atomicLayoutCapability: DirectoryItem[] = [ + { + title: $r('app.string.flex_capability_first'), + uri: 'pages/atomicLayoutCapability/flexibleCapability/FlexibleCapability1', + id: 'FlexibleCapability1' + }, + { + title: $r('app.string.flex_capability_second'), + uri: 'pages/atomicLayoutCapability/flexibleCapability/FlexibleCapability2', + id: 'FlexibleCapability2' + }, + { title: $r('app.string.scaling_capability'), + uri: 'pages/atomicLayoutCapability/scaleCapability/ScaleCapability', + id: 'ScaleCapability' + }, + { + title: $r('app.string.hidden_capability'), + uri: 'pages/atomicLayoutCapability/hiddenCapability/HiddenCapability', + id: 'HiddenCapability' + }, + { title: $r('app.string.wrap_capability'), + uri: 'pages/atomicLayoutCapability/wrapCapability/WrapCapability', + id: 'WrapCapability' + }, + { + title: $r('app.string.equally_capability'), + uri: 'pages/atomicLayoutCapability/equipartitionCapability/EquipartitionCapability', + id: 'EquipartitionCapability' + }, + { + title: $r('app.string.percentage_capability'), + uri: 'pages/atomicLayoutCapability/proportionCapability/ProportionCapability', + id: 'ProportionCapability' + }, + { + title: $r('app.string.extension_capability_first'), + uri: 'pages/atomicLayoutCapability/extensionCapability/ExtensionCapability1', + id: 'ExtensionCapability1' + }, + { + title: $r('app.string.extension_capability_second'), + uri: 'pages/atomicLayoutCapability/extensionCapability/ExtensionCapability2', + id: 'ExtensionCapability2' + } + ] + + build() { + Column() { + DirectoryList({ title: $r('app.string.atomic_capability'), directory: this.atomicLayoutCapability }) + } + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/atomicLayoutCapability/equipartitionCapability/EquipartitionCapability.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/atomicLayoutCapability/equipartitionCapability/EquipartitionCapability.ets new file mode 100644 index 0000000000000000000000000000000000000000..e1ff4afcb0fc1867a51bf791eccbd89c64e71c39 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/atomicLayoutCapability/equipartitionCapability/EquipartitionCapability.ets @@ -0,0 +1,79 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +@Entry +@Component +struct EquipartitionCapability { + private list: number [] = [0, 1, 2, 3] + @State rate: number = 0.6 + + @Builder slider() { + Slider({ value: this.rate * 100, min: 30, max: 60 }) + .blockColor(Color.White) + .width('60%') + .height(50) + .onChange((value: number) => { + this.rate = value / 100 + }) + .position({ x: '20%', y: '80%' }) + } + + @Builder Item() { + Column() { + Image($r('app.media.icon')) + .width(48) + .height(48) + .margin(({ top: 8 })) + Text($r('app.string.show_app_name')) + .width(64) + .height(30) + .lineHeight(15) + .fontSize(12) + .textAlign(TextAlign.Center) + .margin({ top: 8 }) + .padding({ bottom: 15 }) + }.width(80).height(102) + } + + build() { + Row() { + Column() { + Flex({ justifyContent: FlexAlign.SpaceEvenly }) { + ForEach(this.list, () => { + this.Item() + }) + } + + Flex({ justifyContent: FlexAlign.SpaceEvenly }) { + ForEach(this.list, () => { + this.Item() + }) + } + } + .width(this.rate * 100 + '%') + .height(222) + .padding({ top: 16 }) + .backgroundColor('#FFFFFF') + .borderRadius(16) + + this.slider() + } + .width('100%') + .height('100%') + .backgroundColor('#F1F3F5') + .alignItems(VerticalAlign.Center) + .justifyContent(FlexAlign.Center) + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/atomicLayoutCapability/extensionCapability/ExtensionCapability1.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/atomicLayoutCapability/extensionCapability/ExtensionCapability1.ets new file mode 100644 index 0000000000000000000000000000000000000000..5c504696a764cf9cd0b5ea555d2d2e4be3e84ace --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/atomicLayoutCapability/extensionCapability/ExtensionCapability1.ets @@ -0,0 +1,70 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +@Entry +@Component +struct ExtensionCapability1 { + @State rate: number = 0.60 + private appList: number [] = [0, 1, 2, 3, 4, 5, 6, 7] + + @Builder slider() { + Slider({ value: this.rate * 100, min: 8, max: 60 }) + .blockColor(Color.White) + .width('60%') + .height(50) + .onChange((value: number) => { + this.rate = value / 100 + }) + .position({ x: '20%', y: '80%' }) + } + + build() { + Row() { + // implement extension capability through Scroll and Row(or Column) Components. + Scroll() { + Row({ space: 10 }) { + ForEach(this.appList, () => { + Column() { + Image($r('app.media.icon')) + .width(48) + .height(48) + .margin({ top: 8 }) + Text($r('app.string.show_app_name')) + .width(64) + .height(30) + .lineHeight(15) + .fontSize(12) + .textAlign(TextAlign.Center) + .margin({ top: 8 }) + .padding({ bottom: 15 }) + }.width(80).height(102) + }) + } + .padding({ top: 16, left: 10 }) + .height(118) + .borderRadius(16) + .backgroundColor(Color.White) + } + .scrollable(ScrollDirection.Horizontal) + .width(this.rate * 100 + '%') + + this.slider() + } + .width('100%') + .height('100%') + .alignItems(VerticalAlign.Center) + .justifyContent(FlexAlign.Center) + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/atomicLayoutCapability/extensionCapability/ExtensionCapability2.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/atomicLayoutCapability/extensionCapability/ExtensionCapability2.ets new file mode 100644 index 0000000000000000000000000000000000000000..60ef1babcf832255b9b8e1e157285dd8b3a4684d --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/atomicLayoutCapability/extensionCapability/ExtensionCapability2.ets @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +@Entry +@Component +struct ExtensionCapability2 { + @State rate: number = 0.60 + private appList: number [] = [0, 1, 2, 3, 4, 5, 6, 7] + + @Builder slider() { + Slider({ value: this.rate * 100, min: 8, max: 60 }) + .blockColor(Color.White) + .width('60%') + .height(50) + .onChange((value: number) => { + this.rate = value / 100 + }) + .position({ x: '20%', y: '80%' }) + } + + build() { + Row() { + Row({ space: 10 }) { + // implement extension capability through List component. + List({ space: 10 }) { + ForEach(this.appList, () => { + ListItem() { + Column() { + Image($r('app.media.icon')) + .width(48) + .height(48) + .margin({ top: 8 }) + Text($r('app.string.show_app_name')) + .width(64) + .height(30) + .lineHeight(15) + .fontSize(12) + .textAlign(TextAlign.Center) + .margin({ top: 8 }) + .padding({ bottom: 15 }) + }.width(80).height(102) + }.width(80).height(102) + }) + } + .padding({ top: 16, left: 10 }) + .listDirection(Axis.Horizontal) + .width('100%') + .height(118) + .borderRadius(16) + .backgroundColor(Color.White) + } + .width(this.rate * 100 + '%') + + this.slider() + } + .width('100%') + .height('100%') + .justifyContent(FlexAlign.Center) + .alignItems(VerticalAlign.Center) + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/atomicLayoutCapability/flexibleCapability/FlexibleCapability1.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/atomicLayoutCapability/flexibleCapability/FlexibleCapability1.ets new file mode 100644 index 0000000000000000000000000000000000000000..a5632f682406049ae3594e118f6e79a9e43e76fe --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/atomicLayoutCapability/flexibleCapability/FlexibleCapability1.ets @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2022-2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +@Entry +@Component +struct FlexibleCapability1 { + @State sliderWidth: number = 1000 + + @Builder slider() { + Slider({ value: this.sliderWidth, min: 300, max: 1000 }) + .blockColor(Color.White) + .width('60%') + .onChange((value: number) => { + this.sliderWidth = value + }) + .position({ x: '20%', y: '80%' }) + } + + build() { + Column() { + Flex({ justifyContent: FlexAlign.Center, alignItems: ItemAlign.Center }) { + Row() + .width(150) + .height(400) + .backgroundColor('#FFFFFF') + .flexGrow(0) + .flexShrink(1) + Image($r('app.media.illustrator')) + .width(300) + .height(400) + .objectFit(ImageFit.Contain) + .backgroundColor('#66F1CCB8') + .flexGrow(1) + .flexShrink(0) + Row() + .width(150) + .height(400) + .backgroundColor('#FFFFFF') + .flexGrow(0) + .flexShrink(1) + }.width(this.sliderWidth) + + this.slider() + } + .width('100%') + .height('100%') + .backgroundColor('#F1F3F5') + .alignItems(HorizontalAlign.Center) + .justifyContent(FlexAlign.Center) + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/atomicLayoutCapability/flexibleCapability/FlexibleCapability2.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/atomicLayoutCapability/flexibleCapability/FlexibleCapability2.ets new file mode 100644 index 0000000000000000000000000000000000000000..e19630a43019ff867f8839a6382ab7c8faf21f56 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/atomicLayoutCapability/flexibleCapability/FlexibleCapability2.ets @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +@Entry +@Component +struct FlexibleCapability2 { + @State rate: number = 0.8 + + @Builder slider() { + Slider({ value: this.rate * 100, min: 55, max: 80 }) + .blockColor(Color.White) + .width('60%') + .onChange((value: number) => { + this.rate = value / 100 + }) + .position({ x: '20%', y: '80%' }) + } + + build() { + Row() { + Row() { + Text($r('app.string.healthy_use_phone')) + .fontSize(16) + .width(135) + .height(22) + .fontWeight(FontWeight.Medium) + .lineHeight(22) + Blank() + Toggle({ type: ToggleType.Switch }) + .width(36) + .height(20) + } + .height(55) + .borderRadius(12) + .padding({ left: 13, right: 13 }) + .backgroundColor('#FFFFFF') + .width(this.rate * 100 + '%') + + this.slider() + } + .width('100%') + .height('100%') + .backgroundColor('#F1F3F5') + .alignItems(VerticalAlign.Center) + .justifyContent(FlexAlign.Center) + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/atomicLayoutCapability/hiddenCapability/HiddenCapability.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/atomicLayoutCapability/hiddenCapability/HiddenCapability.ets new file mode 100644 index 0000000000000000000000000000000000000000..efcfb2193d135f0fc5a69bd4027d6d4b688cc2e1 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/atomicLayoutCapability/hiddenCapability/HiddenCapability.ets @@ -0,0 +1,84 @@ +/* + * Copyright (c) 2022-2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +@Entry +@Component +struct HiddenCapability { + @State rate: number = 0.8 // slider宽度比例 + + @Builder slider() { + Slider({ value: this.rate * 100, min: 10, max: 80 }) + .blockColor(Color.White) + .width('60%') + .height(50) + .onChange((value: number) => { + this.rate = value / 100 + }) + .position({ x: '20%', y: '80%' }) + } + + build() { + Row() { + Row() { + Image($r('app.media.favorite')) + .width(48) + .height(48) + .objectFit(ImageFit.Contain) + .margin({ left: 12, right: 12 }) + .displayPriority(1) + + Image($r('app.media.down')) + .width(48) + .height(48) + .objectFit(ImageFit.Contain) + .margin({ left: 12, right: 12 }) + .displayPriority(2) + + Image($r('app.media.pause')) + .width(48) + .height(48) + .objectFit(ImageFit.Contain) + .margin({ left: 12, right: 12 }) + .displayPriority(3) + + Image($r('app.media.next')) + .width(48) + .height(48) + .objectFit(ImageFit.Contain) + .margin({ left: 12, right: 12 }) + .displayPriority(2) + + Image($r('app.media.list')) + .width(48) + .height(48) + .objectFit(ImageFit.Contain) + .margin({ left: 12, right: 12 }) + .displayPriority(1) + } + .width(this.rate * 100 + '%') + .height(96) + .borderRadius(16) + .backgroundColor('#FFFFFF') + .justifyContent(FlexAlign.Center) + + this.slider() + } + .width('100%') + .height('100%') + .backgroundColor('#F1F3F5') + .alignItems(VerticalAlign.Center) + .justifyContent(FlexAlign.Center) + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/atomicLayoutCapability/proportionCapability/ProportionCapability.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/atomicLayoutCapability/proportionCapability/ProportionCapability.ets new file mode 100644 index 0000000000000000000000000000000000000000..6bf9a0d650fd934d8b8f34ece0c4fedd9946b8bd --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/atomicLayoutCapability/proportionCapability/ProportionCapability.ets @@ -0,0 +1,76 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +@Entry +@Component +struct ProportionCapability { + @State rate: number = 0.5 + + @Builder slider() { + Slider({ value: 100, min: 25, max: 50 }) + .blockColor(Color.White) + .width('60%') + .height(50) + .onChange((value: number) => { + this.rate = value / 100 + }) + .position({ x: '20%', y: '80%' }) + } + + build() { + Row() { + Row() { + Column() { + Image($r('app.media.down')) + .width(48) + .height(48) + } + .height(96) + .width('33%') + .justifyContent(FlexAlign.Center) + + Column() { + Image($r("app.media.pause")) + .width(48) + .height(48) + } + .height(96) + .width('34%') + .backgroundColor('#66F1CCB8') + .justifyContent(FlexAlign.Center) + + Column() { + Image($r("app.media.next")) + .width(48) + .height(48) + } + .height(96) + .width('33%') + .justifyContent(FlexAlign.Center) + } + .width(this.rate * 100 + '%') + .height(96) + .borderRadius(16) + .backgroundColor('#FFFFFF') + + this.slider() + } + .width('100%') + .height('100%') + .backgroundColor('#F1F3F5') + .alignItems(VerticalAlign.Center) + .justifyContent(FlexAlign.Center) + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/atomicLayoutCapability/scaleCapability/ScaleCapability.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/atomicLayoutCapability/scaleCapability/ScaleCapability.ets new file mode 100644 index 0000000000000000000000000000000000000000..f2ca3bbd920eef01bbe7bf0398b579e5314302df --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/atomicLayoutCapability/scaleCapability/ScaleCapability.ets @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2022-2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +@Entry +@Component +struct ScaleCapability { + @State sliderWidth: number = 400 + @State sliderHeight: number = 400 + + @Builder slider() { + Slider({ value: this.sliderWidth, min: 100, max: 400 }) + .blockColor(Color.White) + .width('60%') + .height(50) + .onChange((value: number) => { + this.sliderWidth = value + }) + .position({ x: '20%', y: '80%' }) + Slider({ value: this.sliderHeight, min: 100, max: 400 }) + .blockColor(Color.White) + .width('60%') + .height(50) + .onChange((value: number) => { + this.sliderHeight = value + }) + .position({ x: '20%', y: '87%' }) + } + + build() { + Row() { + Row() { + Column() { + Image($r('app.media.illustrator')) + } + .width('100%') + .height('100%') + .aspectRatio(1) + .border({ width: 2, color: '#66F1CCB8' }) + } + .backgroundColor('#FFFFFF') + .height(this.sliderHeight) + .width(this.sliderWidth) + .alignItems(VerticalAlign.Center) + .justifyContent(FlexAlign.Center) + + this.slider() + } + .height('100%') + .width('100%') + .backgroundColor('#F1F3F5') + .alignItems(VerticalAlign.Center) + .justifyContent(FlexAlign.Center) + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/atomicLayoutCapability/wrapCapability/WrapCapability.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/atomicLayoutCapability/wrapCapability/WrapCapability.ets new file mode 100644 index 0000000000000000000000000000000000000000..37873e7e815cabdeb4964ef26db49cd8f41ca53d --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/atomicLayoutCapability/wrapCapability/WrapCapability.ets @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +@Entry +@Component +struct WrapCapabilitySample { + @State rate: number = 0.7 + private imageList: Resource [] = [ + $r('app.media.flexWrap1'), + $r('app.media.flexWrap2'), + $r('app.media.flexWrap3'), + $r('app.media.flexWrap4'), + $r('app.media.flexWrap5'), + $r('app.media.flexWrap6') + ] + + @Builder slider() { + Slider({ value: this.rate * 100, min: 50, max: 70 }) + .blockColor(Color.White) + .width('60%') + .height(50) + .onChange((value: number) => { + this.rate = value / 100 + }) + .position({ x: '20%', y: '87%' }) + } + + build() { + Row() { + Flex({ + alignItems: ItemAlign.Center, + justifyContent: FlexAlign.Center, + wrap: FlexWrap.Wrap + }) { + ForEach(this.imageList, (item : Resource) => { + Image(item) + .width(72) + .height(138) + .padding(10) + }) + } + .backgroundColor('#FFFFFF') + .padding(20) + .width(this.rate * 100 + '%') + .borderRadius(16) + + this.slider() + } + .width('100%') + .height('100%') + .backgroundColor('#F1F3F5') + .alignItems(VerticalAlign.Center) + .justifyContent(FlexAlign.Center) + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/gridRow/GridRowLayoutIndex.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/gridRow/GridRowLayoutIndex.ets new file mode 100644 index 0000000000000000000000000000000000000000..3d4e2279b6b755a5c043dd8e370e527575ff9448 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/gridRow/GridRowLayoutIndex.ets @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { DirectoryItem, DirectoryList } from '../../common/DirectoryList' + +@Entry +@Component +struct Index { + private directory: DirectoryItem[] = [ + { title: $r('app.string.grid_layout1'), uri: 'pages/gridRow/gridRow/GridRowSample1', id:'GridRowSample1' }, + { title: $r('app.string.grid_layout2'), uri: 'pages/gridRow/gridRow/GridRowSample2', id:'GridRowSample2' }, + { title: $r('app.string.grid_layout3'), uri: 'pages/gridRow/gridRow/GridRowSample3', id:'GridRowSample3' }, + { title: $r('app.string.grid_layout4'), uri: 'pages/gridRow/gridRow/GridRowSample4', id:'GridRowSample4' }, + { title: $r('app.string.grid_layout5'), uri: 'pages/gridRow/gridRow/GridRowSample5', id:'GridRowSample5' }, + { title: $r('app.string.grid_layout6'), uri: 'pages/gridRow/gridRow/GridRowSample6', id:'GridRowSample6' }, + { title: $r('app.string.grid_layout7'), uri: 'pages/gridRow/gridRow/GridRowSample7', id:'GridRowSample7' }, + { title: $r('app.string.grid_layout8'), uri: 'pages/gridRow/gridRow/GridRowSample8', id:'GridRowSample8' }, + { title: $r('app.string.grid_layout9'), uri: 'pages/gridRow/gridRow/GridRowSample9', id:'GridRowSample9' }, + { title: $r('app.string.grid_layout10'), uri: 'pages/gridRow/gridRow/GridRowSample10', id:'GridRowSample10' } + ] + + build() { + Column() { + DirectoryList({ title: $r('app.string.grid_layout'), directory: this.directory }) + } + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/gridRow/gridRow/GridRowSample1.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/gridRow/gridRow/GridRowSample1.ets new file mode 100644 index 0000000000000000000000000000000000000000..f455ea6469492bd3a95d66cd7f1cd9254ce9c665 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/gridRow/gridRow/GridRowSample1.ets @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +@Entry +@Preview +@Component +struct GridRowSample1 { + @State currentBreakpoint: string = 'md' + + build() { + GridRow({ breakpoints: { value: ['600vp', '700vp', '800vp', '900vp', '1000vp'] } }) { + GridCol({ + span: { + xs: 12, + sm: 12, + md: 12, + lg: 12, + xl: 12, + xxl: 12 + } + }) { + Row() { + Text(this.currentBreakpoint) + .fontSize(100) + .fontWeight(FontWeight.Bolder) + } + .width('100%') + .height('100%') + .alignItems(VerticalAlign.Center) + .justifyContent(FlexAlign.Center) + } + } + .onBreakpointChange((breakPoint: string) => { + this.currentBreakpoint = breakPoint + }) + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/gridRow/gridRow/GridRowSample10.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/gridRow/gridRow/GridRowSample10.ets new file mode 100644 index 0000000000000000000000000000000000000000..7952a3ffc1e7cc9094a7a2055a62f75c156eb363 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/gridRow/gridRow/GridRowSample10.ets @@ -0,0 +1,357 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// Radio group +const OVERALL_LEFT_CENTER_RIGHT = '1'; +const OVERALL_TOP_MIDDLE_BOTTOM = '2'; +const SINGLE_LEFT_CENTER_RIGHT = '3'; +const SINGLE_TOP_MIDDLE_BOTTOM = '4'; + +@Entry +@Component +struct GridRowSample10 { + @State col1Offset: number = 0; + @State col2Offset: number = 0; + @State col1Order: number = 0; + @State col2Order: number = 1; + @State col1Align: ItemAlign = ItemAlign.Start; + @State col2Align: ItemAlign = ItemAlign.Start; + private gridController: GridColController = new GridColController(); + private layoutColumns: number = 6; + private radioHeight: Length = '80%'; + private radioValue: string = 'RadioValue'; + + build() { + Column({ space: 5 }) { + + Column() { + GridRow({ columns: this.layoutColumns, direction: GridRowDirection.Row }) { + + // The non-rendering component support the Height attribute of GridRow + GridCol({ span: 0 }) + .height('100%') + .backgroundColor('#ccc'); + + GridCol({ span: 1, offset: this.col1Offset, order: this.col1Order }) { + Text('1') + .height('100%') + .fontSize(24); + }.height('33.3%') + .backgroundColor('#ff00ff94') + .alignSelf(this.col1Align); + + GridCol({ span: 1, offset: this.col2Offset, order: this.col2Order }) { + Text('2') + .height('100%') + .fontSize(24); + }.height('33.3%') + .backgroundColor('#ff53e8ff') + .alignSelf(this.col2Align); + }.width('100%') + .height('100%'); + }.width('100%') + .height('50%') + .border({ width: 1, color: '#ff00ffe9' }); + + Column() { + + // Radio Groups + Row() { + Text($r('app.string.Radio_GridRow_All_LCR')) + .fontSize(24) + .layoutWeight(1); + + Row() { + Radio({ value: this.radioValue, group: OVERALL_LEFT_CENTER_RIGHT }) + .height(this.radioHeight) + .id('rdo11') + .onClick(() => { + this.gridController.moveAllInHor(HorDirection.LEFT, this); + }); + Radio({ value: this.radioValue, group: OVERALL_LEFT_CENTER_RIGHT }) + .height(this.radioHeight) + .id('rdo12') + .onClick(() => { + this.gridController.moveAllInHor(HorDirection.MEDIUM, this); + }); + Radio({ value: this.radioValue, group: OVERALL_LEFT_CENTER_RIGHT }) + .height(this.radioHeight) + .id('rdo13') + .onClick(() => { + this.gridController.moveAllInHor(HorDirection.RIGHT, this) + }); + } + .layoutWeight(1) + .justifyContent(FlexAlign.End); + }.width('100%') + .height('25%') + .justifyContent(FlexAlign.SpaceAround) + .margin({ top: '1%' }); + + Row() { + Text($r('app.string.Radio_GridRow_All_TMB')) + .fontSize(24) + .layoutWeight(1); + + Row() { + Radio({ value: this.radioValue, group: OVERALL_TOP_MIDDLE_BOTTOM }) + .height(this.radioHeight) + .id('rdo21') + .onClick(() => { + this.gridController.moveAllInVer(VerDirection.TOP, this); + }); + Radio({ value: this.radioValue, group: OVERALL_TOP_MIDDLE_BOTTOM }) + .height(this.radioHeight) + .id('rdo22') + .onClick(() => { + this.gridController.moveAllInVer(VerDirection.MEDIUM, this); + }); + Radio({ value: this.radioValue, group: OVERALL_TOP_MIDDLE_BOTTOM }) + .height(this.radioHeight) + .id('rdo23') + .onClick(() => { + this.gridController.moveAllInVer(VerDirection.BOTTOM, this); + }); + } + .layoutWeight(1) + .justifyContent(FlexAlign.End); + }.width('100%') + .height('25%') + .justifyContent(FlexAlign.SpaceAround) + .margin({ top: '1%' }); + + Row() { + Text($r('app.string.Radio_GridRow_Sg_LCR')) + .fontSize(24) + .layoutWeight(1); + + Row() { + Radio({ value: this.radioValue, group: SINGLE_LEFT_CENTER_RIGHT }) + .height(this.radioHeight) + .id('rdo31') + .onClick(() => { + this.gridController.moveSecInHor(HorDirection.LEFT, this); + }); + Radio({ value: this.radioValue, group: SINGLE_LEFT_CENTER_RIGHT }) + .height(this.radioHeight) + .id('rdo32') + .onClick(() => { + this.gridController.moveSecInHor(HorDirection.MEDIUM, this); + }); + Radio({ value: this.radioValue, group: SINGLE_LEFT_CENTER_RIGHT }) + .height(this.radioHeight) + .id('rdo33') + .onClick(() => { + this.gridController.moveSecInHor(HorDirection.RIGHT, this); + }); + } + .layoutWeight(1) + .justifyContent(FlexAlign.End); + }.width('100%') + .height('25%') + .justifyContent(FlexAlign.SpaceAround) + .margin({ top: '1%' }); + + Row() { + Text($r('app.string.Radio_GridRow_Sg_TMB')) + .fontSize(24) + .layoutWeight(1); + + Row() { + Radio({ value: this.radioValue, group: SINGLE_TOP_MIDDLE_BOTTOM }) + .height(this.radioHeight) + .id('rdo41') + .onClick(() => { + this.gridController.moveSecInVer(VerDirection.TOP, this); + }); + Radio({ value: this.radioValue, group: SINGLE_TOP_MIDDLE_BOTTOM }) + .height(this.radioHeight) + .id('rdo42') + .onClick(() => { + this.gridController.moveSecInVer(VerDirection.MEDIUM, this); + }); + Radio({ value: this.radioValue, group: SINGLE_TOP_MIDDLE_BOTTOM }) + .height(this.radioHeight) + .id('rdo43') + .onClick(() => { + this.gridController.moveSecInVer(VerDirection.BOTTOM, this); + }); + } + .layoutWeight(1) + .justifyContent(FlexAlign.End); + } + .width('100%') + .height('25%') + .justifyContent(FlexAlign.SpaceAround) + .margin({ top: '1%' }); + } + .width('100%') + .height('30%') + .padding({left: 10, right: 10}); + } + .width('100%') + .height('100%') + .justifyContent(FlexAlign.Center); + } +} + +enum HorDirection { + LEFT, + MEDIUM, + RIGHT +} + +enum VerDirection { + TOP, + MEDIUM, + BOTTOM +} + +const COL1_POSITIONS = [0, 2, 4]; // The values of the first component + +class GridColController { + + moveAllInHor(pos: HorDirection, inst: GridRowSample10) { + switch (pos) { + case HorDirection.LEFT: + inst.col1Offset = COL1_POSITIONS[HorDirection.LEFT]; + break; + case HorDirection.MEDIUM: + inst.col1Offset = COL1_POSITIONS[HorDirection.MEDIUM]; + break; + default: + inst.col1Offset = COL1_POSITIONS[HorDirection.RIGHT]; + break; + } + inst.col2Offset = 0; + this.orderReset(inst); + } + + moveAllInVer(pos: VerDirection, inst: GridRowSample10) { + switch (pos) { + case VerDirection.TOP: + inst.col1Align = ItemAlign.Start; + break; + case VerDirection.MEDIUM: + inst.col1Align = ItemAlign.Center; + break; + default: + inst.col1Align = ItemAlign.End; + break; + } + inst.col2Align = inst.col1Align; + } + + moveSecInHor(pos: HorDirection, inst: GridRowSample10) { + switch (pos) { + case HorDirection.LEFT: + this.moveSecToLeft(inst); + break; + case HorDirection.MEDIUM: + this.moveSecToMedium(inst); + break; + default: // col1 in RIGHT + this.moveSecToRight(inst); + break; + } + } + + moveSecInVer(pos: VerDirection, inst: GridRowSample10) { + switch (pos) { + case VerDirection.TOP: + inst.col2Align = ItemAlign.Start; + break; + case VerDirection.MEDIUM: + inst.col2Align = ItemAlign.Center; + break; + default: + inst.col2Align = ItemAlign.End; + break; + } + } + + private orderReset(inst: GridRowSample10) { + inst.col1Order = 0; + inst.col2Order = 1; + } + + private orderRevert(inst: GridRowSample10) { + inst.col1Order = 1; + inst.col2Order = 0; + } + + private col1OffsetReset(inst: GridRowSample10) { + if (inst.col1Order > inst.col2Order) { + inst.col1Offset += inst.col2Offset + 1; + } + } + + private moveSecToLeft(inst: GridRowSample10) { + this.col1OffsetReset(inst); + switch (inst.col1Offset) { + case COL1_POSITIONS[HorDirection.LEFT]: + this.orderReset(inst); + inst.col2Offset = COL1_POSITIONS[HorDirection.LEFT] - COL1_POSITIONS[HorDirection.LEFT]; + break; + case COL1_POSITIONS[HorDirection.MEDIUM]: + this.orderRevert(inst); + inst.col2Offset = COL1_POSITIONS[HorDirection.LEFT] + 1; + inst.col1Offset = 0; + break; + default: // RIGHT + this.orderRevert(inst); + inst.col2Offset = COL1_POSITIONS[HorDirection.LEFT] + 1; + inst.col1Offset = 2; + break; + } + } + + private moveSecToMedium(inst: GridRowSample10) { + this.col1OffsetReset(inst); + switch (inst.col1Offset) { + case COL1_POSITIONS[HorDirection.LEFT]: + this.orderReset(inst); + inst.col2Offset = COL1_POSITIONS[HorDirection.MEDIUM] - COL1_POSITIONS[HorDirection.LEFT]; + break; + case COL1_POSITIONS[HorDirection.MEDIUM]: + this.orderReset(inst); + inst.col2Offset = COL1_POSITIONS[HorDirection.MEDIUM] - COL1_POSITIONS[HorDirection.MEDIUM]; + break; + default: // RIGHT + this.orderRevert(inst); + inst.col2Offset = COL1_POSITIONS[HorDirection.MEDIUM] + 1; + inst.col1Offset = 0; + break; + } + } + + private moveSecToRight(inst: GridRowSample10) { + this.col1OffsetReset(inst); + switch (inst.col1Offset) { + case COL1_POSITIONS[HorDirection.LEFT]: + this.orderReset(inst); + inst.col2Offset = COL1_POSITIONS[HorDirection.RIGHT] - COL1_POSITIONS[HorDirection.LEFT]; + break; + case COL1_POSITIONS[HorDirection.MEDIUM]: + this.orderReset(inst); + inst.col2Offset = COL1_POSITIONS[HorDirection.RIGHT] - COL1_POSITIONS[HorDirection.MEDIUM]; + break; + default: // RIGHT + this.orderReset(inst); + inst.col2Offset = COL1_POSITIONS[HorDirection.RIGHT] - COL1_POSITIONS[HorDirection.RIGHT]; + break; + } + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/gridRow/gridRow/GridRowSample2.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/gridRow/gridRow/GridRowSample2.ets new file mode 100644 index 0000000000000000000000000000000000000000..07496ed7916f17472ec65d470f02a0e25fada4c9 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/gridRow/gridRow/GridRowSample2.ets @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +@Entry +@Component +struct GridRowSample2 { + @State currentBreakpoint: string = 'md' + + build() { + SideBarContainer(SideBarContainerType.Embed) { + Column() { + } + .width('100%') + .backgroundColor('#19000000') + + GridRow({ breakpoints: { value: ['100vp', '200vp', '300vp', '400vp', '500vp'], + reference: BreakpointsReference.ComponentSize } }) { + GridCol({ + span: { + xs: 12, + sm: 12, + md: 12, + lg: 12, + xl: 12, + xxl: 12 + } + }) { + Row() { + Text(this.currentBreakpoint) + .fontSize(50) + .fontWeight(FontWeight.Bolder) + } + .width('100%') + .height('100%') + .justifyContent(FlexAlign.Center) + .alignItems(VerticalAlign.Center) + } + }.onBreakpointChange((currentBreakpoint: string) => { + this.currentBreakpoint = currentBreakpoint + }).width('100%') + } + .autoHide(false) + .sideBarWidth(100) + .minSideBarWidth(100) + .maxSideBarWidth(600) + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/gridRow/gridRow/GridRowSample3.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/gridRow/gridRow/GridRowSample3.ets new file mode 100644 index 0000000000000000000000000000000000000000..9d10b4f0b03ea8808a59b8485be27072c8490cb8 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/gridRow/gridRow/GridRowSample3.ets @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +@Entry +@Component +struct GridRowSample3 { + private bgColors: ResourceColor[] = [ + $r('sys.color.ohos_id_color_palette_aux1'), + $r('sys.color.ohos_id_color_palette_aux2'), + $r('sys.color.ohos_id_color_palette_aux3'), + $r('sys.color.ohos_id_color_palette_aux4'), + $r('sys.color.ohos_id_color_palette_aux5'), + $r('sys.color.ohos_id_color_palette_aux6') + ] + + build() { + GridRow({ columns: { sm: 4, md: 8, lg: 12 }, + gutter: { x: { sm: 8, md: 16, lg: 24 }, y: { sm: 8, md: 16, lg: 24 } } + }) { + ForEach(this.bgColors, (bgColor : ResourceColor) => { + GridCol({ span: { sm: 2, md: 2, lg: 2 } }) { + Row() + .width('100%') + .backgroundColor(bgColor) + .height(30) + } + }) + } + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/gridRow/gridRow/GridRowSample4.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/gridRow/gridRow/GridRowSample4.ets new file mode 100644 index 0000000000000000000000000000000000000000..3890ccb1d69b8afa8004d90cac554a86f45e9857 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/gridRow/gridRow/GridRowSample4.ets @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +@Entry +@Component +struct GridRowSample4 { + @State gridMargin: number = 0 + + build() { + Column() { + Row().width('100%').height(30) + + GridRow() { + GridCol({ span: { sm: 12, md: 12, lg: 12 } }) { + Row() { + Text('padding') + .fontSize(24) + .fontWeight(FontWeight.Medium) + } + .width('100%') + .height('100%') + .alignItems(VerticalAlign.Center) + .justifyContent(FlexAlign.Center) + .backgroundColor('#19000000') + } + } + .height(50) + .borderWidth(2) + .borderColor('#F1CCB8') + .padding({ left: this.gridMargin, right: this.gridMargin }) + .onBreakpointChange((currentBreakpoint: string) => { + if (currentBreakpoint === 'lg' || currentBreakpoint === 'md') { + this.gridMargin = 24 + } else { + this.gridMargin = 12 + } + }) + + Row().width('100%').height(30) + + GridRow() { + GridCol({ span: { sm: 12, md: 12, lg: 12 } }) { + Row() { + Text('margin') + .fontSize(24) + .fontWeight(FontWeight.Medium) + } + .width('100%') + .height('100%') + .alignItems(VerticalAlign.Center) + .justifyContent(FlexAlign.Center) + .backgroundColor('#19000000') + } + } + .height(50) + .borderWidth(2) + .borderColor('#F1CCB8') + .margin({ left: this.gridMargin, right: this.gridMargin }) + } + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/gridRow/gridRow/GridRowSample5.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/gridRow/gridRow/GridRowSample5.ets new file mode 100644 index 0000000000000000000000000000000000000000..ba898701a06c261f5b1c74a12500c5aabb9edc73 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/gridRow/gridRow/GridRowSample5.ets @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { ColorArr } from '../../../common/ColorEntity'; + +@Entry +@Component +struct GridRowSample5 { + private elements: ColorArr[] = [ + { index: 1, color: $r('sys.color.ohos_id_color_palette_aux1') }, + { index: 2, color: $r('sys.color.ohos_id_color_palette_aux2') }, + { index: 3, color: $r('sys.color.ohos_id_color_palette_aux3') }, + { index: 4, color: $r('sys.color.ohos_id_color_palette_aux4') }, + { index: 5, color: $r('sys.color.ohos_id_color_palette_aux5') }, + { index: 6, color: $r('sys.color.ohos_id_color_palette_aux6') } + ] + + build() { + GridRow() { + ForEach(this.elements, (item:ColorArr) => { + GridCol({ span: { sm: 6, md: item.index % 3 === 0 ? 0 : 4, lg: 3 } }) { + Row() { + Text(`${item.index}`).fontSize(24) + } + .justifyContent(FlexAlign.Center) + .backgroundColor(item.color) + .height(30) + } + }) + } + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/gridRow/gridRow/GridRowSample6.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/gridRow/gridRow/GridRowSample6.ets new file mode 100644 index 0000000000000000000000000000000000000000..744a47c7cfa7f006a26e7ad7bead415d74a2b48f --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/gridRow/gridRow/GridRowSample6.ets @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { ColorArr } from '../../../common/ColorEntity'; + +@Entry +@Component +struct GridRowSample6 { + private elements: ColorArr[] = [ + { index: 1, color: $r('sys.color.ohos_id_color_palette_aux1') }, + { index: 2, color: $r('sys.color.ohos_id_color_palette_aux2') }, + { index: 3, color: $r('sys.color.ohos_id_color_palette_aux3') }, + { index: 4, color: $r('sys.color.ohos_id_color_palette_aux4') }, + { index: 5, color: $r('sys.color.ohos_id_color_palette_aux5') }, + { index: 6, color: $r('sys.color.ohos_id_color_palette_aux6') } + ] + + build() { + GridRow() { + ForEach(this.elements, (item : ColorArr) => { + GridCol({ span: { sm: 6, md: 4, lg: 3 }, offset: { sm: 0, md: 2, lg: 1 } }) { + Row() { + Text(`${item.index}`).fontSize(24) + } + .justifyContent(FlexAlign.Center) + .backgroundColor(item.color) + .height(30) + } + }) + } + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/gridRow/gridRow/GridRowSample7.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/gridRow/gridRow/GridRowSample7.ets new file mode 100644 index 0000000000000000000000000000000000000000..d17d7fe7d69faa1244bf749c1af60407af2df237 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/gridRow/gridRow/GridRowSample7.ets @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { ColorArr } from '../../../common/ColorEntity'; + +@Entry +@Component +struct GridRowSample7 { + private elements: ColorArr[] = [ + { index: 1, color: $r('sys.color.ohos_id_color_palette_aux1') }, + { index: 2, color: $r('sys.color.ohos_id_color_palette_aux2') }, + { index: 3, color: $r('sys.color.ohos_id_color_palette_aux3') }, + { index: 4, color: $r('sys.color.ohos_id_color_palette_aux4') }, + { index: 5, color: $r('sys.color.ohos_id_color_palette_aux5') }, + { index: 6, color: $r('sys.color.ohos_id_color_palette_aux6') } + ] + + build() { + GridRow() { + ForEach(this.elements, (item: ColorArr) => { + GridCol({ span: { sm: 6, md: 4, lg: 3 }, order: { lg: (6 - item.index) } }) { + Row() { + Text(`${item.index}`).fontSize(24) + } + .justifyContent(FlexAlign.Center) + .backgroundColor(item.color) + .height(30) + } + }) + } + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/gridRow/gridRow/GridRowSample8.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/gridRow/gridRow/GridRowSample8.ets new file mode 100644 index 0000000000000000000000000000000000000000..0bf77087c5f0f9b2a412fd8f5ca0fe3d4dd0a17b --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/gridRow/gridRow/GridRowSample8.ets @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { ColorArr } from '../../../common/ColorEntity'; + +@Entry +@Component +struct GridRowSample8 { + private elements: ColorArr[] = [ + { index: 1, color: $r('sys.color.ohos_id_color_palette_aux1') }, + { index: 2, color: $r('sys.color.ohos_id_color_palette_aux2') }, + { index: 3, color: $r('sys.color.ohos_id_color_palette_aux3') }, + { index: 4, color: $r('sys.color.ohos_id_color_palette_aux4') }, + { index: 5, color: $r('sys.color.ohos_id_color_palette_aux5') }, + { index: 6, color: $r('sys.color.ohos_id_color_palette_aux6') } + ] + + build() { + GridRow() { + ForEach(this.elements, (item : ColorArr) => { + GridCol({ span: { sm: 4, lg: 3 }, offset: { sm: 2, lg: 1 }, + order: { sm: (6 - item.index), lg: item.index } }) { + Row() { + Text(`${item.index}`).fontSize(24) + } + .justifyContent(FlexAlign.Center) + .backgroundColor(item.color) + .height(30) + } + }) + } + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/gridRow/gridRow/GridRowSample9.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/gridRow/gridRow/GridRowSample9.ets new file mode 100644 index 0000000000000000000000000000000000000000..f401bfe70b59eaa75c58a4dff0a91f1552670039 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/gridRow/gridRow/GridRowSample9.ets @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { ColorArr } from '../../../common/ColorEntity'; + +@Entry +@Component +struct GridRowSample9 { + private elements: ColorArr[] = [ + { index: 1, color: $r('sys.color.ohos_id_color_palette_aux1') }, + { index: 2, color: $r('sys.color.ohos_id_color_palette_aux2') }, + { index: 3, color: $r('sys.color.ohos_id_color_palette_aux3') }, + { index: 4, color: $r('sys.color.ohos_id_color_palette_aux4') }, + { index: 5, color: $r('sys.color.ohos_id_color_palette_aux5') }, + { index: 6, color: $r('sys.color.ohos_id_color_palette_aux6') } + ] + + build() { + GridRow() { + GridCol({ span: { sm: 12, md: 10, lg: 8 }, offset: { sm: 0, md: 1, lg: 2 } }) { + GridRow() { + ForEach(this.elements, (item : ColorArr) => { + GridCol({ span: { sm: 6, md: 4, lg: 3 } }) { + Row() { + Text(`${item.index}`).fontSize(24) + } + .justifyContent(FlexAlign.Center) + .backgroundColor(item.color) + .height(30) + } + }) + } + .backgroundColor('#19000000') + .height('100%') + } + } + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/interactionNormCapability/InteractionNormCapability.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/interactionNormCapability/InteractionNormCapability.ets new file mode 100644 index 0000000000000000000000000000000000000000..2551d3ef6cafe4bd1bd4062dbb9a4930ba77a269 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/interactionNormCapability/InteractionNormCapability.ets @@ -0,0 +1,78 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { IntentionCode } from '@ohos.multimodalInput.intentionCode'; +import Logger from '../../model/Logger'; + +@Entry +@Component +struct InteractionNormCapability { + @State message: Resource = $r('app.string.interaction_norm_capability_tips'); + + build() { + Row() { + Column() { + Text(this.message) + .fontSize(50) + .focusable(true) + .fontWeight(FontWeight.Bold) + .onKeyEvent((event) => { + Logger.info(`intentionCode: ${event.intentionCode}`) + switch (event.intentionCode) { + case IntentionCode.INTENTION_UNKNOWN: + break; + case IntentionCode.INTENTION_UP: + this.message = $r('app.string.up'); + break; + case IntentionCode.INTENTION_DOWN: + this.message = $r('app.string.down'); + break; + case IntentionCode.INTENTION_LEFT: + this.message = $r('app.string.left'); + break; + case IntentionCode.INTENTION_RIGHT: + this.message = $r('app.string.right'); + break; + case IntentionCode.INTENTION_SELECT: + this.message = $r('app.string.select'); + break; + case IntentionCode.INTENTION_ESCAPE: + this.message = $r('app.string.escape'); + break; + case IntentionCode.INTENTION_BACK: + this.message = $r('app.string.back'); + break; + case IntentionCode.INTENTION_MENU: + this.message = $r('app.string.menu'); + break; + case IntentionCode.INTENTION_PAGE_UP: + this.message = $r('app.string.page_up'); + break; + case IntentionCode.INTENTION_PAGE_DOWN: + this.message = $r('app.string.page_down'); + break; + case IntentionCode.INTENTION_ZOOM_OUT: + this.message = $r('app.string.zoom_in'); + break; + case IntentionCode.INTENTION_ZOOM_IN: + this.message = $r('app.string.zoom_out'); + break; + } + }) + } + .width('100%') + } + .height('100%') + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/resourceQualifier/ResourceQualifier.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/resourceQualifier/ResourceQualifier.ets new file mode 100644 index 0000000000000000000000000000000000000000..bc174b95cdff91a89b7318843e13a19fcdf57d0c --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/resourceQualifier/ResourceQualifier.ets @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +@Entry +@Component +struct ResourceQualifier { + build() { + Column() { + Text($r('app.string.my_string')) + .fontSize(60) + .fontColor($r('app.color.my_color')) + Image($r("app.media.my_image")) + .width(100) + .height(100) + } + .height('100%') + .width('100%') + .alignItems(HorizontalAlign.Center) + .justifyContent(FlexAlign.Center) + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/responsiveLayout/ResponsiveLayoutIndex.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/responsiveLayout/ResponsiveLayoutIndex.ets new file mode 100644 index 0000000000000000000000000000000000000000..cad3274cd29020824b53e9925185a90fe4e2e899 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/responsiveLayout/ResponsiveLayoutIndex.ets @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { DirectoryItem, DirectoryList } from '../../common/DirectoryList' + +@Entry +@Component +struct ResponsiveLayoutIndex { + private responsiveLayout: DirectoryItem[] = [ + { title: $r('app.string.breakpoint'), uri: 'pages/responsiveLayout/breakpoint/BreakpointSample', id:'BreakpointSample' }, + { title: $r('app.string.media_query'), uri: 'pages/responsiveLayout/mediaQuery/MediaQuerySample', id:'MediaQuerySample' }, + { title: $r('app.string.grid_layout'), uri: 'pages/gridRow/GridRowLayoutIndex', id:'GridRowLayoutIndex' } + ] + + build() { + Column() { + DirectoryList({ title: $r('app.string.responsive_layout'), directory: this.responsiveLayout }) + } + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/responsiveLayout/breakpoint/BreakpointSample.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/responsiveLayout/breakpoint/BreakpointSample.ets new file mode 100644 index 0000000000000000000000000000000000000000..79d300e4f8c6f3b4dc429c94a60af7dc876315b8 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/responsiveLayout/breakpoint/BreakpointSample.ets @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import window from '@ohos.window' +import getValueOnBreakpoint, { Breakpoints } from '../../../common/GetValueOnBreakpoint'; + +@Entry +@Component +struct BreakpointSample { + @State currentBreakpoint: string = 'small'; + + listenOnBreakpoint(windowObj: window.Window) { + const breakpointsLabels: string[] = ['xSmall', 'small', 'medium', 'large']; + const breakpoints :Breakpoints= { xs: 0, sm: 320, md: 600, lg: 840 }; + this.currentBreakpoint = getValueOnBreakpoint(breakpointsLabels, breakpoints); + windowObj.on('windowSizeChange', () => { + this.currentBreakpoint = getValueOnBreakpoint(breakpointsLabels, breakpoints); + }); + } + + aboutToAppear() { + let windowObj: window.Window | undefined = AppStorage.Get('windowObj'); + if(windowObj != undefined){ + this.listenOnBreakpoint(windowObj); + } + } + + aboutToDisappear() { + let windowObj: window.Window | undefined= AppStorage.Get('windowObj'); + if(windowObj != undefined){ + windowObj.off('windowSizeChange'); + } + } + + build() { + Column() { + Text(this.currentBreakpoint) + .fontSize(50) + .fontWeight(FontWeight.Medium) + } + .height('100%') + .width('100%') + .justifyContent(FlexAlign.Center) + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/responsiveLayout/mediaQuery/MediaQuerySample.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/responsiveLayout/mediaQuery/MediaQuerySample.ets new file mode 100644 index 0000000000000000000000000000000000000000..a91b20538a8e0022e59c190688569f82e287dc0c --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/responsiveLayout/mediaQuery/MediaQuerySample.ets @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { BreakpointSystem, BreakPointType } from '../../../common/BreakpointSystem' + +@Entry +@Component +struct MediaQuerySample { + private breakpointSystem: BreakpointSystem = new BreakpointSystem() + @StorageProp('currentBreakpoint') currentBreakpoint: string = 'md' + + aboutToAppear() { + this.breakpointSystem.register() + } + + aboutToDisappear() { + this.breakpointSystem.unregister() + } + + build() { + Column() { + Image(new BreakPointType({ + sm: $r('app.media.sm'), + md: $r('app.media.md'), + lg: $r('app.media.lg') + }).getValue(this.currentBreakpoint)) + .height(100) + .width(100) + .objectFit(ImageFit.Contain) + + Text(this.currentBreakpoint) + .fontSize(24) + .margin(10) + } + .width('100%') + .height('100%') + .justifyContent(FlexAlign.Center) + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/typicalScene/TypicalSceneIndex.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/typicalScene/TypicalSceneIndex.ets new file mode 100644 index 0000000000000000000000000000000000000000..7371d3ab7b41feda6bd4cbaff5afde56b871dc12 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/typicalScene/TypicalSceneIndex.ets @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { DirectoryItem, DirectoryList } from '../../common/DirectoryList' + +@Entry +@Component +struct TypicalSceneIndex { + private typicalScene: Array = [ + { title: $r('app.string.diversion_layout'), uri: 'pages/typicalScene/diversion/DiversionSample', id:'DiversionSample' }, + { title: $r('app.string.repeat_layout'), uri: 'pages/typicalScene/repeat/RepeatSample', id:'RepeatSample' }, + { title: $r('app.string.indentation_layout'), uri: 'pages/typicalScene/indentation/IndentationSample', id:'IndentationSample' }, + { title: $r('app.string.header'), uri: 'pages/typicalScene/header/HeaderSample', id:'HeaderSample' }, + { title: $r('app.string.banner'), uri: 'pages/typicalScene/banner/BannerSample', id:'BannerSample' }, + { title: $r('app.string.operationEntries'), uri: 'pages/typicalScene/operationEntries/OperationEntriesSample', id:'OperationEntriesSample' }, + { title: $r('app.string.tabs'), uri: 'pages/typicalScene/tabs/TabsSample', id:'TabsSample' }, + { title: $r('app.string.bigImage'), uri: 'pages/typicalScene/bigImage/BigImageSample', id:'BigImageSample' }, + { title: $r('app.string.multiLaneList'), uri: 'pages/typicalScene/multiLaneList/MultiLaneListSample', id:'MultiLaneListSample' }, + { title: $r('app.string.grid'), uri: 'pages/typicalScene/responsiveGrid/ResponsiveGridSample', id:'ResponsiveGridSample' }, + { title: $r('app.string.aside'), uri: 'pages/typicalScene/sidebar/SidebarSample', id:'SidebarSample' }, + { title: $r('app.string.multiScene'), uri: 'pages/typicalScene/multiScene/pages/MultiScene', id:'multiScene' } + ] + + build() { + Column() { + DirectoryList({ title: $r('app.string.typical_scenario'), directory: this.typicalScene }) + } + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/typicalScene/banner/BannerSample.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/typicalScene/banner/BannerSample.ets new file mode 100644 index 0000000000000000000000000000000000000000..afe9bfbbbdd70268d944a547486e5f6ce7b2862f --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/typicalScene/banner/BannerSample.ets @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { BreakpointSystem, BreakPointType } from '../../../common/BreakpointSystem' + +@Entry +@Component +struct Banner { + private bannerArr: Array = [ + $r('app.media.banner1'), + $r('app.media.banner2'), + $r('app.media.banner3'), + $r('app.media.banner4'), + $r('app.media.banner5'), + $r('app.media.banner6') + ] + private breakpointSystem: BreakpointSystem = new BreakpointSystem() + @StorageProp('currentBreakpoint') currentBreakpoint: string = 'md' + + aboutToAppear() { + this.breakpointSystem.register() + } + + aboutToDisappear() { + this.breakpointSystem.unregister() + } + + build() { + Swiper() { + ForEach(this.bannerArr, (item : Resource) => { + Image(item) + .size({ width: '100%', height: 200 }) + .borderRadius(12) + .padding(8) + }) + } + .indicator(new BreakPointType({ sm: true, md: false, lg: false }).getValue(this.currentBreakpoint)) + .displayCount(new BreakPointType({ sm: 1, md: 2, lg: 3 }).getValue(this.currentBreakpoint)) + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/typicalScene/bigImage/BigImageSample.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/typicalScene/bigImage/BigImageSample.ets new file mode 100644 index 0000000000000000000000000000000000000000..a800165bd7f6b33a10e908cf3c5eb2f70702d351 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/typicalScene/bigImage/BigImageSample.ets @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +@Entry +@Component +struct BigImage { + build() { + Row() { + Image($r('app.media.bigImage')) + .objectFit(ImageFit.Contain) + } + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/typicalScene/diversion/DiversionSample.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/typicalScene/diversion/DiversionSample.ets new file mode 100644 index 0000000000000000000000000000000000000000..ad403da50c868ea9ad9eb8357c4ac1b2218434ad --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/typicalScene/diversion/DiversionSample.ets @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +@Entry +@Component +struct DiversionSample { + @State currentBreakpoint: string = 'md' + @State imgHeight: number = 0 + @State textHeight: number = 0 + + build() { + Row() { + GridRow() { + GridCol({ span: { sm: 12, md: 6, lg: 6 } }) { + Column() { + Row() { + Image($r('app.media.illustrator')) + } + .width('100%') + .aspectRatio(1) + } + .width('100%') + .justifyContent(FlexAlign.Center) + } + .onAreaChange((oldArea: Area, newArea: Area) => { + this.imgHeight = newArea.height as number + }) + + GridCol({ span: { sm: 12, md: 6, lg: 6 } }) { + Column() { + Text($r('app.string.user_improvement')) + .textAlign(TextAlign.Center) + .fontSize(20) + .fontWeight(FontWeight.Medium) + Text($r('app.string.user_improvement_tips')) + .textAlign(TextAlign.Center) + .fontSize(14) + .fontWeight(FontWeight.Medium) + } + .onAreaChange((oldArea: Area, newArea: Area) => { + this.textHeight = newArea.height as number + }) + .padding({ left: 24, right: 24 }) + .justifyContent(FlexAlign.Center) + } + .padding({ top: this.currentBreakpoint === 'sm' ? 0 : (this.imgHeight - this.textHeight) / 2 }) + } + .onBreakpointChange((breakPoint: string) => { + this.currentBreakpoint = breakPoint + }) + } + .height('100%') + .backgroundColor('#F1F3f5') + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/typicalScene/header/HeaderSample.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/typicalScene/header/HeaderSample.ets new file mode 100644 index 0000000000000000000000000000000000000000..00a545e4dd657aa190787e8f2982a8fc7739972a --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/typicalScene/header/HeaderSample.ets @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +@Entry +@Component +struct Header { + @State needWrap: boolean = true + + build() { + GridRow() { + GridCol({ span: { sm: 12, md: 6, lg: 7 } }) { + Row() { + Text($r('app.string.recommended')).fontSize(24) + Blank() + Image($r('app.media.ic_public_more')) + .width(32) + .height(32) + .objectFit(ImageFit.Contain) + .visibility(this.needWrap ? Visibility.Visible : Visibility.None) + } + .width('100%') + .height(40) + .alignItems(VerticalAlign.Center) + } + + GridCol({ span: { sm: 12, md: 6, lg: 5 } }) { + Flex({ alignItems: ItemAlign.Center }) { + Search({ placeholder: '猜您喜欢: 万水千山' }) + .placeholderFont({ size: 16 }) + .margin({ top: 4, bottom: 4 }) + .flexGrow(1) + .flexShrink(1) + Image($r('app.media.audio_fm')) + .width(32) + .height(32) + .objectFit(ImageFit.Contain) + .flexShrink(0) + .margin({ left: 12 }) + Image($r('app.media.ic_public_more')) + .width(32) + .height(32) + .objectFit(ImageFit.Contain) + .flexShrink(0) + .margin({ left: 12 }) + .visibility(this.needWrap ? Visibility.None : Visibility.Visible) + } + } + }.onBreakpointChange((breakpoint: string) => { + if (breakpoint === 'sm') { + this.needWrap = true + } else { + this.needWrap = false + } + }) + .padding({ left: 12, right: 12 }) + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/typicalScene/indentation/IndentationSample.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/typicalScene/indentation/IndentationSample.ets new file mode 100644 index 0000000000000000000000000000000000000000..127bbd7647e2fbbbda912384d1191db0ee30ccd7 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/typicalScene/indentation/IndentationSample.ets @@ -0,0 +1,80 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +@Entry +@Component +struct IndentationSample { + build() { + Row() { + GridRow() { + ForEach([0, 1, 2, 4], (item:number, index) => { + GridCol({ + span: { sm: 10, md: 8, lg: 8 }, + offset: { + sm: index === 0 ? 1 : 2, + md: index === 0 ? 2 : 4, + lg: index === 0 ? 2 : 4 + } + }) { + Column() { + ItemContent() + } + } + }) + } + } + .height('100%') + .alignItems((VerticalAlign.Center)) + .justifyContent(FlexAlign.Center) + .backgroundColor('#F1F3f5') + } +} + +@Component +struct ItemContent { + build() { + Column() { + Row() { + Row() { + } + .width(28) + .height(28) + .borderRadius(14) + .margin({ right: 15 }) + .backgroundColor('#E4E6E8') + + Row() { + } + .width('30%') + .height(20) + .borderRadius(4) + .backgroundColor('#E4E6E8') + }.width('100%').height(28) + + Row() { + } + .width('100%') + .height(68) + .borderRadius(16) + .margin({ top: 12 }) + .backgroundColor('#E4E6E8') + } + .height(128) + .borderRadius(24) + .backgroundColor('#FFFFFF') + .padding({ top: 12, bottom: 12, left: 18, right: 18 }) + .margin({ bottom: 12 }) + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/typicalScene/multiLaneList/MultiLaneListSample.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/typicalScene/multiLaneList/MultiLaneListSample.ets new file mode 100644 index 0000000000000000000000000000000000000000..b5740f593c3071acfa1b7696fb08bff01a455ef0 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/typicalScene/multiLaneList/MultiLaneListSample.ets @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { BreakpointSystem, BreakPointType } from '../../../common/BreakpointSystem' + +class ListItemInfo { + name: Resource = $r('app.string.playlist_collection'); + image: Resource = $r('app.media.1'); +} + +@Entry +@Component +struct MultiLaneList { + private data: Array = [ + { name: $r('app.string.playlist_collection'), image: $r('app.media.1') }, + { name: $r('app.string.playlist_collection'), image: $r('app.media.2') }, + { name: $r('app.string.playlist_collection'), image: $r('app.media.3') }, + { name: $r('app.string.playlist_collection'), image: $r('app.media.4') }, + { name: $r('app.string.playlist_collection'), image: $r('app.media.5') }, + { name: $r('app.string.playlist_collection'), image: $r('app.media.6') }, + { name: $r('app.string.playlist_collection'), image: $r('app.media.7') }, + { name: $r('app.string.playlist_collection'), image: $r('app.media.8') }, + { name: $r('app.string.playlist_collection'), image: $r('app.media.9') }, + { name: $r('app.string.playlist_collection'), image: $r('app.media.10') }, + { name: $r('app.string.playlist_collection'), image: $r('app.media.11') }, + { name: $r('app.string.playlist_collection'), image: $r('app.media.12') } + ] + private breakpointSystem: BreakpointSystem = new BreakpointSystem() + @StorageProp('currentBreakpoint') currentBreakpoint: string = 'md' + + aboutToAppear() { + this.breakpointSystem.register() + } + + aboutToDisappear() { + this.breakpointSystem.unregister() + } + + build() { + List() { + ForEach(this.data, (item: ListItemInfo, index: number) => { + ListItem() { + Column() { + Image(item.image) + Row() { + Text(item.name) + .margin({ top: 8 }) + .fontSize(20) + Text(`${index}`) + .margin({ top: 8 }) + .fontSize(20) + } + }.padding(4) + } + }) + } + .lanes(new BreakPointType({ sm: 2, md: 4, lg: 6 }).getValue(this.currentBreakpoint)) + .width('100%') + .height('100%') + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/typicalScene/multiScene/data/applications/Applications.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/typicalScene/multiScene/data/applications/Applications.ets new file mode 100644 index 0000000000000000000000000000000000000000..1739c4e980744f64b41e9678edcc86a969deb067 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/typicalScene/multiScene/data/applications/Applications.ets @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export const ApplicationsData: Resource [] = [ + $r('app.string.multiScene_application'), + $r('app.string.multiScene_application'), + $r('app.string.multiScene_application'), + $r('app.string.multiScene_application'), + $r('app.string.multiScene_application'), + $r('app.string.multiScene_application'), + $r('app.string.multiScene_application'), + $r('app.string.multiScene_application'), + $r('app.string.multiScene_application'), + $r('app.string.multiScene_application'), + $r('app.string.multiScene_application'), + $r('app.string.multiScene_application'), + $r('app.string.multiScene_application'), + $r('app.string.multiScene_application'), + $r('app.string.multiScene_application'), + $r('app.string.multiScene_application'), + $r('app.string.multiScene_application'), + $r('app.string.multiScene_application'), + $r('app.string.multiScene_application'), + $r('app.string.multiScene_application'), + $r('app.string.multiScene_application'), + $r('app.string.multiScene_application'), + $r('app.string.multiScene_application'), + $r('app.string.multiScene_application'), + $r('app.string.multiScene_application'), + $r('app.string.multiScene_application'), + $r('app.string.multiScene_application'), + $r('app.string.multiScene_application'), + $r('app.string.multiScene_application'), + $r('app.string.multiScene_application'), + $r('app.string.multiScene_application'), + $r('app.string.multiScene_application'), + $r('app.string.multiScene_application'), + $r('app.string.multiScene_application') +] \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/typicalScene/multiScene/data/home/Home.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/typicalScene/multiScene/data/home/Home.ets new file mode 100644 index 0000000000000000000000000000000000000000..4215634903f053e7ae1759b6c02fef7c7b68a293 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/typicalScene/multiScene/data/home/Home.ets @@ -0,0 +1,80 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export interface Articles { + icon: string | Resource + title: string | Resource + disc: string | Resource +} + +export const ArticlesData: Articles[] = [ + { + icon: $r("app.media.icon"), + title: $r('app.string.multiScene_title1'), + disc: $r('app.string.multiScene_title1_disc') + }, + { + icon: $r("app.media.icon"), + title: $r('app.string.multiScene_title2'), + disc: $r('app.string.multiScene_title2_disc') + }, + { + icon: $r("app.media.icon"), + title: $r('app.string.multiScene_title3'), + disc: $r('app.string.multiScene_title3_disc') + }, + { + icon: $r("app.media.icon"), + title: $r('app.string.multiScene_title4'), + disc: $r('app.string.multiScene_title4_disc') + }, + { + icon: $r("app.media.icon"), + title: $r('app.string.multiScene_title5'), + disc: $r('app.string.multiScene_title5_disc') + },{ + icon: $r("app.media.icon"), + title: $r('app.string.multiScene_title5'), + disc: $r('app.string.multiScene_title5_disc') + },{ + icon: $r('app.media.icon'), + title: $r('app.string.multiScene_title6'), + disc: $r('app.string.multiScene_title6_disc') + }, + { + icon: $r("app.media.icon"), + title: $r('app.string.multiScene_title7'), + disc: $r('app.string.multiScene_title7_disc') + }, + { + icon: $r('app.media.icon'), + title: $r('app.string.multiScene_title8'), + disc: $r('app.string.multiScene_title8_disc') + }, + { + icon: $r('app.media.icon'), + title: $r('app.string.multiScene_title9'), + disc: $r('app.string.multiScene_title9_disc') + }, + { + icon: $r('app.media.icon'), + title: $r('app.string.multiScene_title10'), + disc: $r('app.string.multiScene_title10_disc') + } +] + + + + diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/typicalScene/multiScene/pages/MultiScene.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/typicalScene/multiScene/pages/MultiScene.ets new file mode 100644 index 0000000000000000000000000000000000000000..0d6a284e6346166792481621db17327ddddb583a --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/typicalScene/multiScene/pages/MultiScene.ets @@ -0,0 +1,122 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import mediaquery from '@ohos.mediaquery' +import { HomePage } from './home/Home' +import { Applications } from './applications/Applications' +import { Play } from './player/Player' + +@Entry +@Component +struct DiversionSample { + @State isVertical: boolean = true + @State barWidth: number = -1 + @State barHeight: number = -1 + @State currentIndex: number = 0 + private listener = mediaquery.matchMediaSync('(orientation: landscape)') + + // 监听横竖屏 + onPortrait(mediaQueryResult: mediaquery.MediaQueryResult) { + if (mediaQueryResult.matches) { // 若设备为横屏状态,更改相应的页面布局 + this.isVertical = true + this.barWidth = 100 + this.barHeight = 200 + } else { + this.isVertical = false + this.barWidth = -1 + this.barHeight = -1 + } + } + + aboutToAppear() { + this.listener.on('change', (mediaQueryResult:mediaquery.MediaQueryResult) => { + this.onPortrait(mediaQueryResult); + }) //绑定回调函数 + } + + @Builder NavigationTitle() { + Column() { + Text($r('app.string.multiScene_header_title')) + .fontColor('#182431') + .fontSize(30) + .lineHeight(41) + .fontWeight(700) + Text($r('app.string.multiScene_header_subtitle')) + .fontColor('#182431') + .fontSize(14) + .lineHeight(19) + .opacity(0.4) + .margin({ top: 2, bottom: 20 }) + }.alignItems(HorizontalAlign.Start) + } + + @Builder TabBuilder(title: Resource, targetIndex: number, selectedImg: Resource, normalImg: Resource) { + Column() { + Image(this.currentIndex === targetIndex ? selectedImg : normalImg) + .size({ width: 25, height: 25 }) + Text(title) + .fontColor(this.currentIndex === targetIndex ? '#1698CE' : '#6B6B6B') + .fontSize(10) + } + .width('100%') + .height(50) + .justifyContent(FlexAlign.Center) + } + + build() { + Scroll() { + Column() { + // Navigation + Navigation() { + Tabs({ barPosition: this.isVertical ? BarPosition.Start : BarPosition.End }) { + // 首页 + TabContent() { + HomePage() + } + .tabBar(this.TabBuilder($r('app.string.multiScene_tabs_home'), 0, $r('app.media.ic_public_home_select'), $r('app.media.ic_public_home'))) + + // 应用 + TabContent() { + Applications() + } + .tabBar(this.TabBuilder($r('app.string.multiScene_tabs_app'), 1, $r('app.media.ic_public_albums_select'), $r('app.media.ic_public_albums'))) + + // 播放 + TabContent() { + Play() + } + .tabBar(this.TabBuilder($r('app.string.multiScene_tabs_play'), 2, $r('app.media.ic_gallery_template_select'), $r('app.media.ic_gallery_template'))) + + // 我的 + TabContent() { + Text($r('app.string.multiScene_my_content')).fontSize(30) + } + .tabBar(this.TabBuilder($r('app.string.multiScene_tabs_me'), 3, $r('app.media.ic_public_contacts_select'), $r('app.media.ic_public_contacts'))) + } + .vertical(this.isVertical) + .barWidth(this.barWidth) + .barHeight(this.barHeight) + .onChange((index: number) => { + this.currentIndex = index + }) + }.mode(NavigationMode.Stack) + .title(this.NavigationTitle()) + .titleMode(NavigationTitleMode.Full) + } + .height('100%') + .backgroundColor('#F1F3f5') + } + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/typicalScene/multiScene/pages/applications/Applications.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/typicalScene/multiScene/pages/applications/Applications.ets new file mode 100644 index 0000000000000000000000000000000000000000..2a84c094333351f885efa3a334ef0de6d3f67275 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/typicalScene/multiScene/pages/applications/Applications.ets @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { ApplicationsData } from '../../data/applications/Applications' + +@Component +export struct Applications { + private scroller: Scroller = new Scroller() + + @Builder Item(name: string) { + Column() { + Image($r('app.media.icon')) + .width(48) + .height(48) + .margin(({ top: 8 })) + Text(name) + .width(64) + .height(30) + .lineHeight(15) + .fontSize(12) + .textAlign(TextAlign.Center) + .margin({ top: 8 }) + .padding({ bottom: 15 }) + }.width(80).height(102) + } + + build() { + Scroll(this.scroller) { + Column() { + Flex({ justifyContent: FlexAlign.SpaceEvenly, wrap: FlexWrap.Wrap }) { + ForEach(ApplicationsData, (item : string) => { + this.Item(item) + }) + }.width('80%') + } + .width('90%') + .backgroundColor('#FFFFFF') + .borderRadius(16) + .padding({ top: 12 }) + } + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/typicalScene/multiScene/pages/home/Home.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/typicalScene/multiScene/pages/home/Home.ets new file mode 100644 index 0000000000000000000000000000000000000000..cbd3486897b79710743f3e636f7590d3851a83cc --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/typicalScene/multiScene/pages/home/Home.ets @@ -0,0 +1,138 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { ArticlesData, Articles } from '../../data/home/Home' + +@Component +export struct HomePage { + private swiperController: SwiperController = new SwiperController() + private bannerArr: Array = [ + $r('app.media.banner1'), + $r('app.media.banner2'), + $r('app.media.banner3'), + $r('app.media.banner4'), + $r('app.media.banner5'), + $r('app.media.banner6') + ] + @State imgHeight: number = 0 + @State textHeight: number = 0 + @State spaceBottom: number = 0 + @State currentBreakpoint: string = 'md' + + constructor() { + super() + } + + @Builder Item(article: Articles) { + Flex() { + Row() { + Image(article.icon) + }.width(43) + .height(43) + .borderRadius(12) + + Column() { + Row() { + Text(article.title) + .fontColor('#182431') + .fontSize(20) + } + .height(20) + .width('80%') + + Row() { + Text(article.disc) + .fontSize(15) + .fontColor('#182431') + .opacity(0.4) + } + .height(15) + .width('80%') + } + .height('100%') + .margin({ left: 13 }) + .alignItems(HorizontalAlign.Start) + .justifyContent(FlexAlign.SpaceAround) + } + .padding({ top: 13, bottom: 13, left: 13, right: 13 }) + .height(70) + .backgroundColor('#FFFFFF') + .borderRadius(25) + } + + build() { + Column() { + GridRow() { + // Swiper + GridCol({ span: { sm: 12, md: 6, lg: 6 } }) { + Column() { + Row() { + Swiper(this.swiperController) { + ForEach(this.bannerArr, (item: Resource) => { + Image(item) + }) + }.width('100%') + } + .width('100%') + .aspectRatio(1.5) + } + .margin({ bottom: this.spaceBottom }) + .width('100%') + .justifyContent(FlexAlign.Center) + } + .onAreaChange((oldArea: Area, newArea: Area) => { + this.imgHeight = newArea.height as number + console.log(String(this.imgHeight)) + }) + + GridCol({ span: { sm: 12, md: 6, lg: 6 } }) { + Column() { + List({ space: 10, initialIndex: 0 }) { + ForEach(ArticlesData, (item : Articles) => { + ListItem() { + this.Item(item) + } + }) + } + .listDirection(Axis.Vertical) // 排列方向 + .edgeEffect(EdgeEffect.Spring) // 滑动到边缘无效果 + .onScrollIndex((firstIndex: number, lastIndex: number) => { + console.info('first' + firstIndex) + console.info('last' + lastIndex) + }) + .width('100%') + .height('100%') + } + .onAreaChange((oldArea: Area, newArea: Area) => { + this.textHeight = newArea.height as number + }) + .padding({ left: 15, right: 15 }) + .justifyContent(FlexAlign.Center) + } + .padding({ top: this.currentBreakpoint === 'sm' ? 0 : (this.imgHeight - this.textHeight) / 2 }) + + } + .onBreakpointChange((breakPoint: string) => { + this.currentBreakpoint = breakPoint + if (breakPoint === 'sm') { + this.spaceBottom = 20 + } else { + this.spaceBottom = 0 + } + }) + + }.width('100%') + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/typicalScene/multiScene/pages/player/Player.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/typicalScene/multiScene/pages/player/Player.ets new file mode 100644 index 0000000000000000000000000000000000000000..74d47f2020d38a51f00f51fdaf0193655c7a3dc5 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/typicalScene/multiScene/pages/player/Player.ets @@ -0,0 +1,77 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +@Component +export struct Play { + build() { + Column() { + GridRow() { + GridCol({ span: { sm: 12, md: 6, lg: 6 } }) { + Row() { + Image($r('app.media.sing')) + .width(200) + .height(200) + .objectFit(ImageFit.Contain) + }.margin({ bottom: 10 }) + } + + GridCol({ span: { sm: 12, md: 6, lg: 6 } }) { + Row() { + Button({ type: ButtonType.Circle, stateEffect: true }) { + Image($r('app.media.favorite')).width(48).height(48)} + .width(48) + .height(48) + .displayPriority(1) + .backgroundColor('white') + + Button({ type: ButtonType.Circle, stateEffect: true }) { + Image($r('app.media.down')).width(48).height(48)} + .width(48) + .height(48) + .displayPriority(2) + .backgroundColor('white') + + Button({ type: ButtonType.Circle, stateEffect: true }) { + Image($r('app.media.pause')).width(48).height(48)} + .width(48) + .height(48) + .displayPriority(3) + .backgroundColor('white') + + Button({ type: ButtonType.Circle, stateEffect: true }) { + Image($r('app.media.next')).width(48).height(48)} + .width(48) + .height(48) + .displayPriority(2) + .backgroundColor('white') + + Button({ type: ButtonType.Circle, stateEffect: true }) { + Image($r('app.media.list')).width(48).height(48)} + .width(48) + .height(48) + .displayPriority(1) + .backgroundColor('white') + } + .width('100%') + .height('100%') + .height(90) + .borderRadius(16) + .backgroundColor('#FFFFFF') + .justifyContent(FlexAlign.Center) + } + } + }.width('80%') + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/typicalScene/operationEntries/OperationEntriesSample.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/typicalScene/operationEntries/OperationEntriesSample.ets new file mode 100644 index 0000000000000000000000000000000000000000..78cf07afd44e60a072199b16ed0c3ed94f33fac9 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/typicalScene/operationEntries/OperationEntriesSample.ets @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +class OperationItem { + name: Resource | string = ''; + icon: Resource = $r('app.media.self_fm'); +} + +@Entry +@Component +struct OperationEntries { + private listData: Array = [ + { name: $r('app.string.operation1'), icon: $r('app.media.self_fm') }, + { name: $r('app.string.operation2'), icon: $r('app.media.singer') }, + { name: $r('app.string.operation3'), icon: $r('app.media.song_list') }, + { name: $r('app.string.operation4'), icon: $r('app.media.rank') }, + { name: $r('app.string.operation5'), icon: $r('app.media.hot') }, + { name: $r('app.string.operation6'), icon: $r('app.media.sport') }, + { name: $r('app.string.operation7'), icon: $r('app.media.audio_fm') }, + { name: $r('app.string.operation8'), icon: $r('app.media.bonus') } + ] + + build() { + Scroll() { + Row() { + ForEach(this.listData, (item :OperationItem) => { + Column() { + Image(item.icon) + .width(48) + .aspectRatio(1) + Text(item.name) + .margin({ top: 8 }) + .fontSize(16) + } + .justifyContent(FlexAlign.Center) + .height(104) + .padding({ left: 12, right: 12 }) + }) + } + .constraintSize({ minWidth: '100%' }) + .justifyContent(FlexAlign.SpaceAround) + } + .width('100%') + .scrollable(ScrollDirection.Horizontal) + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/typicalScene/repeat/RepeatSample.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/typicalScene/repeat/RepeatSample.ets new file mode 100644 index 0000000000000000000000000000000000000000..64f0dac15d1845f03840fcef7f3d687ab09566be --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/typicalScene/repeat/RepeatSample.ets @@ -0,0 +1,101 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import mediaquery from '@ohos.mediaquery' + +@Entry +@Component +struct RepeatSample { + @State isWidescreen: boolean = false + @State currentBreakpoint: string = 'sm' + private listener: mediaquery.MediaQueryListener = mediaquery.matchMediaSync('(width>1200)') + onWidthChange = (mediaQueryResult:mediaquery.MediaQueryResult) => { + if (mediaQueryResult.matches) { + this.isWidescreen = true + } else { + this.isWidescreen = false + } + } + + aboutToAppear() { + this.listener.on('change', this.onWidthChange) + } + + aboutToDisappear() { + this.listener.off('change', this.onWidthChange) + } + + build() { + Row() { + Scroll() { + GridRow() { + ForEach([0, 1, 2, 3, 4, 5, 6, 7], () => { + GridCol({ span: { sm: 12, md: 6, lg: 6 } }) { + Column() { + RepeatItemContent() + } + .padding({ left: 10, right: 10 }) + } + }) + } + .onBreakpointChange((breakpoint: string) => { + this.currentBreakpoint = breakpoint + }) + } + .height(this.currentBreakpoint === 'sm' ? 320 : '100%') + .scrollBar(BarState.Off) + } + .height('100%') + .backgroundColor('#F1F3F5') + .padding({ left: 30, right: 30 }) + } +} + +@Component +struct RepeatItemContent { + build() { + Flex() { + Row() { + }.width(43) + .height(43) + .borderRadius(12) + .backgroundColor('#E4E6E8') + + Column() { + Row() { + } + .height(10) + .width('80%') + .backgroundColor('#E4E6E8') + + Row() { + } + .height(10) + .width('50%') + .backgroundColor('#E4E6E8') + } + .flexGrow(1) + .height('100%') + .margin({ left: 13 }) + .alignItems(HorizontalAlign.Start) + .justifyContent(FlexAlign.SpaceAround) + } + .padding({ top: 13, bottom: 13, left: 13, right: 37 }) + .height(70) + .backgroundColor('#FFFFFF') + .margin({ bottom: 12 }) + .borderRadius(24) + } +} diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/typicalScene/responsiveGrid/ResponsiveGridSample.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/typicalScene/responsiveGrid/ResponsiveGridSample.ets new file mode 100644 index 0000000000000000000000000000000000000000..e09126e8a7bc8295749d9891934a0137ed5c5696 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/typicalScene/responsiveGrid/ResponsiveGridSample.ets @@ -0,0 +1,76 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { BreakpointSystem, BreakPointType } from '../../../common/BreakpointSystem' + +class GridItemInfo { + name: Resource = $r('app.string.playlist_collection'); + image: Resource = $r('app.media.1'); +} + +@Entry +@Component +struct ResponsiveGrid { + private data: Array = [ + { name: $r('app.string.playlist_collection'), image: $r('app.media.1') }, + { name: $r('app.string.playlist_collection'), image: $r('app.media.2') }, + { name: $r('app.string.playlist_collection'), image: $r('app.media.3') }, + { name: $r('app.string.playlist_collection'), image: $r('app.media.4') }, + { name: $r('app.string.playlist_collection'), image: $r('app.media.5') }, + { name: $r('app.string.playlist_collection'), image: $r('app.media.6') }, + { name: $r('app.string.playlist_collection'), image: $r('app.media.7') }, + { name: $r('app.string.playlist_collection'), image: $r('app.media.8') }, + { name: $r('app.string.playlist_collection'), image: $r('app.media.9') }, + { name: $r('app.string.playlist_collection'), image: $r('app.media.10') }, + { name: $r('app.string.playlist_collection'), image: $r('app.media.11') }, + { name: $r('app.string.playlist_collection'), image: $r('app.media.12') } + ] + private breakpointSystem: BreakpointSystem = new BreakpointSystem() + @StorageProp('currentBreakpoint') currentBreakpoint: string = 'md' + + aboutToAppear() { + this.breakpointSystem.register() + } + + aboutToDisappear() { + this.breakpointSystem.unregister() + } + + build() { + Grid() { + ForEach(this.data, (item: GridItemInfo, index: number) => { + GridItem() { + Column() { + Image(item.image) + .aspectRatio(1.8) + Row() { + Text(item.name) + .margin({ top: 8 }) + .fontSize(20) + Text(`${index}`) + .margin({ top: 8 }) + .fontSize(20) + } + }.padding(4) + } + }) + } + .columnsTemplate(new BreakPointType({ + sm: '1fr 1fr', + md: '1fr 1fr 1fr 1fr', + lg: '1fr 1fr 1fr 1fr 1fr 1fr' + }).getValue(this.currentBreakpoint)) + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/typicalScene/sidebar/SidebarSample.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/typicalScene/sidebar/SidebarSample.ets new file mode 100644 index 0000000000000000000000000000000000000000..b027e59b314ffcd461c6630325214d924687d365 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/typicalScene/sidebar/SidebarSample.ets @@ -0,0 +1,99 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { BreakpointSystem } from '../../../common/BreakpointSystem' + +class ImageData { + label: string = ''; + imageSrc: Resource = $r("app.media.my_image_moon"); +} + +const images: ImageData[] = [ + { label: 'moon', imageSrc: $r("app.media.my_image_moon") }, + { label: 'sun', imageSrc: $r("app.media.my_image") } +] + +@Entry +@Component +struct SideBarSample { + @StorageLink('currentBreakpoint') + private currentBreakpoint: string = "md" + private breakpointSystem: BreakpointSystem = new BreakpointSystem() + @State showSideBar: boolean = false + @State selectIndex: number = 0 + + aboutToAppear() { + this.breakpointSystem.register() + if (this.currentBreakpoint === 'sm') { + this.showSideBar = false + } else { + this.showSideBar = true + } + } + + aboutToDisappear() { + this.breakpointSystem.unregister() + } + + @Builder itemBuilder(index: number) { + Text(images[index].label) + .width('100%') + .fontSize(24) + .fontWeight(FontWeight.Bold) + .borderRadius(5) + .margin(20) + .backgroundColor('#ffffff') + .textAlign(TextAlign.Center) + .width(180) + .height(36) + .onClick(() => { + this.selectIndex = index + if (this.currentBreakpoint === 'sm') { + this.showSideBar = false + } + }) + } + + build() { + SideBarContainer(this.currentBreakpoint === 'sm' ? SideBarContainerType.Overlay : SideBarContainerType.Embed) { + Column() { + this.itemBuilder(0) + this.itemBuilder(1) + }.backgroundColor('#F1F3F5') + .justifyContent(FlexAlign.Center) + + Column() { + Image(images[this.selectIndex].imageSrc) + .objectFit(ImageFit.Contain) + .height(300) + .width(300) + } + .justifyContent(FlexAlign.Center) + .width('100%') + .height('100%') + } + .height('100%') + .width('100%') + .sideBarWidth(this.currentBreakpoint === 'sm' ? '100%' : '33.33%') + .minSideBarWidth(this.currentBreakpoint === 'sm' ? '100%' : '33.33%') + .maxSideBarWidth(this.currentBreakpoint === 'sm' ? '100%' : '33.33%') + .autoHide(false) + .showControlButton(this.currentBreakpoint === 'sm') + .showSideBar(this.showSideBar) + .onChange((isBarShow: boolean) => { + this.showSideBar = isBarShow + }) + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/typicalScene/tabs/TabsSample.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/typicalScene/tabs/TabsSample.ets new file mode 100644 index 0000000000000000000000000000000000000000..08c990260a6feedd779fa1cd46dc4d9b7023d240 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/ets/pages/typicalScene/tabs/TabsSample.ets @@ -0,0 +1,108 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { BreakpointSystem, BreakPointType, BreakPointTypeOptionEntity } from '../../../common/BreakpointSystem'; + +class TabBar { + name: Resource | string =''; + icon: Resource = $r('app.media.ic_music_home'); + selectIcon: Resource = $r('app.media.ic_music_home_selected'); +} + +@Entry +@Component +struct Home { + smHome:Margin={ top: 4 }; + mdHome:Margin={ left: 8 }; + lgHome:Margin={ top: 4 }; + breakPointTypeOptionEntity: BreakPointTypeOptionEntity={ + sm: this.smHome, + md: this.mdHome, + lg: this.lgHome + } + private tabs: Array = [ + { + name: $r('app.string.tabBar1'), + icon: $r('app.media.ic_music_home'), + selectIcon: $r('app.media.ic_music_home_selected') + }, { + name: $r('app.string.tabBar2'), + icon: $r('app.media.ic_music_ranking'), + selectIcon: $r('app.media.ic_music_ranking_selected') + }, { + name: $r('app.string.tabBar3'), + icon: $r('app.media.ic_music_me_nor'), + selectIcon: $r('app.media.ic_music_me_selected') + } + ] + @State currentIndex: number = 0 + + @Builder TabBarBuilder(index: number, tabBar: TabBar) { + Flex({ + direction: new BreakPointType({ + sm: FlexDirection.Column, + md: FlexDirection.Row, + lg: FlexDirection.Column + }).getValue(this.currentBreakpoint), + justifyContent: FlexAlign.Center, + alignItems: ItemAlign.Center + }) { + Image(this.currentIndex === index ? tabBar.selectIcon : tabBar.icon) + .size({ width: 36, height: 36 }) + Text(tabBar.name) + .fontColor(this.currentIndex === index ? '#FF1948' : '#999') + .margin(new BreakPointType(this.breakPointTypeOptionEntity).getValue(this.currentBreakpoint)) + .fontSize(16) + } + .width('100%') + .height('100%') + } + + @StorageLink('currentBreakpoint') currentBreakpoint: string = 'md' + private breakpointSystem: BreakpointSystem = new BreakpointSystem() + + aboutToAppear() { + this.breakpointSystem.register() + } + + aboutToDisappear() { + this.breakpointSystem.unregister() + } + + build() { + Tabs({ + barPosition: new BreakPointType({ + sm: BarPosition.End, + md: BarPosition.End, + lg: BarPosition.Start + }).getValue(this.currentBreakpoint) + }) { + ForEach(this.tabs, (item: TabBar, index) => { + TabContent() { + Stack() { + Text(item.name).fontSize(30) + }.width('100%').height('100%') + }.tabBar(this.TabBarBuilder(index, item)) + }) + } + .vertical(new BreakPointType({ sm: false, md: false, lg: true }).getValue(this.currentBreakpoint)) + .barWidth(new BreakPointType({ sm: '100%', md: '100%', lg: '96vp' }).getValue(this.currentBreakpoint)) + .barHeight(new BreakPointType({ sm: '72vp', md: '56vp', lg: '60%' }).getValue(this.currentBreakpoint)) + .animationDuration(0) + .onChange((index: number) => { + this.currentIndex = index + }) + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/module.json5 b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/module.json5 new file mode 100644 index 0000000000000000000000000000000000000000..03794a5551e352ced119f471b85bf56a2c4c824c --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/module.json5 @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "module": { + "name": "entry", + "type": "entry", + "description": "$string:entry_desc", + "mainElement": "EntryAbility", + "deviceTypes": [ + "phone", + "tablet" + ], + "deliveryWithInstall": true, + "installationFree": false, + "pages": "$profile:main_pages", + "abilities": [ + { + "name": "EntryAbility", + "srcEntry": "./ets/entryability/EntryAbility.ets", + "description": "$string:MainAbility_desc", + "icon": "$media:icon", + "label": "$string:EntryAbility_label", + "exported": true, + "startWindowIcon": "$media:icon", + "startWindowBackground": "$color:white", + "skills": [ + { + "entities": [ + "entity.system.home" + ], + "actions": [ + "action.system.home" + ] + } + ], + "minWindowWidth": 320, + "minWindowHeight": 240 + } + ] + } +} diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/element/color.json b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/element/color.json new file mode 100644 index 0000000000000000000000000000000000000000..e9bb474eab25d4db0ea974d45258c04198f67f7e --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/element/color.json @@ -0,0 +1,12 @@ +{ + "color": [ + { + "name": "white", + "value": "#FFFFFF" + }, + { + "name": "my_color", + "value": "#ff0000" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/element/float.json b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/element/float.json new file mode 100644 index 0000000000000000000000000000000000000000..aa689d3f32d2b0285889e5c4e8419f01d74cb85f --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/element/float.json @@ -0,0 +1,8 @@ +{ + "float": [ + { + "name": "my_float", + "value": "60vp" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/element/string.json b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..69b4f42001b0b276ccaf3f4a88deaa339338cea7 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/element/string.json @@ -0,0 +1,440 @@ +{ + "string": [ + { + "name": "entry_desc", + "value": "description" + }, + { + "name": "MainAbility_desc", + "value": "description" + }, + { + "name": "EntryAbility_label", + "value": "AdaptiveCapabilities" + }, + { + "name": "my_string", + "value": "phone" + }, + { + "name": "home_title", + "value": "Page development-Adaptive Capabilities" + }, + { + "name": "resource_qualifier", + "value": "Resource qualifier" + }, + { + "name": "atomic_capability", + "value": "Atomic layout capability" + }, + { + "name": "responsive_layout", + "value": "Responsive layout" + }, + { + "name": "flex_capability_first", + "value": "Flexible capability first" + }, + { + "name": "flex_capability_second", + "value": "Flexible capability second" + }, + { + "name": "scaling_capability", + "value": "Scaling capability" + }, + { + "name": "hidden_capability", + "value": "Hidden capability" + }, + { + "name": "wrap_capability", + "value": "Wrap capability" + }, + { + "name": "equally_capability", + "value": "Equally capability" + }, + { + "name": "percentage_capability", + "value": "Percentage capability" + }, + { + "name": "extension_capability_first", + "value": "Extension capacity first" + }, + { + "name": "extension_capability_second", + "value": "Extension capacity second" + }, + { + "name": "healthy_use_phone", + "value": "Healthy use of phone" + }, + { + "name": "media_query", + "value": "Media query" + }, + { + "name": "grid_layout", + "value": "Grid layout" + }, + { + "name": "grid_layout1", + "value": "Grid breakpoint 1" + }, + { + "name": "grid_layout2", + "value": "Grid breakpoint 2" + }, + { + "name": "grid_layout3", + "value": "Grid columns and gutter" + }, + { + "name": "grid_layout4", + "value": "Grid margin" + }, + { + "name": "grid_layout5", + "value": "Grid span" + }, + { + "name": "grid_layout6", + "value": "Grid offset" + }, + { + "name": "grid_layout7", + "value": "Grid order" + }, + { + "name": "grid_layout8", + "value": "Grid inheritance of span/offset/order" + }, + { + "name": "grid_layout9", + "value": "Grid nested" + }, + { + "name": "grid_layout10", + "value": "Grid alignItem" + }, + { + "name": "typical_scenario", + "value": "Typical scenario" + }, + { + "name": "diversion_layout", + "value": "Diversion layout" + }, + { + "name": "repeat_layout", + "value": "Repeat layout" + }, + { + "name": "indentation_layout", + "value": "Indentation layout" + }, + { + "name": "header", + "value": "header" + }, + { + "name": "banner", + "value": "banner" + }, + { + "name": "operationEntries", + "value": "operation entries" + }, + { + "name": "tabs", + "value": "tabs layout" + }, + { + "name": "bigImage", + "value": "big image" + }, + { + "name": "multiLaneList", + "value": "multi lane list" + }, + { + "name": "grid", + "value": "grid layout" + }, + { + "name": "aside", + "value": "aside" + }, + { + "name": "multiScene", + "value": "multiScene" + }, + { + "name": "user_improvement", + "value": "User Experience Improvement Program" + }, + { + "name": "user_improvement_tips", + "value": "The User Experience Improvement Program improves huawei's product and service quality through system, application analysis, and fault diagnosis." + }, + { + "name": "show_app_name", + "value": "App name" + }, + { + "name": "left", + "value": "Left" + }, + { + "name": "center", + "value": "Center" + }, + { + "name": "right", + "value": "Right" + }, + { + "name": "portrait", + "value": "Portrait" + }, + { + "name": "landscape", + "value": "Landscape" + }, + { + "name": "recommended", + "value": "recommended" + }, + { + "name": "operation1", + "value": "Private FM" + }, + { + "name": "operation2", + "value": "Singer" + }, + { + "name": "operation3", + "value": "Playlist" + }, + { + "name": "operation4", + "value": "Ranking List" + }, + { + "name": "operation5", + "value": "Hot" + }, + { + "name": "operation6", + "value": "Sports Music" + }, + { + "name": "operation7", + "value": "Music FM" + }, + { + "name": "operation8", + "value": "Welfare" + }, + { + "name": "playlist_collection", + "value": "Playlist Collection" + }, + { + "name": "tabBar1", + "value": "Home" + }, + { + "name": "tabBar2", + "value": "Ranking List" + }, + { + "name": "tabBar3", + "value": "My" + }, + { + "name": "breakpoint", + "value": "breakpoint" + }, + { + "name": "Radio_GridRow_All_LCR", + "value": "All GridColl L-C-R" + }, + { + "name": "Radio_GridRow_All_TMB", + "value": "All GridColl T-M-B" + }, + { + "name": "Radio_GridRow_Sg_LCR", + "value": "Second Grid L-C-R" + }, + { + "name": "Radio_GridRow_Sg_TMB", + "value": "Second Grid T-M-B" + }, + { + "name": "multiScene_tabs_home", + "value": "home" + }, + { + "name": "multiScene_tabs_app", + "value": "apps" + }, + { + "name": "multiScene_tabs_play", + "value": "play" + }, + { + "name": "multiScene_tabs_me", + "value": "me" + }, + { + "name": "multiScene_header_title", + "value": "Good morning~" + }, + { + "name": "multiScene_header_subtitle", + "value": "Never give up on someone you miss every day!" + }, + { + "name": "multiScene_my_content", + "value": "my content" + }, + { + "name": "multiScene_application", + "value": "multiScene_application" + }, + { + "name": "multiScene_title1", + "value": "The application of Artificial Intelligence technology in the medical field" + }, + { + "name": "multiScene_title1_disc", + "value": "To explore how artificial intelligence technology can improve medical services, diagnosis accuracy and treatment effect." + }, + { + "name": "multiScene_title2", + "value": "The Impact of Blockchain technology on the financial Industry" + }, + { + "name": "multiScene_title2_disc", + "value": "Analyzing how blockchain technology can change the business model of traditional financial industry and improve transaction efficiency and security." + }, + { + "name": "multiScene_title3", + "value": "Machine Learning Algorithms for autonomous driving" + }, + { + "name": "multiScene_title3_disc", + "value": "Introducing how to realize automatic driving function with machine learning algorithm, and discusses its development prospects in the future transportation field." + }, + { + "name": "multiScene_title4", + "value": "The application of Virtual Reality Technology in the game industry" + }, + { + "name": "multiScene_title4_disc", + "value": "Discussing how virtual reality technology can change the game play and user experience in the game industry, and analyzes its development trend in the future entertainment field." + }, + { + "name": "multiScene_title5", + "value": "The impact of 5G technology on the communication industry" + }, + { + "name": "multiScene_title5_disc", + "value": "Analyzing how 5G technology will change the business model and user needs of the communication industry, and discusses its application prospects in the future digital society." + }, + { + "name": "multiScene_title6", + "value": "The Application of Internet of Things technology in Smart City" + }, + { + "name": "multiScene_title6_disc", + "value": "Introducing how the Internet of Things technology realizes the construction and management of smart city, and analyzes its importance and role in the future city development." + }, + { + "name": "multiScene_title7", + "value": "The application of biotechnology in agriculture" + }, + { + "name": "multiScene_title7_disc", + "value": "Discussing how biotechnology can improve agricultural production and protect ecological environment, and analyzes its role in future food security and sustainable development." + }, + { + "name": "multiScene_title8", + "value": "Advances and Challenges in Quantum Computer Technology" + }, + { + "name": "multiScene_title8_disc", + "value": " Introducing the basic principles and application prospects of quantum computer technology, and discusses its current technical problems and development trends." + }, + { + "name": "multiScene_title9", + "value": "The Application of Big Data Technology in Enterprise Management" + }, + { + "name": "multiScene_title9_disc", + "value": "Analyzing how big data technology can assist enterprise management, improve operational efficiency and decision-making level, and discusses its advantages and challenges in future business competition." + }, + { + "name": "multiScene_title10", + "value": "The Impact of Artificial Intelligence Technology on the Education Industry" + }, + { + "name": "multiScene_title10_disc", + "value": "Discussing how artificial intelligence technology can change the way and content of education and teaching, and analyzes its role and challenges in future education development." + }, + { + "name": "interaction_norm_capability", + "value": "Interaction normalization capability" + }, + { + "name": "interaction_norm_capability_tips", + "value": "Please keyboard" + }, + { + "name": "up", + "value": "Up" + }, + { + "name": "down", + "value": "Down" + }, + { + "name": "select", + "value": "Select" + }, + { + "name": "escape", + "value": "Escape" + }, + { + "name": "back", + "value": "Back" + }, + { + "name": "menu", + "value": "Menu" + }, + { + "name": "page_up", + "value": "Page up" + }, + { + "name": "page_down", + "value": "Page down" + }, + { + "name": "zoom_out", + "value": "Zoom out" + }, + { + "name": "zoom_in", + "value": "Zoom in" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/1.png b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/1.png new file mode 100644 index 0000000000000000000000000000000000000000..9d63d80b39c2dc640f9e82e2aeee78f40a0ae46f Binary files /dev/null and b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/1.png differ diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/10.png b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/10.png new file mode 100644 index 0000000000000000000000000000000000000000..a87fccb1691376da507aa452578cb76b10131f7e Binary files /dev/null and b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/10.png differ diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/11.png b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/11.png new file mode 100644 index 0000000000000000000000000000000000000000..7055daff0ed0662da48b82f7a079295c84ff4139 Binary files /dev/null and b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/11.png differ diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/12.png b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/12.png new file mode 100644 index 0000000000000000000000000000000000000000..00bbdcad5ca445553197c595e8dfac9eb5050870 Binary files /dev/null and b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/12.png differ diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/2.png b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/2.png new file mode 100644 index 0000000000000000000000000000000000000000..918e32abc4a21f180c6613bb7c058c76770cfc8b Binary files /dev/null and b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/2.png differ diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/3.png b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/3.png new file mode 100644 index 0000000000000000000000000000000000000000..650942c2523282707a8fc93e293f45be6c38fe15 Binary files /dev/null and b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/3.png differ diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/4.png b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/4.png new file mode 100644 index 0000000000000000000000000000000000000000..82469bcab3b90f28963fc83fce7201eabacacce0 Binary files /dev/null and b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/4.png differ diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/5.png b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/5.png new file mode 100644 index 0000000000000000000000000000000000000000..4f7b1eab16d3ddb2ddbbb6186de277a470bf5489 Binary files /dev/null and b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/5.png differ diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/6.png b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/6.png new file mode 100644 index 0000000000000000000000000000000000000000..2c53ba6717383a6b43198143180239926d1f4b2e Binary files /dev/null and b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/6.png differ diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/7.png b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/7.png new file mode 100644 index 0000000000000000000000000000000000000000..2c95ba08d14a63fe3cae30a79e3215ee1331a195 Binary files /dev/null and b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/7.png differ diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/8.png b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/8.png new file mode 100644 index 0000000000000000000000000000000000000000..cfa5a7e5e42df3792476d415da3b3ea6d9f393ab Binary files /dev/null and b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/8.png differ diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/9.png b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/9.png new file mode 100644 index 0000000000000000000000000000000000000000..7c80ba7110837d4344182c13ef1be1219f9aa22a Binary files /dev/null and b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/9.png differ diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/audio_fm.png b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/audio_fm.png new file mode 100644 index 0000000000000000000000000000000000000000..973ec7a7fab7262afb289059c252d6460a39c46f Binary files /dev/null and b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/audio_fm.png differ diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/banner1.jpg b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/banner1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a0f353be4bca926aec66bafdac1728f159faa2b2 Binary files /dev/null and b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/banner1.jpg differ diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/banner2.jpg b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/banner2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c03a7a13061663af268e5404e95673e387bc05c0 Binary files /dev/null and b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/banner2.jpg differ diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/banner3.jpg b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/banner3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..45d649adb12134987d5e3efe7251defaf5edf0b9 Binary files /dev/null and b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/banner3.jpg differ diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/banner4.jpg b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/banner4.jpg new file mode 100644 index 0000000000000000000000000000000000000000..063ea33b64419ccc6a4c93a4b7e782bf163e88b1 Binary files /dev/null and b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/banner4.jpg differ diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/banner5.jpg b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/banner5.jpg new file mode 100644 index 0000000000000000000000000000000000000000..063ea33b64419ccc6a4c93a4b7e782bf163e88b1 Binary files /dev/null and b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/banner5.jpg differ diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/banner6.jpg b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/banner6.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2f84af9183db51f64e75d79ff553f8e9b64343ce Binary files /dev/null and b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/banner6.jpg differ diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/bigImage.png b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/bigImage.png new file mode 100644 index 0000000000000000000000000000000000000000..c1f17f58534baf328388ddd1597afd46fbfcb722 Binary files /dev/null and b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/bigImage.png differ diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/bonus.svg b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/bonus.svg new file mode 100644 index 0000000000000000000000000000000000000000..98ab84e7d91b07071ff8be5a9af96db0f5e1bba3 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/bonus.svg @@ -0,0 +1,22 @@ + + + + + + + \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/down.png b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/down.png new file mode 100644 index 0000000000000000000000000000000000000000..ab770534f666b8ccc54452d436e2a50a64b2f151 Binary files /dev/null and b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/down.png differ diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/favorite.png b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/favorite.png new file mode 100644 index 0000000000000000000000000000000000000000..c4e0acd45b4bd3bde1d038d24d416b0102b00f1c Binary files /dev/null and b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/favorite.png differ diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/flexWrap1.png b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/flexWrap1.png new file mode 100644 index 0000000000000000000000000000000000000000..f569ee60d55d2d933b8b0f3119cdafb71ef72240 Binary files /dev/null and b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/flexWrap1.png differ diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/flexWrap2.png b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/flexWrap2.png new file mode 100644 index 0000000000000000000000000000000000000000..2833fbe6b6ad34d06f85d156d2f7eb208afc844c Binary files /dev/null and b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/flexWrap2.png differ diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/flexWrap3.png b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/flexWrap3.png new file mode 100644 index 0000000000000000000000000000000000000000..1b4a613558b810e26dfcb71c8e8f0260fbd2ffa2 Binary files /dev/null and b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/flexWrap3.png differ diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/flexWrap4.png b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/flexWrap4.png new file mode 100644 index 0000000000000000000000000000000000000000..80171d0a37b1480cbbc7b3a6c6f702adcab0c4a8 Binary files /dev/null and b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/flexWrap4.png differ diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/flexWrap5.png b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/flexWrap5.png new file mode 100644 index 0000000000000000000000000000000000000000..ca6b5eed635340e0ad476527451fc2b892103a57 Binary files /dev/null and b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/flexWrap5.png differ diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/flexWrap6.png b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/flexWrap6.png new file mode 100644 index 0000000000000000000000000000000000000000..7c7a9de0e6133bb42be607ce7bf270eb2a98cc9b Binary files /dev/null and b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/flexWrap6.png differ diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/hot.svg b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/hot.svg new file mode 100644 index 0000000000000000000000000000000000000000..4a0b890d8c2a2bb059603be0ff9d2ea94d7f462e --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/hot.svg @@ -0,0 +1,20 @@ + + + ic_label_heat + + + + \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/ic_gallery_template.svg b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/ic_gallery_template.svg new file mode 100644 index 0000000000000000000000000000000000000000..6fb82531797460e8d94d4ec0ea47ade307e1cda1 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/ic_gallery_template.svg @@ -0,0 +1,13 @@ + + + ic_template + + + + + + + + + + \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/ic_gallery_template_select.svg b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/ic_gallery_template_select.svg new file mode 100644 index 0000000000000000000000000000000000000000..ef9c6ac9dda670fb658d207d23eb61754fa45ea7 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/ic_gallery_template_select.svg @@ -0,0 +1,13 @@ + + + ic_template + + + + + + + + + + \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/ic_music_home.svg b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/ic_music_home.svg new file mode 100644 index 0000000000000000000000000000000000000000..b56164b9d96fe82e18e70530b404c666390d3a71 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/ic_music_home.svg @@ -0,0 +1,13 @@ + + + ic_music_home + + + + + + + + + + \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/ic_music_home_selected.svg b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/ic_music_home_selected.svg new file mode 100644 index 0000000000000000000000000000000000000000..f4bb22420ea9aabe0d6d1a6ecf4e23cb0cc1cde8 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/ic_music_home_selected.svg @@ -0,0 +1,13 @@ + + + ic_music_home_select + + + + + + + + + + \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/ic_music_me_nor.svg b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/ic_music_me_nor.svg new file mode 100644 index 0000000000000000000000000000000000000000..1a9e14cc4c4992b8e27ddcab97f2d164bb4faefb --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/ic_music_me_nor.svg @@ -0,0 +1,13 @@ + + + ic_music_me_nor + + + + + + + + + + \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/ic_music_me_selected.svg b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/ic_music_me_selected.svg new file mode 100644 index 0000000000000000000000000000000000000000..7d673063499e62f434dd3fa32e7908731252db7d --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/ic_music_me_selected.svg @@ -0,0 +1,13 @@ + + + ic_music_me_select + + + + + + + + + + \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/ic_music_ranking.svg b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/ic_music_ranking.svg new file mode 100644 index 0000000000000000000000000000000000000000..f90b419fd2a3f493ffadda76e2df45d9d4f76254 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/ic_music_ranking.svg @@ -0,0 +1,13 @@ + + + ic_music_ranking_select_nor + + + + + + + + + + \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/ic_music_ranking_selected.svg b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/ic_music_ranking_selected.svg new file mode 100644 index 0000000000000000000000000000000000000000..2777d92eb1de49fcfa386f58581e2db910527dfb --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/ic_music_ranking_selected.svg @@ -0,0 +1,13 @@ + + + ic_music_ranking_select + + + + + + + + + + \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/ic_public_albums.svg b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/ic_public_albums.svg new file mode 100644 index 0000000000000000000000000000000000000000..5d53e479151aa3f98ee0663a5b710a2dfe5be3fa --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/ic_public_albums.svg @@ -0,0 +1,13 @@ + + + Public/ic_public_albums + + + + + + + + + + \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/ic_public_albums_select.svg b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/ic_public_albums_select.svg new file mode 100644 index 0000000000000000000000000000000000000000..5cd147173a7aac148d3811b41ef962b91bffef23 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/ic_public_albums_select.svg @@ -0,0 +1,13 @@ + + + Public/ic_public_albums + + + + + + + + + + \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/ic_public_contacts.svg b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/ic_public_contacts.svg new file mode 100644 index 0000000000000000000000000000000000000000..5ee8b38e2b2db5de2bfd66958bbd06b38379a4dc --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/ic_public_contacts.svg @@ -0,0 +1,13 @@ + + + Public/ic_public_contacts + + + + + + + + + + \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/ic_public_contacts_select.svg b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/ic_public_contacts_select.svg new file mode 100644 index 0000000000000000000000000000000000000000..e94efe84f9bdabc49bdcff81a2895b81aaf9b227 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/ic_public_contacts_select.svg @@ -0,0 +1,13 @@ + + + Public/ic_public_contacts + + + + + + + + + + \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/ic_public_home.svg b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/ic_public_home.svg new file mode 100644 index 0000000000000000000000000000000000000000..0418a7f41e8188c7e6c87e7f55995467f1b86df2 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/ic_public_home.svg @@ -0,0 +1,13 @@ + + + Public/ic_public_home + + + + + + + + + + \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/ic_public_home_select.svg b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/ic_public_home_select.svg new file mode 100644 index 0000000000000000000000000000000000000000..765c21d0dca876d163f673b2b0c3073f630d7caf --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/ic_public_home_select.svg @@ -0,0 +1,13 @@ + + + Public/ic_public_home + + + + + + + + + + \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/ic_public_more.svg b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/ic_public_more.svg new file mode 100644 index 0000000000000000000000000000000000000000..6edafee6706faf87b9f03443535a2f8ae7773646 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/ic_public_more.svg @@ -0,0 +1,13 @@ + + + Public/ic_public_more_filled + + + + + + + + + + \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/icon.png b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ce307a8827bd75456441ceb57d530e4c8d45d36c Binary files /dev/null and b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/icon.png differ diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/illustrator.png b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/illustrator.png new file mode 100644 index 0000000000000000000000000000000000000000..ea8c4e30936ed74c8c2f50e5f16a9fb3eddca390 Binary files /dev/null and b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/illustrator.png differ diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/lg.svg b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/lg.svg new file mode 100644 index 0000000000000000000000000000000000000000..da9bec40875c6fbbced355afc17ada340e74ac21 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/lg.svg @@ -0,0 +1,10 @@ + + + + Filled/ic_device_pad_filled + Created with Sketch. + + + + + \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/list.png b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/list.png new file mode 100644 index 0000000000000000000000000000000000000000..d5166e48f41904449837c70227278b1eb0f3a498 Binary files /dev/null and b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/list.png differ diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/md.svg b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/md.svg new file mode 100644 index 0000000000000000000000000000000000000000..a849299f426b6c216b1ad959dad2437efb3b6b73 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/md.svg @@ -0,0 +1,11 @@ + + + + Filled/ic_device_foldablescreen_filled + Created with Sketch. + + + + + + \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/my_image.png b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/my_image.png new file mode 100644 index 0000000000000000000000000000000000000000..728ad63a337a79083dc032159b02e72e4a22123c Binary files /dev/null and b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/my_image.png differ diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/my_image_moon.png b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/my_image_moon.png new file mode 100644 index 0000000000000000000000000000000000000000..431c1cbeb9189f993cfa28ad519614e3267a550d Binary files /dev/null and b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/my_image_moon.png differ diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/next.png b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/next.png new file mode 100644 index 0000000000000000000000000000000000000000..3886532071bd2597f15eea18807e2d6ab7572d2e Binary files /dev/null and b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/next.png differ diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/pause.png b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/pause.png new file mode 100644 index 0000000000000000000000000000000000000000..5f062d161c95b3d08a4b17605d8f81fc5d0119ce Binary files /dev/null and b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/pause.png differ diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/rank.png b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/rank.png new file mode 100644 index 0000000000000000000000000000000000000000..4d95e4f1dd742d54abea0c2d76abe174e15adef3 Binary files /dev/null and b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/rank.png differ diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/self_fm.png b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/self_fm.png new file mode 100644 index 0000000000000000000000000000000000000000..9066c4f49a5bca6aa75a9458b87fa7fa73c3a99e Binary files /dev/null and b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/self_fm.png differ diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/sing.gif b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/sing.gif new file mode 100644 index 0000000000000000000000000000000000000000..2c136a7baa6e250dc7d548f7bf1468ddc913df65 Binary files /dev/null and b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/sing.gif differ diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/singer.png b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/singer.png new file mode 100644 index 0000000000000000000000000000000000000000..d78457eab9e5fe31b07971ef6048f1c80921d445 Binary files /dev/null and b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/singer.png differ diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/sm.svg b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/sm.svg new file mode 100644 index 0000000000000000000000000000000000000000..31d2b892b76720b700b2f044f52075c88d22283a --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/sm.svg @@ -0,0 +1,13 @@ + + + Public/ic_public_devices_phone_filled + + + + + + + + + + \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/song_list.png b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/song_list.png new file mode 100644 index 0000000000000000000000000000000000000000..d319c4dd767fbaa5a0f6136ce05ff4b3213313b3 Binary files /dev/null and b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/song_list.png differ diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/sport.svg b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/sport.svg new file mode 100644 index 0000000000000000000000000000000000000000..528888a7bba5b6f396a3f539318c6c84db5d2b3b --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/sport.svg @@ -0,0 +1,17 @@ + + + + + + \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/xs.svg b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/xs.svg new file mode 100644 index 0000000000000000000000000000000000000000..cfa2b9fe021e297f7a22ebd8ff32752a28ac944c --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/media/xs.svg @@ -0,0 +1,10 @@ + + + + Filled/ic_device_watch_filled + Created with Sketch. + + + + + \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/profile/main_pages.json b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/profile/main_pages.json new file mode 100644 index 0000000000000000000000000000000000000000..41f2f703efdb986fd10d81d26505125a5c5f50e6 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/base/profile/main_pages.json @@ -0,0 +1,44 @@ +{ + "src": [ + "pages/Index", + "pages/atomicLayoutCapability/AtomicLayoutCapabilityIndex", + "pages/atomicLayoutCapability/equipartitionCapability/EquipartitionCapability", + "pages/atomicLayoutCapability/extensionCapability/ExtensionCapability1", + "pages/atomicLayoutCapability/extensionCapability/ExtensionCapability2", + "pages/atomicLayoutCapability/flexibleCapability/FlexibleCapability1", + "pages/atomicLayoutCapability/flexibleCapability/FlexibleCapability2", + "pages/atomicLayoutCapability/hiddenCapability/HiddenCapability", + "pages/atomicLayoutCapability/proportionCapability/ProportionCapability", + "pages/atomicLayoutCapability/scaleCapability/ScaleCapability", + "pages/atomicLayoutCapability/wrapCapability/WrapCapability", + "pages/resourceQualifier/ResourceQualifier", + "pages/gridRow/GridRowLayoutIndex", + "pages/gridRow/gridRow/GridRowSample1", + "pages/gridRow/gridRow/GridRowSample2", + "pages/gridRow/gridRow/GridRowSample3", + "pages/gridRow/gridRow/GridRowSample4", + "pages/gridRow/gridRow/GridRowSample5", + "pages/gridRow/gridRow/GridRowSample6", + "pages/gridRow/gridRow/GridRowSample7", + "pages/gridRow/gridRow/GridRowSample8", + "pages/gridRow/gridRow/GridRowSample9", + "pages/gridRow/gridRow/GridRowSample10", + "pages/responsiveLayout/ResponsiveLayoutIndex", + "pages/responsiveLayout/breakpoint/BreakpointSample", + "pages/responsiveLayout/mediaQuery/MediaQuerySample", + "pages/typicalScene/TypicalSceneIndex", + "pages/typicalScene/indentation/IndentationSample", + "pages/typicalScene/diversion/DiversionSample", + "pages/typicalScene/repeat/RepeatSample", + "pages/typicalScene/header/HeaderSample", + "pages/typicalScene/banner/BannerSample", + "pages/typicalScene/operationEntries/OperationEntriesSample", + "pages/typicalScene/tabs/TabsSample", + "pages/typicalScene/multiLaneList/MultiLaneListSample", + "pages/typicalScene/responsiveGrid/ResponsiveGridSample", + "pages/typicalScene/sidebar/SidebarSample", + "pages/typicalScene/bigImage/BigImageSample", + "pages/typicalScene/multiScene/pages/MultiScene", + "pages/interactionNormCapability/InteractionNormCapability" + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/en/element/string.json b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/en/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..1153fdcfb5a08342aee83d2ce39928064f6a0fef --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/en/element/string.json @@ -0,0 +1,440 @@ +{ + "string": [ + { + "name": "entry_desc", + "value": "description" + }, + { + "name": "MainAbility_desc", + "value": "description" + }, + { + "name": "EntryAbility_label", + "value": "AdaptiveCapabilities" + }, + { + "name": "my_string", + "value": "phone" + }, + { + "name": "home_title", + "value": "Page development-Adaptive Capabilities" + }, + { + "name": "resource_qualifier", + "value": "Resource qualifier" + }, + { + "name": "atomic_capability", + "value": "Atomic layout capability" + }, + { + "name": "responsive_layout", + "value": "Responsive layout" + }, + { + "name": "flex_capability_first", + "value": "Flexible capability first" + }, + { + "name": "flex_capability_second", + "value": "Flexible capability second" + }, + { + "name": "scaling_capability", + "value": "Scaling capability" + }, + { + "name": "hidden_capability", + "value": "Hidden capability" + }, + { + "name": "wrap_capability", + "value": "Wrap capability" + }, + { + "name": "equally_capability", + "value": "Equally capability" + }, + { + "name": "percentage_capability", + "value": "Percentage capability" + }, + { + "name": "extension_capability_first", + "value": "Extension capacity first" + }, + { + "name": "extension_capability_second", + "value": "Extension capacity second" + }, + { + "name": "healthy_use_phone", + "value": "Healthy use of phone" + }, + { + "name": "media_query", + "value": "Media query" + }, + { + "name": "grid_layout", + "value": "Grid layout" + }, + { + "name": "grid_layout1", + "value": "Grid breakpoint 1" + }, + { + "name": "grid_layout2", + "value": "Grid breakpoint 2" + }, + { + "name": "grid_layout3", + "value": "Grid columns and gutter" + }, + { + "name": "grid_layout4", + "value": "Grid margin" + }, + { + "name": "grid_layout5", + "value": "Grid span" + }, + { + "name": "grid_layout6", + "value": "Grid offset" + }, + { + "name": "grid_layout7", + "value": "Grid order" + }, + { + "name": "grid_layout8", + "value": "Grid inheritance of span/offset/order" + }, + { + "name": "grid_layout9", + "value": "Grid nested" + }, + { + "name": "grid_layout10", + "value": "Grid alignItem" + }, + { + "name": "typical_scenario", + "value": "Typical scenario" + }, + { + "name": "diversion_layout", + "value": "Diversion layout" + }, + { + "name": "repeat_layout", + "value": "Repeat layout" + }, + { + "name": "indentation_layout", + "value": "Indentation layout" + }, + { + "name": "header", + "value": "header" + }, + { + "name": "banner", + "value": "banner" + }, + { + "name": "operationEntries", + "value": "operation entries" + }, + { + "name": "tabs", + "value": "tabs layout" + }, + { + "name": "bigImage", + "value": "big image" + }, + { + "name": "multiLaneList", + "value": "multi lane list" + }, + { + "name": "grid", + "value": "grid layout" + }, + { + "name": "aside", + "value": "aside" + }, + { + "name": "multiScene", + "value": "multiScene" + }, + { + "name": "user_improvement", + "value": "User Experience Improvement Program" + }, + { + "name": "user_improvement_tips", + "value": "The User Experience Improvement Program improves huawei's product and service quality through system, application analysis, and fault diagnosis." + }, + { + "name": "show_app_name", + "value": "App name" + }, + { + "name": "left", + "value": "Left" + }, + { + "name": "center", + "value": "Center" + }, + { + "name": "right", + "value": "Right" + }, + { + "name": "portrait", + "value": "Portrait" + }, + { + "name": "landscape", + "value": "Landscape" + }, + { + "name": "recommended", + "value": "Recommended" + }, + { + "name": "operation1", + "value": "Private FM" + }, + { + "name": "operation2", + "value": "Singer" + }, + { + "name": "operation3", + "value": "Playlist" + }, + { + "name": "operation4", + "value": "Ranking List" + }, + { + "name": "operation5", + "value": "Hot" + }, + { + "name": "operation6", + "value": "Sports Music" + }, + { + "name": "operation7", + "value": "Music FM" + }, + { + "name": "operation8", + "value": "Welfare" + }, + { + "name": "playlist_collection", + "value": "Playlist Collection" + }, + { + "name": "tabBar1", + "value": "Home" + }, + { + "name": "tabBar2", + "value": "Ranking List" + }, + { + "name": "tabBar3", + "value": "My" + }, + { + "name": "breakpoint", + "value": "breakpoint" + }, + { + "name": "Radio_GridRow_All_LCR", + "value": "All GridColl L-C-R" + }, + { + "name": "Radio_GridRow_All_TMB", + "value": "All GridColl T-M-B" + }, + { + "name": "Radio_GridRow_Sg_LCR", + "value": "Second Grid L-C-R" + }, + { + "name": "Radio_GridRow_Sg_TMB", + "value": "Second Grid T-M-B" + }, + { + "name": "multiScene_tabs_home", + "value": "home" + }, + { + "name": "multiScene_tabs_app", + "value": "apps" + }, + { + "name": "multiScene_tabs_play", + "value": "play" + }, + { + "name": "multiScene_tabs_me", + "value": "me" + }, + { + "name": "multiScene_header_title", + "value": "Good morning~" + }, + { + "name": "multiScene_header_subtitle", + "value": "Never give up on someone you miss every day!" + }, + { + "name": "multiScene_my_content", + "value": "my content" + }, + { + "name": "multiScene_application", + "value": "multiScene_application" + }, + { + "name": "multiScene_title1", + "value": "The application of Artificial Intelligence technology in the medical field" + }, + { + "name": "multiScene_title1_disc", + "value": "To explore how artificial intelligence technology can improve medical services, diagnosis accuracy and treatment effect." + }, + { + "name": "multiScene_title2", + "value": "The Impact of Blockchain technology on the financial Industry" + }, + { + "name": "multiScene_title2_disc", + "value": "Analyzing how blockchain technology can change the business model of traditional financial industry and improve transaction efficiency and security." + }, + { + "name": "multiScene_title3", + "value": "Machine Learning Algorithms for autonomous driving" + }, + { + "name": "multiScene_title3_disc", + "value": "Introducing how to realize automatic driving function with machine learning algorithm, and discusses its development prospects in the future transportation field." + }, + { + "name": "multiScene_title4", + "value": "The application of Virtual Reality Technology in the game industry" + }, + { + "name": "multiScene_title4_disc", + "value": "Discussing how virtual reality technology can change the game play and user experience in the game industry, and analyzes its development trend in the future entertainment field." + }, + { + "name": "multiScene_title5", + "value": "The impact of 5G technology on the communication industry" + }, + { + "name": "multiScene_title5_disc", + "value": "Analyzing how 5G technology will change the business model and user needs of the communication industry, and discusses its application prospects in the future digital society." + }, + { + "name": "multiScene_title6", + "value": "The Application of Internet of Things technology in Smart City" + }, + { + "name": "multiScene_title6_disc", + "value": "Introducing how the Internet of Things technology realizes the construction and management of smart city, and analyzes its importance and role in the future city development." + }, + { + "name": "multiScene_title7", + "value": "The application of biotechnology in agriculture" + }, + { + "name": "multiScene_title7_disc", + "value": "Discussing how biotechnology can improve agricultural production and protect ecological environment, and analyzes its role in future food security and sustainable development." + }, + { + "name": "multiScene_title8", + "value": "Advances and Challenges in Quantum Computer Technology" + }, + { + "name": "multiScene_title8_disc", + "value": " Introducing the basic principles and application prospects of quantum computer technology, and discusses its current technical problems and development trends." + }, + { + "name": "multiScene_title9", + "value": "The Application of Big Data Technology in Enterprise Management" + }, + { + "name": "multiScene_title9_disc", + "value": "Analyzing how big data technology can assist enterprise management, improve operational efficiency and decision-making level, and discusses its advantages and challenges in future business competition." + }, + { + "name": "multiScene_title10", + "value": "The Impact of Artificial Intelligence Technology on the Education Industry" + }, + { + "name": "multiScene_title10_disc", + "value": "Discussing how artificial intelligence technology can change the way and content of education and teaching, and analyzes its role and challenges in future education development." + }, + { + "name": "interaction_norm_capability", + "value": "Interaction normalization capability" + }, + { + "name": "interaction_norm_capability_tips", + "value": "Please keyboard" + }, + { + "name": "up", + "value": "Up" + }, + { + "name": "down", + "value": "Down" + }, + { + "name": "select", + "value": "Select" + }, + { + "name": "escape", + "value": "Escape" + }, + { + "name": "back", + "value": "Back" + }, + { + "name": "menu", + "value": "Menu" + }, + { + "name": "page_up", + "value": "Page up" + }, + { + "name": "page_down", + "value": "Page down" + }, + { + "name": "zoom_out", + "value": "Zoom out" + }, + { + "name": "zoom_in", + "value": "Zoom in" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/tablet/element/color.json b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/tablet/element/color.json new file mode 100644 index 0000000000000000000000000000000000000000..e254725e8dbe5a330b2e6161e9020f3948939758 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/tablet/element/color.json @@ -0,0 +1,8 @@ +{ + "color": [ + { + "name": "my_color", + "value": "#0000ff" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/tablet/element/float.json b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/tablet/element/float.json new file mode 100644 index 0000000000000000000000000000000000000000..62939c7f2426b8492c105fb823ebae75bf032b65 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/tablet/element/float.json @@ -0,0 +1,8 @@ +{ + "float": [ + { + "name": "my_float", + "value": "80vp" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/tablet/element/string.json b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/tablet/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..ba74f488078faf21ad166973e87084e9b29e58e1 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/tablet/element/string.json @@ -0,0 +1,20 @@ +{ + "string": [ + { + "name": "entry_desc", + "value": "description" + }, + { + "name": "MainAbility_desc", + "value": "description" + }, + { + "name": "EntryAbility_label", + "value": "AdaptiveCapabilities" + }, + { + "name": "my_string", + "value": "tablet" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/tablet/media/back.png b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/tablet/media/back.png new file mode 100644 index 0000000000000000000000000000000000000000..37bf981bb4de2c91bf6352badb0f913d5927b60b Binary files /dev/null and b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/tablet/media/back.png differ diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/tablet/media/my_image.png b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/tablet/media/my_image.png new file mode 100644 index 0000000000000000000000000000000000000000..431c1cbeb9189f993cfa28ad519614e3267a550d Binary files /dev/null and b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/tablet/media/my_image.png differ diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/tablet/profile/main_pages.json b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/tablet/profile/main_pages.json new file mode 100644 index 0000000000000000000000000000000000000000..4d1901421cfe2aaee11494324c12ffc2c3b2d544 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/tablet/profile/main_pages.json @@ -0,0 +1,17 @@ +{ + "src": [ + "pages/Index", + "pages/atomicLayoutCapability/AtomicLayoutCapabilityIndex", + "pages/atomicLayoutCapability/equipartitionCapability/EquipartitionCapability", + "pages/atomicLayoutCapability/extensionCapability/extensionCapability", + "pages/atomicLayoutCapability/flexibleCapability/flexibleCapability", + "pages/atomicLayoutCapability/hiddenCapability/HiddenCapability", + "pages/atomicLayoutCapability/proportionCapability/ProportionCapability", + "pages/atomicLayoutCapability/scaleCapability/ScaleCapability", + "pages/atomicLayoutCapability/wrapCapability/WrapCapability", + "pages/resourceQualifier/ResourceQualifier", + "pages/gridRow/gridRow/GridContainerSample", + "pages/responsiveLayout/mediaQuery/MediaQuerySample", + "pages/responsiveLayout/typicalScene/diversion/DiversionSample" + ] +} diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/zh/element/string.json b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/zh/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..9c8e53c5dccdb42846ebed1deabb6eee069f972c --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/main/resources/zh/element/string.json @@ -0,0 +1,440 @@ +{ + "string": [ + { + "name": "entry_desc", + "value": "description" + }, + { + "name": "MainAbility_desc", + "value": "description" + }, + { + "name": "EntryAbility_label", + "value": "AdaptiveCapabilities" + }, + { + "name": "my_string", + "value": "手机" + }, + { + "name": "home_title", + "value": "页面开发一多能力" + }, + { + "name": "resource_qualifier", + "value": "资源文件使用" + }, + { + "name": "atomic_capability", + "value": "自适应布局" + }, + { + "name": "responsive_layout", + "value": "响应式布局" + }, + { + "name": "flex_capability_first", + "value": "拉伸能力1" + }, + { + "name": "flex_capability_second", + "value": "拉伸能力2" + }, + { + "name": "scaling_capability", + "value": "缩放能力" + }, + { + "name": "hidden_capability", + "value": "隐藏能力" + }, + { + "name": "wrap_capability", + "value": "折行能力" + }, + { + "name": "equally_capability", + "value": "均分能力" + }, + { + "name": "percentage_capability", + "value": "占比能力" + }, + { + "name": "extension_capability_first", + "value": "延伸能力1" + }, + { + "name": "extension_capability_second", + "value": "延伸能力2" + }, + { + "name": "healthy_use_phone", + "value": "健康使用手机" + }, + { + "name": "media_query", + "value": "媒体查询" + }, + { + "name": "grid_layout", + "value": "栅格布局" + }, + { + "name": "grid_layout1", + "value": "栅格断点1" + }, + { + "name": "grid_layout2", + "value": "栅格断点2" + }, + { + "name": "grid_layout3", + "value": "栅格columns和gutter" + }, + { + "name": "grid_layout4", + "value": "栅格margin" + }, + { + "name": "grid_layout5", + "value": "栅格span" + }, + { + "name": "grid_layout6", + "value": "栅格offset" + }, + { + "name": "grid_layout7", + "value": "栅格order" + }, + { + "name": "grid_layout8", + "value": "栅格span/offset/order继承性" + }, + { + "name": "grid_layout9", + "value": "栅格嵌套" + }, + { + "name": "grid_layout10", + "value": "栅格对齐" + }, + { + "name": "typical_scenario", + "value": "典型布局场景" + }, + { + "name": "diversion_layout", + "value": "挪移布局" + }, + { + "name": "repeat_layout", + "value": "重复布局" + }, + { + "name": "indentation_layout", + "value": "缩进布局" + }, + { + "name": "header", + "value": "顶部布局" + }, + { + "name": "banner", + "value": "广告栏" + }, + { + "name": "operationEntries", + "value": "操作入口" + }, + { + "name": "tabs", + "value": "页签布局" + }, + { + "name": "bigImage", + "value": "大图浏览" + }, + { + "name": "multiLaneList", + "value": "多列列表" + }, + { + "name": "grid", + "value": "网格视图" + }, + { + "name": "aside", + "value": "侧边栏" + }, + { + "name": "multiScene", + "value": "一多典型场景" + }, + { + "name": "user_improvement", + "value": "用户体验改进计划" + }, + { + "name": "user_improvement_tips", + "value": "用户体验改进计划通过系统、应用分析、故障诊断、提升华为的产品和服务质量。" + }, + { + "name": "show_app_name", + "value": "应用名称" + }, + { + "name": "left", + "value": "左" + }, + { + "name": "center", + "value": "中" + }, + { + "name": "right", + "value": "右" + }, + { + "name": "portrait", + "value": "竖屏" + }, + { + "name": "landscape", + "value": "横屏" + }, + { + "name": "recommended", + "value": "推荐" + }, + { + "name": "operation1", + "value": "私人FM" + }, + { + "name": "operation2", + "value": "歌手" + }, + { + "name": "operation3", + "value": "歌单" + }, + { + "name": "operation4", + "value": "排行榜" + }, + { + "name": "operation5", + "value": "热门" + }, + { + "name": "operation6", + "value": "运动音乐" + }, + { + "name": "operation7", + "value": "音乐FM" + }, + { + "name": "operation8", + "value": "福利" + }, + { + "name": "playlist_collection", + "value": "歌单集合" + }, + { + "name": "tabBar1", + "value": "首页" + }, + { + "name": "tabBar2", + "value": "排行榜" + }, + { + "name": "tabBar3", + "value": "我的" + }, + { + "name": "breakpoint", + "value": "断点" + }, + { + "name": "Radio_GridRow_All_LCR", + "value": "All GridColl 左中右" + }, + { + "name": "Radio_GridRow_All_TMB", + "value": "All GridColl 上中下" + }, + { + "name": "Radio_GridRow_Sg_LCR", + "value": "Second Grid 左中右" + }, + { + "name": "Radio_GridRow_Sg_TMB", + "value": "Second Grid 上中下" + }, + { + "name": "multiScene_tabs_home", + "value": "首页" + }, + { + "name": "multiScene_tabs_app", + "value": "应用" + }, + { + "name": "multiScene_tabs_play", + "value": "播放" + }, + { + "name": "multiScene_tabs_me", + "value": "我的" + }, + { + "name": "multiScene_header_title", + "value": "早上好呀~" + }, + { + "name": "multiScene_header_subtitle", + "value": "永远别放弃一个你每天都在想念的人!" + }, + { + "name": "multiScene_my_content", + "value": "我的内容" + }, + { + "name": "multiScene_application", + "value": "应用" + }, + { + "name": "multiScene_title1", + "value": "人工智能技术在医疗领域的应用" + }, + { + "name": "multiScene_title1_disc", + "value": "探讨人工智能技术如何改善医疗服务,提高诊断准确率和治疗效果。" + }, + { + "name": "multiScene_title2", + "value": "区块链技术对金融行业的影响" + }, + { + "name": "multiScene_title2_disc", + "value": "分析区块链技术如何改变传统金融行业的商业模式,提高交易效率和安全性。" + }, + { + "name": "multiScene_title3", + "value": "机器学习算法在自动驾驶中的应用" + }, + { + "name": "multiScene_title3_disc", + "value": "介绍机器学习算法如何实现自动驾驶功能,探讨其在未来交通领域的发展前景。" + }, + { + "name": "multiScene_title4", + "value": "虚拟现实技术在游戏产业的应用" + }, + { + "name": "multiScene_title4_disc", + "value": "探讨虚拟现实技术如何改变游戏产业的玩法和用户体验,分析其在未来娱乐领域的发展趋势。" + }, + { + "name": "multiScene_title5", + "value": "5G技术对通信行业的影响" + }, + { + "name": "multiScene_title5_disc", + "value": "分析5G技术如何改变通信行业的商业模式和用户需求,探讨其在未来数字化社会中的应用前景。" + }, + { + "name": "multiScene_title6", + "value": "物联网技术在智慧城市中的应用" + }, + { + "name": "multiScene_title6_disc", + "value": "介绍物联网技术如何实现智慧城市的建设和管理,分析其在未来城市发展中的重要性和作用。" + }, + { + "name": "multiScene_title7", + "value": "生物技术在农业领域的应用" + }, + { + "name": "multiScene_title7_disc", + "value": "探讨生物技术如何改善农业生产和保护生态环境,分析其在未来粮食安全和可持续发展中的作用。" + }, + { + "name": "multiScene_title8", + "value": "量子计算机技术的发展与挑战" + }, + { + "name": "multiScene_title8_disc", + "value": "介绍量子计算机技术的基本原理和应用前景,探讨其目前面临的技术难题和发展趋势。" + }, + { + "name": "multiScene_title9", + "value": "大数据技术在企业管理中的应用" + }, + { + "name": "multiScene_title9_disc", + "value": "分析大数据技术如何协助企业管理,提高经营效率和决策水平,探讨其在未来商业竞争中的优势和挑战。" + }, + { + "name": "multiScene_title10", + "value": "人工智能技术对教育行业的影响" + }, + { + "name": "multiScene_title10_disc", + "value": "探讨人工智能技术如何改变教育教学的方式和内容,分析其在未来教育发展中的作用和挑战。" + }, + { + "name": "interaction_norm_capability", + "value": "交互归一能力" + }, + { + "name": "interaction_norm_capability_tips", + "value": "请使用键盘操作" + }, + { + "name": "up", + "value": "上" + }, + { + "name": "down", + "value": "下" + }, + { + "name": "select", + "value": "选择" + }, + { + "name": "escape", + "value": "逃逸" + }, + { + "name": "back", + "value": "返回" + }, + { + "name": "menu", + "value": "菜单" + }, + { + "name": "page_up", + "value": "上一页" + }, + { + "name": "page_down", + "value": "下一页" + }, + { + "name": "zoom_out", + "value": "缩小" + }, + { + "name": "zoom_in", + "value": "放大" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/ohosTest/ets/TestRunner/OpenHarmonyTestRunner.ts b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/ohosTest/ets/TestRunner/OpenHarmonyTestRunner.ts new file mode 100644 index 0000000000000000000000000000000000000000..427882d438d5c96337a7eb7639cff007be8c82fb --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/ohosTest/ets/TestRunner/OpenHarmonyTestRunner.ts @@ -0,0 +1,85 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import hilog from '@ohos.hilog'; +import TestRunner from '@ohos.application.testRunner' +import AbilityDelegatorRegistry from '@ohos.application.abilityDelegatorRegistry' + +var abilityDelegator = undefined +var abilityDelegatorArguments = undefined + +function translateParamsToString(parameters) { + const keySet = new Set([ + '-s class', '-s notClass', '-s suite', '-s it', + '-s level', '-s testType', '-s size', '-s timeout', + '-s dryRun' + ]) + let targetParams = ''; + for (const key in parameters) { + if (keySet.has(key)) { + targetParams = `${targetParams} ${key} ${parameters[key]}` + } + } + return targetParams.trim() +} + +async function onAbilityCreateCallback() { + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO); + hilog.info(0x0000, 'testTag', '%{public}s', 'onAbilityCreateCallback'); +} + +async function addAbilityMonitorCallback(err: any) { + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO); + hilog.info(0x0000, 'testTag', 'addAbilityMonitorCallback : %{public}s', JSON.stringify(err) ?? ''); +} + +export default class OpenHarmonyTestRunner implements TestRunner { + constructor() { + } + + onPrepare() { + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO); + hilog.info(0x0000, 'testTag', '%{public}s', 'OpenHarmonyTestRunner OnPrepare '); + } + + async onRun() { + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO); + hilog.info(0x0000, 'testTag', '%{public}s', 'OpenHarmonyTestRunner onRun run'); + abilityDelegatorArguments = AbilityDelegatorRegistry.getArguments() + abilityDelegator = AbilityDelegatorRegistry.getAbilityDelegator() + var testAbilityName = abilityDelegatorArguments.bundleName + '.TestAbility' + let lMonitor = { + abilityName: testAbilityName, + onAbilityCreate: onAbilityCreateCallback, + }; + abilityDelegator.addAbilityMonitor(lMonitor, addAbilityMonitorCallback) + var cmd = 'aa start -d 0 -a TestAbility' + ' -b ' + abilityDelegatorArguments.bundleName + cmd += ' ' + translateParamsToString(abilityDelegatorArguments.parameters) + var debug = abilityDelegatorArguments.parameters['-D'] + if (debug == 'true') { + cmd += ' -D' + } + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO); + hilog.info(0x0000, 'testTag', 'cmd : %{public}s', cmd); + abilityDelegator.executeShellCommand(cmd, + (err: any, d: any) => { + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO); + hilog.info(0x0000, 'testTag', 'executeShellCommand : err : %{public}s', JSON.stringify(err) ?? ''); + hilog.info(0x0000, 'testTag', 'executeShellCommand : data : %{public}s', d.stdResult ?? ''); + hilog.info(0x0000, 'testTag', 'executeShellCommand : data : %{public}s', d.exitCode ?? ''); + }) + hilog.info(0x0000, 'testTag', '%{public}s', 'OpenHarmonyTestRunner onRun end'); + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/ohosTest/ets/test/Ability.test.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/ohosTest/ets/test/Ability.test.ets new file mode 100644 index 0000000000000000000000000000000000000000..f512462897356b9aeee8f48c76c919579f857adc --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/ohosTest/ets/test/Ability.test.ets @@ -0,0 +1,402 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from '@ohos/hypium' +import { Driver, ON } from '@ohos.UiTest' +import AbilityDelegatorRegistry from '@ohos.app.ability.abilityDelegatorRegistry' +import hilog from '@ohos.hilog' +import resmgr from '@ohos.resourceManager'; + +const TAG = '[Sample_AdaptiveCapabilities]' +const DOMAIN = 0xF811 +const BUNDLE = 'AdaptiveCapabilities_' + +let driver: Driver = Driver.create() +//通过id验证有没有这个组件 有的话点击一下 +async function checkButtonAndClickWithID(text: string) { + let idName = text + await driver.assertComponentExist(ON.id(idName)) + let button = await driver.findComponent(ON.id(idName)) + await button.click() + await driver.delayMs(1000) +} +//通过text验证有没有这个组件 有的话点击一下 +async function checkButtonAndClickWithText(text: string) { + let textName = text + await driver.assertComponentExist(ON.text(textName)) + let button = await driver.findComponent(ON.text(textName)) + await button.click() + await driver.delayMs(1000) +} + +// 获取AbilityDelegator +let abilityDelegatorRegistry = AbilityDelegatorRegistry.getAbilityDelegator(); +// 启动后获取app上下文 +let context: Context; +// 启动后获取resourceManager +let manager: resmgr.ResourceManager; + +async function checkRadioAndClickWithID(text: string) { + await driver.assertComponentExist(ON.id(text)); + let component = await driver.findComponent(ON.id(text)); + await component.click(); +} + +async function checkRadioAndClickWithText(text: string) { + await driver.assertComponentExist(ON.text(text)); + let component = await driver.findComponent(ON.text(text)); + await component.click(); +} + +let abilityDelegator = AbilityDelegatorRegistry.getAbilityDelegator() + +async function getResourceString(resource: Resource): Promise { + let manage = abilityDelegator.getAppContext().resourceManager + let text = await manage.getStringValue(resource) + return text +} + +export default function appTest() { + describe('ActsAbilityTest', () => { + /** + * 打开应用 + */ + it(BUNDLE + 'StartAbility_001 begin', 0, async (done: Function) => { + hilog.info(DOMAIN, TAG, BUNDLE + 'StartAbility_001 begin') + let abilityDelegator = AbilityDelegatorRegistry.getAbilityDelegator(); + try { + await abilityDelegator.startAbility({ + bundleName: 'ohos.samples.AdaptiveCapabilities', + abilityName: 'MainAbility' + }); + context = abilityDelegatorRegistry.getAppContext(); + manager = context.resourceManager; + done(); + } catch (err) { + expect(0).assertEqual(err?.code); + done(); + } + hilog.info(DOMAIN, TAG, BUNDLE + 'StartAbility_001 end') + }) + + /** + * 自适应布局 (目前坐标只适用于RK3568) + */ + it(BUNDLE + 'CreateAdaptiveCapabilitiesOneFunction_001', 0, async ()=> { + // create UiDriver + hilog.info(DOMAIN, TAG, BUNDLE + 'CreateAdaptiveCapabilitiesOneFunction_001 begin') + let driver = Driver.create() + await driver.delayMs(1000) + // 点击自适应布局 + await checkButtonAndClickWithID('AtomicLayoutCapabilityIndex') + // 点击拉伸能力1 + await checkButtonAndClickWithID('FlexibleCapability1') + // slider滑动 + await driver.swipe(410, 1017, 360, 1017, 200) + await driver.delayMs(1000) + await driver.pressBack() + await driver.delayMs(1000) + // 点击拉伸能力2 + await checkButtonAndClickWithID('FlexibleCapability2') + // 打开switch + await driver.assertComponentExist(ON.type('Toggle')) + let toggle = await driver.findComponent(ON.type('Toggle')) + await toggle.click() + await driver.delayMs(1000) + // slider滑动 + await driver.swipe(410, 1017, 360, 1017, 200) + await driver.delayMs(1000) + await driver.pressBack() + await driver.delayMs(1000) + // 点击缩放能力 + await checkButtonAndClickWithID('ScaleCapability') + // slider1滑动 + await driver.swipe(410, 1017, 360, 1017, 200) + await driver.delayMs(1000) + // slider2滑动 + await driver.swipe(410, 1017, 360, 1017, 200) + await driver.delayMs(1000) + await driver.pressBack() + await driver.delayMs(1000) + // 点击隐藏能力 + await checkButtonAndClickWithID('HiddenCapability') + // slider滑动 + await driver.swipe(410, 1017, 360, 1017, 200) + await driver.delayMs(1000) + await driver.pressBack() + await driver.delayMs(1000) + // 点击折行能力 + await checkButtonAndClickWithID('WrapCapability') + // slider滑动 + await driver.swipe(410, 1017, 360, 1017, 200) + await driver.delayMs(1000) + await driver.pressBack() + await driver.delayMs(1000) + // 点击均分能力 + await checkButtonAndClickWithID('EquipartitionCapability') + // slider滑动 + await driver.swipe(410, 1017, 360, 1017, 200) + await driver.delayMs(1000) + await driver.pressBack() + await driver.delayMs(1000) + // 向下滑动 + await driver.swipe(100, 500, 20, 20) + await driver.delayMs(1000) + // 点击占比能力 + await checkButtonAndClickWithID('ProportionCapability') + // slider滑动 + await driver.swipe(410, 1017, 360, 1017, 200) + await driver.delayMs(1000) + await driver.pressBack() + await driver.delayMs(1000) + // 点击延伸能力1 + await checkButtonAndClickWithID('ExtensionCapability1') + // scroll 应用滑动 + await driver.swipe(360, 639, 0, 639, 200) + await driver.delayMs(1000) + // slider滑动 + await driver.swipe(410, 1017, 360, 1017, 200) + await driver.delayMs(1000) + await driver.pressBack() + await driver.delayMs(1000) + // 点击延伸能力2 + await checkButtonAndClickWithID('ExtensionCapability2') + // scroll 应用滑动 + await driver.swipe(360, 639, 0, 639, 200) + await driver.delayMs(1000) + // slider滑动 + await driver.swipe(410, 1017, 360, 1017, 200) + await driver.delayMs(1000) + await driver.pressBack() + await driver.delayMs(1000) + await driver.pressBack() + await driver.delayMs(1000) + hilog.info(DOMAIN, TAG, BUNDLE + 'CreateAdaptiveCapabilitiesOneFunction_001 end') + }) + + /** + * 响应式布局 (目前坐标只适用于RK3568) + */ + it(BUNDLE + 'CreateAdaptiveCapabilitiesTwoFunction_001', 0, async () => { + // create UiDriver + hilog.info(DOMAIN, TAG, BUNDLE + 'CreateAdaptiveCapabilitiesTwoFunction_001 begin') + let driver = Driver.create() + await driver.delayMs(1000) + // 点击响应式布局 + await checkButtonAndClickWithID('ResponsiveLayoutIndex') + // 点击断点 + await checkButtonAndClickWithID('BreakpointSample') + await driver.pressBack() + await driver.delayMs(1000) + // 点击媒体查询 + await checkButtonAndClickWithID('MediaQuerySample') + await driver.pressBack() + await driver.delayMs(1000) + // 点击栅格布局 + await checkButtonAndClickWithID('GridRowLayoutIndex') + // 点击栅格断点1 + await checkButtonAndClickWithID('GridRowSample1') + await driver.pressBack() + await driver.delayMs(1000) + // 点击栅格断点2 + await checkButtonAndClickWithID('GridRowSample2') + await driver.pressBack() + await driver.delayMs(1000) + // 点击栅格columns和gutter + await checkButtonAndClickWithID('GridRowSample3') + let checkBtn = await driver.findComponent(ON.type('GridCol')); + await checkBtn.click(); + await driver.pressBack() + await driver.delayMs(1000) + // 点击栅格margin + await checkButtonAndClickWithID('GridRowSample4') + await driver.pressBack() + await driver.delayMs(1000) + // 点击栅格span + await checkButtonAndClickWithID('GridRowSample5') + await driver.pressBack() + await driver.delayMs(1000) + // 点击栅格offset + await checkButtonAndClickWithID('GridRowSample6') + await driver.pressBack() + await driver.delayMs(1000) + // 点击栅格order + await checkButtonAndClickWithID('GridRowSample7') + await driver.pressBack() + await driver.delayMs(1000) + // 向下滑动 + await driver.swipe(100, 500, 20, 20) + await driver.delayMs(1000) + // 点击栅格span/offset/order继承性 + await checkButtonAndClickWithID('GridRowSample8') + await driver.pressBack() + await driver.delayMs(1000) + // 点击栅格嵌套 + await checkButtonAndClickWithID('GridRowSample9') + await driver.pressBack() + await driver.delayMs(1000) + // 点击栅格对齐 + await checkButtonAndClickWithID('GridRowSample10'); + await checkRadioAndClickWithID('rdo11'); + await checkRadioAndClickWithID('rdo22'); + await checkRadioAndClickWithID('rdo33'); + await checkRadioAndClickWithID('rdo41'); + await driver.pressBack(); + await driver.delayMs(1000); + await driver.pressBack() + await driver.delayMs(1000) + await driver.pressBack() + await driver.delayMs(1000) + hilog.info(DOMAIN, TAG, BUNDLE + 'CreateAdaptiveCapabilitiesTwoFunction_001 end') + }) + + /** + * 典型布局场景 (目前坐标只适用于RK3568) + */ + it(BUNDLE + 'CreateAdaptiveCapabilitiesThreeFunction_001', 0, async () => { + // create UiDriver + hilog.info(DOMAIN, TAG, BUNDLE + 'CreateAdaptiveCapabilitiesThreeFunction_001 begin') + let driver = Driver.create() + await driver.delayMs(1000) + // 点击典型布局场景 + await checkButtonAndClickWithID('TypicalSceneIndex') + // 点击挪移布局 + await checkButtonAndClickWithID('DiversionSample') + await driver.pressBack() + await driver.delayMs(1000) + // 点击重复布局 + await checkButtonAndClickWithID('RepeatSample') + // scroll 滑动 + await driver.swipe(360, 640, 360, 0, 200) + await driver.delayMs(1000) + await driver.pressBack() + await driver.delayMs(1000) + // 点击缩进布局 + await checkButtonAndClickWithID('IndentationSample') + await driver.pressBack() + await driver.delayMs(1000) + // 点击顶部布局 + await checkButtonAndClickWithID('HeaderSample') + await driver.pressBack() + await driver.delayMs(1000) + await driver.pressBack(); + await driver.delayMs(1000); + // 点击广告栏 + await checkButtonAndClickWithID('BannerSample') + // swiper滑动 + await driver.swipe(360, 222, 0, 222, 1000) + await driver.swipe(360, 222, 0, 222, 1000) + await driver.swipe(360, 222, 0, 222, 1000) + await driver.swipe(360, 222, 0, 222, 1000) + await driver.swipe(360, 222, 0, 222, 1000) + await driver.delayMs(1000) + await driver.pressBack() + await driver.delayMs(1000) + // 点击操作入口 + await checkButtonAndClickWithID('OperationEntriesSample') + await driver.swipe(360, 150, 0, 150, 200) + await driver.delayMs(1000) + await driver.pressBack() + await driver.delayMs(1000) + // 向下滑动 + await driver.swipe(100, 500, 20, 20) + await driver.delayMs(1000) + // 点击页签布局 + await checkButtonAndClickWithID('TabsSample') + // 点击排行榜 + await checkButtonAndClickWithText(await getResourceString($r('app.string.tabBar2'))) + // 点击我的 + await checkButtonAndClickWithText(await getResourceString($r('app.string.tabBar3'))) + await driver.pressBack() + await driver.delayMs(1000) + // 点击大图浏览 + await checkButtonAndClickWithID('BigImageSample') + await driver.pressBack() + await driver.delayMs(1000) + // 点击多列列表 + await checkButtonAndClickWithID('MultiLaneListSample') + // 向下滑动 + await driver.swipe(100, 500, 20, 20) + await driver.delayMs(1000) + await driver.pressBack() + await driver.delayMs(1000) + // 点击网格视图 + await checkButtonAndClickWithID('ResponsiveGridSample') + // 向下滑动 + await driver.swipe(100, 500, 20, 20) + await driver.delayMs(1000) + await driver.pressBack() + await driver.delayMs(1000) + // 点击侧边栏 + await checkButtonAndClickWithID('SidebarSample') + await driver.pressBack() + await driver.delayMs(1000) + //向下下滑 + await driver.swipe(360, 900, 360, 200, 2000) + //点击一多典型场景 + await checkButtonAndClickWithID('multiScene') + //上下滑动list + await driver.swipe(360, 1100, 360, 900, 200) + //左右滑动swiper + await driver.swipe(700, 300, 20, 300, 1000) + await checkButtonAndClickWithText(await getResourceString($r('app.string.multiScene_tabs_app'))) + //上下滑动应用列表 + await driver.swipe(360, 1100, 360, 900, 200) + await checkButtonAndClickWithText(await getResourceString($r('app.string.multiScene_tabs_play'))) + await checkButtonAndClickWithText(await getResourceString($r('app.string.multiScene_tabs_me'))) + await driver.swipe(20, 300, 700, 300, 1000) + await driver.swipe(20, 300, 700, 300, 1000) + await driver.swipe(20, 300, 700, 300, 1000) + await driver.pressBack() + await driver.delayMs(1000) + await driver.pressBack() + await driver.delayMs(1000) + hilog.info(DOMAIN, TAG, BUNDLE + 'CreateAdaptiveCapabilitiesThreeFunction_001 end') + }) + + /** + * 资源文件使用 + */ + it(BUNDLE + 'CreateAdaptiveCapabilitiesFourFunction_001', 0, async () => { + // create UiDriver + hilog.info(DOMAIN, TAG, BUNDLE + 'CreateAdaptiveCapabilitiesFourFunction_001 begin') + let driver = Driver.create() + await driver.delayMs(1000) + // 点击资源文件使用 + await checkButtonAndClickWithID('ResourceQualifier') + await driver.delayMs(1000) + await driver.pressBack() + await driver.delayMs(1000) + hilog.info(DOMAIN, TAG, BUNDLE + 'CreateAdaptiveCapabilitiesFourFunction_001 end') + }) + + /** + * 交互归一能力 + */ + it(BUNDLE + 'CreateAdaptiveCapabilitiesFiveFunction_001', 0, async () => { + // create UiDriver + hilog.info(DOMAIN, TAG, BUNDLE + 'CreateAdaptiveCapabilitiesFiveFunction_001 begin') + let driver = Driver.create() + await driver.delayMs(1000) + // 点击交互归一能力 + await checkButtonAndClickWithID('InteractionNormCapability') + await driver.delayMs(1000) + await driver.pressBack() + await driver.delayMs(1000) + hilog.info(DOMAIN, TAG, BUNDLE + 'CreateAdaptiveCapabilitiesFiveFunction_001 end') + }) + }) +} + diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/ohosTest/ets/test/List.test.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/ohosTest/ets/test/List.test.ets new file mode 100644 index 0000000000000000000000000000000000000000..27c07a1a174f6862ea84c4bb5f45bc1789234441 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/ohosTest/ets/test/List.test.ets @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import abilityTest from './Ability.test' + +export default function testsuite() { + abilityTest() +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/ohosTest/ets/testability/TestAbility.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/ohosTest/ets/testability/TestAbility.ets new file mode 100644 index 0000000000000000000000000000000000000000..ff8fcf96f026a675d81fbeaf93cd460c21345993 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/ohosTest/ets/testability/TestAbility.ets @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import hilog from '@ohos.hilog'; +import UIAbility from '@ohos.app.ability.UIAbility' +import AbilityDelegatorRegistry from '@ohos.app.ability.abilityDelegatorRegistry' +import { Hypium } from '@ohos/hypium' +import testsuite from '../test/List.test' +import Window from '@ohos.window' +import Want from '@ohos.app.ability.Want'; +import AbilityConstant from '@ohos.app.ability.AbilityConstant'; + +export default class TestAbility extends UIAbility { + onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) { + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO); + hilog.info(0x0000, 'testTag', '%{public}s', 'TestAbility onCreate'); + hilog.info(0x0000, 'testTag', '%{public}s', 'want param:' + JSON.stringify(want) ?? ''); + hilog.info(0x0000, 'testTag', '%{public}s', 'launchParam:'+ JSON.stringify(launchParam) ?? ''); + let abilityDelegator: AbilityDelegatorRegistry.AbilityDelegator; + abilityDelegator = AbilityDelegatorRegistry.getAbilityDelegator() + let abilityDelegatorArguments: AbilityDelegatorRegistry.AbilityDelegatorArgs; + abilityDelegatorArguments = AbilityDelegatorRegistry.getArguments() + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO); + hilog.info(0x0000, 'testTag', '%{public}s', 'start run testcase!!!'); + Hypium.hypiumTest(abilityDelegator, abilityDelegatorArguments, testsuite) + } + + onDestroy() { + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO); + hilog.info(0x0000, 'testTag', '%{public}s', 'TestAbility onDestroy'); + } + + onWindowStageCreate(windowStage: Window.WindowStage) { + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO); + hilog.info(0x0000, 'testTag', '%{public}s', 'TestAbility onWindowStageCreate'); + windowStage.loadContent('testability/pages/Index', (err, data) => { + if (err.code) { + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.ERROR); + hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? ''); + return; + } + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO); + hilog.info(0x0000, 'testTag', 'Succeeded in loading the content. Data: %{public}s', JSON.stringify(data) ?? ''); + }); + } + + onWindowStageDestroy() { + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO); + hilog.info(0x0000, 'testTag', '%{public}s', 'TestAbility onWindowStageDestroy'); + } + + onForeground() { + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO); + hilog.info(0x0000, 'testTag', '%{public}s', 'TestAbility onForeground'); + } + + onBackground() { + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO); + hilog.info(0x0000, 'testTag', '%{public}s', 'TestAbility onBackground'); + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/ohosTest/ets/testability/pages/Index.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/ohosTest/ets/testability/pages/Index.ets new file mode 100644 index 0000000000000000000000000000000000000000..2b3ab3396b754fc530311944f6eb5459bf03cc32 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/ohosTest/ets/testability/pages/Index.ets @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import hilog from '@ohos.hilog'; + +@Entry +@Component +struct Index { + aboutToAppear() { + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO); + hilog.info(0x0000, 'testTag', '%{public}s', 'TestAbility index aboutToAppear'); + } + @State message: string = 'Hello World' + build() { + Row() { + Column() { + Text(this.message) + .fontSize(50) + .fontWeight(FontWeight.Bold) + Button() { + Text('next page') + .fontSize(20) + .fontWeight(FontWeight.Bold) + } + .type(ButtonType.Capsule) + .margin({ + top: 20 + }) + .backgroundColor('#0D9FFB') + .width('35%') + .height('5%') + .onClick(()=>{ + }) + } + .width('100%') + } + .height('100%') + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/ohosTest/module.json5 b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/ohosTest/module.json5 new file mode 100644 index 0000000000000000000000000000000000000000..22e2c611f379dbb0fddf452b259ef27c508d058b --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/ohosTest/module.json5 @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "module": { + "name": "entry_test", + "type": "feature", + "description": "$string:module_test_desc", + "mainElement": "TestAbility", + "deviceTypes": [ + "default", + "tablet" + ], + "deliveryWithInstall": true, + "installationFree": false, + "pages": "$profile:test_pages", + "abilities": [ + { + "name": "TestAbility", + "srcEntrance": "./ets/testability/TestAbility.ets", + "description": "$string:TestAbility_desc", + "icon": "$media:icon", + "label": "$string:TestAbility_label", + "visible": true, + "startWindowIcon": "$media:icon", + "startWindowBackground": "$color:start_window_background", + "skills": [ + { + "actions": [ + "action.system.home" + ], + "entities": [ + "entity.system.home" + ] + } + ] + } + ] + } +} diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/ohosTest/resources/base/element/color.json b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/ohosTest/resources/base/element/color.json new file mode 100644 index 0000000000000000000000000000000000000000..3c712962da3c2751c2b9ddb53559afcbd2b54a02 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/ohosTest/resources/base/element/color.json @@ -0,0 +1,8 @@ +{ + "color": [ + { + "name": "start_window_background", + "value": "#FFFFFF" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/ohosTest/resources/base/element/float.json b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/ohosTest/resources/base/element/float.json new file mode 100644 index 0000000000000000000000000000000000000000..aa689d3f32d2b0285889e5c4e8419f01d74cb85f --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/ohosTest/resources/base/element/float.json @@ -0,0 +1,8 @@ +{ + "float": [ + { + "name": "my_float", + "value": "60vp" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/ohosTest/resources/base/element/string.json b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/ohosTest/resources/base/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..a6e121ecb3a811d10f6bc76973bdecadd467b837 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/ohosTest/resources/base/element/string.json @@ -0,0 +1,300 @@ +{ + "string": [ + { + "name": "entry_desc", + "value": "description" + }, + { + "name": "MainAbility_desc", + "value": "description" + }, + { + "name": "EntryAbility_label", + "value": "AdaptiveCapabilities" + }, + { + "name": "module_test_desc", + "value": "test ability description" + }, + { + "name": "TestAbility_desc", + "value": "the test ability" + }, + { + "name": "TestAbility_label", + "value": "test label" + }, + { + "name": "my_string", + "value": "phone" + }, + { + "name": "home_title", + "value": "Page development-Adaptive Capabilities" + }, + { + "name": "resource_qualifier", + "value": "Resource qualifier" + }, + { + "name": "atomic_capability", + "value": "Atomic layout capability" + }, + { + "name": "responsive_layout", + "value": "Responsive layout" + }, + { + "name": "flex_capability_first", + "value": "Flexible capability first" + }, + { + "name": "flex_capability_second", + "value": "Flexible capability second" + }, + { + "name": "scaling_capability", + "value": "Scaling capability" + }, + { + "name": "hidden_capability", + "value": "Hidden capability" + }, + { + "name": "wrap_capability", + "value": "Wrap capability" + }, + { + "name": "equally_capability", + "value": "Equally capability" + }, + { + "name": "percentage_capability", + "value": "Percentage capability" + }, + { + "name": "extension_capability_first", + "value": "Extension capacity first" + }, + { + "name": "extension_capability_second", + "value": "Extension capacity second" + }, + { + "name": "healthy_use_phone", + "value": "Healthy use of phone" + }, + { + "name": "media_query", + "value": "Media query" + }, + { + "name": "grid_layout", + "value": "Grid layout" + }, + { + "name": "grid_layout1", + "value": "Grid breakpoint 1" + }, + { + "name": "grid_layout2", + "value": "Grid breakpoint 2" + }, + { + "name": "grid_layout3", + "value": "Grid columns and gutter" + }, + { + "name": "grid_layout4", + "value": "Grid margin" + }, + { + "name": "grid_layout5", + "value": "Grid span" + }, + { + "name": "grid_layout6", + "value": "Grid offset" + }, + { + "name": "grid_layout7", + "value": "Grid order" + }, + { + "name": "grid_layout8", + "value": "Grid inheritance of span/offset/order" + }, + { + "name": "grid_layout9", + "value": "Grid nested" + }, + { + "name": "grid_layout10", + "value": "Grid alignItem" + }, + { + "name": "typical_scenario", + "value": "Typical scenario" + }, + { + "name": "diversion_layout", + "value": "Diversion layout" + }, + { + "name": "repeat_layout", + "value": "Repeat layout" + }, + { + "name": "indentation_layout", + "value": "Indentation layout" + }, + { + "name": "header", + "value": "header" + }, + { + "name": "banner", + "value": "banner" + }, + { + "name": "operationEntries", + "value": "operation entries" + }, + { + "name": "tabs", + "value": "tabs layout" + }, + { + "name": "bigImage", + "value": "big image" + }, + { + "name": "multiLaneList", + "value": "multi lane list" + }, + { + "name": "grid", + "value": "grid layout" + }, + { + "name": "aside", + "value": "aside" + }, + { + "name": "user_improvement", + "value": "User Experience Improvement Program" + }, + { + "name": "user_improvement_tips", + "value": "The User Experience Improvement Program improves huawei's product and service quality through system, application analysis, and fault diagnosis." + }, + { + "name": "show_app_name", + "value": "App name" + }, + { + "name": "left", + "value": "Left" + }, + { + "name": "center", + "value": "Center" + }, + { + "name": "right", + "value": "Right" + }, + { + "name": "portrait", + "value": "Portrait" + }, + { + "name": "landscape", + "value": "Landscape" + }, + { + "name": "recommended", + "value": "recommended" + }, + { + "name": "operation1", + "value": "Private FM" + }, + { + "name": "operation2", + "value": "Singer" + }, + { + "name": "operation3", + "value": "Playlist" + }, + { + "name": "operation4", + "value": "Ranking List" + }, + { + "name": "operation5", + "value": "Hot" + }, + { + "name": "operation6", + "value": "Sports Music" + }, + { + "name": "operation7", + "value": "Music FM" + }, + { + "name": "operation8", + "value": "Welfare" + }, + { + "name": "playlist_collection", + "value": "Playlist Collection" + }, + { + "name": "tabBar1", + "value": "Home" + }, + { + "name": "tabBar2", + "value": "Ranking List" + }, + { + "name": "tabBar3", + "value": "My" + }, + { + "name": "breakpoint", + "value": "breakpoint" + }, + { + "name": "Radio_GridRow_All_LCR", + "value": "All GridColl L-C-R" + }, + { + "name": "Radio_GridRow_All_TMB", + "value": "All GridColl T-M-B" + }, + { + "name": "Radio_GridRow_Sg_LCR", + "value": "Second GridCol L-C-R" + }, + { + "name": "Radio_GridRow_Sg_TMB", + "value": "Second GridCol T-M-B" + }, + { + "name": "multiScene_tabs_app", + "value": "apps" + }, + { + "name": "multiScene_tabs_play", + "value": "play" + }, + { + "name": "multiScene_tabs_me", + "value": "me" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/ohosTest/resources/base/media/icon.png b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/ohosTest/resources/base/media/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ce307a8827bd75456441ceb57d530e4c8d45d36c Binary files /dev/null and b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/ohosTest/resources/base/media/icon.png differ diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/ohosTest/resources/base/profile/test_pages.json b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/ohosTest/resources/base/profile/test_pages.json new file mode 100644 index 0000000000000000000000000000000000000000..b7e7343cacb32ce982a45e76daad86e435e054fe --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/ohosTest/resources/base/profile/test_pages.json @@ -0,0 +1,5 @@ +{ + "src": [ + "testability/pages/Index" + ] +} diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/ohosTest/resources/en/element/string.json b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/ohosTest/resources/en/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..0bceec858551f668d3f387fe509961ea27273076 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/ohosTest/resources/en/element/string.json @@ -0,0 +1,300 @@ +{ + "string": [ + { + "name": "entry_desc", + "value": "description" + }, + { + "name": "MainAbility_desc", + "value": "description" + }, + { + "name": "EntryAbility_label", + "value": "AdaptiveCapabilities" + }, + { + "name": "module_test_desc", + "value": "test ability description" + }, + { + "name": "TestAbility_desc", + "value": "the test ability" + }, + { + "name": "TestAbility_label", + "value": "test label" + }, + { + "name": "my_string", + "value": "phone" + }, + { + "name": "home_title", + "value": "Page development-Adaptive Capabilities" + }, + { + "name": "resource_qualifier", + "value": "Resource qualifier" + }, + { + "name": "atomic_capability", + "value": "Atomic layout capability" + }, + { + "name": "responsive_layout", + "value": "Responsive layout" + }, + { + "name": "flex_capability_first", + "value": "Flexible capability first" + }, + { + "name": "flex_capability_second", + "value": "Flexible capability second" + }, + { + "name": "scaling_capability", + "value": "Scaling capability" + }, + { + "name": "hidden_capability", + "value": "Hidden capability" + }, + { + "name": "wrap_capability", + "value": "Wrap capability" + }, + { + "name": "equally_capability", + "value": "Equally capability" + }, + { + "name": "percentage_capability", + "value": "Percentage capability" + }, + { + "name": "extension_capability_first", + "value": "Extension capacity first" + }, + { + "name": "extension_capability_second", + "value": "Extension capacity second" + }, + { + "name": "healthy_use_phone", + "value": "Healthy use of phone" + }, + { + "name": "media_query", + "value": "Media query" + }, + { + "name": "grid_layout", + "value": "Grid layout" + }, + { + "name": "grid_layout1", + "value": "Grid breakpoint 1" + }, + { + "name": "grid_layout2", + "value": "Grid breakpoint 2" + }, + { + "name": "grid_layout3", + "value": "Grid columns and gutter" + }, + { + "name": "grid_layout4", + "value": "Grid margin" + }, + { + "name": "grid_layout5", + "value": "Grid span" + }, + { + "name": "grid_layout6", + "value": "Grid offset" + }, + { + "name": "grid_layout7", + "value": "Grid order" + }, + { + "name": "grid_layout8", + "value": "Grid inheritance of span/offset/order" + }, + { + "name": "grid_layout9", + "value": "Grid nested" + }, + { + "name": "grid_layout10", + "value": "Grid alignItem" + }, + { + "name": "typical_scenario", + "value": "Typical scenario" + }, + { + "name": "diversion_layout", + "value": "Diversion layout" + }, + { + "name": "repeat_layout", + "value": "Repeat layout" + }, + { + "name": "indentation_layout", + "value": "Indentation layout" + }, + { + "name": "header", + "value": "header" + }, + { + "name": "banner", + "value": "banner" + }, + { + "name": "operationEntries", + "value": "operation entries" + }, + { + "name": "tabs", + "value": "tabs layout" + }, + { + "name": "bigImage", + "value": "big image" + }, + { + "name": "multiLaneList", + "value": "multi lane list" + }, + { + "name": "grid", + "value": "grid layout" + }, + { + "name": "aside", + "value": "aside" + }, + { + "name": "user_improvement", + "value": "User Experience Improvement Program" + }, + { + "name": "user_improvement_tips", + "value": "The User Experience Improvement Program improves huawei's product and service quality through system, application analysis, and fault diagnosis." + }, + { + "name": "show_app_name", + "value": "App name" + }, + { + "name": "left", + "value": "Left" + }, + { + "name": "center", + "value": "Center" + }, + { + "name": "right", + "value": "Right" + }, + { + "name": "portrait", + "value": "Portrait" + }, + { + "name": "landscape", + "value": "Landscape" + }, + { + "name": "recommended", + "value": "Recommended" + }, + { + "name": "operation1", + "value": "Private FM" + }, + { + "name": "operation2", + "value": "Singer" + }, + { + "name": "operation3", + "value": "Playlist" + }, + { + "name": "operation4", + "value": "Ranking List" + }, + { + "name": "operation5", + "value": "Hot" + }, + { + "name": "operation6", + "value": "Sports Music" + }, + { + "name": "operation7", + "value": "Music FM" + }, + { + "name": "operation8", + "value": "Welfare" + }, + { + "name": "playlist_collection", + "value": "Playlist Collection" + }, + { + "name": "tabBar1", + "value": "Home" + }, + { + "name": "tabBar2", + "value": "Ranking List" + }, + { + "name": "tabBar3", + "value": "My" + }, + { + "name": "breakpoint", + "value": "breakpoint" + }, + { + "name": "Radio_GridRow_All_LCR", + "value": "All GridColl L-C-R" + }, + { + "name": "Radio_GridRow_All_TMB", + "value": "All GridColl T-M-B" + }, + { + "name": "Radio_GridRow_Sg_LCR", + "value": "Second GridCol L-C-R" + }, + { + "name": "Radio_GridRow_Sg_TMB", + "value": "Second GridCol T-M-B" + }, + { + "name": "multiScene_tabs_app", + "value": "apps" + }, + { + "name": "multiScene_tabs_play", + "value": "play" + }, + { + "name": "multiScene_tabs_me", + "value": "me" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/ohosTest/resources/zh/element/string.json b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/ohosTest/resources/zh/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..57908e3705ca2ee492cfe8e470743afbc43eb5a5 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/entry/src/ohosTest/resources/zh/element/string.json @@ -0,0 +1,300 @@ +{ + "string": [ + { + "name": "entry_desc", + "value": "description" + }, + { + "name": "MainAbility_desc", + "value": "description" + }, + { + "name": "EntryAbility_label", + "value": "AdaptiveCapabilities" + }, + { + "name": "module_test_desc", + "value": "test ability description" + }, + { + "name": "TestAbility_desc", + "value": "the test ability" + }, + { + "name": "TestAbility_label", + "value": "test label" + }, + { + "name": "my_string", + "value": "手机" + }, + { + "name": "home_title", + "value": "页面开发一多能力" + }, + { + "name": "resource_qualifier", + "value": "资源文件使用" + }, + { + "name": "atomic_capability", + "value": "自适应布局" + }, + { + "name": "responsive_layout", + "value": "响应式布局" + }, + { + "name": "flex_capability_first", + "value": "拉伸能力1" + }, + { + "name": "flex_capability_second", + "value": "拉伸能力2" + }, + { + "name": "scaling_capability", + "value": "缩放能力" + }, + { + "name": "hidden_capability", + "value": "隐藏能力" + }, + { + "name": "wrap_capability", + "value": "折行能力" + }, + { + "name": "equally_capability", + "value": "均分能力" + }, + { + "name": "percentage_capability", + "value": "占比能力" + }, + { + "name": "extension_capability_first", + "value": "延伸能力1" + }, + { + "name": "extension_capability_second", + "value": "延伸能力2" + }, + { + "name": "healthy_use_phone", + "value": "健康使用手机" + }, + { + "name": "media_query", + "value": "媒体查询" + }, + { + "name": "grid_layout", + "value": "栅格布局" + }, + { + "name": "grid_layout1", + "value": "栅格断点1" + }, + { + "name": "grid_layout2", + "value": "栅格断点2" + }, + { + "name": "grid_layout3", + "value": "栅格columns和gutter" + }, + { + "name": "grid_layout4", + "value": "栅格margin" + }, + { + "name": "grid_layout5", + "value": "栅格span" + }, + { + "name": "grid_layout6", + "value": "栅格offset" + }, + { + "name": "grid_layout7", + "value": "栅格order" + }, + { + "name": "grid_layout8", + "value": "栅格span/offset/order继承性" + }, + { + "name": "grid_layout9", + "value": "栅格嵌套" + }, + { + "name": "grid_layout10", + "value": "栅格对齐" + }, + { + "name": "typical_scenario", + "value": "典型布局场景" + }, + { + "name": "diversion_layout", + "value": "挪移布局" + }, + { + "name": "repeat_layout", + "value": "重复布局" + }, + { + "name": "indentation_layout", + "value": "缩进布局" + }, + { + "name": "header", + "value": "顶部布局" + }, + { + "name": "banner", + "value": "广告栏" + }, + { + "name": "operationEntries", + "value": "操作入口" + }, + { + "name": "tabs", + "value": "页签布局" + }, + { + "name": "bigImage", + "value": "大图浏览" + }, + { + "name": "multiLaneList", + "value": "多列列表" + }, + { + "name": "grid", + "value": "网格视图" + }, + { + "name": "aside", + "value": "侧边栏" + }, + { + "name": "user_improvement", + "value": "用户体验改进计划" + }, + { + "name": "user_improvement_tips", + "value": "用户体验改进计划通过系统、应用分析、故障诊断、提升华为的产品和服务质量。" + }, + { + "name": "show_app_name", + "value": "应用名称" + }, + { + "name": "left", + "value": "左" + }, + { + "name": "center", + "value": "中" + }, + { + "name": "right", + "value": "右" + }, + { + "name": "portrait", + "value": "竖屏" + }, + { + "name": "landscape", + "value": "横屏" + }, + { + "name": "recommended", + "value": "推荐" + }, + { + "name": "operation1", + "value": "私人FM" + }, + { + "name": "operation2", + "value": "歌手" + }, + { + "name": "operation3", + "value": "歌单" + }, + { + "name": "operation4", + "value": "排行榜" + }, + { + "name": "operation5", + "value": "热门" + }, + { + "name": "operation6", + "value": "运动音乐" + }, + { + "name": "operation7", + "value": "音乐FM" + }, + { + "name": "operation8", + "value": "福利" + }, + { + "name": "playlist_collection", + "value": "歌单集合" + }, + { + "name": "tabBar1", + "value": "首页" + }, + { + "name": "tabBar2", + "value": "排行榜" + }, + { + "name": "tabBar3", + "value": "我的" + }, + { + "name": "breakpoint", + "value": "断点" + }, + { + "name": "Radio_GridRow_All_LCR", + "value": "All GridColl 左中右" + }, + { + "name": "Radio_GridRow_All_TMB", + "value": "All GridColl 上中下" + }, + { + "name": "Radio_GridRow_Sg_LCR", + "value": "Second Grid 左中右" + }, + { + "name": "Radio_GridRow_Sg_TMB", + "value": "Second Grid 上中下" + }, + { + "name": "multiScene_tabs_app", + "value": "应用" + }, + { + "name": "multiScene_tabs_play", + "value": "播放" + }, + { + "name": "multiScene_tabs_me", + "value": "我的" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/hvigor/hvigor-config.json5 b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/hvigor/hvigor-config.json5 new file mode 100644 index 0000000000000000000000000000000000000000..ce5813c2110a6dc8e65907ad3d7ba90e34a6b451 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/hvigor/hvigor-config.json5 @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "hvigorVersion": "3.0.9-s", + "dependencies": { + "@ohos/hvigor-ohos-plugin": "3.0.9-s" + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/hvigor/hvigor-wrapper.js b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/hvigor/hvigor-wrapper.js new file mode 100644 index 0000000000000000000000000000000000000000..994f22987bd0739b9faa07c966b066c2d9218602 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/hvigor/hvigor-wrapper.js @@ -0,0 +1,2 @@ +"use strict";var e=require("fs"),t=require("path"),n=require("os"),r=require("crypto"),u=require("child_process"),o=require("constants"),i=require("stream"),s=require("util"),c=require("assert"),a=require("tty"),l=require("zlib"),f=require("net");function d(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var D=d(e),p=d(t),E=d(n),m=d(r),h=d(u),y=d(o),C=d(i),F=d(s),g=d(c),A=d(a),v=d(l),S=d(f),w="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},O={},b={},_={},B=w&&w.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(_,"__esModule",{value:!0}),_.isMac=_.isLinux=_.isWindows=void 0;const P=B(E.default),k="Windows_NT",x="Linux",N="Darwin";_.isWindows=function(){return P.default.type()===k},_.isLinux=function(){return P.default.type()===x},_.isMac=function(){return P.default.type()===N};var I={},T=w&&w.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var u=Object.getOwnPropertyDescriptor(t,n);u&&!("get"in u?!t.__esModule:u.writable||u.configurable)||(u={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,u)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),R=w&&w.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),M=w&&w.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&T(t,e,n);return R(t,e),t};Object.defineProperty(I,"__esModule",{value:!0}),I.hash=void 0;const L=M(m.default);I.hash=function(e,t="md5"){return L.createHash(t).update(e,"utf-8").digest("hex")},function(e){var t=w&&w.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var u=Object.getOwnPropertyDescriptor(t,n);u&&!("get"in u?!t.__esModule:u.writable||u.configurable)||(u={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,u)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),n=w&&w.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),r=w&&w.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(null!=e)for(var u in e)"default"!==u&&Object.prototype.hasOwnProperty.call(e,u)&&t(r,e,u);return n(r,e),r};Object.defineProperty(e,"__esModule",{value:!0}),e.HVIGOR_BOOT_JS_FILE_PATH=e.HVIGOR_PROJECT_DEPENDENCY_PACKAGE_JSON_PATH=e.HVIGOR_PROJECT_DEPENDENCIES_HOME=e.HVIGOR_PROJECT_WRAPPER_HOME=e.HVIGOR_PROJECT_NAME=e.HVIGOR_PROJECT_ROOT_DIR=e.HVIGOR_PROJECT_CACHES_HOME=e.HVIGOR_PNPM_STORE_PATH=e.HVIGOR_WRAPPER_PNPM_SCRIPT_PATH=e.HVIGOR_WRAPPER_TOOLS_HOME=e.HVIGOR_USER_HOME=e.DEFAULT_PACKAGE_JSON=e.DEFAULT_HVIGOR_CONFIG_JSON_FILE_NAME=e.PNPM=e.HVIGOR=e.NPM_TOOL=e.PNPM_TOOL=e.HVIGOR_ENGINE_PACKAGE_NAME=void 0;const u=r(p.default),o=r(E.default),i=_,s=I;e.HVIGOR_ENGINE_PACKAGE_NAME="@ohos/hvigor",e.PNPM_TOOL=(0,i.isWindows)()?"pnpm.cmd":"pnpm",e.NPM_TOOL=(0,i.isWindows)()?"npm.cmd":"npm",e.HVIGOR="hvigor",e.PNPM="pnpm",e.DEFAULT_HVIGOR_CONFIG_JSON_FILE_NAME="hvigor-config.json5",e.DEFAULT_PACKAGE_JSON="package.json",e.HVIGOR_USER_HOME=u.resolve(o.homedir(),".hvigor"),e.HVIGOR_WRAPPER_TOOLS_HOME=u.resolve(e.HVIGOR_USER_HOME,"wrapper","tools"),e.HVIGOR_WRAPPER_PNPM_SCRIPT_PATH=u.resolve(e.HVIGOR_WRAPPER_TOOLS_HOME,"node_modules",".bin",e.PNPM_TOOL),e.HVIGOR_PNPM_STORE_PATH=u.resolve(e.HVIGOR_USER_HOME,"caches"),e.HVIGOR_PROJECT_CACHES_HOME=u.resolve(e.HVIGOR_USER_HOME,"project_caches"),e.HVIGOR_PROJECT_ROOT_DIR=process.cwd(),e.HVIGOR_PROJECT_NAME=u.basename((0,s.hash)(e.HVIGOR_PROJECT_ROOT_DIR)),e.HVIGOR_PROJECT_WRAPPER_HOME=u.resolve(e.HVIGOR_PROJECT_ROOT_DIR,e.HVIGOR),e.HVIGOR_PROJECT_DEPENDENCIES_HOME=u.resolve(e.HVIGOR_PROJECT_CACHES_HOME,e.HVIGOR_PROJECT_NAME,"workspace"),e.HVIGOR_PROJECT_DEPENDENCY_PACKAGE_JSON_PATH=u.resolve(e.HVIGOR_PROJECT_DEPENDENCIES_HOME,e.DEFAULT_PACKAGE_JSON),e.HVIGOR_BOOT_JS_FILE_PATH=u.resolve(e.HVIGOR_PROJECT_DEPENDENCIES_HOME,"node_modules","@ohos","hvigor","bin","hvigor.js")}(b);var j={},$={};Object.defineProperty($,"__esModule",{value:!0}),$.logInfoPrintConsole=$.logErrorAndExit=void 0,$.logErrorAndExit=function(e){e instanceof Error?console.error(e.message):console.error(e),process.exit(-1)},$.logInfoPrintConsole=function(e){console.log(e)};var H=w&&w.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var u=Object.getOwnPropertyDescriptor(t,n);u&&!("get"in u?!t.__esModule:u.writable||u.configurable)||(u={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,u)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),J=w&&w.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),G=w&&w.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&H(t,e,n);return J(t,e),t},V=w&&w.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(j,"__esModule",{value:!0}),j.isFileExists=j.offlinePluginConversion=j.executeCommand=j.getNpmPath=j.hasNpmPackInPaths=void 0;const U=h.default,W=G(p.default),z=b,K=$,q=V(D.default);j.hasNpmPackInPaths=function(e,t){try{return require.resolve(e,{paths:[...t]}),!0}catch(e){return!1}},j.getNpmPath=function(){const e=process.execPath;return W.join(W.dirname(e),z.NPM_TOOL)},j.executeCommand=function(e,t,n){0!==(0,U.spawnSync)(e,t,n).status&&(0,K.logErrorAndExit)(`Error: ${e} ${t} execute failed.See above for details.`)},j.offlinePluginConversion=function(e,t){return t.startsWith("file:")||t.endsWith(".tgz")?W.resolve(e,z.HVIGOR,t.replace("file:","")):t},j.isFileExists=function(e){return q.default.existsSync(e)&&q.default.statSync(e).isFile()},function(e){var t=w&&w.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var u=Object.getOwnPropertyDescriptor(t,n);u&&!("get"in u?!t.__esModule:u.writable||u.configurable)||(u={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,u)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),n=w&&w.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),r=w&&w.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(null!=e)for(var u in e)"default"!==u&&Object.prototype.hasOwnProperty.call(e,u)&&t(r,e,u);return n(r,e),r},u=w&&w.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,"__esModule",{value:!0}),e.executeInstallPnpm=e.isPnpmAvailable=e.environmentHandler=e.checkNpmConifg=e.PNPM_VERSION=void 0;const o=r(D.default),i=b,s=j,c=r(p.default),a=$,l=h.default,f=u(E.default);e.PNPM_VERSION="7.30.0",e.checkNpmConifg=function(){const e=c.resolve(i.HVIGOR_PROJECT_ROOT_DIR,".npmrc"),t=c.resolve(f.default.homedir(),".npmrc");if((0,s.isFileExists)(e)||(0,s.isFileExists)(t))return;const n=(0,s.getNpmPath)(),r=(0,l.spawnSync)(n,["config","get","prefix"],{cwd:i.HVIGOR_PROJECT_ROOT_DIR});if(0!==r.status||!r.stdout)return void(0,a.logErrorAndExit)("Error: The hvigor depends on the npmrc file. Configure the npmrc file first.");const u=c.resolve(`${r.stdout}`.replace(/[\r\n]/gi,""),".npmrc");(0,s.isFileExists)(u)||(0,a.logErrorAndExit)("Error: The hvigor depends on the npmrc file. Configure the npmrc file first.")},e.environmentHandler=function(){process.env["npm_config_update-notifier"]="false"},e.isPnpmAvailable=function(){return!!o.existsSync(i.HVIGOR_WRAPPER_PNPM_SCRIPT_PATH)&&(0,s.hasNpmPackInPaths)("pnpm",[i.HVIGOR_WRAPPER_TOOLS_HOME])},e.executeInstallPnpm=function(){(0,a.logInfoPrintConsole)(`Installing pnpm@${e.PNPM_VERSION}...`);const t=(0,s.getNpmPath)();!function(){const t=c.resolve(i.HVIGOR_WRAPPER_TOOLS_HOME,i.DEFAULT_PACKAGE_JSON);try{o.existsSync(i.HVIGOR_WRAPPER_TOOLS_HOME)||o.mkdirSync(i.HVIGOR_WRAPPER_TOOLS_HOME,{recursive:!0});const n={dependencies:{}};n.dependencies[i.PNPM]=e.PNPM_VERSION,o.writeFileSync(t,JSON.stringify(n))}catch(e){(0,a.logErrorAndExit)(`Error: EPERM: operation not permitted,create ${t} failed.`)}}(),(0,s.executeCommand)(t,["install","pnpm"],{cwd:i.HVIGOR_WRAPPER_TOOLS_HOME,stdio:["inherit","inherit","inherit"],env:process.env}),(0,a.logInfoPrintConsole)("Pnpm install success.")}}(O);var Y={},X={},Z={},Q={};Object.defineProperty(Q,"__esModule",{value:!0}),Q.Unicode=void 0;class ee{}Q.Unicode=ee,ee.Space_Separator=/[\u1680\u2000-\u200A\u202F\u205F\u3000]/,ee.ID_Start=/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/,ee.ID_Continue=/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDE00-\uDE3E\uDE47\uDE50-\uDE83\uDE86-\uDE99\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/,Object.defineProperty(Z,"__esModule",{value:!0}),Z.JudgeUtil=void 0;const te=Q;Z.JudgeUtil=class{static isIgnoreChar(e){return"string"==typeof e&&("\t"===e||"\v"===e||"\f"===e||" "===e||" "===e||"\ufeff"===e||"\n"===e||"\r"===e||"\u2028"===e||"\u2029"===e)}static isSpaceSeparator(e){return"string"==typeof e&&te.Unicode.Space_Separator.test(e)}static isIdStartChar(e){return"string"==typeof e&&(e>="a"&&e<="z"||e>="A"&&e<="Z"||"$"===e||"_"===e||te.Unicode.ID_Start.test(e))}static isIdContinueChar(e){return"string"==typeof e&&(e>="a"&&e<="z"||e>="A"&&e<="Z"||e>="0"&&e<="9"||"$"===e||"_"===e||"‌"===e||"‍"===e||te.Unicode.ID_Continue.test(e))}static isDigitWithoutZero(e){return/[1-9]/.test(e)}static isDigit(e){return"string"==typeof e&&/[0-9]/.test(e)}static isHexDigit(e){return"string"==typeof e&&/[0-9A-Fa-f]/.test(e)}};var ne={},re={fromCallback:function(e){return Object.defineProperty((function(...t){if("function"!=typeof t[t.length-1])return new Promise(((n,r)=>{e.call(this,...t,((e,t)=>null!=e?r(e):n(t)))}));e.apply(this,t)}),"name",{value:e.name})},fromPromise:function(e){return Object.defineProperty((function(...t){const n=t[t.length-1];if("function"!=typeof n)return e.apply(this,t);e.apply(this,t.slice(0,-1)).then((e=>n(null,e)),n)}),"name",{value:e.name})}},ue=y.default,oe=process.cwd,ie=null,se=process.env.GRACEFUL_FS_PLATFORM||process.platform;process.cwd=function(){return ie||(ie=oe.call(process)),ie};try{process.cwd()}catch(e){}if("function"==typeof process.chdir){var ce=process.chdir;process.chdir=function(e){ie=null,ce.call(process,e)},Object.setPrototypeOf&&Object.setPrototypeOf(process.chdir,ce)}var ae=function(e){ue.hasOwnProperty("O_SYMLINK")&&process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)&&function(e){e.lchmod=function(t,n,r){e.open(t,ue.O_WRONLY|ue.O_SYMLINK,n,(function(t,u){t?r&&r(t):e.fchmod(u,n,(function(t){e.close(u,(function(e){r&&r(t||e)}))}))}))},e.lchmodSync=function(t,n){var r,u=e.openSync(t,ue.O_WRONLY|ue.O_SYMLINK,n),o=!0;try{r=e.fchmodSync(u,n),o=!1}finally{if(o)try{e.closeSync(u)}catch(e){}else e.closeSync(u)}return r}}(e);e.lutimes||function(e){ue.hasOwnProperty("O_SYMLINK")&&e.futimes?(e.lutimes=function(t,n,r,u){e.open(t,ue.O_SYMLINK,(function(t,o){t?u&&u(t):e.futimes(o,n,r,(function(t){e.close(o,(function(e){u&&u(t||e)}))}))}))},e.lutimesSync=function(t,n,r){var u,o=e.openSync(t,ue.O_SYMLINK),i=!0;try{u=e.futimesSync(o,n,r),i=!1}finally{if(i)try{e.closeSync(o)}catch(e){}else e.closeSync(o)}return u}):e.futimes&&(e.lutimes=function(e,t,n,r){r&&process.nextTick(r)},e.lutimesSync=function(){})}(e);e.chown=r(e.chown),e.fchown=r(e.fchown),e.lchown=r(e.lchown),e.chmod=t(e.chmod),e.fchmod=t(e.fchmod),e.lchmod=t(e.lchmod),e.chownSync=u(e.chownSync),e.fchownSync=u(e.fchownSync),e.lchownSync=u(e.lchownSync),e.chmodSync=n(e.chmodSync),e.fchmodSync=n(e.fchmodSync),e.lchmodSync=n(e.lchmodSync),e.stat=o(e.stat),e.fstat=o(e.fstat),e.lstat=o(e.lstat),e.statSync=i(e.statSync),e.fstatSync=i(e.fstatSync),e.lstatSync=i(e.lstatSync),e.chmod&&!e.lchmod&&(e.lchmod=function(e,t,n){n&&process.nextTick(n)},e.lchmodSync=function(){});e.chown&&!e.lchown&&(e.lchown=function(e,t,n,r){r&&process.nextTick(r)},e.lchownSync=function(){});"win32"===se&&(e.rename="function"!=typeof e.rename?e.rename:function(t){function n(n,r,u){var o=Date.now(),i=0;t(n,r,(function s(c){if(c&&("EACCES"===c.code||"EPERM"===c.code||"EBUSY"===c.code)&&Date.now()-o<6e4)return setTimeout((function(){e.stat(r,(function(e,o){e&&"ENOENT"===e.code?t(n,r,s):u(c)}))}),i),void(i<100&&(i+=10));u&&u(c)}))}return Object.setPrototypeOf&&Object.setPrototypeOf(n,t),n}(e.rename));function t(t){return t?function(n,r,u){return t.call(e,n,r,(function(e){s(e)&&(e=null),u&&u.apply(this,arguments)}))}:t}function n(t){return t?function(n,r){try{return t.call(e,n,r)}catch(e){if(!s(e))throw e}}:t}function r(t){return t?function(n,r,u,o){return t.call(e,n,r,u,(function(e){s(e)&&(e=null),o&&o.apply(this,arguments)}))}:t}function u(t){return t?function(n,r,u){try{return t.call(e,n,r,u)}catch(e){if(!s(e))throw e}}:t}function o(t){return t?function(n,r,u){function o(e,t){t&&(t.uid<0&&(t.uid+=4294967296),t.gid<0&&(t.gid+=4294967296)),u&&u.apply(this,arguments)}return"function"==typeof r&&(u=r,r=null),r?t.call(e,n,r,o):t.call(e,n,o)}:t}function i(t){return t?function(n,r){var u=r?t.call(e,n,r):t.call(e,n);return u&&(u.uid<0&&(u.uid+=4294967296),u.gid<0&&(u.gid+=4294967296)),u}:t}function s(e){return!e||("ENOSYS"===e.code||!(process.getuid&&0===process.getuid()||"EINVAL"!==e.code&&"EPERM"!==e.code))}e.read="function"!=typeof e.read?e.read:function(t){function n(n,r,u,o,i,s){var c;if(s&&"function"==typeof s){var a=0;c=function(l,f,d){if(l&&"EAGAIN"===l.code&&a<10)return a++,t.call(e,n,r,u,o,i,c);s.apply(this,arguments)}}return t.call(e,n,r,u,o,i,c)}return Object.setPrototypeOf&&Object.setPrototypeOf(n,t),n}(e.read),e.readSync="function"!=typeof e.readSync?e.readSync:(c=e.readSync,function(t,n,r,u,o){for(var i=0;;)try{return c.call(e,t,n,r,u,o)}catch(e){if("EAGAIN"===e.code&&i<10){i++;continue}throw e}});var c};var le=C.default.Stream,fe=function(e){return{ReadStream:function t(n,r){if(!(this instanceof t))return new t(n,r);le.call(this);var u=this;this.path=n,this.fd=null,this.readable=!0,this.paused=!1,this.flags="r",this.mode=438,this.bufferSize=65536,r=r||{};for(var o=Object.keys(r),i=0,s=o.length;ithis.end)throw new Error("start must be <= end");this.pos=this.start}if(null!==this.fd)return void process.nextTick((function(){u._read()}));e.open(this.path,this.flags,this.mode,(function(e,t){if(e)return u.emit("error",e),void(u.readable=!1);u.fd=t,u.emit("open",t),u._read()}))},WriteStream:function t(n,r){if(!(this instanceof t))return new t(n,r);le.call(this),this.path=n,this.fd=null,this.writable=!0,this.flags="w",this.encoding="binary",this.mode=438,this.bytesWritten=0,r=r||{};for(var u=Object.keys(r),o=0,i=u.length;o= zero");this.pos=this.start}this.busy=!1,this._queue=[],null===this.fd&&(this._open=e.open,this._queue.push([this._open,this.path,this.flags,this.mode,void 0]),this.flush())}}};var de=function(e){if(null===e||"object"!=typeof e)return e;if(e instanceof Object)var t={__proto__:De(e)};else t=Object.create(null);return Object.getOwnPropertyNames(e).forEach((function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(e,n))})),t},De=Object.getPrototypeOf||function(e){return e.__proto__};var pe,Ee,me=D.default,he=ae,ye=fe,Ce=de,Fe=F.default;function ge(e,t){Object.defineProperty(e,pe,{get:function(){return t}})}"function"==typeof Symbol&&"function"==typeof Symbol.for?(pe=Symbol.for("graceful-fs.queue"),Ee=Symbol.for("graceful-fs.previous")):(pe="___graceful-fs.queue",Ee="___graceful-fs.previous");var Ae=function(){};if(Fe.debuglog?Ae=Fe.debuglog("gfs4"):/\bgfs4\b/i.test(process.env.NODE_DEBUG||"")&&(Ae=function(){var e=Fe.format.apply(Fe,arguments);e="GFS4: "+e.split(/\n/).join("\nGFS4: "),console.error(e)}),!me[pe]){var ve=w[pe]||[];ge(me,ve),me.close=function(e){function t(t,n){return e.call(me,t,(function(e){e||_e(),"function"==typeof n&&n.apply(this,arguments)}))}return Object.defineProperty(t,Ee,{value:e}),t}(me.close),me.closeSync=function(e){function t(t){e.apply(me,arguments),_e()}return Object.defineProperty(t,Ee,{value:e}),t}(me.closeSync),/\bgfs4\b/i.test(process.env.NODE_DEBUG||"")&&process.on("exit",(function(){Ae(me[pe]),g.default.equal(me[pe].length,0)}))}w[pe]||ge(w,me[pe]);var Se,we=Oe(Ce(me));function Oe(e){he(e),e.gracefulify=Oe,e.createReadStream=function(t,n){return new e.ReadStream(t,n)},e.createWriteStream=function(t,n){return new e.WriteStream(t,n)};var t=e.readFile;e.readFile=function(e,n,r){"function"==typeof n&&(r=n,n=null);return function e(n,r,u,o){return t(n,r,(function(t){!t||"EMFILE"!==t.code&&"ENFILE"!==t.code?"function"==typeof u&&u.apply(this,arguments):be([e,[n,r,u],t,o||Date.now(),Date.now()])}))}(e,n,r)};var n=e.writeFile;e.writeFile=function(e,t,r,u){"function"==typeof r&&(u=r,r=null);return function e(t,r,u,o,i){return n(t,r,u,(function(n){!n||"EMFILE"!==n.code&&"ENFILE"!==n.code?"function"==typeof o&&o.apply(this,arguments):be([e,[t,r,u,o],n,i||Date.now(),Date.now()])}))}(e,t,r,u)};var r=e.appendFile;r&&(e.appendFile=function(e,t,n,u){"function"==typeof n&&(u=n,n=null);return function e(t,n,u,o,i){return r(t,n,u,(function(r){!r||"EMFILE"!==r.code&&"ENFILE"!==r.code?"function"==typeof o&&o.apply(this,arguments):be([e,[t,n,u,o],r,i||Date.now(),Date.now()])}))}(e,t,n,u)});var u=e.copyFile;u&&(e.copyFile=function(e,t,n,r){"function"==typeof n&&(r=n,n=0);return function e(t,n,r,o,i){return u(t,n,r,(function(u){!u||"EMFILE"!==u.code&&"ENFILE"!==u.code?"function"==typeof o&&o.apply(this,arguments):be([e,[t,n,r,o],u,i||Date.now(),Date.now()])}))}(e,t,n,r)});var o=e.readdir;e.readdir=function(e,t,n){"function"==typeof t&&(n=t,t=null);var r=i.test(process.version)?function(e,t,n,r){return o(e,u(e,t,n,r))}:function(e,t,n,r){return o(e,t,u(e,t,n,r))};return r(e,t,n);function u(e,t,n,u){return function(o,i){!o||"EMFILE"!==o.code&&"ENFILE"!==o.code?(i&&i.sort&&i.sort(),"function"==typeof n&&n.call(this,o,i)):be([r,[e,t,n],o,u||Date.now(),Date.now()])}}};var i=/^v[0-5]\./;if("v0.8"===process.version.substr(0,4)){var s=ye(e);d=s.ReadStream,D=s.WriteStream}var c=e.ReadStream;c&&(d.prototype=Object.create(c.prototype),d.prototype.open=function(){var e=this;E(e.path,e.flags,e.mode,(function(t,n){t?(e.autoClose&&e.destroy(),e.emit("error",t)):(e.fd=n,e.emit("open",n),e.read())}))});var a=e.WriteStream;a&&(D.prototype=Object.create(a.prototype),D.prototype.open=function(){var e=this;E(e.path,e.flags,e.mode,(function(t,n){t?(e.destroy(),e.emit("error",t)):(e.fd=n,e.emit("open",n))}))}),Object.defineProperty(e,"ReadStream",{get:function(){return d},set:function(e){d=e},enumerable:!0,configurable:!0}),Object.defineProperty(e,"WriteStream",{get:function(){return D},set:function(e){D=e},enumerable:!0,configurable:!0});var l=d;Object.defineProperty(e,"FileReadStream",{get:function(){return l},set:function(e){l=e},enumerable:!0,configurable:!0});var f=D;function d(e,t){return this instanceof d?(c.apply(this,arguments),this):d.apply(Object.create(d.prototype),arguments)}function D(e,t){return this instanceof D?(a.apply(this,arguments),this):D.apply(Object.create(D.prototype),arguments)}Object.defineProperty(e,"FileWriteStream",{get:function(){return f},set:function(e){f=e},enumerable:!0,configurable:!0});var p=e.open;function E(e,t,n,r){return"function"==typeof n&&(r=n,n=null),function e(t,n,r,u,o){return p(t,n,r,(function(i,s){!i||"EMFILE"!==i.code&&"ENFILE"!==i.code?"function"==typeof u&&u.apply(this,arguments):be([e,[t,n,r,u],i,o||Date.now(),Date.now()])}))}(e,t,n,r)}return e.open=E,e}function be(e){Ae("ENQUEUE",e[0].name,e[1]),me[pe].push(e),Be()}function _e(){for(var e=Date.now(),t=0;t2&&(me[pe][t][3]=e,me[pe][t][4]=e);Be()}function Be(){if(clearTimeout(Se),Se=void 0,0!==me[pe].length){var e=me[pe].shift(),t=e[0],n=e[1],r=e[2],u=e[3],o=e[4];if(void 0===u)Ae("RETRY",t.name,n),t.apply(null,n);else if(Date.now()-u>=6e4){Ae("TIMEOUT",t.name,n);var i=n.pop();"function"==typeof i&&i.call(null,r)}else{var s=Date.now()-o,c=Math.max(o-u,1);s>=Math.min(1.2*c,100)?(Ae("RETRY",t.name,n),t.apply(null,n.concat([u]))):me[pe].push(e)}void 0===Se&&(Se=setTimeout(Be,0))}}process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH&&!me.__patched&&(we=Oe(me),me.__patched=!0),function(e){const t=re.fromCallback,n=we,r=["access","appendFile","chmod","chown","close","copyFile","fchmod","fchown","fdatasync","fstat","fsync","ftruncate","futimes","lchmod","lchown","link","lstat","mkdir","mkdtemp","open","opendir","readdir","readFile","readlink","realpath","rename","rm","rmdir","stat","symlink","truncate","unlink","utimes","writeFile"].filter((e=>"function"==typeof n[e]));Object.assign(e,n),r.forEach((r=>{e[r]=t(n[r])})),e.realpath.native=t(n.realpath.native),e.exists=function(e,t){return"function"==typeof t?n.exists(e,t):new Promise((t=>n.exists(e,t)))},e.read=function(e,t,r,u,o,i){return"function"==typeof i?n.read(e,t,r,u,o,i):new Promise(((i,s)=>{n.read(e,t,r,u,o,((e,t,n)=>{if(e)return s(e);i({bytesRead:t,buffer:n})}))}))},e.write=function(e,t,...r){return"function"==typeof r[r.length-1]?n.write(e,t,...r):new Promise(((u,o)=>{n.write(e,t,...r,((e,t,n)=>{if(e)return o(e);u({bytesWritten:t,buffer:n})}))}))},"function"==typeof n.writev&&(e.writev=function(e,t,...r){return"function"==typeof r[r.length-1]?n.writev(e,t,...r):new Promise(((u,o)=>{n.writev(e,t,...r,((e,t,n)=>{if(e)return o(e);u({bytesWritten:t,buffers:n})}))}))})}(ne);var Pe={},ke={};const xe=p.default;ke.checkPath=function(e){if("win32"===process.platform){if(/[<>:"|?*]/.test(e.replace(xe.parse(e).root,""))){const t=new Error(`Path contains invalid characters: ${e}`);throw t.code="EINVAL",t}}};const Ne=ne,{checkPath:Ie}=ke,Te=e=>"number"==typeof e?e:{mode:511,...e}.mode;Pe.makeDir=async(e,t)=>(Ie(e),Ne.mkdir(e,{mode:Te(t),recursive:!0})),Pe.makeDirSync=(e,t)=>(Ie(e),Ne.mkdirSync(e,{mode:Te(t),recursive:!0}));const Re=re.fromPromise,{makeDir:Me,makeDirSync:Le}=Pe,je=Re(Me);var $e={mkdirs:je,mkdirsSync:Le,mkdirp:je,mkdirpSync:Le,ensureDir:je,ensureDirSync:Le};const He=re.fromPromise,Je=ne;var Ge={pathExists:He((function(e){return Je.access(e).then((()=>!0)).catch((()=>!1))})),pathExistsSync:Je.existsSync};const Ve=we;var Ue=function(e,t,n,r){Ve.open(e,"r+",((e,u)=>{if(e)return r(e);Ve.futimes(u,t,n,(e=>{Ve.close(u,(t=>{r&&r(e||t)}))}))}))},We=function(e,t,n){const r=Ve.openSync(e,"r+");return Ve.futimesSync(r,t,n),Ve.closeSync(r)};const ze=ne,Ke=p.default,qe=F.default;function Ye(e,t,n){const r=n.dereference?e=>ze.stat(e,{bigint:!0}):e=>ze.lstat(e,{bigint:!0});return Promise.all([r(e),r(t).catch((e=>{if("ENOENT"===e.code)return null;throw e}))]).then((([e,t])=>({srcStat:e,destStat:t})))}function Xe(e,t){return t.ino&&t.dev&&t.ino===e.ino&&t.dev===e.dev}function Ze(e,t){const n=Ke.resolve(e).split(Ke.sep).filter((e=>e)),r=Ke.resolve(t).split(Ke.sep).filter((e=>e));return n.reduce(((e,t,n)=>e&&r[n]===t),!0)}function Qe(e,t,n){return`Cannot ${n} '${e}' to a subdirectory of itself, '${t}'.`}var et={checkPaths:function(e,t,n,r,u){qe.callbackify(Ye)(e,t,r,((r,o)=>{if(r)return u(r);const{srcStat:i,destStat:s}=o;if(s){if(Xe(i,s)){const r=Ke.basename(e),o=Ke.basename(t);return"move"===n&&r!==o&&r.toLowerCase()===o.toLowerCase()?u(null,{srcStat:i,destStat:s,isChangingCase:!0}):u(new Error("Source and destination must not be the same."))}if(i.isDirectory()&&!s.isDirectory())return u(new Error(`Cannot overwrite non-directory '${t}' with directory '${e}'.`));if(!i.isDirectory()&&s.isDirectory())return u(new Error(`Cannot overwrite directory '${t}' with non-directory '${e}'.`))}return i.isDirectory()&&Ze(e,t)?u(new Error(Qe(e,t,n))):u(null,{srcStat:i,destStat:s})}))},checkPathsSync:function(e,t,n,r){const{srcStat:u,destStat:o}=function(e,t,n){let r;const u=n.dereference?e=>ze.statSync(e,{bigint:!0}):e=>ze.lstatSync(e,{bigint:!0}),o=u(e);try{r=u(t)}catch(e){if("ENOENT"===e.code)return{srcStat:o,destStat:null};throw e}return{srcStat:o,destStat:r}}(e,t,r);if(o){if(Xe(u,o)){const r=Ke.basename(e),i=Ke.basename(t);if("move"===n&&r!==i&&r.toLowerCase()===i.toLowerCase())return{srcStat:u,destStat:o,isChangingCase:!0};throw new Error("Source and destination must not be the same.")}if(u.isDirectory()&&!o.isDirectory())throw new Error(`Cannot overwrite non-directory '${t}' with directory '${e}'.`);if(!u.isDirectory()&&o.isDirectory())throw new Error(`Cannot overwrite directory '${t}' with non-directory '${e}'.`)}if(u.isDirectory()&&Ze(e,t))throw new Error(Qe(e,t,n));return{srcStat:u,destStat:o}},checkParentPaths:function e(t,n,r,u,o){const i=Ke.resolve(Ke.dirname(t)),s=Ke.resolve(Ke.dirname(r));if(s===i||s===Ke.parse(s).root)return o();ze.stat(s,{bigint:!0},((i,c)=>i?"ENOENT"===i.code?o():o(i):Xe(n,c)?o(new Error(Qe(t,r,u))):e(t,n,s,u,o)))},checkParentPathsSync:function e(t,n,r,u){const o=Ke.resolve(Ke.dirname(t)),i=Ke.resolve(Ke.dirname(r));if(i===o||i===Ke.parse(i).root)return;let s;try{s=ze.statSync(i,{bigint:!0})}catch(e){if("ENOENT"===e.code)return;throw e}if(Xe(n,s))throw new Error(Qe(t,r,u));return e(t,n,i,u)},isSrcSubdir:Ze,areIdentical:Xe};const tt=we,nt=p.default,rt=$e.mkdirs,ut=Ge.pathExists,ot=Ue,it=et;function st(e,t,n,r,u){const o=nt.dirname(n);ut(o,((i,s)=>i?u(i):s?at(e,t,n,r,u):void rt(o,(o=>o?u(o):at(e,t,n,r,u)))))}function ct(e,t,n,r,u,o){Promise.resolve(u.filter(n,r)).then((i=>i?e(t,n,r,u,o):o()),(e=>o(e)))}function at(e,t,n,r,u){(r.dereference?tt.stat:tt.lstat)(t,((o,i)=>o?u(o):i.isDirectory()?function(e,t,n,r,u,o){return t?Dt(n,r,u,o):function(e,t,n,r,u){tt.mkdir(n,(o=>{if(o)return u(o);Dt(t,n,r,(t=>t?u(t):dt(n,e,u)))}))}(e.mode,n,r,u,o)}(i,e,t,n,r,u):i.isFile()||i.isCharacterDevice()||i.isBlockDevice()?function(e,t,n,r,u,o){return t?function(e,t,n,r,u){if(!r.overwrite)return r.errorOnExist?u(new Error(`'${n}' already exists`)):u();tt.unlink(n,(o=>o?u(o):lt(e,t,n,r,u)))}(e,n,r,u,o):lt(e,n,r,u,o)}(i,e,t,n,r,u):i.isSymbolicLink()?function(e,t,n,r,u){tt.readlink(t,((t,o)=>t?u(t):(r.dereference&&(o=nt.resolve(process.cwd(),o)),e?void tt.readlink(n,((t,i)=>t?"EINVAL"===t.code||"UNKNOWN"===t.code?tt.symlink(o,n,u):u(t):(r.dereference&&(i=nt.resolve(process.cwd(),i)),it.isSrcSubdir(o,i)?u(new Error(`Cannot copy '${o}' to a subdirectory of itself, '${i}'.`)):e.isDirectory()&&it.isSrcSubdir(i,o)?u(new Error(`Cannot overwrite '${i}' with '${o}'.`)):function(e,t,n){tt.unlink(t,(r=>r?n(r):tt.symlink(e,t,n)))}(o,n,u)))):tt.symlink(o,n,u))))}(e,t,n,r,u):i.isSocket()?u(new Error(`Cannot copy a socket file: ${t}`)):i.isFIFO()?u(new Error(`Cannot copy a FIFO pipe: ${t}`)):u(new Error(`Unknown file: ${t}`))))}function lt(e,t,n,r,u){tt.copyFile(t,n,(o=>o?u(o):r.preserveTimestamps?function(e,t,n,r){if(function(e){return 0==(128&e)}(e))return function(e,t,n){return dt(e,128|t,n)}(n,e,(u=>u?r(u):ft(e,t,n,r)));return ft(e,t,n,r)}(e.mode,t,n,u):dt(n,e.mode,u)))}function ft(e,t,n,r){!function(e,t,n){tt.stat(e,((e,r)=>e?n(e):ot(t,r.atime,r.mtime,n)))}(t,n,(t=>t?r(t):dt(n,e,r)))}function dt(e,t,n){return tt.chmod(e,t,n)}function Dt(e,t,n,r){tt.readdir(e,((u,o)=>u?r(u):pt(o,e,t,n,r)))}function pt(e,t,n,r,u){const o=e.pop();return o?function(e,t,n,r,u,o){const i=nt.join(n,t),s=nt.join(r,t);it.checkPaths(i,s,"copy",u,((t,c)=>{if(t)return o(t);const{destStat:a}=c;!function(e,t,n,r,u){r.filter?ct(at,e,t,n,r,u):at(e,t,n,r,u)}(a,i,s,u,(t=>t?o(t):pt(e,n,r,u,o)))}))}(e,o,t,n,r,u):u()}var Et=function(e,t,n,r){"function"!=typeof n||r?"function"==typeof n&&(n={filter:n}):(r=n,n={}),r=r||function(){},(n=n||{}).clobber=!("clobber"in n)||!!n.clobber,n.overwrite="overwrite"in n?!!n.overwrite:n.clobber,n.preserveTimestamps&&"ia32"===process.arch&&console.warn("fs-extra: Using the preserveTimestamps option in 32-bit node is not recommended;\n\n see https://github.com/jprichardson/node-fs-extra/issues/269"),it.checkPaths(e,t,"copy",n,((u,o)=>{if(u)return r(u);const{srcStat:i,destStat:s}=o;it.checkParentPaths(e,i,t,"copy",(u=>u?r(u):n.filter?ct(st,s,e,t,n,r):st(s,e,t,n,r)))}))};const mt=we,ht=p.default,yt=$e.mkdirsSync,Ct=We,Ft=et;function gt(e,t,n,r){const u=(r.dereference?mt.statSync:mt.lstatSync)(t);if(u.isDirectory())return function(e,t,n,r,u){return t?St(n,r,u):function(e,t,n,r){return mt.mkdirSync(n),St(t,n,r),vt(n,e)}(e.mode,n,r,u)}(u,e,t,n,r);if(u.isFile()||u.isCharacterDevice()||u.isBlockDevice())return function(e,t,n,r,u){return t?function(e,t,n,r){if(r.overwrite)return mt.unlinkSync(n),At(e,t,n,r);if(r.errorOnExist)throw new Error(`'${n}' already exists`)}(e,n,r,u):At(e,n,r,u)}(u,e,t,n,r);if(u.isSymbolicLink())return function(e,t,n,r){let u=mt.readlinkSync(t);r.dereference&&(u=ht.resolve(process.cwd(),u));if(e){let e;try{e=mt.readlinkSync(n)}catch(e){if("EINVAL"===e.code||"UNKNOWN"===e.code)return mt.symlinkSync(u,n);throw e}if(r.dereference&&(e=ht.resolve(process.cwd(),e)),Ft.isSrcSubdir(u,e))throw new Error(`Cannot copy '${u}' to a subdirectory of itself, '${e}'.`);if(mt.statSync(n).isDirectory()&&Ft.isSrcSubdir(e,u))throw new Error(`Cannot overwrite '${e}' with '${u}'.`);return function(e,t){return mt.unlinkSync(t),mt.symlinkSync(e,t)}(u,n)}return mt.symlinkSync(u,n)}(e,t,n,r);if(u.isSocket())throw new Error(`Cannot copy a socket file: ${t}`);if(u.isFIFO())throw new Error(`Cannot copy a FIFO pipe: ${t}`);throw new Error(`Unknown file: ${t}`)}function At(e,t,n,r){return mt.copyFileSync(t,n),r.preserveTimestamps&&function(e,t,n){(function(e){return 0==(128&e)})(e)&&function(e,t){vt(e,128|t)}(n,e);(function(e,t){const n=mt.statSync(e);Ct(t,n.atime,n.mtime)})(t,n)}(e.mode,t,n),vt(n,e.mode)}function vt(e,t){return mt.chmodSync(e,t)}function St(e,t,n){mt.readdirSync(e).forEach((r=>function(e,t,n,r){const u=ht.join(t,e),o=ht.join(n,e),{destStat:i}=Ft.checkPathsSync(u,o,"copy",r);return function(e,t,n,r){if(!r.filter||r.filter(t,n))return gt(e,t,n,r)}(i,u,o,r)}(r,e,t,n)))}var wt=function(e,t,n){"function"==typeof n&&(n={filter:n}),(n=n||{}).clobber=!("clobber"in n)||!!n.clobber,n.overwrite="overwrite"in n?!!n.overwrite:n.clobber,n.preserveTimestamps&&"ia32"===process.arch&&console.warn("fs-extra: Using the preserveTimestamps option in 32-bit node is not recommended;\n\n see https://github.com/jprichardson/node-fs-extra/issues/269");const{srcStat:r,destStat:u}=Ft.checkPathsSync(e,t,"copy",n);return Ft.checkParentPathsSync(e,r,t,"copy"),function(e,t,n,r){if(r.filter&&!r.filter(t,n))return;const u=ht.dirname(n);mt.existsSync(u)||yt(u);return gt(e,t,n,r)}(u,e,t,n)};var Ot={copy:(0,re.fromCallback)(Et),copySync:wt};const bt=we,_t=p.default,Bt=g.default,Pt="win32"===process.platform;function kt(e){["unlink","chmod","stat","lstat","rmdir","readdir"].forEach((t=>{e[t]=e[t]||bt[t],e[t+="Sync"]=e[t]||bt[t]})),e.maxBusyTries=e.maxBusyTries||3}function xt(e,t,n){let r=0;"function"==typeof t&&(n=t,t={}),Bt(e,"rimraf: missing path"),Bt.strictEqual(typeof e,"string","rimraf: path should be a string"),Bt.strictEqual(typeof n,"function","rimraf: callback function required"),Bt(t,"rimraf: invalid options argument provided"),Bt.strictEqual(typeof t,"object","rimraf: options should be object"),kt(t),Nt(e,t,(function u(o){if(o){if(("EBUSY"===o.code||"ENOTEMPTY"===o.code||"EPERM"===o.code)&&rNt(e,t,u)),100*r)}"ENOENT"===o.code&&(o=null)}n(o)}))}function Nt(e,t,n){Bt(e),Bt(t),Bt("function"==typeof n),t.lstat(e,((r,u)=>r&&"ENOENT"===r.code?n(null):r&&"EPERM"===r.code&&Pt?It(e,t,r,n):u&&u.isDirectory()?Rt(e,t,r,n):void t.unlink(e,(r=>{if(r){if("ENOENT"===r.code)return n(null);if("EPERM"===r.code)return Pt?It(e,t,r,n):Rt(e,t,r,n);if("EISDIR"===r.code)return Rt(e,t,r,n)}return n(r)}))))}function It(e,t,n,r){Bt(e),Bt(t),Bt("function"==typeof r),t.chmod(e,438,(u=>{u?r("ENOENT"===u.code?null:n):t.stat(e,((u,o)=>{u?r("ENOENT"===u.code?null:n):o.isDirectory()?Rt(e,t,n,r):t.unlink(e,r)}))}))}function Tt(e,t,n){let r;Bt(e),Bt(t);try{t.chmodSync(e,438)}catch(e){if("ENOENT"===e.code)return;throw n}try{r=t.statSync(e)}catch(e){if("ENOENT"===e.code)return;throw n}r.isDirectory()?Lt(e,t,n):t.unlinkSync(e)}function Rt(e,t,n,r){Bt(e),Bt(t),Bt("function"==typeof r),t.rmdir(e,(u=>{!u||"ENOTEMPTY"!==u.code&&"EEXIST"!==u.code&&"EPERM"!==u.code?u&&"ENOTDIR"===u.code?r(n):r(u):function(e,t,n){Bt(e),Bt(t),Bt("function"==typeof n),t.readdir(e,((r,u)=>{if(r)return n(r);let o,i=u.length;if(0===i)return t.rmdir(e,n);u.forEach((r=>{xt(_t.join(e,r),t,(r=>{if(!o)return r?n(o=r):void(0==--i&&t.rmdir(e,n))}))}))}))}(e,t,r)}))}function Mt(e,t){let n;kt(t=t||{}),Bt(e,"rimraf: missing path"),Bt.strictEqual(typeof e,"string","rimraf: path should be a string"),Bt(t,"rimraf: missing options"),Bt.strictEqual(typeof t,"object","rimraf: options should be object");try{n=t.lstatSync(e)}catch(n){if("ENOENT"===n.code)return;"EPERM"===n.code&&Pt&&Tt(e,t,n)}try{n&&n.isDirectory()?Lt(e,t,null):t.unlinkSync(e)}catch(n){if("ENOENT"===n.code)return;if("EPERM"===n.code)return Pt?Tt(e,t,n):Lt(e,t,n);if("EISDIR"!==n.code)throw n;Lt(e,t,n)}}function Lt(e,t,n){Bt(e),Bt(t);try{t.rmdirSync(e)}catch(r){if("ENOTDIR"===r.code)throw n;if("ENOTEMPTY"===r.code||"EEXIST"===r.code||"EPERM"===r.code)!function(e,t){if(Bt(e),Bt(t),t.readdirSync(e).forEach((n=>Mt(_t.join(e,n),t))),!Pt){return t.rmdirSync(e,t)}{const n=Date.now();do{try{return t.rmdirSync(e,t)}catch{}}while(Date.now()-n<500)}}(e,t);else if("ENOENT"!==r.code)throw r}}var jt=xt;xt.sync=Mt;const $t=we,Ht=re.fromCallback,Jt=jt;var Gt={remove:Ht((function(e,t){if($t.rm)return $t.rm(e,{recursive:!0,force:!0},t);Jt(e,t)})),removeSync:function(e){if($t.rmSync)return $t.rmSync(e,{recursive:!0,force:!0});Jt.sync(e)}};const Vt=re.fromPromise,Ut=ne,Wt=p.default,zt=$e,Kt=Gt,qt=Vt((async function(e){let t;try{t=await Ut.readdir(e)}catch{return zt.mkdirs(e)}return Promise.all(t.map((t=>Kt.remove(Wt.join(e,t)))))}));function Yt(e){let t;try{t=Ut.readdirSync(e)}catch{return zt.mkdirsSync(e)}t.forEach((t=>{t=Wt.join(e,t),Kt.removeSync(t)}))}var Xt={emptyDirSync:Yt,emptydirSync:Yt,emptyDir:qt,emptydir:qt};const Zt=re.fromCallback,Qt=p.default,en=we,tn=$e;var nn={createFile:Zt((function(e,t){function n(){en.writeFile(e,"",(e=>{if(e)return t(e);t()}))}en.stat(e,((r,u)=>{if(!r&&u.isFile())return t();const o=Qt.dirname(e);en.stat(o,((e,r)=>{if(e)return"ENOENT"===e.code?tn.mkdirs(o,(e=>{if(e)return t(e);n()})):t(e);r.isDirectory()?n():en.readdir(o,(e=>{if(e)return t(e)}))}))}))})),createFileSync:function(e){let t;try{t=en.statSync(e)}catch{}if(t&&t.isFile())return;const n=Qt.dirname(e);try{en.statSync(n).isDirectory()||en.readdirSync(n)}catch(e){if(!e||"ENOENT"!==e.code)throw e;tn.mkdirsSync(n)}en.writeFileSync(e,"")}};const rn=re.fromCallback,un=p.default,on=we,sn=$e,cn=Ge.pathExists,{areIdentical:an}=et;var ln={createLink:rn((function(e,t,n){function r(e,t){on.link(e,t,(e=>{if(e)return n(e);n(null)}))}on.lstat(t,((u,o)=>{on.lstat(e,((u,i)=>{if(u)return u.message=u.message.replace("lstat","ensureLink"),n(u);if(o&&an(i,o))return n(null);const s=un.dirname(t);cn(s,((u,o)=>u?n(u):o?r(e,t):void sn.mkdirs(s,(u=>{if(u)return n(u);r(e,t)}))))}))}))})),createLinkSync:function(e,t){let n;try{n=on.lstatSync(t)}catch{}try{const t=on.lstatSync(e);if(n&&an(t,n))return}catch(e){throw e.message=e.message.replace("lstat","ensureLink"),e}const r=un.dirname(t);return on.existsSync(r)||sn.mkdirsSync(r),on.linkSync(e,t)}};const fn=p.default,dn=we,Dn=Ge.pathExists;var pn={symlinkPaths:function(e,t,n){if(fn.isAbsolute(e))return dn.lstat(e,(t=>t?(t.message=t.message.replace("lstat","ensureSymlink"),n(t)):n(null,{toCwd:e,toDst:e})));{const r=fn.dirname(t),u=fn.join(r,e);return Dn(u,((t,o)=>t?n(t):o?n(null,{toCwd:u,toDst:e}):dn.lstat(e,(t=>t?(t.message=t.message.replace("lstat","ensureSymlink"),n(t)):n(null,{toCwd:e,toDst:fn.relative(r,e)})))))}},symlinkPathsSync:function(e,t){let n;if(fn.isAbsolute(e)){if(n=dn.existsSync(e),!n)throw new Error("absolute srcpath does not exist");return{toCwd:e,toDst:e}}{const r=fn.dirname(t),u=fn.join(r,e);if(n=dn.existsSync(u),n)return{toCwd:u,toDst:e};if(n=dn.existsSync(e),!n)throw new Error("relative srcpath does not exist");return{toCwd:e,toDst:fn.relative(r,e)}}}};const En=we;var mn={symlinkType:function(e,t,n){if(n="function"==typeof t?t:n,t="function"!=typeof t&&t)return n(null,t);En.lstat(e,((e,r)=>{if(e)return n(null,"file");t=r&&r.isDirectory()?"dir":"file",n(null,t)}))},symlinkTypeSync:function(e,t){let n;if(t)return t;try{n=En.lstatSync(e)}catch{return"file"}return n&&n.isDirectory()?"dir":"file"}};const hn=re.fromCallback,yn=p.default,Cn=ne,Fn=$e.mkdirs,gn=$e.mkdirsSync,An=pn.symlinkPaths,vn=pn.symlinkPathsSync,Sn=mn.symlinkType,wn=mn.symlinkTypeSync,On=Ge.pathExists,{areIdentical:bn}=et;function _n(e,t,n,r){An(e,t,((u,o)=>{if(u)return r(u);e=o.toDst,Sn(o.toCwd,n,((n,u)=>{if(n)return r(n);const o=yn.dirname(t);On(o,((n,i)=>n?r(n):i?Cn.symlink(e,t,u,r):void Fn(o,(n=>{if(n)return r(n);Cn.symlink(e,t,u,r)}))))}))}))}var Bn={createSymlink:hn((function(e,t,n,r){r="function"==typeof n?n:r,n="function"!=typeof n&&n,Cn.lstat(t,((u,o)=>{!u&&o.isSymbolicLink()?Promise.all([Cn.stat(e),Cn.stat(t)]).then((([u,o])=>{if(bn(u,o))return r(null);_n(e,t,n,r)})):_n(e,t,n,r)}))})),createSymlinkSync:function(e,t,n){let r;try{r=Cn.lstatSync(t)}catch{}if(r&&r.isSymbolicLink()){const n=Cn.statSync(e),r=Cn.statSync(t);if(bn(n,r))return}const u=vn(e,t);e=u.toDst,n=wn(u.toCwd,n);const o=yn.dirname(t);return Cn.existsSync(o)||gn(o),Cn.symlinkSync(e,t,n)}};const{createFile:Pn,createFileSync:kn}=nn,{createLink:xn,createLinkSync:Nn}=ln,{createSymlink:In,createSymlinkSync:Tn}=Bn;var Rn={createFile:Pn,createFileSync:kn,ensureFile:Pn,ensureFileSync:kn,createLink:xn,createLinkSync:Nn,ensureLink:xn,ensureLinkSync:Nn,createSymlink:In,createSymlinkSync:Tn,ensureSymlink:In,ensureSymlinkSync:Tn};var Mn={stringify:function(e,{EOL:t="\n",finalEOL:n=!0,replacer:r=null,spaces:u}={}){const o=n?t:"";return JSON.stringify(e,r,u).replace(/\n/g,t)+o},stripBom:function(e){return Buffer.isBuffer(e)&&(e=e.toString("utf8")),e.replace(/^\uFEFF/,"")}};let Ln;try{Ln=we}catch(e){Ln=D.default}const jn=re,{stringify:$n,stripBom:Hn}=Mn;const Jn=jn.fromPromise((async function(e,t={}){"string"==typeof t&&(t={encoding:t});const n=t.fs||Ln,r=!("throws"in t)||t.throws;let u,o=await jn.fromCallback(n.readFile)(e,t);o=Hn(o);try{u=JSON.parse(o,t?t.reviver:null)}catch(t){if(r)throw t.message=`${e}: ${t.message}`,t;return null}return u}));const Gn=jn.fromPromise((async function(e,t,n={}){const r=n.fs||Ln,u=$n(t,n);await jn.fromCallback(r.writeFile)(e,u,n)}));const Vn={readFile:Jn,readFileSync:function(e,t={}){"string"==typeof t&&(t={encoding:t});const n=t.fs||Ln,r=!("throws"in t)||t.throws;try{let r=n.readFileSync(e,t);return r=Hn(r),JSON.parse(r,t.reviver)}catch(t){if(r)throw t.message=`${e}: ${t.message}`,t;return null}},writeFile:Gn,writeFileSync:function(e,t,n={}){const r=n.fs||Ln,u=$n(t,n);return r.writeFileSync(e,u,n)}};var Un={readJson:Vn.readFile,readJsonSync:Vn.readFileSync,writeJson:Vn.writeFile,writeJsonSync:Vn.writeFileSync};const Wn=re.fromCallback,zn=we,Kn=p.default,qn=$e,Yn=Ge.pathExists;var Xn={outputFile:Wn((function(e,t,n,r){"function"==typeof n&&(r=n,n="utf8");const u=Kn.dirname(e);Yn(u,((o,i)=>o?r(o):i?zn.writeFile(e,t,n,r):void qn.mkdirs(u,(u=>{if(u)return r(u);zn.writeFile(e,t,n,r)}))))})),outputFileSync:function(e,...t){const n=Kn.dirname(e);if(zn.existsSync(n))return zn.writeFileSync(e,...t);qn.mkdirsSync(n),zn.writeFileSync(e,...t)}};const{stringify:Zn}=Mn,{outputFile:Qn}=Xn;var er=async function(e,t,n={}){const r=Zn(t,n);await Qn(e,r,n)};const{stringify:tr}=Mn,{outputFileSync:nr}=Xn;var rr=function(e,t,n){const r=tr(t,n);nr(e,r,n)};const ur=re.fromPromise,or=Un;or.outputJson=ur(er),or.outputJsonSync=rr,or.outputJSON=or.outputJson,or.outputJSONSync=or.outputJsonSync,or.writeJSON=or.writeJson,or.writeJSONSync=or.writeJsonSync,or.readJSON=or.readJson,or.readJSONSync=or.readJsonSync;var ir=or;const sr=we,cr=p.default,ar=Ot.copy,lr=Gt.remove,fr=$e.mkdirp,dr=Ge.pathExists,Dr=et;function pr(e,t,n,r,u){return r?Er(e,t,n,u):n?lr(t,(r=>r?u(r):Er(e,t,n,u))):void dr(t,((r,o)=>r?u(r):o?u(new Error("dest already exists.")):Er(e,t,n,u)))}function Er(e,t,n,r){sr.rename(e,t,(u=>u?"EXDEV"!==u.code?r(u):function(e,t,n,r){const u={overwrite:n,errorOnExist:!0};ar(e,t,u,(t=>t?r(t):lr(e,r)))}(e,t,n,r):r()))}var mr=function(e,t,n,r){"function"==typeof n&&(r=n,n={});const u=n.overwrite||n.clobber||!1;Dr.checkPaths(e,t,"move",n,((n,o)=>{if(n)return r(n);const{srcStat:i,isChangingCase:s=!1}=o;Dr.checkParentPaths(e,i,t,"move",(n=>n?r(n):function(e){const t=cr.dirname(e);return cr.parse(t).root===t}(t)?pr(e,t,u,s,r):void fr(cr.dirname(t),(n=>n?r(n):pr(e,t,u,s,r)))))}))};const hr=we,yr=p.default,Cr=Ot.copySync,Fr=Gt.removeSync,gr=$e.mkdirpSync,Ar=et;function vr(e,t,n){try{hr.renameSync(e,t)}catch(r){if("EXDEV"!==r.code)throw r;return function(e,t,n){const r={overwrite:n,errorOnExist:!0};return Cr(e,t,r),Fr(e)}(e,t,n)}}var Sr=function(e,t,n){const r=(n=n||{}).overwrite||n.clobber||!1,{srcStat:u,isChangingCase:o=!1}=Ar.checkPathsSync(e,t,"move",n);return Ar.checkParentPathsSync(e,u,t,"move"),function(e){const t=yr.dirname(e);return yr.parse(t).root===t}(t)||gr(yr.dirname(t)),function(e,t,n,r){if(r)return vr(e,t,n);if(n)return Fr(t),vr(e,t,n);if(hr.existsSync(t))throw new Error("dest already exists.");return vr(e,t,n)}(e,t,r,o)};var wr,Or,br,_r,Br,Pr={move:(0,re.fromCallback)(mr),moveSync:Sr},kr={...ne,...Ot,...Xt,...Rn,...ir,...$e,...Pr,...Xn,...Ge,...Gt},xr={},Nr={exports:{}},Ir={exports:{}};function Tr(){if(Or)return wr;Or=1;var e=1e3,t=60*e,n=60*t,r=24*n,u=7*r,o=365.25*r;function i(e,t,n,r){var u=t>=1.5*n;return Math.round(e/n)+" "+r+(u?"s":"")}return wr=function(s,c){c=c||{};var a=typeof s;if("string"===a&&s.length>0)return function(i){if((i=String(i)).length>100)return;var s=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(i);if(!s)return;var c=parseFloat(s[1]);switch((s[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return c*o;case"weeks":case"week":case"w":return c*u;case"days":case"day":case"d":return c*r;case"hours":case"hour":case"hrs":case"hr":case"h":return c*n;case"minutes":case"minute":case"mins":case"min":case"m":return c*t;case"seconds":case"second":case"secs":case"sec":case"s":return c*e;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return c;default:return}}(s);if("number"===a&&isFinite(s))return c.long?function(u){var o=Math.abs(u);if(o>=r)return i(u,o,r,"day");if(o>=n)return i(u,o,n,"hour");if(o>=t)return i(u,o,t,"minute");if(o>=e)return i(u,o,e,"second");return u+" ms"}(s):function(u){var o=Math.abs(u);if(o>=r)return Math.round(u/r)+"d";if(o>=n)return Math.round(u/n)+"h";if(o>=t)return Math.round(u/t)+"m";if(o>=e)return Math.round(u/e)+"s";return u+"ms"}(s);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(s))}}function Rr(){if(_r)return br;return _r=1,br=function(e){function t(e){let r,u,o,i=null;function s(...e){if(!s.enabled)return;const n=s,u=Number(new Date),o=u-(r||u);n.diff=o,n.prev=r,n.curr=u,r=u,e[0]=t.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let i=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,((r,u)=>{if("%%"===r)return"%";i++;const o=t.formatters[u];if("function"==typeof o){const t=e[i];r=o.call(n,t),e.splice(i,1),i--}return r})),t.formatArgs.call(n,e);(n.log||t.log).apply(n,e)}return s.namespace=e,s.useColors=t.useColors(),s.color=t.selectColor(e),s.extend=n,s.destroy=t.destroy,Object.defineProperty(s,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==i?i:(u!==t.namespaces&&(u=t.namespaces,o=t.enabled(e)),o),set:e=>{i=e}}),"function"==typeof t.init&&t.init(s),s}function n(e,n){const r=t(this.namespace+(void 0===n?":":n)+e);return r.log=this.log,r}function r(e){return e.toString().substring(2,e.toString().length-2).replace(/\.\*\?$/,"*")}return t.debug=t,t.default=t,t.coerce=function(e){if(e instanceof Error)return e.stack||e.message;return e},t.disable=function(){const e=[...t.names.map(r),...t.skips.map(r).map((e=>"-"+e))].join(",");return t.enable(""),e},t.enable=function(e){let n;t.save(e),t.namespaces=e,t.names=[],t.skips=[];const r=("string"==typeof e?e:"").split(/[\s,]+/),u=r.length;for(n=0;n{t[n]=e[n]})),t.names=[],t.skips=[],t.formatters={},t.selectColor=function(e){let n=0;for(let t=0;t{const n=e.startsWith("-")?"":1===e.length?"-":"--",r=t.indexOf(n+e),u=t.indexOf("--");return-1!==r&&(-1===u||r{}),"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."),t.colors=[6,2,3,4,5,1];try{const e=function(){if($r)return jr;$r=1;const e=E.default,t=A.default,n=Vr(),{env:r}=process;let u;function o(e){return 0!==e&&{level:e,hasBasic:!0,has256:e>=2,has16m:e>=3}}function i(t,o){if(0===u)return 0;if(n("color=16m")||n("color=full")||n("color=truecolor"))return 3;if(n("color=256"))return 2;if(t&&!o&&void 0===u)return 0;const i=u||0;if("dumb"===r.TERM)return i;if("win32"===process.platform){const t=e.release().split(".");return Number(t[0])>=10&&Number(t[2])>=10586?Number(t[2])>=14931?3:2:1}if("CI"in r)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI","GITHUB_ACTIONS","BUILDKITE"].some((e=>e in r))||"codeship"===r.CI_NAME?1:i;if("TEAMCITY_VERSION"in r)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(r.TEAMCITY_VERSION)?1:0;if("truecolor"===r.COLORTERM)return 3;if("TERM_PROGRAM"in r){const e=parseInt((r.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(r.TERM_PROGRAM){case"iTerm.app":return e>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(r.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(r.TERM)||"COLORTERM"in r?1:i}return n("no-color")||n("no-colors")||n("color=false")||n("color=never")?u=0:(n("color")||n("colors")||n("color=true")||n("color=always"))&&(u=1),"FORCE_COLOR"in r&&(u="true"===r.FORCE_COLOR?1:"false"===r.FORCE_COLOR?0:0===r.FORCE_COLOR.length?1:Math.min(parseInt(r.FORCE_COLOR,10),3)),jr={supportsColor:function(e){return o(i(e,e&&e.isTTY))},stdout:o(i(!0,t.isatty(1))),stderr:o(i(!0,t.isatty(2)))}}();e&&(e.stderr||e).level>=2&&(t.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221])}catch(e){}t.inspectOpts=Object.keys(process.env).filter((e=>/^debug_/i.test(e))).reduce(((e,t)=>{const n=t.substring(6).toLowerCase().replace(/_([a-z])/g,((e,t)=>t.toUpperCase()));let r=process.env[t];return r=!!/^(yes|on|true|enabled)$/i.test(r)||!/^(no|off|false|disabled)$/i.test(r)&&("null"===r?null:Number(r)),e[n]=r,e}),{}),e.exports=Rr()(t);const{formatters:u}=e.exports;u.o=function(e){return this.inspectOpts.colors=this.useColors,r.inspect(e,this.inspectOpts).split("\n").map((e=>e.trim())).join(" ")},u.O=function(e){return this.inspectOpts.colors=this.useColors,r.inspect(e,this.inspectOpts)}}(Gr,Gr.exports)),Gr.exports}Jr=Nr,"undefined"==typeof process||"renderer"===process.type||!0===process.browser||process.__nwjs?Jr.exports=(Br||(Br=1,function(e,t){t.formatArgs=function(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const n="color: "+this.color;t.splice(1,0,n,"color: inherit");let r=0,u=0;t[0].replace(/%[a-zA-Z%]/g,(e=>{"%%"!==e&&(r++,"%c"===e&&(u=r))})),t.splice(u,0,n)},t.save=function(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch(e){}},t.load=function(){let e;try{e=t.storage.getItem("debug")}catch(e){}return!e&&"undefined"!=typeof process&&"env"in process&&(e=process.env.DEBUG),e},t.useColors=function(){return!("undefined"==typeof window||!window.process||"renderer"!==window.process.type&&!window.process.__nwjs)||("undefined"==typeof navigator||!navigator.userAgent||!navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))&&("undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))},t.storage=function(){try{return localStorage}catch(e){}}(),t.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],t.log=console.debug||console.log||(()=>{}),e.exports=Rr()(t);const{formatters:n}=e.exports;n.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}}(Ir,Ir.exports)),Ir.exports):Jr.exports=Ur();var Wr=function(e){return(e=e||{}).circles?function(e){var t=[],n=[];return e.proto?function e(u){if("object"!=typeof u||null===u)return u;if(u instanceof Date)return new Date(u);if(Array.isArray(u))return r(u,e);if(u instanceof Map)return new Map(r(Array.from(u),e));if(u instanceof Set)return new Set(r(Array.from(u),e));var o={};for(var i in t.push(u),n.push(o),u){var s=u[i];if("object"!=typeof s||null===s)o[i]=s;else if(s instanceof Date)o[i]=new Date(s);else if(s instanceof Map)o[i]=new Map(r(Array.from(s),e));else if(s instanceof Set)o[i]=new Set(r(Array.from(s),e));else if(ArrayBuffer.isView(s))o[i]=zr(s);else{var c=t.indexOf(s);o[i]=-1!==c?n[c]:e(s)}}return t.pop(),n.pop(),o}:function e(u){if("object"!=typeof u||null===u)return u;if(u instanceof Date)return new Date(u);if(Array.isArray(u))return r(u,e);if(u instanceof Map)return new Map(r(Array.from(u),e));if(u instanceof Set)return new Set(r(Array.from(u),e));var o={};for(var i in t.push(u),n.push(o),u)if(!1!==Object.hasOwnProperty.call(u,i)){var s=u[i];if("object"!=typeof s||null===s)o[i]=s;else if(s instanceof Date)o[i]=new Date(s);else if(s instanceof Map)o[i]=new Map(r(Array.from(s),e));else if(s instanceof Set)o[i]=new Set(r(Array.from(s),e));else if(ArrayBuffer.isView(s))o[i]=zr(s);else{var c=t.indexOf(s);o[i]=-1!==c?n[c]:e(s)}}return t.pop(),n.pop(),o};function r(e,r){for(var u=Object.keys(e),o=new Array(u.length),i=0;i!e,Qr=e=>e&&"object"==typeof e&&!Array.isArray(e),eu=(e,t,n)=>{(Array.isArray(t)?t:[t]).forEach((t=>{if(t)throw new Error(`Problem with log4js configuration: (${Kr.inspect(e,{depth:5})}) - ${n}`)}))};var tu={configure:e=>{qr("New configuration to be validated: ",e),eu(e,Zr(Qr(e)),"must be an object."),qr(`Calling pre-processing listeners (${Yr.length})`),Yr.forEach((t=>t(e))),qr("Configuration pre-processing finished."),qr(`Calling configuration listeners (${Xr.length})`),Xr.forEach((t=>t(e))),qr("Configuration finished.")},addListener:e=>{Xr.push(e),qr(`Added listener, now ${Xr.length} listeners`)},addPreProcessingListener:e=>{Yr.push(e),qr(`Added pre-processing listener, now ${Yr.length} listeners`)},throwExceptionIf:eu,anObject:Qr,anInteger:e=>e&&"number"==typeof e&&Number.isInteger(e),validIdentifier:e=>/^[A-Za-z][A-Za-z0-9_]*$/g.test(e),not:Zr},nu={exports:{}};!function(e){function t(e,t){for(var n=e.toString();n.length-1?s:c,l=n(u.getHours()),f=n(u.getMinutes()),d=n(u.getSeconds()),D=t(u.getMilliseconds(),3),p=function(e){var t=Math.abs(e),n=String(Math.floor(t/60)),r=String(t%60);return n=("0"+n).slice(-2),r=("0"+r).slice(-2),0===e?"Z":(e<0?"+":"-")+n+":"+r}(u.getTimezoneOffset());return r.replace(/dd/g,o).replace(/MM/g,i).replace(/y{1,4}/g,a).replace(/hh/g,l).replace(/mm/g,f).replace(/ss/g,d).replace(/SSS/g,D).replace(/O/g,p)}function u(e,t,n,r){e["set"+(r?"":"UTC")+t](n)}e.exports=r,e.exports.asString=r,e.exports.parse=function(t,n,r){if(!t)throw new Error("pattern must be supplied");return function(t,n,r){var o=t.indexOf("O")<0,i=!1,s=[{pattern:/y{1,4}/,regexp:"\\d{1,4}",fn:function(e,t){u(e,"FullYear",t,o)}},{pattern:/MM/,regexp:"\\d{1,2}",fn:function(e,t){u(e,"Month",t-1,o),e.getMonth()!==t-1&&(i=!0)}},{pattern:/dd/,regexp:"\\d{1,2}",fn:function(e,t){i&&u(e,"Month",e.getMonth()-1,o),u(e,"Date",t,o)}},{pattern:/hh/,regexp:"\\d{1,2}",fn:function(e,t){u(e,"Hours",t,o)}},{pattern:/mm/,regexp:"\\d\\d",fn:function(e,t){u(e,"Minutes",t,o)}},{pattern:/ss/,regexp:"\\d\\d",fn:function(e,t){u(e,"Seconds",t,o)}},{pattern:/SSS/,regexp:"\\d\\d\\d",fn:function(e,t){u(e,"Milliseconds",t,o)}},{pattern:/O/,regexp:"[+-]\\d{1,2}:?\\d{2}?|Z",fn:function(e,t){t="Z"===t?0:t.replace(":","");var n=Math.abs(t),r=(t>0?-1:1)*(n%100+60*Math.floor(n/100));e.setUTCMinutes(e.getUTCMinutes()+r)}}],c=s.reduce((function(e,t){return t.pattern.test(e.regexp)?(t.index=e.regexp.match(t.pattern).index,e.regexp=e.regexp.replace(t.pattern,"("+t.regexp+")")):t.index=-1,e}),{regexp:t,index:[]}),a=s.filter((function(e){return e.index>-1}));a.sort((function(e,t){return e.index-t.index}));var l=new RegExp(c.regexp).exec(n);if(l){var f=r||e.exports.now();return a.forEach((function(e,t){e.fn(f,l[t+1])})),f}throw new Error("String '"+n+"' could not be parsed as '"+t+"'")}(t,n,r)},e.exports.now=function(){return new Date},e.exports.ISO8601_FORMAT="yyyy-MM-ddThh:mm:ss.SSS",e.exports.ISO8601_WITH_TZ_OFFSET_FORMAT="yyyy-MM-ddThh:mm:ss.SSSO",e.exports.DATETIME_FORMAT="dd MM yyyy hh:mm:ss.SSS",e.exports.ABSOLUTETIME_FORMAT="hh:mm:ss.SSS"}(nu);const ru=nu.exports,uu=E.default,ou=F.default,iu=p.default,su={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[90,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[91,39],yellow:[33,39]};function cu(e){return e?`[${su[e][0]}m`:""}function au(e){return e?`[${su[e][1]}m`:""}function lu(e,t){return n=ou.format("[%s] [%s] %s - ",ru.asString(e.startTime),e.level.toString(),e.categoryName),cu(r=t)+n+au(r);var n,r}function fu(e){return lu(e)+ou.format(...e.data)}function du(e){return lu(e,e.level.colour)+ou.format(...e.data)}function Du(e){return ou.format(...e.data)}function pu(e){return e.data[0]}function Eu(e,t){const n=/%(-?[0-9]+)?(\.?-?[0-9]+)?([[\]cdhmnprzxXyflos%])(\{([^}]+)\})?|([^%]+)/;function r(e){return e&&e.pid?e.pid.toString():process.pid.toString()}e=e||"%r %p %c - %m%n";const u={c:function(e,t){let n=e.categoryName;if(t){const e=parseInt(t,10),r=n.split(".");ee&&(n=r.slice(-e).join(iu.sep))}return n},l:function(e){return e.lineNumber?`${e.lineNumber}`:""},o:function(e){return e.columnNumber?`${e.columnNumber}`:""},s:function(e){return e.callStack||""}};function o(e,t,n){return u[e](t,n)}function i(e,t,n){let r=e;return r=function(e,t){let n;return e?(n=parseInt(e.substr(1),10),n>0?t.slice(0,n):t.slice(n)):t}(t,r),r=function(e,t){let n;if(e)if("-"===e.charAt(0))for(n=parseInt(e.substr(1),10);t.lengthDu,basic:()=>fu,colored:()=>du,coloured:()=>du,pattern:e=>Eu(e&&e.pattern,e&&e.tokens),dummy:()=>pu};var hu={basicLayout:fu,messagePassThroughLayout:Du,patternLayout:Eu,colouredLayout:du,coloredLayout:du,dummyLayout:pu,addLayout(e,t){mu[e]=t},layout:(e,t)=>mu[e]&&mu[e](t)};const yu=tu,Cu=["white","grey","black","blue","cyan","green","magenta","red","yellow"];class Fu{constructor(e,t,n){this.level=e,this.levelStr=t,this.colour=n}toString(){return this.levelStr}static getLevel(e,t){return e?e instanceof Fu?e:(e instanceof Object&&e.levelStr&&(e=e.levelStr),Fu[e.toString().toUpperCase()]||t):t}static addLevels(e){if(e){Object.keys(e).forEach((t=>{const n=t.toUpperCase();Fu[n]=new Fu(e[t].value,n,e[t].colour);const r=Fu.levels.findIndex((e=>e.levelStr===n));r>-1?Fu.levels[r]=Fu[n]:Fu.levels.push(Fu[n])})),Fu.levels.sort(((e,t)=>e.level-t.level))}}isLessThanOrEqualTo(e){return"string"==typeof e&&(e=Fu.getLevel(e)),this.level<=e.level}isGreaterThanOrEqualTo(e){return"string"==typeof e&&(e=Fu.getLevel(e)),this.level>=e.level}isEqualTo(e){return"string"==typeof e&&(e=Fu.getLevel(e)),this.level===e.level}}Fu.levels=[],Fu.addLevels({ALL:{value:Number.MIN_VALUE,colour:"grey"},TRACE:{value:5e3,colour:"blue"},DEBUG:{value:1e4,colour:"cyan"},INFO:{value:2e4,colour:"green"},WARN:{value:3e4,colour:"yellow"},ERROR:{value:4e4,colour:"red"},FATAL:{value:5e4,colour:"magenta"},MARK:{value:9007199254740992,colour:"grey"},OFF:{value:Number.MAX_VALUE,colour:"grey"}}),yu.addListener((e=>{const t=e.levels;if(t){yu.throwExceptionIf(e,yu.not(yu.anObject(t)),"levels must be an object");Object.keys(t).forEach((n=>{yu.throwExceptionIf(e,yu.not(yu.validIdentifier(n)),`level name "${n}" is not a valid identifier (must start with a letter, only contain A-Z,a-z,0-9,_)`),yu.throwExceptionIf(e,yu.not(yu.anObject(t[n])),`level "${n}" must be an object`),yu.throwExceptionIf(e,yu.not(t[n].value),`level "${n}" must have a 'value' property`),yu.throwExceptionIf(e,yu.not(yu.anInteger(t[n].value)),`level "${n}".value must have an integer value`),yu.throwExceptionIf(e,yu.not(t[n].colour),`level "${n}" must have a 'colour' property`),yu.throwExceptionIf(e,yu.not(Cu.indexOf(t[n].colour)>-1),`level "${n}".colour must be one of ${Cu.join(", ")}`)}))}})),yu.addListener((e=>{Fu.addLevels(e.levels)}));var gu=Fu,Au={exports:{}},vu={};/*! (c) 2020 Andrea Giammarchi */ +const{parse:Su,stringify:wu}=JSON,{keys:Ou}=Object,bu=String,_u="string",Bu={},Pu="object",ku=(e,t)=>t,xu=e=>e instanceof bu?bu(e):e,Nu=(e,t)=>typeof t===_u?new bu(t):t,Iu=(e,t,n,r)=>{const u=[];for(let o=Ou(n),{length:i}=o,s=0;s{const r=bu(t.push(n)-1);return e.set(n,r),r},Ru=(e,t)=>{const n=Su(e,Nu).map(xu),r=n[0],u=t||ku,o=typeof r===Pu&&r?Iu(n,new Set,r,u):r;return u.call({"":o},"",o)};vu.parse=Ru;const Mu=(e,t,n)=>{const r=t&&typeof t===Pu?(e,n)=>""===e||-1Su(Mu(e));vu.fromJSON=e=>Ru(wu(e));const Lu=vu,ju=gu;class $u{constructor(e,t,n,r,u){this.startTime=new Date,this.categoryName=e,this.data=n,this.level=t,this.context=Object.assign({},r),this.pid=process.pid,u&&(this.functionName=u.functionName,this.fileName=u.fileName,this.lineNumber=u.lineNumber,this.columnNumber=u.columnNumber,this.callStack=u.callStack)}serialise(){const e=this.data.map((e=>(e&&e.message&&e.stack&&(e=Object.assign({message:e.message,stack:e.stack},e)),e)));return this.data=e,Lu.stringify(this)}static deserialise(e){let t;try{const n=Lu.parse(e);n.data=n.data.map((e=>{if(e&&e.message&&e.stack){const t=new Error(e);Object.keys(e).forEach((n=>{t[n]=e[n]})),e=t}return e})),t=new $u(n.categoryName,ju.getLevel(n.level.levelStr),n.data,n.context),t.startTime=new Date(n.startTime),t.pid=n.pid,t.cluster=n.cluster}catch(n){t=new $u("log4js",ju.ERROR,["Unable to parse log:",e,"because: ",n])}return t}}var Hu=$u;const Ju=Nr.exports("log4js:clustering"),Gu=Hu,Vu=tu;let Uu=!1,Wu=null;try{Wu=require("cluster")}catch(e){Ju("cluster module not present"),Uu=!0}const zu=[];let Ku=!1,qu="NODE_APP_INSTANCE";const Yu=()=>Ku&&"0"===process.env[qu],Xu=()=>Uu||Wu.isMaster||Yu(),Zu=e=>{zu.forEach((t=>t(e)))},Qu=(e,t)=>{if(Ju("cluster message received from worker ",e,": ",t),e.topic&&e.data&&(t=e,e=void 0),t&&t.topic&&"log4js:message"===t.topic){Ju("received message: ",t.data);const e=Gu.deserialise(t.data);Zu(e)}};Uu||Vu.addListener((e=>{zu.length=0,({pm2:Ku,disableClustering:Uu,pm2InstanceVar:qu="NODE_APP_INSTANCE"}=e),Ju(`clustering disabled ? ${Uu}`),Ju(`cluster.isMaster ? ${Wu&&Wu.isMaster}`),Ju(`pm2 enabled ? ${Ku}`),Ju(`pm2InstanceVar = ${qu}`),Ju(`process.env[${qu}] = ${process.env[qu]}`),Ku&&process.removeListener("message",Qu),Wu&&Wu.removeListener&&Wu.removeListener("message",Qu),Uu||e.disableClustering?Ju("Not listening for cluster messages, because clustering disabled."):Yu()?(Ju("listening for PM2 broadcast messages"),process.on("message",Qu)):Wu.isMaster?(Ju("listening for cluster messages"),Wu.on("message",Qu)):Ju("not listening for messages, because we are not a master process")}));var eo={onlyOnMaster:(e,t)=>Xu()?e():t,isMaster:Xu,send:e=>{Xu()?Zu(e):(Ku||(e.cluster={workerId:Wu.worker.id,worker:process.pid}),process.send({topic:"log4js:message",data:e.serialise()}))},onMessage:e=>{zu.push(e)}},to={};function no(e){if("number"==typeof e&&Number.isInteger(e))return e;const t={K:1024,M:1048576,G:1073741824},n=Object.keys(t),r=e.substr(e.length-1).toLocaleUpperCase(),u=e.substring(0,e.length-1).trim();if(n.indexOf(r)<0||!Number.isInteger(Number(u)))throw Error(`maxLogSize: "${e}" is invalid`);return u*t[r]}function ro(e){return function(e,t){const n=Object.assign({},t);return Object.keys(e).forEach((r=>{n[r]&&(n[r]=e[r](t[r]))})),n}({maxLogSize:no},e)}const uo={file:ro,fileSync:ro};to.modifyConfig=e=>uo[e.type]?uo[e.type](e):e;var oo={};const io=console.log.bind(console);oo.configure=function(e,t){let n=t.colouredLayout;return e.layout&&(n=t.layout(e.layout.type,e.layout)),function(e,t){return n=>{io(e(n,t))}}(n,e.timezoneOffset)};var so={};so.configure=function(e,t){let n=t.colouredLayout;return e.layout&&(n=t.layout(e.layout.type,e.layout)),function(e,t){return n=>{process.stdout.write(`${e(n,t)}\n`)}}(n,e.timezoneOffset)};var co={};co.configure=function(e,t){let n=t.colouredLayout;return e.layout&&(n=t.layout(e.layout.type,e.layout)),function(e,t){return n=>{process.stderr.write(`${e(n,t)}\n`)}}(n,e.timezoneOffset)};var ao={};ao.configure=function(e,t,n,r){const u=n(e.appender);return function(e,t,n,r){const u=r.getLevel(e),o=r.getLevel(t,r.FATAL);return e=>{const t=e.level;t.isGreaterThanOrEqualTo(u)&&t.isLessThanOrEqualTo(o)&&n(e)}}(e.level,e.maxLevel,u,r)};var lo={};const fo=Nr.exports("log4js:categoryFilter");lo.configure=function(e,t,n){const r=n(e.appender);return function(e,t){return"string"==typeof e&&(e=[e]),n=>{fo(`Checking ${n.categoryName} against ${e}`),-1===e.indexOf(n.categoryName)&&(fo("Not excluded, sending to appender"),t(n))}}(e.exclude,r)};var Do={};const po=Nr.exports("log4js:noLogFilter");Do.configure=function(e,t,n){const r=n(e.appender);return function(e,t){return n=>{po(`Checking data: ${n.data} against filters: ${e}`),"string"==typeof e&&(e=[e]),e=e.filter((e=>null!=e&&""!==e));const r=new RegExp(e.join("|"),"i");(0===e.length||n.data.findIndex((e=>r.test(e)))<0)&&(po("Not excluded, sending to appender"),t(n))}}(e.exclude,r)};var Eo={},mo={exports:{}},ho={},yo={fromCallback:function(e){return Object.defineProperty((function(){if("function"!=typeof arguments[arguments.length-1])return new Promise(((t,n)=>{arguments[arguments.length]=(e,r)=>{if(e)return n(e);t(r)},arguments.length++,e.apply(this,arguments)}));e.apply(this,arguments)}),"name",{value:e.name})},fromPromise:function(e){return Object.defineProperty((function(){const t=arguments[arguments.length-1];if("function"!=typeof t)return e.apply(this,arguments);e.apply(this,arguments).then((e=>t(null,e)),t)}),"name",{value:e.name})}};!function(e){const t=yo.fromCallback,n=we,r=["access","appendFile","chmod","chown","close","copyFile","fchmod","fchown","fdatasync","fstat","fsync","ftruncate","futimes","lchown","lchmod","link","lstat","mkdir","mkdtemp","open","readFile","readdir","readlink","realpath","rename","rmdir","stat","symlink","truncate","unlink","utimes","writeFile"].filter((e=>"function"==typeof n[e]));Object.keys(n).forEach((t=>{"promises"!==t&&(e[t]=n[t])})),r.forEach((r=>{e[r]=t(n[r])})),e.exists=function(e,t){return"function"==typeof t?n.exists(e,t):new Promise((t=>n.exists(e,t)))},e.read=function(e,t,r,u,o,i){return"function"==typeof i?n.read(e,t,r,u,o,i):new Promise(((i,s)=>{n.read(e,t,r,u,o,((e,t,n)=>{if(e)return s(e);i({bytesRead:t,buffer:n})}))}))},e.write=function(e,t,...r){return"function"==typeof r[r.length-1]?n.write(e,t,...r):new Promise(((u,o)=>{n.write(e,t,...r,((e,t,n)=>{if(e)return o(e);u({bytesWritten:t,buffer:n})}))}))},"function"==typeof n.realpath.native&&(e.realpath.native=t(n.realpath.native))}(ho);const Co=p.default;function Fo(e){return(e=Co.normalize(Co.resolve(e)).split(Co.sep)).length>0?e[0]:null}const go=/[<>:"|?*]/;var Ao=function(e){const t=Fo(e);return e=e.replace(t,""),go.test(e)};const vo=we,So=p.default,wo=Ao,Oo=parseInt("0777",8);var bo=function e(t,n,r,u){if("function"==typeof n?(r=n,n={}):n&&"object"==typeof n||(n={mode:n}),"win32"===process.platform&&wo(t)){const e=new Error(t+" contains invalid WIN32 path characters.");return e.code="EINVAL",r(e)}let o=n.mode;const i=n.fs||vo;void 0===o&&(o=Oo&~process.umask()),u||(u=null),r=r||function(){},t=So.resolve(t),i.mkdir(t,o,(o=>{if(!o)return r(null,u=u||t);if("ENOENT"===o.code){if(So.dirname(t)===t)return r(o);e(So.dirname(t),n,((u,o)=>{u?r(u,o):e(t,n,r,o)}))}else i.stat(t,((e,t)=>{e||!t.isDirectory()?r(o,u):r(null,u)}))}))};const _o=we,Bo=p.default,Po=Ao,ko=parseInt("0777",8);var xo=function e(t,n,r){n&&"object"==typeof n||(n={mode:n});let u=n.mode;const o=n.fs||_o;if("win32"===process.platform&&Po(t)){const e=new Error(t+" contains invalid WIN32 path characters.");throw e.code="EINVAL",e}void 0===u&&(u=ko&~process.umask()),r||(r=null),t=Bo.resolve(t);try{o.mkdirSync(t,u),r=r||t}catch(u){if("ENOENT"===u.code){if(Bo.dirname(t)===t)throw u;r=e(Bo.dirname(t),n,r),e(t,n,r)}else{let e;try{e=o.statSync(t)}catch(e){throw u}if(!e.isDirectory())throw u}}return r};const No=(0,yo.fromCallback)(bo);var Io={mkdirs:No,mkdirsSync:xo,mkdirp:No,mkdirpSync:xo,ensureDir:No,ensureDirSync:xo};const To=we;E.default,p.default;var Ro=function(e,t,n,r){To.open(e,"r+",((e,u)=>{if(e)return r(e);To.futimes(u,t,n,(e=>{To.close(u,(t=>{r&&r(e||t)}))}))}))},Mo=function(e,t,n){const r=To.openSync(e,"r+");return To.futimesSync(r,t,n),To.closeSync(r)};const Lo=we,jo=p.default,$o=10,Ho=5,Jo=0,Go=process.versions.node.split("."),Vo=Number.parseInt(Go[0],10),Uo=Number.parseInt(Go[1],10),Wo=Number.parseInt(Go[2],10);function zo(){if(Vo>$o)return!0;if(Vo===$o){if(Uo>Ho)return!0;if(Uo===Ho&&Wo>=Jo)return!0}return!1}function Ko(e,t){const n=jo.resolve(e).split(jo.sep).filter((e=>e)),r=jo.resolve(t).split(jo.sep).filter((e=>e));return n.reduce(((e,t,n)=>e&&r[n]===t),!0)}function qo(e,t,n){return`Cannot ${n} '${e}' to a subdirectory of itself, '${t}'.`}var Yo,Xo,Zo={checkPaths:function(e,t,n,r){!function(e,t,n){zo()?Lo.stat(e,{bigint:!0},((e,r)=>{if(e)return n(e);Lo.stat(t,{bigint:!0},((e,t)=>e?"ENOENT"===e.code?n(null,{srcStat:r,destStat:null}):n(e):n(null,{srcStat:r,destStat:t})))})):Lo.stat(e,((e,r)=>{if(e)return n(e);Lo.stat(t,((e,t)=>e?"ENOENT"===e.code?n(null,{srcStat:r,destStat:null}):n(e):n(null,{srcStat:r,destStat:t})))}))}(e,t,((u,o)=>{if(u)return r(u);const{srcStat:i,destStat:s}=o;return s&&s.ino&&s.dev&&s.ino===i.ino&&s.dev===i.dev?r(new Error("Source and destination must not be the same.")):i.isDirectory()&&Ko(e,t)?r(new Error(qo(e,t,n))):r(null,{srcStat:i,destStat:s})}))},checkPathsSync:function(e,t,n){const{srcStat:r,destStat:u}=function(e,t){let n,r;n=zo()?Lo.statSync(e,{bigint:!0}):Lo.statSync(e);try{r=zo()?Lo.statSync(t,{bigint:!0}):Lo.statSync(t)}catch(e){if("ENOENT"===e.code)return{srcStat:n,destStat:null};throw e}return{srcStat:n,destStat:r}}(e,t);if(u&&u.ino&&u.dev&&u.ino===r.ino&&u.dev===r.dev)throw new Error("Source and destination must not be the same.");if(r.isDirectory()&&Ko(e,t))throw new Error(qo(e,t,n));return{srcStat:r,destStat:u}},checkParentPaths:function e(t,n,r,u,o){const i=jo.resolve(jo.dirname(t)),s=jo.resolve(jo.dirname(r));if(s===i||s===jo.parse(s).root)return o();zo()?Lo.stat(s,{bigint:!0},((i,c)=>i?"ENOENT"===i.code?o():o(i):c.ino&&c.dev&&c.ino===n.ino&&c.dev===n.dev?o(new Error(qo(t,r,u))):e(t,n,s,u,o))):Lo.stat(s,((i,c)=>i?"ENOENT"===i.code?o():o(i):c.ino&&c.dev&&c.ino===n.ino&&c.dev===n.dev?o(new Error(qo(t,r,u))):e(t,n,s,u,o)))},checkParentPathsSync:function e(t,n,r,u){const o=jo.resolve(jo.dirname(t)),i=jo.resolve(jo.dirname(r));if(i===o||i===jo.parse(i).root)return;let s;try{s=zo()?Lo.statSync(i,{bigint:!0}):Lo.statSync(i)}catch(e){if("ENOENT"===e.code)return;throw e}if(s.ino&&s.dev&&s.ino===n.ino&&s.dev===n.dev)throw new Error(qo(t,r,u));return e(t,n,i,u)},isSrcSubdir:Ko};const Qo=we,ei=p.default,ti=Io.mkdirsSync,ni=Mo,ri=Zo;function ui(e,t,n,r){if(!r.filter||r.filter(t,n))return function(e,t,n,r){const u=r.dereference?Qo.statSync:Qo.lstatSync,o=u(t);if(o.isDirectory())return function(e,t,n,r,u){if(!t)return function(e,t,n,r){return Qo.mkdirSync(n),ii(t,n,r),Qo.chmodSync(n,e.mode)}(e,n,r,u);if(t&&!t.isDirectory())throw new Error(`Cannot overwrite non-directory '${r}' with directory '${n}'.`);return ii(n,r,u)}(o,e,t,n,r);if(o.isFile()||o.isCharacterDevice()||o.isBlockDevice())return function(e,t,n,r,u){return t?function(e,t,n,r){if(r.overwrite)return Qo.unlinkSync(n),oi(e,t,n,r);if(r.errorOnExist)throw new Error(`'${n}' already exists`)}(e,n,r,u):oi(e,n,r,u)}(o,e,t,n,r);if(o.isSymbolicLink())return function(e,t,n,r){let u=Qo.readlinkSync(t);r.dereference&&(u=ei.resolve(process.cwd(),u));if(e){let e;try{e=Qo.readlinkSync(n)}catch(e){if("EINVAL"===e.code||"UNKNOWN"===e.code)return Qo.symlinkSync(u,n);throw e}if(r.dereference&&(e=ei.resolve(process.cwd(),e)),ri.isSrcSubdir(u,e))throw new Error(`Cannot copy '${u}' to a subdirectory of itself, '${e}'.`);if(Qo.statSync(n).isDirectory()&&ri.isSrcSubdir(e,u))throw new Error(`Cannot overwrite '${e}' with '${u}'.`);return function(e,t){return Qo.unlinkSync(t),Qo.symlinkSync(e,t)}(u,n)}return Qo.symlinkSync(u,n)}(e,t,n,r)}(e,t,n,r)}function oi(e,t,n,r){return"function"==typeof Qo.copyFileSync?(Qo.copyFileSync(t,n),Qo.chmodSync(n,e.mode),r.preserveTimestamps?ni(n,e.atime,e.mtime):void 0):function(e,t,n,r){const u=65536,o=(Xo?Yo:(Xo=1,Yo=function(e){if("function"==typeof Buffer.allocUnsafe)try{return Buffer.allocUnsafe(e)}catch(t){return new Buffer(e)}return new Buffer(e)}))(u),i=Qo.openSync(t,"r"),s=Qo.openSync(n,"w",e.mode);let c=0;for(;cfunction(e,t,n,r){const u=ei.join(t,e),o=ei.join(n,e),{destStat:i}=ri.checkPathsSync(u,o,"copy");return ui(i,u,o,r)}(r,e,t,n)))}var si=function(e,t,n){"function"==typeof n&&(n={filter:n}),(n=n||{}).clobber=!("clobber"in n)||!!n.clobber,n.overwrite="overwrite"in n?!!n.overwrite:n.clobber,n.preserveTimestamps&&"ia32"===process.arch&&console.warn("fs-extra: Using the preserveTimestamps option in 32-bit node is not recommended;\n\n see https://github.com/jprichardson/node-fs-extra/issues/269");const{srcStat:r,destStat:u}=ri.checkPathsSync(e,t,"copy");return ri.checkParentPathsSync(e,r,t,"copy"),function(e,t,n,r){if(r.filter&&!r.filter(t,n))return;const u=ei.dirname(n);Qo.existsSync(u)||ti(u);return ui(e,t,n,r)}(u,e,t,n)},ci={copySync:si};const ai=yo.fromPromise,li=ho;var fi={pathExists:ai((function(e){return li.access(e).then((()=>!0)).catch((()=>!1))})),pathExistsSync:li.existsSync};const di=we,Di=p.default,pi=Io.mkdirs,Ei=fi.pathExists,mi=Ro,hi=Zo;function yi(e,t,n,r,u){const o=Di.dirname(n);Ei(o,((i,s)=>i?u(i):s?Fi(e,t,n,r,u):void pi(o,(o=>o?u(o):Fi(e,t,n,r,u)))))}function Ci(e,t,n,r,u,o){Promise.resolve(u.filter(n,r)).then((i=>i?e(t,n,r,u,o):o()),(e=>o(e)))}function Fi(e,t,n,r,u){return r.filter?Ci(gi,e,t,n,r,u):gi(e,t,n,r,u)}function gi(e,t,n,r,u){(r.dereference?di.stat:di.lstat)(t,((o,i)=>o?u(o):i.isDirectory()?function(e,t,n,r,u,o){if(!t)return function(e,t,n,r,u){di.mkdir(n,(o=>{if(o)return u(o);Si(t,n,r,(t=>t?u(t):di.chmod(n,e.mode,u)))}))}(e,n,r,u,o);if(t&&!t.isDirectory())return o(new Error(`Cannot overwrite non-directory '${r}' with directory '${n}'.`));return Si(n,r,u,o)}(i,e,t,n,r,u):i.isFile()||i.isCharacterDevice()||i.isBlockDevice()?function(e,t,n,r,u,o){return t?function(e,t,n,r,u){if(!r.overwrite)return r.errorOnExist?u(new Error(`'${n}' already exists`)):u();di.unlink(n,(o=>o?u(o):Ai(e,t,n,r,u)))}(e,n,r,u,o):Ai(e,n,r,u,o)}(i,e,t,n,r,u):i.isSymbolicLink()?function(e,t,n,r,u){di.readlink(t,((t,o)=>t?u(t):(r.dereference&&(o=Di.resolve(process.cwd(),o)),e?void di.readlink(n,((t,i)=>t?"EINVAL"===t.code||"UNKNOWN"===t.code?di.symlink(o,n,u):u(t):(r.dereference&&(i=Di.resolve(process.cwd(),i)),hi.isSrcSubdir(o,i)?u(new Error(`Cannot copy '${o}' to a subdirectory of itself, '${i}'.`)):e.isDirectory()&&hi.isSrcSubdir(i,o)?u(new Error(`Cannot overwrite '${i}' with '${o}'.`)):function(e,t,n){di.unlink(t,(r=>r?n(r):di.symlink(e,t,n)))}(o,n,u)))):di.symlink(o,n,u))))}(e,t,n,r,u):void 0))}function Ai(e,t,n,r,u){return"function"==typeof di.copyFile?di.copyFile(t,n,(t=>t?u(t):vi(e,n,r,u))):function(e,t,n,r,u){const o=di.createReadStream(t);o.on("error",(e=>u(e))).once("open",(()=>{const t=di.createWriteStream(n,{mode:e.mode});t.on("error",(e=>u(e))).on("open",(()=>o.pipe(t))).once("close",(()=>vi(e,n,r,u)))}))}(e,t,n,r,u)}function vi(e,t,n,r){di.chmod(t,e.mode,(u=>u?r(u):n.preserveTimestamps?mi(t,e.atime,e.mtime,r):r()))}function Si(e,t,n,r){di.readdir(e,((u,o)=>u?r(u):wi(o,e,t,n,r)))}function wi(e,t,n,r,u){const o=e.pop();return o?function(e,t,n,r,u,o){const i=Di.join(n,t),s=Di.join(r,t);hi.checkPaths(i,s,"copy",((t,c)=>{if(t)return o(t);const{destStat:a}=c;Fi(a,i,s,u,(t=>t?o(t):wi(e,n,r,u,o)))}))}(e,o,t,n,r,u):u()}var Oi=function(e,t,n,r){"function"!=typeof n||r?"function"==typeof n&&(n={filter:n}):(r=n,n={}),r=r||function(){},(n=n||{}).clobber=!("clobber"in n)||!!n.clobber,n.overwrite="overwrite"in n?!!n.overwrite:n.clobber,n.preserveTimestamps&&"ia32"===process.arch&&console.warn("fs-extra: Using the preserveTimestamps option in 32-bit node is not recommended;\n\n see https://github.com/jprichardson/node-fs-extra/issues/269"),hi.checkPaths(e,t,"copy",((u,o)=>{if(u)return r(u);const{srcStat:i,destStat:s}=o;hi.checkParentPaths(e,i,t,"copy",(u=>u?r(u):n.filter?Ci(yi,s,e,t,n,r):yi(s,e,t,n,r)))}))};var bi={copy:(0,yo.fromCallback)(Oi)};const _i=we,Bi=p.default,Pi=g.default,ki="win32"===process.platform;function xi(e){["unlink","chmod","stat","lstat","rmdir","readdir"].forEach((t=>{e[t]=e[t]||_i[t],e[t+="Sync"]=e[t]||_i[t]})),e.maxBusyTries=e.maxBusyTries||3}function Ni(e,t,n){let r=0;"function"==typeof t&&(n=t,t={}),Pi(e,"rimraf: missing path"),Pi.strictEqual(typeof e,"string","rimraf: path should be a string"),Pi.strictEqual(typeof n,"function","rimraf: callback function required"),Pi(t,"rimraf: invalid options argument provided"),Pi.strictEqual(typeof t,"object","rimraf: options should be object"),xi(t),Ii(e,t,(function u(o){if(o){if(("EBUSY"===o.code||"ENOTEMPTY"===o.code||"EPERM"===o.code)&&rIi(e,t,u)),100*r)}"ENOENT"===o.code&&(o=null)}n(o)}))}function Ii(e,t,n){Pi(e),Pi(t),Pi("function"==typeof n),t.lstat(e,((r,u)=>r&&"ENOENT"===r.code?n(null):r&&"EPERM"===r.code&&ki?Ti(e,t,r,n):u&&u.isDirectory()?Mi(e,t,r,n):void t.unlink(e,(r=>{if(r){if("ENOENT"===r.code)return n(null);if("EPERM"===r.code)return ki?Ti(e,t,r,n):Mi(e,t,r,n);if("EISDIR"===r.code)return Mi(e,t,r,n)}return n(r)}))))}function Ti(e,t,n,r){Pi(e),Pi(t),Pi("function"==typeof r),n&&Pi(n instanceof Error),t.chmod(e,438,(u=>{u?r("ENOENT"===u.code?null:n):t.stat(e,((u,o)=>{u?r("ENOENT"===u.code?null:n):o.isDirectory()?Mi(e,t,n,r):t.unlink(e,r)}))}))}function Ri(e,t,n){let r;Pi(e),Pi(t),n&&Pi(n instanceof Error);try{t.chmodSync(e,438)}catch(e){if("ENOENT"===e.code)return;throw n}try{r=t.statSync(e)}catch(e){if("ENOENT"===e.code)return;throw n}r.isDirectory()?ji(e,t,n):t.unlinkSync(e)}function Mi(e,t,n,r){Pi(e),Pi(t),n&&Pi(n instanceof Error),Pi("function"==typeof r),t.rmdir(e,(u=>{!u||"ENOTEMPTY"!==u.code&&"EEXIST"!==u.code&&"EPERM"!==u.code?u&&"ENOTDIR"===u.code?r(n):r(u):function(e,t,n){Pi(e),Pi(t),Pi("function"==typeof n),t.readdir(e,((r,u)=>{if(r)return n(r);let o,i=u.length;if(0===i)return t.rmdir(e,n);u.forEach((r=>{Ni(Bi.join(e,r),t,(r=>{if(!o)return r?n(o=r):void(0==--i&&t.rmdir(e,n))}))}))}))}(e,t,r)}))}function Li(e,t){let n;xi(t=t||{}),Pi(e,"rimraf: missing path"),Pi.strictEqual(typeof e,"string","rimraf: path should be a string"),Pi(t,"rimraf: missing options"),Pi.strictEqual(typeof t,"object","rimraf: options should be object");try{n=t.lstatSync(e)}catch(n){if("ENOENT"===n.code)return;"EPERM"===n.code&&ki&&Ri(e,t,n)}try{n&&n.isDirectory()?ji(e,t,null):t.unlinkSync(e)}catch(n){if("ENOENT"===n.code)return;if("EPERM"===n.code)return ki?Ri(e,t,n):ji(e,t,n);if("EISDIR"!==n.code)throw n;ji(e,t,n)}}function ji(e,t,n){Pi(e),Pi(t),n&&Pi(n instanceof Error);try{t.rmdirSync(e)}catch(r){if("ENOTDIR"===r.code)throw n;if("ENOTEMPTY"===r.code||"EEXIST"===r.code||"EPERM"===r.code)!function(e,t){if(Pi(e),Pi(t),t.readdirSync(e).forEach((n=>Li(Bi.join(e,n),t))),!ki){return t.rmdirSync(e,t)}{const n=Date.now();do{try{return t.rmdirSync(e,t)}catch(e){}}while(Date.now()-n<500)}}(e,t);else if("ENOENT"!==r.code)throw r}}var $i=Ni;Ni.sync=Li;const Hi=$i;var Ji={remove:(0,yo.fromCallback)(Hi),removeSync:Hi.sync};const Gi=yo.fromCallback,Vi=we,Ui=p.default,Wi=Io,zi=Ji,Ki=Gi((function(e,t){t=t||function(){},Vi.readdir(e,((n,r)=>{if(n)return Wi.mkdirs(e,t);r=r.map((t=>Ui.join(e,t))),function e(){const n=r.pop();if(!n)return t();zi.remove(n,(n=>{if(n)return t(n);e()}))}()}))}));function qi(e){let t;try{t=Vi.readdirSync(e)}catch(t){return Wi.mkdirsSync(e)}t.forEach((t=>{t=Ui.join(e,t),zi.removeSync(t)}))}var Yi={emptyDirSync:qi,emptydirSync:qi,emptyDir:Ki,emptydir:Ki};const Xi=yo.fromCallback,Zi=p.default,Qi=we,es=Io,ts=fi.pathExists;var ns={createFile:Xi((function(e,t){function n(){Qi.writeFile(e,"",(e=>{if(e)return t(e);t()}))}Qi.stat(e,((r,u)=>{if(!r&&u.isFile())return t();const o=Zi.dirname(e);ts(o,((e,r)=>e?t(e):r?n():void es.mkdirs(o,(e=>{if(e)return t(e);n()}))))}))})),createFileSync:function(e){let t;try{t=Qi.statSync(e)}catch(e){}if(t&&t.isFile())return;const n=Zi.dirname(e);Qi.existsSync(n)||es.mkdirsSync(n),Qi.writeFileSync(e,"")}};const rs=yo.fromCallback,us=p.default,os=we,is=Io,ss=fi.pathExists;var cs={createLink:rs((function(e,t,n){function r(e,t){os.link(e,t,(e=>{if(e)return n(e);n(null)}))}ss(t,((u,o)=>u?n(u):o?n(null):void os.lstat(e,(u=>{if(u)return u.message=u.message.replace("lstat","ensureLink"),n(u);const o=us.dirname(t);ss(o,((u,i)=>u?n(u):i?r(e,t):void is.mkdirs(o,(u=>{if(u)return n(u);r(e,t)}))))}))))})),createLinkSync:function(e,t){if(os.existsSync(t))return;try{os.lstatSync(e)}catch(e){throw e.message=e.message.replace("lstat","ensureLink"),e}const n=us.dirname(t);return os.existsSync(n)||is.mkdirsSync(n),os.linkSync(e,t)}};const as=p.default,ls=we,fs=fi.pathExists;var ds={symlinkPaths:function(e,t,n){if(as.isAbsolute(e))return ls.lstat(e,(t=>t?(t.message=t.message.replace("lstat","ensureSymlink"),n(t)):n(null,{toCwd:e,toDst:e})));{const r=as.dirname(t),u=as.join(r,e);return fs(u,((t,o)=>t?n(t):o?n(null,{toCwd:u,toDst:e}):ls.lstat(e,(t=>t?(t.message=t.message.replace("lstat","ensureSymlink"),n(t)):n(null,{toCwd:e,toDst:as.relative(r,e)})))))}},symlinkPathsSync:function(e,t){let n;if(as.isAbsolute(e)){if(n=ls.existsSync(e),!n)throw new Error("absolute srcpath does not exist");return{toCwd:e,toDst:e}}{const r=as.dirname(t),u=as.join(r,e);if(n=ls.existsSync(u),n)return{toCwd:u,toDst:e};if(n=ls.existsSync(e),!n)throw new Error("relative srcpath does not exist");return{toCwd:e,toDst:as.relative(r,e)}}}};const Ds=we;var ps={symlinkType:function(e,t,n){if(n="function"==typeof t?t:n,t="function"!=typeof t&&t)return n(null,t);Ds.lstat(e,((e,r)=>{if(e)return n(null,"file");t=r&&r.isDirectory()?"dir":"file",n(null,t)}))},symlinkTypeSync:function(e,t){let n;if(t)return t;try{n=Ds.lstatSync(e)}catch(e){return"file"}return n&&n.isDirectory()?"dir":"file"}};const Es=yo.fromCallback,ms=p.default,hs=we,ys=Io.mkdirs,Cs=Io.mkdirsSync,Fs=ds.symlinkPaths,gs=ds.symlinkPathsSync,As=ps.symlinkType,vs=ps.symlinkTypeSync,Ss=fi.pathExists;var ws={createSymlink:Es((function(e,t,n,r){r="function"==typeof n?n:r,n="function"!=typeof n&&n,Ss(t,((u,o)=>u?r(u):o?r(null):void Fs(e,t,((u,o)=>{if(u)return r(u);e=o.toDst,As(o.toCwd,n,((n,u)=>{if(n)return r(n);const o=ms.dirname(t);Ss(o,((n,i)=>n?r(n):i?hs.symlink(e,t,u,r):void ys(o,(n=>{if(n)return r(n);hs.symlink(e,t,u,r)}))))}))}))))})),createSymlinkSync:function(e,t,n){if(hs.existsSync(t))return;const r=gs(e,t);e=r.toDst,n=vs(r.toCwd,n);const u=ms.dirname(t);return hs.existsSync(u)||Cs(u),hs.symlinkSync(e,t,n)}};var Os,bs={createFile:ns.createFile,createFileSync:ns.createFileSync,ensureFile:ns.createFile,ensureFileSync:ns.createFileSync,createLink:cs.createLink,createLinkSync:cs.createLinkSync,ensureLink:cs.createLink,ensureLinkSync:cs.createLinkSync,createSymlink:ws.createSymlink,createSymlinkSync:ws.createSymlinkSync,ensureSymlink:ws.createSymlink,ensureSymlinkSync:ws.createSymlinkSync};try{Os=we}catch(e){Os=D.default}function _s(e,t){var n,r="\n";return"object"==typeof t&&null!==t&&(t.spaces&&(n=t.spaces),t.EOL&&(r=t.EOL)),JSON.stringify(e,t?t.replacer:null,n).replace(/\n/g,r)+r}function Bs(e){return Buffer.isBuffer(e)&&(e=e.toString("utf8")),e=e.replace(/^\uFEFF/,"")}var Ps={readFile:function(e,t,n){null==n&&(n=t,t={}),"string"==typeof t&&(t={encoding:t});var r=(t=t||{}).fs||Os,u=!0;"throws"in t&&(u=t.throws),r.readFile(e,t,(function(r,o){if(r)return n(r);var i;o=Bs(o);try{i=JSON.parse(o,t?t.reviver:null)}catch(t){return u?(t.message=e+": "+t.message,n(t)):n(null,null)}n(null,i)}))},readFileSync:function(e,t){"string"==typeof(t=t||{})&&(t={encoding:t});var n=t.fs||Os,r=!0;"throws"in t&&(r=t.throws);try{var u=n.readFileSync(e,t);return u=Bs(u),JSON.parse(u,t.reviver)}catch(t){if(r)throw t.message=e+": "+t.message,t;return null}},writeFile:function(e,t,n,r){null==r&&(r=n,n={});var u=(n=n||{}).fs||Os,o="";try{o=_s(t,n)}catch(e){return void(r&&r(e,null))}u.writeFile(e,o,n,r)},writeFileSync:function(e,t,n){var r=(n=n||{}).fs||Os,u=_s(t,n);return r.writeFileSync(e,u,n)}},ks=Ps;const xs=yo.fromCallback,Ns=ks;var Is={readJson:xs(Ns.readFile),readJsonSync:Ns.readFileSync,writeJson:xs(Ns.writeFile),writeJsonSync:Ns.writeFileSync};const Ts=p.default,Rs=Io,Ms=fi.pathExists,Ls=Is;var js=function(e,t,n,r){"function"==typeof n&&(r=n,n={});const u=Ts.dirname(e);Ms(u,((o,i)=>o?r(o):i?Ls.writeJson(e,t,n,r):void Rs.mkdirs(u,(u=>{if(u)return r(u);Ls.writeJson(e,t,n,r)}))))};const $s=we,Hs=p.default,Js=Io,Gs=Is;var Vs=function(e,t,n){const r=Hs.dirname(e);$s.existsSync(r)||Js.mkdirsSync(r),Gs.writeJsonSync(e,t,n)};const Us=yo.fromCallback,Ws=Is;Ws.outputJson=Us(js),Ws.outputJsonSync=Vs,Ws.outputJSON=Ws.outputJson,Ws.outputJSONSync=Ws.outputJsonSync,Ws.writeJSON=Ws.writeJson,Ws.writeJSONSync=Ws.writeJsonSync,Ws.readJSON=Ws.readJson,Ws.readJSONSync=Ws.readJsonSync;var zs=Ws;const Ks=we,qs=p.default,Ys=ci.copySync,Xs=Ji.removeSync,Zs=Io.mkdirpSync,Qs=Zo;function ec(e,t,n){try{Ks.renameSync(e,t)}catch(r){if("EXDEV"!==r.code)throw r;return function(e,t,n){const r={overwrite:n,errorOnExist:!0};return Ys(e,t,r),Xs(e)}(e,t,n)}}var tc=function(e,t,n){const r=(n=n||{}).overwrite||n.clobber||!1,{srcStat:u}=Qs.checkPathsSync(e,t,"move");return Qs.checkParentPathsSync(e,u,t,"move"),Zs(qs.dirname(t)),function(e,t,n){if(n)return Xs(t),ec(e,t,n);if(Ks.existsSync(t))throw new Error("dest already exists.");return ec(e,t,n)}(e,t,r)},nc={moveSync:tc};const rc=we,uc=p.default,oc=bi.copy,ic=Ji.remove,sc=Io.mkdirp,cc=fi.pathExists,ac=Zo;function lc(e,t,n,r){rc.rename(e,t,(u=>u?"EXDEV"!==u.code?r(u):function(e,t,n,r){const u={overwrite:n,errorOnExist:!0};oc(e,t,u,(t=>t?r(t):ic(e,r)))}(e,t,n,r):r()))}var fc=function(e,t,n,r){"function"==typeof n&&(r=n,n={});const u=n.overwrite||n.clobber||!1;ac.checkPaths(e,t,"move",((n,o)=>{if(n)return r(n);const{srcStat:i}=o;ac.checkParentPaths(e,i,t,"move",(n=>{if(n)return r(n);sc(uc.dirname(t),(n=>n?r(n):function(e,t,n,r){if(n)return ic(t,(u=>u?r(u):lc(e,t,n,r)));cc(t,((u,o)=>u?r(u):o?r(new Error("dest already exists.")):lc(e,t,n,r)))}(e,t,u,r)))}))}))};var dc={move:(0,yo.fromCallback)(fc)};const Dc=yo.fromCallback,pc=we,Ec=p.default,mc=Io,hc=fi.pathExists;var yc={outputFile:Dc((function(e,t,n,r){"function"==typeof n&&(r=n,n="utf8");const u=Ec.dirname(e);hc(u,((o,i)=>o?r(o):i?pc.writeFile(e,t,n,r):void mc.mkdirs(u,(u=>{if(u)return r(u);pc.writeFile(e,t,n,r)}))))})),outputFileSync:function(e,...t){const n=Ec.dirname(e);if(pc.existsSync(n))return pc.writeFileSync(e,...t);mc.mkdirsSync(n),pc.writeFileSync(e,...t)}};!function(e){e.exports=Object.assign({},ho,ci,bi,Yi,bs,zs,Io,nc,dc,yc,fi,Ji);const t=D.default;Object.getOwnPropertyDescriptor(t,"promises")&&Object.defineProperty(e.exports,"promises",{get:()=>t.promises})}(mo);const Cc=Nr.exports("streamroller:fileNameFormatter"),Fc=p.default;const gc=Nr.exports("streamroller:fileNameParser"),Ac=nu.exports;const vc=Nr.exports("streamroller:moveAndMaybeCompressFile"),Sc=mo.exports,wc=v.default;var Oc=async(e,t,n)=>{if(n=function(e){const t={mode:parseInt("0600",8),compress:!1},n=Object.assign({},t,e);return vc(`_parseOption: moveAndMaybeCompressFile called with option=${JSON.stringify(n)}`),n}(n),e!==t){if(await Sc.pathExists(e))if(vc(`moveAndMaybeCompressFile: moving file from ${e} to ${t} ${n.compress?"with":"without"} compress`),n.compress)await new Promise(((r,u)=>{let o=!1;const i=Sc.createWriteStream(t,{mode:n.mode,flags:"wx"}).on("open",(()=>{o=!0;const t=Sc.createReadStream(e).on("open",(()=>{t.pipe(wc.createGzip()).pipe(i)})).on("error",(t=>{vc(`moveAndMaybeCompressFile: error reading ${e}`,t),i.destroy(t)}))})).on("finish",(()=>{vc(`moveAndMaybeCompressFile: finished compressing ${t}, deleting ${e}`),Sc.unlink(e).then(r).catch((t=>{vc(`moveAndMaybeCompressFile: error deleting ${e}, truncating instead`,t),Sc.truncate(e).then(r).catch((t=>{vc(`moveAndMaybeCompressFile: error truncating ${e}`,t),u(t)}))}))})).on("error",(e=>{o?(vc(`moveAndMaybeCompressFile: error writing ${t}, deleting`,e),Sc.unlink(t).then((()=>{u(e)})).catch((e=>{vc(`moveAndMaybeCompressFile: error deleting ${t}`,e),u(e)}))):(vc(`moveAndMaybeCompressFile: error creating ${t}`,e),u(e))}))})).catch((()=>{}));else{vc(`moveAndMaybeCompressFile: renaming ${e} to ${t}`);try{await Sc.move(e,t,{overwrite:!0})}catch(n){if(vc(`moveAndMaybeCompressFile: error renaming ${e} to ${t}`,n),"ENOENT"!==n.code){vc("moveAndMaybeCompressFile: trying copy+truncate instead");try{await Sc.copy(e,t,{overwrite:!0}),await Sc.truncate(e)}catch(e){vc("moveAndMaybeCompressFile: error copy+truncate",e)}}}}}else vc("moveAndMaybeCompressFile: source and target are the same, not doing anything")};const bc=Nr.exports("streamroller:RollingFileWriteStream"),_c=mo.exports,Bc=p.default,Pc=E.default,kc=()=>new Date,xc=nu.exports,{Writable:Nc}=C.default,Ic=({file:e,keepFileExt:t,needsIndex:n,alwaysIncludeDate:r,compress:u,fileNameSep:o})=>{let i=o||".";const s=Fc.join(e.dir,e.name),c=t=>t+e.ext,a=(e,t,r)=>!n&&r||!t?e:e+i+t,l=(e,t,n)=>(t>0||r)&&n?e+i+n:e,f=(e,t)=>t&&u?e+".gz":e,d=t?[l,a,c,f]:[c,l,a,f];return({date:e,index:t})=>(Cc(`_formatFileName: date=${e}, index=${t}`),d.reduce(((n,r)=>r(n,t,e)),s))},Tc=({file:e,keepFileExt:t,pattern:n,fileNameSep:r})=>{let u=r||".";const o="__NOT_MATCHING__";let i=[(e,t)=>e.endsWith(".gz")?(gc("it is gzipped"),t.isCompressed=!0,e.slice(0,-1*".gz".length)):e,t?t=>t.startsWith(e.name)&&t.endsWith(e.ext)?(gc("it starts and ends with the right things"),t.slice(e.name.length+1,-1*e.ext.length)):o:t=>t.startsWith(e.base)?(gc("it starts with the right things"),t.slice(e.base.length+1)):o,n?(e,t)=>{const r=e.split(u);let o=r[r.length-1];gc("items: ",r,", indexStr: ",o);let i=e;void 0!==o&&o.match(/^\d+$/)?(i=e.slice(0,-1*(o.length+1)),gc(`dateStr is ${i}`),n&&!i&&(i=o,o="0")):o="0";try{const r=Ac.parse(n,i,new Date(0,0));return Ac.asString(n,r)!==i?e:(t.index=parseInt(o,10),t.date=i,t.timestamp=r.getTime(),"")}catch(t){return gc(`Problem parsing ${i} as ${n}, error was: `,t),e}}:(e,t)=>e.match(/^\d+$/)?(gc("it has an index"),t.index=parseInt(e,10),""):e];return e=>{let t={filename:e,index:0,isCompressed:!1};return i.reduce(((e,n)=>n(e,t)),e)?null:t}},Rc=Oc;var Mc=class extends Nc{constructor(e,t){if(bc(`constructor: creating RollingFileWriteStream. path=${e}`),"string"!=typeof e||0===e.length)throw new Error(`Invalid filename: ${e}`);if(e.endsWith(Bc.sep))throw new Error(`Filename is a directory: ${e}`);0===e.indexOf(`~${Bc.sep}`)&&(e=e.replace("~",Pc.homedir())),super(t),this.options=this._parseOption(t),this.fileObject=Bc.parse(e),""===this.fileObject.dir&&(this.fileObject=Bc.parse(Bc.join(process.cwd(),e))),this.fileFormatter=Ic({file:this.fileObject,alwaysIncludeDate:this.options.alwaysIncludePattern,needsIndex:this.options.maxSize 0`)}else delete n.maxSize;if(n.numBackups||0===n.numBackups){if(n.numBackups<0)throw new Error(`options.numBackups (${n.numBackups}) should be >= 0`);if(n.numBackups>=Number.MAX_SAFE_INTEGER)throw new Error(`options.numBackups (${n.numBackups}) should be < Number.MAX_SAFE_INTEGER`);n.numToKeep=n.numBackups+1}else if(n.numToKeep<=0)throw new Error(`options.numToKeep (${n.numToKeep}) should be > 0`);return bc(`_parseOption: creating stream with option=${JSON.stringify(n)}`),n}_final(e){this.currentFileStream.end("",this.options.encoding,e)}_write(e,t,n){this._shouldRoll().then((()=>{bc(`_write: writing chunk. file=${this.currentFileStream.path} state=${JSON.stringify(this.state)} chunk=${e}`),this.currentFileStream.write(e,t,(t=>{this.state.currentSize+=e.length,n(t)}))}))}async _shouldRoll(){(this._dateChanged()||this._tooBig())&&(bc(`_shouldRoll: rolling because dateChanged? ${this._dateChanged()} or tooBig? ${this._tooBig()}`),await this._roll())}_dateChanged(){return this.state.currentDate&&this.state.currentDate!==xc(this.options.pattern,kc())}_tooBig(){return this.state.currentSize>=this.options.maxSize}_roll(){return bc("_roll: closing the current stream"),new Promise(((e,t)=>{this.currentFileStream.end("",this.options.encoding,(()=>{this._moveOldFiles().then(e).catch(t)}))}))}async _moveOldFiles(){const e=await this._getExistingFiles();for(let t=(this.state.currentDate?e.filter((e=>e.date===this.state.currentDate)):e).length;t>=0;t--){bc(`_moveOldFiles: i = ${t}`);const e=this.fileFormatter({date:this.state.currentDate,index:t}),n=this.fileFormatter({date:this.state.currentDate,index:t+1}),r={compress:this.options.compress&&0===t,mode:this.options.mode};await Rc(e,n,r)}this.state.currentSize=0,this.state.currentDate=this.state.currentDate?xc(this.options.pattern,kc()):null,bc(`_moveOldFiles: finished rolling files. state=${JSON.stringify(this.state)}`),this._renewWriteStream(),await new Promise(((e,t)=>{this.currentFileStream.write("","utf8",(()=>{this._clean().then(e).catch(t)}))}))}async _getExistingFiles(){const e=await _c.readdir(this.fileObject.dir).catch((()=>[]));bc(`_getExistingFiles: files=${e}`);const t=e.map((e=>this.fileNameParser(e))).filter((e=>e)),n=e=>(e.timestamp?e.timestamp:kc().getTime())-e.index;return t.sort(((e,t)=>n(e)-n(t))),t}_renewWriteStream(){const e=this.fileFormatter({date:this.state.currentDate,index:0}),t=e=>{try{return _c.mkdirSync(e,{recursive:!0})}catch(n){if("ENOENT"===n.code)return t(Bc.dirname(e)),t(e);if("EEXIST"!==n.code&&"EROFS"!==n.code)throw n;try{if(_c.statSync(e).isDirectory())return e;throw n}catch(e){throw n}}};t(this.fileObject.dir);const n={flags:this.options.flags,encoding:this.options.encoding,mode:this.options.mode};var r,u;_c.appendFileSync(e,"",(r={...n},u="flags",r["flag"]=r[u],delete r[u],r)),this.currentFileStream=_c.createWriteStream(e,n),this.currentFileStream.on("error",(e=>{this.emit("error",e)}))}async _clean(){const e=await this._getExistingFiles();if(bc(`_clean: numToKeep = ${this.options.numToKeep}, existingFiles = ${e.length}`),bc("_clean: existing files are: ",e),this._tooManyFiles(e.length)){const n=e.slice(0,e.length-this.options.numToKeep).map((e=>Bc.format({dir:this.fileObject.dir,base:e.filename})));await(t=n,bc(`deleteFiles: files to delete: ${t}`),Promise.all(t.map((e=>_c.unlink(e).catch((t=>{bc(`deleteFiles: error when unlinking ${e}, ignoring. Error was ${t}`)}))))))}var t}_tooManyFiles(e){return this.options.numToKeep>0&&e>this.options.numToKeep}};const Lc=Mc;var jc=class extends Lc{constructor(e,t,n,r){r||(r={}),t&&(r.maxSize=t),r.numBackups||0===r.numBackups||(n||0===n||(n=1),r.numBackups=n),super(e,r),this.backups=r.numBackups,this.size=this.options.maxSize}get theStream(){return this.currentFileStream}};const $c=Mc;var Hc={RollingFileWriteStream:Mc,RollingFileStream:jc,DateRollingFileStream:class extends $c{constructor(e,t,n){t&&"object"==typeof t&&(n=t,t=null),n||(n={}),t||(t="yyyy-MM-dd"),n.pattern=t,n.numBackups||0===n.numBackups?n.daysToKeep=n.numBackups:(n.daysToKeep||0===n.daysToKeep?process.emitWarning("options.daysToKeep is deprecated due to the confusion it causes when used together with file size rolling. Please use options.numBackups instead.","DeprecationWarning","streamroller-DEP0001"):n.daysToKeep=1,n.numBackups=n.daysToKeep),super(e,n),this.mode=this.options.mode}get theStream(){return this.currentFileStream}}};const Jc=Nr.exports("log4js:file"),Gc=p.default,Vc=Hc,Uc=E.default.EOL;let Wc=!1;const zc=new Set;function Kc(){zc.forEach((e=>{e.sighupHandler()}))}function qc(e,t,n,r){const u=new Vc.RollingFileStream(e,t,n,r);return u.on("error",(t=>{console.error("log4js.fileAppender - Writing to file %s, error happened ",e,t)})),u.on("drain",(()=>{process.emit("log4js:pause",!1)})),u}Eo.configure=function(e,t){let n=t.basicLayout;return e.layout&&(n=t.layout(e.layout.type,e.layout)),e.mode=e.mode||384,function(e,t,n,r,u,o){e=Gc.normalize(e),Jc("Creating file appender (",e,", ",n,", ",r=r||0===r?r:5,", ",u,", ",o,")");let i=qc(e,n,r,u);const s=function(e){if(i.writable){if(!0===u.removeColor){const t=/\x1b[[0-9;]*m/g;e.data=e.data.map((e=>"string"==typeof e?e.replace(t,""):e))}i.write(t(e,o)+Uc,"utf8")||process.emit("log4js:pause",!0)}};return s.reopen=function(){i.end((()=>{i=qc(e,n,r,u)}))},s.sighupHandler=function(){Jc("SIGHUP handler called."),s.reopen()},s.shutdown=function(e){zc.delete(s),0===zc.size&&Wc&&(process.removeListener("SIGHUP",Kc),Wc=!1),i.end("","utf-8",e)},zc.add(s),Wc||(process.on("SIGHUP",Kc),Wc=!0),s}(e.filename,n,e.maxLogSize,e.backups,e,e.timezoneOffset)};var Yc={};const Xc=Hc,Zc=E.default.EOL;function Qc(e,t,n,r,u){r.maxSize=r.maxLogSize;const o=function(e,t,n){const r=new Xc.DateRollingFileStream(e,t,n);return r.on("error",(t=>{console.error("log4js.dateFileAppender - Writing to file %s, error happened ",e,t)})),r.on("drain",(()=>{process.emit("log4js:pause",!1)})),r}(e,t,r),i=function(e){o.writable&&(o.write(n(e,u)+Zc,"utf8")||process.emit("log4js:pause",!0))};return i.shutdown=function(e){o.end("","utf-8",e)},i}Yc.configure=function(e,t){let n=t.basicLayout;return e.layout&&(n=t.layout(e.layout.type,e.layout)),e.alwaysIncludePattern||(e.alwaysIncludePattern=!1),e.mode=e.mode||384,Qc(e.filename,e.pattern,n,e,e.timezoneOffset)};var ea={};const ta=Nr.exports("log4js:fileSync"),na=p.default,ra=D.default,ua=E.default.EOL||"\n";function oa(e,t){if(ra.existsSync(e))return;const n=ra.openSync(e,t.flags,t.mode);ra.closeSync(n)}class ia{constructor(e,t,n,r){ta("In RollingFileStream"),function(){if(!e||!t||t<=0)throw new Error("You must specify a filename and file size")}(),this.filename=e,this.size=t,this.backups=n,this.options=r,this.currentSize=0,this.currentSize=function(e){let t=0;try{t=ra.statSync(e).size}catch(t){oa(e,r)}return t}(this.filename)}shouldRoll(){return ta("should roll with current size %d, and max size %d",this.currentSize,this.size),this.currentSize>=this.size}roll(e){const t=this,n=new RegExp(`^${na.basename(e)}`);function r(e){return n.test(e)}function u(t){return parseInt(t.substring(`${na.basename(e)}.`.length),10)||0}function o(e,t){return u(e)>u(t)?1:u(e) ${e}.${r+1}`),ra.renameSync(na.join(na.dirname(e),n),`${e}.${r+1}`)}}ta("Rolling, rolling, rolling"),ta("Renaming the old files"),ra.readdirSync(na.dirname(e)).filter(r).sort(o).reverse().forEach(i)}write(e,t){const n=this;ta("in write"),this.shouldRoll()&&(this.currentSize=0,this.roll(this.filename)),ta("writing the chunk to the file"),n.currentSize+=e.length,ra.appendFileSync(n.filename,e)}}ea.configure=function(e,t){let n=t.basicLayout;e.layout&&(n=t.layout(e.layout.type,e.layout));const r={flags:e.flags||"a",encoding:e.encoding||"utf8",mode:e.mode||384};return function(e,t,n,r,u,o){ta("fileSync appender created");const i=function(e,t,n){let r;var u;return t?r=new ia(e,t,n,o):(oa(u=e,o),r={write(e){ra.appendFileSync(u,e)}}),r}(e=na.normalize(e),n,r=r||0===r?r:5);return e=>{i.write(t(e,u)+ua)}}(e.filename,n,e.maxLogSize,e.backups,e.timezoneOffset,r)};var sa={};const ca=Nr.exports("log4js:tcp"),aa=S.default;sa.configure=function(e,t){ca(`configure with config = ${e}`);let n=function(e){return e.serialise()};return e.layout&&(n=t.layout(e.layout.type,e.layout)),function(e,t){let n=!1;const r=[];let u,o=3,i="__LOG4JS__";function s(e){ca("Writing log event to socket"),n=u.write(`${t(e)}${i}`,"utf8")}function c(){let e;for(ca("emptying buffer");e=r.shift();)s(e)}function a(e){n?s(e):(ca("buffering log event because it cannot write at the moment"),r.push(e))}return function t(){ca(`appender creating socket to ${e.host||"localhost"}:${e.port||5e3}`),i=`${e.endMsg||"__LOG4JS__"}`,u=aa.createConnection(e.port||5e3,e.host||"localhost"),u.on("connect",(()=>{ca("socket connected"),c(),n=!0})),u.on("drain",(()=>{ca("drain event received, emptying buffer"),n=!0,c()})),u.on("timeout",u.end.bind(u)),u.on("error",(e=>{ca("connection error",e),n=!1,c()})),u.on("close",t)}(),a.shutdown=function(e){ca("shutdown called"),r.length&&o?(ca("buffer has items, waiting 100ms to empty"),o-=1,setTimeout((()=>{a.shutdown(e)}),100)):(u.removeAllListeners("close"),u.end(e))},a}(e,n)};const la=p.default,fa=Nr.exports("log4js:appenders"),da=tu,Da=eo,pa=gu,Ea=hu,ma=to,ha=new Map;ha.set("console",oo),ha.set("stdout",so),ha.set("stderr",co),ha.set("logLevelFilter",ao),ha.set("categoryFilter",lo),ha.set("noLogFilter",Do),ha.set("file",Eo),ha.set("dateFile",Yc),ha.set("fileSync",ea),ha.set("tcp",sa);const ya=new Map,Ca=(e,t)=>{fa("Loading module from ",e);try{return require(e)}catch(n){return void da.throwExceptionIf(t,"MODULE_NOT_FOUND"!==n.code,`appender "${e}" could not be loaded (error was: ${n})`)}},Fa=new Set,ga=(e,t)=>{if(ya.has(e))return ya.get(e);if(!t.appenders[e])return!1;if(Fa.has(e))throw new Error(`Dependency loop detected for appender ${e}.`);Fa.add(e),fa(`Creating appender ${e}`);const n=Aa(e,t);return Fa.delete(e),ya.set(e,n),n},Aa=(e,t)=>{const n=t.appenders[e],r=n.type.configure?n.type:((e,t)=>ha.get(e)||Ca(`./${e}`,t)||Ca(e,t)||require.main&&Ca(la.join(la.dirname(require.main.filename),e),t)||Ca(la.join(process.cwd(),e),t))(n.type,t);return da.throwExceptionIf(t,da.not(r),`appender "${e}" is not valid (type "${n.type}" could not be found)`),r.appender&&fa(`DEPRECATION: Appender ${n.type} exports an appender function.`),r.shutdown&&fa(`DEPRECATION: Appender ${n.type} exports a shutdown function.`),fa(`${e}: clustering.isMaster ? ${Da.isMaster()}`),fa(`${e}: appenderModule is ${F.default.inspect(r)}`),Da.onlyOnMaster((()=>(fa(`calling appenderModule.configure for ${e} / ${n.type}`),r.configure(ma.modifyConfig(n),Ea,(e=>ga(e,t)),pa))),(()=>{}))},va=e=>{ya.clear(),Fa.clear();const t=[];Object.values(e.categories).forEach((e=>{t.push(...e.appenders)})),Object.keys(e.appenders).forEach((n=>{(t.includes(n)||"tcp-server"===e.appenders[n].type)&&ga(n,e)}))},Sa=()=>{va({appenders:{out:{type:"stdout"}},categories:{default:{appenders:["out"],level:"trace"}}})};Sa(),da.addListener((e=>{da.throwExceptionIf(e,da.not(da.anObject(e.appenders)),'must have a property "appenders" of type object.');const t=Object.keys(e.appenders);da.throwExceptionIf(e,da.not(t.length),"must define at least one appender."),t.forEach((t=>{da.throwExceptionIf(e,da.not(e.appenders[t].type),`appender "${t}" is not valid (must be an object with property "type")`)}))})),da.addListener(va),Au.exports=ya,Au.exports.init=Sa;var wa={exports:{}};!function(e){const t=Nr.exports("log4js:categories"),n=tu,r=gu,u=Au.exports,o=new Map;function i(e,t,n){if(!1===t.inherit)return;const r=n.lastIndexOf(".");if(r<0)return;const u=n.substring(0,r);let o=e.categories[u];o||(o={inherit:!0,appenders:[]}),i(e,o,u),!e.categories[u]&&o.appenders&&o.appenders.length&&o.level&&(e.categories[u]=o),t.appenders=t.appenders||[],t.level=t.level||o.level,o.appenders.forEach((e=>{t.appenders.includes(e)||t.appenders.push(e)})),t.parent=o}function s(e){if(!e.categories)return;Object.keys(e.categories).forEach((t=>{const n=e.categories[t];i(e,n,t)}))}n.addPreProcessingListener((e=>s(e))),n.addListener((e=>{n.throwExceptionIf(e,n.not(n.anObject(e.categories)),'must have a property "categories" of type object.');const t=Object.keys(e.categories);n.throwExceptionIf(e,n.not(t.length),"must define at least one category."),t.forEach((t=>{const o=e.categories[t];n.throwExceptionIf(e,[n.not(o.appenders),n.not(o.level)],`category "${t}" is not valid (must be an object with properties "appenders" and "level")`),n.throwExceptionIf(e,n.not(Array.isArray(o.appenders)),`category "${t}" is not valid (appenders must be an array of appender names)`),n.throwExceptionIf(e,n.not(o.appenders.length),`category "${t}" is not valid (appenders must contain at least one appender name)`),Object.prototype.hasOwnProperty.call(o,"enableCallStack")&&n.throwExceptionIf(e,"boolean"!=typeof o.enableCallStack,`category "${t}" is not valid (enableCallStack must be boolean type)`),o.appenders.forEach((r=>{n.throwExceptionIf(e,n.not(u.get(r)),`category "${t}" is not valid (appender "${r}" is not defined)`)})),n.throwExceptionIf(e,n.not(r.getLevel(o.level)),`category "${t}" is not valid (level "${o.level}" not recognised; valid levels are ${r.levels.join(", ")})`)})),n.throwExceptionIf(e,n.not(e.categories.default),'must define a "default" category.')}));const c=e=>{o.clear();Object.keys(e.categories).forEach((n=>{const i=e.categories[n],s=[];i.appenders.forEach((e=>{s.push(u.get(e)),t(`Creating category ${n}`),o.set(n,{appenders:s,level:r.getLevel(i.level),enableCallStack:i.enableCallStack||!1})}))}))},a=()=>{c({categories:{default:{appenders:["out"],level:"OFF"}}})};a(),n.addListener(c);const l=e=>(t(`configForCategory: searching for config for ${e}`),o.has(e)?(t(`configForCategory: ${e} exists in config, returning it`),o.get(e)):e.indexOf(".")>0?(t(`configForCategory: ${e} has hierarchy, searching for parents`),l(e.substring(0,e.lastIndexOf(".")))):(t("configForCategory: returning config for default category"),l("default")));e.exports=o,e.exports=Object.assign(e.exports,{appendersForCategory:e=>l(e).appenders,getLevelForCategory:e=>l(e).level,setLevelForCategory:(e,n)=>{let r=o.get(e);if(t(`setLevelForCategory: found ${r} for ${e}`),!r){const n=l(e);t(`setLevelForCategory: no config found for category, found ${n} for parents of ${e}`),r={appenders:n.appenders}}r.level=n,o.set(e,r)},getEnableCallStackForCategory:e=>!0===l(e).enableCallStack,setEnableCallStackForCategory:(e,t)=>{l(e).enableCallStack=t},init:a})}(wa);const Oa=Nr.exports("log4js:logger"),ba=Hu,_a=gu,Ba=eo,Pa=wa.exports,ka=tu,xa=/at (?:(.+)\s+\()?(?:(.+?):(\d+)(?::(\d+))?|([^)]+))\)?/;function Na(e,t=4){const n=e.stack.split("\n").slice(t),r=xa.exec(n[0]);return r&&6===r.length?{functionName:r[1],fileName:r[2],lineNumber:parseInt(r[3],10),columnNumber:parseInt(r[4],10),callStack:n.join("\n")}:null}class Ia{constructor(e){if(!e)throw new Error("No category provided.");this.category=e,this.context={},this.parseCallStack=Na,Oa(`Logger created (${this.category}, ${this.level})`)}get level(){return _a.getLevel(Pa.getLevelForCategory(this.category),_a.TRACE)}set level(e){Pa.setLevelForCategory(this.category,_a.getLevel(e,this.level))}get useCallStack(){return Pa.getEnableCallStackForCategory(this.category)}set useCallStack(e){Pa.setEnableCallStackForCategory(this.category,!0===e)}log(e,...t){let n=_a.getLevel(e);n||(this._log(_a.WARN,"log4js:logger.log: invalid value for log-level as first parameter given: ",e),n=_a.INFO),this.isLevelEnabled(n)&&this._log(n,t)}isLevelEnabled(e){return this.level.isLessThanOrEqualTo(e)}_log(e,t){Oa(`sending log data (${e}) to appenders`);const n=new ba(this.category,e,t,this.context,this.useCallStack&&this.parseCallStack(new Error));Ba.send(n)}addContext(e,t){this.context[e]=t}removeContext(e){delete this.context[e]}clearContext(){this.context={}}setParseCallStackFunction(e){this.parseCallStack=e}}function Ta(e){const t=_a.getLevel(e),n=t.toString().toLowerCase().replace(/_([a-z])/g,(e=>e[1].toUpperCase())),r=n[0].toUpperCase()+n.slice(1);Ia.prototype[`is${r}Enabled`]=function(){return this.isLevelEnabled(t)},Ia.prototype[n]=function(...e){this.log(t,...e)}}_a.levels.forEach(Ta),ka.addListener((()=>{_a.levels.forEach(Ta)}));var Ra=Ia;const Ma=gu;function La(e){return e.originalUrl||e.url}function ja(e,t){for(let n=0;ne.source?e.source:e));t=new RegExp(n.join("|"))}return t}(t.nolog);return(e,i,s)=>{if(e._logging)return s();if(o&&o.test(e.originalUrl))return s();if(n.isLevelEnabled(r)||"auto"===t.level){const o=new Date,{writeHead:s}=i;e._logging=!0,i.writeHead=(e,t)=>{i.writeHead=s,i.writeHead(e,t),i.__statusCode=e,i.__headers=t||{}},i.on("finish",(()=>{i.responseTime=new Date-o,i.statusCode&&"auto"===t.level&&(r=Ma.INFO,i.statusCode>=300&&(r=Ma.WARN),i.statusCode>=400&&(r=Ma.ERROR)),r=function(e,t,n){let r=t;if(n){const t=n.find((t=>{let n=!1;return n=t.from&&t.to?e>=t.from&&e<=t.to:-1!==t.codes.indexOf(e),n}));t&&(r=Ma.getLevel(t.level,r))}return r}(i.statusCode,r,t.statusRules);const s=function(e,t,n){const r=[];return r.push({token:":url",replacement:La(e)}),r.push({token:":protocol",replacement:e.protocol}),r.push({token:":hostname",replacement:e.hostname}),r.push({token:":method",replacement:e.method}),r.push({token:":status",replacement:t.__statusCode||t.statusCode}),r.push({token:":response-time",replacement:t.responseTime}),r.push({token:":date",replacement:(new Date).toUTCString()}),r.push({token:":referrer",replacement:e.headers.referer||e.headers.referrer||""}),r.push({token:":http-version",replacement:`${e.httpVersionMajor}.${e.httpVersionMinor}`}),r.push({token:":remote-addr",replacement:e.headers["x-forwarded-for"]||e.ip||e._remoteAddress||e.socket&&(e.socket.remoteAddress||e.socket.socket&&e.socket.socket.remoteAddress)}),r.push({token:":user-agent",replacement:e.headers["user-agent"]}),r.push({token:":content-length",replacement:t.getHeader("content-length")||t.__headers&&t.__headers["Content-Length"]||"-"}),r.push({token:/:req\[([^\]]+)]/g,replacement:(t,n)=>e.headers[n.toLowerCase()]}),r.push({token:/:res\[([^\]]+)]/g,replacement:(e,n)=>t.getHeader(n.toLowerCase())||t.__headers&&t.__headers[n]}),(e=>{const t=e.concat();for(let e=0;eja(e,s)));t&&n.log(r,t)}else n.log(r,ja(u,s));t.context&&n.removeContext("res")}))}return s()}},nl=Va;let rl=!1;function ul(e){if(!rl)return;Ua("Received log event ",e);Za.appendersForCategory(e.categoryName).forEach((t=>{t(e)}))}function ol(e){rl&&il();let t=e;return"string"==typeof t&&(t=function(e){Ua(`Loading configuration from ${e}`);try{return JSON.parse(Wa.readFileSync(e,"utf8"))}catch(t){throw new Error(`Problem reading config from file "${e}". Error was ${t.message}`,t)}}(e)),Ua(`Configuration is ${t}`),Ka.configure(za(t)),el.onMessage(ul),rl=!0,sl}function il(e){Ua("Shutdown called. Disabling all log writing."),rl=!1;const t=Array.from(Xa.values());Xa.init(),Za.init();const n=t.reduceRight(((e,t)=>t.shutdown?e+1:e),0);if(0===n)return Ua("No appenders with shutdown functions found."),void 0!==e&&e();let r,u=0;function o(t){r=r||t,u+=1,Ua(`Appender shutdowns complete: ${u} / ${n}`),u>=n&&(Ua("All shutdown functions completed."),e&&e(r))}return Ua(`Found ${n} appenders with shutdown functions.`),t.filter((e=>e.shutdown)).forEach((e=>e.shutdown(o))),null}const sl={getLogger:function(e){return rl||ol(process.env.LOG4JS_CONFIG||{appenders:{out:{type:"stdout"}},categories:{default:{appenders:["out"],level:"OFF"}}}),new Qa(e||"default")},configure:ol,shutdown:il,connectLogger:tl,levels:Ya,addLayout:qa.addLayout,recording:function(){return nl}};var cl=sl,al={};Object.defineProperty(al,"__esModule",{value:!0}),al.levelMap=al.getLevel=al.setCategoriesLevel=al.getConfiguration=al.setConfiguration=void 0;const ll=cl;let fl={appenders:{debug:{type:"stdout",layout:{type:"pattern",pattern:"[%d] > hvigor %p %c %[%m%]"}},info:{type:"stdout",layout:{type:"pattern",pattern:"[%d] > hvigor %[%m%]"}},"no-pattern-info":{type:"stdout",layout:{type:"pattern",pattern:"%m"}},wrong:{type:"stderr",layout:{type:"pattern",pattern:"[%d] > hvigor %[%p: %m%]"}},"just-debug":{type:"logLevelFilter",appender:"debug",level:"debug",maxLevel:"debug"},"just-info":{type:"logLevelFilter",appender:"info",level:"info",maxLevel:"info"},"just-wrong":{type:"logLevelFilter",appender:"wrong",level:"warn",maxLevel:"error"}},categories:{default:{appenders:["just-debug","just-info","just-wrong"],level:"debug"},"no-pattern-info":{appenders:["no-pattern-info"],level:"info"}}};al.setConfiguration=e=>{fl=e};al.getConfiguration=()=>fl;let dl=ll.levels.DEBUG;al.setCategoriesLevel=(e,t)=>{dl=e;const n=fl.categories;for(const r in n)(null==t?void 0:t.includes(r))||Object.prototype.hasOwnProperty.call(n,r)&&(n[r].level=e.levelStr)};al.getLevel=()=>dl,al.levelMap=new Map([["ALL",ll.levels.ALL],["MARK",ll.levels.MARK],["TRACE",ll.levels.TRACE],["DEBUG",ll.levels.DEBUG],["INFO",ll.levels.INFO],["WARN",ll.levels.WARN],["ERROR",ll.levels.ERROR],["FATAL",ll.levels.FATAL],["OFF",ll.levels.OFF]]);var Dl=w&&w.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var u=Object.getOwnPropertyDescriptor(t,n);u&&!("get"in u?!t.__esModule:u.writable||u.configurable)||(u={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,u)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),pl=w&&w.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),El=w&&w.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&Dl(t,e,n);return pl(t,e),t};Object.defineProperty(xr,"__esModule",{value:!0}),xr.evaluateLogLevel=xr.HvigorLogger=void 0;const ml=El(cl),hl=cl,yl=El(F.default),Cl=al;class Fl{constructor(e){ml.configure((0,Cl.getConfiguration)()),this._logger=ml.getLogger(e),this._logger.level=(0,Cl.getLevel)()}static getLogger(e){return new Fl(e)}log(e,...t){this._logger.log(e,...t)}debug(e,...t){this._logger.debug(e,...t)}info(e,...t){this._logger.info(e,...t)}warn(e,...t){void 0!==e&&""!==e&&this._logger.warn(e,...t)}error(e,...t){this._logger.error(e,...t)}_printTaskExecuteInfo(e,t){this.info(`Finished :${e}... after ${t}`)}_printFailedTaskInfo(e){this.error(`Failed :${e}... `)}_printDisabledTaskInfo(e){this.info(`Disabled :${e}... `)}_printUpToDateTaskInfo(e){this.info(`UP-TO-DATE :${e}... `)}errorMessageExit(e,...t){throw new Error(yl.format(e,...t))}errorExit(e,t,...n){t&&this._logger.error(t,n),this._logger.error(e.stack)}setLevel(e,t){(0,Cl.setCategoriesLevel)(e,t),ml.shutdown(),ml.configure((0,Cl.getConfiguration)())}getLevel(){return this._logger.level}configure(e){const t=(0,Cl.getConfiguration)(),n={appenders:{...t.appenders,...e.appenders},categories:{...t.categories,...e.categories}};(0,Cl.setConfiguration)(n),ml.shutdown(),ml.configure(n)}}xr.HvigorLogger=Fl,xr.evaluateLogLevel=function(e,t){t.debug?e.setLevel(hl.levels.DEBUG):t.warn?e.setLevel(hl.levels.WARN):t.error?e.setLevel(hl.levels.ERROR):e.setLevel(hl.levels.INFO)};var gl=w&&w.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(X,"__esModule",{value:!0}),X.parseJsonText=X.parseJsonFile=void 0;const Al=Z,vl=gl(kr),Sl=gl(p.default),wl=gl(E.default),Ol=xr.HvigorLogger.getLogger("parse-json-util");var bl;!function(e){e[e.Char=0]="Char",e[e.EOF=1]="EOF",e[e.Identifier=2]="Identifier"}(bl||(bl={}));let _l,Bl,Pl,kl,xl,Nl,Il="start",Tl=[],Rl=0,Ml=1,Ll=0,jl=!1,$l="default",Hl="'",Jl=1;function Gl(e,t=!1){Bl=String(e),Il="start",Tl=[],Rl=0,Ml=1,Ll=0,kl=void 0,jl=t;do{_l=Vl(),Xl[Il]()}while("eof"!==_l.type);return kl}function Vl(){for($l="default",xl="",Hl="'",Jl=1;;){Nl=Ul();const e=zl[$l]();if(e)return e}}function Ul(){if(Bl[Rl])return String.fromCodePoint(Bl.codePointAt(Rl))}function Wl(){const e=Ul();return"\n"===e?(Ml++,Ll=0):e?Ll+=e.length:Ll++,e&&(Rl+=e.length),e}X.parseJsonFile=function(e,t=!1,n="utf-8"){const r=vl.default.readFileSync(Sl.default.resolve(e),{encoding:n});try{return Gl(r,t)}catch(t){if(t instanceof SyntaxError){const n=t.message.split("at");2===n.length&&Ol.errorMessageExit(`${n[0].trim()}${wl.default.EOL}\t at ${e}:${n[1].trim()}`)}Ol.errorMessageExit(`${e} is not in valid JSON/JSON5 format.`)}},X.parseJsonText=Gl;const zl={default(){switch(Nl){case"/":return Wl(),void($l="comment");case void 0:return Wl(),Kl("eof")}if(!Al.JudgeUtil.isIgnoreChar(Nl)&&!Al.JudgeUtil.isSpaceSeparator(Nl))return zl[Il]();Wl()},start(){$l="value"},beforePropertyName(){switch(Nl){case"$":case"_":return xl=Wl(),void($l="identifierName");case"\\":return Wl(),void($l="identifierNameStartEscape");case"}":return Kl("punctuator",Wl());case'"':case"'":return Hl=Nl,Wl(),void($l="string")}if(Al.JudgeUtil.isIdStartChar(Nl))return xl+=Wl(),void($l="identifierName");throw tf(bl.Char,Wl())},afterPropertyName(){if(":"===Nl)return Kl("punctuator",Wl());throw tf(bl.Char,Wl())},beforePropertyValue(){$l="value"},afterPropertyValue(){switch(Nl){case",":case"}":return Kl("punctuator",Wl())}throw tf(bl.Char,Wl())},beforeArrayValue(){if("]"===Nl)return Kl("punctuator",Wl());$l="value"},afterArrayValue(){switch(Nl){case",":case"]":return Kl("punctuator",Wl())}throw tf(bl.Char,Wl())},end(){throw tf(bl.Char,Wl())},comment(){switch(Nl){case"*":return Wl(),void($l="multiLineComment");case"/":return Wl(),void($l="singleLineComment")}throw tf(bl.Char,Wl())},multiLineComment(){switch(Nl){case"*":return Wl(),void($l="multiLineCommentAsterisk");case void 0:throw tf(bl.Char,Wl())}Wl()},multiLineCommentAsterisk(){switch(Nl){case"*":return void Wl();case"/":return Wl(),void($l="default");case void 0:throw tf(bl.Char,Wl())}Wl(),$l="multiLineComment"},singleLineComment(){switch(Nl){case"\n":case"\r":case"\u2028":case"\u2029":return Wl(),void($l="default");case void 0:return Wl(),Kl("eof")}Wl()},value(){switch(Nl){case"{":case"[":return Kl("punctuator",Wl());case"n":return Wl(),ql("ull"),Kl("null",null);case"t":return Wl(),ql("rue"),Kl("boolean",!0);case"f":return Wl(),ql("alse"),Kl("boolean",!1);case"-":case"+":return"-"===Wl()&&(Jl=-1),void($l="numerical");case".":case"0":case"I":case"N":return void($l="numerical");case'"':case"'":return Hl=Nl,Wl(),xl="",void($l="string")}if(void 0===Nl||!Al.JudgeUtil.isDigitWithoutZero(Nl))throw tf(bl.Char,Wl());$l="numerical"},numerical(){switch(Nl){case".":return xl=Wl(),void($l="decimalPointLeading");case"0":return xl=Wl(),void($l="zero");case"I":return Wl(),ql("nfinity"),Kl("numeric",Jl*(1/0));case"N":return Wl(),ql("aN"),Kl("numeric",NaN)}if(void 0!==Nl&&Al.JudgeUtil.isDigitWithoutZero(Nl))return xl=Wl(),void($l="decimalInteger");throw tf(bl.Char,Wl())},zero(){switch(Nl){case".":case"e":case"E":return void($l="decimal");case"x":case"X":return xl+=Wl(),void($l="hexadecimal")}return Kl("numeric",0)},decimalInteger(){switch(Nl){case".":case"e":case"E":return void($l="decimal")}if(!Al.JudgeUtil.isDigit(Nl))return Kl("numeric",Jl*Number(xl));xl+=Wl()},decimal(){switch(Nl){case".":xl+=Wl(),$l="decimalFraction";break;case"e":case"E":xl+=Wl(),$l="decimalExponent"}},decimalPointLeading(){if(Al.JudgeUtil.isDigit(Nl))return xl+=Wl(),void($l="decimalFraction");throw tf(bl.Char,Wl())},decimalFraction(){switch(Nl){case"e":case"E":return xl+=Wl(),void($l="decimalExponent")}if(!Al.JudgeUtil.isDigit(Nl))return Kl("numeric",Jl*Number(xl));xl+=Wl()},decimalExponent(){switch(Nl){case"+":case"-":return xl+=Wl(),void($l="decimalExponentSign")}if(Al.JudgeUtil.isDigit(Nl))return xl+=Wl(),void($l="decimalExponentInteger");throw tf(bl.Char,Wl())},decimalExponentSign(){if(Al.JudgeUtil.isDigit(Nl))return xl+=Wl(),void($l="decimalExponentInteger");throw tf(bl.Char,Wl())},decimalExponentInteger(){if(!Al.JudgeUtil.isDigit(Nl))return Kl("numeric",Jl*Number(xl));xl+=Wl()},hexadecimal(){if(Al.JudgeUtil.isHexDigit(Nl))return xl+=Wl(),void($l="hexadecimalInteger");throw tf(bl.Char,Wl())},hexadecimalInteger(){if(!Al.JudgeUtil.isHexDigit(Nl))return Kl("numeric",Jl*Number(xl));xl+=Wl()},identifierNameStartEscape(){if("u"!==Nl)throw tf(bl.Char,Wl());Wl();const e=Yl();switch(e){case"$":case"_":break;default:if(!Al.JudgeUtil.isIdStartChar(e))throw tf(bl.Identifier)}xl+=e,$l="identifierName"},identifierName(){switch(Nl){case"$":case"_":case"‌":case"‍":return void(xl+=Wl());case"\\":return Wl(),void($l="identifierNameEscape")}if(!Al.JudgeUtil.isIdContinueChar(Nl))return Kl("identifier",xl);xl+=Wl()},identifierNameEscape(){if("u"!==Nl)throw tf(bl.Char,Wl());Wl();const e=Yl();switch(e){case"$":case"_":case"‌":case"‍":break;default:if(!Al.JudgeUtil.isIdContinueChar(e))throw tf(bl.Identifier)}xl+=e,$l="identifierName"},string(){switch(Nl){case"\\":return Wl(),void(xl+=function(){const e=Ul(),t=function(){switch(Ul()){case"b":return Wl(),"\b";case"f":return Wl(),"\f";case"n":return Wl(),"\n";case"r":return Wl(),"\r";case"t":return Wl(),"\t";case"v":return Wl(),"\v"}return}();if(t)return t;switch(e){case"0":if(Wl(),Al.JudgeUtil.isDigit(Ul()))throw tf(bl.Char,Wl());return"\0";case"x":return Wl(),function(){let e="",t=Ul();if(!Al.JudgeUtil.isHexDigit(t))throw tf(bl.Char,Wl());if(e+=Wl(),t=Ul(),!Al.JudgeUtil.isHexDigit(t))throw tf(bl.Char,Wl());return e+=Wl(),String.fromCodePoint(parseInt(e,16))}();case"u":return Wl(),Yl();case"\n":case"\u2028":case"\u2029":return Wl(),"";case"\r":return Wl(),"\n"===Ul()&&Wl(),""}if(void 0===e||Al.JudgeUtil.isDigitWithoutZero(e))throw tf(bl.Char,Wl());return Wl()}());case'"':case"'":if(Nl===Hl){const e=Kl("string",xl);return Wl(),e}return void(xl+=Wl());case"\n":case"\r":case void 0:throw tf(bl.Char,Wl());case"\u2028":case"\u2029":!function(e){Ol.warn(`JSON5: '${ef(e)}' in strings is not valid ECMAScript; consider escaping.`)}(Nl)}xl+=Wl()}};function Kl(e,t){return{type:e,value:t,line:Ml,column:Ll}}function ql(e){for(const t of e){if(Ul()!==t)throw tf(bl.Char,Wl());Wl()}}function Yl(){let e="",t=4;for(;t-- >0;){const t=Ul();if(!Al.JudgeUtil.isHexDigit(t))throw tf(bl.Char,Wl());e+=Wl()}return String.fromCodePoint(parseInt(e,16))}const Xl={start(){if("eof"===_l.type)throw tf(bl.EOF);Zl()},beforePropertyName(){switch(_l.type){case"identifier":case"string":return Pl=_l.value,void(Il="afterPropertyName");case"punctuator":return void Ql();case"eof":throw tf(bl.EOF)}},afterPropertyName(){if("eof"===_l.type)throw tf(bl.EOF);Il="beforePropertyValue"},beforePropertyValue(){if("eof"===_l.type)throw tf(bl.EOF);Zl()},afterPropertyValue(){if("eof"===_l.type)throw tf(bl.EOF);switch(_l.value){case",":return void(Il="beforePropertyName");case"}":Ql()}},beforeArrayValue(){if("eof"===_l.type)throw tf(bl.EOF);"punctuator"!==_l.type||"]"!==_l.value?Zl():Ql()},afterArrayValue(){if("eof"===_l.type)throw tf(bl.EOF);switch(_l.value){case",":return void(Il="beforeArrayValue");case"]":Ql()}},end(){}};function Zl(){const e=function(){let e;switch(_l.type){case"punctuator":switch(_l.value){case"{":e={};break;case"[":e=[]}break;case"null":case"boolean":case"numeric":case"string":e=_l.value}return e}();if(jl&&"object"==typeof e&&(e._line=Ml,e._column=Ll),void 0===kl)kl=e;else{const t=Tl[Tl.length-1];Array.isArray(t)?jl&&"object"!=typeof e?t.push({value:e,_line:Ml,_column:Ll}):t.push(e):t[Pl]=jl&&"object"!=typeof e?{value:e,_line:Ml,_column:Ll}:e}!function(e){if(e&&"object"==typeof e)Tl.push(e),Il=Array.isArray(e)?"beforeArrayValue":"beforePropertyName";else{const e=Tl[Tl.length-1];Il=e?Array.isArray(e)?"afterArrayValue":"afterPropertyValue":"end"}}(e)}function Ql(){Tl.pop();const e=Tl[Tl.length-1];Il=e?Array.isArray(e)?"afterArrayValue":"afterPropertyValue":"end"}function ef(e){const t={"'":"\\'",'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\v":"\\v","\0":"\\0","\u2028":"\\u2028","\u2029":"\\u2029"};if(t[e])return t[e];if(e<" "){const t=e.charCodeAt(0).toString(16);return`\\x${`00${t}`.substring(t.length)}`}return e}function tf(e,t){let n="";switch(e){case bl.Char:n=void 0===t?`JSON5: invalid end of input at ${Ml}:${Ll}`:`JSON5: invalid character '${ef(t)}' at ${Ml}:${Ll}`;break;case bl.EOF:n=`JSON5: invalid end of input at ${Ml}:${Ll}`;break;case bl.Identifier:Ll-=5,n=`JSON5: invalid identifier character at ${Ml}:${Ll}`}const r=new nf(n);return r.lineNumber=Ml,r.columnNumber=Ll,r}class nf extends SyntaxError{}var rf=w&&w.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var u=Object.getOwnPropertyDescriptor(t,n);u&&!("get"in u?!t.__esModule:u.writable||u.configurable)||(u={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,u)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),uf=w&&w.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),of=w&&w.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&rf(t,e,n);return uf(t,e),t};Object.defineProperty(Y,"__esModule",{value:!0});var sf=Y.cleanWorkSpace=Ff=Y.executeInstallHvigor=yf=Y.isHvigorInstalled=mf=Y.isAllDependenciesInstalled=void 0;const cf=of(D.default),af=of(p.default),lf=b,ff=j,df=$,Df=X;let pf,Ef;var mf=Y.isAllDependenciesInstalled=function(){function e(e){const t=null==e?void 0:e.dependencies;return void 0===t?0:Object.getOwnPropertyNames(t).length}if(pf=gf(),Ef=Af(),e(pf)+1!==e(Ef))return!1;for(const e in null==pf?void 0:pf.dependencies)if(!(0,ff.hasNpmPackInPaths)(e,[lf.HVIGOR_PROJECT_DEPENDENCIES_HOME])||!hf(e,pf,Ef))return!1;return!0};function hf(e,t,n){return void 0!==n.dependencies&&(0,ff.offlinePluginConversion)(lf.HVIGOR_PROJECT_ROOT_DIR,t.dependencies[e])===n.dependencies[e]}var yf=Y.isHvigorInstalled=function(){return pf=gf(),Ef=Af(),(0,ff.hasNpmPackInPaths)(lf.HVIGOR_ENGINE_PACKAGE_NAME,[lf.HVIGOR_PROJECT_DEPENDENCIES_HOME])&&(0,ff.offlinePluginConversion)(lf.HVIGOR_PROJECT_ROOT_DIR,pf.hvigorVersion)===Ef.dependencies[lf.HVIGOR_ENGINE_PACKAGE_NAME]};const Cf={cwd:lf.HVIGOR_PROJECT_DEPENDENCIES_HOME,stdio:["inherit","inherit","inherit"]};var Ff=Y.executeInstallHvigor=function(){(0,df.logInfoPrintConsole)("Hvigor installing...");const e={dependencies:{}};e.dependencies[lf.HVIGOR_ENGINE_PACKAGE_NAME]=(0,ff.offlinePluginConversion)(lf.HVIGOR_PROJECT_ROOT_DIR,pf.hvigorVersion);try{cf.mkdirSync(lf.HVIGOR_PROJECT_DEPENDENCIES_HOME,{recursive:!0});const t=af.resolve(lf.HVIGOR_PROJECT_DEPENDENCIES_HOME,lf.DEFAULT_PACKAGE_JSON);cf.writeFileSync(t,JSON.stringify(e))}catch(e){(0,df.logErrorAndExit)(e)}!function(){const e=["config","set","store-dir",lf.HVIGOR_PNPM_STORE_PATH];(0,ff.executeCommand)(lf.HVIGOR_WRAPPER_PNPM_SCRIPT_PATH,e,Cf)}(),(0,ff.executeCommand)(lf.HVIGOR_WRAPPER_PNPM_SCRIPT_PATH,["install"],Cf)};function gf(){const e=af.resolve(lf.HVIGOR_PROJECT_WRAPPER_HOME,lf.DEFAULT_HVIGOR_CONFIG_JSON_FILE_NAME);return cf.existsSync(e)||(0,df.logErrorAndExit)(`Error: Hvigor config file ${e} does not exist.`),(0,Df.parseJsonFile)(e)}function Af(){return cf.existsSync(lf.HVIGOR_PROJECT_DEPENDENCY_PACKAGE_JSON_PATH)?(0,Df.parseJsonFile)(lf.HVIGOR_PROJECT_DEPENDENCY_PACKAGE_JSON_PATH):{dependencies:{}}}sf=Y.cleanWorkSpace=function(){if((0,df.logInfoPrintConsole)("Hvigor cleaning..."),!cf.existsSync(lf.HVIGOR_PROJECT_DEPENDENCIES_HOME))return;const e=cf.readdirSync(lf.HVIGOR_PROJECT_DEPENDENCIES_HOME);if(e&&0!==e.length){cf.existsSync(lf.HVIGOR_BOOT_JS_FILE_PATH)&&(0,ff.executeCommand)(process.argv[0],[lf.HVIGOR_BOOT_JS_FILE_PATH,"--stop-daemon"],{});try{e.forEach((e=>{cf.rmSync(af.resolve(lf.HVIGOR_PROJECT_DEPENDENCIES_HOME,e),{recursive:!0})}))}catch(e){(0,df.logErrorAndExit)(`The hvigor build tool cannot be installed. Please manually clear the workspace directory and synchronize the project again.\n\n Workspace Path: ${lf.HVIGOR_PROJECT_DEPENDENCIES_HOME}.`)}}};var vf={},Sf=w&&w.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var u=Object.getOwnPropertyDescriptor(t,n);u&&!("get"in u?!t.__esModule:u.writable||u.configurable)||(u={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,u)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),wf=w&&w.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Of=w&&w.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&Sf(t,e,n);return wf(t,e),t};Object.defineProperty(vf,"__esModule",{value:!0});var bf=vf.executeBuild=void 0;const _f=b,Bf=Of(D.default),Pf=Of(p.default),kf=$;bf=vf.executeBuild=function(){const e=Pf.resolve(_f.HVIGOR_PROJECT_DEPENDENCIES_HOME,"node_modules","@ohos","hvigor","bin","hvigor.js");try{const t=Bf.realpathSync(e);require(t)}catch(t){(0,kf.logErrorAndExit)(`Error: ENOENT: no such file ${e},delete ${_f.HVIGOR_PROJECT_DEPENDENCIES_HOME} and retry.`)}},function(){if(O.checkNpmConifg(),O.environmentHandler(),O.isPnpmAvailable()||O.executeInstallPnpm(),yf()&&mf())bf();else{sf();try{Ff()}catch(e){return void sf()}bf()}}(); \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/hvigorfile.js b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/hvigorfile.js new file mode 100644 index 0000000000000000000000000000000000000000..5f2735e3deeaf655828407544bbed9365c258278 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/hvigorfile.js @@ -0,0 +1,2 @@ +// Script for compiling build behavior. It is built in the build plug-in and cannot be modified currently. +module.exports = require('@ohos/hvigor-ohos-plugin').appTasks \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/hvigorw b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/hvigorw new file mode 100644 index 0000000000000000000000000000000000000000..d0a563c20ab052c32d602855d07029549d314cf4 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/hvigorw @@ -0,0 +1,63 @@ +#!/bin/bash + +# ---------------------------------------------------------------------------- +# Copyright (c) 2023 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Hvigor startup script, version 1.0.0 +# +# Required ENV vars: +# ------------------ +# NODE_HOME - location of a Node home dir +# or +# Add /usr/local/nodejs/bin to the PATH environment variable +# ---------------------------------------------------------------------------- + +HVIGOR_APP_HOME=$(dirname $(readlink -f $0)) +HVIGOR_WRAPPER_SCRIPT=${HVIGOR_APP_HOME}/hvigor/hvigor-wrapper.js +warn() { + echo "" + echo -e "\033[1;33m`date '+[%Y-%m-%d %H:%M:%S]'`$@\033[0m" +} + +error() { + echo "" + echo -e "\033[1;31m`date '+[%Y-%m-%d %H:%M:%S]'`$@\033[0m" +} + +fail() { + error "$@" + exit 1 +} + +# Determine node to start hvigor wrapper script +if [ -n "${NODE_HOME}" ];then + EXECUTABLE_NODE="${NODE_HOME}/bin/node" + if [ ! -x "$EXECUTABLE_NODE" ];then + fail "ERROR: NODE_HOME is set to an invalid directory,check $NODE_HOME\n\nPlease set NODE_HOME in your environment to the location where your nodejs installed" + fi +else + EXECUTABLE_NODE="node" + which ${EXECUTABLE_NODE} > /dev/null 2>&1 || fail "ERROR: NODE_HOME is not set and not 'node' command found in your path" +fi + +# Check hvigor wrapper script +if [ ! -r "$HVIGOR_WRAPPER_SCRIPT" ];then + fail "ERROR: Couldn't find hvigor/hvigor-wrapper.js in ${HVIGOR_APP_HOME}" +fi + +# start hvigor-wrapper script +exec "${EXECUTABLE_NODE}" \ + "${HVIGOR_WRAPPER_SCRIPT}" "$@" diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/hvigorw.bat b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/hvigorw.bat new file mode 100644 index 0000000000000000000000000000000000000000..af893e9a2c9170d04610c906f1cf1b6f3ac144ac --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/hvigorw.bat @@ -0,0 +1,72 @@ +:: Copyright (c) 2023 Huawei Device Co., Ltd. +:: Licensed under the Apache License, Version 2.0 (the "License"); +:: you may not use this file except in compliance with the License. +:: You may obtain a copy of the License at +:: +:: http://www.apache.org/licenses/LICENSE-2.0 +:: +:: Unless required by applicable law or agreed to in writing, software +:: distributed under the License is distributed on an "AS IS" BASIS, +:: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +:: See the License for the specific language governing permissions and +:: limitations under the License. + +@echo off + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Hvigor startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +set WRAPPER_MODULE_PATH=%APP_HOME%\hvigor\hvigor-wrapper.js +set NODE_EXE=node.exe + +goto start + +:start +@rem Find node.exe +if defined NODE_HOME goto findNodeFromNodeHome + +%NODE_EXE% --version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: NODE_HOME is not set and no 'node' command could be found in your PATH. +echo. +echo Please set the NODE_HOME variable in your environment to match the +echo location of your NodeJs installation. + +goto fail + +:findNodeFromNodeHome +set NODE_HOME=%NODE_HOME:"=% +set NODE_EXE_PATH=%NODE_HOME%/%NODE_EXE% + +if exist "%NODE_EXE_PATH%" goto execute +echo. +echo ERROR: NODE_HOME is not set and no 'node' command could be found in your PATH. +echo. +echo Please set the NODE_HOME variable in your environment to match the +echo location of your NodeJs installation. + +goto fail + +:execute +@rem Execute hvigor +"%NODE_EXE%" %WRAPPER_MODULE_PATH% %* + +:fail +exit /b 1 diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/oh-package.json5 b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/oh-package.json5 new file mode 100644 index 0000000000000000000000000000000000000000..24f121b721b1a3c802cf889f042821b782b17190 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/oh-package.json5 @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "license": "ISC", + "devDependencies": { + "@ohos/hypium": "1.0.6" + }, + "name": "AdaptiveCapabilities", + "description": "example description", + "repository": {}, + "version": "1.0.0", + "dependencies": {} +} diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/screenshots/devices/img1.jpeg b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/screenshots/devices/img1.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..e6d546db94e47d373678db4770ab1a50c916ce80 Binary files /dev/null and b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/screenshots/devices/img1.jpeg differ diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/screenshots/devices/img2.jpeg b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/screenshots/devices/img2.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..4f223e22a334e7bc0c82097b1c3848c15fe788e9 Binary files /dev/null and b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/screenshots/devices/img2.jpeg differ diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/screenshots/devices/img3.jpeg b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/screenshots/devices/img3.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..3f3e50c290b9dea54adbb8c6e63c7666502800f0 Binary files /dev/null and b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/screenshots/devices/img3.jpeg differ diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/screenshots/devices/img4.jpeg b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/screenshots/devices/img4.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..d44d75046d0c5f9fcf196ecdffd731e857b55e25 Binary files /dev/null and b/HarmonyOS_NEXT/MultiDeviceAppDev/AdaptiveCapabilities/screenshots/devices/img4.jpeg differ diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/.gitignore b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..83aac610e72931feb124646269018cf1396c9445 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/.gitignore @@ -0,0 +1,10 @@ +/node_modules +/local.properties +/.idea +**/build +/.hvigor +/package-lock.json +**/.preview +**/package-lock.json +/oh_modules +**/oh_modules \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/AppScope/app.json5 b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/AppScope/app.json5 new file mode 100644 index 0000000000000000000000000000000000000000..b0c6c9c9da5b4adf63f9806eb73f3d5d7cf23f60 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/AppScope/app.json5 @@ -0,0 +1,25 @@ +/** + * Copyright (c) 2021-2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "app": { + "bundleName": "ohos.samples.settings", + "vendor": "example", + "versionCode": 1000000, + "versionName": "1.0.0", + "icon": "$media:app_icon", + "label": "$string:app_name" + } +} diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/AppScope/resources/base/element/string.json b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/AppScope/resources/base/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..7018e9c27f1bec8bb3d75cf0ea7bab8f0be5c509 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/AppScope/resources/base/element/string.json @@ -0,0 +1,8 @@ +{ + "string": [ + { + "name": "app_name", + "value": "settings" + } + ] +} diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/AppScope/resources/base/media/app_icon.png b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/AppScope/resources/base/media/app_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ce307a8827bd75456441ceb57d530e4c8d45d36c Binary files /dev/null and b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/AppScope/resources/base/media/app_icon.png differ diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/LICENSE b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..261eeb9e9f8b2b4b0d119366dda99c6fd7d35c64 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/build-profile.json5 b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/build-profile.json5 new file mode 100644 index 0000000000000000000000000000000000000000..5571f6e847757c7080e6929a4a6f91d8c0d218e8 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/build-profile.json5 @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "app": { + "signingConfigs": [], + "products": [ + { + "name": "default", + "signingConfig": "default", + "compileSdkVersion": "4.0.0(10)", + "compatibleSdkVersion": "4.0.0(10)", + "runtimeOS": "HarmonyOS", + } + ], + "buildModeSet": [ + { + "name": "debug", + }, + { + "name": "release" + } + ] + }, + "modules": [ + { + "name": "default", + "srcPath": "./products/default", + "targets": [ + { + "name": "default", + "applyToProducts": [ + "default" + ] + } + ] + }, + { + "name": "common", + "srcPath": "./common" + }, + { + "name": "settingItems", + "srcPath": "./features/settingitems" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/common/.gitignore b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/common/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..4f9a973815d0b5e49bc8547681a6b4bc7a178d12 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/common/.gitignore @@ -0,0 +1,3 @@ +/node_modules +/.preview +/build \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/common/Index.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/common/Index.ets new file mode 100644 index 0000000000000000000000000000000000000000..e8a238f4c43b1a401e3e6c8d69659298d081b8e2 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/common/Index.ets @@ -0,0 +1 @@ +export { Logger } from './src/main/ets/util/Logger'; diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/common/build-profile.json5 b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/common/build-profile.json5 new file mode 100644 index 0000000000000000000000000000000000000000..c6e5a1e1e89828b7270b37199c2d96374a5352a0 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/common/build-profile.json5 @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "apiType": "stageMode", + "buildOption": { + } +} diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/common/hvigorfile.ts b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/common/hvigorfile.ts new file mode 100644 index 0000000000000000000000000000000000000000..ec14ea697b36ad6536c8d485cf9738f03e753385 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/common/hvigorfile.ts @@ -0,0 +1,2 @@ +// Script for compiling build behavior. It is built in the build plug-in and cannot be modified currently. +module.exports = require('@ohos/hvigor-ohos-plugin').harTasks \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/common/oh-package.json5 b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/common/oh-package.json5 new file mode 100644 index 0000000000000000000000000000000000000000..375ce7ae540b86ce651e67b736833b4011b21366 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/common/oh-package.json5 @@ -0,0 +1,26 @@ +/** + * Copyright (c) 2021-2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "license": "ISC", + "types": "", + "devDependencies": {}, + "name": "@ohos/common", + "description": "a npm package which contains arkUI2.0 page", + "main": "Index.ts", + "repository": {}, + "version": "1.0.0", + "dependencies": {} +} diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/common/src/main/ets/util/Logger.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/common/src/main/ets/util/Logger.ets new file mode 100644 index 0000000000000000000000000000000000000000..a4a18f6b4bcbd594230a8ce3910768150e8b4e7b --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/common/src/main/ets/util/Logger.ets @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import hilog from '@ohos.hilog' + +export class Logger { + static PREFIX: string = '[Sample_Settings]' + static DOMAIN: number = 0xFF00 + static FORMAT: string = '%{public}s, %{public}s' + + static debug(...args: string[]) { + hilog.debug(Logger.DOMAIN, Logger.PREFIX, Logger.FORMAT, args) + } + + static info(...args: string[]) { + hilog.info(Logger.DOMAIN, Logger.PREFIX, Logger.FORMAT, args) + } + + static warn(...args: string[]) { + hilog.warn(Logger.DOMAIN, Logger.PREFIX, Logger.FORMAT, args) + } + + static error(...args: string[]) { + hilog.error(Logger.DOMAIN, Logger.PREFIX, Logger.FORMAT, args) + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/common/src/main/module.json5 b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/common/src/main/module.json5 new file mode 100644 index 0000000000000000000000000000000000000000..b428460e73c41f3f646f802352ea199d34020a35 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/common/src/main/module.json5 @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "module": { + "name": "common", + "type": "har", + "deviceTypes": [ + "default", + "tablet" + ] + } +} diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/common/src/main/resources/base/element/string.json b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/common/src/main/resources/base/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..1e76de0c66777cfe83568615c5c2e68c61d23fed --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/common/src/main/resources/base/element/string.json @@ -0,0 +1,8 @@ +{ + "string": [ + { + "name": "page_show", + "value": "page from npm package" + } + ] +} diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/.gitignore b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..4f9a973815d0b5e49bc8547681a6b4bc7a178d12 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/.gitignore @@ -0,0 +1,3 @@ +/node_modules +/.preview +/build \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/Index.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/Index.ets new file mode 100644 index 0000000000000000000000000000000000000000..dcb01a442267e24cde9cb3d6089b71db9775317b --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/Index.ets @@ -0,0 +1,18 @@ +/** + * Copyright (c) 2021-2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export { MainItem } from './src/main/ets/components/MainItem' +export { MoreConnectionsItem } from './src/main/ets/moreconnections/MoreConnectionsItem' +export { SettingList } from './src/main/ets/settinglist/SettingList' \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/build-profile.json5 b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/build-profile.json5 new file mode 100644 index 0000000000000000000000000000000000000000..9f44a17acc2d91d2c0702d55f5f30e6f4475bffd --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/build-profile.json5 @@ -0,0 +1,20 @@ +/** + * Copyright (c) 2021-2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "apiType": "stageMode", + "buildOption": { + } +} diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/hvigorfile.ts b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/hvigorfile.ts new file mode 100644 index 0000000000000000000000000000000000000000..42ed4b4a54a873e2b53441556aae93fab24b794f --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/hvigorfile.ts @@ -0,0 +1,3 @@ +// Script for compiling build behavior. It is built in the build plug-in and cannot be modified currently. +module.exports = require('@ohos/hvigor-ohos-plugin').harTasks + diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/oh-package.json5 b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/oh-package.json5 new file mode 100644 index 0000000000000000000000000000000000000000..4c14b5df7574ec0a66c73b96cae84aedbec7b935 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/oh-package.json5 @@ -0,0 +1,28 @@ +/** + * Copyright (c) 2021-2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "license": "ISC", + "types": "", + "devDependencies": {}, + "name": "@ohos/settingItems", + "description": "a npm package which contains arkUI2.0 page", + "main": "Index.ets", + "repository": {}, + "version": "1.0.0", + "dependencies": { + "@ohos/common": "file:../../common" + } +} diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/ets/components/ItemDescription.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/ets/components/ItemDescription.ets new file mode 100644 index 0000000000000000000000000000000000000000..4f9e41d204844c057fd19570ed23987cc63c1aeb --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/ets/components/ItemDescription.ets @@ -0,0 +1,29 @@ +/** + * Copyright (c) 2021-2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +@Component +export struct ItemDescription { + private description: string | Resource = '' + + build() { + Text(this.description) + .fontSize($r('sys.float.ohos_id_text_size_body2')) + .fontColor($r('sys.color.ohos_id_color_text_secondary')) + .fontWeight(FontWeight.Regular) + .fontFamily('HarmonyHeiTi') + .lineHeight(19) + .width('100%') + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/ets/components/ItemGroup.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/ets/components/ItemGroup.ets new file mode 100644 index 0000000000000000000000000000000000000000..e9abec8264e1ef0a456470cc90df089bc2ea6870 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/ets/components/ItemGroup.ets @@ -0,0 +1,29 @@ +/** + * Copyright (c) 2021-2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +@Component +export struct ItemGroup { + @BuilderParam noParam: () => void + + build() { + Column() { + this.noParam() + } + .width('100%') + .borderRadius(24) + .backgroundColor($r('sys.color.ohos_id_color_foreground_contrary')) + .padding(4) + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/ets/components/MainItem.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/ets/components/MainItem.ets new file mode 100644 index 0000000000000000000000000000000000000000..bc7c4887471f2bed0f34fc615cedb69d4d263624 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/ets/components/MainItem.ets @@ -0,0 +1,77 @@ +/** + * Copyright (c) 2021-2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +@Component +export struct MainItem { + private title: string | Resource = ''; + private tag: string | Resource = ''; + private icon: string | Resource = ''; + private label: string = '' + @LocalStorageLink('selectedLabel') selectedLabel: string = '' + @LocalStorageProp('isSplitMode') isSplitMode: boolean = false + @State isTouched: boolean = false + + isActivated(): boolean { + if (this.isSplitMode) { + return this.label !== '' && this.label === this.selectedLabel + } + return this.isTouched + } + + build() { + Row() { + Image(this.icon) + .width(24) + .height(24) + + Text(this.title) + .fontSize(16) + .lineHeight(22) + .fontWeight(FontWeight.Medium) + .fontFamily('HarmonyHeiTi') + .fontColor($r('sys.color.ohos_id_color_text_primary')) + .align(Alignment.Start) + .margin({ left: 16 }) + + Blank() + + Text(this.tag) + .fontSize(14) + .lineHeight(19) + .fontWeight(FontWeight.Regular) + .fontFamily('HarmonyHeiTi') + .fontColor($r('sys.color.ohos_id_color_text_primary')) + + Image($r('app.media.ic_settings_arrow')) + .width(12) + .height(24) + .margin({left: 4}) + .fillColor($r('sys.color.ohos_id_color_fourth')) + } + .alignItems(VerticalAlign.Center) + .width('100%') + .height(56) + .borderRadius(20) + .padding({left: 8, right: 8}) + .backgroundColor(this.isActivated() ? $r('app.color.itemActivated') : $r('app.color.itemInactivated')) + .onTouch((event: TouchEvent) => { + if (event.type === TouchType.Down) { + this.isTouched = true + } else if (event.type === TouchType.Up) { + this.isTouched = false + } + }) + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/ets/components/SearchBox.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/ets/components/SearchBox.ets new file mode 100644 index 0000000000000000000000000000000000000000..c0a4d3cb617fa2f20e2ce3dc3f7deb70cf95f0e7 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/ets/components/SearchBox.ets @@ -0,0 +1,40 @@ +/** + * Copyright (c) 2021 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +@Component +export struct SearchBox { + build() { + Row() { + Image($r('app.media.ic_search')) + .width(18) + .height(18) + .objectFit(ImageFit.Contain) + .margin({left: 11}) + + Text($r('app.string.searchHint')) + .fontSize(16) + .lineHeight(21) + .fontWeight(FontWeight.Regular) + .fontFamily('HarmonyHeiTi') + .fontColor($r('sys.color.ohos_id_color_text_secondary')) + .margin({left: 6}) + } + .borderRadius(20) + .backgroundColor('#0C000000') + .height(40) + .width('100%') + .alignItems(VerticalAlign.Center) + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/ets/components/SubItemArrow.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/ets/components/SubItemArrow.ets new file mode 100644 index 0000000000000000000000000000000000000000..f5b21a052e82872f6d2d6d72b22ea5ef4ae3d503 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/ets/components/SubItemArrow.ets @@ -0,0 +1,59 @@ +/** + * Copyright (c) 2021-2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +@Component +export struct SubItemArrow { + private title: string | Resource = '' + private tag: string | Resource = '' + @State isTouched: boolean = false + + build() { + Row() { + Text(this.title) + .fontSize($r('sys.float.ohos_id_text_size_body1')) + .fontColor($r('sys.color.ohos_id_color_text_primary')) + .fontWeight(FontWeight.Medium) + .textAlign(TextAlign.Start) + + Blank() + + Text(this.tag) + .fontSize(14) + .lineHeight(19) + .align(Alignment.End) + .fontWeight(FontWeight.Regular) + .fontFamily('HarmonyHeiTi') + .fontColor($r('sys.color.ohos_id_color_text_secondary')) + + Image($r('app.media.ic_settings_arrow')) + .width(12) + .height(24) + .margin({left: 4}) + .fillColor($r("sys.color.ohos_id_color_fourth")) + } + .height(48) + .width('100%') + .padding({left: 8, right: 8}) + .borderRadius(24) + .backgroundColor(this.isTouched ? $r('app.color.itemActivated') : $r('app.color.itemInactivated')) + .onTouch((event: TouchEvent) => { + if (event.type === TouchType.Down) { + this.isTouched = true + } else if (event.type === TouchType.Up) { + this.isTouched = false + } + }) + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/ets/components/SubItemToggle.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/ets/components/SubItemToggle.ets new file mode 100644 index 0000000000000000000000000000000000000000..bdf0053dffea4d151b75a69fed972d68a6a5da44 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/ets/components/SubItemToggle.ets @@ -0,0 +1,44 @@ +/** + * Copyright (c) 2021-2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +@Component +export struct SubItemToggle { + @LocalStorageProp('currentBreakpoint') curBp: string = 'sm' + private title: string | Resource = ''; + private isOn: boolean = false + + build() { + Row() { + Text(this.title) + .fontSize($r('sys.float.ohos_id_text_size_body1')) + .fontColor($r('sys.color.ohos_id_color_text_primary')) + .fontWeight(FontWeight.Medium) + .textAlign(TextAlign.Start) + + Blank() + + Toggle({ type: ToggleType.Switch, isOn: this.isOn }) + .id('ToggleSwitch') + .width(36) + .height(20) + .selectedColor('#007DFF') + } + .height(48) + .width('100%') + .padding({left: 8, right: 8}) + .borderRadius(24) + .backgroundColor($r('app.color.itemInactivated')) + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/ets/components/SubItemWifi.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/ets/components/SubItemWifi.ets new file mode 100644 index 0000000000000000000000000000000000000000..4b6e10ada71d44df6ce65a5326078fd1da8e8402 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/ets/components/SubItemWifi.ets @@ -0,0 +1,65 @@ +/** + * Copyright (c) 2021-2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +@Component +export struct SubItemWifi { + private title: string | Resource = ''; + private subTitle: string | Resource = ''; + private isConnected: boolean = false; + private icon: Resource = $r('app.media.ic_wifi_signal_4_dark') + @State isTouched: boolean = false + + build() { + Row() { + Column() { + Text(this.title) + .fontSize($r('sys.float.ohos_id_text_size_body1')) + .fontColor(this.isConnected ? + $r('sys.color.ohos_id_color_text_primary_activated') : $r('sys.color.ohos_id_color_text_primary')) + .fontWeight(FontWeight.Medium) + .margin({bottom: 1}) + + + Text(this.subTitle) + .fontSize($r('sys.float.ohos_id_text_size_body2')) + .fontColor(this.isConnected ? + $r('sys.color.ohos_id_color_text_primary') : $r('sys.color.ohos_id_color_text_secondary')) + .fontWeight(FontWeight.Regular) + .margin({top: 8}) + } + .alignItems(HorizontalAlign.Start) + + Blank() + + Image(this.icon) + .fillColor($r('sys.color.ohos_id_color_primary')) + .width(24) + .height(24) + } + .height(56) + .width('100%') + .borderRadius(24) + .padding({left: 8, right: 8}) + .alignItems(VerticalAlign.Center) + .backgroundColor(this.isTouched ? $r('app.color.itemActivated') : $r('app.color.itemInactivated')) + .onTouch((event: TouchEvent) => { + if (event.type === TouchType.Down) { + this.isTouched = true + } else if (event.type === TouchType.Up) { + this.isTouched = false + } + }) + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/ets/moreconnections/MoreConnectionsItem.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/ets/moreconnections/MoreConnectionsItem.ets new file mode 100644 index 0000000000000000000000000000000000000000..d15f21de06ecfbd2f61a69e5a02f4408203a9c8e --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/ets/moreconnections/MoreConnectionsItem.ets @@ -0,0 +1,82 @@ +/** + * Copyright (c) 2021-2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { MainItem } from '../components/MainItem' +import { SubItemArrow } from '../components/SubItemArrow' +import { Nfc } from './Nfc' +import { ItemGroup } from '../components/ItemGroup' + +@Component +export struct MoreConnectionsItem { + @State itemTitle: string = '' + @LocalStorageLink('selectedLabel') selectedLabel: string = '' + + aboutToAppear() { + this.itemTitle = getContext().resourceManager.getStringSync($r('app.string.moreConnectionsTab').id) + } + + build() { + Column() { + NavRouter() { + MainItem({ + title: $r("app.string.moreConnectionsTab"), + icon: $r('app.media.ic_settings_more_connections'), + label: 'MORE_CONNECTIONS' + }) + NavDestination() { + MoreConnections() + } + .title(this.itemTitle) + .backgroundColor($r('sys.color.ohos_id_color_sub_background')) + }.onStateChange((isActivated: boolean) => { + if (isActivated) { + this.selectedLabel = 'MORE_CONNECTIONS' + } + }) + } + } +} + +@Component +export struct MoreConnections { + @State itemTitle: string = '' + @LocalStorageLink('selectedLabel') selectedLabel: string = '' + + aboutToAppear() { + this.itemTitle = getContext().resourceManager.getStringSync($r('app.string.NFC').id) + } + + build() { + Column() { + ItemGroup() { + NavRouter() { + SubItemArrow({ + title: $r('app.string.NFC'), + tag: $r('app.string.disabled') + }) + + NavDestination() { + Nfc() + }.title(this.itemTitle) + .backgroundColor($r('sys.color.ohos_id_color_sub_background')) + }.onStateChange((isActivated: boolean) => { + if (isActivated) { + this.selectedLabel = 'MORE_CONNECTIONS' + } + }) + } + }.padding({left: 12, right: 12}) + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/ets/moreconnections/Nfc.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/ets/moreconnections/Nfc.ets new file mode 100644 index 0000000000000000000000000000000000000000..89aee47db16a1fcbfeb33cdb191e60dae186951f --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/ets/moreconnections/Nfc.ets @@ -0,0 +1,53 @@ +/** + * Copyright (c) 2021-2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { SubItemToggle } from '../components/SubItemToggle' +import { ItemGroup } from '../components/ItemGroup' + +@Component +export struct Nfc { + build() { + Scroll() { + Column() { + Image($r('app.media.ic_nfc')) + .width(400) + .height(400) + .aspectRatio(1) + .flexShrink(1) + + Text($r('app.string.nfcTips')) + .fontFamily('HarmonyHeiTi') + .fontWeight(FontWeight.Regular) + .fontSize(12) + .lineHeight(19) + .fontColor('#182431') + .margin({top: 8, bottom: 24, left: 12, right: 12}) + .opacity(0.6) + .textAlign(TextAlign.Center) + + ItemGroup() { + SubItemToggle({ + title: $r('app.string.NFC') + }) + } + } + .backgroundColor($r('sys.color.ohos_id_color_sub_background')) + .padding({left: 12, right: 12}) + } + .scrollBar(BarState.Off) + .width('100%') + .height('100%') + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/ets/settinglist/SettingList.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/ets/settinglist/SettingList.ets new file mode 100644 index 0000000000000000000000000000000000000000..79ec22d19a3c3ba8d0386abc2d51c3fd278ee7ea --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/ets/settinglist/SettingList.ets @@ -0,0 +1,148 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { MainItem } from '../components/MainItem' +import { ItemGroup } from '../components/ItemGroup' +import { SearchBox } from '../components/SearchBox' +import { MoreConnectionsItem } from '../moreconnections/MoreConnectionsItem' +import { WlanSettingItem } from '../wlan/WlanSettingItem' + +@Component +export struct SettingList { + @Builder CustomDivider() { + Divider() + .strokeWidth('1px') + .color($r('sys.color.ohos_id_color_list_separator')) + .margin({left: 48, right: 8}) + } + + build() { + List({space: 12}) { + ListItem() { + SearchBox() + } + .padding({top: 8, bottom: 8}) + .width('100%') + + ListItem() { + ItemGroup() { + WlanSettingItem() + + this.CustomDivider() + + MainItem({ + title: $r('app.string.bluetoothTab'), + tag: $r('app.string.enabled'), + icon: $r('app.media.blueTooth'), + }) + + this.CustomDivider() + + MainItem({ + title: $r('app.string.mobileData'), + icon: $r('app.media.mobileData'), + }) + + this.CustomDivider() + + MoreConnectionsItem() + } + } + + ListItem() { + ItemGroup() { + MainItem({ + title: $r('app.string.brightnessTab'), + icon: $r('app.media.displayAndBrightness'), + }) + } + } + + ListItem() { + ItemGroup() { + MainItem({ + title: $r('app.string.volumeControlTab'), + icon: $r('app.media.volume'), + }) + } + } + + ListItem() { + ItemGroup() { + MainItem({ + title: $r('app.string.biometricsAndPassword'), + icon: $r('app.media.biometricsAndPassword'), + }) + + this.CustomDivider() + + MainItem({ + title: $r('app.string.applyTab'), + icon: $r('app.media.application'), + }) + + this.CustomDivider() + + MainItem({ + title: $r('app.string.storageTab'), + icon: $r('app.media.storage'), + }) + + this.CustomDivider() + + MainItem({ + title: $r('app.string.security'), + icon: $r('app.media.security'), + }) + + this.CustomDivider() + + MainItem({ + title: $r('app.string.privacy'), + icon: $r('app.media.privacy'), + }) + } + } + + ListItem() { + ItemGroup() { + MainItem({ + title: $r('app.string.usersAccountsTab'), + icon: $r('app.media.userAccounts'), + }) + + this.CustomDivider() + + MainItem({ + title: $r('app.string.systemTab'), + icon: $r('app.media.system'), + }) + + this.CustomDivider() + + MainItem({ + title: $r('app.string.aboutTab'), + icon: $r('app.media.aboutDevice'), + }) + } + } + + } + .padding({left: 12, right: 12}) + .width('100%') + .height('100%') + .backgroundColor($r('sys.color.ohos_id_color_sub_background')) + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/ets/wlan/WlanMoreSetting.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/ets/wlan/WlanMoreSetting.ets new file mode 100644 index 0000000000000000000000000000000000000000..bf6a9ac22f1f236f5ee4919782fa58710821a57b --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/ets/wlan/WlanMoreSetting.ets @@ -0,0 +1,101 @@ +/** + * Copyright (c) 2021-2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { SubItemArrow } from '../components/SubItemArrow' +import { SubItemToggle } from '../components/SubItemToggle' +import { ItemGroup } from '../components/ItemGroup' +import { ItemDescription } from '../components/ItemDescription' + +@Component +export struct WlanMoreSettingItem { + @State itemTitle: string = '' + @LocalStorageLink('selectedLabel') selectedLabel: string = '' + + aboutToAppear() { + this.itemTitle = getContext().resourceManager.getStringSync($r('app.string.moreWlanSettings').id) + } + + build() { + NavRouter() { + SubItemArrow({ title: $r('app.string.moreWlanSettings') }) + + NavDestination() { + WlanMoreSetting() + } + .title(this.itemTitle) + .backgroundColor($r('sys.color.ohos_id_color_sub_background')) + } + .onStateChange((isActivated: boolean) => { + if (isActivated) { + this.selectedLabel = 'WLAN' + } + }) + } +} + +@Component +export struct WlanMoreSetting { + build() { + Scroll() { + Column() { + ItemGroup() { + SubItemArrow({ + title: $r('app.string.wlanPlus'), + tag: $r('app.string.enabled') + }) + } + + ItemDescription({description: $r('app.string.wlanPlusTip')}) + .margin({ + top: 8, + bottom: 24, + left: 12, + right: 12 + }) + + ItemGroup() { + SubItemArrow({ title: $r('app.string.wlanDirect') }) + } + + Blank().height(12) + + ItemGroup() { + SubItemToggle({title: $r('app.string.wlanSecurityCheck')}) + } + + ItemDescription({description: $r('app.string.wlanSecurityCheckTip')}) + .margin({ + top: 8, + bottom: 24, + left: 12, + right: 12 + }) + + ItemGroup() { + SubItemArrow({title: $r('app.string.savedWlan')}) + Divider() + .strokeWidth('1px') + .color($r('sys.color.ohos_id_color_list_separator')) + .margin({left: 12, right: 8}) + SubItemArrow({title: $r('app.string.installCertificates')}) + } + } + .backgroundColor($r('sys.color.ohos_id_color_sub_background')) + .padding({left: 12, right: 12}) + } + .scrollBar(BarState.Off) + .width('100%') + } +} diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/ets/wlan/WlanSettingItem.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/ets/wlan/WlanSettingItem.ets new file mode 100644 index 0000000000000000000000000000000000000000..014d53fa035a70e52eafbc08f603d22ec5223768 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/ets/wlan/WlanSettingItem.ets @@ -0,0 +1,146 @@ +/** + * Copyright (c) 2021-2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { MainItem } from '../components/MainItem' +import { WlanMoreSettingItem } from './WlanMoreSetting' +import { SubItemToggle } from '../components/SubItemToggle' +import { SubItemWifi } from '../components/SubItemWifi' +import { ItemGroup } from '../components/ItemGroup' +import { ItemDescription } from '../components/ItemDescription' + +@Component +export struct WlanSettingItem { + @State itemTitle: string = '' + @LocalStorageLink('selectedLabel') selectedLabel: string = '' + + aboutToAppear() { + this.itemTitle = getContext().resourceManager.getStringSync($r('app.string.wifiTab').id) + } + + build() { + Column() { + NavRouter() { + MainItem({ + title: $r('app.string.wifiTab'), + tag: 'UX', + icon: $r('app.media.wlan'), + label: 'WLAN' + }) + + NavDestination() { + WlanSetting() + } + .title(this.itemTitle) + .backgroundColor($r('sys.color.ohos_id_color_sub_background')) + }.onStateChange((isActivated: boolean) => { + if (isActivated) { + this.selectedLabel = 'WLAN' + } + }) + } + } +} + +@Component +struct WlanSetting { + @Builder CustomDivider() { + Divider() + .strokeWidth('1px') + .color($r('sys.color.ohos_id_color_list_separator')) + .margin({left: 12, right: 8}) + } + + build() { + Column() { + Column() { + ItemGroup() { + SubItemToggle({title: $r('app.string.wifiTab'), isOn: true}) + } + + Row().height(16) + + ItemGroup() { + WlanMoreSettingItem() + } + } + .margin({bottom: 19.5}) + .flexShrink(0) + + Scroll() { + Column() { + ItemDescription({description: $r('app.string.wifiTipConnectedWLAN')}) + .padding({ + left: 12, + right: 12, + bottom: 9.5 + }) + + ItemGroup() { + SubItemWifi({ + title: 'UX', + subTitle: $r('app.string.wifiSummaryConnected'), + isConnected: true, + icon: $r('app.media.ic_wifi_signal_4_dark') + }) + } + + Column() { + ItemDescription({description: $r('app.string.wifiTipValidWLAN')}) + .margin({ + left: 12, + right: 12, + top: 19.5, + bottom: 9.5 + }) + + ItemGroup() { + SubItemWifi({ + title: 'Huwe-yee', + subTitle: $r('app.string.wifiSummaryEncrypted'), + isConnected: false, + icon: $r('app.media.ic_wifi_lock_signal_4_dark') + }) + + this.CustomDivider() + + SubItemWifi({ + title: 'UX-5G', + subTitle: $r('app.string.wifiSummaryOpen'), + isConnected: false, + icon: $r('app.media.ic_wifi_signal_4_dark') + }) + + this.CustomDivider() + + SubItemWifi({ + title: 'E1-AP', + subTitle: $r('app.string.wifiSummarySaveOpen'), + isConnected: false, + icon: $r('app.media.ic_wifi_signal_4_dark') + }) + } + } + } + } + .scrollable(ScrollDirection.Vertical) + .scrollBar(BarState.Off) + .width('100%') + .flexShrink(1) + } + .width('100%') + .height('100%') + .padding({left: 12, right: 12}) + } +} diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/module.json5 b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/module.json5 new file mode 100644 index 0000000000000000000000000000000000000000..f2019c1efbdd45226dde49e0c8605e9eec578441 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/module.json5 @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "module": { + "name": "settingItems", + "type": "har", + "deviceTypes": [ + "default", + "tablet" + ] + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/element/color.json b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/element/color.json new file mode 100644 index 0000000000000000000000000000000000000000..cedd0ca6b574422bb1b42ce3f7a1948493ccd10d --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/element/color.json @@ -0,0 +1,16 @@ +{ + "color": [ + { + "name": "white", + "value": "#FFFFFF" + }, + { + "name": "itemActivated", + "value": "#335291FF" + }, + { + "name": "itemInactivated", + "value": "#FFFFFF" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/element/string.json b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..c2debbd30a814be7ea3d3e9ef30dcfb766d1ad5b --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/element/string.json @@ -0,0 +1,164 @@ +{ + "string": [ + { + "name": "enabled", + "value": "已开启" + }, + { + "name": "disabled", + "value": "已关闭" + }, + { + "name": "settings", + "value": "设置" + }, + { + "name": "searchHint", + "value": "搜索设置项" + }, + { + "name": "wifiTab", + "value": "WLAN" + }, + { + "name": "wifiTipConnectedWLAN", + "value": "已连接WLAN" + }, + { + "name": "wifiTipValidWLAN", + "value": "可用WLAN" + }, + { + "name": "wifiInfoTitleFrequency", + "value": "频率" + }, + { + "name": "wifiSummaryConnected", + "value": "已连接" + }, + { + "name": "wifiSummaryConnecting", + "value": "连接中..." + }, + { + "name": "wifiSummarySaveEncrypted", + "value": "已保存,加密" + }, + { + "name": "wifiSummarySaveOpen", + "value": "已保存,开放" + }, + { + "name": "wifiSummaryEncrypted", + "value": "加密" + }, + { + "name": "wifiSummaryOpen", + "value": "开放" + }, + { + "name": "brightnessTab", + "value": "显示与亮度" + }, + { + "name": "applyTab", + "value": "应用" + }, + { + "name": "aboutTab", + "value": "关于设备" + }, + { + "name": "volumeControlTab", + "value": "声音" + }, + { + "name": "wifiList", + "value": "可用WLAN列表" + }, + { + "name": "usersAccountsTab", + "value": "用户和帐户" + }, + { + "name": "systemTab", + "value": "系统" + }, + { + "name": "privacy", + "value": "隐私" + }, + { + "name": "permissionManager", + "value": "权限管理" + }, + { + "name": "storageTab", + "value": "存储" + }, + { + "name": "security", + "value": "安全" + }, + { + "name": "privacyTab", + "value": "隐私" + }, + { + "name": "biometricsAndPassword", + "value": "生物识别和密码" + }, + { + "name": "moreConnectionsTab", + "value": "更多连接" + }, + { + "name": "NFC", + "value": "NFC" + }, + { + "name": "nfcTips", + "value": "若要进行移动支付、钥匙验证、碰一碰等操作,可将本设备背部触碰其他终端 NFC 感应区。" + }, + { + "name": "bluetoothTab", + "value": "蓝牙" + }, + { + "name": "mobileData", + "value": "移动数据" + }, + { + "name": "moreWlanSettings", + "value": "更多WLAN设置" + }, + { + "name": "wlanPlus", + "value": "WLAN+" + }, + { + "name": "wlanPlusTip", + "value": "提升网络智能连接体验" + }, + { + "name": "wlanDirect", + "value": "WLAN直连" + }, + { + "name": "wlanSecurityCheck", + "value": "WLAN安全检测" + }, + { + "name": "wlanSecurityCheckTip", + "value": "通过管家对已经连接的热点进行联网安全检测,并暂停自动连接存在安全风险的热点" + }, + { + "name": "savedWlan", + "value": "已保存的网络" + }, + { + "name": "installCertificates", + "value": "安装证书" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/aboutDevice.svg b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/aboutDevice.svg new file mode 100644 index 0000000000000000000000000000000000000000..b791703b9985712df84ef09415e59cd7bda72a3b --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/aboutDevice.svg @@ -0,0 +1,16 @@ + + + 编组 14 + + + + + + + + + + + + + \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/application.svg b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/application.svg new file mode 100644 index 0000000000000000000000000000000000000000..7320a5c46e0de6367427fb54220252b61cc81b2a --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/application.svg @@ -0,0 +1,16 @@ + + + 编组 + + + + + + + + + + + + + \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/biometricsAndPassword.svg b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/biometricsAndPassword.svg new file mode 100644 index 0000000000000000000000000000000000000000..957cc6ba35ff1a454f3ec61789c85d08733c06ef --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/biometricsAndPassword.svg @@ -0,0 +1,16 @@ + + + 编组 + + + + + + + + + + + + + \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/blueTooth.svg b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/blueTooth.svg new file mode 100644 index 0000000000000000000000000000000000000000..0fbcf2bd2720f8bc33ce34552ff07b0238523088 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/blueTooth.svg @@ -0,0 +1,16 @@ + + + 编组 + + + + + + + + + + + + + \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/displayAndBrightness.svg b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/displayAndBrightness.svg new file mode 100644 index 0000000000000000000000000000000000000000..c19e018d71201ed17e239da5851bde5a9cfaf12a --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/displayAndBrightness.svg @@ -0,0 +1,16 @@ + + + 编组 + + + + + + + + + + + + + \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/ic_nfc.png b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/ic_nfc.png new file mode 100644 index 0000000000000000000000000000000000000000..1961e98eb0ed19bd01489ac38cfbf5d559ce8efe Binary files /dev/null and b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/ic_nfc.png differ diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/ic_search.svg b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/ic_search.svg new file mode 100644 index 0000000000000000000000000000000000000000..503c1a29b1157729e90afa50e3054b16bdb6e5de --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/ic_search.svg @@ -0,0 +1,15 @@ + + + ic_public_search + + + + + + + + + + + + \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/ic_settings_arrow.svg b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/ic_settings_arrow.svg new file mode 100644 index 0000000000000000000000000000000000000000..ff6293ce432d79ed6c50d61d430ee79fe2e2dad2 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/ic_settings_arrow.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/ic_settings_more_connections.svg b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/ic_settings_more_connections.svg new file mode 100644 index 0000000000000000000000000000000000000000..7e654cf2401d3f4c5db1c971fcefb28af119ef2a --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/ic_settings_more_connections.svg @@ -0,0 +1,21 @@ + + + 更多连接 + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/ic_wifi_lock_signal_1_dark.svg b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/ic_wifi_lock_signal_1_dark.svg new file mode 100644 index 0000000000000000000000000000000000000000..5aed71a3db6119152bed111a0c20838b480d0af1 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/ic_wifi_lock_signal_1_dark.svg @@ -0,0 +1,44 @@ + + + ic_wifi_lock_signal_1_dark + + + + + + + + \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/ic_wifi_lock_signal_2_dark.svg b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/ic_wifi_lock_signal_2_dark.svg new file mode 100644 index 0000000000000000000000000000000000000000..6ca86416cd4b621b5ff2a1595b51cddd38416562 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/ic_wifi_lock_signal_2_dark.svg @@ -0,0 +1,43 @@ + + + ic_wifi_lock_signal_2_dark + + + + + + + + \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/ic_wifi_lock_signal_3_dark.svg b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/ic_wifi_lock_signal_3_dark.svg new file mode 100644 index 0000000000000000000000000000000000000000..300de1c5c24be0c2437051c000173f14d830deb1 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/ic_wifi_lock_signal_3_dark.svg @@ -0,0 +1,42 @@ + + + ic_wifi_lock_signal_3_dark + + + + + + + + \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/ic_wifi_lock_signal_4_dark.svg b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/ic_wifi_lock_signal_4_dark.svg new file mode 100644 index 0000000000000000000000000000000000000000..0b4d6fd34469eb0214eb06925f6bd2b13c2d6917 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/ic_wifi_lock_signal_4_dark.svg @@ -0,0 +1,37 @@ + + + + + + + + + + diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/ic_wifi_signal_1_dark.svg b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/ic_wifi_signal_1_dark.svg new file mode 100644 index 0000000000000000000000000000000000000000..420b4a9c83973fca6fc2a8aaf4ae0cb0abea5948 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/ic_wifi_signal_1_dark.svg @@ -0,0 +1,39 @@ + + + ic_wifi_signal_1_dark + + + + + + + \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/ic_wifi_signal_2_dark.svg b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/ic_wifi_signal_2_dark.svg new file mode 100644 index 0000000000000000000000000000000000000000..a3428ea812bedf447a5be7082affcf2ea20791c9 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/ic_wifi_signal_2_dark.svg @@ -0,0 +1,38 @@ + + + ic_wifi_signal_2_dark + + + + + + + \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/ic_wifi_signal_3_dark.svg b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/ic_wifi_signal_3_dark.svg new file mode 100644 index 0000000000000000000000000000000000000000..dd4cc95052e1bed1d4af95b886c0f017e76c8fdf --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/ic_wifi_signal_3_dark.svg @@ -0,0 +1,37 @@ + + + ic_wifi_signal_3_dark + + + + + + + \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/ic_wifi_signal_4_dark.svg b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/ic_wifi_signal_4_dark.svg new file mode 100644 index 0000000000000000000000000000000000000000..0df741d1ed0720872608fac707326a499ae691c8 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/ic_wifi_signal_4_dark.svg @@ -0,0 +1,34 @@ + + + + + + + + + diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/icon.png b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ce307a8827bd75456441ceb57d530e4c8d45d36c Binary files /dev/null and b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/icon.png differ diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/mobileData.svg b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/mobileData.svg new file mode 100644 index 0000000000000000000000000000000000000000..3af781748dbcef004e85fc31d92da3175b21c6c1 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/mobileData.svg @@ -0,0 +1,19 @@ + + + 编组 10 + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/privacy.svg b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/privacy.svg new file mode 100644 index 0000000000000000000000000000000000000000..132ef3601b2e5c139bb2b2f709bfe86ead71ba58 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/privacy.svg @@ -0,0 +1,16 @@ + + + 编组 + + + + + + + + + + + + + \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/security.svg b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/security.svg new file mode 100644 index 0000000000000000000000000000000000000000..9bc0815ce208e2905e33bbcdbcd4718dd753f3a9 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/security.svg @@ -0,0 +1,11 @@ + + + 安全 + + + + + + + + \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/storage.svg b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/storage.svg new file mode 100644 index 0000000000000000000000000000000000000000..23503ea3438b7927a0704b2554ac0a7181295cb6 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/storage.svg @@ -0,0 +1,16 @@ + + + 编组 + + + + + + + + + + + + + \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/system.svg b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/system.svg new file mode 100644 index 0000000000000000000000000000000000000000..fa4bec50cf6bb305c0656e7871affcf337235cd1 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/system.svg @@ -0,0 +1,16 @@ + + + 编组 + + + + + + + + + + + + + \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/userAccounts.svg b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/userAccounts.svg new file mode 100644 index 0000000000000000000000000000000000000000..d7b2a6a39562bda716644994b3fb2e4c3a4486fd --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/userAccounts.svg @@ -0,0 +1,16 @@ + + + 编组 + + + + + + + + + + + + + \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/volume.svg b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/volume.svg new file mode 100644 index 0000000000000000000000000000000000000000..bf1b652958dc1f55f688d1fd4d0c1776671aebd8 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/volume.svg @@ -0,0 +1,16 @@ + + + 编组 + + + + + + + + + + + + + \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/wlan.svg b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/wlan.svg new file mode 100644 index 0000000000000000000000000000000000000000..be12071bad8d8780bf172fb777cc7bf5c76e5a57 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/base/media/wlan.svg @@ -0,0 +1,16 @@ + + + 编组 17 + + + + + + + + + + + + + \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/en_US/element/string.json b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/en_US/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..82f7f1fba4f4c0429af4533ecf46fd8b36a2b225 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/en_US/element/string.json @@ -0,0 +1,164 @@ +{ + "string": [ + { + "name": "enabled", + "value": "On" + }, + { + "name": "disabled", + "value": "Off" + }, + { + "name": "settings", + "value": "Settings" + }, + { + "name": "searchHint", + "value": "Search" + }, + { + "name": "wifiTab", + "value": "WLAN" + }, + { + "name": "wifiTipConnectedWLAN", + "value": "Connected WLAN" + }, + { + "name": "wifiTipValidWLAN", + "value": "Valid WLAN" + }, + { + "name": "wifiInfoTitleFrequency", + "value": "Frequency" + }, + { + "name": "wifiSummaryConnected", + "value": "Connected" + }, + { + "name": "wifiSummaryConnecting", + "value": "Connecting..." + }, + { + "name": "wifiSummarySaveEncrypted", + "value": "Saved, Encrypted" + }, + { + "name": "wifiSummarySaveOpen", + "value": "Saved, Open" + }, + { + "name": "wifiSummaryEncrypted", + "value": "Encrypted" + }, + { + "name": "wifiSummaryOpen", + "value": "Open" + }, + { + "name": "brightnessTab", + "value": "Display & Brightness" + }, + { + "name": "applyTab", + "value": "Apps" + }, + { + "name": "aboutTab", + "value": "About Device" + }, + { + "name": "volumeControlTab", + "value": "Sounds" + }, + { + "name": "wifiList", + "value": "WLAN-List which can be used" + }, + { + "name": "usersAccountsTab", + "value": "Users & Accounts" + }, + { + "name": "systemTab", + "value": "System & Updates" + }, + { + "name": "privacy", + "value": "Privacy" + }, + { + "name": "permissionManager", + "value": "Permission Manager" + }, + { + "name": "storageTab", + "value": "Storage" + }, + { + "name": "security", + "value": "security" + }, + { + "name": "privacyTab", + "value": "privacyTab" + }, + { + "name": "biometricsAndPassword", + "value": "Biometrics & Password" + }, + { + "name": "moreConnectionsTab", + "value": "More Connections" + }, + { + "name": "NFC", + "value": "NFC" + }, + { + "name": "nfcTips", + "value": "To perform mobile payment, key verification, and touch, touch the back of the device to the NFC sensor area of another terminal." + }, + { + "name": "bluetoothTab", + "value": "Bluetooth" + }, + { + "name": "mobileData", + "value": "Mobile Data" + }, + { + "name": "moreWlanSettings", + "value": "More settings" + }, + { + "name": "wlanPlus", + "value": "WLAN+" + }, + { + "name": "wlanPlusTip", + "value": "Automatically switch between WLAN and mobile data to stay online." + }, + { + "name": "wlanDirect", + "value": "WLAN Direct" + }, + { + "name": "wlanSecurityCheck", + "value": "WLAN security check" + }, + { + "name": "wlanSecurityCheckTip", + "value": "Check the security of connected WLAN networks, and avoid connecting to known networks that pose security risks." + }, + { + "name": "savedWlan", + "value": "Saved WLAN" + }, + { + "name": "installCertificates", + "value": "Install certificates" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/zh_CN/element/string.json b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/zh_CN/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..c2debbd30a814be7ea3d3e9ef30dcfb766d1ad5b --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/features/settingitems/src/main/resources/zh_CN/element/string.json @@ -0,0 +1,164 @@ +{ + "string": [ + { + "name": "enabled", + "value": "已开启" + }, + { + "name": "disabled", + "value": "已关闭" + }, + { + "name": "settings", + "value": "设置" + }, + { + "name": "searchHint", + "value": "搜索设置项" + }, + { + "name": "wifiTab", + "value": "WLAN" + }, + { + "name": "wifiTipConnectedWLAN", + "value": "已连接WLAN" + }, + { + "name": "wifiTipValidWLAN", + "value": "可用WLAN" + }, + { + "name": "wifiInfoTitleFrequency", + "value": "频率" + }, + { + "name": "wifiSummaryConnected", + "value": "已连接" + }, + { + "name": "wifiSummaryConnecting", + "value": "连接中..." + }, + { + "name": "wifiSummarySaveEncrypted", + "value": "已保存,加密" + }, + { + "name": "wifiSummarySaveOpen", + "value": "已保存,开放" + }, + { + "name": "wifiSummaryEncrypted", + "value": "加密" + }, + { + "name": "wifiSummaryOpen", + "value": "开放" + }, + { + "name": "brightnessTab", + "value": "显示与亮度" + }, + { + "name": "applyTab", + "value": "应用" + }, + { + "name": "aboutTab", + "value": "关于设备" + }, + { + "name": "volumeControlTab", + "value": "声音" + }, + { + "name": "wifiList", + "value": "可用WLAN列表" + }, + { + "name": "usersAccountsTab", + "value": "用户和帐户" + }, + { + "name": "systemTab", + "value": "系统" + }, + { + "name": "privacy", + "value": "隐私" + }, + { + "name": "permissionManager", + "value": "权限管理" + }, + { + "name": "storageTab", + "value": "存储" + }, + { + "name": "security", + "value": "安全" + }, + { + "name": "privacyTab", + "value": "隐私" + }, + { + "name": "biometricsAndPassword", + "value": "生物识别和密码" + }, + { + "name": "moreConnectionsTab", + "value": "更多连接" + }, + { + "name": "NFC", + "value": "NFC" + }, + { + "name": "nfcTips", + "value": "若要进行移动支付、钥匙验证、碰一碰等操作,可将本设备背部触碰其他终端 NFC 感应区。" + }, + { + "name": "bluetoothTab", + "value": "蓝牙" + }, + { + "name": "mobileData", + "value": "移动数据" + }, + { + "name": "moreWlanSettings", + "value": "更多WLAN设置" + }, + { + "name": "wlanPlus", + "value": "WLAN+" + }, + { + "name": "wlanPlusTip", + "value": "提升网络智能连接体验" + }, + { + "name": "wlanDirect", + "value": "WLAN直连" + }, + { + "name": "wlanSecurityCheck", + "value": "WLAN安全检测" + }, + { + "name": "wlanSecurityCheckTip", + "value": "通过管家对已经连接的热点进行联网安全检测,并暂停自动连接存在安全风险的热点" + }, + { + "name": "savedWlan", + "value": "已保存的网络" + }, + { + "name": "installCertificates", + "value": "安装证书" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/hvigor/hvigor-config.json5 b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/hvigor/hvigor-config.json5 new file mode 100644 index 0000000000000000000000000000000000000000..ee55ced3113e60a428bda542a98e77b149cfe29b --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/hvigor/hvigor-config.json5 @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "hvigorVersion": "3.0.9-s", + "dependencies": { + "@ohos/hvigor-ohos-plugin": "3.0.9-s" + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/hvigor/hvigor-wrapper.js b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/hvigor/hvigor-wrapper.js new file mode 100644 index 0000000000000000000000000000000000000000..994f22987bd0739b9faa07c966b066c2d9218602 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/hvigor/hvigor-wrapper.js @@ -0,0 +1,2 @@ +"use strict";var e=require("fs"),t=require("path"),n=require("os"),r=require("crypto"),u=require("child_process"),o=require("constants"),i=require("stream"),s=require("util"),c=require("assert"),a=require("tty"),l=require("zlib"),f=require("net");function d(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var D=d(e),p=d(t),E=d(n),m=d(r),h=d(u),y=d(o),C=d(i),F=d(s),g=d(c),A=d(a),v=d(l),S=d(f),w="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},O={},b={},_={},B=w&&w.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(_,"__esModule",{value:!0}),_.isMac=_.isLinux=_.isWindows=void 0;const P=B(E.default),k="Windows_NT",x="Linux",N="Darwin";_.isWindows=function(){return P.default.type()===k},_.isLinux=function(){return P.default.type()===x},_.isMac=function(){return P.default.type()===N};var I={},T=w&&w.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var u=Object.getOwnPropertyDescriptor(t,n);u&&!("get"in u?!t.__esModule:u.writable||u.configurable)||(u={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,u)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),R=w&&w.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),M=w&&w.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&T(t,e,n);return R(t,e),t};Object.defineProperty(I,"__esModule",{value:!0}),I.hash=void 0;const L=M(m.default);I.hash=function(e,t="md5"){return L.createHash(t).update(e,"utf-8").digest("hex")},function(e){var t=w&&w.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var u=Object.getOwnPropertyDescriptor(t,n);u&&!("get"in u?!t.__esModule:u.writable||u.configurable)||(u={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,u)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),n=w&&w.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),r=w&&w.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(null!=e)for(var u in e)"default"!==u&&Object.prototype.hasOwnProperty.call(e,u)&&t(r,e,u);return n(r,e),r};Object.defineProperty(e,"__esModule",{value:!0}),e.HVIGOR_BOOT_JS_FILE_PATH=e.HVIGOR_PROJECT_DEPENDENCY_PACKAGE_JSON_PATH=e.HVIGOR_PROJECT_DEPENDENCIES_HOME=e.HVIGOR_PROJECT_WRAPPER_HOME=e.HVIGOR_PROJECT_NAME=e.HVIGOR_PROJECT_ROOT_DIR=e.HVIGOR_PROJECT_CACHES_HOME=e.HVIGOR_PNPM_STORE_PATH=e.HVIGOR_WRAPPER_PNPM_SCRIPT_PATH=e.HVIGOR_WRAPPER_TOOLS_HOME=e.HVIGOR_USER_HOME=e.DEFAULT_PACKAGE_JSON=e.DEFAULT_HVIGOR_CONFIG_JSON_FILE_NAME=e.PNPM=e.HVIGOR=e.NPM_TOOL=e.PNPM_TOOL=e.HVIGOR_ENGINE_PACKAGE_NAME=void 0;const u=r(p.default),o=r(E.default),i=_,s=I;e.HVIGOR_ENGINE_PACKAGE_NAME="@ohos/hvigor",e.PNPM_TOOL=(0,i.isWindows)()?"pnpm.cmd":"pnpm",e.NPM_TOOL=(0,i.isWindows)()?"npm.cmd":"npm",e.HVIGOR="hvigor",e.PNPM="pnpm",e.DEFAULT_HVIGOR_CONFIG_JSON_FILE_NAME="hvigor-config.json5",e.DEFAULT_PACKAGE_JSON="package.json",e.HVIGOR_USER_HOME=u.resolve(o.homedir(),".hvigor"),e.HVIGOR_WRAPPER_TOOLS_HOME=u.resolve(e.HVIGOR_USER_HOME,"wrapper","tools"),e.HVIGOR_WRAPPER_PNPM_SCRIPT_PATH=u.resolve(e.HVIGOR_WRAPPER_TOOLS_HOME,"node_modules",".bin",e.PNPM_TOOL),e.HVIGOR_PNPM_STORE_PATH=u.resolve(e.HVIGOR_USER_HOME,"caches"),e.HVIGOR_PROJECT_CACHES_HOME=u.resolve(e.HVIGOR_USER_HOME,"project_caches"),e.HVIGOR_PROJECT_ROOT_DIR=process.cwd(),e.HVIGOR_PROJECT_NAME=u.basename((0,s.hash)(e.HVIGOR_PROJECT_ROOT_DIR)),e.HVIGOR_PROJECT_WRAPPER_HOME=u.resolve(e.HVIGOR_PROJECT_ROOT_DIR,e.HVIGOR),e.HVIGOR_PROJECT_DEPENDENCIES_HOME=u.resolve(e.HVIGOR_PROJECT_CACHES_HOME,e.HVIGOR_PROJECT_NAME,"workspace"),e.HVIGOR_PROJECT_DEPENDENCY_PACKAGE_JSON_PATH=u.resolve(e.HVIGOR_PROJECT_DEPENDENCIES_HOME,e.DEFAULT_PACKAGE_JSON),e.HVIGOR_BOOT_JS_FILE_PATH=u.resolve(e.HVIGOR_PROJECT_DEPENDENCIES_HOME,"node_modules","@ohos","hvigor","bin","hvigor.js")}(b);var j={},$={};Object.defineProperty($,"__esModule",{value:!0}),$.logInfoPrintConsole=$.logErrorAndExit=void 0,$.logErrorAndExit=function(e){e instanceof Error?console.error(e.message):console.error(e),process.exit(-1)},$.logInfoPrintConsole=function(e){console.log(e)};var H=w&&w.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var u=Object.getOwnPropertyDescriptor(t,n);u&&!("get"in u?!t.__esModule:u.writable||u.configurable)||(u={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,u)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),J=w&&w.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),G=w&&w.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&H(t,e,n);return J(t,e),t},V=w&&w.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(j,"__esModule",{value:!0}),j.isFileExists=j.offlinePluginConversion=j.executeCommand=j.getNpmPath=j.hasNpmPackInPaths=void 0;const U=h.default,W=G(p.default),z=b,K=$,q=V(D.default);j.hasNpmPackInPaths=function(e,t){try{return require.resolve(e,{paths:[...t]}),!0}catch(e){return!1}},j.getNpmPath=function(){const e=process.execPath;return W.join(W.dirname(e),z.NPM_TOOL)},j.executeCommand=function(e,t,n){0!==(0,U.spawnSync)(e,t,n).status&&(0,K.logErrorAndExit)(`Error: ${e} ${t} execute failed.See above for details.`)},j.offlinePluginConversion=function(e,t){return t.startsWith("file:")||t.endsWith(".tgz")?W.resolve(e,z.HVIGOR,t.replace("file:","")):t},j.isFileExists=function(e){return q.default.existsSync(e)&&q.default.statSync(e).isFile()},function(e){var t=w&&w.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var u=Object.getOwnPropertyDescriptor(t,n);u&&!("get"in u?!t.__esModule:u.writable||u.configurable)||(u={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,u)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),n=w&&w.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),r=w&&w.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(null!=e)for(var u in e)"default"!==u&&Object.prototype.hasOwnProperty.call(e,u)&&t(r,e,u);return n(r,e),r},u=w&&w.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,"__esModule",{value:!0}),e.executeInstallPnpm=e.isPnpmAvailable=e.environmentHandler=e.checkNpmConifg=e.PNPM_VERSION=void 0;const o=r(D.default),i=b,s=j,c=r(p.default),a=$,l=h.default,f=u(E.default);e.PNPM_VERSION="7.30.0",e.checkNpmConifg=function(){const e=c.resolve(i.HVIGOR_PROJECT_ROOT_DIR,".npmrc"),t=c.resolve(f.default.homedir(),".npmrc");if((0,s.isFileExists)(e)||(0,s.isFileExists)(t))return;const n=(0,s.getNpmPath)(),r=(0,l.spawnSync)(n,["config","get","prefix"],{cwd:i.HVIGOR_PROJECT_ROOT_DIR});if(0!==r.status||!r.stdout)return void(0,a.logErrorAndExit)("Error: The hvigor depends on the npmrc file. Configure the npmrc file first.");const u=c.resolve(`${r.stdout}`.replace(/[\r\n]/gi,""),".npmrc");(0,s.isFileExists)(u)||(0,a.logErrorAndExit)("Error: The hvigor depends on the npmrc file. Configure the npmrc file first.")},e.environmentHandler=function(){process.env["npm_config_update-notifier"]="false"},e.isPnpmAvailable=function(){return!!o.existsSync(i.HVIGOR_WRAPPER_PNPM_SCRIPT_PATH)&&(0,s.hasNpmPackInPaths)("pnpm",[i.HVIGOR_WRAPPER_TOOLS_HOME])},e.executeInstallPnpm=function(){(0,a.logInfoPrintConsole)(`Installing pnpm@${e.PNPM_VERSION}...`);const t=(0,s.getNpmPath)();!function(){const t=c.resolve(i.HVIGOR_WRAPPER_TOOLS_HOME,i.DEFAULT_PACKAGE_JSON);try{o.existsSync(i.HVIGOR_WRAPPER_TOOLS_HOME)||o.mkdirSync(i.HVIGOR_WRAPPER_TOOLS_HOME,{recursive:!0});const n={dependencies:{}};n.dependencies[i.PNPM]=e.PNPM_VERSION,o.writeFileSync(t,JSON.stringify(n))}catch(e){(0,a.logErrorAndExit)(`Error: EPERM: operation not permitted,create ${t} failed.`)}}(),(0,s.executeCommand)(t,["install","pnpm"],{cwd:i.HVIGOR_WRAPPER_TOOLS_HOME,stdio:["inherit","inherit","inherit"],env:process.env}),(0,a.logInfoPrintConsole)("Pnpm install success.")}}(O);var Y={},X={},Z={},Q={};Object.defineProperty(Q,"__esModule",{value:!0}),Q.Unicode=void 0;class ee{}Q.Unicode=ee,ee.Space_Separator=/[\u1680\u2000-\u200A\u202F\u205F\u3000]/,ee.ID_Start=/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/,ee.ID_Continue=/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDE00-\uDE3E\uDE47\uDE50-\uDE83\uDE86-\uDE99\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/,Object.defineProperty(Z,"__esModule",{value:!0}),Z.JudgeUtil=void 0;const te=Q;Z.JudgeUtil=class{static isIgnoreChar(e){return"string"==typeof e&&("\t"===e||"\v"===e||"\f"===e||" "===e||" "===e||"\ufeff"===e||"\n"===e||"\r"===e||"\u2028"===e||"\u2029"===e)}static isSpaceSeparator(e){return"string"==typeof e&&te.Unicode.Space_Separator.test(e)}static isIdStartChar(e){return"string"==typeof e&&(e>="a"&&e<="z"||e>="A"&&e<="Z"||"$"===e||"_"===e||te.Unicode.ID_Start.test(e))}static isIdContinueChar(e){return"string"==typeof e&&(e>="a"&&e<="z"||e>="A"&&e<="Z"||e>="0"&&e<="9"||"$"===e||"_"===e||"‌"===e||"‍"===e||te.Unicode.ID_Continue.test(e))}static isDigitWithoutZero(e){return/[1-9]/.test(e)}static isDigit(e){return"string"==typeof e&&/[0-9]/.test(e)}static isHexDigit(e){return"string"==typeof e&&/[0-9A-Fa-f]/.test(e)}};var ne={},re={fromCallback:function(e){return Object.defineProperty((function(...t){if("function"!=typeof t[t.length-1])return new Promise(((n,r)=>{e.call(this,...t,((e,t)=>null!=e?r(e):n(t)))}));e.apply(this,t)}),"name",{value:e.name})},fromPromise:function(e){return Object.defineProperty((function(...t){const n=t[t.length-1];if("function"!=typeof n)return e.apply(this,t);e.apply(this,t.slice(0,-1)).then((e=>n(null,e)),n)}),"name",{value:e.name})}},ue=y.default,oe=process.cwd,ie=null,se=process.env.GRACEFUL_FS_PLATFORM||process.platform;process.cwd=function(){return ie||(ie=oe.call(process)),ie};try{process.cwd()}catch(e){}if("function"==typeof process.chdir){var ce=process.chdir;process.chdir=function(e){ie=null,ce.call(process,e)},Object.setPrototypeOf&&Object.setPrototypeOf(process.chdir,ce)}var ae=function(e){ue.hasOwnProperty("O_SYMLINK")&&process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)&&function(e){e.lchmod=function(t,n,r){e.open(t,ue.O_WRONLY|ue.O_SYMLINK,n,(function(t,u){t?r&&r(t):e.fchmod(u,n,(function(t){e.close(u,(function(e){r&&r(t||e)}))}))}))},e.lchmodSync=function(t,n){var r,u=e.openSync(t,ue.O_WRONLY|ue.O_SYMLINK,n),o=!0;try{r=e.fchmodSync(u,n),o=!1}finally{if(o)try{e.closeSync(u)}catch(e){}else e.closeSync(u)}return r}}(e);e.lutimes||function(e){ue.hasOwnProperty("O_SYMLINK")&&e.futimes?(e.lutimes=function(t,n,r,u){e.open(t,ue.O_SYMLINK,(function(t,o){t?u&&u(t):e.futimes(o,n,r,(function(t){e.close(o,(function(e){u&&u(t||e)}))}))}))},e.lutimesSync=function(t,n,r){var u,o=e.openSync(t,ue.O_SYMLINK),i=!0;try{u=e.futimesSync(o,n,r),i=!1}finally{if(i)try{e.closeSync(o)}catch(e){}else e.closeSync(o)}return u}):e.futimes&&(e.lutimes=function(e,t,n,r){r&&process.nextTick(r)},e.lutimesSync=function(){})}(e);e.chown=r(e.chown),e.fchown=r(e.fchown),e.lchown=r(e.lchown),e.chmod=t(e.chmod),e.fchmod=t(e.fchmod),e.lchmod=t(e.lchmod),e.chownSync=u(e.chownSync),e.fchownSync=u(e.fchownSync),e.lchownSync=u(e.lchownSync),e.chmodSync=n(e.chmodSync),e.fchmodSync=n(e.fchmodSync),e.lchmodSync=n(e.lchmodSync),e.stat=o(e.stat),e.fstat=o(e.fstat),e.lstat=o(e.lstat),e.statSync=i(e.statSync),e.fstatSync=i(e.fstatSync),e.lstatSync=i(e.lstatSync),e.chmod&&!e.lchmod&&(e.lchmod=function(e,t,n){n&&process.nextTick(n)},e.lchmodSync=function(){});e.chown&&!e.lchown&&(e.lchown=function(e,t,n,r){r&&process.nextTick(r)},e.lchownSync=function(){});"win32"===se&&(e.rename="function"!=typeof e.rename?e.rename:function(t){function n(n,r,u){var o=Date.now(),i=0;t(n,r,(function s(c){if(c&&("EACCES"===c.code||"EPERM"===c.code||"EBUSY"===c.code)&&Date.now()-o<6e4)return setTimeout((function(){e.stat(r,(function(e,o){e&&"ENOENT"===e.code?t(n,r,s):u(c)}))}),i),void(i<100&&(i+=10));u&&u(c)}))}return Object.setPrototypeOf&&Object.setPrototypeOf(n,t),n}(e.rename));function t(t){return t?function(n,r,u){return t.call(e,n,r,(function(e){s(e)&&(e=null),u&&u.apply(this,arguments)}))}:t}function n(t){return t?function(n,r){try{return t.call(e,n,r)}catch(e){if(!s(e))throw e}}:t}function r(t){return t?function(n,r,u,o){return t.call(e,n,r,u,(function(e){s(e)&&(e=null),o&&o.apply(this,arguments)}))}:t}function u(t){return t?function(n,r,u){try{return t.call(e,n,r,u)}catch(e){if(!s(e))throw e}}:t}function o(t){return t?function(n,r,u){function o(e,t){t&&(t.uid<0&&(t.uid+=4294967296),t.gid<0&&(t.gid+=4294967296)),u&&u.apply(this,arguments)}return"function"==typeof r&&(u=r,r=null),r?t.call(e,n,r,o):t.call(e,n,o)}:t}function i(t){return t?function(n,r){var u=r?t.call(e,n,r):t.call(e,n);return u&&(u.uid<0&&(u.uid+=4294967296),u.gid<0&&(u.gid+=4294967296)),u}:t}function s(e){return!e||("ENOSYS"===e.code||!(process.getuid&&0===process.getuid()||"EINVAL"!==e.code&&"EPERM"!==e.code))}e.read="function"!=typeof e.read?e.read:function(t){function n(n,r,u,o,i,s){var c;if(s&&"function"==typeof s){var a=0;c=function(l,f,d){if(l&&"EAGAIN"===l.code&&a<10)return a++,t.call(e,n,r,u,o,i,c);s.apply(this,arguments)}}return t.call(e,n,r,u,o,i,c)}return Object.setPrototypeOf&&Object.setPrototypeOf(n,t),n}(e.read),e.readSync="function"!=typeof e.readSync?e.readSync:(c=e.readSync,function(t,n,r,u,o){for(var i=0;;)try{return c.call(e,t,n,r,u,o)}catch(e){if("EAGAIN"===e.code&&i<10){i++;continue}throw e}});var c};var le=C.default.Stream,fe=function(e){return{ReadStream:function t(n,r){if(!(this instanceof t))return new t(n,r);le.call(this);var u=this;this.path=n,this.fd=null,this.readable=!0,this.paused=!1,this.flags="r",this.mode=438,this.bufferSize=65536,r=r||{};for(var o=Object.keys(r),i=0,s=o.length;ithis.end)throw new Error("start must be <= end");this.pos=this.start}if(null!==this.fd)return void process.nextTick((function(){u._read()}));e.open(this.path,this.flags,this.mode,(function(e,t){if(e)return u.emit("error",e),void(u.readable=!1);u.fd=t,u.emit("open",t),u._read()}))},WriteStream:function t(n,r){if(!(this instanceof t))return new t(n,r);le.call(this),this.path=n,this.fd=null,this.writable=!0,this.flags="w",this.encoding="binary",this.mode=438,this.bytesWritten=0,r=r||{};for(var u=Object.keys(r),o=0,i=u.length;o= zero");this.pos=this.start}this.busy=!1,this._queue=[],null===this.fd&&(this._open=e.open,this._queue.push([this._open,this.path,this.flags,this.mode,void 0]),this.flush())}}};var de=function(e){if(null===e||"object"!=typeof e)return e;if(e instanceof Object)var t={__proto__:De(e)};else t=Object.create(null);return Object.getOwnPropertyNames(e).forEach((function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(e,n))})),t},De=Object.getPrototypeOf||function(e){return e.__proto__};var pe,Ee,me=D.default,he=ae,ye=fe,Ce=de,Fe=F.default;function ge(e,t){Object.defineProperty(e,pe,{get:function(){return t}})}"function"==typeof Symbol&&"function"==typeof Symbol.for?(pe=Symbol.for("graceful-fs.queue"),Ee=Symbol.for("graceful-fs.previous")):(pe="___graceful-fs.queue",Ee="___graceful-fs.previous");var Ae=function(){};if(Fe.debuglog?Ae=Fe.debuglog("gfs4"):/\bgfs4\b/i.test(process.env.NODE_DEBUG||"")&&(Ae=function(){var e=Fe.format.apply(Fe,arguments);e="GFS4: "+e.split(/\n/).join("\nGFS4: "),console.error(e)}),!me[pe]){var ve=w[pe]||[];ge(me,ve),me.close=function(e){function t(t,n){return e.call(me,t,(function(e){e||_e(),"function"==typeof n&&n.apply(this,arguments)}))}return Object.defineProperty(t,Ee,{value:e}),t}(me.close),me.closeSync=function(e){function t(t){e.apply(me,arguments),_e()}return Object.defineProperty(t,Ee,{value:e}),t}(me.closeSync),/\bgfs4\b/i.test(process.env.NODE_DEBUG||"")&&process.on("exit",(function(){Ae(me[pe]),g.default.equal(me[pe].length,0)}))}w[pe]||ge(w,me[pe]);var Se,we=Oe(Ce(me));function Oe(e){he(e),e.gracefulify=Oe,e.createReadStream=function(t,n){return new e.ReadStream(t,n)},e.createWriteStream=function(t,n){return new e.WriteStream(t,n)};var t=e.readFile;e.readFile=function(e,n,r){"function"==typeof n&&(r=n,n=null);return function e(n,r,u,o){return t(n,r,(function(t){!t||"EMFILE"!==t.code&&"ENFILE"!==t.code?"function"==typeof u&&u.apply(this,arguments):be([e,[n,r,u],t,o||Date.now(),Date.now()])}))}(e,n,r)};var n=e.writeFile;e.writeFile=function(e,t,r,u){"function"==typeof r&&(u=r,r=null);return function e(t,r,u,o,i){return n(t,r,u,(function(n){!n||"EMFILE"!==n.code&&"ENFILE"!==n.code?"function"==typeof o&&o.apply(this,arguments):be([e,[t,r,u,o],n,i||Date.now(),Date.now()])}))}(e,t,r,u)};var r=e.appendFile;r&&(e.appendFile=function(e,t,n,u){"function"==typeof n&&(u=n,n=null);return function e(t,n,u,o,i){return r(t,n,u,(function(r){!r||"EMFILE"!==r.code&&"ENFILE"!==r.code?"function"==typeof o&&o.apply(this,arguments):be([e,[t,n,u,o],r,i||Date.now(),Date.now()])}))}(e,t,n,u)});var u=e.copyFile;u&&(e.copyFile=function(e,t,n,r){"function"==typeof n&&(r=n,n=0);return function e(t,n,r,o,i){return u(t,n,r,(function(u){!u||"EMFILE"!==u.code&&"ENFILE"!==u.code?"function"==typeof o&&o.apply(this,arguments):be([e,[t,n,r,o],u,i||Date.now(),Date.now()])}))}(e,t,n,r)});var o=e.readdir;e.readdir=function(e,t,n){"function"==typeof t&&(n=t,t=null);var r=i.test(process.version)?function(e,t,n,r){return o(e,u(e,t,n,r))}:function(e,t,n,r){return o(e,t,u(e,t,n,r))};return r(e,t,n);function u(e,t,n,u){return function(o,i){!o||"EMFILE"!==o.code&&"ENFILE"!==o.code?(i&&i.sort&&i.sort(),"function"==typeof n&&n.call(this,o,i)):be([r,[e,t,n],o,u||Date.now(),Date.now()])}}};var i=/^v[0-5]\./;if("v0.8"===process.version.substr(0,4)){var s=ye(e);d=s.ReadStream,D=s.WriteStream}var c=e.ReadStream;c&&(d.prototype=Object.create(c.prototype),d.prototype.open=function(){var e=this;E(e.path,e.flags,e.mode,(function(t,n){t?(e.autoClose&&e.destroy(),e.emit("error",t)):(e.fd=n,e.emit("open",n),e.read())}))});var a=e.WriteStream;a&&(D.prototype=Object.create(a.prototype),D.prototype.open=function(){var e=this;E(e.path,e.flags,e.mode,(function(t,n){t?(e.destroy(),e.emit("error",t)):(e.fd=n,e.emit("open",n))}))}),Object.defineProperty(e,"ReadStream",{get:function(){return d},set:function(e){d=e},enumerable:!0,configurable:!0}),Object.defineProperty(e,"WriteStream",{get:function(){return D},set:function(e){D=e},enumerable:!0,configurable:!0});var l=d;Object.defineProperty(e,"FileReadStream",{get:function(){return l},set:function(e){l=e},enumerable:!0,configurable:!0});var f=D;function d(e,t){return this instanceof d?(c.apply(this,arguments),this):d.apply(Object.create(d.prototype),arguments)}function D(e,t){return this instanceof D?(a.apply(this,arguments),this):D.apply(Object.create(D.prototype),arguments)}Object.defineProperty(e,"FileWriteStream",{get:function(){return f},set:function(e){f=e},enumerable:!0,configurable:!0});var p=e.open;function E(e,t,n,r){return"function"==typeof n&&(r=n,n=null),function e(t,n,r,u,o){return p(t,n,r,(function(i,s){!i||"EMFILE"!==i.code&&"ENFILE"!==i.code?"function"==typeof u&&u.apply(this,arguments):be([e,[t,n,r,u],i,o||Date.now(),Date.now()])}))}(e,t,n,r)}return e.open=E,e}function be(e){Ae("ENQUEUE",e[0].name,e[1]),me[pe].push(e),Be()}function _e(){for(var e=Date.now(),t=0;t2&&(me[pe][t][3]=e,me[pe][t][4]=e);Be()}function Be(){if(clearTimeout(Se),Se=void 0,0!==me[pe].length){var e=me[pe].shift(),t=e[0],n=e[1],r=e[2],u=e[3],o=e[4];if(void 0===u)Ae("RETRY",t.name,n),t.apply(null,n);else if(Date.now()-u>=6e4){Ae("TIMEOUT",t.name,n);var i=n.pop();"function"==typeof i&&i.call(null,r)}else{var s=Date.now()-o,c=Math.max(o-u,1);s>=Math.min(1.2*c,100)?(Ae("RETRY",t.name,n),t.apply(null,n.concat([u]))):me[pe].push(e)}void 0===Se&&(Se=setTimeout(Be,0))}}process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH&&!me.__patched&&(we=Oe(me),me.__patched=!0),function(e){const t=re.fromCallback,n=we,r=["access","appendFile","chmod","chown","close","copyFile","fchmod","fchown","fdatasync","fstat","fsync","ftruncate","futimes","lchmod","lchown","link","lstat","mkdir","mkdtemp","open","opendir","readdir","readFile","readlink","realpath","rename","rm","rmdir","stat","symlink","truncate","unlink","utimes","writeFile"].filter((e=>"function"==typeof n[e]));Object.assign(e,n),r.forEach((r=>{e[r]=t(n[r])})),e.realpath.native=t(n.realpath.native),e.exists=function(e,t){return"function"==typeof t?n.exists(e,t):new Promise((t=>n.exists(e,t)))},e.read=function(e,t,r,u,o,i){return"function"==typeof i?n.read(e,t,r,u,o,i):new Promise(((i,s)=>{n.read(e,t,r,u,o,((e,t,n)=>{if(e)return s(e);i({bytesRead:t,buffer:n})}))}))},e.write=function(e,t,...r){return"function"==typeof r[r.length-1]?n.write(e,t,...r):new Promise(((u,o)=>{n.write(e,t,...r,((e,t,n)=>{if(e)return o(e);u({bytesWritten:t,buffer:n})}))}))},"function"==typeof n.writev&&(e.writev=function(e,t,...r){return"function"==typeof r[r.length-1]?n.writev(e,t,...r):new Promise(((u,o)=>{n.writev(e,t,...r,((e,t,n)=>{if(e)return o(e);u({bytesWritten:t,buffers:n})}))}))})}(ne);var Pe={},ke={};const xe=p.default;ke.checkPath=function(e){if("win32"===process.platform){if(/[<>:"|?*]/.test(e.replace(xe.parse(e).root,""))){const t=new Error(`Path contains invalid characters: ${e}`);throw t.code="EINVAL",t}}};const Ne=ne,{checkPath:Ie}=ke,Te=e=>"number"==typeof e?e:{mode:511,...e}.mode;Pe.makeDir=async(e,t)=>(Ie(e),Ne.mkdir(e,{mode:Te(t),recursive:!0})),Pe.makeDirSync=(e,t)=>(Ie(e),Ne.mkdirSync(e,{mode:Te(t),recursive:!0}));const Re=re.fromPromise,{makeDir:Me,makeDirSync:Le}=Pe,je=Re(Me);var $e={mkdirs:je,mkdirsSync:Le,mkdirp:je,mkdirpSync:Le,ensureDir:je,ensureDirSync:Le};const He=re.fromPromise,Je=ne;var Ge={pathExists:He((function(e){return Je.access(e).then((()=>!0)).catch((()=>!1))})),pathExistsSync:Je.existsSync};const Ve=we;var Ue=function(e,t,n,r){Ve.open(e,"r+",((e,u)=>{if(e)return r(e);Ve.futimes(u,t,n,(e=>{Ve.close(u,(t=>{r&&r(e||t)}))}))}))},We=function(e,t,n){const r=Ve.openSync(e,"r+");return Ve.futimesSync(r,t,n),Ve.closeSync(r)};const ze=ne,Ke=p.default,qe=F.default;function Ye(e,t,n){const r=n.dereference?e=>ze.stat(e,{bigint:!0}):e=>ze.lstat(e,{bigint:!0});return Promise.all([r(e),r(t).catch((e=>{if("ENOENT"===e.code)return null;throw e}))]).then((([e,t])=>({srcStat:e,destStat:t})))}function Xe(e,t){return t.ino&&t.dev&&t.ino===e.ino&&t.dev===e.dev}function Ze(e,t){const n=Ke.resolve(e).split(Ke.sep).filter((e=>e)),r=Ke.resolve(t).split(Ke.sep).filter((e=>e));return n.reduce(((e,t,n)=>e&&r[n]===t),!0)}function Qe(e,t,n){return`Cannot ${n} '${e}' to a subdirectory of itself, '${t}'.`}var et={checkPaths:function(e,t,n,r,u){qe.callbackify(Ye)(e,t,r,((r,o)=>{if(r)return u(r);const{srcStat:i,destStat:s}=o;if(s){if(Xe(i,s)){const r=Ke.basename(e),o=Ke.basename(t);return"move"===n&&r!==o&&r.toLowerCase()===o.toLowerCase()?u(null,{srcStat:i,destStat:s,isChangingCase:!0}):u(new Error("Source and destination must not be the same."))}if(i.isDirectory()&&!s.isDirectory())return u(new Error(`Cannot overwrite non-directory '${t}' with directory '${e}'.`));if(!i.isDirectory()&&s.isDirectory())return u(new Error(`Cannot overwrite directory '${t}' with non-directory '${e}'.`))}return i.isDirectory()&&Ze(e,t)?u(new Error(Qe(e,t,n))):u(null,{srcStat:i,destStat:s})}))},checkPathsSync:function(e,t,n,r){const{srcStat:u,destStat:o}=function(e,t,n){let r;const u=n.dereference?e=>ze.statSync(e,{bigint:!0}):e=>ze.lstatSync(e,{bigint:!0}),o=u(e);try{r=u(t)}catch(e){if("ENOENT"===e.code)return{srcStat:o,destStat:null};throw e}return{srcStat:o,destStat:r}}(e,t,r);if(o){if(Xe(u,o)){const r=Ke.basename(e),i=Ke.basename(t);if("move"===n&&r!==i&&r.toLowerCase()===i.toLowerCase())return{srcStat:u,destStat:o,isChangingCase:!0};throw new Error("Source and destination must not be the same.")}if(u.isDirectory()&&!o.isDirectory())throw new Error(`Cannot overwrite non-directory '${t}' with directory '${e}'.`);if(!u.isDirectory()&&o.isDirectory())throw new Error(`Cannot overwrite directory '${t}' with non-directory '${e}'.`)}if(u.isDirectory()&&Ze(e,t))throw new Error(Qe(e,t,n));return{srcStat:u,destStat:o}},checkParentPaths:function e(t,n,r,u,o){const i=Ke.resolve(Ke.dirname(t)),s=Ke.resolve(Ke.dirname(r));if(s===i||s===Ke.parse(s).root)return o();ze.stat(s,{bigint:!0},((i,c)=>i?"ENOENT"===i.code?o():o(i):Xe(n,c)?o(new Error(Qe(t,r,u))):e(t,n,s,u,o)))},checkParentPathsSync:function e(t,n,r,u){const o=Ke.resolve(Ke.dirname(t)),i=Ke.resolve(Ke.dirname(r));if(i===o||i===Ke.parse(i).root)return;let s;try{s=ze.statSync(i,{bigint:!0})}catch(e){if("ENOENT"===e.code)return;throw e}if(Xe(n,s))throw new Error(Qe(t,r,u));return e(t,n,i,u)},isSrcSubdir:Ze,areIdentical:Xe};const tt=we,nt=p.default,rt=$e.mkdirs,ut=Ge.pathExists,ot=Ue,it=et;function st(e,t,n,r,u){const o=nt.dirname(n);ut(o,((i,s)=>i?u(i):s?at(e,t,n,r,u):void rt(o,(o=>o?u(o):at(e,t,n,r,u)))))}function ct(e,t,n,r,u,o){Promise.resolve(u.filter(n,r)).then((i=>i?e(t,n,r,u,o):o()),(e=>o(e)))}function at(e,t,n,r,u){(r.dereference?tt.stat:tt.lstat)(t,((o,i)=>o?u(o):i.isDirectory()?function(e,t,n,r,u,o){return t?Dt(n,r,u,o):function(e,t,n,r,u){tt.mkdir(n,(o=>{if(o)return u(o);Dt(t,n,r,(t=>t?u(t):dt(n,e,u)))}))}(e.mode,n,r,u,o)}(i,e,t,n,r,u):i.isFile()||i.isCharacterDevice()||i.isBlockDevice()?function(e,t,n,r,u,o){return t?function(e,t,n,r,u){if(!r.overwrite)return r.errorOnExist?u(new Error(`'${n}' already exists`)):u();tt.unlink(n,(o=>o?u(o):lt(e,t,n,r,u)))}(e,n,r,u,o):lt(e,n,r,u,o)}(i,e,t,n,r,u):i.isSymbolicLink()?function(e,t,n,r,u){tt.readlink(t,((t,o)=>t?u(t):(r.dereference&&(o=nt.resolve(process.cwd(),o)),e?void tt.readlink(n,((t,i)=>t?"EINVAL"===t.code||"UNKNOWN"===t.code?tt.symlink(o,n,u):u(t):(r.dereference&&(i=nt.resolve(process.cwd(),i)),it.isSrcSubdir(o,i)?u(new Error(`Cannot copy '${o}' to a subdirectory of itself, '${i}'.`)):e.isDirectory()&&it.isSrcSubdir(i,o)?u(new Error(`Cannot overwrite '${i}' with '${o}'.`)):function(e,t,n){tt.unlink(t,(r=>r?n(r):tt.symlink(e,t,n)))}(o,n,u)))):tt.symlink(o,n,u))))}(e,t,n,r,u):i.isSocket()?u(new Error(`Cannot copy a socket file: ${t}`)):i.isFIFO()?u(new Error(`Cannot copy a FIFO pipe: ${t}`)):u(new Error(`Unknown file: ${t}`))))}function lt(e,t,n,r,u){tt.copyFile(t,n,(o=>o?u(o):r.preserveTimestamps?function(e,t,n,r){if(function(e){return 0==(128&e)}(e))return function(e,t,n){return dt(e,128|t,n)}(n,e,(u=>u?r(u):ft(e,t,n,r)));return ft(e,t,n,r)}(e.mode,t,n,u):dt(n,e.mode,u)))}function ft(e,t,n,r){!function(e,t,n){tt.stat(e,((e,r)=>e?n(e):ot(t,r.atime,r.mtime,n)))}(t,n,(t=>t?r(t):dt(n,e,r)))}function dt(e,t,n){return tt.chmod(e,t,n)}function Dt(e,t,n,r){tt.readdir(e,((u,o)=>u?r(u):pt(o,e,t,n,r)))}function pt(e,t,n,r,u){const o=e.pop();return o?function(e,t,n,r,u,o){const i=nt.join(n,t),s=nt.join(r,t);it.checkPaths(i,s,"copy",u,((t,c)=>{if(t)return o(t);const{destStat:a}=c;!function(e,t,n,r,u){r.filter?ct(at,e,t,n,r,u):at(e,t,n,r,u)}(a,i,s,u,(t=>t?o(t):pt(e,n,r,u,o)))}))}(e,o,t,n,r,u):u()}var Et=function(e,t,n,r){"function"!=typeof n||r?"function"==typeof n&&(n={filter:n}):(r=n,n={}),r=r||function(){},(n=n||{}).clobber=!("clobber"in n)||!!n.clobber,n.overwrite="overwrite"in n?!!n.overwrite:n.clobber,n.preserveTimestamps&&"ia32"===process.arch&&console.warn("fs-extra: Using the preserveTimestamps option in 32-bit node is not recommended;\n\n see https://github.com/jprichardson/node-fs-extra/issues/269"),it.checkPaths(e,t,"copy",n,((u,o)=>{if(u)return r(u);const{srcStat:i,destStat:s}=o;it.checkParentPaths(e,i,t,"copy",(u=>u?r(u):n.filter?ct(st,s,e,t,n,r):st(s,e,t,n,r)))}))};const mt=we,ht=p.default,yt=$e.mkdirsSync,Ct=We,Ft=et;function gt(e,t,n,r){const u=(r.dereference?mt.statSync:mt.lstatSync)(t);if(u.isDirectory())return function(e,t,n,r,u){return t?St(n,r,u):function(e,t,n,r){return mt.mkdirSync(n),St(t,n,r),vt(n,e)}(e.mode,n,r,u)}(u,e,t,n,r);if(u.isFile()||u.isCharacterDevice()||u.isBlockDevice())return function(e,t,n,r,u){return t?function(e,t,n,r){if(r.overwrite)return mt.unlinkSync(n),At(e,t,n,r);if(r.errorOnExist)throw new Error(`'${n}' already exists`)}(e,n,r,u):At(e,n,r,u)}(u,e,t,n,r);if(u.isSymbolicLink())return function(e,t,n,r){let u=mt.readlinkSync(t);r.dereference&&(u=ht.resolve(process.cwd(),u));if(e){let e;try{e=mt.readlinkSync(n)}catch(e){if("EINVAL"===e.code||"UNKNOWN"===e.code)return mt.symlinkSync(u,n);throw e}if(r.dereference&&(e=ht.resolve(process.cwd(),e)),Ft.isSrcSubdir(u,e))throw new Error(`Cannot copy '${u}' to a subdirectory of itself, '${e}'.`);if(mt.statSync(n).isDirectory()&&Ft.isSrcSubdir(e,u))throw new Error(`Cannot overwrite '${e}' with '${u}'.`);return function(e,t){return mt.unlinkSync(t),mt.symlinkSync(e,t)}(u,n)}return mt.symlinkSync(u,n)}(e,t,n,r);if(u.isSocket())throw new Error(`Cannot copy a socket file: ${t}`);if(u.isFIFO())throw new Error(`Cannot copy a FIFO pipe: ${t}`);throw new Error(`Unknown file: ${t}`)}function At(e,t,n,r){return mt.copyFileSync(t,n),r.preserveTimestamps&&function(e,t,n){(function(e){return 0==(128&e)})(e)&&function(e,t){vt(e,128|t)}(n,e);(function(e,t){const n=mt.statSync(e);Ct(t,n.atime,n.mtime)})(t,n)}(e.mode,t,n),vt(n,e.mode)}function vt(e,t){return mt.chmodSync(e,t)}function St(e,t,n){mt.readdirSync(e).forEach((r=>function(e,t,n,r){const u=ht.join(t,e),o=ht.join(n,e),{destStat:i}=Ft.checkPathsSync(u,o,"copy",r);return function(e,t,n,r){if(!r.filter||r.filter(t,n))return gt(e,t,n,r)}(i,u,o,r)}(r,e,t,n)))}var wt=function(e,t,n){"function"==typeof n&&(n={filter:n}),(n=n||{}).clobber=!("clobber"in n)||!!n.clobber,n.overwrite="overwrite"in n?!!n.overwrite:n.clobber,n.preserveTimestamps&&"ia32"===process.arch&&console.warn("fs-extra: Using the preserveTimestamps option in 32-bit node is not recommended;\n\n see https://github.com/jprichardson/node-fs-extra/issues/269");const{srcStat:r,destStat:u}=Ft.checkPathsSync(e,t,"copy",n);return Ft.checkParentPathsSync(e,r,t,"copy"),function(e,t,n,r){if(r.filter&&!r.filter(t,n))return;const u=ht.dirname(n);mt.existsSync(u)||yt(u);return gt(e,t,n,r)}(u,e,t,n)};var Ot={copy:(0,re.fromCallback)(Et),copySync:wt};const bt=we,_t=p.default,Bt=g.default,Pt="win32"===process.platform;function kt(e){["unlink","chmod","stat","lstat","rmdir","readdir"].forEach((t=>{e[t]=e[t]||bt[t],e[t+="Sync"]=e[t]||bt[t]})),e.maxBusyTries=e.maxBusyTries||3}function xt(e,t,n){let r=0;"function"==typeof t&&(n=t,t={}),Bt(e,"rimraf: missing path"),Bt.strictEqual(typeof e,"string","rimraf: path should be a string"),Bt.strictEqual(typeof n,"function","rimraf: callback function required"),Bt(t,"rimraf: invalid options argument provided"),Bt.strictEqual(typeof t,"object","rimraf: options should be object"),kt(t),Nt(e,t,(function u(o){if(o){if(("EBUSY"===o.code||"ENOTEMPTY"===o.code||"EPERM"===o.code)&&rNt(e,t,u)),100*r)}"ENOENT"===o.code&&(o=null)}n(o)}))}function Nt(e,t,n){Bt(e),Bt(t),Bt("function"==typeof n),t.lstat(e,((r,u)=>r&&"ENOENT"===r.code?n(null):r&&"EPERM"===r.code&&Pt?It(e,t,r,n):u&&u.isDirectory()?Rt(e,t,r,n):void t.unlink(e,(r=>{if(r){if("ENOENT"===r.code)return n(null);if("EPERM"===r.code)return Pt?It(e,t,r,n):Rt(e,t,r,n);if("EISDIR"===r.code)return Rt(e,t,r,n)}return n(r)}))))}function It(e,t,n,r){Bt(e),Bt(t),Bt("function"==typeof r),t.chmod(e,438,(u=>{u?r("ENOENT"===u.code?null:n):t.stat(e,((u,o)=>{u?r("ENOENT"===u.code?null:n):o.isDirectory()?Rt(e,t,n,r):t.unlink(e,r)}))}))}function Tt(e,t,n){let r;Bt(e),Bt(t);try{t.chmodSync(e,438)}catch(e){if("ENOENT"===e.code)return;throw n}try{r=t.statSync(e)}catch(e){if("ENOENT"===e.code)return;throw n}r.isDirectory()?Lt(e,t,n):t.unlinkSync(e)}function Rt(e,t,n,r){Bt(e),Bt(t),Bt("function"==typeof r),t.rmdir(e,(u=>{!u||"ENOTEMPTY"!==u.code&&"EEXIST"!==u.code&&"EPERM"!==u.code?u&&"ENOTDIR"===u.code?r(n):r(u):function(e,t,n){Bt(e),Bt(t),Bt("function"==typeof n),t.readdir(e,((r,u)=>{if(r)return n(r);let o,i=u.length;if(0===i)return t.rmdir(e,n);u.forEach((r=>{xt(_t.join(e,r),t,(r=>{if(!o)return r?n(o=r):void(0==--i&&t.rmdir(e,n))}))}))}))}(e,t,r)}))}function Mt(e,t){let n;kt(t=t||{}),Bt(e,"rimraf: missing path"),Bt.strictEqual(typeof e,"string","rimraf: path should be a string"),Bt(t,"rimraf: missing options"),Bt.strictEqual(typeof t,"object","rimraf: options should be object");try{n=t.lstatSync(e)}catch(n){if("ENOENT"===n.code)return;"EPERM"===n.code&&Pt&&Tt(e,t,n)}try{n&&n.isDirectory()?Lt(e,t,null):t.unlinkSync(e)}catch(n){if("ENOENT"===n.code)return;if("EPERM"===n.code)return Pt?Tt(e,t,n):Lt(e,t,n);if("EISDIR"!==n.code)throw n;Lt(e,t,n)}}function Lt(e,t,n){Bt(e),Bt(t);try{t.rmdirSync(e)}catch(r){if("ENOTDIR"===r.code)throw n;if("ENOTEMPTY"===r.code||"EEXIST"===r.code||"EPERM"===r.code)!function(e,t){if(Bt(e),Bt(t),t.readdirSync(e).forEach((n=>Mt(_t.join(e,n),t))),!Pt){return t.rmdirSync(e,t)}{const n=Date.now();do{try{return t.rmdirSync(e,t)}catch{}}while(Date.now()-n<500)}}(e,t);else if("ENOENT"!==r.code)throw r}}var jt=xt;xt.sync=Mt;const $t=we,Ht=re.fromCallback,Jt=jt;var Gt={remove:Ht((function(e,t){if($t.rm)return $t.rm(e,{recursive:!0,force:!0},t);Jt(e,t)})),removeSync:function(e){if($t.rmSync)return $t.rmSync(e,{recursive:!0,force:!0});Jt.sync(e)}};const Vt=re.fromPromise,Ut=ne,Wt=p.default,zt=$e,Kt=Gt,qt=Vt((async function(e){let t;try{t=await Ut.readdir(e)}catch{return zt.mkdirs(e)}return Promise.all(t.map((t=>Kt.remove(Wt.join(e,t)))))}));function Yt(e){let t;try{t=Ut.readdirSync(e)}catch{return zt.mkdirsSync(e)}t.forEach((t=>{t=Wt.join(e,t),Kt.removeSync(t)}))}var Xt={emptyDirSync:Yt,emptydirSync:Yt,emptyDir:qt,emptydir:qt};const Zt=re.fromCallback,Qt=p.default,en=we,tn=$e;var nn={createFile:Zt((function(e,t){function n(){en.writeFile(e,"",(e=>{if(e)return t(e);t()}))}en.stat(e,((r,u)=>{if(!r&&u.isFile())return t();const o=Qt.dirname(e);en.stat(o,((e,r)=>{if(e)return"ENOENT"===e.code?tn.mkdirs(o,(e=>{if(e)return t(e);n()})):t(e);r.isDirectory()?n():en.readdir(o,(e=>{if(e)return t(e)}))}))}))})),createFileSync:function(e){let t;try{t=en.statSync(e)}catch{}if(t&&t.isFile())return;const n=Qt.dirname(e);try{en.statSync(n).isDirectory()||en.readdirSync(n)}catch(e){if(!e||"ENOENT"!==e.code)throw e;tn.mkdirsSync(n)}en.writeFileSync(e,"")}};const rn=re.fromCallback,un=p.default,on=we,sn=$e,cn=Ge.pathExists,{areIdentical:an}=et;var ln={createLink:rn((function(e,t,n){function r(e,t){on.link(e,t,(e=>{if(e)return n(e);n(null)}))}on.lstat(t,((u,o)=>{on.lstat(e,((u,i)=>{if(u)return u.message=u.message.replace("lstat","ensureLink"),n(u);if(o&&an(i,o))return n(null);const s=un.dirname(t);cn(s,((u,o)=>u?n(u):o?r(e,t):void sn.mkdirs(s,(u=>{if(u)return n(u);r(e,t)}))))}))}))})),createLinkSync:function(e,t){let n;try{n=on.lstatSync(t)}catch{}try{const t=on.lstatSync(e);if(n&&an(t,n))return}catch(e){throw e.message=e.message.replace("lstat","ensureLink"),e}const r=un.dirname(t);return on.existsSync(r)||sn.mkdirsSync(r),on.linkSync(e,t)}};const fn=p.default,dn=we,Dn=Ge.pathExists;var pn={symlinkPaths:function(e,t,n){if(fn.isAbsolute(e))return dn.lstat(e,(t=>t?(t.message=t.message.replace("lstat","ensureSymlink"),n(t)):n(null,{toCwd:e,toDst:e})));{const r=fn.dirname(t),u=fn.join(r,e);return Dn(u,((t,o)=>t?n(t):o?n(null,{toCwd:u,toDst:e}):dn.lstat(e,(t=>t?(t.message=t.message.replace("lstat","ensureSymlink"),n(t)):n(null,{toCwd:e,toDst:fn.relative(r,e)})))))}},symlinkPathsSync:function(e,t){let n;if(fn.isAbsolute(e)){if(n=dn.existsSync(e),!n)throw new Error("absolute srcpath does not exist");return{toCwd:e,toDst:e}}{const r=fn.dirname(t),u=fn.join(r,e);if(n=dn.existsSync(u),n)return{toCwd:u,toDst:e};if(n=dn.existsSync(e),!n)throw new Error("relative srcpath does not exist");return{toCwd:e,toDst:fn.relative(r,e)}}}};const En=we;var mn={symlinkType:function(e,t,n){if(n="function"==typeof t?t:n,t="function"!=typeof t&&t)return n(null,t);En.lstat(e,((e,r)=>{if(e)return n(null,"file");t=r&&r.isDirectory()?"dir":"file",n(null,t)}))},symlinkTypeSync:function(e,t){let n;if(t)return t;try{n=En.lstatSync(e)}catch{return"file"}return n&&n.isDirectory()?"dir":"file"}};const hn=re.fromCallback,yn=p.default,Cn=ne,Fn=$e.mkdirs,gn=$e.mkdirsSync,An=pn.symlinkPaths,vn=pn.symlinkPathsSync,Sn=mn.symlinkType,wn=mn.symlinkTypeSync,On=Ge.pathExists,{areIdentical:bn}=et;function _n(e,t,n,r){An(e,t,((u,o)=>{if(u)return r(u);e=o.toDst,Sn(o.toCwd,n,((n,u)=>{if(n)return r(n);const o=yn.dirname(t);On(o,((n,i)=>n?r(n):i?Cn.symlink(e,t,u,r):void Fn(o,(n=>{if(n)return r(n);Cn.symlink(e,t,u,r)}))))}))}))}var Bn={createSymlink:hn((function(e,t,n,r){r="function"==typeof n?n:r,n="function"!=typeof n&&n,Cn.lstat(t,((u,o)=>{!u&&o.isSymbolicLink()?Promise.all([Cn.stat(e),Cn.stat(t)]).then((([u,o])=>{if(bn(u,o))return r(null);_n(e,t,n,r)})):_n(e,t,n,r)}))})),createSymlinkSync:function(e,t,n){let r;try{r=Cn.lstatSync(t)}catch{}if(r&&r.isSymbolicLink()){const n=Cn.statSync(e),r=Cn.statSync(t);if(bn(n,r))return}const u=vn(e,t);e=u.toDst,n=wn(u.toCwd,n);const o=yn.dirname(t);return Cn.existsSync(o)||gn(o),Cn.symlinkSync(e,t,n)}};const{createFile:Pn,createFileSync:kn}=nn,{createLink:xn,createLinkSync:Nn}=ln,{createSymlink:In,createSymlinkSync:Tn}=Bn;var Rn={createFile:Pn,createFileSync:kn,ensureFile:Pn,ensureFileSync:kn,createLink:xn,createLinkSync:Nn,ensureLink:xn,ensureLinkSync:Nn,createSymlink:In,createSymlinkSync:Tn,ensureSymlink:In,ensureSymlinkSync:Tn};var Mn={stringify:function(e,{EOL:t="\n",finalEOL:n=!0,replacer:r=null,spaces:u}={}){const o=n?t:"";return JSON.stringify(e,r,u).replace(/\n/g,t)+o},stripBom:function(e){return Buffer.isBuffer(e)&&(e=e.toString("utf8")),e.replace(/^\uFEFF/,"")}};let Ln;try{Ln=we}catch(e){Ln=D.default}const jn=re,{stringify:$n,stripBom:Hn}=Mn;const Jn=jn.fromPromise((async function(e,t={}){"string"==typeof t&&(t={encoding:t});const n=t.fs||Ln,r=!("throws"in t)||t.throws;let u,o=await jn.fromCallback(n.readFile)(e,t);o=Hn(o);try{u=JSON.parse(o,t?t.reviver:null)}catch(t){if(r)throw t.message=`${e}: ${t.message}`,t;return null}return u}));const Gn=jn.fromPromise((async function(e,t,n={}){const r=n.fs||Ln,u=$n(t,n);await jn.fromCallback(r.writeFile)(e,u,n)}));const Vn={readFile:Jn,readFileSync:function(e,t={}){"string"==typeof t&&(t={encoding:t});const n=t.fs||Ln,r=!("throws"in t)||t.throws;try{let r=n.readFileSync(e,t);return r=Hn(r),JSON.parse(r,t.reviver)}catch(t){if(r)throw t.message=`${e}: ${t.message}`,t;return null}},writeFile:Gn,writeFileSync:function(e,t,n={}){const r=n.fs||Ln,u=$n(t,n);return r.writeFileSync(e,u,n)}};var Un={readJson:Vn.readFile,readJsonSync:Vn.readFileSync,writeJson:Vn.writeFile,writeJsonSync:Vn.writeFileSync};const Wn=re.fromCallback,zn=we,Kn=p.default,qn=$e,Yn=Ge.pathExists;var Xn={outputFile:Wn((function(e,t,n,r){"function"==typeof n&&(r=n,n="utf8");const u=Kn.dirname(e);Yn(u,((o,i)=>o?r(o):i?zn.writeFile(e,t,n,r):void qn.mkdirs(u,(u=>{if(u)return r(u);zn.writeFile(e,t,n,r)}))))})),outputFileSync:function(e,...t){const n=Kn.dirname(e);if(zn.existsSync(n))return zn.writeFileSync(e,...t);qn.mkdirsSync(n),zn.writeFileSync(e,...t)}};const{stringify:Zn}=Mn,{outputFile:Qn}=Xn;var er=async function(e,t,n={}){const r=Zn(t,n);await Qn(e,r,n)};const{stringify:tr}=Mn,{outputFileSync:nr}=Xn;var rr=function(e,t,n){const r=tr(t,n);nr(e,r,n)};const ur=re.fromPromise,or=Un;or.outputJson=ur(er),or.outputJsonSync=rr,or.outputJSON=or.outputJson,or.outputJSONSync=or.outputJsonSync,or.writeJSON=or.writeJson,or.writeJSONSync=or.writeJsonSync,or.readJSON=or.readJson,or.readJSONSync=or.readJsonSync;var ir=or;const sr=we,cr=p.default,ar=Ot.copy,lr=Gt.remove,fr=$e.mkdirp,dr=Ge.pathExists,Dr=et;function pr(e,t,n,r,u){return r?Er(e,t,n,u):n?lr(t,(r=>r?u(r):Er(e,t,n,u))):void dr(t,((r,o)=>r?u(r):o?u(new Error("dest already exists.")):Er(e,t,n,u)))}function Er(e,t,n,r){sr.rename(e,t,(u=>u?"EXDEV"!==u.code?r(u):function(e,t,n,r){const u={overwrite:n,errorOnExist:!0};ar(e,t,u,(t=>t?r(t):lr(e,r)))}(e,t,n,r):r()))}var mr=function(e,t,n,r){"function"==typeof n&&(r=n,n={});const u=n.overwrite||n.clobber||!1;Dr.checkPaths(e,t,"move",n,((n,o)=>{if(n)return r(n);const{srcStat:i,isChangingCase:s=!1}=o;Dr.checkParentPaths(e,i,t,"move",(n=>n?r(n):function(e){const t=cr.dirname(e);return cr.parse(t).root===t}(t)?pr(e,t,u,s,r):void fr(cr.dirname(t),(n=>n?r(n):pr(e,t,u,s,r)))))}))};const hr=we,yr=p.default,Cr=Ot.copySync,Fr=Gt.removeSync,gr=$e.mkdirpSync,Ar=et;function vr(e,t,n){try{hr.renameSync(e,t)}catch(r){if("EXDEV"!==r.code)throw r;return function(e,t,n){const r={overwrite:n,errorOnExist:!0};return Cr(e,t,r),Fr(e)}(e,t,n)}}var Sr=function(e,t,n){const r=(n=n||{}).overwrite||n.clobber||!1,{srcStat:u,isChangingCase:o=!1}=Ar.checkPathsSync(e,t,"move",n);return Ar.checkParentPathsSync(e,u,t,"move"),function(e){const t=yr.dirname(e);return yr.parse(t).root===t}(t)||gr(yr.dirname(t)),function(e,t,n,r){if(r)return vr(e,t,n);if(n)return Fr(t),vr(e,t,n);if(hr.existsSync(t))throw new Error("dest already exists.");return vr(e,t,n)}(e,t,r,o)};var wr,Or,br,_r,Br,Pr={move:(0,re.fromCallback)(mr),moveSync:Sr},kr={...ne,...Ot,...Xt,...Rn,...ir,...$e,...Pr,...Xn,...Ge,...Gt},xr={},Nr={exports:{}},Ir={exports:{}};function Tr(){if(Or)return wr;Or=1;var e=1e3,t=60*e,n=60*t,r=24*n,u=7*r,o=365.25*r;function i(e,t,n,r){var u=t>=1.5*n;return Math.round(e/n)+" "+r+(u?"s":"")}return wr=function(s,c){c=c||{};var a=typeof s;if("string"===a&&s.length>0)return function(i){if((i=String(i)).length>100)return;var s=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(i);if(!s)return;var c=parseFloat(s[1]);switch((s[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return c*o;case"weeks":case"week":case"w":return c*u;case"days":case"day":case"d":return c*r;case"hours":case"hour":case"hrs":case"hr":case"h":return c*n;case"minutes":case"minute":case"mins":case"min":case"m":return c*t;case"seconds":case"second":case"secs":case"sec":case"s":return c*e;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return c;default:return}}(s);if("number"===a&&isFinite(s))return c.long?function(u){var o=Math.abs(u);if(o>=r)return i(u,o,r,"day");if(o>=n)return i(u,o,n,"hour");if(o>=t)return i(u,o,t,"minute");if(o>=e)return i(u,o,e,"second");return u+" ms"}(s):function(u){var o=Math.abs(u);if(o>=r)return Math.round(u/r)+"d";if(o>=n)return Math.round(u/n)+"h";if(o>=t)return Math.round(u/t)+"m";if(o>=e)return Math.round(u/e)+"s";return u+"ms"}(s);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(s))}}function Rr(){if(_r)return br;return _r=1,br=function(e){function t(e){let r,u,o,i=null;function s(...e){if(!s.enabled)return;const n=s,u=Number(new Date),o=u-(r||u);n.diff=o,n.prev=r,n.curr=u,r=u,e[0]=t.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let i=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,((r,u)=>{if("%%"===r)return"%";i++;const o=t.formatters[u];if("function"==typeof o){const t=e[i];r=o.call(n,t),e.splice(i,1),i--}return r})),t.formatArgs.call(n,e);(n.log||t.log).apply(n,e)}return s.namespace=e,s.useColors=t.useColors(),s.color=t.selectColor(e),s.extend=n,s.destroy=t.destroy,Object.defineProperty(s,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==i?i:(u!==t.namespaces&&(u=t.namespaces,o=t.enabled(e)),o),set:e=>{i=e}}),"function"==typeof t.init&&t.init(s),s}function n(e,n){const r=t(this.namespace+(void 0===n?":":n)+e);return r.log=this.log,r}function r(e){return e.toString().substring(2,e.toString().length-2).replace(/\.\*\?$/,"*")}return t.debug=t,t.default=t,t.coerce=function(e){if(e instanceof Error)return e.stack||e.message;return e},t.disable=function(){const e=[...t.names.map(r),...t.skips.map(r).map((e=>"-"+e))].join(",");return t.enable(""),e},t.enable=function(e){let n;t.save(e),t.namespaces=e,t.names=[],t.skips=[];const r=("string"==typeof e?e:"").split(/[\s,]+/),u=r.length;for(n=0;n{t[n]=e[n]})),t.names=[],t.skips=[],t.formatters={},t.selectColor=function(e){let n=0;for(let t=0;t{const n=e.startsWith("-")?"":1===e.length?"-":"--",r=t.indexOf(n+e),u=t.indexOf("--");return-1!==r&&(-1===u||r{}),"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."),t.colors=[6,2,3,4,5,1];try{const e=function(){if($r)return jr;$r=1;const e=E.default,t=A.default,n=Vr(),{env:r}=process;let u;function o(e){return 0!==e&&{level:e,hasBasic:!0,has256:e>=2,has16m:e>=3}}function i(t,o){if(0===u)return 0;if(n("color=16m")||n("color=full")||n("color=truecolor"))return 3;if(n("color=256"))return 2;if(t&&!o&&void 0===u)return 0;const i=u||0;if("dumb"===r.TERM)return i;if("win32"===process.platform){const t=e.release().split(".");return Number(t[0])>=10&&Number(t[2])>=10586?Number(t[2])>=14931?3:2:1}if("CI"in r)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI","GITHUB_ACTIONS","BUILDKITE"].some((e=>e in r))||"codeship"===r.CI_NAME?1:i;if("TEAMCITY_VERSION"in r)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(r.TEAMCITY_VERSION)?1:0;if("truecolor"===r.COLORTERM)return 3;if("TERM_PROGRAM"in r){const e=parseInt((r.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(r.TERM_PROGRAM){case"iTerm.app":return e>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(r.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(r.TERM)||"COLORTERM"in r?1:i}return n("no-color")||n("no-colors")||n("color=false")||n("color=never")?u=0:(n("color")||n("colors")||n("color=true")||n("color=always"))&&(u=1),"FORCE_COLOR"in r&&(u="true"===r.FORCE_COLOR?1:"false"===r.FORCE_COLOR?0:0===r.FORCE_COLOR.length?1:Math.min(parseInt(r.FORCE_COLOR,10),3)),jr={supportsColor:function(e){return o(i(e,e&&e.isTTY))},stdout:o(i(!0,t.isatty(1))),stderr:o(i(!0,t.isatty(2)))}}();e&&(e.stderr||e).level>=2&&(t.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221])}catch(e){}t.inspectOpts=Object.keys(process.env).filter((e=>/^debug_/i.test(e))).reduce(((e,t)=>{const n=t.substring(6).toLowerCase().replace(/_([a-z])/g,((e,t)=>t.toUpperCase()));let r=process.env[t];return r=!!/^(yes|on|true|enabled)$/i.test(r)||!/^(no|off|false|disabled)$/i.test(r)&&("null"===r?null:Number(r)),e[n]=r,e}),{}),e.exports=Rr()(t);const{formatters:u}=e.exports;u.o=function(e){return this.inspectOpts.colors=this.useColors,r.inspect(e,this.inspectOpts).split("\n").map((e=>e.trim())).join(" ")},u.O=function(e){return this.inspectOpts.colors=this.useColors,r.inspect(e,this.inspectOpts)}}(Gr,Gr.exports)),Gr.exports}Jr=Nr,"undefined"==typeof process||"renderer"===process.type||!0===process.browser||process.__nwjs?Jr.exports=(Br||(Br=1,function(e,t){t.formatArgs=function(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const n="color: "+this.color;t.splice(1,0,n,"color: inherit");let r=0,u=0;t[0].replace(/%[a-zA-Z%]/g,(e=>{"%%"!==e&&(r++,"%c"===e&&(u=r))})),t.splice(u,0,n)},t.save=function(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch(e){}},t.load=function(){let e;try{e=t.storage.getItem("debug")}catch(e){}return!e&&"undefined"!=typeof process&&"env"in process&&(e=process.env.DEBUG),e},t.useColors=function(){return!("undefined"==typeof window||!window.process||"renderer"!==window.process.type&&!window.process.__nwjs)||("undefined"==typeof navigator||!navigator.userAgent||!navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))&&("undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))},t.storage=function(){try{return localStorage}catch(e){}}(),t.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],t.log=console.debug||console.log||(()=>{}),e.exports=Rr()(t);const{formatters:n}=e.exports;n.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}}(Ir,Ir.exports)),Ir.exports):Jr.exports=Ur();var Wr=function(e){return(e=e||{}).circles?function(e){var t=[],n=[];return e.proto?function e(u){if("object"!=typeof u||null===u)return u;if(u instanceof Date)return new Date(u);if(Array.isArray(u))return r(u,e);if(u instanceof Map)return new Map(r(Array.from(u),e));if(u instanceof Set)return new Set(r(Array.from(u),e));var o={};for(var i in t.push(u),n.push(o),u){var s=u[i];if("object"!=typeof s||null===s)o[i]=s;else if(s instanceof Date)o[i]=new Date(s);else if(s instanceof Map)o[i]=new Map(r(Array.from(s),e));else if(s instanceof Set)o[i]=new Set(r(Array.from(s),e));else if(ArrayBuffer.isView(s))o[i]=zr(s);else{var c=t.indexOf(s);o[i]=-1!==c?n[c]:e(s)}}return t.pop(),n.pop(),o}:function e(u){if("object"!=typeof u||null===u)return u;if(u instanceof Date)return new Date(u);if(Array.isArray(u))return r(u,e);if(u instanceof Map)return new Map(r(Array.from(u),e));if(u instanceof Set)return new Set(r(Array.from(u),e));var o={};for(var i in t.push(u),n.push(o),u)if(!1!==Object.hasOwnProperty.call(u,i)){var s=u[i];if("object"!=typeof s||null===s)o[i]=s;else if(s instanceof Date)o[i]=new Date(s);else if(s instanceof Map)o[i]=new Map(r(Array.from(s),e));else if(s instanceof Set)o[i]=new Set(r(Array.from(s),e));else if(ArrayBuffer.isView(s))o[i]=zr(s);else{var c=t.indexOf(s);o[i]=-1!==c?n[c]:e(s)}}return t.pop(),n.pop(),o};function r(e,r){for(var u=Object.keys(e),o=new Array(u.length),i=0;i!e,Qr=e=>e&&"object"==typeof e&&!Array.isArray(e),eu=(e,t,n)=>{(Array.isArray(t)?t:[t]).forEach((t=>{if(t)throw new Error(`Problem with log4js configuration: (${Kr.inspect(e,{depth:5})}) - ${n}`)}))};var tu={configure:e=>{qr("New configuration to be validated: ",e),eu(e,Zr(Qr(e)),"must be an object."),qr(`Calling pre-processing listeners (${Yr.length})`),Yr.forEach((t=>t(e))),qr("Configuration pre-processing finished."),qr(`Calling configuration listeners (${Xr.length})`),Xr.forEach((t=>t(e))),qr("Configuration finished.")},addListener:e=>{Xr.push(e),qr(`Added listener, now ${Xr.length} listeners`)},addPreProcessingListener:e=>{Yr.push(e),qr(`Added pre-processing listener, now ${Yr.length} listeners`)},throwExceptionIf:eu,anObject:Qr,anInteger:e=>e&&"number"==typeof e&&Number.isInteger(e),validIdentifier:e=>/^[A-Za-z][A-Za-z0-9_]*$/g.test(e),not:Zr},nu={exports:{}};!function(e){function t(e,t){for(var n=e.toString();n.length-1?s:c,l=n(u.getHours()),f=n(u.getMinutes()),d=n(u.getSeconds()),D=t(u.getMilliseconds(),3),p=function(e){var t=Math.abs(e),n=String(Math.floor(t/60)),r=String(t%60);return n=("0"+n).slice(-2),r=("0"+r).slice(-2),0===e?"Z":(e<0?"+":"-")+n+":"+r}(u.getTimezoneOffset());return r.replace(/dd/g,o).replace(/MM/g,i).replace(/y{1,4}/g,a).replace(/hh/g,l).replace(/mm/g,f).replace(/ss/g,d).replace(/SSS/g,D).replace(/O/g,p)}function u(e,t,n,r){e["set"+(r?"":"UTC")+t](n)}e.exports=r,e.exports.asString=r,e.exports.parse=function(t,n,r){if(!t)throw new Error("pattern must be supplied");return function(t,n,r){var o=t.indexOf("O")<0,i=!1,s=[{pattern:/y{1,4}/,regexp:"\\d{1,4}",fn:function(e,t){u(e,"FullYear",t,o)}},{pattern:/MM/,regexp:"\\d{1,2}",fn:function(e,t){u(e,"Month",t-1,o),e.getMonth()!==t-1&&(i=!0)}},{pattern:/dd/,regexp:"\\d{1,2}",fn:function(e,t){i&&u(e,"Month",e.getMonth()-1,o),u(e,"Date",t,o)}},{pattern:/hh/,regexp:"\\d{1,2}",fn:function(e,t){u(e,"Hours",t,o)}},{pattern:/mm/,regexp:"\\d\\d",fn:function(e,t){u(e,"Minutes",t,o)}},{pattern:/ss/,regexp:"\\d\\d",fn:function(e,t){u(e,"Seconds",t,o)}},{pattern:/SSS/,regexp:"\\d\\d\\d",fn:function(e,t){u(e,"Milliseconds",t,o)}},{pattern:/O/,regexp:"[+-]\\d{1,2}:?\\d{2}?|Z",fn:function(e,t){t="Z"===t?0:t.replace(":","");var n=Math.abs(t),r=(t>0?-1:1)*(n%100+60*Math.floor(n/100));e.setUTCMinutes(e.getUTCMinutes()+r)}}],c=s.reduce((function(e,t){return t.pattern.test(e.regexp)?(t.index=e.regexp.match(t.pattern).index,e.regexp=e.regexp.replace(t.pattern,"("+t.regexp+")")):t.index=-1,e}),{regexp:t,index:[]}),a=s.filter((function(e){return e.index>-1}));a.sort((function(e,t){return e.index-t.index}));var l=new RegExp(c.regexp).exec(n);if(l){var f=r||e.exports.now();return a.forEach((function(e,t){e.fn(f,l[t+1])})),f}throw new Error("String '"+n+"' could not be parsed as '"+t+"'")}(t,n,r)},e.exports.now=function(){return new Date},e.exports.ISO8601_FORMAT="yyyy-MM-ddThh:mm:ss.SSS",e.exports.ISO8601_WITH_TZ_OFFSET_FORMAT="yyyy-MM-ddThh:mm:ss.SSSO",e.exports.DATETIME_FORMAT="dd MM yyyy hh:mm:ss.SSS",e.exports.ABSOLUTETIME_FORMAT="hh:mm:ss.SSS"}(nu);const ru=nu.exports,uu=E.default,ou=F.default,iu=p.default,su={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[90,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[91,39],yellow:[33,39]};function cu(e){return e?`[${su[e][0]}m`:""}function au(e){return e?`[${su[e][1]}m`:""}function lu(e,t){return n=ou.format("[%s] [%s] %s - ",ru.asString(e.startTime),e.level.toString(),e.categoryName),cu(r=t)+n+au(r);var n,r}function fu(e){return lu(e)+ou.format(...e.data)}function du(e){return lu(e,e.level.colour)+ou.format(...e.data)}function Du(e){return ou.format(...e.data)}function pu(e){return e.data[0]}function Eu(e,t){const n=/%(-?[0-9]+)?(\.?-?[0-9]+)?([[\]cdhmnprzxXyflos%])(\{([^}]+)\})?|([^%]+)/;function r(e){return e&&e.pid?e.pid.toString():process.pid.toString()}e=e||"%r %p %c - %m%n";const u={c:function(e,t){let n=e.categoryName;if(t){const e=parseInt(t,10),r=n.split(".");ee&&(n=r.slice(-e).join(iu.sep))}return n},l:function(e){return e.lineNumber?`${e.lineNumber}`:""},o:function(e){return e.columnNumber?`${e.columnNumber}`:""},s:function(e){return e.callStack||""}};function o(e,t,n){return u[e](t,n)}function i(e,t,n){let r=e;return r=function(e,t){let n;return e?(n=parseInt(e.substr(1),10),n>0?t.slice(0,n):t.slice(n)):t}(t,r),r=function(e,t){let n;if(e)if("-"===e.charAt(0))for(n=parseInt(e.substr(1),10);t.lengthDu,basic:()=>fu,colored:()=>du,coloured:()=>du,pattern:e=>Eu(e&&e.pattern,e&&e.tokens),dummy:()=>pu};var hu={basicLayout:fu,messagePassThroughLayout:Du,patternLayout:Eu,colouredLayout:du,coloredLayout:du,dummyLayout:pu,addLayout(e,t){mu[e]=t},layout:(e,t)=>mu[e]&&mu[e](t)};const yu=tu,Cu=["white","grey","black","blue","cyan","green","magenta","red","yellow"];class Fu{constructor(e,t,n){this.level=e,this.levelStr=t,this.colour=n}toString(){return this.levelStr}static getLevel(e,t){return e?e instanceof Fu?e:(e instanceof Object&&e.levelStr&&(e=e.levelStr),Fu[e.toString().toUpperCase()]||t):t}static addLevels(e){if(e){Object.keys(e).forEach((t=>{const n=t.toUpperCase();Fu[n]=new Fu(e[t].value,n,e[t].colour);const r=Fu.levels.findIndex((e=>e.levelStr===n));r>-1?Fu.levels[r]=Fu[n]:Fu.levels.push(Fu[n])})),Fu.levels.sort(((e,t)=>e.level-t.level))}}isLessThanOrEqualTo(e){return"string"==typeof e&&(e=Fu.getLevel(e)),this.level<=e.level}isGreaterThanOrEqualTo(e){return"string"==typeof e&&(e=Fu.getLevel(e)),this.level>=e.level}isEqualTo(e){return"string"==typeof e&&(e=Fu.getLevel(e)),this.level===e.level}}Fu.levels=[],Fu.addLevels({ALL:{value:Number.MIN_VALUE,colour:"grey"},TRACE:{value:5e3,colour:"blue"},DEBUG:{value:1e4,colour:"cyan"},INFO:{value:2e4,colour:"green"},WARN:{value:3e4,colour:"yellow"},ERROR:{value:4e4,colour:"red"},FATAL:{value:5e4,colour:"magenta"},MARK:{value:9007199254740992,colour:"grey"},OFF:{value:Number.MAX_VALUE,colour:"grey"}}),yu.addListener((e=>{const t=e.levels;if(t){yu.throwExceptionIf(e,yu.not(yu.anObject(t)),"levels must be an object");Object.keys(t).forEach((n=>{yu.throwExceptionIf(e,yu.not(yu.validIdentifier(n)),`level name "${n}" is not a valid identifier (must start with a letter, only contain A-Z,a-z,0-9,_)`),yu.throwExceptionIf(e,yu.not(yu.anObject(t[n])),`level "${n}" must be an object`),yu.throwExceptionIf(e,yu.not(t[n].value),`level "${n}" must have a 'value' property`),yu.throwExceptionIf(e,yu.not(yu.anInteger(t[n].value)),`level "${n}".value must have an integer value`),yu.throwExceptionIf(e,yu.not(t[n].colour),`level "${n}" must have a 'colour' property`),yu.throwExceptionIf(e,yu.not(Cu.indexOf(t[n].colour)>-1),`level "${n}".colour must be one of ${Cu.join(", ")}`)}))}})),yu.addListener((e=>{Fu.addLevels(e.levels)}));var gu=Fu,Au={exports:{}},vu={};/*! (c) 2020 Andrea Giammarchi */ +const{parse:Su,stringify:wu}=JSON,{keys:Ou}=Object,bu=String,_u="string",Bu={},Pu="object",ku=(e,t)=>t,xu=e=>e instanceof bu?bu(e):e,Nu=(e,t)=>typeof t===_u?new bu(t):t,Iu=(e,t,n,r)=>{const u=[];for(let o=Ou(n),{length:i}=o,s=0;s{const r=bu(t.push(n)-1);return e.set(n,r),r},Ru=(e,t)=>{const n=Su(e,Nu).map(xu),r=n[0],u=t||ku,o=typeof r===Pu&&r?Iu(n,new Set,r,u):r;return u.call({"":o},"",o)};vu.parse=Ru;const Mu=(e,t,n)=>{const r=t&&typeof t===Pu?(e,n)=>""===e||-1Su(Mu(e));vu.fromJSON=e=>Ru(wu(e));const Lu=vu,ju=gu;class $u{constructor(e,t,n,r,u){this.startTime=new Date,this.categoryName=e,this.data=n,this.level=t,this.context=Object.assign({},r),this.pid=process.pid,u&&(this.functionName=u.functionName,this.fileName=u.fileName,this.lineNumber=u.lineNumber,this.columnNumber=u.columnNumber,this.callStack=u.callStack)}serialise(){const e=this.data.map((e=>(e&&e.message&&e.stack&&(e=Object.assign({message:e.message,stack:e.stack},e)),e)));return this.data=e,Lu.stringify(this)}static deserialise(e){let t;try{const n=Lu.parse(e);n.data=n.data.map((e=>{if(e&&e.message&&e.stack){const t=new Error(e);Object.keys(e).forEach((n=>{t[n]=e[n]})),e=t}return e})),t=new $u(n.categoryName,ju.getLevel(n.level.levelStr),n.data,n.context),t.startTime=new Date(n.startTime),t.pid=n.pid,t.cluster=n.cluster}catch(n){t=new $u("log4js",ju.ERROR,["Unable to parse log:",e,"because: ",n])}return t}}var Hu=$u;const Ju=Nr.exports("log4js:clustering"),Gu=Hu,Vu=tu;let Uu=!1,Wu=null;try{Wu=require("cluster")}catch(e){Ju("cluster module not present"),Uu=!0}const zu=[];let Ku=!1,qu="NODE_APP_INSTANCE";const Yu=()=>Ku&&"0"===process.env[qu],Xu=()=>Uu||Wu.isMaster||Yu(),Zu=e=>{zu.forEach((t=>t(e)))},Qu=(e,t)=>{if(Ju("cluster message received from worker ",e,": ",t),e.topic&&e.data&&(t=e,e=void 0),t&&t.topic&&"log4js:message"===t.topic){Ju("received message: ",t.data);const e=Gu.deserialise(t.data);Zu(e)}};Uu||Vu.addListener((e=>{zu.length=0,({pm2:Ku,disableClustering:Uu,pm2InstanceVar:qu="NODE_APP_INSTANCE"}=e),Ju(`clustering disabled ? ${Uu}`),Ju(`cluster.isMaster ? ${Wu&&Wu.isMaster}`),Ju(`pm2 enabled ? ${Ku}`),Ju(`pm2InstanceVar = ${qu}`),Ju(`process.env[${qu}] = ${process.env[qu]}`),Ku&&process.removeListener("message",Qu),Wu&&Wu.removeListener&&Wu.removeListener("message",Qu),Uu||e.disableClustering?Ju("Not listening for cluster messages, because clustering disabled."):Yu()?(Ju("listening for PM2 broadcast messages"),process.on("message",Qu)):Wu.isMaster?(Ju("listening for cluster messages"),Wu.on("message",Qu)):Ju("not listening for messages, because we are not a master process")}));var eo={onlyOnMaster:(e,t)=>Xu()?e():t,isMaster:Xu,send:e=>{Xu()?Zu(e):(Ku||(e.cluster={workerId:Wu.worker.id,worker:process.pid}),process.send({topic:"log4js:message",data:e.serialise()}))},onMessage:e=>{zu.push(e)}},to={};function no(e){if("number"==typeof e&&Number.isInteger(e))return e;const t={K:1024,M:1048576,G:1073741824},n=Object.keys(t),r=e.substr(e.length-1).toLocaleUpperCase(),u=e.substring(0,e.length-1).trim();if(n.indexOf(r)<0||!Number.isInteger(Number(u)))throw Error(`maxLogSize: "${e}" is invalid`);return u*t[r]}function ro(e){return function(e,t){const n=Object.assign({},t);return Object.keys(e).forEach((r=>{n[r]&&(n[r]=e[r](t[r]))})),n}({maxLogSize:no},e)}const uo={file:ro,fileSync:ro};to.modifyConfig=e=>uo[e.type]?uo[e.type](e):e;var oo={};const io=console.log.bind(console);oo.configure=function(e,t){let n=t.colouredLayout;return e.layout&&(n=t.layout(e.layout.type,e.layout)),function(e,t){return n=>{io(e(n,t))}}(n,e.timezoneOffset)};var so={};so.configure=function(e,t){let n=t.colouredLayout;return e.layout&&(n=t.layout(e.layout.type,e.layout)),function(e,t){return n=>{process.stdout.write(`${e(n,t)}\n`)}}(n,e.timezoneOffset)};var co={};co.configure=function(e,t){let n=t.colouredLayout;return e.layout&&(n=t.layout(e.layout.type,e.layout)),function(e,t){return n=>{process.stderr.write(`${e(n,t)}\n`)}}(n,e.timezoneOffset)};var ao={};ao.configure=function(e,t,n,r){const u=n(e.appender);return function(e,t,n,r){const u=r.getLevel(e),o=r.getLevel(t,r.FATAL);return e=>{const t=e.level;t.isGreaterThanOrEqualTo(u)&&t.isLessThanOrEqualTo(o)&&n(e)}}(e.level,e.maxLevel,u,r)};var lo={};const fo=Nr.exports("log4js:categoryFilter");lo.configure=function(e,t,n){const r=n(e.appender);return function(e,t){return"string"==typeof e&&(e=[e]),n=>{fo(`Checking ${n.categoryName} against ${e}`),-1===e.indexOf(n.categoryName)&&(fo("Not excluded, sending to appender"),t(n))}}(e.exclude,r)};var Do={};const po=Nr.exports("log4js:noLogFilter");Do.configure=function(e,t,n){const r=n(e.appender);return function(e,t){return n=>{po(`Checking data: ${n.data} against filters: ${e}`),"string"==typeof e&&(e=[e]),e=e.filter((e=>null!=e&&""!==e));const r=new RegExp(e.join("|"),"i");(0===e.length||n.data.findIndex((e=>r.test(e)))<0)&&(po("Not excluded, sending to appender"),t(n))}}(e.exclude,r)};var Eo={},mo={exports:{}},ho={},yo={fromCallback:function(e){return Object.defineProperty((function(){if("function"!=typeof arguments[arguments.length-1])return new Promise(((t,n)=>{arguments[arguments.length]=(e,r)=>{if(e)return n(e);t(r)},arguments.length++,e.apply(this,arguments)}));e.apply(this,arguments)}),"name",{value:e.name})},fromPromise:function(e){return Object.defineProperty((function(){const t=arguments[arguments.length-1];if("function"!=typeof t)return e.apply(this,arguments);e.apply(this,arguments).then((e=>t(null,e)),t)}),"name",{value:e.name})}};!function(e){const t=yo.fromCallback,n=we,r=["access","appendFile","chmod","chown","close","copyFile","fchmod","fchown","fdatasync","fstat","fsync","ftruncate","futimes","lchown","lchmod","link","lstat","mkdir","mkdtemp","open","readFile","readdir","readlink","realpath","rename","rmdir","stat","symlink","truncate","unlink","utimes","writeFile"].filter((e=>"function"==typeof n[e]));Object.keys(n).forEach((t=>{"promises"!==t&&(e[t]=n[t])})),r.forEach((r=>{e[r]=t(n[r])})),e.exists=function(e,t){return"function"==typeof t?n.exists(e,t):new Promise((t=>n.exists(e,t)))},e.read=function(e,t,r,u,o,i){return"function"==typeof i?n.read(e,t,r,u,o,i):new Promise(((i,s)=>{n.read(e,t,r,u,o,((e,t,n)=>{if(e)return s(e);i({bytesRead:t,buffer:n})}))}))},e.write=function(e,t,...r){return"function"==typeof r[r.length-1]?n.write(e,t,...r):new Promise(((u,o)=>{n.write(e,t,...r,((e,t,n)=>{if(e)return o(e);u({bytesWritten:t,buffer:n})}))}))},"function"==typeof n.realpath.native&&(e.realpath.native=t(n.realpath.native))}(ho);const Co=p.default;function Fo(e){return(e=Co.normalize(Co.resolve(e)).split(Co.sep)).length>0?e[0]:null}const go=/[<>:"|?*]/;var Ao=function(e){const t=Fo(e);return e=e.replace(t,""),go.test(e)};const vo=we,So=p.default,wo=Ao,Oo=parseInt("0777",8);var bo=function e(t,n,r,u){if("function"==typeof n?(r=n,n={}):n&&"object"==typeof n||(n={mode:n}),"win32"===process.platform&&wo(t)){const e=new Error(t+" contains invalid WIN32 path characters.");return e.code="EINVAL",r(e)}let o=n.mode;const i=n.fs||vo;void 0===o&&(o=Oo&~process.umask()),u||(u=null),r=r||function(){},t=So.resolve(t),i.mkdir(t,o,(o=>{if(!o)return r(null,u=u||t);if("ENOENT"===o.code){if(So.dirname(t)===t)return r(o);e(So.dirname(t),n,((u,o)=>{u?r(u,o):e(t,n,r,o)}))}else i.stat(t,((e,t)=>{e||!t.isDirectory()?r(o,u):r(null,u)}))}))};const _o=we,Bo=p.default,Po=Ao,ko=parseInt("0777",8);var xo=function e(t,n,r){n&&"object"==typeof n||(n={mode:n});let u=n.mode;const o=n.fs||_o;if("win32"===process.platform&&Po(t)){const e=new Error(t+" contains invalid WIN32 path characters.");throw e.code="EINVAL",e}void 0===u&&(u=ko&~process.umask()),r||(r=null),t=Bo.resolve(t);try{o.mkdirSync(t,u),r=r||t}catch(u){if("ENOENT"===u.code){if(Bo.dirname(t)===t)throw u;r=e(Bo.dirname(t),n,r),e(t,n,r)}else{let e;try{e=o.statSync(t)}catch(e){throw u}if(!e.isDirectory())throw u}}return r};const No=(0,yo.fromCallback)(bo);var Io={mkdirs:No,mkdirsSync:xo,mkdirp:No,mkdirpSync:xo,ensureDir:No,ensureDirSync:xo};const To=we;E.default,p.default;var Ro=function(e,t,n,r){To.open(e,"r+",((e,u)=>{if(e)return r(e);To.futimes(u,t,n,(e=>{To.close(u,(t=>{r&&r(e||t)}))}))}))},Mo=function(e,t,n){const r=To.openSync(e,"r+");return To.futimesSync(r,t,n),To.closeSync(r)};const Lo=we,jo=p.default,$o=10,Ho=5,Jo=0,Go=process.versions.node.split("."),Vo=Number.parseInt(Go[0],10),Uo=Number.parseInt(Go[1],10),Wo=Number.parseInt(Go[2],10);function zo(){if(Vo>$o)return!0;if(Vo===$o){if(Uo>Ho)return!0;if(Uo===Ho&&Wo>=Jo)return!0}return!1}function Ko(e,t){const n=jo.resolve(e).split(jo.sep).filter((e=>e)),r=jo.resolve(t).split(jo.sep).filter((e=>e));return n.reduce(((e,t,n)=>e&&r[n]===t),!0)}function qo(e,t,n){return`Cannot ${n} '${e}' to a subdirectory of itself, '${t}'.`}var Yo,Xo,Zo={checkPaths:function(e,t,n,r){!function(e,t,n){zo()?Lo.stat(e,{bigint:!0},((e,r)=>{if(e)return n(e);Lo.stat(t,{bigint:!0},((e,t)=>e?"ENOENT"===e.code?n(null,{srcStat:r,destStat:null}):n(e):n(null,{srcStat:r,destStat:t})))})):Lo.stat(e,((e,r)=>{if(e)return n(e);Lo.stat(t,((e,t)=>e?"ENOENT"===e.code?n(null,{srcStat:r,destStat:null}):n(e):n(null,{srcStat:r,destStat:t})))}))}(e,t,((u,o)=>{if(u)return r(u);const{srcStat:i,destStat:s}=o;return s&&s.ino&&s.dev&&s.ino===i.ino&&s.dev===i.dev?r(new Error("Source and destination must not be the same.")):i.isDirectory()&&Ko(e,t)?r(new Error(qo(e,t,n))):r(null,{srcStat:i,destStat:s})}))},checkPathsSync:function(e,t,n){const{srcStat:r,destStat:u}=function(e,t){let n,r;n=zo()?Lo.statSync(e,{bigint:!0}):Lo.statSync(e);try{r=zo()?Lo.statSync(t,{bigint:!0}):Lo.statSync(t)}catch(e){if("ENOENT"===e.code)return{srcStat:n,destStat:null};throw e}return{srcStat:n,destStat:r}}(e,t);if(u&&u.ino&&u.dev&&u.ino===r.ino&&u.dev===r.dev)throw new Error("Source and destination must not be the same.");if(r.isDirectory()&&Ko(e,t))throw new Error(qo(e,t,n));return{srcStat:r,destStat:u}},checkParentPaths:function e(t,n,r,u,o){const i=jo.resolve(jo.dirname(t)),s=jo.resolve(jo.dirname(r));if(s===i||s===jo.parse(s).root)return o();zo()?Lo.stat(s,{bigint:!0},((i,c)=>i?"ENOENT"===i.code?o():o(i):c.ino&&c.dev&&c.ino===n.ino&&c.dev===n.dev?o(new Error(qo(t,r,u))):e(t,n,s,u,o))):Lo.stat(s,((i,c)=>i?"ENOENT"===i.code?o():o(i):c.ino&&c.dev&&c.ino===n.ino&&c.dev===n.dev?o(new Error(qo(t,r,u))):e(t,n,s,u,o)))},checkParentPathsSync:function e(t,n,r,u){const o=jo.resolve(jo.dirname(t)),i=jo.resolve(jo.dirname(r));if(i===o||i===jo.parse(i).root)return;let s;try{s=zo()?Lo.statSync(i,{bigint:!0}):Lo.statSync(i)}catch(e){if("ENOENT"===e.code)return;throw e}if(s.ino&&s.dev&&s.ino===n.ino&&s.dev===n.dev)throw new Error(qo(t,r,u));return e(t,n,i,u)},isSrcSubdir:Ko};const Qo=we,ei=p.default,ti=Io.mkdirsSync,ni=Mo,ri=Zo;function ui(e,t,n,r){if(!r.filter||r.filter(t,n))return function(e,t,n,r){const u=r.dereference?Qo.statSync:Qo.lstatSync,o=u(t);if(o.isDirectory())return function(e,t,n,r,u){if(!t)return function(e,t,n,r){return Qo.mkdirSync(n),ii(t,n,r),Qo.chmodSync(n,e.mode)}(e,n,r,u);if(t&&!t.isDirectory())throw new Error(`Cannot overwrite non-directory '${r}' with directory '${n}'.`);return ii(n,r,u)}(o,e,t,n,r);if(o.isFile()||o.isCharacterDevice()||o.isBlockDevice())return function(e,t,n,r,u){return t?function(e,t,n,r){if(r.overwrite)return Qo.unlinkSync(n),oi(e,t,n,r);if(r.errorOnExist)throw new Error(`'${n}' already exists`)}(e,n,r,u):oi(e,n,r,u)}(o,e,t,n,r);if(o.isSymbolicLink())return function(e,t,n,r){let u=Qo.readlinkSync(t);r.dereference&&(u=ei.resolve(process.cwd(),u));if(e){let e;try{e=Qo.readlinkSync(n)}catch(e){if("EINVAL"===e.code||"UNKNOWN"===e.code)return Qo.symlinkSync(u,n);throw e}if(r.dereference&&(e=ei.resolve(process.cwd(),e)),ri.isSrcSubdir(u,e))throw new Error(`Cannot copy '${u}' to a subdirectory of itself, '${e}'.`);if(Qo.statSync(n).isDirectory()&&ri.isSrcSubdir(e,u))throw new Error(`Cannot overwrite '${e}' with '${u}'.`);return function(e,t){return Qo.unlinkSync(t),Qo.symlinkSync(e,t)}(u,n)}return Qo.symlinkSync(u,n)}(e,t,n,r)}(e,t,n,r)}function oi(e,t,n,r){return"function"==typeof Qo.copyFileSync?(Qo.copyFileSync(t,n),Qo.chmodSync(n,e.mode),r.preserveTimestamps?ni(n,e.atime,e.mtime):void 0):function(e,t,n,r){const u=65536,o=(Xo?Yo:(Xo=1,Yo=function(e){if("function"==typeof Buffer.allocUnsafe)try{return Buffer.allocUnsafe(e)}catch(t){return new Buffer(e)}return new Buffer(e)}))(u),i=Qo.openSync(t,"r"),s=Qo.openSync(n,"w",e.mode);let c=0;for(;cfunction(e,t,n,r){const u=ei.join(t,e),o=ei.join(n,e),{destStat:i}=ri.checkPathsSync(u,o,"copy");return ui(i,u,o,r)}(r,e,t,n)))}var si=function(e,t,n){"function"==typeof n&&(n={filter:n}),(n=n||{}).clobber=!("clobber"in n)||!!n.clobber,n.overwrite="overwrite"in n?!!n.overwrite:n.clobber,n.preserveTimestamps&&"ia32"===process.arch&&console.warn("fs-extra: Using the preserveTimestamps option in 32-bit node is not recommended;\n\n see https://github.com/jprichardson/node-fs-extra/issues/269");const{srcStat:r,destStat:u}=ri.checkPathsSync(e,t,"copy");return ri.checkParentPathsSync(e,r,t,"copy"),function(e,t,n,r){if(r.filter&&!r.filter(t,n))return;const u=ei.dirname(n);Qo.existsSync(u)||ti(u);return ui(e,t,n,r)}(u,e,t,n)},ci={copySync:si};const ai=yo.fromPromise,li=ho;var fi={pathExists:ai((function(e){return li.access(e).then((()=>!0)).catch((()=>!1))})),pathExistsSync:li.existsSync};const di=we,Di=p.default,pi=Io.mkdirs,Ei=fi.pathExists,mi=Ro,hi=Zo;function yi(e,t,n,r,u){const o=Di.dirname(n);Ei(o,((i,s)=>i?u(i):s?Fi(e,t,n,r,u):void pi(o,(o=>o?u(o):Fi(e,t,n,r,u)))))}function Ci(e,t,n,r,u,o){Promise.resolve(u.filter(n,r)).then((i=>i?e(t,n,r,u,o):o()),(e=>o(e)))}function Fi(e,t,n,r,u){return r.filter?Ci(gi,e,t,n,r,u):gi(e,t,n,r,u)}function gi(e,t,n,r,u){(r.dereference?di.stat:di.lstat)(t,((o,i)=>o?u(o):i.isDirectory()?function(e,t,n,r,u,o){if(!t)return function(e,t,n,r,u){di.mkdir(n,(o=>{if(o)return u(o);Si(t,n,r,(t=>t?u(t):di.chmod(n,e.mode,u)))}))}(e,n,r,u,o);if(t&&!t.isDirectory())return o(new Error(`Cannot overwrite non-directory '${r}' with directory '${n}'.`));return Si(n,r,u,o)}(i,e,t,n,r,u):i.isFile()||i.isCharacterDevice()||i.isBlockDevice()?function(e,t,n,r,u,o){return t?function(e,t,n,r,u){if(!r.overwrite)return r.errorOnExist?u(new Error(`'${n}' already exists`)):u();di.unlink(n,(o=>o?u(o):Ai(e,t,n,r,u)))}(e,n,r,u,o):Ai(e,n,r,u,o)}(i,e,t,n,r,u):i.isSymbolicLink()?function(e,t,n,r,u){di.readlink(t,((t,o)=>t?u(t):(r.dereference&&(o=Di.resolve(process.cwd(),o)),e?void di.readlink(n,((t,i)=>t?"EINVAL"===t.code||"UNKNOWN"===t.code?di.symlink(o,n,u):u(t):(r.dereference&&(i=Di.resolve(process.cwd(),i)),hi.isSrcSubdir(o,i)?u(new Error(`Cannot copy '${o}' to a subdirectory of itself, '${i}'.`)):e.isDirectory()&&hi.isSrcSubdir(i,o)?u(new Error(`Cannot overwrite '${i}' with '${o}'.`)):function(e,t,n){di.unlink(t,(r=>r?n(r):di.symlink(e,t,n)))}(o,n,u)))):di.symlink(o,n,u))))}(e,t,n,r,u):void 0))}function Ai(e,t,n,r,u){return"function"==typeof di.copyFile?di.copyFile(t,n,(t=>t?u(t):vi(e,n,r,u))):function(e,t,n,r,u){const o=di.createReadStream(t);o.on("error",(e=>u(e))).once("open",(()=>{const t=di.createWriteStream(n,{mode:e.mode});t.on("error",(e=>u(e))).on("open",(()=>o.pipe(t))).once("close",(()=>vi(e,n,r,u)))}))}(e,t,n,r,u)}function vi(e,t,n,r){di.chmod(t,e.mode,(u=>u?r(u):n.preserveTimestamps?mi(t,e.atime,e.mtime,r):r()))}function Si(e,t,n,r){di.readdir(e,((u,o)=>u?r(u):wi(o,e,t,n,r)))}function wi(e,t,n,r,u){const o=e.pop();return o?function(e,t,n,r,u,o){const i=Di.join(n,t),s=Di.join(r,t);hi.checkPaths(i,s,"copy",((t,c)=>{if(t)return o(t);const{destStat:a}=c;Fi(a,i,s,u,(t=>t?o(t):wi(e,n,r,u,o)))}))}(e,o,t,n,r,u):u()}var Oi=function(e,t,n,r){"function"!=typeof n||r?"function"==typeof n&&(n={filter:n}):(r=n,n={}),r=r||function(){},(n=n||{}).clobber=!("clobber"in n)||!!n.clobber,n.overwrite="overwrite"in n?!!n.overwrite:n.clobber,n.preserveTimestamps&&"ia32"===process.arch&&console.warn("fs-extra: Using the preserveTimestamps option in 32-bit node is not recommended;\n\n see https://github.com/jprichardson/node-fs-extra/issues/269"),hi.checkPaths(e,t,"copy",((u,o)=>{if(u)return r(u);const{srcStat:i,destStat:s}=o;hi.checkParentPaths(e,i,t,"copy",(u=>u?r(u):n.filter?Ci(yi,s,e,t,n,r):yi(s,e,t,n,r)))}))};var bi={copy:(0,yo.fromCallback)(Oi)};const _i=we,Bi=p.default,Pi=g.default,ki="win32"===process.platform;function xi(e){["unlink","chmod","stat","lstat","rmdir","readdir"].forEach((t=>{e[t]=e[t]||_i[t],e[t+="Sync"]=e[t]||_i[t]})),e.maxBusyTries=e.maxBusyTries||3}function Ni(e,t,n){let r=0;"function"==typeof t&&(n=t,t={}),Pi(e,"rimraf: missing path"),Pi.strictEqual(typeof e,"string","rimraf: path should be a string"),Pi.strictEqual(typeof n,"function","rimraf: callback function required"),Pi(t,"rimraf: invalid options argument provided"),Pi.strictEqual(typeof t,"object","rimraf: options should be object"),xi(t),Ii(e,t,(function u(o){if(o){if(("EBUSY"===o.code||"ENOTEMPTY"===o.code||"EPERM"===o.code)&&rIi(e,t,u)),100*r)}"ENOENT"===o.code&&(o=null)}n(o)}))}function Ii(e,t,n){Pi(e),Pi(t),Pi("function"==typeof n),t.lstat(e,((r,u)=>r&&"ENOENT"===r.code?n(null):r&&"EPERM"===r.code&&ki?Ti(e,t,r,n):u&&u.isDirectory()?Mi(e,t,r,n):void t.unlink(e,(r=>{if(r){if("ENOENT"===r.code)return n(null);if("EPERM"===r.code)return ki?Ti(e,t,r,n):Mi(e,t,r,n);if("EISDIR"===r.code)return Mi(e,t,r,n)}return n(r)}))))}function Ti(e,t,n,r){Pi(e),Pi(t),Pi("function"==typeof r),n&&Pi(n instanceof Error),t.chmod(e,438,(u=>{u?r("ENOENT"===u.code?null:n):t.stat(e,((u,o)=>{u?r("ENOENT"===u.code?null:n):o.isDirectory()?Mi(e,t,n,r):t.unlink(e,r)}))}))}function Ri(e,t,n){let r;Pi(e),Pi(t),n&&Pi(n instanceof Error);try{t.chmodSync(e,438)}catch(e){if("ENOENT"===e.code)return;throw n}try{r=t.statSync(e)}catch(e){if("ENOENT"===e.code)return;throw n}r.isDirectory()?ji(e,t,n):t.unlinkSync(e)}function Mi(e,t,n,r){Pi(e),Pi(t),n&&Pi(n instanceof Error),Pi("function"==typeof r),t.rmdir(e,(u=>{!u||"ENOTEMPTY"!==u.code&&"EEXIST"!==u.code&&"EPERM"!==u.code?u&&"ENOTDIR"===u.code?r(n):r(u):function(e,t,n){Pi(e),Pi(t),Pi("function"==typeof n),t.readdir(e,((r,u)=>{if(r)return n(r);let o,i=u.length;if(0===i)return t.rmdir(e,n);u.forEach((r=>{Ni(Bi.join(e,r),t,(r=>{if(!o)return r?n(o=r):void(0==--i&&t.rmdir(e,n))}))}))}))}(e,t,r)}))}function Li(e,t){let n;xi(t=t||{}),Pi(e,"rimraf: missing path"),Pi.strictEqual(typeof e,"string","rimraf: path should be a string"),Pi(t,"rimraf: missing options"),Pi.strictEqual(typeof t,"object","rimraf: options should be object");try{n=t.lstatSync(e)}catch(n){if("ENOENT"===n.code)return;"EPERM"===n.code&&ki&&Ri(e,t,n)}try{n&&n.isDirectory()?ji(e,t,null):t.unlinkSync(e)}catch(n){if("ENOENT"===n.code)return;if("EPERM"===n.code)return ki?Ri(e,t,n):ji(e,t,n);if("EISDIR"!==n.code)throw n;ji(e,t,n)}}function ji(e,t,n){Pi(e),Pi(t),n&&Pi(n instanceof Error);try{t.rmdirSync(e)}catch(r){if("ENOTDIR"===r.code)throw n;if("ENOTEMPTY"===r.code||"EEXIST"===r.code||"EPERM"===r.code)!function(e,t){if(Pi(e),Pi(t),t.readdirSync(e).forEach((n=>Li(Bi.join(e,n),t))),!ki){return t.rmdirSync(e,t)}{const n=Date.now();do{try{return t.rmdirSync(e,t)}catch(e){}}while(Date.now()-n<500)}}(e,t);else if("ENOENT"!==r.code)throw r}}var $i=Ni;Ni.sync=Li;const Hi=$i;var Ji={remove:(0,yo.fromCallback)(Hi),removeSync:Hi.sync};const Gi=yo.fromCallback,Vi=we,Ui=p.default,Wi=Io,zi=Ji,Ki=Gi((function(e,t){t=t||function(){},Vi.readdir(e,((n,r)=>{if(n)return Wi.mkdirs(e,t);r=r.map((t=>Ui.join(e,t))),function e(){const n=r.pop();if(!n)return t();zi.remove(n,(n=>{if(n)return t(n);e()}))}()}))}));function qi(e){let t;try{t=Vi.readdirSync(e)}catch(t){return Wi.mkdirsSync(e)}t.forEach((t=>{t=Ui.join(e,t),zi.removeSync(t)}))}var Yi={emptyDirSync:qi,emptydirSync:qi,emptyDir:Ki,emptydir:Ki};const Xi=yo.fromCallback,Zi=p.default,Qi=we,es=Io,ts=fi.pathExists;var ns={createFile:Xi((function(e,t){function n(){Qi.writeFile(e,"",(e=>{if(e)return t(e);t()}))}Qi.stat(e,((r,u)=>{if(!r&&u.isFile())return t();const o=Zi.dirname(e);ts(o,((e,r)=>e?t(e):r?n():void es.mkdirs(o,(e=>{if(e)return t(e);n()}))))}))})),createFileSync:function(e){let t;try{t=Qi.statSync(e)}catch(e){}if(t&&t.isFile())return;const n=Zi.dirname(e);Qi.existsSync(n)||es.mkdirsSync(n),Qi.writeFileSync(e,"")}};const rs=yo.fromCallback,us=p.default,os=we,is=Io,ss=fi.pathExists;var cs={createLink:rs((function(e,t,n){function r(e,t){os.link(e,t,(e=>{if(e)return n(e);n(null)}))}ss(t,((u,o)=>u?n(u):o?n(null):void os.lstat(e,(u=>{if(u)return u.message=u.message.replace("lstat","ensureLink"),n(u);const o=us.dirname(t);ss(o,((u,i)=>u?n(u):i?r(e,t):void is.mkdirs(o,(u=>{if(u)return n(u);r(e,t)}))))}))))})),createLinkSync:function(e,t){if(os.existsSync(t))return;try{os.lstatSync(e)}catch(e){throw e.message=e.message.replace("lstat","ensureLink"),e}const n=us.dirname(t);return os.existsSync(n)||is.mkdirsSync(n),os.linkSync(e,t)}};const as=p.default,ls=we,fs=fi.pathExists;var ds={symlinkPaths:function(e,t,n){if(as.isAbsolute(e))return ls.lstat(e,(t=>t?(t.message=t.message.replace("lstat","ensureSymlink"),n(t)):n(null,{toCwd:e,toDst:e})));{const r=as.dirname(t),u=as.join(r,e);return fs(u,((t,o)=>t?n(t):o?n(null,{toCwd:u,toDst:e}):ls.lstat(e,(t=>t?(t.message=t.message.replace("lstat","ensureSymlink"),n(t)):n(null,{toCwd:e,toDst:as.relative(r,e)})))))}},symlinkPathsSync:function(e,t){let n;if(as.isAbsolute(e)){if(n=ls.existsSync(e),!n)throw new Error("absolute srcpath does not exist");return{toCwd:e,toDst:e}}{const r=as.dirname(t),u=as.join(r,e);if(n=ls.existsSync(u),n)return{toCwd:u,toDst:e};if(n=ls.existsSync(e),!n)throw new Error("relative srcpath does not exist");return{toCwd:e,toDst:as.relative(r,e)}}}};const Ds=we;var ps={symlinkType:function(e,t,n){if(n="function"==typeof t?t:n,t="function"!=typeof t&&t)return n(null,t);Ds.lstat(e,((e,r)=>{if(e)return n(null,"file");t=r&&r.isDirectory()?"dir":"file",n(null,t)}))},symlinkTypeSync:function(e,t){let n;if(t)return t;try{n=Ds.lstatSync(e)}catch(e){return"file"}return n&&n.isDirectory()?"dir":"file"}};const Es=yo.fromCallback,ms=p.default,hs=we,ys=Io.mkdirs,Cs=Io.mkdirsSync,Fs=ds.symlinkPaths,gs=ds.symlinkPathsSync,As=ps.symlinkType,vs=ps.symlinkTypeSync,Ss=fi.pathExists;var ws={createSymlink:Es((function(e,t,n,r){r="function"==typeof n?n:r,n="function"!=typeof n&&n,Ss(t,((u,o)=>u?r(u):o?r(null):void Fs(e,t,((u,o)=>{if(u)return r(u);e=o.toDst,As(o.toCwd,n,((n,u)=>{if(n)return r(n);const o=ms.dirname(t);Ss(o,((n,i)=>n?r(n):i?hs.symlink(e,t,u,r):void ys(o,(n=>{if(n)return r(n);hs.symlink(e,t,u,r)}))))}))}))))})),createSymlinkSync:function(e,t,n){if(hs.existsSync(t))return;const r=gs(e,t);e=r.toDst,n=vs(r.toCwd,n);const u=ms.dirname(t);return hs.existsSync(u)||Cs(u),hs.symlinkSync(e,t,n)}};var Os,bs={createFile:ns.createFile,createFileSync:ns.createFileSync,ensureFile:ns.createFile,ensureFileSync:ns.createFileSync,createLink:cs.createLink,createLinkSync:cs.createLinkSync,ensureLink:cs.createLink,ensureLinkSync:cs.createLinkSync,createSymlink:ws.createSymlink,createSymlinkSync:ws.createSymlinkSync,ensureSymlink:ws.createSymlink,ensureSymlinkSync:ws.createSymlinkSync};try{Os=we}catch(e){Os=D.default}function _s(e,t){var n,r="\n";return"object"==typeof t&&null!==t&&(t.spaces&&(n=t.spaces),t.EOL&&(r=t.EOL)),JSON.stringify(e,t?t.replacer:null,n).replace(/\n/g,r)+r}function Bs(e){return Buffer.isBuffer(e)&&(e=e.toString("utf8")),e=e.replace(/^\uFEFF/,"")}var Ps={readFile:function(e,t,n){null==n&&(n=t,t={}),"string"==typeof t&&(t={encoding:t});var r=(t=t||{}).fs||Os,u=!0;"throws"in t&&(u=t.throws),r.readFile(e,t,(function(r,o){if(r)return n(r);var i;o=Bs(o);try{i=JSON.parse(o,t?t.reviver:null)}catch(t){return u?(t.message=e+": "+t.message,n(t)):n(null,null)}n(null,i)}))},readFileSync:function(e,t){"string"==typeof(t=t||{})&&(t={encoding:t});var n=t.fs||Os,r=!0;"throws"in t&&(r=t.throws);try{var u=n.readFileSync(e,t);return u=Bs(u),JSON.parse(u,t.reviver)}catch(t){if(r)throw t.message=e+": "+t.message,t;return null}},writeFile:function(e,t,n,r){null==r&&(r=n,n={});var u=(n=n||{}).fs||Os,o="";try{o=_s(t,n)}catch(e){return void(r&&r(e,null))}u.writeFile(e,o,n,r)},writeFileSync:function(e,t,n){var r=(n=n||{}).fs||Os,u=_s(t,n);return r.writeFileSync(e,u,n)}},ks=Ps;const xs=yo.fromCallback,Ns=ks;var Is={readJson:xs(Ns.readFile),readJsonSync:Ns.readFileSync,writeJson:xs(Ns.writeFile),writeJsonSync:Ns.writeFileSync};const Ts=p.default,Rs=Io,Ms=fi.pathExists,Ls=Is;var js=function(e,t,n,r){"function"==typeof n&&(r=n,n={});const u=Ts.dirname(e);Ms(u,((o,i)=>o?r(o):i?Ls.writeJson(e,t,n,r):void Rs.mkdirs(u,(u=>{if(u)return r(u);Ls.writeJson(e,t,n,r)}))))};const $s=we,Hs=p.default,Js=Io,Gs=Is;var Vs=function(e,t,n){const r=Hs.dirname(e);$s.existsSync(r)||Js.mkdirsSync(r),Gs.writeJsonSync(e,t,n)};const Us=yo.fromCallback,Ws=Is;Ws.outputJson=Us(js),Ws.outputJsonSync=Vs,Ws.outputJSON=Ws.outputJson,Ws.outputJSONSync=Ws.outputJsonSync,Ws.writeJSON=Ws.writeJson,Ws.writeJSONSync=Ws.writeJsonSync,Ws.readJSON=Ws.readJson,Ws.readJSONSync=Ws.readJsonSync;var zs=Ws;const Ks=we,qs=p.default,Ys=ci.copySync,Xs=Ji.removeSync,Zs=Io.mkdirpSync,Qs=Zo;function ec(e,t,n){try{Ks.renameSync(e,t)}catch(r){if("EXDEV"!==r.code)throw r;return function(e,t,n){const r={overwrite:n,errorOnExist:!0};return Ys(e,t,r),Xs(e)}(e,t,n)}}var tc=function(e,t,n){const r=(n=n||{}).overwrite||n.clobber||!1,{srcStat:u}=Qs.checkPathsSync(e,t,"move");return Qs.checkParentPathsSync(e,u,t,"move"),Zs(qs.dirname(t)),function(e,t,n){if(n)return Xs(t),ec(e,t,n);if(Ks.existsSync(t))throw new Error("dest already exists.");return ec(e,t,n)}(e,t,r)},nc={moveSync:tc};const rc=we,uc=p.default,oc=bi.copy,ic=Ji.remove,sc=Io.mkdirp,cc=fi.pathExists,ac=Zo;function lc(e,t,n,r){rc.rename(e,t,(u=>u?"EXDEV"!==u.code?r(u):function(e,t,n,r){const u={overwrite:n,errorOnExist:!0};oc(e,t,u,(t=>t?r(t):ic(e,r)))}(e,t,n,r):r()))}var fc=function(e,t,n,r){"function"==typeof n&&(r=n,n={});const u=n.overwrite||n.clobber||!1;ac.checkPaths(e,t,"move",((n,o)=>{if(n)return r(n);const{srcStat:i}=o;ac.checkParentPaths(e,i,t,"move",(n=>{if(n)return r(n);sc(uc.dirname(t),(n=>n?r(n):function(e,t,n,r){if(n)return ic(t,(u=>u?r(u):lc(e,t,n,r)));cc(t,((u,o)=>u?r(u):o?r(new Error("dest already exists.")):lc(e,t,n,r)))}(e,t,u,r)))}))}))};var dc={move:(0,yo.fromCallback)(fc)};const Dc=yo.fromCallback,pc=we,Ec=p.default,mc=Io,hc=fi.pathExists;var yc={outputFile:Dc((function(e,t,n,r){"function"==typeof n&&(r=n,n="utf8");const u=Ec.dirname(e);hc(u,((o,i)=>o?r(o):i?pc.writeFile(e,t,n,r):void mc.mkdirs(u,(u=>{if(u)return r(u);pc.writeFile(e,t,n,r)}))))})),outputFileSync:function(e,...t){const n=Ec.dirname(e);if(pc.existsSync(n))return pc.writeFileSync(e,...t);mc.mkdirsSync(n),pc.writeFileSync(e,...t)}};!function(e){e.exports=Object.assign({},ho,ci,bi,Yi,bs,zs,Io,nc,dc,yc,fi,Ji);const t=D.default;Object.getOwnPropertyDescriptor(t,"promises")&&Object.defineProperty(e.exports,"promises",{get:()=>t.promises})}(mo);const Cc=Nr.exports("streamroller:fileNameFormatter"),Fc=p.default;const gc=Nr.exports("streamroller:fileNameParser"),Ac=nu.exports;const vc=Nr.exports("streamroller:moveAndMaybeCompressFile"),Sc=mo.exports,wc=v.default;var Oc=async(e,t,n)=>{if(n=function(e){const t={mode:parseInt("0600",8),compress:!1},n=Object.assign({},t,e);return vc(`_parseOption: moveAndMaybeCompressFile called with option=${JSON.stringify(n)}`),n}(n),e!==t){if(await Sc.pathExists(e))if(vc(`moveAndMaybeCompressFile: moving file from ${e} to ${t} ${n.compress?"with":"without"} compress`),n.compress)await new Promise(((r,u)=>{let o=!1;const i=Sc.createWriteStream(t,{mode:n.mode,flags:"wx"}).on("open",(()=>{o=!0;const t=Sc.createReadStream(e).on("open",(()=>{t.pipe(wc.createGzip()).pipe(i)})).on("error",(t=>{vc(`moveAndMaybeCompressFile: error reading ${e}`,t),i.destroy(t)}))})).on("finish",(()=>{vc(`moveAndMaybeCompressFile: finished compressing ${t}, deleting ${e}`),Sc.unlink(e).then(r).catch((t=>{vc(`moveAndMaybeCompressFile: error deleting ${e}, truncating instead`,t),Sc.truncate(e).then(r).catch((t=>{vc(`moveAndMaybeCompressFile: error truncating ${e}`,t),u(t)}))}))})).on("error",(e=>{o?(vc(`moveAndMaybeCompressFile: error writing ${t}, deleting`,e),Sc.unlink(t).then((()=>{u(e)})).catch((e=>{vc(`moveAndMaybeCompressFile: error deleting ${t}`,e),u(e)}))):(vc(`moveAndMaybeCompressFile: error creating ${t}`,e),u(e))}))})).catch((()=>{}));else{vc(`moveAndMaybeCompressFile: renaming ${e} to ${t}`);try{await Sc.move(e,t,{overwrite:!0})}catch(n){if(vc(`moveAndMaybeCompressFile: error renaming ${e} to ${t}`,n),"ENOENT"!==n.code){vc("moveAndMaybeCompressFile: trying copy+truncate instead");try{await Sc.copy(e,t,{overwrite:!0}),await Sc.truncate(e)}catch(e){vc("moveAndMaybeCompressFile: error copy+truncate",e)}}}}}else vc("moveAndMaybeCompressFile: source and target are the same, not doing anything")};const bc=Nr.exports("streamroller:RollingFileWriteStream"),_c=mo.exports,Bc=p.default,Pc=E.default,kc=()=>new Date,xc=nu.exports,{Writable:Nc}=C.default,Ic=({file:e,keepFileExt:t,needsIndex:n,alwaysIncludeDate:r,compress:u,fileNameSep:o})=>{let i=o||".";const s=Fc.join(e.dir,e.name),c=t=>t+e.ext,a=(e,t,r)=>!n&&r||!t?e:e+i+t,l=(e,t,n)=>(t>0||r)&&n?e+i+n:e,f=(e,t)=>t&&u?e+".gz":e,d=t?[l,a,c,f]:[c,l,a,f];return({date:e,index:t})=>(Cc(`_formatFileName: date=${e}, index=${t}`),d.reduce(((n,r)=>r(n,t,e)),s))},Tc=({file:e,keepFileExt:t,pattern:n,fileNameSep:r})=>{let u=r||".";const o="__NOT_MATCHING__";let i=[(e,t)=>e.endsWith(".gz")?(gc("it is gzipped"),t.isCompressed=!0,e.slice(0,-1*".gz".length)):e,t?t=>t.startsWith(e.name)&&t.endsWith(e.ext)?(gc("it starts and ends with the right things"),t.slice(e.name.length+1,-1*e.ext.length)):o:t=>t.startsWith(e.base)?(gc("it starts with the right things"),t.slice(e.base.length+1)):o,n?(e,t)=>{const r=e.split(u);let o=r[r.length-1];gc("items: ",r,", indexStr: ",o);let i=e;void 0!==o&&o.match(/^\d+$/)?(i=e.slice(0,-1*(o.length+1)),gc(`dateStr is ${i}`),n&&!i&&(i=o,o="0")):o="0";try{const r=Ac.parse(n,i,new Date(0,0));return Ac.asString(n,r)!==i?e:(t.index=parseInt(o,10),t.date=i,t.timestamp=r.getTime(),"")}catch(t){return gc(`Problem parsing ${i} as ${n}, error was: `,t),e}}:(e,t)=>e.match(/^\d+$/)?(gc("it has an index"),t.index=parseInt(e,10),""):e];return e=>{let t={filename:e,index:0,isCompressed:!1};return i.reduce(((e,n)=>n(e,t)),e)?null:t}},Rc=Oc;var Mc=class extends Nc{constructor(e,t){if(bc(`constructor: creating RollingFileWriteStream. path=${e}`),"string"!=typeof e||0===e.length)throw new Error(`Invalid filename: ${e}`);if(e.endsWith(Bc.sep))throw new Error(`Filename is a directory: ${e}`);0===e.indexOf(`~${Bc.sep}`)&&(e=e.replace("~",Pc.homedir())),super(t),this.options=this._parseOption(t),this.fileObject=Bc.parse(e),""===this.fileObject.dir&&(this.fileObject=Bc.parse(Bc.join(process.cwd(),e))),this.fileFormatter=Ic({file:this.fileObject,alwaysIncludeDate:this.options.alwaysIncludePattern,needsIndex:this.options.maxSize 0`)}else delete n.maxSize;if(n.numBackups||0===n.numBackups){if(n.numBackups<0)throw new Error(`options.numBackups (${n.numBackups}) should be >= 0`);if(n.numBackups>=Number.MAX_SAFE_INTEGER)throw new Error(`options.numBackups (${n.numBackups}) should be < Number.MAX_SAFE_INTEGER`);n.numToKeep=n.numBackups+1}else if(n.numToKeep<=0)throw new Error(`options.numToKeep (${n.numToKeep}) should be > 0`);return bc(`_parseOption: creating stream with option=${JSON.stringify(n)}`),n}_final(e){this.currentFileStream.end("",this.options.encoding,e)}_write(e,t,n){this._shouldRoll().then((()=>{bc(`_write: writing chunk. file=${this.currentFileStream.path} state=${JSON.stringify(this.state)} chunk=${e}`),this.currentFileStream.write(e,t,(t=>{this.state.currentSize+=e.length,n(t)}))}))}async _shouldRoll(){(this._dateChanged()||this._tooBig())&&(bc(`_shouldRoll: rolling because dateChanged? ${this._dateChanged()} or tooBig? ${this._tooBig()}`),await this._roll())}_dateChanged(){return this.state.currentDate&&this.state.currentDate!==xc(this.options.pattern,kc())}_tooBig(){return this.state.currentSize>=this.options.maxSize}_roll(){return bc("_roll: closing the current stream"),new Promise(((e,t)=>{this.currentFileStream.end("",this.options.encoding,(()=>{this._moveOldFiles().then(e).catch(t)}))}))}async _moveOldFiles(){const e=await this._getExistingFiles();for(let t=(this.state.currentDate?e.filter((e=>e.date===this.state.currentDate)):e).length;t>=0;t--){bc(`_moveOldFiles: i = ${t}`);const e=this.fileFormatter({date:this.state.currentDate,index:t}),n=this.fileFormatter({date:this.state.currentDate,index:t+1}),r={compress:this.options.compress&&0===t,mode:this.options.mode};await Rc(e,n,r)}this.state.currentSize=0,this.state.currentDate=this.state.currentDate?xc(this.options.pattern,kc()):null,bc(`_moveOldFiles: finished rolling files. state=${JSON.stringify(this.state)}`),this._renewWriteStream(),await new Promise(((e,t)=>{this.currentFileStream.write("","utf8",(()=>{this._clean().then(e).catch(t)}))}))}async _getExistingFiles(){const e=await _c.readdir(this.fileObject.dir).catch((()=>[]));bc(`_getExistingFiles: files=${e}`);const t=e.map((e=>this.fileNameParser(e))).filter((e=>e)),n=e=>(e.timestamp?e.timestamp:kc().getTime())-e.index;return t.sort(((e,t)=>n(e)-n(t))),t}_renewWriteStream(){const e=this.fileFormatter({date:this.state.currentDate,index:0}),t=e=>{try{return _c.mkdirSync(e,{recursive:!0})}catch(n){if("ENOENT"===n.code)return t(Bc.dirname(e)),t(e);if("EEXIST"!==n.code&&"EROFS"!==n.code)throw n;try{if(_c.statSync(e).isDirectory())return e;throw n}catch(e){throw n}}};t(this.fileObject.dir);const n={flags:this.options.flags,encoding:this.options.encoding,mode:this.options.mode};var r,u;_c.appendFileSync(e,"",(r={...n},u="flags",r["flag"]=r[u],delete r[u],r)),this.currentFileStream=_c.createWriteStream(e,n),this.currentFileStream.on("error",(e=>{this.emit("error",e)}))}async _clean(){const e=await this._getExistingFiles();if(bc(`_clean: numToKeep = ${this.options.numToKeep}, existingFiles = ${e.length}`),bc("_clean: existing files are: ",e),this._tooManyFiles(e.length)){const n=e.slice(0,e.length-this.options.numToKeep).map((e=>Bc.format({dir:this.fileObject.dir,base:e.filename})));await(t=n,bc(`deleteFiles: files to delete: ${t}`),Promise.all(t.map((e=>_c.unlink(e).catch((t=>{bc(`deleteFiles: error when unlinking ${e}, ignoring. Error was ${t}`)}))))))}var t}_tooManyFiles(e){return this.options.numToKeep>0&&e>this.options.numToKeep}};const Lc=Mc;var jc=class extends Lc{constructor(e,t,n,r){r||(r={}),t&&(r.maxSize=t),r.numBackups||0===r.numBackups||(n||0===n||(n=1),r.numBackups=n),super(e,r),this.backups=r.numBackups,this.size=this.options.maxSize}get theStream(){return this.currentFileStream}};const $c=Mc;var Hc={RollingFileWriteStream:Mc,RollingFileStream:jc,DateRollingFileStream:class extends $c{constructor(e,t,n){t&&"object"==typeof t&&(n=t,t=null),n||(n={}),t||(t="yyyy-MM-dd"),n.pattern=t,n.numBackups||0===n.numBackups?n.daysToKeep=n.numBackups:(n.daysToKeep||0===n.daysToKeep?process.emitWarning("options.daysToKeep is deprecated due to the confusion it causes when used together with file size rolling. Please use options.numBackups instead.","DeprecationWarning","streamroller-DEP0001"):n.daysToKeep=1,n.numBackups=n.daysToKeep),super(e,n),this.mode=this.options.mode}get theStream(){return this.currentFileStream}}};const Jc=Nr.exports("log4js:file"),Gc=p.default,Vc=Hc,Uc=E.default.EOL;let Wc=!1;const zc=new Set;function Kc(){zc.forEach((e=>{e.sighupHandler()}))}function qc(e,t,n,r){const u=new Vc.RollingFileStream(e,t,n,r);return u.on("error",(t=>{console.error("log4js.fileAppender - Writing to file %s, error happened ",e,t)})),u.on("drain",(()=>{process.emit("log4js:pause",!1)})),u}Eo.configure=function(e,t){let n=t.basicLayout;return e.layout&&(n=t.layout(e.layout.type,e.layout)),e.mode=e.mode||384,function(e,t,n,r,u,o){e=Gc.normalize(e),Jc("Creating file appender (",e,", ",n,", ",r=r||0===r?r:5,", ",u,", ",o,")");let i=qc(e,n,r,u);const s=function(e){if(i.writable){if(!0===u.removeColor){const t=/\x1b[[0-9;]*m/g;e.data=e.data.map((e=>"string"==typeof e?e.replace(t,""):e))}i.write(t(e,o)+Uc,"utf8")||process.emit("log4js:pause",!0)}};return s.reopen=function(){i.end((()=>{i=qc(e,n,r,u)}))},s.sighupHandler=function(){Jc("SIGHUP handler called."),s.reopen()},s.shutdown=function(e){zc.delete(s),0===zc.size&&Wc&&(process.removeListener("SIGHUP",Kc),Wc=!1),i.end("","utf-8",e)},zc.add(s),Wc||(process.on("SIGHUP",Kc),Wc=!0),s}(e.filename,n,e.maxLogSize,e.backups,e,e.timezoneOffset)};var Yc={};const Xc=Hc,Zc=E.default.EOL;function Qc(e,t,n,r,u){r.maxSize=r.maxLogSize;const o=function(e,t,n){const r=new Xc.DateRollingFileStream(e,t,n);return r.on("error",(t=>{console.error("log4js.dateFileAppender - Writing to file %s, error happened ",e,t)})),r.on("drain",(()=>{process.emit("log4js:pause",!1)})),r}(e,t,r),i=function(e){o.writable&&(o.write(n(e,u)+Zc,"utf8")||process.emit("log4js:pause",!0))};return i.shutdown=function(e){o.end("","utf-8",e)},i}Yc.configure=function(e,t){let n=t.basicLayout;return e.layout&&(n=t.layout(e.layout.type,e.layout)),e.alwaysIncludePattern||(e.alwaysIncludePattern=!1),e.mode=e.mode||384,Qc(e.filename,e.pattern,n,e,e.timezoneOffset)};var ea={};const ta=Nr.exports("log4js:fileSync"),na=p.default,ra=D.default,ua=E.default.EOL||"\n";function oa(e,t){if(ra.existsSync(e))return;const n=ra.openSync(e,t.flags,t.mode);ra.closeSync(n)}class ia{constructor(e,t,n,r){ta("In RollingFileStream"),function(){if(!e||!t||t<=0)throw new Error("You must specify a filename and file size")}(),this.filename=e,this.size=t,this.backups=n,this.options=r,this.currentSize=0,this.currentSize=function(e){let t=0;try{t=ra.statSync(e).size}catch(t){oa(e,r)}return t}(this.filename)}shouldRoll(){return ta("should roll with current size %d, and max size %d",this.currentSize,this.size),this.currentSize>=this.size}roll(e){const t=this,n=new RegExp(`^${na.basename(e)}`);function r(e){return n.test(e)}function u(t){return parseInt(t.substring(`${na.basename(e)}.`.length),10)||0}function o(e,t){return u(e)>u(t)?1:u(e) ${e}.${r+1}`),ra.renameSync(na.join(na.dirname(e),n),`${e}.${r+1}`)}}ta("Rolling, rolling, rolling"),ta("Renaming the old files"),ra.readdirSync(na.dirname(e)).filter(r).sort(o).reverse().forEach(i)}write(e,t){const n=this;ta("in write"),this.shouldRoll()&&(this.currentSize=0,this.roll(this.filename)),ta("writing the chunk to the file"),n.currentSize+=e.length,ra.appendFileSync(n.filename,e)}}ea.configure=function(e,t){let n=t.basicLayout;e.layout&&(n=t.layout(e.layout.type,e.layout));const r={flags:e.flags||"a",encoding:e.encoding||"utf8",mode:e.mode||384};return function(e,t,n,r,u,o){ta("fileSync appender created");const i=function(e,t,n){let r;var u;return t?r=new ia(e,t,n,o):(oa(u=e,o),r={write(e){ra.appendFileSync(u,e)}}),r}(e=na.normalize(e),n,r=r||0===r?r:5);return e=>{i.write(t(e,u)+ua)}}(e.filename,n,e.maxLogSize,e.backups,e.timezoneOffset,r)};var sa={};const ca=Nr.exports("log4js:tcp"),aa=S.default;sa.configure=function(e,t){ca(`configure with config = ${e}`);let n=function(e){return e.serialise()};return e.layout&&(n=t.layout(e.layout.type,e.layout)),function(e,t){let n=!1;const r=[];let u,o=3,i="__LOG4JS__";function s(e){ca("Writing log event to socket"),n=u.write(`${t(e)}${i}`,"utf8")}function c(){let e;for(ca("emptying buffer");e=r.shift();)s(e)}function a(e){n?s(e):(ca("buffering log event because it cannot write at the moment"),r.push(e))}return function t(){ca(`appender creating socket to ${e.host||"localhost"}:${e.port||5e3}`),i=`${e.endMsg||"__LOG4JS__"}`,u=aa.createConnection(e.port||5e3,e.host||"localhost"),u.on("connect",(()=>{ca("socket connected"),c(),n=!0})),u.on("drain",(()=>{ca("drain event received, emptying buffer"),n=!0,c()})),u.on("timeout",u.end.bind(u)),u.on("error",(e=>{ca("connection error",e),n=!1,c()})),u.on("close",t)}(),a.shutdown=function(e){ca("shutdown called"),r.length&&o?(ca("buffer has items, waiting 100ms to empty"),o-=1,setTimeout((()=>{a.shutdown(e)}),100)):(u.removeAllListeners("close"),u.end(e))},a}(e,n)};const la=p.default,fa=Nr.exports("log4js:appenders"),da=tu,Da=eo,pa=gu,Ea=hu,ma=to,ha=new Map;ha.set("console",oo),ha.set("stdout",so),ha.set("stderr",co),ha.set("logLevelFilter",ao),ha.set("categoryFilter",lo),ha.set("noLogFilter",Do),ha.set("file",Eo),ha.set("dateFile",Yc),ha.set("fileSync",ea),ha.set("tcp",sa);const ya=new Map,Ca=(e,t)=>{fa("Loading module from ",e);try{return require(e)}catch(n){return void da.throwExceptionIf(t,"MODULE_NOT_FOUND"!==n.code,`appender "${e}" could not be loaded (error was: ${n})`)}},Fa=new Set,ga=(e,t)=>{if(ya.has(e))return ya.get(e);if(!t.appenders[e])return!1;if(Fa.has(e))throw new Error(`Dependency loop detected for appender ${e}.`);Fa.add(e),fa(`Creating appender ${e}`);const n=Aa(e,t);return Fa.delete(e),ya.set(e,n),n},Aa=(e,t)=>{const n=t.appenders[e],r=n.type.configure?n.type:((e,t)=>ha.get(e)||Ca(`./${e}`,t)||Ca(e,t)||require.main&&Ca(la.join(la.dirname(require.main.filename),e),t)||Ca(la.join(process.cwd(),e),t))(n.type,t);return da.throwExceptionIf(t,da.not(r),`appender "${e}" is not valid (type "${n.type}" could not be found)`),r.appender&&fa(`DEPRECATION: Appender ${n.type} exports an appender function.`),r.shutdown&&fa(`DEPRECATION: Appender ${n.type} exports a shutdown function.`),fa(`${e}: clustering.isMaster ? ${Da.isMaster()}`),fa(`${e}: appenderModule is ${F.default.inspect(r)}`),Da.onlyOnMaster((()=>(fa(`calling appenderModule.configure for ${e} / ${n.type}`),r.configure(ma.modifyConfig(n),Ea,(e=>ga(e,t)),pa))),(()=>{}))},va=e=>{ya.clear(),Fa.clear();const t=[];Object.values(e.categories).forEach((e=>{t.push(...e.appenders)})),Object.keys(e.appenders).forEach((n=>{(t.includes(n)||"tcp-server"===e.appenders[n].type)&&ga(n,e)}))},Sa=()=>{va({appenders:{out:{type:"stdout"}},categories:{default:{appenders:["out"],level:"trace"}}})};Sa(),da.addListener((e=>{da.throwExceptionIf(e,da.not(da.anObject(e.appenders)),'must have a property "appenders" of type object.');const t=Object.keys(e.appenders);da.throwExceptionIf(e,da.not(t.length),"must define at least one appender."),t.forEach((t=>{da.throwExceptionIf(e,da.not(e.appenders[t].type),`appender "${t}" is not valid (must be an object with property "type")`)}))})),da.addListener(va),Au.exports=ya,Au.exports.init=Sa;var wa={exports:{}};!function(e){const t=Nr.exports("log4js:categories"),n=tu,r=gu,u=Au.exports,o=new Map;function i(e,t,n){if(!1===t.inherit)return;const r=n.lastIndexOf(".");if(r<0)return;const u=n.substring(0,r);let o=e.categories[u];o||(o={inherit:!0,appenders:[]}),i(e,o,u),!e.categories[u]&&o.appenders&&o.appenders.length&&o.level&&(e.categories[u]=o),t.appenders=t.appenders||[],t.level=t.level||o.level,o.appenders.forEach((e=>{t.appenders.includes(e)||t.appenders.push(e)})),t.parent=o}function s(e){if(!e.categories)return;Object.keys(e.categories).forEach((t=>{const n=e.categories[t];i(e,n,t)}))}n.addPreProcessingListener((e=>s(e))),n.addListener((e=>{n.throwExceptionIf(e,n.not(n.anObject(e.categories)),'must have a property "categories" of type object.');const t=Object.keys(e.categories);n.throwExceptionIf(e,n.not(t.length),"must define at least one category."),t.forEach((t=>{const o=e.categories[t];n.throwExceptionIf(e,[n.not(o.appenders),n.not(o.level)],`category "${t}" is not valid (must be an object with properties "appenders" and "level")`),n.throwExceptionIf(e,n.not(Array.isArray(o.appenders)),`category "${t}" is not valid (appenders must be an array of appender names)`),n.throwExceptionIf(e,n.not(o.appenders.length),`category "${t}" is not valid (appenders must contain at least one appender name)`),Object.prototype.hasOwnProperty.call(o,"enableCallStack")&&n.throwExceptionIf(e,"boolean"!=typeof o.enableCallStack,`category "${t}" is not valid (enableCallStack must be boolean type)`),o.appenders.forEach((r=>{n.throwExceptionIf(e,n.not(u.get(r)),`category "${t}" is not valid (appender "${r}" is not defined)`)})),n.throwExceptionIf(e,n.not(r.getLevel(o.level)),`category "${t}" is not valid (level "${o.level}" not recognised; valid levels are ${r.levels.join(", ")})`)})),n.throwExceptionIf(e,n.not(e.categories.default),'must define a "default" category.')}));const c=e=>{o.clear();Object.keys(e.categories).forEach((n=>{const i=e.categories[n],s=[];i.appenders.forEach((e=>{s.push(u.get(e)),t(`Creating category ${n}`),o.set(n,{appenders:s,level:r.getLevel(i.level),enableCallStack:i.enableCallStack||!1})}))}))},a=()=>{c({categories:{default:{appenders:["out"],level:"OFF"}}})};a(),n.addListener(c);const l=e=>(t(`configForCategory: searching for config for ${e}`),o.has(e)?(t(`configForCategory: ${e} exists in config, returning it`),o.get(e)):e.indexOf(".")>0?(t(`configForCategory: ${e} has hierarchy, searching for parents`),l(e.substring(0,e.lastIndexOf(".")))):(t("configForCategory: returning config for default category"),l("default")));e.exports=o,e.exports=Object.assign(e.exports,{appendersForCategory:e=>l(e).appenders,getLevelForCategory:e=>l(e).level,setLevelForCategory:(e,n)=>{let r=o.get(e);if(t(`setLevelForCategory: found ${r} for ${e}`),!r){const n=l(e);t(`setLevelForCategory: no config found for category, found ${n} for parents of ${e}`),r={appenders:n.appenders}}r.level=n,o.set(e,r)},getEnableCallStackForCategory:e=>!0===l(e).enableCallStack,setEnableCallStackForCategory:(e,t)=>{l(e).enableCallStack=t},init:a})}(wa);const Oa=Nr.exports("log4js:logger"),ba=Hu,_a=gu,Ba=eo,Pa=wa.exports,ka=tu,xa=/at (?:(.+)\s+\()?(?:(.+?):(\d+)(?::(\d+))?|([^)]+))\)?/;function Na(e,t=4){const n=e.stack.split("\n").slice(t),r=xa.exec(n[0]);return r&&6===r.length?{functionName:r[1],fileName:r[2],lineNumber:parseInt(r[3],10),columnNumber:parseInt(r[4],10),callStack:n.join("\n")}:null}class Ia{constructor(e){if(!e)throw new Error("No category provided.");this.category=e,this.context={},this.parseCallStack=Na,Oa(`Logger created (${this.category}, ${this.level})`)}get level(){return _a.getLevel(Pa.getLevelForCategory(this.category),_a.TRACE)}set level(e){Pa.setLevelForCategory(this.category,_a.getLevel(e,this.level))}get useCallStack(){return Pa.getEnableCallStackForCategory(this.category)}set useCallStack(e){Pa.setEnableCallStackForCategory(this.category,!0===e)}log(e,...t){let n=_a.getLevel(e);n||(this._log(_a.WARN,"log4js:logger.log: invalid value for log-level as first parameter given: ",e),n=_a.INFO),this.isLevelEnabled(n)&&this._log(n,t)}isLevelEnabled(e){return this.level.isLessThanOrEqualTo(e)}_log(e,t){Oa(`sending log data (${e}) to appenders`);const n=new ba(this.category,e,t,this.context,this.useCallStack&&this.parseCallStack(new Error));Ba.send(n)}addContext(e,t){this.context[e]=t}removeContext(e){delete this.context[e]}clearContext(){this.context={}}setParseCallStackFunction(e){this.parseCallStack=e}}function Ta(e){const t=_a.getLevel(e),n=t.toString().toLowerCase().replace(/_([a-z])/g,(e=>e[1].toUpperCase())),r=n[0].toUpperCase()+n.slice(1);Ia.prototype[`is${r}Enabled`]=function(){return this.isLevelEnabled(t)},Ia.prototype[n]=function(...e){this.log(t,...e)}}_a.levels.forEach(Ta),ka.addListener((()=>{_a.levels.forEach(Ta)}));var Ra=Ia;const Ma=gu;function La(e){return e.originalUrl||e.url}function ja(e,t){for(let n=0;ne.source?e.source:e));t=new RegExp(n.join("|"))}return t}(t.nolog);return(e,i,s)=>{if(e._logging)return s();if(o&&o.test(e.originalUrl))return s();if(n.isLevelEnabled(r)||"auto"===t.level){const o=new Date,{writeHead:s}=i;e._logging=!0,i.writeHead=(e,t)=>{i.writeHead=s,i.writeHead(e,t),i.__statusCode=e,i.__headers=t||{}},i.on("finish",(()=>{i.responseTime=new Date-o,i.statusCode&&"auto"===t.level&&(r=Ma.INFO,i.statusCode>=300&&(r=Ma.WARN),i.statusCode>=400&&(r=Ma.ERROR)),r=function(e,t,n){let r=t;if(n){const t=n.find((t=>{let n=!1;return n=t.from&&t.to?e>=t.from&&e<=t.to:-1!==t.codes.indexOf(e),n}));t&&(r=Ma.getLevel(t.level,r))}return r}(i.statusCode,r,t.statusRules);const s=function(e,t,n){const r=[];return r.push({token:":url",replacement:La(e)}),r.push({token:":protocol",replacement:e.protocol}),r.push({token:":hostname",replacement:e.hostname}),r.push({token:":method",replacement:e.method}),r.push({token:":status",replacement:t.__statusCode||t.statusCode}),r.push({token:":response-time",replacement:t.responseTime}),r.push({token:":date",replacement:(new Date).toUTCString()}),r.push({token:":referrer",replacement:e.headers.referer||e.headers.referrer||""}),r.push({token:":http-version",replacement:`${e.httpVersionMajor}.${e.httpVersionMinor}`}),r.push({token:":remote-addr",replacement:e.headers["x-forwarded-for"]||e.ip||e._remoteAddress||e.socket&&(e.socket.remoteAddress||e.socket.socket&&e.socket.socket.remoteAddress)}),r.push({token:":user-agent",replacement:e.headers["user-agent"]}),r.push({token:":content-length",replacement:t.getHeader("content-length")||t.__headers&&t.__headers["Content-Length"]||"-"}),r.push({token:/:req\[([^\]]+)]/g,replacement:(t,n)=>e.headers[n.toLowerCase()]}),r.push({token:/:res\[([^\]]+)]/g,replacement:(e,n)=>t.getHeader(n.toLowerCase())||t.__headers&&t.__headers[n]}),(e=>{const t=e.concat();for(let e=0;eja(e,s)));t&&n.log(r,t)}else n.log(r,ja(u,s));t.context&&n.removeContext("res")}))}return s()}},nl=Va;let rl=!1;function ul(e){if(!rl)return;Ua("Received log event ",e);Za.appendersForCategory(e.categoryName).forEach((t=>{t(e)}))}function ol(e){rl&&il();let t=e;return"string"==typeof t&&(t=function(e){Ua(`Loading configuration from ${e}`);try{return JSON.parse(Wa.readFileSync(e,"utf8"))}catch(t){throw new Error(`Problem reading config from file "${e}". Error was ${t.message}`,t)}}(e)),Ua(`Configuration is ${t}`),Ka.configure(za(t)),el.onMessage(ul),rl=!0,sl}function il(e){Ua("Shutdown called. Disabling all log writing."),rl=!1;const t=Array.from(Xa.values());Xa.init(),Za.init();const n=t.reduceRight(((e,t)=>t.shutdown?e+1:e),0);if(0===n)return Ua("No appenders with shutdown functions found."),void 0!==e&&e();let r,u=0;function o(t){r=r||t,u+=1,Ua(`Appender shutdowns complete: ${u} / ${n}`),u>=n&&(Ua("All shutdown functions completed."),e&&e(r))}return Ua(`Found ${n} appenders with shutdown functions.`),t.filter((e=>e.shutdown)).forEach((e=>e.shutdown(o))),null}const sl={getLogger:function(e){return rl||ol(process.env.LOG4JS_CONFIG||{appenders:{out:{type:"stdout"}},categories:{default:{appenders:["out"],level:"OFF"}}}),new Qa(e||"default")},configure:ol,shutdown:il,connectLogger:tl,levels:Ya,addLayout:qa.addLayout,recording:function(){return nl}};var cl=sl,al={};Object.defineProperty(al,"__esModule",{value:!0}),al.levelMap=al.getLevel=al.setCategoriesLevel=al.getConfiguration=al.setConfiguration=void 0;const ll=cl;let fl={appenders:{debug:{type:"stdout",layout:{type:"pattern",pattern:"[%d] > hvigor %p %c %[%m%]"}},info:{type:"stdout",layout:{type:"pattern",pattern:"[%d] > hvigor %[%m%]"}},"no-pattern-info":{type:"stdout",layout:{type:"pattern",pattern:"%m"}},wrong:{type:"stderr",layout:{type:"pattern",pattern:"[%d] > hvigor %[%p: %m%]"}},"just-debug":{type:"logLevelFilter",appender:"debug",level:"debug",maxLevel:"debug"},"just-info":{type:"logLevelFilter",appender:"info",level:"info",maxLevel:"info"},"just-wrong":{type:"logLevelFilter",appender:"wrong",level:"warn",maxLevel:"error"}},categories:{default:{appenders:["just-debug","just-info","just-wrong"],level:"debug"},"no-pattern-info":{appenders:["no-pattern-info"],level:"info"}}};al.setConfiguration=e=>{fl=e};al.getConfiguration=()=>fl;let dl=ll.levels.DEBUG;al.setCategoriesLevel=(e,t)=>{dl=e;const n=fl.categories;for(const r in n)(null==t?void 0:t.includes(r))||Object.prototype.hasOwnProperty.call(n,r)&&(n[r].level=e.levelStr)};al.getLevel=()=>dl,al.levelMap=new Map([["ALL",ll.levels.ALL],["MARK",ll.levels.MARK],["TRACE",ll.levels.TRACE],["DEBUG",ll.levels.DEBUG],["INFO",ll.levels.INFO],["WARN",ll.levels.WARN],["ERROR",ll.levels.ERROR],["FATAL",ll.levels.FATAL],["OFF",ll.levels.OFF]]);var Dl=w&&w.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var u=Object.getOwnPropertyDescriptor(t,n);u&&!("get"in u?!t.__esModule:u.writable||u.configurable)||(u={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,u)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),pl=w&&w.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),El=w&&w.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&Dl(t,e,n);return pl(t,e),t};Object.defineProperty(xr,"__esModule",{value:!0}),xr.evaluateLogLevel=xr.HvigorLogger=void 0;const ml=El(cl),hl=cl,yl=El(F.default),Cl=al;class Fl{constructor(e){ml.configure((0,Cl.getConfiguration)()),this._logger=ml.getLogger(e),this._logger.level=(0,Cl.getLevel)()}static getLogger(e){return new Fl(e)}log(e,...t){this._logger.log(e,...t)}debug(e,...t){this._logger.debug(e,...t)}info(e,...t){this._logger.info(e,...t)}warn(e,...t){void 0!==e&&""!==e&&this._logger.warn(e,...t)}error(e,...t){this._logger.error(e,...t)}_printTaskExecuteInfo(e,t){this.info(`Finished :${e}... after ${t}`)}_printFailedTaskInfo(e){this.error(`Failed :${e}... `)}_printDisabledTaskInfo(e){this.info(`Disabled :${e}... `)}_printUpToDateTaskInfo(e){this.info(`UP-TO-DATE :${e}... `)}errorMessageExit(e,...t){throw new Error(yl.format(e,...t))}errorExit(e,t,...n){t&&this._logger.error(t,n),this._logger.error(e.stack)}setLevel(e,t){(0,Cl.setCategoriesLevel)(e,t),ml.shutdown(),ml.configure((0,Cl.getConfiguration)())}getLevel(){return this._logger.level}configure(e){const t=(0,Cl.getConfiguration)(),n={appenders:{...t.appenders,...e.appenders},categories:{...t.categories,...e.categories}};(0,Cl.setConfiguration)(n),ml.shutdown(),ml.configure(n)}}xr.HvigorLogger=Fl,xr.evaluateLogLevel=function(e,t){t.debug?e.setLevel(hl.levels.DEBUG):t.warn?e.setLevel(hl.levels.WARN):t.error?e.setLevel(hl.levels.ERROR):e.setLevel(hl.levels.INFO)};var gl=w&&w.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(X,"__esModule",{value:!0}),X.parseJsonText=X.parseJsonFile=void 0;const Al=Z,vl=gl(kr),Sl=gl(p.default),wl=gl(E.default),Ol=xr.HvigorLogger.getLogger("parse-json-util");var bl;!function(e){e[e.Char=0]="Char",e[e.EOF=1]="EOF",e[e.Identifier=2]="Identifier"}(bl||(bl={}));let _l,Bl,Pl,kl,xl,Nl,Il="start",Tl=[],Rl=0,Ml=1,Ll=0,jl=!1,$l="default",Hl="'",Jl=1;function Gl(e,t=!1){Bl=String(e),Il="start",Tl=[],Rl=0,Ml=1,Ll=0,kl=void 0,jl=t;do{_l=Vl(),Xl[Il]()}while("eof"!==_l.type);return kl}function Vl(){for($l="default",xl="",Hl="'",Jl=1;;){Nl=Ul();const e=zl[$l]();if(e)return e}}function Ul(){if(Bl[Rl])return String.fromCodePoint(Bl.codePointAt(Rl))}function Wl(){const e=Ul();return"\n"===e?(Ml++,Ll=0):e?Ll+=e.length:Ll++,e&&(Rl+=e.length),e}X.parseJsonFile=function(e,t=!1,n="utf-8"){const r=vl.default.readFileSync(Sl.default.resolve(e),{encoding:n});try{return Gl(r,t)}catch(t){if(t instanceof SyntaxError){const n=t.message.split("at");2===n.length&&Ol.errorMessageExit(`${n[0].trim()}${wl.default.EOL}\t at ${e}:${n[1].trim()}`)}Ol.errorMessageExit(`${e} is not in valid JSON/JSON5 format.`)}},X.parseJsonText=Gl;const zl={default(){switch(Nl){case"/":return Wl(),void($l="comment");case void 0:return Wl(),Kl("eof")}if(!Al.JudgeUtil.isIgnoreChar(Nl)&&!Al.JudgeUtil.isSpaceSeparator(Nl))return zl[Il]();Wl()},start(){$l="value"},beforePropertyName(){switch(Nl){case"$":case"_":return xl=Wl(),void($l="identifierName");case"\\":return Wl(),void($l="identifierNameStartEscape");case"}":return Kl("punctuator",Wl());case'"':case"'":return Hl=Nl,Wl(),void($l="string")}if(Al.JudgeUtil.isIdStartChar(Nl))return xl+=Wl(),void($l="identifierName");throw tf(bl.Char,Wl())},afterPropertyName(){if(":"===Nl)return Kl("punctuator",Wl());throw tf(bl.Char,Wl())},beforePropertyValue(){$l="value"},afterPropertyValue(){switch(Nl){case",":case"}":return Kl("punctuator",Wl())}throw tf(bl.Char,Wl())},beforeArrayValue(){if("]"===Nl)return Kl("punctuator",Wl());$l="value"},afterArrayValue(){switch(Nl){case",":case"]":return Kl("punctuator",Wl())}throw tf(bl.Char,Wl())},end(){throw tf(bl.Char,Wl())},comment(){switch(Nl){case"*":return Wl(),void($l="multiLineComment");case"/":return Wl(),void($l="singleLineComment")}throw tf(bl.Char,Wl())},multiLineComment(){switch(Nl){case"*":return Wl(),void($l="multiLineCommentAsterisk");case void 0:throw tf(bl.Char,Wl())}Wl()},multiLineCommentAsterisk(){switch(Nl){case"*":return void Wl();case"/":return Wl(),void($l="default");case void 0:throw tf(bl.Char,Wl())}Wl(),$l="multiLineComment"},singleLineComment(){switch(Nl){case"\n":case"\r":case"\u2028":case"\u2029":return Wl(),void($l="default");case void 0:return Wl(),Kl("eof")}Wl()},value(){switch(Nl){case"{":case"[":return Kl("punctuator",Wl());case"n":return Wl(),ql("ull"),Kl("null",null);case"t":return Wl(),ql("rue"),Kl("boolean",!0);case"f":return Wl(),ql("alse"),Kl("boolean",!1);case"-":case"+":return"-"===Wl()&&(Jl=-1),void($l="numerical");case".":case"0":case"I":case"N":return void($l="numerical");case'"':case"'":return Hl=Nl,Wl(),xl="",void($l="string")}if(void 0===Nl||!Al.JudgeUtil.isDigitWithoutZero(Nl))throw tf(bl.Char,Wl());$l="numerical"},numerical(){switch(Nl){case".":return xl=Wl(),void($l="decimalPointLeading");case"0":return xl=Wl(),void($l="zero");case"I":return Wl(),ql("nfinity"),Kl("numeric",Jl*(1/0));case"N":return Wl(),ql("aN"),Kl("numeric",NaN)}if(void 0!==Nl&&Al.JudgeUtil.isDigitWithoutZero(Nl))return xl=Wl(),void($l="decimalInteger");throw tf(bl.Char,Wl())},zero(){switch(Nl){case".":case"e":case"E":return void($l="decimal");case"x":case"X":return xl+=Wl(),void($l="hexadecimal")}return Kl("numeric",0)},decimalInteger(){switch(Nl){case".":case"e":case"E":return void($l="decimal")}if(!Al.JudgeUtil.isDigit(Nl))return Kl("numeric",Jl*Number(xl));xl+=Wl()},decimal(){switch(Nl){case".":xl+=Wl(),$l="decimalFraction";break;case"e":case"E":xl+=Wl(),$l="decimalExponent"}},decimalPointLeading(){if(Al.JudgeUtil.isDigit(Nl))return xl+=Wl(),void($l="decimalFraction");throw tf(bl.Char,Wl())},decimalFraction(){switch(Nl){case"e":case"E":return xl+=Wl(),void($l="decimalExponent")}if(!Al.JudgeUtil.isDigit(Nl))return Kl("numeric",Jl*Number(xl));xl+=Wl()},decimalExponent(){switch(Nl){case"+":case"-":return xl+=Wl(),void($l="decimalExponentSign")}if(Al.JudgeUtil.isDigit(Nl))return xl+=Wl(),void($l="decimalExponentInteger");throw tf(bl.Char,Wl())},decimalExponentSign(){if(Al.JudgeUtil.isDigit(Nl))return xl+=Wl(),void($l="decimalExponentInteger");throw tf(bl.Char,Wl())},decimalExponentInteger(){if(!Al.JudgeUtil.isDigit(Nl))return Kl("numeric",Jl*Number(xl));xl+=Wl()},hexadecimal(){if(Al.JudgeUtil.isHexDigit(Nl))return xl+=Wl(),void($l="hexadecimalInteger");throw tf(bl.Char,Wl())},hexadecimalInteger(){if(!Al.JudgeUtil.isHexDigit(Nl))return Kl("numeric",Jl*Number(xl));xl+=Wl()},identifierNameStartEscape(){if("u"!==Nl)throw tf(bl.Char,Wl());Wl();const e=Yl();switch(e){case"$":case"_":break;default:if(!Al.JudgeUtil.isIdStartChar(e))throw tf(bl.Identifier)}xl+=e,$l="identifierName"},identifierName(){switch(Nl){case"$":case"_":case"‌":case"‍":return void(xl+=Wl());case"\\":return Wl(),void($l="identifierNameEscape")}if(!Al.JudgeUtil.isIdContinueChar(Nl))return Kl("identifier",xl);xl+=Wl()},identifierNameEscape(){if("u"!==Nl)throw tf(bl.Char,Wl());Wl();const e=Yl();switch(e){case"$":case"_":case"‌":case"‍":break;default:if(!Al.JudgeUtil.isIdContinueChar(e))throw tf(bl.Identifier)}xl+=e,$l="identifierName"},string(){switch(Nl){case"\\":return Wl(),void(xl+=function(){const e=Ul(),t=function(){switch(Ul()){case"b":return Wl(),"\b";case"f":return Wl(),"\f";case"n":return Wl(),"\n";case"r":return Wl(),"\r";case"t":return Wl(),"\t";case"v":return Wl(),"\v"}return}();if(t)return t;switch(e){case"0":if(Wl(),Al.JudgeUtil.isDigit(Ul()))throw tf(bl.Char,Wl());return"\0";case"x":return Wl(),function(){let e="",t=Ul();if(!Al.JudgeUtil.isHexDigit(t))throw tf(bl.Char,Wl());if(e+=Wl(),t=Ul(),!Al.JudgeUtil.isHexDigit(t))throw tf(bl.Char,Wl());return e+=Wl(),String.fromCodePoint(parseInt(e,16))}();case"u":return Wl(),Yl();case"\n":case"\u2028":case"\u2029":return Wl(),"";case"\r":return Wl(),"\n"===Ul()&&Wl(),""}if(void 0===e||Al.JudgeUtil.isDigitWithoutZero(e))throw tf(bl.Char,Wl());return Wl()}());case'"':case"'":if(Nl===Hl){const e=Kl("string",xl);return Wl(),e}return void(xl+=Wl());case"\n":case"\r":case void 0:throw tf(bl.Char,Wl());case"\u2028":case"\u2029":!function(e){Ol.warn(`JSON5: '${ef(e)}' in strings is not valid ECMAScript; consider escaping.`)}(Nl)}xl+=Wl()}};function Kl(e,t){return{type:e,value:t,line:Ml,column:Ll}}function ql(e){for(const t of e){if(Ul()!==t)throw tf(bl.Char,Wl());Wl()}}function Yl(){let e="",t=4;for(;t-- >0;){const t=Ul();if(!Al.JudgeUtil.isHexDigit(t))throw tf(bl.Char,Wl());e+=Wl()}return String.fromCodePoint(parseInt(e,16))}const Xl={start(){if("eof"===_l.type)throw tf(bl.EOF);Zl()},beforePropertyName(){switch(_l.type){case"identifier":case"string":return Pl=_l.value,void(Il="afterPropertyName");case"punctuator":return void Ql();case"eof":throw tf(bl.EOF)}},afterPropertyName(){if("eof"===_l.type)throw tf(bl.EOF);Il="beforePropertyValue"},beforePropertyValue(){if("eof"===_l.type)throw tf(bl.EOF);Zl()},afterPropertyValue(){if("eof"===_l.type)throw tf(bl.EOF);switch(_l.value){case",":return void(Il="beforePropertyName");case"}":Ql()}},beforeArrayValue(){if("eof"===_l.type)throw tf(bl.EOF);"punctuator"!==_l.type||"]"!==_l.value?Zl():Ql()},afterArrayValue(){if("eof"===_l.type)throw tf(bl.EOF);switch(_l.value){case",":return void(Il="beforeArrayValue");case"]":Ql()}},end(){}};function Zl(){const e=function(){let e;switch(_l.type){case"punctuator":switch(_l.value){case"{":e={};break;case"[":e=[]}break;case"null":case"boolean":case"numeric":case"string":e=_l.value}return e}();if(jl&&"object"==typeof e&&(e._line=Ml,e._column=Ll),void 0===kl)kl=e;else{const t=Tl[Tl.length-1];Array.isArray(t)?jl&&"object"!=typeof e?t.push({value:e,_line:Ml,_column:Ll}):t.push(e):t[Pl]=jl&&"object"!=typeof e?{value:e,_line:Ml,_column:Ll}:e}!function(e){if(e&&"object"==typeof e)Tl.push(e),Il=Array.isArray(e)?"beforeArrayValue":"beforePropertyName";else{const e=Tl[Tl.length-1];Il=e?Array.isArray(e)?"afterArrayValue":"afterPropertyValue":"end"}}(e)}function Ql(){Tl.pop();const e=Tl[Tl.length-1];Il=e?Array.isArray(e)?"afterArrayValue":"afterPropertyValue":"end"}function ef(e){const t={"'":"\\'",'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\v":"\\v","\0":"\\0","\u2028":"\\u2028","\u2029":"\\u2029"};if(t[e])return t[e];if(e<" "){const t=e.charCodeAt(0).toString(16);return`\\x${`00${t}`.substring(t.length)}`}return e}function tf(e,t){let n="";switch(e){case bl.Char:n=void 0===t?`JSON5: invalid end of input at ${Ml}:${Ll}`:`JSON5: invalid character '${ef(t)}' at ${Ml}:${Ll}`;break;case bl.EOF:n=`JSON5: invalid end of input at ${Ml}:${Ll}`;break;case bl.Identifier:Ll-=5,n=`JSON5: invalid identifier character at ${Ml}:${Ll}`}const r=new nf(n);return r.lineNumber=Ml,r.columnNumber=Ll,r}class nf extends SyntaxError{}var rf=w&&w.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var u=Object.getOwnPropertyDescriptor(t,n);u&&!("get"in u?!t.__esModule:u.writable||u.configurable)||(u={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,u)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),uf=w&&w.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),of=w&&w.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&rf(t,e,n);return uf(t,e),t};Object.defineProperty(Y,"__esModule",{value:!0});var sf=Y.cleanWorkSpace=Ff=Y.executeInstallHvigor=yf=Y.isHvigorInstalled=mf=Y.isAllDependenciesInstalled=void 0;const cf=of(D.default),af=of(p.default),lf=b,ff=j,df=$,Df=X;let pf,Ef;var mf=Y.isAllDependenciesInstalled=function(){function e(e){const t=null==e?void 0:e.dependencies;return void 0===t?0:Object.getOwnPropertyNames(t).length}if(pf=gf(),Ef=Af(),e(pf)+1!==e(Ef))return!1;for(const e in null==pf?void 0:pf.dependencies)if(!(0,ff.hasNpmPackInPaths)(e,[lf.HVIGOR_PROJECT_DEPENDENCIES_HOME])||!hf(e,pf,Ef))return!1;return!0};function hf(e,t,n){return void 0!==n.dependencies&&(0,ff.offlinePluginConversion)(lf.HVIGOR_PROJECT_ROOT_DIR,t.dependencies[e])===n.dependencies[e]}var yf=Y.isHvigorInstalled=function(){return pf=gf(),Ef=Af(),(0,ff.hasNpmPackInPaths)(lf.HVIGOR_ENGINE_PACKAGE_NAME,[lf.HVIGOR_PROJECT_DEPENDENCIES_HOME])&&(0,ff.offlinePluginConversion)(lf.HVIGOR_PROJECT_ROOT_DIR,pf.hvigorVersion)===Ef.dependencies[lf.HVIGOR_ENGINE_PACKAGE_NAME]};const Cf={cwd:lf.HVIGOR_PROJECT_DEPENDENCIES_HOME,stdio:["inherit","inherit","inherit"]};var Ff=Y.executeInstallHvigor=function(){(0,df.logInfoPrintConsole)("Hvigor installing...");const e={dependencies:{}};e.dependencies[lf.HVIGOR_ENGINE_PACKAGE_NAME]=(0,ff.offlinePluginConversion)(lf.HVIGOR_PROJECT_ROOT_DIR,pf.hvigorVersion);try{cf.mkdirSync(lf.HVIGOR_PROJECT_DEPENDENCIES_HOME,{recursive:!0});const t=af.resolve(lf.HVIGOR_PROJECT_DEPENDENCIES_HOME,lf.DEFAULT_PACKAGE_JSON);cf.writeFileSync(t,JSON.stringify(e))}catch(e){(0,df.logErrorAndExit)(e)}!function(){const e=["config","set","store-dir",lf.HVIGOR_PNPM_STORE_PATH];(0,ff.executeCommand)(lf.HVIGOR_WRAPPER_PNPM_SCRIPT_PATH,e,Cf)}(),(0,ff.executeCommand)(lf.HVIGOR_WRAPPER_PNPM_SCRIPT_PATH,["install"],Cf)};function gf(){const e=af.resolve(lf.HVIGOR_PROJECT_WRAPPER_HOME,lf.DEFAULT_HVIGOR_CONFIG_JSON_FILE_NAME);return cf.existsSync(e)||(0,df.logErrorAndExit)(`Error: Hvigor config file ${e} does not exist.`),(0,Df.parseJsonFile)(e)}function Af(){return cf.existsSync(lf.HVIGOR_PROJECT_DEPENDENCY_PACKAGE_JSON_PATH)?(0,Df.parseJsonFile)(lf.HVIGOR_PROJECT_DEPENDENCY_PACKAGE_JSON_PATH):{dependencies:{}}}sf=Y.cleanWorkSpace=function(){if((0,df.logInfoPrintConsole)("Hvigor cleaning..."),!cf.existsSync(lf.HVIGOR_PROJECT_DEPENDENCIES_HOME))return;const e=cf.readdirSync(lf.HVIGOR_PROJECT_DEPENDENCIES_HOME);if(e&&0!==e.length){cf.existsSync(lf.HVIGOR_BOOT_JS_FILE_PATH)&&(0,ff.executeCommand)(process.argv[0],[lf.HVIGOR_BOOT_JS_FILE_PATH,"--stop-daemon"],{});try{e.forEach((e=>{cf.rmSync(af.resolve(lf.HVIGOR_PROJECT_DEPENDENCIES_HOME,e),{recursive:!0})}))}catch(e){(0,df.logErrorAndExit)(`The hvigor build tool cannot be installed. Please manually clear the workspace directory and synchronize the project again.\n\n Workspace Path: ${lf.HVIGOR_PROJECT_DEPENDENCIES_HOME}.`)}}};var vf={},Sf=w&&w.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var u=Object.getOwnPropertyDescriptor(t,n);u&&!("get"in u?!t.__esModule:u.writable||u.configurable)||(u={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,u)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),wf=w&&w.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Of=w&&w.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&Sf(t,e,n);return wf(t,e),t};Object.defineProperty(vf,"__esModule",{value:!0});var bf=vf.executeBuild=void 0;const _f=b,Bf=Of(D.default),Pf=Of(p.default),kf=$;bf=vf.executeBuild=function(){const e=Pf.resolve(_f.HVIGOR_PROJECT_DEPENDENCIES_HOME,"node_modules","@ohos","hvigor","bin","hvigor.js");try{const t=Bf.realpathSync(e);require(t)}catch(t){(0,kf.logErrorAndExit)(`Error: ENOENT: no such file ${e},delete ${_f.HVIGOR_PROJECT_DEPENDENCIES_HOME} and retry.`)}},function(){if(O.checkNpmConifg(),O.environmentHandler(),O.isPnpmAvailable()||O.executeInstallPnpm(),yf()&&mf())bf();else{sf();try{Ff()}catch(e){return void sf()}bf()}}(); \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/hvigorfile.ts b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/hvigorfile.ts new file mode 100644 index 0000000000000000000000000000000000000000..0a7e3d8d74177458336fa2f524032b873cbe9552 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/hvigorfile.ts @@ -0,0 +1,6 @@ +import { appTasks } from '@ohos/hvigor-ohos-plugin'; + +export default { + system: appTasks, /* Built-in plugin of Hvigor. It cannot be modified. */ + plugins:[] /* Custom plugin to extend the functionality of Hvigor. */ +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/hvigorw b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/hvigorw new file mode 100644 index 0000000000000000000000000000000000000000..d0a563c20ab052c32d602855d07029549d314cf4 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/hvigorw @@ -0,0 +1,63 @@ +#!/bin/bash + +# ---------------------------------------------------------------------------- +# Copyright (c) 2023 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Hvigor startup script, version 1.0.0 +# +# Required ENV vars: +# ------------------ +# NODE_HOME - location of a Node home dir +# or +# Add /usr/local/nodejs/bin to the PATH environment variable +# ---------------------------------------------------------------------------- + +HVIGOR_APP_HOME=$(dirname $(readlink -f $0)) +HVIGOR_WRAPPER_SCRIPT=${HVIGOR_APP_HOME}/hvigor/hvigor-wrapper.js +warn() { + echo "" + echo -e "\033[1;33m`date '+[%Y-%m-%d %H:%M:%S]'`$@\033[0m" +} + +error() { + echo "" + echo -e "\033[1;31m`date '+[%Y-%m-%d %H:%M:%S]'`$@\033[0m" +} + +fail() { + error "$@" + exit 1 +} + +# Determine node to start hvigor wrapper script +if [ -n "${NODE_HOME}" ];then + EXECUTABLE_NODE="${NODE_HOME}/bin/node" + if [ ! -x "$EXECUTABLE_NODE" ];then + fail "ERROR: NODE_HOME is set to an invalid directory,check $NODE_HOME\n\nPlease set NODE_HOME in your environment to the location where your nodejs installed" + fi +else + EXECUTABLE_NODE="node" + which ${EXECUTABLE_NODE} > /dev/null 2>&1 || fail "ERROR: NODE_HOME is not set and not 'node' command found in your path" +fi + +# Check hvigor wrapper script +if [ ! -r "$HVIGOR_WRAPPER_SCRIPT" ];then + fail "ERROR: Couldn't find hvigor/hvigor-wrapper.js in ${HVIGOR_APP_HOME}" +fi + +# start hvigor-wrapper script +exec "${EXECUTABLE_NODE}" \ + "${HVIGOR_WRAPPER_SCRIPT}" "$@" diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/hvigorw.bat b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/hvigorw.bat new file mode 100644 index 0000000000000000000000000000000000000000..af893e9a2c9170d04610c906f1cf1b6f3ac144ac --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/hvigorw.bat @@ -0,0 +1,72 @@ +:: Copyright (c) 2023 Huawei Device Co., Ltd. +:: Licensed under the Apache License, Version 2.0 (the "License"); +:: you may not use this file except in compliance with the License. +:: You may obtain a copy of the License at +:: +:: http://www.apache.org/licenses/LICENSE-2.0 +:: +:: Unless required by applicable law or agreed to in writing, software +:: distributed under the License is distributed on an "AS IS" BASIS, +:: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +:: See the License for the specific language governing permissions and +:: limitations under the License. + +@echo off + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Hvigor startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +set WRAPPER_MODULE_PATH=%APP_HOME%\hvigor\hvigor-wrapper.js +set NODE_EXE=node.exe + +goto start + +:start +@rem Find node.exe +if defined NODE_HOME goto findNodeFromNodeHome + +%NODE_EXE% --version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: NODE_HOME is not set and no 'node' command could be found in your PATH. +echo. +echo Please set the NODE_HOME variable in your environment to match the +echo location of your NodeJs installation. + +goto fail + +:findNodeFromNodeHome +set NODE_HOME=%NODE_HOME:"=% +set NODE_EXE_PATH=%NODE_HOME%/%NODE_EXE% + +if exist "%NODE_EXE_PATH%" goto execute +echo. +echo ERROR: NODE_HOME is not set and no 'node' command could be found in your PATH. +echo. +echo Please set the NODE_HOME variable in your environment to match the +echo location of your NodeJs installation. + +goto fail + +:execute +@rem Execute hvigor +"%NODE_EXE%" %WRAPPER_MODULE_PATH% %* + +:fail +exit /b 1 diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/oh-package.json5 b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/oh-package.json5 new file mode 100644 index 0000000000000000000000000000000000000000..df734fc362aa02ba0b0ea2d09fbc67554f9c65ac --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/oh-package.json5 @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "license": "ISC", + "devDependencies": { + "@ohos/hypium": "1.0.6" + }, + "name": "settings", + "description": "example description", + "repository": {}, + "version": "1.0.0", + "dependencies": {} +} diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/.gitignore b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..5a6ba80fa3d9498a23ae8ae7d9518f8743fa8a96 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/.gitignore @@ -0,0 +1,4 @@ +/node_modules +/.preview +/build +/.cxx \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/build-profile.json5 b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/build-profile.json5 new file mode 100644 index 0000000000000000000000000000000000000000..648265bbc1c93020ab22014689ba6442b6da30c1 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/build-profile.json5 @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2022-2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "apiType": 'stageMode', + "buildOption": { + }, + "targets": [ + { + "name": "default" + }, + { + "name": "ohosTest", + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/hvigorfile.ts b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/hvigorfile.ts new file mode 100644 index 0000000000000000000000000000000000000000..a807cf961ed92d1bedf0535c88362e1d0b22c7a5 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/hvigorfile.ts @@ -0,0 +1,6 @@ +import { hapTasks } from '@ohos/hvigor-ohos-plugin'; + +export default { + system: hapTasks, /* Built-in plugin of Hvigor. It cannot be modified. */ + plugins:[] /* Custom plugin to extend the functionality of Hvigor. */ +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/oh-package.json5 b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/oh-package.json5 new file mode 100644 index 0000000000000000000000000000000000000000..2cd23c45e71743f30e19c7e779b2ba299b33e271 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/oh-package.json5 @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "license": "ISC", + "devDependencies": {}, + "name": "default", + "description": "example description", + "repository": {}, + "version": "1.0.0", + "dependencies": { + "@ohos/common": "file:../../common", + "@ohos/settingItems": "file:../../features/settingitems" + } +} diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/src/main/ets/entryability/EntryAbility.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/src/main/ets/entryability/EntryAbility.ets new file mode 100644 index 0000000000000000000000000000000000000000..a61c1951e26641a9b3bcf3e85b51bd0e0ad77583 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/src/main/ets/entryability/EntryAbility.ets @@ -0,0 +1,96 @@ +/* + * Copyright (c) 2022-2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import UIAbility from '@ohos.app.ability.UIAbility'; +import deviceInfo from '@ohos.deviceInfo' +import display from '@ohos.display'; +import Window from '@ohos.window'; +import { Logger } from '@ohos/common'; +import Want from '@ohos.app.ability.Want'; +import AbilityConstant from '@ohos.app.ability.AbilityConstant'; + +const TAG: string = 'EntryAbility'; + +export default class EntryAbility extends UIAbility { + storage: LocalStorage = new LocalStorage(); + + onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void { + Logger.info(TAG, 'EntryAbility onCreate'); + this.storage = new LocalStorage(); + this.storage.setOrCreate('selectedLabel', ''); + this.storage.setOrCreate('isSplitMode', deviceInfo.deviceType === 'tablet'); + } + + onDestroy(): void { + Logger.info(TAG, 'EntryAbility onDestroy'); + } + + updateBreakpoint(windowWidth: number): void { + let windowWidthVp: number = windowWidth / (display.getDefaultDisplaySync().densityDPI / 160); + let curBp: string; + if (windowWidthVp < 600) { + curBp = 'sm'; + } else if (windowWidthVp < 840) { + curBp = 'md'; + } else { + curBp = 'lg'; + } + Logger.info(TAG, 'window width: ' + windowWidth + ', window width vp: ' + windowWidthVp + ', breakpoint: ' + curBp); + this.storage.setOrCreate('currentBreakpoint', curBp); + this.storage.setOrCreate('windowWidth', windowWidthVp); + } + + onWindowStageCreate(windowStage: Window.WindowStage): void { + // Main window is created, set main page for this ability + Logger.info(TAG, 'EntryAbility onWindowStageCreate'); + + windowStage.getMainWindow().then((windowObj) => { + this.updateBreakpoint(windowObj.getWindowProperties().windowRect.width); + windowObj.on('windowSizeChange', (newSize) => { + this.updateBreakpoint(newSize.width); + + if (windowObj.getWindowProperties().isFullScreen) { + Logger.info(TAG, 'isFullScreen'); + } + if (windowObj.getWindowProperties().isLayoutFullScreen) { + Logger.info(TAG, 'isLayoutFullScreen'); + } + }) + }); + + windowStage.loadContent('pages/Index', this.storage, (err, data) => { + if (err.code) { + Logger.error(TAG, `Failed to load the content. Cause: ${JSON.stringify(err)}`); + return; + } + Logger.info(TAG, `Succeeded in loading the content. Data: ${JSON.stringify(data)}`); + }); + } + + onWindowStageDestroy(): void { + // Main window is destroyed, release UI related resources + Logger.info(TAG, `EntryAbility onWindowStageDestroy`); + } + + onForeground(): void { + // Ability has brought to foreground + Logger.info(TAG, `EntryAbility onForeground`); + } + + onBackground(): void { + // Ability has back to background + Logger.info(TAG, `EntryAbility onBackground`); + } +} diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/src/main/ets/pages/Index.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/src/main/ets/pages/Index.ets new file mode 100644 index 0000000000000000000000000000000000000000..66563db4ee5d6d03076995414fb74eb7af938b88 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/src/main/ets/pages/Index.ets @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { SettingList } from '@ohos/settingItems' + +let storage = LocalStorage.GetShared() + +@Entry(storage) +@Component +struct Index { + @LocalStorageProp('currentBreakpoint') curBp: string = 'sm' + @LocalStorageProp('windowWidth') windowWidth: number = 300 + @LocalStorageProp('isSplitMode') isSplitMode: boolean = false + @State itemTitle: string = '' + + aboutToAppear() { + this.itemTitle = getContext().resourceManager.getStringSync($r('app.string.settings').id) + } + + build() { + Navigation() { + SettingList() + } + .title(this.itemTitle) + .mode(this.isSplitMode ? NavigationMode.Split : NavigationMode.Stack) + .navBarWidth(0.4 * this.windowWidth) + .hideToolBar(true) + .width('100%') + .height('100%') + .backgroundColor($r("sys.color.ohos_id_color_sub_background")) + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/src/main/module.json5 b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/src/main/module.json5 new file mode 100644 index 0000000000000000000000000000000000000000..693ef8972ae995f4873dd0c6de36a460928ab0fd --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/src/main/module.json5 @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "module": { + "name": "default", + "type": "entry", + "description": "$string:mainability_description", + "mainElement": "EntryAbility", + "deviceTypes": [ + "phone", + "tablet" + ], + "deliveryWithInstall": true, + "installationFree": false, + "pages": "$profile:main_pages", + "abilities": [ + { + "name": "EntryAbility", + "srcEntry": "./ets/entryability/EntryAbility.ets", + "description": "$string:mainability_description", + "icon": "$media:icon", + "label": "$string:mainability_label", + "startWindowIcon": "$media:icon", + "startWindowBackground": "$color:white", + "minWindowWidth": 360, + "minWindowHeight": 480, + "exported": true, + "skills": [ + { + "entities": [ + "entity.system.home" + ], + "actions": [ + "action.system.home" + ] + } + ] + } + ] + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/src/main/resources/base/element/color.json b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/src/main/resources/base/element/color.json new file mode 100644 index 0000000000000000000000000000000000000000..1bbc9aa9617e97c45440e1d3d66afc1154837012 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/src/main/resources/base/element/color.json @@ -0,0 +1,8 @@ +{ + "color": [ + { + "name": "white", + "value": "#FFFFFF" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/src/main/resources/base/element/string.json b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/src/main/resources/base/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..c768e502fea7a6e897201d408981caaee173baf5 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/src/main/resources/base/element/string.json @@ -0,0 +1,12 @@ +{ + "string": [ + { + "name": "mainability_description", + "value": "sample application" + }, + { + "name": "mainability_label", + "value": "Settings" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/src/main/resources/base/media/icon.png b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/src/main/resources/base/media/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ce307a8827bd75456441ceb57d530e4c8d45d36c Binary files /dev/null and b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/src/main/resources/base/media/icon.png differ diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/src/main/resources/base/profile/main_pages.json b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/src/main/resources/base/profile/main_pages.json new file mode 100644 index 0000000000000000000000000000000000000000..1898d94f58d6128ab712be2c68acc7c98e9ab9ce --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/src/main/resources/base/profile/main_pages.json @@ -0,0 +1,5 @@ +{ + "src": [ + "pages/Index" + ] +} diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/src/main/resources/en_US/element/string.json b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/src/main/resources/en_US/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..c768e502fea7a6e897201d408981caaee173baf5 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/src/main/resources/en_US/element/string.json @@ -0,0 +1,12 @@ +{ + "string": [ + { + "name": "mainability_description", + "value": "sample application" + }, + { + "name": "mainability_label", + "value": "Settings" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/src/main/resources/zh_CN/element/string.json b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/src/main/resources/zh_CN/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..4077892324bbbcf7b8e41a7fcf88401ad730a3a6 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/src/main/resources/zh_CN/element/string.json @@ -0,0 +1,12 @@ +{ + "string": [ + { + "name": "mainability_description", + "value": "示例应用" + }, + { + "name": "mainability_label", + "value": "设置" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/src/ohosTest/ets/Application/TestAbilityStage.ts b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/src/ohosTest/ets/Application/TestAbilityStage.ts new file mode 100644 index 0000000000000000000000000000000000000000..4525376881c33eaa642192d3f493dccde8f03a42 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/src/ohosTest/ets/Application/TestAbilityStage.ts @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2022-2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import AbilityStage from "@ohos.app.ability.AbilityStage" + +export default class TestAbilityStage extends AbilityStage { + onCreate() { + console.log("[Demo] TestAbilityStage onCreate") + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/src/ohosTest/ets/TestRunner/OpenHarmonyTestRunner.ts b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/src/ohosTest/ets/TestRunner/OpenHarmonyTestRunner.ts new file mode 100644 index 0000000000000000000000000000000000000000..e65e7a9708e62aa238cf77eb1ca68b8fea810c72 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/src/ohosTest/ets/TestRunner/OpenHarmonyTestRunner.ts @@ -0,0 +1,78 @@ +/* + * Copyright (c) 2022-2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import AbilityDelegatorRegistry from '@ohos.app.ability.abilityDelegatorRegistry' +import TestRunner from '@ohos.application.testRunner' +import Logger from '../util/Logger' + +let abilityDelegator = undefined +let abilityDelegatorArguments = undefined + +function translateParamsToString(parameters) { + const keySet = new Set([ + '-s class', '-s notClass', '-s suite', '-s it', + '-s level', '-s testType', '-s size', '-s timeout', + '-s dryRun' + ]) + let targetParams = '' + for (const key in parameters) { + if (keySet.has(key)) { + targetParams = `${targetParams} ${key} ${parameters[key]}` + } + } + return targetParams.trim() +} + +async function onAbilityCreateCallback() { + Logger.info("onAbilityCreateCallback") +} + +async function addAbilityMonitorCallback(err: any) { + Logger.info("addAbilityMonitorCallback : " + JSON.stringify(err)) +} + +export default class OpenHarmonyTestRunner implements TestRunner { + constructor() { + } + + onPrepare() { + Logger.info("OpenHarmonyTestRunner OnPrepare ") + } + + async onRun() { + Logger.info('OpenHarmonyTestRunner onRun run') + abilityDelegatorArguments = AbilityDelegatorRegistry.getArguments() + abilityDelegator = AbilityDelegatorRegistry.getAbilityDelegator() + let testAbilityName = abilityDelegatorArguments.bundleName + '.TestAbility' + let lMonitor = { + abilityName: testAbilityName, + onAbilityCreate: onAbilityCreateCallback, + } + abilityDelegator.addAbilityMonitor(lMonitor, addAbilityMonitorCallback) + let cmd = 'aa start -d 0 -a TestAbility' + ' -b ' + abilityDelegatorArguments.bundleName + cmd += ' ' + translateParamsToString(abilityDelegatorArguments.parameters) + let debug = abilityDelegatorArguments.parameters["-D"] + if (debug == 'true') { + cmd += ' -D' + } + Logger.info('cmd : ' + cmd) + abilityDelegator.executeShellCommand(cmd, (err, d) => { + Logger.info('executeShellCommand : err : ' + JSON.stringify(err)) + Logger.info('executeShellCommand : data : ' + d.stdResult) + Logger.info('executeShellCommand : data : ' + d.exitCode) + }) + Logger.info('OpenHarmonyTestRunner onRun end') + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/src/ohosTest/ets/test/App.test.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/src/ohosTest/ets/test/App.test.ets new file mode 100644 index 0000000000000000000000000000000000000000..5c5c42963283890fd02ab69036b0e3b786ffed58 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/src/ohosTest/ets/test/App.test.ets @@ -0,0 +1,239 @@ +/* + * Copyright (c) 2022-2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import AbilityDelegatorRegistry from '@ohos.app.ability.abilityDelegatorRegistry' +import { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from '@ohos/hypium' +import { Driver, ON, Component, MatchPattern } from '@ohos.UiTest' +import Logger from '../util/Logger' +import Want from '@ohos.app.ability.Want' + +const BUNDLE = 'Setting' +const TAG = '[Sample_Setting]' + +export default function appTest() { + describe('appTest', () => { + /** + * 拉起Ability + */ + it(BUNDLE + '_startAbility', 0, async (done:Function) => { + Logger.info(TAG, BUNDLE + '_startAbility start') + let driver :Driver= await Driver.create() + let want :Want= { + bundleName: 'ohos.samples.settings', + abilityName: 'MainAbility' + } + let abilityDelegator = AbilityDelegatorRegistry.getAbilityDelegator() + let resourceManager = (await abilityDelegator.getCurrentTopAbility()).context.resourceManager + await abilityDelegator.startAbility(want, (err, data) => { + Logger.info(TAG, 'StartAbility get err ' + JSON.stringify(err)) + expect(err).assertNull() + }) + await driver.delayMs(1000) + let setting = await resourceManager.getStringValue($r('app.string.settings')) + await driver.assertComponentExist(ON.text(setting)) + Logger.info(TAG, BUNDLE + '_startAbility end') + done() + }) + + /** + * 检查滑动窗口是否正常 + */ + it(BUNDLE + '_DragList', 1, async () => { + Logger.info(TAG, BUNDLE + "_DragList start") + let driver = await Driver.create() + await driver.drag(100, 900, 100, 100, 100) + let abilityDelegator = AbilityDelegatorRegistry.getAbilityDelegator() + let resourceManager = (await abilityDelegator.getCurrentTopAbility()).context.resourceManager + await driver.delayMs(1000) + let systemTab = await resourceManager.getStringValue($r('app.string.systemTab')) + await driver.assertComponentExist(ON.text(systemTab)) + let aboutTab = await resourceManager.getStringValue($r('app.string.aboutTab')) + await driver.assertComponentExist(ON.text(aboutTab)) + await driver.delayMs(1000) + await driver.drag(100, 300, 100, 900, 100) + await driver.delayMs(1000) + Logger.info(TAG, BUNDLE + "_DragList end") + }) + + /** + * 检查WLAN模块 + */ + it(BUNDLE + '_WLAN', 2, async () => { + Logger.info(TAG, BUNDLE + "_WLAN start") + let driver = await Driver.create() + await driver.assertComponentExist(ON.text('WLAN')) + let wlanItem = await driver.findComponent(ON.text('WLAN')) + await wlanItem.click() + await driver.delayMs(1000) + // 检查Switch开关是否正常 + await driver.assertComponentExist(ON.id('ToggleSwitch')) + let abilityDelegator = AbilityDelegatorRegistry.getAbilityDelegator() + let resourceManager = (await abilityDelegator.getCurrentTopAbility()).context.resourceManager + let wifiTipConnectedWLAN = await resourceManager.getStringValue($r('app.string.wifiTipConnectedWLAN')) + await driver.assertComponentExist(ON.text(wifiTipConnectedWLAN)) + let wifiTipValidWLAN = await resourceManager.getStringValue($r('app.string.wifiTipValidWLAN')) + await driver.assertComponentExist(ON.text(wifiTipValidWLAN)) + let moreWlanSettings = await resourceManager.getStringValue($r('app.string.moreWlanSettings')) + await driver.assertComponentExist(ON.text(moreWlanSettings)) + let wlanSetting = await driver.findComponent(ON.text(moreWlanSettings)) + await wlanSetting.click() + await driver.delayMs(1000) + let wlanPlus = await resourceManager.getStringValue($r('app.string.wlanPlus')) + await driver.assertComponentExist(ON.text(wlanPlus)) + let wlanDirect = await resourceManager.getStringValue($r('app.string.wlanDirect')) + await driver.assertComponentExist(ON.text(wlanDirect)) + await driver.delayMs(1000) + // 退回首页 + await driver.pressBack() + await driver.delayMs(1000) + await driver.pressBack() + await driver.delayMs(1000) + Logger.info(TAG, BUNDLE + "_WLAN end") + }) + + /** + * 检查更多链接模块 + */ + it(BUNDLE + '_MoreConnection', 3, async () => { + Logger.info(TAG, BUNDLE + "_MoreConnection start") + let driver = await Driver.create() + let abilityDelegator = AbilityDelegatorRegistry.getAbilityDelegator() + let resourceManager = (await abilityDelegator.getCurrentTopAbility()).context.resourceManager + let moreConnectionsTab = await resourceManager.getStringValue($r('app.string.moreConnectionsTab')) + await driver.assertComponentExist(ON.text(moreConnectionsTab)) + let connection = await driver.findComponent(ON.text(moreConnectionsTab)) + await connection.click() + await driver.delayMs(1000) + let NFC = await resourceManager.getStringValue($r('app.string.NFC')) + await driver.assertComponentExist(ON.text(NFC)) + let nfc = await driver.findComponent(ON.text(NFC)) + await nfc.click() + await driver.delayMs(1000) + await driver.assertComponentExist(ON.id('ToggleSwitch')) + let toggleSwitch = await driver.findComponent(ON.id('ToggleSwitch')) + await toggleSwitch.click() + await driver.delayMs(1000) + // 退回首页 + await driver.pressBack() + await driver.delayMs(1000) + await driver.pressBack() + await driver.delayMs(1000) + Logger.info(TAG, BUNDLE + "_MoreConnection end") + }) + + /** + * 窗口分屏 + */ + it(BUNDLE + '_WindowSplit', 4, async () => { + Logger.info(TAG, BUNDLE + "_WindowSplit start") + let driver = await Driver.create() + let window = await driver.findWindow({ + bundleName: 'ohos.samples.settings' + }) + let boundsBefore = await window.getBounds() + Logger.info(TAG, BUNDLE + JSON.stringify(boundsBefore)) + await window.split() + await driver.delayMs(1000) + let boundsAfter = await window.getBounds() + Logger.info(TAG, BUNDLE + JSON.stringify(boundsAfter)) + expect(boundsBefore.bottom).assertLarger(boundsAfter.bottom) + await driver.click(500, 500) + await driver.delayMs(1000) + Logger.info(TAG, BUNDLE + "_WindowSplit end") + }) + + /** + * 窗口化 + */ + it(BUNDLE + '_WindowResume', 5, async (done:Function) => { + Logger.info(TAG, BUNDLE + '_WindowResume start') + let driver = await Driver.create() + let window = await driver.findWindow({ + bundleName: 'ohos.samples.settings' + }) + let boundsBefore = await window.getBounds() + Logger.info(TAG, BUNDLE + JSON.stringify(boundsBefore)) + // 检查窗口化 + await window.resume() + await driver.delayMs(1000) + let boundsAfter = await window.getBounds() + expect(boundsBefore.bottom - boundsBefore.top).assertLarger(boundsAfter.bottom - boundsAfter.top) + expect(boundsBefore.right - boundsBefore.left).assertLarger(boundsAfter.right - boundsAfter.left) + // 检查窗口拖动 + await driver.drag(boundsAfter.left + 30, boundsAfter.top + 15, 100, 100, 100) + await driver.delayMs(1000) + let boundsMove = await window.getBounds() + expect(boundsAfter.top).assertLarger(boundsMove.top) + expect(boundsAfter.right).assertLarger(boundsMove.right) + await driver.delayMs(1000) + await window.resume() + await driver.delayMs(1000) + Logger.info(TAG, BUNDLE + '_WindowResume end') + done() + }) + + /** + * 窗口最小化 + */ + it(BUNDLE + '_WindowMiniSize', 6, async () => { + Logger.info(TAG, BUNDLE + "_WindowMiniSize start") + let driver = await Driver.create() + let window = await driver.findWindow({ + bundleName: 'ohos.samples.settings' + }) + let abilityDelegator = AbilityDelegatorRegistry.getAbilityDelegator() + let resourceManager = (await abilityDelegator.getCurrentTopAbility()).context.resourceManager + let moreConnectionsTab = await resourceManager.getStringValue($r('app.string.moreConnectionsTab')) + await driver.assertComponentExist(ON.text(moreConnectionsTab)) + await window.minimize() + await driver.delayMs(1000) + let connection = await driver.findComponent(ON.text(moreConnectionsTab)) + await expect(connection).assertNull() + let settings = await resourceManager.getStringValue($r('app.string.settings')) + await driver.assertComponentExist(ON.text(settings)) + let setting = await driver.findComponent(ON.text(settings)) + await setting.click() + await driver.delayMs(1000) + await driver.assertComponentExist(ON.text(moreConnectionsTab)) + Logger.info(TAG, BUNDLE + "_WindowMiniSize end") + }) + + /** + * 关闭窗口 + */ + it(BUNDLE + '_WindowClose', 7, async () => { + Logger.info(TAG, BUNDLE + "_WindowClose start") + let driver = await Driver.create() + let window = await driver.findWindow({ + bundleName: 'ohos.samples.settings' + }) + let abilityDelegator = AbilityDelegatorRegistry.getAbilityDelegator() + let resourceManager = (await abilityDelegator.getCurrentTopAbility()).context.resourceManager + let moreConnectionsTab = await resourceManager.getStringValue($r('app.string.moreConnectionsTab')) + await driver.assertComponentExist(ON.text(moreConnectionsTab)) + await window.close() + await driver.delayMs(1000) + let connection = await driver.findComponent(ON.text(moreConnectionsTab)) + await expect(connection).assertNull() + let settings = await resourceManager.getStringValue($r('app.string.settings')) + await driver.assertComponentExist(ON.text(settings)) + let setting = await driver.findComponent(ON.text(settings)) + await setting.click() + await driver.delayMs(1000) + await driver.assertComponentExist(ON.text(moreConnectionsTab)) + Logger.info(TAG, BUNDLE + "_WindowClose end") + }) + }) +} diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/src/ohosTest/ets/test/List.test.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/src/ohosTest/ets/test/List.test.ets new file mode 100644 index 0000000000000000000000000000000000000000..17d5503425e79ed5b1d399319fb0bfbb3f3a49c2 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/src/ohosTest/ets/test/List.test.ets @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2022-2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import apptest from './App.test' + +export default function testsuite() { + apptest() +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/src/ohosTest/ets/testability/TestAbility.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/src/ohosTest/ets/testability/TestAbility.ets new file mode 100644 index 0000000000000000000000000000000000000000..ce1e97b1e315968cc46a54faeb8b804db9d38990 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/src/ohosTest/ets/testability/TestAbility.ets @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2022-2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import AbilityDelegatorRegistry from '@ohos.app.ability.abilityDelegatorRegistry' +import UIAbility from '@ohos.app.ability.UIAbility' +import { Hypium } from '@ohos/hypium' +import Want from '@ohos.app.ability.Want' +import testsuite from '../test/List.test' +import Logger from '../util/Logger' +import AbilityConstant from '@ohos.app.ability.AbilityConstant' +import Window from '@ohos.window' + +export default class TestAbility extends UIAbility { + onCreate(want:Want, launchParam: AbilityConstant.LaunchParam) { + Logger.info('TestAbility onCreate') + } + + onDestroy() { + Logger.info('TestAbility onDestroy') + } + + onWindowStageCreate(windowStage: Window.WindowStage) { + Logger.info('TestAbility onWindowStageCreate') + windowStage.loadContent('testability/pages/Index', (err, data) => { + if (err.code) { + Logger.error('Failed to load the content. Cause:' + JSON.stringify(err)) + return + } + Logger.info('Succeeded in loading the content. Data: ' + JSON.stringify(data)) + }) + let abilityDelegator = AbilityDelegatorRegistry.getAbilityDelegator() + let abilityDelegatorArguments = AbilityDelegatorRegistry.getArguments() + Logger.info('start run testcase!!!') + Hypium.hypiumTest(abilityDelegator, abilityDelegatorArguments, testsuite) + } + + onWindowStageDestroy() { + Logger.info('TestAbility onWindowStageDestroy') + } + + onForeground() { + Logger.info('TestAbility onForeground') + } + + onBackground() { + Logger.info('TestAbility onBackground') + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/src/ohosTest/ets/testability/pages/Index.ets b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/src/ohosTest/ets/testability/pages/Index.ets new file mode 100644 index 0000000000000000000000000000000000000000..340d3a869b52e10d2d69c8200c29673f52afd3bf --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/src/ohosTest/ets/testability/pages/Index.ets @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2022-2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import router from '@ohos.router'; + +@Entry +@Component +struct Index { + aboutToAppear() { + console.info('TestAbility index aboutToAppear') + } + + @State message: string = 'Hello World' + + build() { + Row() { + Column() { + Text(this.message) + .fontSize(50) + .fontWeight(FontWeight.Bold) + Button() { + Text('next page') + .fontSize(20) + .fontWeight(FontWeight.Bold) + } + .type(ButtonType.Capsule) + .margin({ + top: 20 + }) + .backgroundColor('#0D9FFB') + .width('35%') + .height('5%') + .onClick(() => { + }) + } + .width('100%') + } + .height('100%') + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/src/ohosTest/ets/util/Logger.ts b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/src/ohosTest/ets/util/Logger.ts new file mode 100644 index 0000000000000000000000000000000000000000..1a487663f7b3ed7f92583265454eea66bfbc154f --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/src/ohosTest/ets/util/Logger.ts @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2022-2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License") + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import hilog from '@ohos.hilog' + +const DOMAIN: number = 0xF811 + +class Logger { + private prefix: string = '' + private format: string = '%{public}s, %{public}s' + + constructor(prefix: string) { + this.prefix = prefix + } + + debug(...args: string[]): void { + hilog.debug(DOMAIN, this.prefix, this.format, args) + } + + info(...args: string[]): void { + hilog.info(DOMAIN, this.prefix, this.format, args) + } + + warn(...args: string[]): void { + hilog.warn(DOMAIN, this.prefix, this.format, args) + } + + error(...args: string[]): void { + hilog.error(DOMAIN, this.prefix, this.format, args) + } +} + +export default new Logger('[Samples_Settings]') \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/src/ohosTest/module.json5 b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/src/ohosTest/module.json5 new file mode 100644 index 0000000000000000000000000000000000000000..9cbb53e3d90ee0f5fb8b836f6b617d92deefc6b8 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/src/ohosTest/module.json5 @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2022-2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +{ + "module": { + "name": "entry_test", + "type": "feature", + "srcEntrance": "./ets/Application/TestAbilityStage.ts", + "description": "$string:entry_test_desc", + "mainElement": "TestAbility", + "deviceTypes": [ + "default", + "tablet" + ], + "deliveryWithInstall": true, + "installationFree": false, + "pages": "$profile:test_pages", + "uiSyntax": "ets", + "abilities": [ + { + "name": "TestAbility", + "srcEntrance": "./ets/testability/TestAbility.ets", + "description": "$string:TestAbility_desc", + "icon": "$media:icon", + "label": "$string:TestAbility_label", + "visible": true, + "startWindowIcon": "$media:icon", + "startWindowBackground": "$color:white", + "skills": [ + { + "actions": [ + "action.system.home" + ], + "entities": [ + "entity.system.home" + ] + } + ] + } + ] + } +} diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/src/ohosTest/resources/base/element/color.json b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/src/ohosTest/resources/base/element/color.json new file mode 100644 index 0000000000000000000000000000000000000000..1bbc9aa9617e97c45440e1d3d66afc1154837012 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/src/ohosTest/resources/base/element/color.json @@ -0,0 +1,8 @@ +{ + "color": [ + { + "name": "white", + "value": "#FFFFFF" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/src/ohosTest/resources/base/element/string.json b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/src/ohosTest/resources/base/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..802f3fddb1f093467ac46d4e6b6649762dae03e3 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/src/ohosTest/resources/base/element/string.json @@ -0,0 +1,56 @@ +{ + "string": [ + { + "name": "entry_test_desc", + "value": "test ability description" + }, + { + "name": "TestAbility_desc", + "value": "the test ability" + }, + { + "name": "TestAbility_label", + "value": "test label" + }, + { + "name": "settings", + "value": "Settings" + }, + { + "name": "systemTab", + "value": "System & Updates" + }, + { + "name": "aboutTab", + "value": "About Device" + }, + { + "name": "wifiTipConnectedWLAN", + "value": "已连接WLAN" + }, + { + "name": "wifiTipValidWLAN", + "value": "Valid WLAN" + }, + { + "name": "moreWlanSettings", + "value": "More settings" + }, + { + "name": "wlanPlus", + "value": "WLAN+" + }, + { + "name": "wlanDirect", + "value": "WLAN Direct" + }, + { + "name": "moreConnectionsTab", + "value": "More Connections" + }, + { + "name": "NFC", + "value": "NFC" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/src/ohosTest/resources/base/media/icon.png b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/src/ohosTest/resources/base/media/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ce307a8827bd75456441ceb57d530e4c8d45d36c Binary files /dev/null and b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/src/ohosTest/resources/base/media/icon.png differ diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/src/ohosTest/resources/base/profile/test_pages.json b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/src/ohosTest/resources/base/profile/test_pages.json new file mode 100644 index 0000000000000000000000000000000000000000..b7e7343cacb32ce982a45e76daad86e435e054fe --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/src/ohosTest/resources/base/profile/test_pages.json @@ -0,0 +1,5 @@ +{ + "src": [ + "testability/pages/Index" + ] +} diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/src/ohosTest/resources/en_US/element/string.json b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/src/ohosTest/resources/en_US/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..802f3fddb1f093467ac46d4e6b6649762dae03e3 --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/src/ohosTest/resources/en_US/element/string.json @@ -0,0 +1,56 @@ +{ + "string": [ + { + "name": "entry_test_desc", + "value": "test ability description" + }, + { + "name": "TestAbility_desc", + "value": "the test ability" + }, + { + "name": "TestAbility_label", + "value": "test label" + }, + { + "name": "settings", + "value": "Settings" + }, + { + "name": "systemTab", + "value": "System & Updates" + }, + { + "name": "aboutTab", + "value": "About Device" + }, + { + "name": "wifiTipConnectedWLAN", + "value": "已连接WLAN" + }, + { + "name": "wifiTipValidWLAN", + "value": "Valid WLAN" + }, + { + "name": "moreWlanSettings", + "value": "More settings" + }, + { + "name": "wlanPlus", + "value": "WLAN+" + }, + { + "name": "wlanDirect", + "value": "WLAN Direct" + }, + { + "name": "moreConnectionsTab", + "value": "More Connections" + }, + { + "name": "NFC", + "value": "NFC" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/src/ohosTest/resources/zh_CN/element/string.json b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/src/ohosTest/resources/zh_CN/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..f2bb89400da07bcc3e945d7a67a68aacaf014cdf --- /dev/null +++ b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/products/default/src/ohosTest/resources/zh_CN/element/string.json @@ -0,0 +1,56 @@ +{ + "string": [ + { + "name": "entry_test_desc", + "value": "test ability description" + }, + { + "name": "TestAbility_desc", + "value": "the test ability" + }, + { + "name": "TestAbility_label", + "value": "test label" + }, + { + "name": "settings", + "value": "设置" + }, + { + "name": "systemTab", + "value": "系统" + }, + { + "name": "aboutTab", + "value": "关于设备" + }, + { + "name": "wifiTipConnectedWLAN", + "value": "已连接WLAN" + }, + { + "name": "wifiTipValidWLAN", + "value": "可用WLAN" + }, + { + "name": "moreWlanSettings", + "value": "更多WLAN设置" + }, + { + "name": "wlanPlus", + "value": "WLAN+" + }, + { + "name": "wlanDirect", + "value": "WLAN直连" + }, + { + "name": "moreConnectionsTab", + "value": "更多连接" + }, + { + "name": "NFC", + "value": "NFC" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/screenshots/devices/img1.jpeg b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/screenshots/devices/img1.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..2f663512410ccce544a2e95eddd1dd932240aafb Binary files /dev/null and b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/screenshots/devices/img1.jpeg differ diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/screenshots/devices/img2.jpeg b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/screenshots/devices/img2.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..744a9e07cc02ddfbdc941d9eabd102f03f66aa99 Binary files /dev/null and b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/screenshots/devices/img2.jpeg differ diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/screenshots/devices/img3.jpeg b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/screenshots/devices/img3.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..00b7a1ae2eea4e93ebc7c899ae2928559443dcca Binary files /dev/null and b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/screenshots/devices/img3.jpeg differ diff --git a/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/screenshots/devices/img4.png b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/screenshots/devices/img4.png new file mode 100644 index 0000000000000000000000000000000000000000..08c494b8079f5d1f96a834593d26b7fb047c8afd Binary files /dev/null and b/HarmonyOS_NEXT/MultiDeviceAppDev/Settings/screenshots/devices/img4.png differ diff --git a/HarmonyOS_NEXT/Native/NdkOpenGL/.gitignore b/HarmonyOS_NEXT/Native/NdkOpenGL/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..fbabf771011fe78f9919db0b1195ab6cadffc2b0 --- /dev/null +++ b/HarmonyOS_NEXT/Native/NdkOpenGL/.gitignore @@ -0,0 +1,11 @@ +/node_modules +/oh_modules +/local.properties +/.idea +**/build +/.hvigor +.cxx +/.clangd +/.clang-format +/.clang-tidy +**/.test \ No newline at end of file diff --git a/HarmonyOS_NEXT/Native/NdkOpenGL/AppScope/app.json5 b/HarmonyOS_NEXT/Native/NdkOpenGL/AppScope/app.json5 new file mode 100644 index 0000000000000000000000000000000000000000..f6876c43a8fcad20cef83925310790de58f00993 --- /dev/null +++ b/HarmonyOS_NEXT/Native/NdkOpenGL/AppScope/app.json5 @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "app": { + "bundleName": "com.samples.ndkopengl", + "vendor": "samples", + "versionCode": 1000000, + "versionName": "1.0.0", + "icon": "$media:app_icon", + "label": "$string:app_name" + } +} diff --git a/HarmonyOS_NEXT/Native/NdkOpenGL/AppScope/resources/base/element/string.json b/HarmonyOS_NEXT/Native/NdkOpenGL/AppScope/resources/base/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..d93de68f4f75ab156a67bb250c97a03fdeba7dbe --- /dev/null +++ b/HarmonyOS_NEXT/Native/NdkOpenGL/AppScope/resources/base/element/string.json @@ -0,0 +1,8 @@ +{ + "string": [ + { + "name": "app_name", + "value": "NdkOpenGL" + } + ] +} diff --git a/HarmonyOS_NEXT/Native/NdkOpenGL/AppScope/resources/base/media/app_icon.png b/HarmonyOS_NEXT/Native/NdkOpenGL/AppScope/resources/base/media/app_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ce307a8827bd75456441ceb57d530e4c8d45d36c Binary files /dev/null and b/HarmonyOS_NEXT/Native/NdkOpenGL/AppScope/resources/base/media/app_icon.png differ diff --git a/HarmonyOS_NEXT/Native/NdkOpenGL/build-profile.json5 b/HarmonyOS_NEXT/Native/NdkOpenGL/build-profile.json5 new file mode 100644 index 0000000000000000000000000000000000000000..27901f15c349ef2a7dc8fbb10f7362225cb7a189 --- /dev/null +++ b/HarmonyOS_NEXT/Native/NdkOpenGL/build-profile.json5 @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "app": { + "signingConfigs": [], + "products": [ + { + "name": "default", + "signingConfig": "default", + "compileSdkVersion": "4.0.0(10)", + "compatibleSdkVersion": "4.0.0(10)", + "runtimeOS": "HarmonyOS", + } + ], + "buildModeSet": [ + { + "name": "debug", + }, + { + "name": "release" + } + ] + }, + "modules": [ + { + "name": "entry", + "srcPath": "./entry", + "targets": [ + { + "name": "default", + "applyToProducts": [ + "default" + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Native/NdkOpenGL/entry/.gitignore b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..e2713a2779c5a3e0eb879efe6115455592caeea5 --- /dev/null +++ b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/.gitignore @@ -0,0 +1,6 @@ +/node_modules +/oh_modules +/.preview +/build +/.cxx +/.test \ No newline at end of file diff --git a/HarmonyOS_NEXT/Native/NdkOpenGL/entry/build-profile.json5 b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/build-profile.json5 new file mode 100644 index 0000000000000000000000000000000000000000..a6e15dfc6c2d5519e01b58966da84c83f64c5f5e --- /dev/null +++ b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/build-profile.json5 @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "apiType": 'stageMode', + "buildOption": { + "externalNativeOptions": { + "path": "./src/main/cpp/CMakeLists.txt", + "arguments": "", + "cppFlags": "", + } + }, + "targets": [ + { + "name": "default" + }, + { + "name": "ohosTest", + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Native/NdkOpenGL/entry/hvigorfile.ts b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/hvigorfile.ts new file mode 100644 index 0000000000000000000000000000000000000000..80e4ec5b81689f238c34614b167a0b9e9c83e8d9 --- /dev/null +++ b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/hvigorfile.ts @@ -0,0 +1,2 @@ +// Script for compiling build behavior. It is built in the build plug-in and cannot be modified currently. +export { hapTasks } from '@ohos/hvigor-ohos-plugin'; diff --git a/HarmonyOS_NEXT/Native/NdkOpenGL/entry/oh-package.json5 b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/oh-package.json5 new file mode 100644 index 0000000000000000000000000000000000000000..2bb0dcbd761f83568851671a295649c76e37df4e --- /dev/null +++ b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/oh-package.json5 @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "license": "", + "devDependencies": { + "@types/libtriangles_napi.so": "file:./src/main/cpp/type/libentry" + }, + "author": "AlgoIdeas", + "name": "entry", + "description": "Please describe the basic information.", + "main": "1.0.0", + "version": "1.0.0", + "dependencies": {} +} diff --git a/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/cpp/CMakeLists.txt b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/cpp/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..97bd6d04c187888e5d15487c18d2ee1904a5d682 --- /dev/null +++ b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/cpp/CMakeLists.txt @@ -0,0 +1,46 @@ +# +# Copyright (c) 2023 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# the minimum version of CMake. +cmake_minimum_required(VERSION 3.4.1) + +# project +project(Tetrahedron) + +set(NATIVE_ROOT_PATH ${CMAKE_CURRENT_SOURCE_DIR}) + +# include directory +include_directories(${NATIVE_ROOT_PATH} + ${NATIVE_ROOT_PATH}/include + ${NATIVE_ROOT_PATH}/include/util) + +# build shared library +add_library(tetrahedron_napi SHARED + module.cpp + app_napi.cpp + tetrahedron.cpp + napi_manager.cpp + napi_util.cpp) + +# link OpenHarmony native library (Use OpenGL) +target_link_libraries(tetrahedron_napi PUBLIC EGL) +target_link_libraries(tetrahedron_napi PUBLIC GLESv3) +target_link_libraries(tetrahedron_napi PUBLIC hilog_ndk.z) +target_link_libraries(tetrahedron_napi PUBLIC ace_ndk.z) +target_link_libraries(tetrahedron_napi PUBLIC ace_napi.z) +target_link_libraries(tetrahedron_napi PUBLIC libc++.a) +target_link_libraries(tetrahedron_napi PUBLIC z) +target_link_libraries(tetrahedron_napi PUBLIC uv) +target_link_libraries(tetrahedron_napi PUBLIC libace_napi.z.so) diff --git a/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/cpp/app_napi.cpp b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/cpp/app_napi.cpp new file mode 100644 index 0000000000000000000000000000000000000000..f6c83bab613a3f11f429183a1bd7566a446fd2e3 --- /dev/null +++ b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/cpp/app_napi.cpp @@ -0,0 +1,544 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include +#include +#include + +#include "native_common.h" +#include "log.h" +#include "napi_manager.h" + +#include "tetrahedron.h" +#include "app_napi.h" + +std::unordered_map AppNapi::instance_; +OH_NativeXComponent_Callback AppNapi::callback_; +static Tetrahedron *tetrahedron_; + +uint32_t AppNapi::isCreated_ = 0; +uint32_t AppNapi::xcHeight_ = 0; +uint32_t AppNapi::xcWidth_ = 0; +double AppNapi::off_x = 0; +double AppNapi::off_y = 0; +uint32_t AppNapi::toolType_ = 5; +uint32_t AppNapi::mousecallback_ = 0; +float AppNapi::tiltX_ = 0; +float AppNapi::tiltY_ = 0; +uint32_t AppNapi::touchType = 4; +OH_NativeXComponent_TouchEvent AppNapi::testTouchEvent_; +OH_NativeXComponent_MouseEvent AppNapi::testMouseEvent_; +OH_NativeXComponent_MouseEvent_Callback AppNapi::mouseEventcallback_; + +Tetrahedron *AppNapi::getTetrahedron(void) +{ + return tetrahedron_; +} + +static int Normalize(int angle) +{ + int ret = angle % CIRCUMFERENCE_DEGREE; + if (ret < 0) { + ret += CIRCUMFERENCE_DEGREE; + } + + return ret; +} + +static void OnSurfaceCreatedCB(OH_NativeXComponent* component, void* window) +{ + LOGE("OnSurfaceCreatedCB"); + int32_t ret; + char idStr[OH_XCOMPONENT_ID_LEN_MAX + 1] = {}; + uint64_t idSize = OH_XCOMPONENT_ID_LEN_MAX + 1; + ret = OH_NativeXComponent_GetXComponentId(component, idStr, &idSize); + if (ret != OH_NATIVEXCOMPONENT_RESULT_SUCCESS) { + return; + } + + std::string id(idStr); + auto instance = AppNapi::GetInstance(id); + instance->OnSurfaceCreated(component, window); +} + +static void OnSurfaceChangedCB(OH_NativeXComponent* component, void* window) +{ + int32_t ret; + char idStr[OH_XCOMPONENT_ID_LEN_MAX + 1] = {}; + uint64_t idSize = OH_XCOMPONENT_ID_LEN_MAX + 1; + ret = OH_NativeXComponent_GetXComponentId(component, idStr, &idSize); + if (ret != OH_NATIVEXCOMPONENT_RESULT_SUCCESS) { + return; + } + + std::string id(idStr); + auto instance = AppNapi::GetInstance(id); + instance->OnSurfaceChanged(component, window); +} + +static void OnSurfaceDestroyedCB(OH_NativeXComponent* component, void* window) +{ + int32_t ret; + char idStr[OH_XCOMPONENT_ID_LEN_MAX + 1] = {}; + uint64_t idSize = OH_XCOMPONENT_ID_LEN_MAX + 1; + ret = OH_NativeXComponent_GetXComponentId(component, idStr, &idSize); + if (ret != OH_NATIVEXCOMPONENT_RESULT_SUCCESS) { + return; + } + + std::string id(idStr); + auto instance = AppNapi::GetInstance(id); + tetrahedron_->Quit(); + instance->OnSurfaceDestroyed(component, window); +} + +static void DispatchTouchEventCB(OH_NativeXComponent* component, void* window) +{ + LOGE("DispatchTouchEventCB"); + int32_t ret; + char idStr[OH_XCOMPONENT_ID_LEN_MAX + 1] = {}; + uint64_t idSize = OH_XCOMPONENT_ID_LEN_MAX + 1; + ret = OH_NativeXComponent_GetXComponentId(component, idStr, &idSize); + if (ret != OH_NATIVEXCOMPONENT_RESULT_SUCCESS) { + return; + } + std::string id(idStr); + auto instance = AppNapi::GetInstance(id); + instance->DispatchTouchEvent(component, window); +} + +static void DispatchMouseEventCB(OH_NativeXComponent* component, void* window) +{ + LOGD("DispatchMouseEventCB"); + int32_t ret; + char idStr[OH_XCOMPONENT_ID_LEN_MAX + 1] = {}; + uint64_t idSize = OH_XCOMPONENT_ID_LEN_MAX + 1; + ret = OH_NativeXComponent_GetXComponentId(component, idStr, &idSize); + if (ret != OH_NATIVEXCOMPONENT_RESULT_SUCCESS) { + return; + } + std::string id(idStr); + auto instance = AppNapi::GetInstance(id); + instance->DispatchMouseEvent(component, window); +} + +AppNapi::AppNapi(std::string& id) +{ + id_ = id; + component_ = nullptr; + auto appCallback = AppNapi::GetNXComponentCallback(); + appCallback->OnSurfaceCreated = OnSurfaceCreatedCB; + appCallback->OnSurfaceChanged = OnSurfaceChangedCB; + appCallback->OnSurfaceDestroyed = OnSurfaceDestroyedCB; + appCallback->DispatchTouchEvent = DispatchTouchEventCB; + auto appMouseEventCallback = AppNapi::GetNXComponentMouseEventCallback(); + appMouseEventCallback->DispatchMouseEvent = DispatchMouseEventCB; + + tetrahedron_ = new Tetrahedron(id); +} + +AppNapi* AppNapi::GetInstance(std::string& id) +{ + if (instance_.find(id) == instance_.end()) { + AppNapi* instance = new AppNapi(id); + instance_[id] = instance; + return instance; + } else { + return instance_[id]; + } +} + +OH_NativeXComponent_Callback* AppNapi::GetNXComponentCallback() +{ + return &AppNapi::callback_; +} + +OH_NativeXComponent_MouseEvent_Callback* AppNapi::GetNXComponentMouseEventCallback() +{ + return &AppNapi::mouseEventcallback_; +} + +void AppNapi::SetNativeXComponent(OH_NativeXComponent* component) +{ + component_ = component; + OH_NativeXComponent_RegisterCallback(component_, &AppNapi::callback_); + uint32_t mousecallback = OH_NativeXComponent_RegisterMouseEventCallback(component_, + &AppNapi::mouseEventcallback_); + mousecallback_ = mousecallback; +} + +void AppNapi::OnSurfaceCreated(OH_NativeXComponent* component, void* window) +{ + LOGE("AppNapi::OnSurfaceCreated"); + + int32_t ret = OH_NativeXComponent_GetXComponentSize(component, window, &width_, &height_); + + LOGE("Offset : x = %{public}f, y = %{public}f ", x_, y_); + if (ret == OH_NATIVEXCOMPONENT_RESULT_SUCCESS) { + tetrahedron_->Init(window, width_, height_); + tetrahedron_->Update(angleX_, angleY_); + isCreated_++; + xcHeight_ = height_; + xcWidth_ = width_; + + LOGE("AppNapi::OnSurfaceCreated success "); + } else { + LOGE("AppNapi::OnSurfaceCreated failed"); + } +} + +void AppNapi::OnSurfaceChanged(OH_NativeXComponent* component, void* window) +{ + LOGE("AppNapi::OnSurfaceChanged"); + int32_t ret = OH_NativeXComponent_GetXComponentSize(component, window, &width_, &height_); + int32_t ret1; + if (ret == OH_NATIVEXCOMPONENT_RESULT_SUCCESS) { + xcHeight_ = height_; + xcWidth_ = width_; + LOGE("after width = %{public}d, height = %{public}d", xcWidth_, xcHeight_); + ret1= OH_NativeXComponent_GetXComponentOffset(component, window, &x_, &y_); + off_x = x_; + off_y = y_; + + if (ret1 == OH_NATIVEXCOMPONENT_RESULT_SUCCESS) { + LOGE("Offset : x = %{public}lf, y = %{public}lf ", off_x, off_y); + } else { + LOGE("Offset get failed"); + } + + LOGE("AppNapi::GetOffset "); + LOGE("Offset : x = %{public}lf, y = %{public}lf ", off_x, off_y); + } +} + +void AppNapi::OnSurfaceDestroyed(OH_NativeXComponent* component, void* window) +{ + LOGE("AppNapi::OnSurfaceDestroyed"); + isCreated_--; + LOGE("AppNapi::OnSurfaceDestroyed iscreated %{public}d", isCreated_); +} + +void AppNapi::DispatchTouchEvent(OH_NativeXComponent* component, void* window) +{ + int32_t ret = OH_NativeXComponent_GetTouchEvent(component, window, &touchEvent_); + if (ret == OH_NATIVEXCOMPONENT_RESULT_SUCCESS) { + testTouchEvent_ = touchEvent_; + LOGE("Touch Info : x = %{public}f, y = %{public}f screenx = %{public}f, screeny = %{public}f", + touchEvent_.x, touchEvent_.y, touchEvent_.screenX, touchEvent_.screenY); + for (uint32_t i = 0; i < touchEvent_.numPoints; i++) { + LOGE("Touch Info : dots[%{public}d] id %{public}d x = %{public}f, y = %{public}f", i, + touchEvent_.touchPoints[i].id, touchEvent_.touchPoints[i].x, touchEvent_.touchPoints[i].y); + LOGE("Touch Info : screenx = %{public}f, screeny = %{public}f", + touchEvent_.touchPoints[i].screenX, touchEvent_.touchPoints[i].screenY); + OH_NativeXComponent_TouchPointToolType toolType; + float tiltX = 123.0; + float tiltY = 321.0; + int32_t ret1; + int32_t ret2; + int32_t ret3; + ret1 = OH_NativeXComponent_GetTouchPointToolType(component, i, &toolType); + ret2 = OH_NativeXComponent_GetTouchPointTiltX(component, i, &tiltX); + ret3 = OH_NativeXComponent_GetTouchPointTiltY(component, i, &tiltY); + toolType_ = toolType; + tiltX_ = tiltX; + tiltY_ = tiltY; + LOGE("Touch Info : [%{public}d] %{public}u, %{public}f, %{public}f", + i, toolType, tiltX, tiltY); + } + } else { + LOGE("Touch fail"); + } +} + +void AppNapi::DispatchMouseEvent(OH_NativeXComponent* component, void* window) +{ + int32_t ret = OH_NativeXComponent_GetMouseEvent(component, window, &mouseEvent_); + LOGE("Mouse Info DispatchMouseEvent"); + if (ret == OH_NATIVEXCOMPONENT_RESULT_SUCCESS) { + testMouseEvent_ = mouseEvent_; + LOGE("Mouse Info : x = %{public}f, y = %{public}f screenx = %{public}f, screeny = %{public}f", + mouseEvent_.x, mouseEvent_.y, mouseEvent_.screenX, mouseEvent_.screenY); + LOGE("Mouse Info : action = %{public}d, button = %{public}d", mouseEvent_.action, mouseEvent_.button); + } else { + LOGE("Mouse Info fail"); + } +} + +napi_value AppNapi::UpdateAngle(napi_env env, napi_callback_info info) +{ + LOGE("Update"); + size_t requireArgc = 2; + size_t argc = 2; + int speed = 3; + napi_value args[2] = {nullptr}; + + napi_get_cb_info(env, info, &argc, args, nullptr, nullptr); + + napi_valuetype valuetype0; + napi_typeof(env, args[0], &valuetype0); + + napi_valuetype valuetype1; + napi_typeof(env, args[1], &valuetype1); + + double offsetX; + napi_get_value_double(env, args[0], &offsetX); + + double offsetY; + napi_get_value_double(env, args[1], &offsetY); + + float tetrahedron_angleX = tetrahedron_->GetAngleX(); + float tetrahedron_angleY = tetrahedron_->GetAngleY(); + + if (offsetY < 0) { + tetrahedron_angleX = tetrahedron_angleX + speed; + } else { + tetrahedron_angleX = tetrahedron_angleX - speed; + } + + if (offsetX < 0) { + tetrahedron_angleY = tetrahedron_angleY + speed; + } else { + tetrahedron_angleY = tetrahedron_angleY - speed; + } + + tetrahedron_angleY = Normalize(tetrahedron_angleY); + tetrahedron_angleX = Normalize(tetrahedron_angleX); + tetrahedron_->Update(tetrahedron_angleX, tetrahedron_angleY); + + napi_value ret; + napi_create_array(env, &ret); + + napi_value num; + napi_create_int32(env, tetrahedron_angleX, &num); + napi_set_element(env, ret, 0, num); + napi_create_int32(env, tetrahedron_angleY, &num); + napi_set_element(env, ret, 1, num); + + return ret; +} + +napi_value AppNapi::Quit(napi_env env, napi_callback_info info) +{ + LOGE("AppNapi -> Quit"); + napi_value exportInstance; + napi_value thisArg; + napi_status status; + OH_NativeXComponent *nativeXComponent = nullptr; + + int32_t ret; + char idStr[OH_XCOMPONENT_ID_LEN_MAX + 1] = {}; + uint64_t idSize = OH_XCOMPONENT_ID_LEN_MAX + 1; + + tetrahedron_->Quit(); + + NAPI_CALL(env, napi_get_cb_info(env, info, NULL, NULL, &thisArg, NULL)); + + status = napi_get_named_property(env, thisArg, OH_NATIVE_XCOMPONENT_OBJ, &exportInstance); + if (status != napi_ok) { + return nullptr; + } + + status = napi_unwrap(env, exportInstance, reinterpret_cast(&nativeXComponent)); + if (status != napi_ok) { + return nullptr; + } + + ret = OH_NativeXComponent_GetXComponentId(nativeXComponent, idStr, &idSize); + if (ret != OH_NATIVEXCOMPONENT_RESULT_SUCCESS) { + return nullptr; + } + + return 0; +} + +napi_value AppNapi::GetXComponentId(napi_env env, napi_callback_info info) +{ + napi_value thisArg; + napi_status status; + napi_value exportInstance; + OH_NativeXComponent *nativeXComponent = nullptr; + + int32_t ret; + char idStr[OH_XCOMPONENT_ID_LEN_MAX + 1] = {}; + uint64_t idSize = OH_XCOMPONENT_ID_LEN_MAX + 1; + + NAPI_CALL(env, napi_get_cb_info(env, info, NULL, NULL, &thisArg, NULL)); + status = napi_get_named_property(env, thisArg, OH_NATIVE_XCOMPONENT_OBJ, &exportInstance); + status = napi_unwrap(env, exportInstance, reinterpret_cast(&nativeXComponent)); + ret = OH_NativeXComponent_GetXComponentId(nativeXComponent, idStr, &idSize); + if (ret != OH_NATIVEXCOMPONENT_RESULT_SUCCESS) { + return nullptr; + } + + std::string id(idStr); + + napi_value output; + NAPI_CALL(env, napi_create_string_utf8(env, idStr, id.length(), &output)); + + return output; +} + +napi_value AppNapi::GetXComponentSize_Height(napi_env env, napi_callback_info info) +{ + LOGE("running AppNapi::GetXComponentSize_Height"); + napi_value output; + NAPI_CALL(env, napi_create_uint32(env, xcHeight_, &output)); + LOGE(" GetXComponentSize_Height %{public}d ", xcHeight_); + return output; +} + +napi_value AppNapi::GetXComponentSize_Width(napi_env env, napi_callback_info info) +{ + LOGE("running AppNapi::GetXComponentSize_Width"); + napi_value output; + NAPI_CALL(env, napi_create_uint32(env, xcWidth_, &output)); + LOGE(" GetXComponentSize_Width %{public}d ", xcWidth_); + return output; +} + +napi_value AppNapi::GetXComponentOffset_x(napi_env env, napi_callback_info info) +{ + LOGE("running AppNapi::GetXComponentOffset_x"); + + napi_value output; + NAPI_CALL(env, napi_create_double(env, off_x, &output)); + LOGE("GetXComponentOffset_x : %{public}f", off_x); + + return output; +} + +napi_value AppNapi::GetXComponentOffset_y(napi_env env, napi_callback_info info) +{ + LOGE("running AppNapi::GetXComponentOffset_y"); + + napi_value output; + NAPI_CALL(env, napi_create_double(env, off_y, &output)); + LOGE("GetXComponentOffset_y : %{public}f", off_y); + + return output; +} + +napi_value AppNapi::GetXComponentpointtool_tiltx(napi_env env, napi_callback_info info) +{ + LOGE("running AppNapi::GetXComponentpointtool_tiltx"); + + napi_value output; + NAPI_CALL(env, napi_create_double(env, tiltX_, &output)); + LOGE("GetXComponentpointtool_tiltx : %{public}f", tiltX_); + + return output; +} + +napi_value AppNapi::GetXComponentpointtool_tilty(napi_env env, napi_callback_info info) +{ + LOGE("running AppNapi::GetXComponentpointtool_tilty"); + + napi_value output; + NAPI_CALL(env, napi_create_double(env, tiltY_, &output)); + LOGE("GetXComponentpointtool_tilty : %{public}f", tiltY_); + + return output; +} + +napi_value AppNapi::GetXComponentpointtool_type(napi_env env, napi_callback_info info) +{ + LOGE("running AppNapi::GetXComponentpointtool_type"); + + napi_value output; + NAPI_CALL(env, napi_create_double(env, toolType_, &output)); + LOGE("GetXComponentpointtool_type : %{public}u", toolType_); + + return output; +} + +napi_value AppNapi::GetXComponent_TouchEvent(napi_env env, napi_callback_info info) +{ + LOGE("running AppNapi::GetXComponent_TouchEvent"); + + napi_value surf_x; + napi_value surf_y; + napi_value t_type; + + NAPI_CALL(env, napi_create_double(env, testTouchEvent_.x, &(surf_x))); + NAPI_CALL(env, napi_create_double(env, testTouchEvent_.y, &(surf_y))); + NAPI_CALL(env, napi_create_uint32(env, testTouchEvent_.type, &(t_type))); + + napi_value obj; + NAPI_CALL(env, napi_create_object(env, &obj)); + NAPI_CALL(env, napi_set_named_property(env, obj, "surface_X", surf_x)); + NAPI_CALL(env, napi_set_named_property(env, obj, "surface_Y", surf_y)); + NAPI_CALL(env, napi_set_named_property(env, obj, "touchType", t_type)); + + return obj; +} + +napi_value AppNapi::GetXComponent_MouseEvent(napi_env env, napi_callback_info info) +{ + LOGE("running AppNapi::GetXComponent_MouseEvent"); + + napi_value surf_x; + napi_value surf_y; + napi_value t_button; + + NAPI_CALL(env, napi_create_double(env, testMouseEvent_.x, &(surf_x))); + NAPI_CALL(env, napi_create_double(env, testMouseEvent_.y, &(surf_y))); + NAPI_CALL(env, napi_create_uint32(env, testMouseEvent_.button, &(t_button))); + + napi_value obj; + NAPI_CALL(env, napi_create_object(env, &obj)); + NAPI_CALL(env, napi_set_named_property(env, obj, "surface_X1", surf_x)); // float x + NAPI_CALL(env, napi_set_named_property(env, obj, "surface_Y1", surf_y)); // float y + NAPI_CALL(env, napi_set_named_property(env, obj, "mousebutton", t_button)); // int32_t + + return obj; +} + +napi_value AppNapi::GetXComponent_RegisterMouseEventCallback(napi_env env, napi_callback_info info) +{ + LOGE("running AppNapi::GetXComponent_RegisterMouseEventCallback"); + + napi_value callback_; + NAPI_CALL(env, napi_create_double(env, mousecallback_, &(callback_))); + + napi_value obj; + NAPI_CALL(env, napi_create_object(env, &obj)); + NAPI_CALL(env, napi_set_named_property(env, obj, "MouseCallback_", callback_)); // float x + + return obj; +} + +napi_value AppNapi::Export(napi_env env, napi_value exports) +{ + LOGE("AppNapi::Export"); + // Register NAPI + napi_property_descriptor desc[] = { + DECLARE_NAPI_FUNCTION("Quit", AppNapi::Quit), + DECLARE_NAPI_FUNCTION("GetXComponentId", AppNapi::GetXComponentId), + DECLARE_NAPI_FUNCTION("GetXComponentSize_Height", AppNapi::GetXComponentSize_Height), + DECLARE_NAPI_FUNCTION("GetXComponentSize_Width", AppNapi::GetXComponentSize_Width), + DECLARE_NAPI_FUNCTION("GetXComponentOffset_x", AppNapi::GetXComponentOffset_x), + DECLARE_NAPI_FUNCTION("GetXComponentOffset_y", AppNapi::GetXComponentOffset_y), + DECLARE_NAPI_FUNCTION("GetXComponent_TouchEvent", AppNapi::GetXComponent_TouchEvent), + DECLARE_NAPI_FUNCTION("GetXComponent_MouseEvent", AppNapi::GetXComponent_MouseEvent), + DECLARE_NAPI_FUNCTION("GetXComponentpointtool_tilty", AppNapi::GetXComponentpointtool_tilty), + DECLARE_NAPI_FUNCTION("GetXComponentpointtool_type", AppNapi::GetXComponentpointtool_type), + DECLARE_NAPI_FUNCTION("GetXComponentpointtool_tiltx", AppNapi::GetXComponentpointtool_tiltx), + DECLARE_NAPI_FUNCTION("GetXComponent_RegisterMouseEventCallback", + AppNapi::GetXComponent_RegisterMouseEventCallback), + }; + NAPI_CALL(env, napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc)); + return exports; +} diff --git a/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/cpp/include/app_napi.h b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/cpp/include/app_napi.h new file mode 100644 index 0000000000000000000000000000000000000000..39d2f9b35947f8ab91b1088bb837ff9738dc9cfc --- /dev/null +++ b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/cpp/include/app_napi.h @@ -0,0 +1,95 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef APP_NAPI_H_ +#define APP_NAPI_H_ + +#include +#include + +#include +#include +#include + +#define CIRCUMFERENCE_DEGREE 360 + +class AppNapi { +public: + explicit AppNapi(std::string& id); + static AppNapi* GetInstance(std::string& id); + static OH_NativeXComponent_Callback* GetNXComponentCallback(); + static OH_NativeXComponent_MouseEvent_Callback* GetNXComponentMouseEventCallback(); + void SetNativeXComponent(OH_NativeXComponent* component); + +public: + // NAPI interface + napi_value Export(napi_env env, napi_value exports); + + // Exposed to JS developers by NAPI + static napi_value UpdateAngle(napi_env env, napi_callback_info info); + static napi_value Quit(napi_env env, napi_callback_info info); + + // xts interfaces + static napi_value GetXComponentId(napi_env env, napi_callback_info info); + static napi_value GetXComponentSize_Height(napi_env env, napi_callback_info info); + static napi_value GetXComponentSize_Width(napi_env env, napi_callback_info info); + static napi_value GetXComponentOffset_x(napi_env env, napi_callback_info info); + static napi_value GetXComponentOffset_y(napi_env env, napi_callback_info info); + static napi_value GetXComponent_TouchEvent(napi_env env, napi_callback_info info); + static napi_value GetXComponent_MouseEvent(napi_env env, napi_callback_info info); + static napi_value GetXComponentpointtool_tiltx(napi_env env, napi_callback_info info); + static napi_value GetXComponentpointtool_tilty(napi_env env, napi_callback_info info); + static napi_value GetXComponentpointtool_type(napi_env env, napi_callback_info info); + static napi_value GetXComponent_RegisterMouseEventCallback(napi_env env, napi_callback_info info); + + // Callback, called by ACE XComponent + void OnSurfaceCreated(OH_NativeXComponent* component, void* window); + void OnSurfaceChanged(OH_NativeXComponent* component, void* window); + void OnSurfaceDestroyed(OH_NativeXComponent* component, void* window); + void DispatchTouchEvent(OH_NativeXComponent* component, void* window); + void DispatchMouseEvent(OH_NativeXComponent* component, void* window); + Tetrahedron *getTetrahedron(); + +public: + static std::unordered_map instance_; + static OH_NativeXComponent_Callback callback_; + static uint32_t isCreated_; + static uint32_t xcHeight_; + static uint32_t xcWidth_; + static uint32_t toolType_; + static float tiltX_; + static float tiltY_; + static uint32_t mousecallback_; + static double off_x; + static double off_y; + static uint32_t touchType; + static OH_NativeXComponent_TouchEvent testTouchEvent_; + static OH_NativeXComponent_MouseEvent testMouseEvent_; + static OH_NativeXComponent_MouseEvent_Callback mouseEventcallback_; + + OH_NativeXComponent* component_; + std::string id_; + uint64_t width_; + uint64_t height_; + + float angleX_ = 30.0; + float angleY_ = 45.0; + double x_; + double y_; + OH_NativeXComponent_TouchEvent touchEvent_; + OH_NativeXComponent_MouseEvent mouseEvent_; +}; + +#endif // APP_NAPI_H_ diff --git a/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/cpp/include/tetrahedron.h b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/cpp/include/tetrahedron.h new file mode 100644 index 0000000000000000000000000000000000000000..87c10a04dd7fb5a91b768bdca761e542f2ac9532 --- /dev/null +++ b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/cpp/include/tetrahedron.h @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef TETRAHEDRON_H +#define TETRAHEDRON_H + +#include +#include +#include + +#include +#include + +#define TRIANGLES_POINT 3 +#define TETRAHEDRON_POINT 12 + +class Tetrahedron { +public: + explicit Tetrahedron(std::string& id) : id(id) {}; + int32_t Init(void* windowHandle, int windowWidth, int windowHeight); + void Update(float angleXOffset, float angleYOffset); + float GetAngleX(void); + float GetAngleY(void); + int32_t Quit(void); + +public: + std::string id; + +private: + GLuint LoadShader(GLenum type, const char *shaderSrc); + GLuint CreateProgram(const char *vertexShader, const char *fragShader); + + EGLNativeWindowType mEglWindow; + EGLDisplay mEGLDisplay = EGL_NO_DISPLAY; + EGLConfig mEGLConfig = nullptr; + EGLContext mEGLContext = EGL_NO_CONTEXT; + EGLContext mSharedEGLContext = EGL_NO_CONTEXT; + EGLSurface mEGLSurface = nullptr; + GLuint mProgramHandle; + float angleX = 30.0; /* default X angle */ + float angleY = 45.0; /* default Y angle */ + + GLint mRotationLocation; + GLint mTranslationLocation; + GLint mMoveOriginLocation; +}; + +#endif /* TETRAHEDRON_H */ diff --git a/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/cpp/include/util/log.h b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/cpp/include/util/log.h new file mode 100644 index 0000000000000000000000000000000000000000..05e5df65d7ffb5c598b78fffeb4776e7bd054503 --- /dev/null +++ b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/cpp/include/util/log.h @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef LOG_H +#define LOG_H + +#include + +#ifndef LOGI +#define LOGI(...) ((void)OH_LOG_Print(LOG_APP, LOG_INFO, LOG_DOMAIN, "[OpenGL]", __VA_ARGS__)) +#endif + +#ifndef LOGD +#define LOGD(...) ((void)OH_LOG_Print(LOG_APP, LOG_DEBUG, LOG_DOMAIN, "[OpenGL]", __VA_ARGS__)) +#endif + +#ifndef LOGW +#define LOGW(...) ((void)OH_LOG_Print(LOG_APP, LOG_WARN, LOG_DOMAIN, "[OpenGL]", __VA_ARGS__)) +#endif + +#ifndef LOGE +#define LOGE(...) ((void)OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_DOMAIN, "[OpenGL]", __VA_ARGS__)) +#endif +#endif // _LOG_H_ \ No newline at end of file diff --git a/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/cpp/include/util/napi_manager.h b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/cpp/include/util/napi_manager.h new file mode 100644 index 0000000000000000000000000000000000000000..de81eee3e1e9524efbaa15c9b735445a163f4ac9 --- /dev/null +++ b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/cpp/include/util/napi_manager.h @@ -0,0 +1,80 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef NAPI_MANAGER_H +#define NAPI_MANAGER_H + +#include +#include + +#include +#include +#include + +#include "native_common.h" +#include "app_napi.h" + +class NapiManager { +public: + ~NapiManager() {} + + static NapiManager* GetInstance() + { + return &NapiManager::manager_; + } + + static napi_value GetContext(napi_env env, napi_callback_info info); + + /**APP Lifecycle**/ + static napi_value NapiOnCreate(napi_env env, napi_callback_info info); + static napi_value NapiOnShow(napi_env env, napi_callback_info info); + static napi_value NapiOnHide(napi_env env, napi_callback_info info); + static napi_value NapiOnDestroy(napi_env env, napi_callback_info info); + + void OnCreateNative(napi_env env, uv_loop_t* loop); + void OnShowNative(); + void OnHideNative(); + void OnDestroyNative(); + + /**JS Page Lifecycle**/ + static napi_value NapiOnPageShow(napi_env env, napi_callback_info info); + static napi_value NapiOnPageHide(napi_env env, napi_callback_info info); + + void OnPageShowNative(); + void OnPageHideNative(); + + OH_NativeXComponent* GetNativeXComponent(std::string& id); + void SetNativeXComponent(std::string& id, OH_NativeXComponent* nativeXComponent); + AppNapi* GetApp(std::string& id); + +public: + // Napi export + bool Export(napi_env env, napi_value exports); + +public: + napi_env mainEnv_ = nullptr; + uv_loop_t* mainLoop_ = nullptr; + uv_async_t mainOnMessageSignal_ {}; + +private: + static void MainOnMessage(const uv_async_t* req); + static NapiManager manager_; + + std::string id_; + std::unordered_map nativeXComponentMap_; + std::unordered_map appNapiMap_; +}; + +#endif // PLUGIN_MANAGER_H diff --git a/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/cpp/include/util/napi_util.h b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/cpp/include/util/napi_util.h new file mode 100644 index 0000000000000000000000000000000000000000..f0e2cfdb6237ff6030328ad066b59cc0068d2182 --- /dev/null +++ b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/cpp/include/util/napi_util.h @@ -0,0 +1,35 @@ +/* + * Copyright (C) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef NAPI_UTIL_H +#define NAPI_UTIL_H + +#include +#include +#include "native_common.h" + +class NapiUtil { +public: + static void JsValueToString(const napi_env &env, const napi_value &value, const int32_t bufLen, + std::string &target); + static napi_value SetNapiCallInt32(const napi_env &env, const int32_t intValue); + static napi_value SetNapiCallBool(const napi_env env, bool value); + static int StringToInt(std::string value); + static int StringToLong(std::string value); + static float StringToFloat(std::string value); + static bool StringToBool(std::string value); +}; + +#endif // NAPI_UTIL_H diff --git a/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/cpp/include/util/native_common.h b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/cpp/include/util/native_common.h new file mode 100644 index 0000000000000000000000000000000000000000..efe40675128a4438fc5a50de17f2bffd2a84846a --- /dev/null +++ b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/cpp/include/util/native_common.h @@ -0,0 +1,98 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef NATIVE_COMMON_H +#define NATIVE_COMMON_H + +#define NAPI_RETVAL_NOTHING + +#define GET_AND_THROW_LAST_ERROR(env) \ + do { \ + const napi_extended_error_info* errorInfo = nullptr; \ + napi_get_last_error_info((env), &errorInfo); \ + bool isPending = false; \ + napi_is_exception_pending((env), &isPending); \ + if (!isPending && errorInfo != nullptr) { \ + const char* errorMessage = \ + errorInfo->error_message != nullptr ? errorInfo->error_message : "empty error message"; \ + napi_throw_error((env), nullptr, errorMessage); \ + } \ + } while (0) + +#define NAPI_ASSERT_BASE(env, assertion, message, retVal) \ + do { \ + if (!(assertion)) { \ + napi_throw_error((env), nullptr, "assertion (" #assertion ") failed: " message); \ + return retVal; \ + } \ + } while (0) + +#define NAPI_ASSERT(env, assertion, message) NAPI_ASSERT_BASE(env, assertion, message, nullptr) + +#define NAPI_ASSERT_RETURN_VOID(env, assertion, message) NAPI_ASSERT_BASE(env, assertion, message, NAPI_RETVAL_NOTHING) + +#define NAPI_CALL_BASE(env, theCall, retVal) \ + do { \ + if ((theCall) != napi_ok) { \ + GET_AND_THROW_LAST_ERROR((env)); \ + return retVal; \ + } \ + } while (0) + +#define NAPI_CALL(env, theCall) NAPI_CALL_BASE(env, theCall, nullptr) + +#define NAPI_CALL_RETURN_VOID(env, theCall) NAPI_CALL_BASE(env, theCall, NAPI_RETVAL_NOTHING) + +#define DECLARE_NAPI_PROPERTY(name, val) \ + { \ + (name), nullptr, nullptr, nullptr, nullptr, val, napi_default, nullptr \ + } + +#define DECLARE_NAPI_STATIC_PROPERTY(name, val) \ + { \ + (name), nullptr, nullptr, nullptr, nullptr, val, napi_static, nullptr \ + } + +#define DECLARE_NAPI_FUNCTION(name, func) \ + { \ + (name), nullptr, (func), nullptr, nullptr, nullptr, napi_default, nullptr \ + } + +#define DECLARE_NAPI_FUNCTION_WITH_DATA(name, func, data) \ + { \ + (name), nullptr, (func), nullptr, nullptr, nullptr, napi_default, data \ + } + +#define DECLARE_NAPI_STATIC_FUNCTION(name, func) \ + { \ + (name), nullptr, (func), nullptr, nullptr, nullptr, napi_static, nullptr \ + } + +#define DECLARE_NAPI_GETTER(name, getter) \ + { \ + (name), nullptr, nullptr, (getter), nullptr, nullptr, napi_default, nullptr \ + } + +#define DECLARE_NAPI_SETTER(name, setter) \ + { \ + (name), nullptr, nullptr, nullptr, (setter), nullptr, napi_default, nullptr \ + } + +#define DECLARE_NAPI_GETTER_SETTER(name, getter, setter) \ + { \ + (name), nullptr, nullptr, (getter), (setter), nullptr, napi_default, nullptr \ + } + +#endif /* _NATIVE_COMMON_H_ */ diff --git a/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/cpp/include/util/native_interface_xcomponent.h b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/cpp/include/util/native_interface_xcomponent.h new file mode 100644 index 0000000000000000000000000000000000000000..a7b065bc4cc2dd95ebf1b7e9a52c0ea4ae664e62 --- /dev/null +++ b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/cpp/include/util/native_interface_xcomponent.h @@ -0,0 +1,397 @@ +/* + * Copyright (c) 2021-2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * @addtogroup OH_NativeXComponent Native XComponent + * @{ + * + * @brief Describes the surface and touch event held by the ArkUI XComponent, which can be used for the EGL/OpenGL ES\n + * and media data input and displayed on the ArkUI XComponent. + * + * @since 8 + * @version 1.0 + */ + +/** + * @file native_interface_xcomponent.h + * + * @brief Declares APIs for accessing a Native XComponent. + * + * @since 8 + * @version 1.0 + */ + +#ifndef NATIVE_INTERFACE_XCOMPONENT_H +#define NATIVE_INTERFACE_XCOMPONENT_H + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define OH_NATIVE_XCOMPONENT_OBJ ("__NATIVE_XCOMPONENT_OBJ__") + +const uint32_t OH_XCOMPONENT_ID_LEN_MAX = 128; +const uint32_t OH_MAX_TOUCH_POINTS_NUMBER = 10; + +/** + * @brief Enumerates the API access states. + * + * @since 8 + * @version 1.0 + */ +enum { + /** Successful. */ + OH_NATIVEXCOMPONENT_RESULT_SUCCESS = 0, + /** Failed. */ + OH_NATIVEXCOMPONENT_RESULT_FAILED = -1, + /** Invalid parameters. */ + OH_NATIVEXCOMPONENT_RESULT_BAD_PARAMETER = -2, +}; + +typedef enum { + /** Trigger a touch event when a finger is pressed. */ + OH_NATIVEXCOMPONENT_DOWN = 0, + /** Trigger a touch event when a finger is lifted. */ + OH_NATIVEXCOMPONENT_UP, + /** Trigger a touch event when a finger moves on the screen in pressed state. */ + OH_NATIVEXCOMPONENT_MOVE, + /** Trigger an event when a touch event is canceled. */ + OH_NATIVEXCOMPONENT_CANCEL, + /** Invalid touch type. */ + OH_NATIVEXCOMPONENT_UNKNOWN, +} OH_NativeXComponent_TouchEventType; + +/** + * @brief Represents the touch point tool type. + * + * @since 9 + * @version 1.0 + */ +typedef enum { + /** Indicates invalid tool type. */ + OH_NATIVEXCOMPONENT_TOOL_TYPE_UNKNOWN = 0, + /** Indicates a finger. */ + OH_NATIVEXCOMPONENT_TOOL_TYPE_FINGER, + /** Indicates a stylus. */ + OH_NATIVEXCOMPONENT_TOOL_TYPE_PEN, + /** Indicates a eraser. */ + OH_NATIVEXCOMPONENT_TOOL_TYPE_RUBBER, + /** Indicates a brush. */ + OH_NATIVEXCOMPONENT_TOOL_TYPE_BRUSH, + /** Indicates a pencil. */ + OH_NATIVEXCOMPONENT_TOOL_TYPE_PENCIL, + /** Indicates a brush. */ + OH_NATIVEXCOMPONENT_TOOL_TYPE_AIRBRUSH, + /** Indicates a mouse. */ + OH_NATIVEXCOMPONENT_TOOL_TYPE_MOUSE, + /** Indicates a lens. */ + OH_NATIVEXCOMPONENT_TOOL_TYPE_LENS, +} OH_NativeXComponent_TouchPointToolType; + +/** + * @brief Represents the touch event source type. + * + * @since 9 + * @version 1.0 + */ +typedef enum { + /** Indicates an unknown input source type. */ + OH_NATIVEXCOMPONENT_SOURCE_TYPE_UNKNOWN = 0, + /** Indicates that the input source generates a mouse multi-touch event. */ + OH_NATIVEXCOMPONENT_SOURCE_TYPE_MOUSE, + /** Indicates that the input source generates a touchscreen multi-touch event. */ + OH_NATIVEXCOMPONENT_SOURCE_TYPE_TOUCHSCREEN, + /** Indicates that the input source generates a touchpad multi-touch event. */ + OH_NATIVEXCOMPONENT_SOURCE_TYPE_TOUCHPAD, + /** Indicates that the input source generates a joystick multi-touch event. */ + OH_NATIVEXCOMPONENT_SOURCE_TYPE_JOYSTICK, +} OH_NativeXComponent_EventSourceType; + +/** + * @brief Represents the mouse event action. + * + * @since 9 + * @version 1.0 + */ +typedef enum { + OH_NATIVEXCOMPONENT_MOUSE_NONE = 0, + OH_NATIVEXCOMPONENT_MOUSE_PRESS, + OH_NATIVEXCOMPONENT_MOUSE_RELEASE, + OH_NATIVEXCOMPONENT_MOUSE_MOVE, +} OH_NativeXComponent_MouseEventAction; + +/** + * @brief Represents the mouse event button. + * + * @since 9 + * @version 1.0 + */ +typedef enum { + OH_NATIVEXCOMPONENT_NONE_BUTTON = 0, + OH_NATIVEXCOMPONENT_LEFT_BUTTON = 0x01, + OH_NATIVEXCOMPONENT_RIGHT_BUTTON = 0x02, + OH_NATIVEXCOMPONENT_MIDDLE_BUTTON = 0x04, + OH_NATIVEXCOMPONENT_BACK_BUTTON = 0x08, + OH_NATIVEXCOMPONENT_FORWARD_BUTTON = 0x10, +} OH_NativeXComponent_MouseEventButton; + +typedef struct { + /** Unique identifier of a finger. */ + int32_t id; + /** X coordinate of the touch point relative to the left edge of the screen. */ + float screenX; + /** Y coordinate of the touch point relative to the upper edge of the screen. */ + float screenY; + /** X coordinate of the touch point relative to the left edge of the element to touch. */ + float x; + /** Y coordinate of the touch point relative to the upper edge of the element to touch. */ + float y; + /** Touch type of the touch event. */ + OH_NativeXComponent_TouchEventType type; + /** Contact area between the finger pad and the screen. */ + double size; + /** Pressure of the current touch event. */ + float force; + /** Timestamp of the current touch event. */ + int64_t timeStamp; + /** Whether the current point is pressed. */ + bool isPressed; +} OH_NativeXComponent_TouchPoint; + +// Represents the touch point information. +typedef struct { + /** Unique identifier of a finger. */ + int32_t id; + /** X coordinate of the touch point relative to the left edge of the screen. */ + float screenX; + /** Y coordinate of the touch point relative to the upper edge of the screen. */ + float screenY; + /** X coordinate of the touch point relative to the left edge of the element to touch. */ + float x; + /** Y coordinate of the touch point relative to the upper edge of the element to touch. */ + float y; + /** Touch type of the touch event. */ + OH_NativeXComponent_TouchEventType type; + /** Contact area between the finger pad and the screen. */ + double size; + /** Pressure of the current touch event. */ + float force; + /** ID of the device where the current touch event is generated. */ + int64_t deviceId; + /** Timestamp of the current touch event. */ + int64_t timeStamp; + /** Array of the current touch points. */ + OH_NativeXComponent_TouchPoint touchPoints[OH_MAX_TOUCH_POINTS_NUMBER]; + /** Number of current touch points. */ + uint32_t numPoints; +} OH_NativeXComponent_TouchEvent; + +/** + * @brief Represents the mouse event information. + * + * @since 9 + * @version 1.0 + */ +typedef struct { + /** X coordinate of the mouse point relative to the left edge of the element to mouse. */ + float x; + /** Y coordinate of the mouse point relative to the upper edge of the element to mouse. */ + float y; + /** X coordinate of the mouse point relative to the left edge of the screen. */ + float screenX; + /** Y coordinate of the mouse point relative to the upper edge of the screen. */ + float screenY; + /** Timestamp of the current mouse event. */ + int64_t timestamp; + /** Mouse event action. */ + OH_NativeXComponent_MouseEventAction action; + /** Mouse event button. */ + OH_NativeXComponent_MouseEventButton button; +} OH_NativeXComponent_MouseEvent; + +/** + * @brief Provides an encapsulated OH_NativeXComponent instance. + * + * @since 8 + * @version 1.0 + */ +typedef struct OH_NativeXComponent OH_NativeXComponent; + +/** + * @brief Registers the surface lifecycle and touch event callbacks. + * + * @since 8 + * @version 1.0 + */ +typedef struct OH_NativeXComponent_Callback { + /** Called when the surface is created. */ + void (*OnSurfaceCreated)(OH_NativeXComponent* component, void* window); + /** Called when the surface is changed. */ + void (*OnSurfaceChanged)(OH_NativeXComponent* component, void* window); + /** Called when the surface is destroyed. */ + void (*OnSurfaceDestroyed)(OH_NativeXComponent* component, void* window); + /** Called when a touch event is triggered. */ + void (*DispatchTouchEvent)(OH_NativeXComponent* component, void* window); +} OH_NativeXComponent_Callback; + +/** + * @brief Registers the mouse event callbacks. + * + * @since 9 + * @version 1.0 + */ +typedef struct OH_NativeXComponent_MouseEvent_Callback { + /** Called when a mouse event is triggered. */ + void (*DispatchMouseEvent)(OH_NativeXComponent* component, void* window); + /** Called when a hover event is triggered. */ + void (*DispatchHoverEvent)(OH_NativeXComponent* component, bool isHover); +} OH_NativeXComponent_MouseEvent_Callback; + +/** + * @brief Obtains the ID of the ArkUI XComponent. + * + * @param component Indicates the pointer to this OH_NativeXComponent instance. + * @param id Indicates the char buffer to keep the ID of this OH_NativeXComponent instance.\n + * Notice that a null-terminator will be appended to the char buffer, so the size of the\n + * char buffer should be at least as large as the size of the real id length plus 1.\n + * It is recommended that the size of the char buffer be [OH_XCOMPONENT_ID_LEN_MAX + 1]. + * @param size Indicates the pointer to the length of id, which you can set and receive. + * @return Returns the status code of the execution. + * @since 8 + * @version 1.0 + */ +int32_t OH_NativeXComponent_GetXComponentId(OH_NativeXComponent* component, char* id, uint64_t* size); + +/** + * @brief Obtains the size of the surface held by the ArkUI XComponent. + * + * @param component Indicates the pointer to this OH_NativeXComponent instance. + * @param window Indicates the native window handler. + * @param width Indicates the pointer to the width of the current surface. + * @param height Indicates the pointer to the height of the current surface. + * @return Returns the status code of the execution. + * @since 8 + * @version 1.0 + */ +int32_t OH_NativeXComponent_GetXComponentSize( + OH_NativeXComponent* component, const void* window, uint64_t* width, uint64_t* height); + +/** + * @brief Obtains the offset of the surface held by the ArkUI XComponent. + * + * @param component Indicates the pointer to this OH_NativeXComponent instance. + * @param window Indicates the native window handler. + * @param x Indicates the pointer to the x coordinate of the current surface. + * @param y Indicates the pointer to the y coordinate of the current surface. + * @return Returns the status code of the execution. + * @since 8 + * @version 1.0 + */ +int32_t OH_NativeXComponent_GetXComponentOffset( + OH_NativeXComponent* component, const void* window, double* x, double* y); + +/** + * @brief Obtains the touch event dispatched by the ArkUI XComponent. + * + * @param component Indicates the pointer to this OH_NativeXComponent instance. + * @param window Indicates the native window handler. + * @param touchEvent Indicates the pointer to the current touch event. + * @return Returns the status code of the execution. + * @since 8 + * @version 1.0 + */ +int32_t OH_NativeXComponent_GetTouchEvent( + OH_NativeXComponent* component, const void* window, OH_NativeXComponent_TouchEvent* touchEvent); + +/** + * @brief Obtains the touch pointer tool type by the ArkUI XComponent. + * + * @param component Indicates the pointer to this OH_NativeXComponent instance. + * @param pointIndex Indicates the pointer index in the touchPoints. + * @param toolType Indicates the tool Type of the pointer. + * @return Returns the status code of the execution. + * @since 9 + * @version 1.0 + */ +int32_t OH_NativeXComponent_GetTouchPointToolType(OH_NativeXComponent* component, uint32_t pointIndex, + OH_NativeXComponent_TouchPointToolType* toolType); + +/** + * @brief Obtains the touch pointer tiltX by the ArkUI XComponent. + * + * @param component Indicates the pointer to this OH_NativeXComponent instance. + * @param pointIndex Indicates the pointer index in the touchPoints. + * @param tiltX Indicates the x tilt of the pointer. + * @return Returns the status code of the execution. + * @since 9 + * @version 1.0 + */ +int32_t OH_NativeXComponent_GetTouchPointTiltX(OH_NativeXComponent* component, uint32_t pointIndex, float* tiltX); + +/** + * @brief Obtains the touch pointer tiltX by the ArkUI XComponent. + * + * @param component Indicates the pointer to this OH_NativeXComponent instance. + * @param pointIndex Indicates the pointer index in the touchPoints. + * @param tiltY Indicates the y tilt of the pointer. + * @return Returns the status code of the execution. + * @since 9 + * @version 1.0 + */ +int32_t OH_NativeXComponent_GetTouchPointTiltY(OH_NativeXComponent* component, uint32_t pointIndex, float* tiltY); + +/** + * @brief Obtains the mouse event dispatched by the ArkUI XComponent. + * + * @param component Indicates the pointer to this OH_NativeXComponent instance. + * @param window Indicates the native window handler. + * @param mouseEvent Indicates the pointer to the current mouse event. + * @return Returns the status code of the execution. + * @since 9 + * @version 1.0 + */ +int32_t OH_NativeXComponent_GetMouseEvent( + OH_NativeXComponent* component, const void* window, OH_NativeXComponent_MouseEvent* mouseEvent); + +/** + * @brief Registers a callback for this OH_NativeXComponent instance. + * + * @param component Indicates the pointer to this OH_NativeXComponent instance. + * @param callback Indicates the pointer to a surface lifecycle and touch event callback. + * @return Returns the status code of the execution. + * @since 8 + * @version 1.0 + */ +int32_t OH_NativeXComponent_RegisterCallback(OH_NativeXComponent* component, OH_NativeXComponent_Callback* callback); + +/** + * @brief Registers a callback for this OH_NativeXComponent instance. + * + * @param component Indicates the pointer to this OH_NativeXComponent instance. + * @param callback Indicates the pointer to a mouse event callback. + * @return Returns the status code of the execution. + * @since 9 + * @version 1.0 + */ +int32_t OH_NativeXComponent_RegisterMouseEventCallback( + OH_NativeXComponent* component, OH_NativeXComponent_MouseEvent_Callback* callback); + +#ifdef __cplusplus +}; +#endif +#endif // _NATIVE_INTERFACE_XCOMPONENT_H_ diff --git a/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/cpp/module.cpp b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/cpp/module.cpp new file mode 100644 index 0000000000000000000000000000000000000000..7d1786abba322ac9ac1643d1d625935d512799e8 --- /dev/null +++ b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/cpp/module.cpp @@ -0,0 +1,70 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "log.h" +#include "napi_manager.h" +#include "app_napi.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * function for module exports + */ +EXTERN_C_START +static napi_value Init(napi_env env, napi_value exports) +{ + LOGE("Init"); + napi_property_descriptor desc[] = { + DECLARE_NAPI_FUNCTION("getContext", NapiManager::GetContext), + DECLARE_NAPI_FUNCTION("updateAngle", AppNapi::UpdateAngle), + }; + + NAPI_CALL(env, napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc)); + + bool ret = NapiManager::GetInstance()->Export(env, exports); + if (!ret) { + LOGE("Init failed"); + } + + return exports; +} +EXTERN_C_END + +/* + * Napi Module define + */ +static napi_module appNapiModule = { + .nm_version = 1, + .nm_flags = 0, + .nm_filename = nullptr, + .nm_register_func = Init, + .nm_modname = "tetrahedron_napi", + .nm_priv = ((void*)0), + .reserved = { 0 }, +}; + +/* + * Module register function + */ +extern "C" __attribute__((constructor)) void RegisterModule(void) +{ + napi_module_register(&appNapiModule); +} + +#ifdef __cplusplus +} +#endif \ No newline at end of file diff --git a/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/cpp/napi_manager.cpp b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/cpp/napi_manager.cpp new file mode 100644 index 0000000000000000000000000000000000000000..7b7d6eb7e7a4519386ee08166c331e59f916aff6 --- /dev/null +++ b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/cpp/napi_manager.cpp @@ -0,0 +1,235 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include +#include + +#include "log.h" +#include "napi_manager.h" + +enum class ContextType { + APP_LIFECYCLE = 0, + JS_PAGE_LIFECYCLE, +}; + +NapiManager NapiManager::manager_; + +napi_value NapiManager::GetContext(napi_env env, napi_callback_info info) +{ + napi_status status; + napi_value exports; + size_t argc = 1; + napi_value args[1]; + NAPI_CALL(env, napi_get_cb_info(env, info, &argc, args, nullptr, nullptr)); + + if (argc != 1) { + napi_throw_type_error(env, NULL, "Wrong number of arguments"); + return nullptr; + } + + napi_valuetype valuetype; + status = napi_typeof(env, args[0], &valuetype); + if (status != napi_ok) { + return nullptr; + } + if (valuetype != napi_number) { + napi_throw_type_error(env, NULL, "Wrong arguments"); + return nullptr; + } + + int64_t value; + NAPI_CALL(env, napi_get_value_int64(env, args[0], &value)); + NAPI_CALL(env, napi_create_object(env, &exports)); + + switch (value) { + case int64_t(ContextType::APP_LIFECYCLE): + { + /* AppInit对应EntryAbility.ts中的应用生命周期: onCreate, onShow, onHide, onDestroy */ + LOGD("GetContext APP_LIFECYCLE"); + + /* Register App Lifecycle */ + napi_property_descriptor desc[] = { + DECLARE_NAPI_FUNCTION("onCreate", NapiManager::NapiOnCreate), + DECLARE_NAPI_FUNCTION("onShow", NapiManager::NapiOnShow), + DECLARE_NAPI_FUNCTION("onHide", NapiManager::NapiOnHide), + DECLARE_NAPI_FUNCTION("onDestroy", NapiManager::NapiOnDestroy), + }; + NAPI_CALL(env, napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc)); + } + + break; + case int64_t(ContextType::JS_PAGE_LIFECYCLE): + { + /* JS Page */ + LOGD("GetContext JS_PAGE_LIFECYCLE"); + napi_property_descriptor desc[] = { + DECLARE_NAPI_FUNCTION("onPageShow", NapiManager::NapiOnPageShow), + DECLARE_NAPI_FUNCTION("onPageHide", NapiManager::NapiOnPageHide), + }; + NAPI_CALL(env, napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc)); + } + break; + default: + LOGE("unknown type"); + } + return exports; +} + +bool NapiManager::Export(napi_env env, napi_value exports) +{ + napi_status status; + napi_value exportInstance = nullptr; + OH_NativeXComponent *nativeXComponent = nullptr; + int32_t ret; + char idStr[OH_XCOMPONENT_ID_LEN_MAX + 1] = { }; + uint64_t idSize = OH_XCOMPONENT_ID_LEN_MAX + 1; + + status = napi_get_named_property(env, exports, OH_NATIVE_XCOMPONENT_OBJ, &exportInstance); + if (status != napi_ok) { + return false; + } + + status = napi_unwrap(env, exportInstance, reinterpret_cast(&nativeXComponent)); + if (status != napi_ok) { + return false; + } + + ret = OH_NativeXComponent_GetXComponentId(nativeXComponent, idStr, &idSize); + if (ret != OH_NATIVEXCOMPONENT_RESULT_SUCCESS) { + return false; + } + + std::string id(idStr); + auto context = NapiManager::GetInstance(); + if (context) { + context->SetNativeXComponent(id, nativeXComponent); + auto app = context->GetApp(id); + app->SetNativeXComponent(nativeXComponent); + app->Export(env, exports); + return true; + } + + return false; +} + +void NapiManager::SetNativeXComponent(std::string& id, OH_NativeXComponent* nativeXComponent) +{ + if (nativeXComponentMap_.find(id) == nativeXComponentMap_.end()) { + nativeXComponentMap_[id] = nativeXComponent; + } else { + if (nativeXComponentMap_[id] != nativeXComponent) { + nativeXComponentMap_[id] = nativeXComponent; + } + } +} + +OH_NativeXComponent* NapiManager::GetNativeXComponent(std::string& id) +{ + if (nativeXComponentMap_.find(id) == nativeXComponentMap_.end()) { + return nullptr; + } else { + return nativeXComponentMap_[id]; + } +} + +AppNapi* NapiManager::GetApp(std::string& id) +{ + if (appNapiMap_.find(id) == appNapiMap_.end()) { + AppNapi* instance = AppNapi::GetInstance(id); + appNapiMap_[id] = instance; + return instance; + } else { + return appNapiMap_[id]; + } +} + +void NapiManager::MainOnMessage(const uv_async_t* req) +{ + LOGD("MainOnMessage Triggered"); +} + +napi_value NapiManager::NapiOnCreate(napi_env env, napi_callback_info info) +{ + LOGD("NapiManager::NapiOnCreate"); + uv_loop_t* loop = nullptr; + NAPI_CALL(env, napi_get_uv_event_loop(env, &loop)); + NapiManager::GetInstance()->OnCreateNative(env, loop); + return nullptr; +} + +napi_value NapiManager::NapiOnShow(napi_env env, napi_callback_info info) +{ + NapiManager::GetInstance()->OnShowNative(); + return nullptr; +} + +napi_value NapiManager::NapiOnHide(napi_env env, napi_callback_info info) +{ + NapiManager::GetInstance()->OnHideNative(); + return nullptr; +} + +napi_value NapiManager::NapiOnDestroy(napi_env env, napi_callback_info info) +{ + NapiManager::GetInstance()->OnDestroyNative(); + return nullptr; +} + +void NapiManager::OnCreateNative(napi_env env, uv_loop_t* loop) +{ + mainEnv_ = env; + mainLoop_ = loop; + if (mainLoop_) { + uv_async_init(mainLoop_, &mainOnMessageSignal_, reinterpret_cast(NapiManager::MainOnMessage)); + } +} + +void NapiManager::OnShowNative() +{ + LOGD("NapiManager::OnShowNative"); +} + +void NapiManager::OnHideNative() +{ + LOGD("NapiManager::OnHideNative"); +} + +void NapiManager::OnDestroyNative() +{ + LOGD("NapiManager::OnDestroyNative"); +} + +napi_value NapiManager::NapiOnPageShow(napi_env env, napi_callback_info info) +{ + LOGD("NapiManager::NapiOnPageShow"); + return nullptr; +} + +napi_value NapiManager::NapiOnPageHide(napi_env env, napi_callback_info info) +{ + LOGD("NapiManager::NapiOnPageHide"); + return nullptr; +} + +void NapiManager::OnPageShowNative() +{ + LOGD("NapiManager::OnPageShowNative"); +} + +void NapiManager::OnPageHideNative() +{ + LOGD("NapiManager::OnPageHideNative"); +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/cpp/napi_util.cpp b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/cpp/napi_util.cpp new file mode 100644 index 0000000000000000000000000000000000000000..39723735e36315ec9a258dfba90f7d741f7d9102 --- /dev/null +++ b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/cpp/napi_util.cpp @@ -0,0 +1,60 @@ +/* + * Copyright (C) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include +#include +#include +#include "log.h" +#include "napi_util.h" + +const int32_t MAX_STR_LENGTH = 2048; + +napi_value NapiUtil::SetNapiCallInt32(const napi_env &env, const int32_t intValue) +{ + napi_value result; + napi_create_int32(env, intValue, &result); + return result; +} + +napi_value NapiUtil::SetNapiCallBool(napi_env env, bool value) +{ + napi_value temp; + napi_value result; + napi_create_int32(env, value == true ? 1 : 0, &temp); + napi_coerce_to_bool(env, temp, &result); + return result; +} + +int NapiUtil::StringToInt(std::string value) +{ + return atoi(value.c_str()); +} + +int NapiUtil::StringToLong(std::string value) +{ + return atol(value.c_str()); +} + +float NapiUtil::StringToFloat(std::string value) +{ + return std::stof(value); +} + +bool NapiUtil::StringToBool(const std::string value) +{ + return value == "true" ? true : false; +} + diff --git a/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/cpp/tetrahedron.cpp b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/cpp/tetrahedron.cpp new file mode 100644 index 0000000000000000000000000000000000000000..c1e077cb3c70f8dd6a6742632f9d97f46410f3ef --- /dev/null +++ b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/cpp/tetrahedron.cpp @@ -0,0 +1,349 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include +#include +#include "log.h" +#include "tetrahedron.h" + +static char g_vertexShader[] = + "attribute vec4 a_pos;\n" + "attribute vec4 a_color;\n" + "attribute vec4 a_normal;\n" + "uniform vec3 u_lightColor;\n" + "uniform vec3 u_lightDirection;\n" + "uniform mat4 a_mx;\n" + "uniform mat4 a_my;\n" + "varying vec4 v_color;\n" + "void main() {\n" + " float radian = radians(30.0);\n" + " float cos = cos(radian);\n" + " float sin = sin(radian);\n" + " gl_Position = a_mx * a_my * vec4(a_pos.x, a_pos.y, a_pos.z, 1.0);\n" + " vec3 normal = normalize((a_mx * a_my * a_normal).xyz);\n" + " float dot = max(dot(u_lightDirection, normal), 0.0);\n" + " vec3 reflectedLight = u_lightColor * a_color.rgb * dot;\n" + " v_color = vec4(reflectedLight, a_color.a);\n" + "}\n\0"; + +static char g_fragmentShader[] = + "precision mediump float;\n" + "varying vec4 v_color;\n" + "void main() {\n" + " gl_FragColor = v_color;\n" + "}\n\0"; + +/* 创建顶点位置数据数组vertexData */ +static float g_vertexData[] = { + -0.75, -0.50, -0.43, 0.75, -0.50, -0.43, 0.00, -0.50, 0.87, 0.75, -0.50, -0.43, + 0.00, -0.50, 0.87, 0.00, 1.00, 0.00, 0.00, -0.50, 0.87, 0.00, 1.00, 0.00, + -0.75, -0.50, -0.43, 0.00, 1.00, 0.00, -0.75, -0.50, -0.43, 0.75, -0.50, -0.43, +}; + +/* 创建顶点颜色数组colorData */ +static float g_colorData[] = { + 1, 0, 0, 1, 0, 0, 1, 0, 0, /* 红色——面1 */ + 1, 0, 0, 1, 0, 0, 1, 0, 0, /* 红色——面2 */ + 1, 0, 0, 1, 0, 0, 1, 0, 0, /* 红色——面3 */ + 1, 0, 0, 1, 0, 0, 1, 0, 0 /* 红色——面4 */ +}; + +/* 顶点法向量数组normalData */ +static float g_normalData[] = { + 0.00, -1.00, 0.00, 0.00, -1.00, 0.00, 0.00, -1.00, 0.00, -0.83, -0.28, -0.48, + -0.83, -0.28, -0.48, -0.83, -0.28, -0.48, -0.83, 0.28, 0.48, -0.83, 0.28, 0.48, + -0.83, 0.28, 0.48, 0.00, -0.28, 0.96, 0.00, -0.28, 0.96, 0.00, -0.28, 0.96, +}; + +namespace { + EGLConfig getConfig(int version, EGLDisplay eglDisplay) + { + int attribList[] = { + EGL_SURFACE_TYPE, + EGL_WINDOW_BIT, + EGL_RED_SIZE, 8, + EGL_GREEN_SIZE, 8, + EGL_BLUE_SIZE, 8, + EGL_ALPHA_SIZE, 8, + EGL_RENDERABLE_TYPE, + EGL_OPENGL_ES2_BIT, + EGL_NONE + }; + EGLConfig configs = NULL; + int configsNum; + + if (!eglChooseConfig(eglDisplay, attribList, &configs, 1, &configsNum)) { + LOGE("eglChooseConfig ERROR"); + return NULL; + } + + return configs; + } + + void enableVertexAttrib(GLuint index, float *data, int32_t len) + { + GLuint buffer; + glGenBuffers(1, &buffer); + glBindBuffer(GL_ARRAY_BUFFER, buffer); + glBufferData(GL_ARRAY_BUFFER, len, data, GL_STATIC_DRAW); + glVertexAttribPointer(index, TRIANGLES_POINT, GL_FLOAT, GL_FALSE, 0, 0); + glEnableVertexAttribArray(index); + return; + } +} + +GLuint Tetrahedron::LoadShader(GLenum type, const char *shaderSrc) +{ + GLuint shader; + GLint compiled; + + shader = glCreateShader(type); + if (shader == 0) { + LOGE("LoadShader shader error"); + return 0; + } + + glShaderSource(shader, 1, &shaderSrc, nullptr); + glCompileShader(shader); + + glGetShaderiv(shader, GL_COMPILE_STATUS, &compiled); + + if (!compiled) { + GLint infoLen = 0; + glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &infoLen); + + if (infoLen > 1) { + std::string infoLog(infoLen, '\0'); + glGetShaderInfoLog(shader, infoLen, nullptr, (GLchar *)&infoLog); + LOGE("Error compiling shader:%{public}s\n", infoLog.c_str()); + } + + glDeleteShader(shader); + return 0; + } + + return shader; +} + +GLuint Tetrahedron::CreateProgram(const char *vertexShader, const char *fragShader) +{ + GLuint vertex; + GLuint fragment; + GLuint program; + GLint linked; + + vertex = LoadShader(GL_VERTEX_SHADER, vertexShader); + if (vertex == 0) { + LOGE("LoadShader: vertexShader error"); + return 0; + } + + fragment = LoadShader(GL_FRAGMENT_SHADER, fragShader); + if (fragment == 0) { + LOGE("LoadShader: fragShader error"); + glDeleteShader(vertex); + return 0; + } + + program = glCreateProgram(); + if (program == 0) { + LOGE("CreateProgram program error"); + glDeleteShader(vertex); + glDeleteShader(fragment); + return 0; + } + + glAttachShader(program, vertex); + glAttachShader(program, fragment); + glLinkProgram(program); + glGetProgramiv(program, GL_LINK_STATUS, &linked); + + if (!linked) { + LOGE("CreateProgram linked error"); + GLint infoLen = 0; + glGetProgramiv(program, GL_INFO_LOG_LENGTH, &infoLen); + if (infoLen > 1) { + std::string infoLog(infoLen, '\0'); + glGetProgramInfoLog(program, infoLen, nullptr, (GLchar *)&infoLog); + LOGE("Error linking program:%{public}s\n", infoLog.c_str()); + } + glDeleteShader(vertex); + glDeleteShader(fragment); + glDeleteProgram(program); + return 0; + } + glDeleteShader(vertex); + glDeleteShader(fragment); + + return program; +} + +int32_t Tetrahedron::Init(void *window, int32_t width, int32_t height) +{ + LOGI("Init window = %{public}p, w = %{public}d, h = %{public}d.", window, width, height); + mEglWindow = reinterpret_cast(window); + + mEGLDisplay = eglGetDisplay(EGL_DEFAULT_DISPLAY); + if (mEGLDisplay == EGL_NO_DISPLAY) { + LOGE("unable to get EGL display."); + return -1; + } + + EGLint eglMajVers, eglMinVers; + if (!eglInitialize(mEGLDisplay, &eglMajVers, &eglMinVers)) { + mEGLDisplay = EGL_NO_DISPLAY; + LOGE("unable to initialize display"); + return -1; + } + + int version = 3; + mEGLConfig = getConfig(version, mEGLDisplay); + if (mEGLConfig == nullptr) { + LOGE("GLContextInit config ERROR"); + return -1; + } + + EGLint winAttribs[] = {EGL_GL_COLORSPACE_KHR, EGL_GL_COLORSPACE_SRGB_KHR, EGL_NONE}; + if (mEglWindow) { + mEGLSurface = eglCreateWindowSurface(mEGLDisplay, mEGLConfig, mEglWindow, winAttribs); + if (mEGLSurface == nullptr) { + LOGE("eglCreateContext eglSurface is null"); + return -1; + } + } + + /* Create EGLContext from */ + int attrib3_list[] = { + EGL_CONTEXT_CLIENT_VERSION, 2, + EGL_NONE + }; + + mEGLContext = eglCreateContext(mEGLDisplay, mEGLConfig, mSharedEGLContext, attrib3_list); + if (!eglMakeCurrent(mEGLDisplay, mEGLSurface, mEGLSurface, mEGLContext)) { + LOGE("eglMakeCurrent error = %{public}d", eglGetError()); + } + + mProgramHandle = CreateProgram(g_vertexShader, g_fragmentShader); + if (!mProgramHandle) { + LOGE("Could not create CreateProgram"); + return -1; + } + + LOGI("Init success."); + + return 0; +} + +void Tetrahedron::Update(float angleXOffset, float angleYOffset) +{ + const float pi = 3.141592; + + glClearColor(1.0f, 1.0f, 1.0f, 1.0f); + glClear(GL_COLOR_BUFFER_BIT); + glUseProgram(mProgramHandle); + + GLint aPos = glGetAttribLocation(mProgramHandle, "a_pos"); + GLint aColor = glGetAttribLocation(mProgramHandle, "a_color"); + GLint aNormal = glGetAttribLocation(mProgramHandle, "a_normal"); + GLint uLightColor = glGetUniformLocation(mProgramHandle, "u_lightColor"); + GLint uLightDirection = glGetUniformLocation(mProgramHandle, "u_lightDirection"); + GLint aMx = glGetUniformLocation(mProgramHandle, "a_mx"); + GLint aMy = glGetUniformLocation(mProgramHandle, "a_my"); + + angleX = angleXOffset; + angleY = angleYOffset; + + /* y轴旋转度 */ + float radianY = (angleY * pi) / 180.0; + float cosY = cosf(radianY); + float sinY = sinf(radianY); + float myArr[] = { + cosY, 0, -sinY, 0, + 0, 1, 0, 0, + sinY, 0, cosY, 0, + 0, 0, 0, 1 + }; + + glUniformMatrix4fv(aMy, 1, false, myArr); + + /* x轴旋转度 */ + float radianX = (angleX * pi) / 180.0; + float cosX = cosf(radianX); + float sinX = sinf(radianX); + float mxArr[] = { + 1, 0, 0, 0, 0, cosX, -sinX, 0, 0, sinX, cosX, 0, 0, 0, 0, 1 + }; + + glUniformMatrix4fv(aMx, 1, false, mxArr); + + /* 给平行光传入颜色和方向数据,RGB(1,1,1),单位向量(x,y,z) */ + glUniform3f(uLightColor, 1.0, 1.0, 1.0); + + /* 保证向量(x,y,z)的长度为1,即单位向量 */ + float x = 2.0 / sqrt(15); + float y = 2.0 / sqrt(15); + float z = 3.0 / sqrt(15); + + glUniform3f(uLightDirection, x, -y, z); + + /* 创建缓冲区buffer,传入顶点位置数据g_vertexData */ + enableVertexAttrib(aPos, g_vertexData, sizeof(g_vertexData)); + enableVertexAttrib(aNormal, g_normalData, sizeof(g_normalData)); + /* 创建缓冲区colorBuffer,传入顶点颜色数据g_colorData */ + enableVertexAttrib(aColor, g_colorData, sizeof(g_colorData)); + + /* 执行绘制之前,一定要开启深度测试,以免颜色混乱 */ + glEnable(GL_DEPTH_TEST); + + /* 执行绘制并更新 */ + glDrawArrays(GL_TRIANGLES, 0, TETRAHEDRON_POINT); + eglSwapBuffers(mEGLDisplay, mEGLSurface); +} + +float Tetrahedron::GetAngleX() +{ + return angleX; +} + +float Tetrahedron::GetAngleY() +{ + return angleY; +} + +int32_t Tetrahedron::Quit(void) +{ + EGLBoolean ret = eglDestroySurface(mEGLDisplay, mEGLSurface); + if (!ret) { + LOGW("eglDestroySurface failure."); + } + + ret = eglDestroyContext(mEGLDisplay, mEGLContext); + if (!ret) { + LOGW("eglDestroyContext failure."); + } + + ret = eglTerminate(mEGLDisplay); + if (!ret) { + LOGW("eglTerminate failure."); + } + + mEGLSurface = NULL; + mEGLContext = NULL; + mEGLDisplay = NULL; + + LOGE("Quit success."); + return 0; +} diff --git a/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/cpp/type/libentry/oh-package.json5 b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/cpp/type/libentry/oh-package.json5 new file mode 100644 index 0000000000000000000000000000000000000000..02724aa41e71153520a5830c05dc8392d9cd6cf1 --- /dev/null +++ b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/cpp/type/libentry/oh-package.json5 @@ -0,0 +1,6 @@ +{ + "name": "libtetrahedron_napi.so", + "types": "./tetrahedron_napi.d.ts", + "version": "", + "description": "Please describe the basic information." +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/cpp/type/libentry/tetrahedron_napi.d.ts b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/cpp/type/libentry/tetrahedron_napi.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..ef5a16f34f3f90330857d9acc3326605bf23db95 --- /dev/null +++ b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/cpp/type/libentry/tetrahedron_napi.d.ts @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +//传入x,y偏移量并返回x,y旋转角 +export const updateAngle: (offsetX: number, offsetY: number) => Array; \ No newline at end of file diff --git a/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/ets/entryability/EntryAbility.ets b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/ets/entryability/EntryAbility.ets new file mode 100644 index 0000000000000000000000000000000000000000..f0d0c974952595002f427e15d2d1af34dbe884a9 --- /dev/null +++ b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/ets/entryability/EntryAbility.ets @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import UIAbility from '@ohos.app.ability.UIAbility'; +import { Logger } from '../utils/Logger'; +import window from '@ohos.window'; +import Want from '@ohos.app.ability.Want'; +import AbilityConstant from '@ohos.app.ability.AbilityConstant'; + +export default class EntryAbility extends UIAbility { + onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) { + Logger.info('Ability onCreate'); + } + + onDestroy() { + Logger.info('Ability onDestroy'); + } + + onWindowStageCreate(windowStage: window.WindowStage) { + // Main window is created, set main page for this ability + Logger.info('Ability onWindowStageCreate'); + + windowStage.loadContent('pages/Index', (err, data) => { + if (err.code) { + Logger.error('Failed to load the content. Cause: ' + JSON.stringify(err)); + return; + } + Logger.info('Succeeded in loading the content. Data: ' + JSON.stringify(data)); + }); + } + + onWindowStageDestroy() { + // Main window is destroyed, release UI related resources + Logger.info('Ability onWindowStageDestroy'); + } + + onForeground() { + // Ability has brought to foreground + Logger.info('Ability onForeground'); + } + + onBackground() { + // Ability has back to background + Logger.info('%{public}s', 'Ability onBackground'); + } +}; \ No newline at end of file diff --git a/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/ets/pages/Index.ets b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/ets/pages/Index.ets new file mode 100644 index 0000000000000000000000000000000000000000..f7a2973d888c887269c53091389472504431c93a --- /dev/null +++ b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/ets/pages/Index.ets @@ -0,0 +1,97 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { Logger } from '../utils/Logger'; +import tetrahedron_napi from 'libtetrahedron_napi.so'; +import resmgr from '@ohos.resourceManager'; + +@Entry +@Component +struct Index { + @State angleArray: Array = new Array(); + @State shaftRotation: string = ''; + private xcomponentId = 'tetrahedron'; + private panOption: PanGestureOptions = new PanGestureOptions({ direction: PanDirection.All }); + + async aboutToAppear() { + Logger.info('aboutToAppear'); + this.angleArray[0] = 30; + this.angleArray[1] = 45; + let resourceManager: resmgr.ResourceManager = getContext(this).resourceManager; + this.shaftRotation = await resourceManager.getStringValue($r('app.string.shaftRotation').id); + } + + build() { + Column() { + Text($r('app.string.EntryAbility_desc')) + .fontSize($r('app.float.head_font_24')) + .lineHeight($r('app.float.wh_value_33')) + .fontFamily('HarmonyHeiTi-Bold') + .fontWeight(FontWeight.Bold) + .fontColor($r('app.color.font_color_182431')) + .textOverflow({ overflow: TextOverflow.Ellipsis }) + .textAlign(TextAlign.Start) + .margin({ top: $r('app.float.wh_value_13'), bottom: $r('app.float.wh_value_15') }) + + Text('X ' + this.shaftRotation + ':' + this.angleArray[0].toString() + + '°\nY ' + this.shaftRotation + ':' + this.angleArray[1].toString() + '°') + .fontSize($r('app.float.head_font_24')) + .lineHeight($r('app.float.wh_value_33')) + .fontFamily('HarmonyHeiTi-Bold') + .fontWeight(FontWeight.Bold) + .fontColor($r('app.color.font_color_182431')) + .textOverflow({ overflow: TextOverflow.Ellipsis }) + .textAlign(TextAlign.Start) + .margin({ top: $r('app.float.wh_value_13'), bottom: $r('app.float.wh_value_15') }) + + Column() { + XComponent({ id: this.xcomponentId, type: 'surface', libraryname: 'tetrahedron_napi' }) + .onLoad(() => { + Logger.info('onLoad'); + }) + .width($r('app.float.wh_value_360')) + .height($r('app.float.wh_value_360')) + .key('tetrahedron') + .onDestroy(() => { + Logger.info('onDestroy'); + }) + .id('xComponent') + .backgroundColor(Color.White) + } + .justifyContent(FlexAlign.SpaceAround) + .alignItems(HorizontalAlign.Center) + .height('80%') + .width('100%') + .backgroundColor(Color.White) + .borderRadius(24) + } + .gesture( + PanGesture(this.panOption) + .onActionStart((event: GestureEvent) => { + Logger.info('Gesture onActionStart'); + }) + .onActionUpdate((event: GestureEvent) => { + this.angleArray = tetrahedron_napi.updateAngle(event.offsetX, event.offsetY); + Logger.info('Gesture onActionUpdate : offSet ' + event.offsetX + ',' + event.offsetY); + }) + .onActionEnd(() => { + Logger.info('Gesture onActionEnd'); + }) + ) + .padding(12) + .backgroundColor('#f1f3f5') + .height('100%') + } +} diff --git a/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/ets/utils/Logger.ets b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/ets/utils/Logger.ets new file mode 100644 index 0000000000000000000000000000000000000000..623661658880b6761f2fde19416402892a7e946b --- /dev/null +++ b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/ets/utils/Logger.ets @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import hilog from '@ohos.hilog' + +class LoggerModel { + private domain: number + private prefix: string + private format: string = '%{public}s' + + constructor(prefix: string) { + this.prefix = prefix + this.domain = 0xFF00 + } + + debug(...args: string[]) { + hilog.debug(this.domain, this.prefix, this.format, args) + } + + info(...args: string[]) { + hilog.info(this.domain, this.prefix, this.format, args) + } + + warn(...args: string[]) { + hilog.warn(this.domain, this.prefix, this.format, args) + } + + error(...args: string[]) { + hilog.error(this.domain, this.prefix, this.format, args) + } +} + +export let Logger = new LoggerModel('[Sample_OpenGL]') \ No newline at end of file diff --git a/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/module.json5 b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/module.json5 new file mode 100644 index 0000000000000000000000000000000000000000..9e973ce568047421c487dd12cefa24bad70c4023 --- /dev/null +++ b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/module.json5 @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "module": { + "name": "entry", + "type": "entry", + "description": "$string:module_desc", + "mainElement": "EntryAbility", + "deviceTypes": [ + "default" + ], + "deliveryWithInstall": true, + "installationFree": false, + "pages": "$profile:main_pages", + "abilities": [ + { + "name": "EntryAbility", + "srcEntry": "./ets/entryability/EntryAbility.ets", + "description": "$string:EntryAbility_desc", + "icon": "$media:icon", + "label": "$string:EntryAbility_label", + "startWindowIcon": "$media:icon", + "startWindowBackground": "$color:start_window_background", + "exported": true, + "skills": [ + { + "entities": [ + "entity.system.home" + ], + "actions": [ + "action.system.home" + ] + } + ] + } + ] + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/resources/base/element/color.json b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/resources/base/element/color.json new file mode 100644 index 0000000000000000000000000000000000000000..9974d136eea4cf62e78ccc91e6b249341b69b437 --- /dev/null +++ b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/resources/base/element/color.json @@ -0,0 +1,92 @@ +{ + "color": [ + { + "name": "start_window_background", + "value": "#FFFFFF" + }, + { + "name": "color_333333_grey", + "value": "#333333" + }, + { + "name": "color_666666_grey", + "value": "#666666" + }, + { + "name": "color_999999_grey", + "value": "#999999" + }, + { + "name": "color_E3E3E3_grey", + "value": "#E3E3E3" + }, + { + "name": "color_D8D8D8_grey", + "value": "#D8D8D8" + }, + { + "name": "color_button_grey", + "value": "#1824310D" + }, + { + "name": "color_00000000_transparent", + "value": "#00000000" + }, + { + "name": "volume_bg_color", + "value": "#CCFFFFFF" + }, + { + "name": "white_bg_color", + "value": "#FFFFFF" + }, + { + "name": "font_color_182431", + "value": "#182431" + }, + { + "name": "font_color_007DFF", + "value": "#007DFF" + }, + { + "name": "toggle_selected_color_007DFF", + "value": "#007DFF" + }, + { + "name": "search_no_result_text_color", + "value": "$color:font_color_182431" + }, + { + "name": "search_result_text_color", + "value": "$color:font_color_182431" + }, + { + "name": "search_result_text_color_highlight", + "value": "$color:font_color_007DFF" + }, + { + "name": "bluetooth_text_color_highlight", + "value": "$color:font_color_007DFF" + }, + { + "name": "FAFAFA", + "value": "#FAFAFA" + }, + { + "name": "DCEAF9", + "value": "#DCEAF9" + }, + { + "name": "4C89F0", + "value": "#4C89F0" + }, + { + "name": "D1D0DB", + "value": "#D1D0DB" + }, + { + "name": "white", + "value": "#FFFFFF" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/resources/base/element/float.json b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/resources/base/element/float.json new file mode 100644 index 0000000000000000000000000000000000000000..5d1caf3a50127a5cefaa116c6f48f5673c6b25b8 --- /dev/null +++ b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/resources/base/element/float.json @@ -0,0 +1,1032 @@ +{ + "float": [ + { + "name": "wh_value_0", + "value": "0vp" + }, + { + "name": "wh_value_1", + "value": "1vp" + }, + { + "name": "wh_value_1_5", + "value": "1.5vp" + }, + { + "name": "wh_value_3", + "value": "3vp" + }, + { + "name": "wh_value_4", + "value": "4vp" + }, + { + "name": "wh_value_5", + "value": "5vp" + }, + { + "name": "wh_value_6", + "value": "6vp" + }, + { + "name": "wh_value_8", + "value": "8vp" + }, + { + "name": "wh_value_9", + "value": "9vp" + }, + { + "name": "wh_value_10", + "value": "10vp" + }, + { + "name": "wh_value_11", + "value": "11vp" + }, + { + "name": "wh_value_12", + "value": "12vp" + }, + { + "name": "wh_value_13", + "value": "13vp" + }, + { + "name": "wh_value_15", + "value": "15vp" + }, + { + "name": "wh_value_16", + "value": "16vp" + }, + { + "name": "wh_value_18", + "value": "18vp" + }, + { + "name": "wh_value_19", + "value": "19vp" + }, + { + "name": "wh_value_20", + "value": "20vp" + }, + { + "name": "wh_value_21", + "value": "21vp" + }, + { + "name": "wh_value_22", + "value": "22vp" + }, + { + "name": "wh_value_24", + "value": "24vp" + }, + { + "name": "wh_value_26", + "value": "26vp" + }, + { + "name": "wh_value_28", + "value": "28vp" + }, + { + "name": "wh_value_30", + "value": "30vp" + }, + { + "name": "wh_value_32", + "value": "32vp" + }, + { + "name": "wh_value_33", + "value": "28vp" + }, + { + "name": "wh_value_40", + "value": "40vp" + }, + { + "name": "wh_value_44", + "value": "44vp" + }, + { + "name": "wh_value_48", + "value": "48vp" + }, + { + "name": "wh_value_50", + "value": "50vp" + }, + { + "name": "wh_value_52", + "value": "52vp" + }, + { + "name": "wh_value_56", + "value": "56vp" + }, + { + "name": "wh_value_60", + "value": "60vp" + }, + { + "name": "wh_value_64", + "value": "64vp" + }, + { + "name": "wh_value_65", + "value": "65vp" + }, + { + "name": "wh_value_67", + "value": "67vp" + }, + { + "name": "wh_value_70", + "value": "70vp" + }, + { + "name": "wh_value_80", + "value": "80vp" + }, + { + "name": "wh_value_96", + "value": "96vp" + }, + { + "name": "wh_value_100", + "value": "100vp" + }, + { + "name": "wh_value_109", + "value": "109vp" + }, + { + "name": "wh_value_118", + "value": "118vp" + }, + { + "name": "wh_value_119", + "value": "119vp" + }, + { + "name": "wh_value_120", + "value": "120vp" + }, + { + "name": "wh_value_130", + "value": "1300vp" + }, + { + "name": "wh_value_160", + "value": "160vp" + }, + { + "name": "wh_value_200", + "value": "200vp" + }, + { + "name": "wh_value_210", + "value": "210vp" + }, + { + "name": "wh_value_212", + "value": "212vp" + }, + { + "name": "wh_value_216", + "value": "216vp" + }, + { + "name": "wh_value_230", + "value": "230vp" + }, + { + "name": "wh_value_250", + "value": "250vp" + }, + { + "name": "wh_value_263", + "value": "150vp" + }, + { + "name": "wh_value_280", + "value": "280vp" + }, + { + "name": "wh_value_336", + "value": "336vp" + }, + { + "name": "wh_value_360", + "value": "360vp" + }, + { + "name": "wh_value_390", + "value": "390vp" + }, + { + "name": "wh_value_400", + "value": "400vp" + }, + { + "name": "wh_value_410", + "value": "410vp" + }, + { + "name": "wh_value_620", + "value": "620vp" + }, + { + "name": "wh_value_720", + "value": "720vp" + }, + { + "name": "font_35", + "value": "35fp" + }, + { + "name": "font_10", + "value": "10fp" + }, + { + "name": "font_14", + "value": "14fp" + }, + { + "name": "font_16", + "value": "16fp" + }, + { + "name": "font_18", + "value": "18fp" + }, + { + "name": "font_20", + "value": "20fp" + }, + { + "name": "font_21", + "value": "21fp" + }, + { + "name": "font_22", + "value": "22fp" + }, + { + "name": "font_24", + "value": "20fp" + }, + { + "name": "font_28", + "value": "28fp" + }, + { + "name": "font_30", + "value": "30fp" + }, + { + "name": "font_50", + "value": "50fp" + }, + { + "name": "lineHeight_19", + "value": "19vp" + }, + { + "name": "lineHeight_21", + "value": "21vp" + }, + { + "name": "lineHeight_22", + "value": "22vp" + }, + { + "name": "lineHeight_33", + "value": "33vp" + }, + { + "name": "lineHeight_41", + "value": "41vp" + }, + { + "name": "distance_1", + "value": "1vp" + }, + { + "name": "distance_2", + "value": "2vp" + }, + { + "name": "distance_4", + "value": "4vp" + }, + { + "name": "distance_6", + "value": "6vp" + }, + { + "name": "distance_7", + "value": "7vp" + }, + { + "name": "distance_8", + "value": "8vp" + }, + { + "name": "distance_9", + "value": "9vp" + }, + { + "name": "distance_9_5", + "value": "9.5vp" + }, + { + "name": "distance_10", + "value": "10vp" + }, + { + "name": "distance_11", + "value": "11vp" + }, + { + "name": "distance_11_5", + "value": "11.5vp" + }, + { + "name": "distance_12", + "value": "12vp" + }, + { + "name": "distance_13", + "value": "13vp" + }, + { + "name": "distance_14", + "value": "14vp" + }, + { + "name": "distance_15", + "value": "15vp" + }, + { + "name": "distance_16", + "value": "16vp" + }, + { + "name": "distance_17", + "value": "17vp" + }, + { + "name": "distance_18", + "value": "18vp" + }, + { + "name": "distance_19", + "value": "19vp" + }, + { + "name": "distance_19_5", + "value": "19.5vp" + }, + { + "name": "distance_20", + "value": "20vp" + }, + { + "name": "distance_21", + "value": "21vp" + }, + { + "name": "distance_22_5", + "value": "22.5vp" + }, + { + "name": "distance_24", + "value": "24vp" + }, + { + "name": "distance_26", + "value": "26vp" + }, + { + "name": "distance_30", + "value": "30vp" + }, + { + "name": "distance_32", + "value": "32vp" + }, + { + "name": "distance_36", + "value": "36vp" + }, + { + "name": "distance_64", + "value": "64vp" + }, + { + "name": "distance_66", + "value": "66vp" + }, + { + "name": "distance_80", + "value": "80vp" + }, + { + "name": "distance_96", + "value": "96vp" + }, + { + "name": "sys_corner_radius_clicked", + "value": "8vp" + }, + { + "name": "sys_elements_margin_vertical_l", + "value": "16vp" + }, + { + "name": "sys_elements_margin_vertical_m", + "value": "8vp" + }, + { + "name": "sys_elements_margin_horizontal_l", + "value": "16vp" + }, + { + "name": "sys_elements_margin_horizontal_m", + "value": "16vp" + }, + { + "name": "page_margin_horizontal", + "value": "24vp" + }, + { + "name": "square_click_image_size", + "value": "48vp" + }, + { + "name": "control_common_font_size", + "value": "20fp" + }, + { + "name": "item_common_vertical_margin", + "value": "20vp" + }, + { + "name": "item_common_horizontal_margin", + "value": "24vp" + }, + { + "name": "item_icon_size", + "value": "24vp" + }, + { + "name": "item_arrow_width", + "value": "12vp" + }, + { + "name": "slider_text_padding_left", + "value": "5vp" + }, + { + "name": "page_header_height", + "value": "56vp" + }, + { + "name": "volume_border_radius", + "value": "15vp" + }, + { + "name": "radius_12", + "value": "12vp" + }, + { + "name": "radius_20", + "value": "20vp" + }, + { + "name": "radius_24", + "value": "24vp" + }, + { + "name": "radius_32", + "value": "32vp" + }, + { + "name": "radius_40", + "value": "40vp" + }, + { + "name": "search_placeholder_font", + "value": "22fp" + }, + { + "name": "search_input_height", + "value": "40vp" + }, + { + "name": "search_input_margin_start", + "value": "64vp" + }, + { + "name": "search_input_horizontal_margin", + "value": "8vp" + }, + { + "name": "search_input_border_radius", + "value": "20vp" + }, + { + "name": "search_no_result_image_size", + "value": "160vp" + }, + { + "name": "search_no_result_text_font_size", + "value": "14fp" + }, + { + "name": "search_no_result_margin_top", + "value": "174vp" + }, + { + "name": "search_item_height", + "value": "72vp" + }, + { + "name": "search_result_item_title_font_size", + "value": "16vp" + }, + { + "name": "search_result_item_summary_font_size", + "value": "14fp" + }, + { + "name": "slider_image_width", + "value": "40vp" + }, + { + "name": "slider_image_height", + "value": "40vp" + }, + { + "name": "slider_image_margin", + "value": "15vp" + }, + { + "name": "audio_subtitle_font", + "value": "18fp" + }, + { + "name": "audio_subtitle_margin_left", + "value": "10vp" + }, + { + "name": "audio_subtitle_margin_bottom", + "value": "5vp" + }, + { + "name": "audio_title_summary_margin_left", + "value": "15vp" + }, + { + "name": "audio_summary_subtitle_margin_bottom", + "value": "10vp" + }, + { + "name": "audio_subtitle_margin_top", + "value": "10vp" + }, + { + "name": "audio_sound_mode_outer_height", + "value": "280vp" + }, + { + "name": "audio_sound_mode_inner_padding_top", + "value": "15vp" + }, + { + "name": "audio_sound_mode_inner_padding_bottom", + "value": "15vp" + }, + { + "name": "audio_sound_mode_outer_padding", + "value": "16vp" + }, + { + "name": "audio_sound_mode_item_inner_padding_top", + "value": "5vp" + }, + { + "name": "audio_sound_mode_border_width", + "value": "1vp" + }, + { + "name": "audio_sound_mode_border_radius", + "value": "15vp" + }, + { + "name": "audio_sound_mode_image_size", + "value": "40vp" + }, + { + "name": "audio_sound_mode_text_margin_top", + "value": "16vp" + }, + { + "name": "audio_sound_mode_font_size", + "value": "20fp" + }, + { + "name": "audio_sound_mode_radio_size", + "value": "36vp" + }, + { + "name": "audio_image_common_size", + "value": "50vp" + }, + { + "name": "audio_image_margin_right", + "value": "10vp" + }, + { + "name": "audio_subtitle_font_size", + "value": "18fp" + }, + { + "name": "audio_margin_left", + "value": "15vp" + }, + { + "name": "audio_start_end_margin_left", + "value": "15vp" + }, + { + "name": "audio_icon_height", + "value": "60vp" + }, + { + "name": "audio_no_icon_height", + "value": "70vp" + }, + { + "name": "audio_slider_height", + "value": "250vp" + }, + { + "name": "audio_volume_height", + "value": "280vp" + }, + { + "name": "audio_border_width", + "value": "1vp" + }, + { + "name": "audio_border_radius", + "value": "15vp" + }, + { + "name": "audio_volume_component_padding", + "value": "16vp" + }, + { + "name": "restore_factory_font_size", + "value": "20fp" + }, + { + "name": "restore_factory_button_width", + "value": "186vp" + }, + { + "name": "restore_factory_button_height", + "value": "40vp" + }, + { + "name": "switch_title_subtitle_size", + "value": "20fp" + }, + { + "name": "switch_component_margin", + "value": "12vp" + }, + { + "name": "switch_toggle_width", + "value": "36vp" + }, + { + "name": "switch_toggle_height", + "value": "20vp" + }, + { + "name": "switch_component_height", + "value": "70vp" + }, + { + "name": "application_common_size", + "value": "45vp" + }, + { + "name": "application_button_subtitle_size", + "value": "16fp" + }, + { + "name": "application_button_height", + "value": "40vp" + }, + { + "name": "storage_common_margin", + "value": "15vp" + }, + { + "name": "location_font_size", + "value": "16fp" + }, + { + "name": "location_common_margin", + "value": "15vp" + }, + { + "name": "storage_data_panel_height", + "value": "230vp" + }, + { + "name": "password_list_item_height", + "value": "48vp" + }, + { + "name": "password_list_item_title_font_size", + "value": "16vp" + }, + { + "name": "password_input_message_vertical_margin", + "value": "20vp" + }, + { + "name": "password_count_down_view_vertical_margin", + "value": "20vp" + }, + { + "name": "password_input_button_space", + "value": "10vp" + }, + { + "name": "password_input_button_margin_top", + "value": "40vp" + }, + { + "name": "radio_component_height", + "value": "30vp" + }, + { + "name": "radio_component_margin_bottom_right", + "value": "15vp" + }, + { + "name": "dataPanel_distance", + "value": "320vp" + }, + { + "name": "dataPanel_proportion_font_size", + "value": "66.67fp" + }, + { + "name": "dataPanel_percent_font_size", + "value": "17.78fp" + }, + { + "name": "dataPanel_used_font_size", + "value": "17.78fp" + }, + { + "name": "location_toggle_width", + "value": "36vp" + }, + { + "name": "location_toggle_height", + "value": "20vp" + }, + { + "name": "location_toggle_margin", + "value": "12vp" + }, + { + "name": "wh_value_72", + "value": "72vp" + }, + { + "name": "switch_summary_margin", + "value": "2vp" + }, + { + "name": "single_item_height", + "value": "48vp" + }, + { + "name": "wh_value_240", + "value": "240vp" + }, + { + "name": "wh_value_245", + "value": "245vp" + }, + { + "name": "wh_value_260", + "value": "260vp" + }, + { + "name": "wh_value_288", + "value": "288vp" + }, + { + "name": "wh_value_324", + "value": "324vp" + }, + { + "name": "divider_opacity", + "value": "0.2" + }, + { + "name": "paired_device_button_width", + "value": "186vp" + }, + { + "name": "component_button_width", + "value": "263vp" + }, + { + "name": "component_button_width_phone", + "value": "150vp" + }, + { + "name": "pinCode_font_size", + "value": "32fp" + }, + { + "name": "deviceName_button_width", + "value": "192vp" + }, + { + "name": "applicationInfo_button_width", + "value": "324vp" + }, + { + "name": "passwordSetting_button_width", + "value": "261vp" + }, + { + "name": "dialog_16", + "value": "16vp" + }, + { + "name": "dialog_118", + "value": "118vp" + }, + { + "name": "wh_4", + "value": "8vp" + }, + { + "name": "wh_10", + "value": "16vp" + }, + { + "name": "wh_20", + "value": "8vp" + }, + { + "name": "wh_23", + "value": "16vp" + }, + { + "name": "wh_24", + "value": "12vp" + }, + { + "name": "wh_35", + "value": "16vp" + }, + { + "name": "wh_37", + "value": "37vp" + }, + { + "name": "wh_42", + "value": "22vp" + }, + { + "name": "wh_48", + "value": "48vp" + }, + { + "name": "wh_192", + "value": "192vp" + }, + { + "name": "wh_205", + "value": "292vp" + }, + { + "name": "wh_263", + "value": "186vp" + }, + { + "name": "wh_hed_14", + "value": "14vp" + }, + { + "name": "wh_600", + "value": "600vp" + }, + { + "name": "padding_24", + "value": "24vp" + }, + { + "name": "padding_26", + "value": "14vp" + }, + { + "name": "wh_padding_32", + "value": "25vp" + }, + { + "name": "wh_padding_33", + "value": "20vp" + }, + { + "name": "wh_padding_35", + "value": "35vp" + }, + { + "name": "wh_padding_48", + "value": "24vp" + }, + { + "name": "wh_padding_112", + "value": "112vp" + }, + { + "name": "wh_padding_128", + "value": "128vp" + }, + { + "name": "wh_padding_136", + "value": "136vp" + }, + { + "name": "wh_padding_212", + "value": "272vp" + }, + { + "name": "dataPanel_proportion_font_size_1", + "value": "60fp" + }, + { + "name": "dataPanel_percent_font_size_1", + "value": "16fp" + }, + { + "name": "dataPanel_used_font_size_1", + "value": "14fp" + }, + { + "name": "divider_wh", + "value": "0.5vp" + }, + { + "name": "progress_bottom", + "value": "127vp" + }, + { + "name": "head_font_24", + "value": "20vp" + }, + { + "name": "opacity_100_60", + "value": "0.6" + }, + { + "name": "cancel_animation_button_w_value", + "value": "152vp" + }, + { + "name": "animationScalingInformation_h_value", + "value": "456vp" + }, + { + "name": "search_no_result_padding", + "value": "8vp" + }, + { + "name": "customDialog_dx_offset", + "value": "0" + }, + { + "name": "customDialog_dy_offset", + "value": "-16vp" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/resources/base/element/string.json b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/resources/base/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..01e86bcae30562555210a1f110893a447c29ece2 --- /dev/null +++ b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/resources/base/element/string.json @@ -0,0 +1,16 @@ +{ + "string": [ + { + "name": "module_desc", + "value": "module description" + }, + { + "name": "EntryAbility_desc", + "value": "description" + }, + { + "name": "EntryAbility_label", + "value": "Tetrahedron" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/resources/base/media/icon.png b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/resources/base/media/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..1d71d17ed0ca4ba19f1b1bb281e40d3052a31649 Binary files /dev/null and b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/resources/base/media/icon.png differ diff --git a/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/resources/base/profile/main_pages.json b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/resources/base/profile/main_pages.json new file mode 100644 index 0000000000000000000000000000000000000000..1898d94f58d6128ab712be2c68acc7c98e9ab9ce --- /dev/null +++ b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/resources/base/profile/main_pages.json @@ -0,0 +1,5 @@ +{ + "src": [ + "pages/Index" + ] +} diff --git a/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/resources/en_US/element/string.json b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/resources/en_US/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..e10e772f2a4f05807675791410d87d7c76d414a0 --- /dev/null +++ b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/resources/en_US/element/string.json @@ -0,0 +1,20 @@ +{ + "string": [ + { + "name": "module_desc", + "value": "module description" + }, + { + "name": "EntryAbility_desc", + "value": "OpenGL Tetrahedron" + }, + { + "name": "shaftRotation", + "value": "Shaft Rotation" + }, + { + "name": "EntryAbility_label", + "value": "Tetrahedron" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/resources/zh_CN/element/string.json b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/resources/zh_CN/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..15d2830f69b0ec505855e22a9c62671124488e2c --- /dev/null +++ b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/main/resources/zh_CN/element/string.json @@ -0,0 +1,20 @@ +{ + "string": [ + { + "name": "module_desc", + "value": "模块描述" + }, + { + "name": "EntryAbility_desc", + "value": "OpenGL 三棱锥" + }, + { + "name": "shaftRotation", + "value": "轴旋转" + }, + { + "name": "EntryAbility_label", + "value": "三棱锥" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/ohosTest/ets/TestRunner/OpenHarmonyTestRunner.ts b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/ohosTest/ets/TestRunner/OpenHarmonyTestRunner.ts new file mode 100644 index 0000000000000000000000000000000000000000..6014bdee4a3ce82ce32e9066bd954937972a5158 --- /dev/null +++ b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/ohosTest/ets/TestRunner/OpenHarmonyTestRunner.ts @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import hilog from '@ohos.hilog'; +import TestRunner from '@ohos.application.testRunner'; +import AbilityDelegatorRegistry from '@ohos.app.ability.abilityDelegatorRegistry'; + +var abilityDelegator = undefined +var abilityDelegatorArguments = undefined +const TAG = 'NdkOpenGLTest'; +const DOMAIN = 0xF629; + +async function onAbilityCreateCallback() { + hilog.info(DOMAIN, TAG, '%{public}s', 'onAbilityCreateCallback'); +} + +async function addAbilityMonitorCallback(err: any) { + hilog.info(DOMAIN, TAG, 'addAbilityMonitorCallback : %{public}s', JSON.stringify(err) ?? ''); +} + +export default class OpenHarmonyTestRunner implements TestRunner { + constructor() { + } + + onPrepare() { + hilog.info(DOMAIN, TAG, '%{public}s', 'OpenHarmonyTestRunner OnPrepare '); + } + + async onRun() { + hilog.info(DOMAIN, TAG, '%{public}s', 'OpenHarmonyTestRunner onRun run'); + abilityDelegatorArguments = AbilityDelegatorRegistry.getArguments() + abilityDelegator = AbilityDelegatorRegistry.getAbilityDelegator() + var testAbilityName = abilityDelegatorArguments.bundleName + '.TestAbility' + let lMonitor = { + abilityName: testAbilityName, + onAbilityCreate: onAbilityCreateCallback, + }; + abilityDelegator.addAbilityMonitor(lMonitor, addAbilityMonitorCallback) + var cmd = 'aa start -d 0 -a TestAbility' + ' -b ' + abilityDelegatorArguments.bundleName + var debug = abilityDelegatorArguments.parameters['-D'] + if (debug === 'true') + { + cmd += ' -D' + } + hilog.info(DOMAIN, TAG, 'cmd : %{public}s', cmd); + abilityDelegator.executeShellCommand(cmd, + (err: any, d: any) => { + hilog.info(DOMAIN, TAG, 'executeShellCommand : err : %{public}s', JSON.stringify(err) ?? ''); + hilog.info(DOMAIN, TAG, 'executeShellCommand : data : %{public}s', d.stdResult ?? ''); + hilog.info(DOMAIN, TAG, 'executeShellCommand : data : %{public}s', d.exitCode ?? ''); + }) + hilog.info(DOMAIN, TAG, '%{public}s', 'OpenHarmonyTestRunner onRun end'); + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/ohosTest/ets/test/Ability.test.ets b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/ohosTest/ets/test/Ability.test.ets new file mode 100644 index 0000000000000000000000000000000000000000..25a42c22c14b7b7c959f9749af436ea4f7d2be12 --- /dev/null +++ b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/ohosTest/ets/test/Ability.test.ets @@ -0,0 +1,112 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import AbilityDelegatorRegistry from '@ohos.app.ability.abilityDelegatorRegistry'; +import hilog from '@ohos.hilog'; +import { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from '@ohos/hypium' +import { Driver, ON } from '@ohos.UiTest'; + +const BUNDLE_NAME = 'com.samples.ndkopengl'; +const ABILITY_NAME = 'EntryAbility'; +const TAG = 'NdkOpenGLTest'; +const DOMAIN = 0xF629; + +interface wantType { + bundleName: string; + abilityName: string +} + +export default function abilityTest() { + let driver = Driver.create(); + let delegator = AbilityDelegatorRegistry.getAbilityDelegator(); + describe('ActsAbilityTest', () => { + it(BUNDLE_NAME + ' StartAbility_001', 0, async (done: Function) => { + hilog.info(DOMAIN, TAG, `${BUNDLE_NAME} StartAbility_001 begin`); + let want = { + bundleName: BUNDLE_NAME, + abilityName: ABILITY_NAME + } as wantType; + delegator.startAbility(want, (err) => { + hilog.info(DOMAIN, TAG, `${BUNDLE_NAME} startAbility end err ${JSON.stringify(err)}`); + }) + await driver.delayMs(1000); + hilog.info(DOMAIN, TAG, `${BUNDLE_NAME} StartAbility_001 end`); + done(); + }) + + /** + * 左右滑动 + */ + it(BUNDLE_NAME + ' Swipe_001', 0, async (done: Function) => { + hilog.info(DOMAIN, TAG, '%{public}s', BUNDLE_NAME + ' Swipe_001 begin'); + + try { + await driver.delayMs(1000); + await driver.assertComponentExist(ON.id('xComponent')); + await driver.swipe(100, 400, 130, 400); + await driver.delayMs(1000); + await driver.swipe(200, 400, 170, 400); + await driver.delayMs(1000); + done(); + } catch (err) { + hilog.error(DOMAIN, TAG, '%{public}s', `Swipe_001 err ${err?.code} msg ${err?.message}`); + expect().assertFail(); + } + hilog.info(DOMAIN, TAG, '%{public}s', BUNDLE_NAME + ' Swipe_001 end'); + }); + + /** + * 上下滑动 + */ + it(BUNDLE_NAME + ' Swipe_002', 0, async (done: Function) => { + hilog.info(DOMAIN, TAG, '%{public}s', BUNDLE_NAME + ' Swipe_002 begin'); + + try { + await driver.delayMs(1000); + await driver.assertComponentExist(ON.id('xComponent')); + await driver.swipe(100, 400, 100, 445); + await driver.delayMs(1000); + await driver.swipe(100, 300, 100, 455); + await driver.delayMs(1000); + done(); + } catch (err) { + hilog.error(DOMAIN, TAG, '%{public}s', `Swipe_002 err ${err?.code} msg ${err?.message}`); + expect().assertFail(); + } + hilog.info(DOMAIN, TAG, '%{public}s', BUNDLE_NAME + ' Swipe_002 end'); + }); + + /** + * 对角线滑动 + */ + it(BUNDLE_NAME + ' Swipe_003', 0, async (done: Function) => { + hilog.info(DOMAIN, TAG, '%{public}s', BUNDLE_NAME + ' Swipe_003 begin'); + + try { + await driver.delayMs(1000); + await driver.assertComponentExist(ON.id('xComponent')); + await driver.swipe(100, 400, 120, 445); + await driver.delayMs(1000); + await driver.swipe(145, 400, 100, 355); + await driver.delayMs(1000); + done(); + } catch (err) { + hilog.error(DOMAIN, TAG, '%{public}s', `Swipe_003 err ${err?.code} msg ${err?.message}`); + expect().assertFail(); + } + hilog.info(DOMAIN, TAG, '%{public}s', BUNDLE_NAME + ' Swipe_003 end'); + }); + }) +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/ohosTest/ets/test/List.test.ets b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/ohosTest/ets/test/List.test.ets new file mode 100644 index 0000000000000000000000000000000000000000..27c07a1a174f6862ea84c4bb5f45bc1789234441 --- /dev/null +++ b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/ohosTest/ets/test/List.test.ets @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import abilityTest from './Ability.test' + +export default function testsuite() { + abilityTest() +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/ohosTest/ets/testability/TestAbility.ets b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/ohosTest/ets/testability/TestAbility.ets new file mode 100644 index 0000000000000000000000000000000000000000..dbd2371756b3362e20a71e9468c61736da155eb3 --- /dev/null +++ b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/ohosTest/ets/testability/TestAbility.ets @@ -0,0 +1,68 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import UIAbility from '@ohos.app.ability.UIAbility'; +import AbilityDelegatorRegistry from '@ohos.app.ability.abilityDelegatorRegistry'; +import hilog from '@ohos.hilog'; +import { Hypium } from '@ohos/hypium'; +import testsuite from '../test/List.test'; +import window from '@ohos.window'; +import Want from '@ohos.app.ability.Want'; +import AbilityConstant from '@ohos.app.ability.AbilityConstant'; + +const TAG = 'NdkOpenGLTest'; +const DOMAIN = 0xF629; + +export default class TestAbility extends UIAbility { + onCreate(want:Want, launchParam:AbilityConstant.LaunchParam) { + hilog.info(DOMAIN, TAG, '%{public}s', 'TestAbility onCreate'); + hilog.info(DOMAIN, TAG, '%{public}s', 'want param:' + JSON.stringify(want) ?? ''); + hilog.info(DOMAIN, TAG, '%{public}s', 'launchParam:'+ JSON.stringify(launchParam) ?? ''); + let abilityDelegator: Object + abilityDelegator = AbilityDelegatorRegistry.getAbilityDelegator() + let abilityDelegatorArguments: Object + abilityDelegatorArguments = AbilityDelegatorRegistry.getArguments() + hilog.info(DOMAIN, TAG, '%{public}s', 'start run testcase!!!'); + Hypium.hypiumTest(abilityDelegator, abilityDelegatorArguments, testsuite) + } + + onDestroy() { + hilog.info(DOMAIN, TAG, '%{public}s', 'TestAbility onDestroy'); + } + + onWindowStageCreate(windowStage: window.WindowStage) { + hilog.info(DOMAIN, TAG, '%{public}s', 'TestAbility onWindowStageCreate'); + windowStage.loadContent('testability/pages/Index', (err, data) => { + if (err.code) { + hilog.error(DOMAIN, TAG, 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? ''); + return; + } + hilog.info(DOMAIN, TAG, 'Succeeded in loading the content. Data: %{public}s', + JSON.stringify(data) ?? ''); + }); + } + + onWindowStageDestroy() { + hilog.info(DOMAIN, TAG, '%{public}s', 'TestAbility onWindowStageDestroy'); + } + + onForeground() { + hilog.info(DOMAIN, TAG, '%{public}s', 'TestAbility onForeground'); + } + + onBackground() { + hilog.info(DOMAIN, TAG, '%{public}s', 'TestAbility onBackground'); + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/ohosTest/ets/testability/pages/Index.ets b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/ohosTest/ets/testability/pages/Index.ets new file mode 100644 index 0000000000000000000000000000000000000000..3a43f59eafb40b99103b5c5ffb18fe07f2281068 --- /dev/null +++ b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/ohosTest/ets/testability/pages/Index.ets @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import hilog from '@ohos.hilog'; + +@Entry +@Component +struct Index { + private TAG = 'NdkOpenGLTest'; + private DOMAIN = 0xF629; + + aboutToAppear() { + hilog.info(this.DOMAIN, this.TAG, '%{public}s', 'TestAbility index aboutToAppear'); + } + + @State message: string = 'Hello World' + build() { + Row() { + Column() { + Text(this.message) + .fontSize(50) + .fontWeight(FontWeight.Bold) + }.width('100%') + }.height('100%') + } + } \ No newline at end of file diff --git a/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/ohosTest/module.json5 b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/ohosTest/module.json5 new file mode 100644 index 0000000000000000000000000000000000000000..c6ad62fbbd46259bb51381022bcdce57349e123c --- /dev/null +++ b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/ohosTest/module.json5 @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "module": { + "name": "entry_test", + "type": "feature", + "description": "$string:module_test_desc", + "mainElement": "TestAbility", + "deviceTypes": [ + "default" + ], + "deliveryWithInstall": true, + "installationFree": false, + "pages": "$profile:test_pages", + "abilities": [ + { + "name": "TestAbility", + "srcEntry": "./ets/testability/TestAbility.ets", + "description": "$string:TestAbility_desc", + "icon": "$media:icon", + "label": "$string:TestAbility_label", + "exported": true, + "startWindowIcon": "$media:icon", + "startWindowBackground": "$color:start_window_background", + "skills": [ + { + "actions": [ + "action.system.home" + ], + "entities": [ + "entity.system.home" + ] + } + ] + } + ] + } +} diff --git a/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/ohosTest/resources/base/element/color.json b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/ohosTest/resources/base/element/color.json new file mode 100644 index 0000000000000000000000000000000000000000..3c712962da3c2751c2b9ddb53559afcbd2b54a02 --- /dev/null +++ b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/ohosTest/resources/base/element/color.json @@ -0,0 +1,8 @@ +{ + "color": [ + { + "name": "start_window_background", + "value": "#FFFFFF" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/ohosTest/resources/base/element/string.json b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/ohosTest/resources/base/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..479927453259025ca2b8cd3f07d676b20514a110 --- /dev/null +++ b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/ohosTest/resources/base/element/string.json @@ -0,0 +1,16 @@ +{ + "string": [ + { + "name": "module_test_desc", + "value": "test ability description" + }, + { + "name": "TestAbility_desc", + "value": "the test ability" + }, + { + "name": "TestAbility_label", + "value": "NdkOpenGLTest" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/ohosTest/resources/base/media/icon.png b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/ohosTest/resources/base/media/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ce307a8827bd75456441ceb57d530e4c8d45d36c Binary files /dev/null and b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/ohosTest/resources/base/media/icon.png differ diff --git a/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/ohosTest/resources/base/profile/test_pages.json b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/ohosTest/resources/base/profile/test_pages.json new file mode 100644 index 0000000000000000000000000000000000000000..b7e7343cacb32ce982a45e76daad86e435e054fe --- /dev/null +++ b/HarmonyOS_NEXT/Native/NdkOpenGL/entry/src/ohosTest/resources/base/profile/test_pages.json @@ -0,0 +1,5 @@ +{ + "src": [ + "testability/pages/Index" + ] +} diff --git a/HarmonyOS_NEXT/Native/NdkOpenGL/hvigor/hvigor-config.json5 b/HarmonyOS_NEXT/Native/NdkOpenGL/hvigor/hvigor-config.json5 new file mode 100644 index 0000000000000000000000000000000000000000..9e86f6017fa69f41499fca037cdb7925ee0b9a83 --- /dev/null +++ b/HarmonyOS_NEXT/Native/NdkOpenGL/hvigor/hvigor-config.json5 @@ -0,0 +1,6 @@ +{ + "hvigorVersion": "3.0.9-s", + "dependencies": { + "@ohos/hvigor-ohos-plugin": "3.0.9-s" + } +} diff --git a/HarmonyOS_NEXT/Native/NdkOpenGL/hvigor/hvigor-wrapper.js b/HarmonyOS_NEXT/Native/NdkOpenGL/hvigor/hvigor-wrapper.js new file mode 100644 index 0000000000000000000000000000000000000000..994f22987bd0739b9faa07c966b066c2d9218602 --- /dev/null +++ b/HarmonyOS_NEXT/Native/NdkOpenGL/hvigor/hvigor-wrapper.js @@ -0,0 +1,2 @@ +"use strict";var e=require("fs"),t=require("path"),n=require("os"),r=require("crypto"),u=require("child_process"),o=require("constants"),i=require("stream"),s=require("util"),c=require("assert"),a=require("tty"),l=require("zlib"),f=require("net");function d(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var D=d(e),p=d(t),E=d(n),m=d(r),h=d(u),y=d(o),C=d(i),F=d(s),g=d(c),A=d(a),v=d(l),S=d(f),w="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},O={},b={},_={},B=w&&w.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(_,"__esModule",{value:!0}),_.isMac=_.isLinux=_.isWindows=void 0;const P=B(E.default),k="Windows_NT",x="Linux",N="Darwin";_.isWindows=function(){return P.default.type()===k},_.isLinux=function(){return P.default.type()===x},_.isMac=function(){return P.default.type()===N};var I={},T=w&&w.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var u=Object.getOwnPropertyDescriptor(t,n);u&&!("get"in u?!t.__esModule:u.writable||u.configurable)||(u={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,u)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),R=w&&w.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),M=w&&w.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&T(t,e,n);return R(t,e),t};Object.defineProperty(I,"__esModule",{value:!0}),I.hash=void 0;const L=M(m.default);I.hash=function(e,t="md5"){return L.createHash(t).update(e,"utf-8").digest("hex")},function(e){var t=w&&w.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var u=Object.getOwnPropertyDescriptor(t,n);u&&!("get"in u?!t.__esModule:u.writable||u.configurable)||(u={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,u)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),n=w&&w.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),r=w&&w.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(null!=e)for(var u in e)"default"!==u&&Object.prototype.hasOwnProperty.call(e,u)&&t(r,e,u);return n(r,e),r};Object.defineProperty(e,"__esModule",{value:!0}),e.HVIGOR_BOOT_JS_FILE_PATH=e.HVIGOR_PROJECT_DEPENDENCY_PACKAGE_JSON_PATH=e.HVIGOR_PROJECT_DEPENDENCIES_HOME=e.HVIGOR_PROJECT_WRAPPER_HOME=e.HVIGOR_PROJECT_NAME=e.HVIGOR_PROJECT_ROOT_DIR=e.HVIGOR_PROJECT_CACHES_HOME=e.HVIGOR_PNPM_STORE_PATH=e.HVIGOR_WRAPPER_PNPM_SCRIPT_PATH=e.HVIGOR_WRAPPER_TOOLS_HOME=e.HVIGOR_USER_HOME=e.DEFAULT_PACKAGE_JSON=e.DEFAULT_HVIGOR_CONFIG_JSON_FILE_NAME=e.PNPM=e.HVIGOR=e.NPM_TOOL=e.PNPM_TOOL=e.HVIGOR_ENGINE_PACKAGE_NAME=void 0;const u=r(p.default),o=r(E.default),i=_,s=I;e.HVIGOR_ENGINE_PACKAGE_NAME="@ohos/hvigor",e.PNPM_TOOL=(0,i.isWindows)()?"pnpm.cmd":"pnpm",e.NPM_TOOL=(0,i.isWindows)()?"npm.cmd":"npm",e.HVIGOR="hvigor",e.PNPM="pnpm",e.DEFAULT_HVIGOR_CONFIG_JSON_FILE_NAME="hvigor-config.json5",e.DEFAULT_PACKAGE_JSON="package.json",e.HVIGOR_USER_HOME=u.resolve(o.homedir(),".hvigor"),e.HVIGOR_WRAPPER_TOOLS_HOME=u.resolve(e.HVIGOR_USER_HOME,"wrapper","tools"),e.HVIGOR_WRAPPER_PNPM_SCRIPT_PATH=u.resolve(e.HVIGOR_WRAPPER_TOOLS_HOME,"node_modules",".bin",e.PNPM_TOOL),e.HVIGOR_PNPM_STORE_PATH=u.resolve(e.HVIGOR_USER_HOME,"caches"),e.HVIGOR_PROJECT_CACHES_HOME=u.resolve(e.HVIGOR_USER_HOME,"project_caches"),e.HVIGOR_PROJECT_ROOT_DIR=process.cwd(),e.HVIGOR_PROJECT_NAME=u.basename((0,s.hash)(e.HVIGOR_PROJECT_ROOT_DIR)),e.HVIGOR_PROJECT_WRAPPER_HOME=u.resolve(e.HVIGOR_PROJECT_ROOT_DIR,e.HVIGOR),e.HVIGOR_PROJECT_DEPENDENCIES_HOME=u.resolve(e.HVIGOR_PROJECT_CACHES_HOME,e.HVIGOR_PROJECT_NAME,"workspace"),e.HVIGOR_PROJECT_DEPENDENCY_PACKAGE_JSON_PATH=u.resolve(e.HVIGOR_PROJECT_DEPENDENCIES_HOME,e.DEFAULT_PACKAGE_JSON),e.HVIGOR_BOOT_JS_FILE_PATH=u.resolve(e.HVIGOR_PROJECT_DEPENDENCIES_HOME,"node_modules","@ohos","hvigor","bin","hvigor.js")}(b);var j={},$={};Object.defineProperty($,"__esModule",{value:!0}),$.logInfoPrintConsole=$.logErrorAndExit=void 0,$.logErrorAndExit=function(e){e instanceof Error?console.error(e.message):console.error(e),process.exit(-1)},$.logInfoPrintConsole=function(e){console.log(e)};var H=w&&w.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var u=Object.getOwnPropertyDescriptor(t,n);u&&!("get"in u?!t.__esModule:u.writable||u.configurable)||(u={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,u)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),J=w&&w.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),G=w&&w.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&H(t,e,n);return J(t,e),t},V=w&&w.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(j,"__esModule",{value:!0}),j.isFileExists=j.offlinePluginConversion=j.executeCommand=j.getNpmPath=j.hasNpmPackInPaths=void 0;const U=h.default,W=G(p.default),z=b,K=$,q=V(D.default);j.hasNpmPackInPaths=function(e,t){try{return require.resolve(e,{paths:[...t]}),!0}catch(e){return!1}},j.getNpmPath=function(){const e=process.execPath;return W.join(W.dirname(e),z.NPM_TOOL)},j.executeCommand=function(e,t,n){0!==(0,U.spawnSync)(e,t,n).status&&(0,K.logErrorAndExit)(`Error: ${e} ${t} execute failed.See above for details.`)},j.offlinePluginConversion=function(e,t){return t.startsWith("file:")||t.endsWith(".tgz")?W.resolve(e,z.HVIGOR,t.replace("file:","")):t},j.isFileExists=function(e){return q.default.existsSync(e)&&q.default.statSync(e).isFile()},function(e){var t=w&&w.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var u=Object.getOwnPropertyDescriptor(t,n);u&&!("get"in u?!t.__esModule:u.writable||u.configurable)||(u={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,u)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),n=w&&w.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),r=w&&w.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(null!=e)for(var u in e)"default"!==u&&Object.prototype.hasOwnProperty.call(e,u)&&t(r,e,u);return n(r,e),r},u=w&&w.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,"__esModule",{value:!0}),e.executeInstallPnpm=e.isPnpmAvailable=e.environmentHandler=e.checkNpmConifg=e.PNPM_VERSION=void 0;const o=r(D.default),i=b,s=j,c=r(p.default),a=$,l=h.default,f=u(E.default);e.PNPM_VERSION="7.30.0",e.checkNpmConifg=function(){const e=c.resolve(i.HVIGOR_PROJECT_ROOT_DIR,".npmrc"),t=c.resolve(f.default.homedir(),".npmrc");if((0,s.isFileExists)(e)||(0,s.isFileExists)(t))return;const n=(0,s.getNpmPath)(),r=(0,l.spawnSync)(n,["config","get","prefix"],{cwd:i.HVIGOR_PROJECT_ROOT_DIR});if(0!==r.status||!r.stdout)return void(0,a.logErrorAndExit)("Error: The hvigor depends on the npmrc file. Configure the npmrc file first.");const u=c.resolve(`${r.stdout}`.replace(/[\r\n]/gi,""),".npmrc");(0,s.isFileExists)(u)||(0,a.logErrorAndExit)("Error: The hvigor depends on the npmrc file. Configure the npmrc file first.")},e.environmentHandler=function(){process.env["npm_config_update-notifier"]="false"},e.isPnpmAvailable=function(){return!!o.existsSync(i.HVIGOR_WRAPPER_PNPM_SCRIPT_PATH)&&(0,s.hasNpmPackInPaths)("pnpm",[i.HVIGOR_WRAPPER_TOOLS_HOME])},e.executeInstallPnpm=function(){(0,a.logInfoPrintConsole)(`Installing pnpm@${e.PNPM_VERSION}...`);const t=(0,s.getNpmPath)();!function(){const t=c.resolve(i.HVIGOR_WRAPPER_TOOLS_HOME,i.DEFAULT_PACKAGE_JSON);try{o.existsSync(i.HVIGOR_WRAPPER_TOOLS_HOME)||o.mkdirSync(i.HVIGOR_WRAPPER_TOOLS_HOME,{recursive:!0});const n={dependencies:{}};n.dependencies[i.PNPM]=e.PNPM_VERSION,o.writeFileSync(t,JSON.stringify(n))}catch(e){(0,a.logErrorAndExit)(`Error: EPERM: operation not permitted,create ${t} failed.`)}}(),(0,s.executeCommand)(t,["install","pnpm"],{cwd:i.HVIGOR_WRAPPER_TOOLS_HOME,stdio:["inherit","inherit","inherit"],env:process.env}),(0,a.logInfoPrintConsole)("Pnpm install success.")}}(O);var Y={},X={},Z={},Q={};Object.defineProperty(Q,"__esModule",{value:!0}),Q.Unicode=void 0;class ee{}Q.Unicode=ee,ee.Space_Separator=/[\u1680\u2000-\u200A\u202F\u205F\u3000]/,ee.ID_Start=/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/,ee.ID_Continue=/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDE00-\uDE3E\uDE47\uDE50-\uDE83\uDE86-\uDE99\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/,Object.defineProperty(Z,"__esModule",{value:!0}),Z.JudgeUtil=void 0;const te=Q;Z.JudgeUtil=class{static isIgnoreChar(e){return"string"==typeof e&&("\t"===e||"\v"===e||"\f"===e||" "===e||" "===e||"\ufeff"===e||"\n"===e||"\r"===e||"\u2028"===e||"\u2029"===e)}static isSpaceSeparator(e){return"string"==typeof e&&te.Unicode.Space_Separator.test(e)}static isIdStartChar(e){return"string"==typeof e&&(e>="a"&&e<="z"||e>="A"&&e<="Z"||"$"===e||"_"===e||te.Unicode.ID_Start.test(e))}static isIdContinueChar(e){return"string"==typeof e&&(e>="a"&&e<="z"||e>="A"&&e<="Z"||e>="0"&&e<="9"||"$"===e||"_"===e||"‌"===e||"‍"===e||te.Unicode.ID_Continue.test(e))}static isDigitWithoutZero(e){return/[1-9]/.test(e)}static isDigit(e){return"string"==typeof e&&/[0-9]/.test(e)}static isHexDigit(e){return"string"==typeof e&&/[0-9A-Fa-f]/.test(e)}};var ne={},re={fromCallback:function(e){return Object.defineProperty((function(...t){if("function"!=typeof t[t.length-1])return new Promise(((n,r)=>{e.call(this,...t,((e,t)=>null!=e?r(e):n(t)))}));e.apply(this,t)}),"name",{value:e.name})},fromPromise:function(e){return Object.defineProperty((function(...t){const n=t[t.length-1];if("function"!=typeof n)return e.apply(this,t);e.apply(this,t.slice(0,-1)).then((e=>n(null,e)),n)}),"name",{value:e.name})}},ue=y.default,oe=process.cwd,ie=null,se=process.env.GRACEFUL_FS_PLATFORM||process.platform;process.cwd=function(){return ie||(ie=oe.call(process)),ie};try{process.cwd()}catch(e){}if("function"==typeof process.chdir){var ce=process.chdir;process.chdir=function(e){ie=null,ce.call(process,e)},Object.setPrototypeOf&&Object.setPrototypeOf(process.chdir,ce)}var ae=function(e){ue.hasOwnProperty("O_SYMLINK")&&process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)&&function(e){e.lchmod=function(t,n,r){e.open(t,ue.O_WRONLY|ue.O_SYMLINK,n,(function(t,u){t?r&&r(t):e.fchmod(u,n,(function(t){e.close(u,(function(e){r&&r(t||e)}))}))}))},e.lchmodSync=function(t,n){var r,u=e.openSync(t,ue.O_WRONLY|ue.O_SYMLINK,n),o=!0;try{r=e.fchmodSync(u,n),o=!1}finally{if(o)try{e.closeSync(u)}catch(e){}else e.closeSync(u)}return r}}(e);e.lutimes||function(e){ue.hasOwnProperty("O_SYMLINK")&&e.futimes?(e.lutimes=function(t,n,r,u){e.open(t,ue.O_SYMLINK,(function(t,o){t?u&&u(t):e.futimes(o,n,r,(function(t){e.close(o,(function(e){u&&u(t||e)}))}))}))},e.lutimesSync=function(t,n,r){var u,o=e.openSync(t,ue.O_SYMLINK),i=!0;try{u=e.futimesSync(o,n,r),i=!1}finally{if(i)try{e.closeSync(o)}catch(e){}else e.closeSync(o)}return u}):e.futimes&&(e.lutimes=function(e,t,n,r){r&&process.nextTick(r)},e.lutimesSync=function(){})}(e);e.chown=r(e.chown),e.fchown=r(e.fchown),e.lchown=r(e.lchown),e.chmod=t(e.chmod),e.fchmod=t(e.fchmod),e.lchmod=t(e.lchmod),e.chownSync=u(e.chownSync),e.fchownSync=u(e.fchownSync),e.lchownSync=u(e.lchownSync),e.chmodSync=n(e.chmodSync),e.fchmodSync=n(e.fchmodSync),e.lchmodSync=n(e.lchmodSync),e.stat=o(e.stat),e.fstat=o(e.fstat),e.lstat=o(e.lstat),e.statSync=i(e.statSync),e.fstatSync=i(e.fstatSync),e.lstatSync=i(e.lstatSync),e.chmod&&!e.lchmod&&(e.lchmod=function(e,t,n){n&&process.nextTick(n)},e.lchmodSync=function(){});e.chown&&!e.lchown&&(e.lchown=function(e,t,n,r){r&&process.nextTick(r)},e.lchownSync=function(){});"win32"===se&&(e.rename="function"!=typeof e.rename?e.rename:function(t){function n(n,r,u){var o=Date.now(),i=0;t(n,r,(function s(c){if(c&&("EACCES"===c.code||"EPERM"===c.code||"EBUSY"===c.code)&&Date.now()-o<6e4)return setTimeout((function(){e.stat(r,(function(e,o){e&&"ENOENT"===e.code?t(n,r,s):u(c)}))}),i),void(i<100&&(i+=10));u&&u(c)}))}return Object.setPrototypeOf&&Object.setPrototypeOf(n,t),n}(e.rename));function t(t){return t?function(n,r,u){return t.call(e,n,r,(function(e){s(e)&&(e=null),u&&u.apply(this,arguments)}))}:t}function n(t){return t?function(n,r){try{return t.call(e,n,r)}catch(e){if(!s(e))throw e}}:t}function r(t){return t?function(n,r,u,o){return t.call(e,n,r,u,(function(e){s(e)&&(e=null),o&&o.apply(this,arguments)}))}:t}function u(t){return t?function(n,r,u){try{return t.call(e,n,r,u)}catch(e){if(!s(e))throw e}}:t}function o(t){return t?function(n,r,u){function o(e,t){t&&(t.uid<0&&(t.uid+=4294967296),t.gid<0&&(t.gid+=4294967296)),u&&u.apply(this,arguments)}return"function"==typeof r&&(u=r,r=null),r?t.call(e,n,r,o):t.call(e,n,o)}:t}function i(t){return t?function(n,r){var u=r?t.call(e,n,r):t.call(e,n);return u&&(u.uid<0&&(u.uid+=4294967296),u.gid<0&&(u.gid+=4294967296)),u}:t}function s(e){return!e||("ENOSYS"===e.code||!(process.getuid&&0===process.getuid()||"EINVAL"!==e.code&&"EPERM"!==e.code))}e.read="function"!=typeof e.read?e.read:function(t){function n(n,r,u,o,i,s){var c;if(s&&"function"==typeof s){var a=0;c=function(l,f,d){if(l&&"EAGAIN"===l.code&&a<10)return a++,t.call(e,n,r,u,o,i,c);s.apply(this,arguments)}}return t.call(e,n,r,u,o,i,c)}return Object.setPrototypeOf&&Object.setPrototypeOf(n,t),n}(e.read),e.readSync="function"!=typeof e.readSync?e.readSync:(c=e.readSync,function(t,n,r,u,o){for(var i=0;;)try{return c.call(e,t,n,r,u,o)}catch(e){if("EAGAIN"===e.code&&i<10){i++;continue}throw e}});var c};var le=C.default.Stream,fe=function(e){return{ReadStream:function t(n,r){if(!(this instanceof t))return new t(n,r);le.call(this);var u=this;this.path=n,this.fd=null,this.readable=!0,this.paused=!1,this.flags="r",this.mode=438,this.bufferSize=65536,r=r||{};for(var o=Object.keys(r),i=0,s=o.length;ithis.end)throw new Error("start must be <= end");this.pos=this.start}if(null!==this.fd)return void process.nextTick((function(){u._read()}));e.open(this.path,this.flags,this.mode,(function(e,t){if(e)return u.emit("error",e),void(u.readable=!1);u.fd=t,u.emit("open",t),u._read()}))},WriteStream:function t(n,r){if(!(this instanceof t))return new t(n,r);le.call(this),this.path=n,this.fd=null,this.writable=!0,this.flags="w",this.encoding="binary",this.mode=438,this.bytesWritten=0,r=r||{};for(var u=Object.keys(r),o=0,i=u.length;o= zero");this.pos=this.start}this.busy=!1,this._queue=[],null===this.fd&&(this._open=e.open,this._queue.push([this._open,this.path,this.flags,this.mode,void 0]),this.flush())}}};var de=function(e){if(null===e||"object"!=typeof e)return e;if(e instanceof Object)var t={__proto__:De(e)};else t=Object.create(null);return Object.getOwnPropertyNames(e).forEach((function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(e,n))})),t},De=Object.getPrototypeOf||function(e){return e.__proto__};var pe,Ee,me=D.default,he=ae,ye=fe,Ce=de,Fe=F.default;function ge(e,t){Object.defineProperty(e,pe,{get:function(){return t}})}"function"==typeof Symbol&&"function"==typeof Symbol.for?(pe=Symbol.for("graceful-fs.queue"),Ee=Symbol.for("graceful-fs.previous")):(pe="___graceful-fs.queue",Ee="___graceful-fs.previous");var Ae=function(){};if(Fe.debuglog?Ae=Fe.debuglog("gfs4"):/\bgfs4\b/i.test(process.env.NODE_DEBUG||"")&&(Ae=function(){var e=Fe.format.apply(Fe,arguments);e="GFS4: "+e.split(/\n/).join("\nGFS4: "),console.error(e)}),!me[pe]){var ve=w[pe]||[];ge(me,ve),me.close=function(e){function t(t,n){return e.call(me,t,(function(e){e||_e(),"function"==typeof n&&n.apply(this,arguments)}))}return Object.defineProperty(t,Ee,{value:e}),t}(me.close),me.closeSync=function(e){function t(t){e.apply(me,arguments),_e()}return Object.defineProperty(t,Ee,{value:e}),t}(me.closeSync),/\bgfs4\b/i.test(process.env.NODE_DEBUG||"")&&process.on("exit",(function(){Ae(me[pe]),g.default.equal(me[pe].length,0)}))}w[pe]||ge(w,me[pe]);var Se,we=Oe(Ce(me));function Oe(e){he(e),e.gracefulify=Oe,e.createReadStream=function(t,n){return new e.ReadStream(t,n)},e.createWriteStream=function(t,n){return new e.WriteStream(t,n)};var t=e.readFile;e.readFile=function(e,n,r){"function"==typeof n&&(r=n,n=null);return function e(n,r,u,o){return t(n,r,(function(t){!t||"EMFILE"!==t.code&&"ENFILE"!==t.code?"function"==typeof u&&u.apply(this,arguments):be([e,[n,r,u],t,o||Date.now(),Date.now()])}))}(e,n,r)};var n=e.writeFile;e.writeFile=function(e,t,r,u){"function"==typeof r&&(u=r,r=null);return function e(t,r,u,o,i){return n(t,r,u,(function(n){!n||"EMFILE"!==n.code&&"ENFILE"!==n.code?"function"==typeof o&&o.apply(this,arguments):be([e,[t,r,u,o],n,i||Date.now(),Date.now()])}))}(e,t,r,u)};var r=e.appendFile;r&&(e.appendFile=function(e,t,n,u){"function"==typeof n&&(u=n,n=null);return function e(t,n,u,o,i){return r(t,n,u,(function(r){!r||"EMFILE"!==r.code&&"ENFILE"!==r.code?"function"==typeof o&&o.apply(this,arguments):be([e,[t,n,u,o],r,i||Date.now(),Date.now()])}))}(e,t,n,u)});var u=e.copyFile;u&&(e.copyFile=function(e,t,n,r){"function"==typeof n&&(r=n,n=0);return function e(t,n,r,o,i){return u(t,n,r,(function(u){!u||"EMFILE"!==u.code&&"ENFILE"!==u.code?"function"==typeof o&&o.apply(this,arguments):be([e,[t,n,r,o],u,i||Date.now(),Date.now()])}))}(e,t,n,r)});var o=e.readdir;e.readdir=function(e,t,n){"function"==typeof t&&(n=t,t=null);var r=i.test(process.version)?function(e,t,n,r){return o(e,u(e,t,n,r))}:function(e,t,n,r){return o(e,t,u(e,t,n,r))};return r(e,t,n);function u(e,t,n,u){return function(o,i){!o||"EMFILE"!==o.code&&"ENFILE"!==o.code?(i&&i.sort&&i.sort(),"function"==typeof n&&n.call(this,o,i)):be([r,[e,t,n],o,u||Date.now(),Date.now()])}}};var i=/^v[0-5]\./;if("v0.8"===process.version.substr(0,4)){var s=ye(e);d=s.ReadStream,D=s.WriteStream}var c=e.ReadStream;c&&(d.prototype=Object.create(c.prototype),d.prototype.open=function(){var e=this;E(e.path,e.flags,e.mode,(function(t,n){t?(e.autoClose&&e.destroy(),e.emit("error",t)):(e.fd=n,e.emit("open",n),e.read())}))});var a=e.WriteStream;a&&(D.prototype=Object.create(a.prototype),D.prototype.open=function(){var e=this;E(e.path,e.flags,e.mode,(function(t,n){t?(e.destroy(),e.emit("error",t)):(e.fd=n,e.emit("open",n))}))}),Object.defineProperty(e,"ReadStream",{get:function(){return d},set:function(e){d=e},enumerable:!0,configurable:!0}),Object.defineProperty(e,"WriteStream",{get:function(){return D},set:function(e){D=e},enumerable:!0,configurable:!0});var l=d;Object.defineProperty(e,"FileReadStream",{get:function(){return l},set:function(e){l=e},enumerable:!0,configurable:!0});var f=D;function d(e,t){return this instanceof d?(c.apply(this,arguments),this):d.apply(Object.create(d.prototype),arguments)}function D(e,t){return this instanceof D?(a.apply(this,arguments),this):D.apply(Object.create(D.prototype),arguments)}Object.defineProperty(e,"FileWriteStream",{get:function(){return f},set:function(e){f=e},enumerable:!0,configurable:!0});var p=e.open;function E(e,t,n,r){return"function"==typeof n&&(r=n,n=null),function e(t,n,r,u,o){return p(t,n,r,(function(i,s){!i||"EMFILE"!==i.code&&"ENFILE"!==i.code?"function"==typeof u&&u.apply(this,arguments):be([e,[t,n,r,u],i,o||Date.now(),Date.now()])}))}(e,t,n,r)}return e.open=E,e}function be(e){Ae("ENQUEUE",e[0].name,e[1]),me[pe].push(e),Be()}function _e(){for(var e=Date.now(),t=0;t2&&(me[pe][t][3]=e,me[pe][t][4]=e);Be()}function Be(){if(clearTimeout(Se),Se=void 0,0!==me[pe].length){var e=me[pe].shift(),t=e[0],n=e[1],r=e[2],u=e[3],o=e[4];if(void 0===u)Ae("RETRY",t.name,n),t.apply(null,n);else if(Date.now()-u>=6e4){Ae("TIMEOUT",t.name,n);var i=n.pop();"function"==typeof i&&i.call(null,r)}else{var s=Date.now()-o,c=Math.max(o-u,1);s>=Math.min(1.2*c,100)?(Ae("RETRY",t.name,n),t.apply(null,n.concat([u]))):me[pe].push(e)}void 0===Se&&(Se=setTimeout(Be,0))}}process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH&&!me.__patched&&(we=Oe(me),me.__patched=!0),function(e){const t=re.fromCallback,n=we,r=["access","appendFile","chmod","chown","close","copyFile","fchmod","fchown","fdatasync","fstat","fsync","ftruncate","futimes","lchmod","lchown","link","lstat","mkdir","mkdtemp","open","opendir","readdir","readFile","readlink","realpath","rename","rm","rmdir","stat","symlink","truncate","unlink","utimes","writeFile"].filter((e=>"function"==typeof n[e]));Object.assign(e,n),r.forEach((r=>{e[r]=t(n[r])})),e.realpath.native=t(n.realpath.native),e.exists=function(e,t){return"function"==typeof t?n.exists(e,t):new Promise((t=>n.exists(e,t)))},e.read=function(e,t,r,u,o,i){return"function"==typeof i?n.read(e,t,r,u,o,i):new Promise(((i,s)=>{n.read(e,t,r,u,o,((e,t,n)=>{if(e)return s(e);i({bytesRead:t,buffer:n})}))}))},e.write=function(e,t,...r){return"function"==typeof r[r.length-1]?n.write(e,t,...r):new Promise(((u,o)=>{n.write(e,t,...r,((e,t,n)=>{if(e)return o(e);u({bytesWritten:t,buffer:n})}))}))},"function"==typeof n.writev&&(e.writev=function(e,t,...r){return"function"==typeof r[r.length-1]?n.writev(e,t,...r):new Promise(((u,o)=>{n.writev(e,t,...r,((e,t,n)=>{if(e)return o(e);u({bytesWritten:t,buffers:n})}))}))})}(ne);var Pe={},ke={};const xe=p.default;ke.checkPath=function(e){if("win32"===process.platform){if(/[<>:"|?*]/.test(e.replace(xe.parse(e).root,""))){const t=new Error(`Path contains invalid characters: ${e}`);throw t.code="EINVAL",t}}};const Ne=ne,{checkPath:Ie}=ke,Te=e=>"number"==typeof e?e:{mode:511,...e}.mode;Pe.makeDir=async(e,t)=>(Ie(e),Ne.mkdir(e,{mode:Te(t),recursive:!0})),Pe.makeDirSync=(e,t)=>(Ie(e),Ne.mkdirSync(e,{mode:Te(t),recursive:!0}));const Re=re.fromPromise,{makeDir:Me,makeDirSync:Le}=Pe,je=Re(Me);var $e={mkdirs:je,mkdirsSync:Le,mkdirp:je,mkdirpSync:Le,ensureDir:je,ensureDirSync:Le};const He=re.fromPromise,Je=ne;var Ge={pathExists:He((function(e){return Je.access(e).then((()=>!0)).catch((()=>!1))})),pathExistsSync:Je.existsSync};const Ve=we;var Ue=function(e,t,n,r){Ve.open(e,"r+",((e,u)=>{if(e)return r(e);Ve.futimes(u,t,n,(e=>{Ve.close(u,(t=>{r&&r(e||t)}))}))}))},We=function(e,t,n){const r=Ve.openSync(e,"r+");return Ve.futimesSync(r,t,n),Ve.closeSync(r)};const ze=ne,Ke=p.default,qe=F.default;function Ye(e,t,n){const r=n.dereference?e=>ze.stat(e,{bigint:!0}):e=>ze.lstat(e,{bigint:!0});return Promise.all([r(e),r(t).catch((e=>{if("ENOENT"===e.code)return null;throw e}))]).then((([e,t])=>({srcStat:e,destStat:t})))}function Xe(e,t){return t.ino&&t.dev&&t.ino===e.ino&&t.dev===e.dev}function Ze(e,t){const n=Ke.resolve(e).split(Ke.sep).filter((e=>e)),r=Ke.resolve(t).split(Ke.sep).filter((e=>e));return n.reduce(((e,t,n)=>e&&r[n]===t),!0)}function Qe(e,t,n){return`Cannot ${n} '${e}' to a subdirectory of itself, '${t}'.`}var et={checkPaths:function(e,t,n,r,u){qe.callbackify(Ye)(e,t,r,((r,o)=>{if(r)return u(r);const{srcStat:i,destStat:s}=o;if(s){if(Xe(i,s)){const r=Ke.basename(e),o=Ke.basename(t);return"move"===n&&r!==o&&r.toLowerCase()===o.toLowerCase()?u(null,{srcStat:i,destStat:s,isChangingCase:!0}):u(new Error("Source and destination must not be the same."))}if(i.isDirectory()&&!s.isDirectory())return u(new Error(`Cannot overwrite non-directory '${t}' with directory '${e}'.`));if(!i.isDirectory()&&s.isDirectory())return u(new Error(`Cannot overwrite directory '${t}' with non-directory '${e}'.`))}return i.isDirectory()&&Ze(e,t)?u(new Error(Qe(e,t,n))):u(null,{srcStat:i,destStat:s})}))},checkPathsSync:function(e,t,n,r){const{srcStat:u,destStat:o}=function(e,t,n){let r;const u=n.dereference?e=>ze.statSync(e,{bigint:!0}):e=>ze.lstatSync(e,{bigint:!0}),o=u(e);try{r=u(t)}catch(e){if("ENOENT"===e.code)return{srcStat:o,destStat:null};throw e}return{srcStat:o,destStat:r}}(e,t,r);if(o){if(Xe(u,o)){const r=Ke.basename(e),i=Ke.basename(t);if("move"===n&&r!==i&&r.toLowerCase()===i.toLowerCase())return{srcStat:u,destStat:o,isChangingCase:!0};throw new Error("Source and destination must not be the same.")}if(u.isDirectory()&&!o.isDirectory())throw new Error(`Cannot overwrite non-directory '${t}' with directory '${e}'.`);if(!u.isDirectory()&&o.isDirectory())throw new Error(`Cannot overwrite directory '${t}' with non-directory '${e}'.`)}if(u.isDirectory()&&Ze(e,t))throw new Error(Qe(e,t,n));return{srcStat:u,destStat:o}},checkParentPaths:function e(t,n,r,u,o){const i=Ke.resolve(Ke.dirname(t)),s=Ke.resolve(Ke.dirname(r));if(s===i||s===Ke.parse(s).root)return o();ze.stat(s,{bigint:!0},((i,c)=>i?"ENOENT"===i.code?o():o(i):Xe(n,c)?o(new Error(Qe(t,r,u))):e(t,n,s,u,o)))},checkParentPathsSync:function e(t,n,r,u){const o=Ke.resolve(Ke.dirname(t)),i=Ke.resolve(Ke.dirname(r));if(i===o||i===Ke.parse(i).root)return;let s;try{s=ze.statSync(i,{bigint:!0})}catch(e){if("ENOENT"===e.code)return;throw e}if(Xe(n,s))throw new Error(Qe(t,r,u));return e(t,n,i,u)},isSrcSubdir:Ze,areIdentical:Xe};const tt=we,nt=p.default,rt=$e.mkdirs,ut=Ge.pathExists,ot=Ue,it=et;function st(e,t,n,r,u){const o=nt.dirname(n);ut(o,((i,s)=>i?u(i):s?at(e,t,n,r,u):void rt(o,(o=>o?u(o):at(e,t,n,r,u)))))}function ct(e,t,n,r,u,o){Promise.resolve(u.filter(n,r)).then((i=>i?e(t,n,r,u,o):o()),(e=>o(e)))}function at(e,t,n,r,u){(r.dereference?tt.stat:tt.lstat)(t,((o,i)=>o?u(o):i.isDirectory()?function(e,t,n,r,u,o){return t?Dt(n,r,u,o):function(e,t,n,r,u){tt.mkdir(n,(o=>{if(o)return u(o);Dt(t,n,r,(t=>t?u(t):dt(n,e,u)))}))}(e.mode,n,r,u,o)}(i,e,t,n,r,u):i.isFile()||i.isCharacterDevice()||i.isBlockDevice()?function(e,t,n,r,u,o){return t?function(e,t,n,r,u){if(!r.overwrite)return r.errorOnExist?u(new Error(`'${n}' already exists`)):u();tt.unlink(n,(o=>o?u(o):lt(e,t,n,r,u)))}(e,n,r,u,o):lt(e,n,r,u,o)}(i,e,t,n,r,u):i.isSymbolicLink()?function(e,t,n,r,u){tt.readlink(t,((t,o)=>t?u(t):(r.dereference&&(o=nt.resolve(process.cwd(),o)),e?void tt.readlink(n,((t,i)=>t?"EINVAL"===t.code||"UNKNOWN"===t.code?tt.symlink(o,n,u):u(t):(r.dereference&&(i=nt.resolve(process.cwd(),i)),it.isSrcSubdir(o,i)?u(new Error(`Cannot copy '${o}' to a subdirectory of itself, '${i}'.`)):e.isDirectory()&&it.isSrcSubdir(i,o)?u(new Error(`Cannot overwrite '${i}' with '${o}'.`)):function(e,t,n){tt.unlink(t,(r=>r?n(r):tt.symlink(e,t,n)))}(o,n,u)))):tt.symlink(o,n,u))))}(e,t,n,r,u):i.isSocket()?u(new Error(`Cannot copy a socket file: ${t}`)):i.isFIFO()?u(new Error(`Cannot copy a FIFO pipe: ${t}`)):u(new Error(`Unknown file: ${t}`))))}function lt(e,t,n,r,u){tt.copyFile(t,n,(o=>o?u(o):r.preserveTimestamps?function(e,t,n,r){if(function(e){return 0==(128&e)}(e))return function(e,t,n){return dt(e,128|t,n)}(n,e,(u=>u?r(u):ft(e,t,n,r)));return ft(e,t,n,r)}(e.mode,t,n,u):dt(n,e.mode,u)))}function ft(e,t,n,r){!function(e,t,n){tt.stat(e,((e,r)=>e?n(e):ot(t,r.atime,r.mtime,n)))}(t,n,(t=>t?r(t):dt(n,e,r)))}function dt(e,t,n){return tt.chmod(e,t,n)}function Dt(e,t,n,r){tt.readdir(e,((u,o)=>u?r(u):pt(o,e,t,n,r)))}function pt(e,t,n,r,u){const o=e.pop();return o?function(e,t,n,r,u,o){const i=nt.join(n,t),s=nt.join(r,t);it.checkPaths(i,s,"copy",u,((t,c)=>{if(t)return o(t);const{destStat:a}=c;!function(e,t,n,r,u){r.filter?ct(at,e,t,n,r,u):at(e,t,n,r,u)}(a,i,s,u,(t=>t?o(t):pt(e,n,r,u,o)))}))}(e,o,t,n,r,u):u()}var Et=function(e,t,n,r){"function"!=typeof n||r?"function"==typeof n&&(n={filter:n}):(r=n,n={}),r=r||function(){},(n=n||{}).clobber=!("clobber"in n)||!!n.clobber,n.overwrite="overwrite"in n?!!n.overwrite:n.clobber,n.preserveTimestamps&&"ia32"===process.arch&&console.warn("fs-extra: Using the preserveTimestamps option in 32-bit node is not recommended;\n\n see https://github.com/jprichardson/node-fs-extra/issues/269"),it.checkPaths(e,t,"copy",n,((u,o)=>{if(u)return r(u);const{srcStat:i,destStat:s}=o;it.checkParentPaths(e,i,t,"copy",(u=>u?r(u):n.filter?ct(st,s,e,t,n,r):st(s,e,t,n,r)))}))};const mt=we,ht=p.default,yt=$e.mkdirsSync,Ct=We,Ft=et;function gt(e,t,n,r){const u=(r.dereference?mt.statSync:mt.lstatSync)(t);if(u.isDirectory())return function(e,t,n,r,u){return t?St(n,r,u):function(e,t,n,r){return mt.mkdirSync(n),St(t,n,r),vt(n,e)}(e.mode,n,r,u)}(u,e,t,n,r);if(u.isFile()||u.isCharacterDevice()||u.isBlockDevice())return function(e,t,n,r,u){return t?function(e,t,n,r){if(r.overwrite)return mt.unlinkSync(n),At(e,t,n,r);if(r.errorOnExist)throw new Error(`'${n}' already exists`)}(e,n,r,u):At(e,n,r,u)}(u,e,t,n,r);if(u.isSymbolicLink())return function(e,t,n,r){let u=mt.readlinkSync(t);r.dereference&&(u=ht.resolve(process.cwd(),u));if(e){let e;try{e=mt.readlinkSync(n)}catch(e){if("EINVAL"===e.code||"UNKNOWN"===e.code)return mt.symlinkSync(u,n);throw e}if(r.dereference&&(e=ht.resolve(process.cwd(),e)),Ft.isSrcSubdir(u,e))throw new Error(`Cannot copy '${u}' to a subdirectory of itself, '${e}'.`);if(mt.statSync(n).isDirectory()&&Ft.isSrcSubdir(e,u))throw new Error(`Cannot overwrite '${e}' with '${u}'.`);return function(e,t){return mt.unlinkSync(t),mt.symlinkSync(e,t)}(u,n)}return mt.symlinkSync(u,n)}(e,t,n,r);if(u.isSocket())throw new Error(`Cannot copy a socket file: ${t}`);if(u.isFIFO())throw new Error(`Cannot copy a FIFO pipe: ${t}`);throw new Error(`Unknown file: ${t}`)}function At(e,t,n,r){return mt.copyFileSync(t,n),r.preserveTimestamps&&function(e,t,n){(function(e){return 0==(128&e)})(e)&&function(e,t){vt(e,128|t)}(n,e);(function(e,t){const n=mt.statSync(e);Ct(t,n.atime,n.mtime)})(t,n)}(e.mode,t,n),vt(n,e.mode)}function vt(e,t){return mt.chmodSync(e,t)}function St(e,t,n){mt.readdirSync(e).forEach((r=>function(e,t,n,r){const u=ht.join(t,e),o=ht.join(n,e),{destStat:i}=Ft.checkPathsSync(u,o,"copy",r);return function(e,t,n,r){if(!r.filter||r.filter(t,n))return gt(e,t,n,r)}(i,u,o,r)}(r,e,t,n)))}var wt=function(e,t,n){"function"==typeof n&&(n={filter:n}),(n=n||{}).clobber=!("clobber"in n)||!!n.clobber,n.overwrite="overwrite"in n?!!n.overwrite:n.clobber,n.preserveTimestamps&&"ia32"===process.arch&&console.warn("fs-extra: Using the preserveTimestamps option in 32-bit node is not recommended;\n\n see https://github.com/jprichardson/node-fs-extra/issues/269");const{srcStat:r,destStat:u}=Ft.checkPathsSync(e,t,"copy",n);return Ft.checkParentPathsSync(e,r,t,"copy"),function(e,t,n,r){if(r.filter&&!r.filter(t,n))return;const u=ht.dirname(n);mt.existsSync(u)||yt(u);return gt(e,t,n,r)}(u,e,t,n)};var Ot={copy:(0,re.fromCallback)(Et),copySync:wt};const bt=we,_t=p.default,Bt=g.default,Pt="win32"===process.platform;function kt(e){["unlink","chmod","stat","lstat","rmdir","readdir"].forEach((t=>{e[t]=e[t]||bt[t],e[t+="Sync"]=e[t]||bt[t]})),e.maxBusyTries=e.maxBusyTries||3}function xt(e,t,n){let r=0;"function"==typeof t&&(n=t,t={}),Bt(e,"rimraf: missing path"),Bt.strictEqual(typeof e,"string","rimraf: path should be a string"),Bt.strictEqual(typeof n,"function","rimraf: callback function required"),Bt(t,"rimraf: invalid options argument provided"),Bt.strictEqual(typeof t,"object","rimraf: options should be object"),kt(t),Nt(e,t,(function u(o){if(o){if(("EBUSY"===o.code||"ENOTEMPTY"===o.code||"EPERM"===o.code)&&rNt(e,t,u)),100*r)}"ENOENT"===o.code&&(o=null)}n(o)}))}function Nt(e,t,n){Bt(e),Bt(t),Bt("function"==typeof n),t.lstat(e,((r,u)=>r&&"ENOENT"===r.code?n(null):r&&"EPERM"===r.code&&Pt?It(e,t,r,n):u&&u.isDirectory()?Rt(e,t,r,n):void t.unlink(e,(r=>{if(r){if("ENOENT"===r.code)return n(null);if("EPERM"===r.code)return Pt?It(e,t,r,n):Rt(e,t,r,n);if("EISDIR"===r.code)return Rt(e,t,r,n)}return n(r)}))))}function It(e,t,n,r){Bt(e),Bt(t),Bt("function"==typeof r),t.chmod(e,438,(u=>{u?r("ENOENT"===u.code?null:n):t.stat(e,((u,o)=>{u?r("ENOENT"===u.code?null:n):o.isDirectory()?Rt(e,t,n,r):t.unlink(e,r)}))}))}function Tt(e,t,n){let r;Bt(e),Bt(t);try{t.chmodSync(e,438)}catch(e){if("ENOENT"===e.code)return;throw n}try{r=t.statSync(e)}catch(e){if("ENOENT"===e.code)return;throw n}r.isDirectory()?Lt(e,t,n):t.unlinkSync(e)}function Rt(e,t,n,r){Bt(e),Bt(t),Bt("function"==typeof r),t.rmdir(e,(u=>{!u||"ENOTEMPTY"!==u.code&&"EEXIST"!==u.code&&"EPERM"!==u.code?u&&"ENOTDIR"===u.code?r(n):r(u):function(e,t,n){Bt(e),Bt(t),Bt("function"==typeof n),t.readdir(e,((r,u)=>{if(r)return n(r);let o,i=u.length;if(0===i)return t.rmdir(e,n);u.forEach((r=>{xt(_t.join(e,r),t,(r=>{if(!o)return r?n(o=r):void(0==--i&&t.rmdir(e,n))}))}))}))}(e,t,r)}))}function Mt(e,t){let n;kt(t=t||{}),Bt(e,"rimraf: missing path"),Bt.strictEqual(typeof e,"string","rimraf: path should be a string"),Bt(t,"rimraf: missing options"),Bt.strictEqual(typeof t,"object","rimraf: options should be object");try{n=t.lstatSync(e)}catch(n){if("ENOENT"===n.code)return;"EPERM"===n.code&&Pt&&Tt(e,t,n)}try{n&&n.isDirectory()?Lt(e,t,null):t.unlinkSync(e)}catch(n){if("ENOENT"===n.code)return;if("EPERM"===n.code)return Pt?Tt(e,t,n):Lt(e,t,n);if("EISDIR"!==n.code)throw n;Lt(e,t,n)}}function Lt(e,t,n){Bt(e),Bt(t);try{t.rmdirSync(e)}catch(r){if("ENOTDIR"===r.code)throw n;if("ENOTEMPTY"===r.code||"EEXIST"===r.code||"EPERM"===r.code)!function(e,t){if(Bt(e),Bt(t),t.readdirSync(e).forEach((n=>Mt(_t.join(e,n),t))),!Pt){return t.rmdirSync(e,t)}{const n=Date.now();do{try{return t.rmdirSync(e,t)}catch{}}while(Date.now()-n<500)}}(e,t);else if("ENOENT"!==r.code)throw r}}var jt=xt;xt.sync=Mt;const $t=we,Ht=re.fromCallback,Jt=jt;var Gt={remove:Ht((function(e,t){if($t.rm)return $t.rm(e,{recursive:!0,force:!0},t);Jt(e,t)})),removeSync:function(e){if($t.rmSync)return $t.rmSync(e,{recursive:!0,force:!0});Jt.sync(e)}};const Vt=re.fromPromise,Ut=ne,Wt=p.default,zt=$e,Kt=Gt,qt=Vt((async function(e){let t;try{t=await Ut.readdir(e)}catch{return zt.mkdirs(e)}return Promise.all(t.map((t=>Kt.remove(Wt.join(e,t)))))}));function Yt(e){let t;try{t=Ut.readdirSync(e)}catch{return zt.mkdirsSync(e)}t.forEach((t=>{t=Wt.join(e,t),Kt.removeSync(t)}))}var Xt={emptyDirSync:Yt,emptydirSync:Yt,emptyDir:qt,emptydir:qt};const Zt=re.fromCallback,Qt=p.default,en=we,tn=$e;var nn={createFile:Zt((function(e,t){function n(){en.writeFile(e,"",(e=>{if(e)return t(e);t()}))}en.stat(e,((r,u)=>{if(!r&&u.isFile())return t();const o=Qt.dirname(e);en.stat(o,((e,r)=>{if(e)return"ENOENT"===e.code?tn.mkdirs(o,(e=>{if(e)return t(e);n()})):t(e);r.isDirectory()?n():en.readdir(o,(e=>{if(e)return t(e)}))}))}))})),createFileSync:function(e){let t;try{t=en.statSync(e)}catch{}if(t&&t.isFile())return;const n=Qt.dirname(e);try{en.statSync(n).isDirectory()||en.readdirSync(n)}catch(e){if(!e||"ENOENT"!==e.code)throw e;tn.mkdirsSync(n)}en.writeFileSync(e,"")}};const rn=re.fromCallback,un=p.default,on=we,sn=$e,cn=Ge.pathExists,{areIdentical:an}=et;var ln={createLink:rn((function(e,t,n){function r(e,t){on.link(e,t,(e=>{if(e)return n(e);n(null)}))}on.lstat(t,((u,o)=>{on.lstat(e,((u,i)=>{if(u)return u.message=u.message.replace("lstat","ensureLink"),n(u);if(o&&an(i,o))return n(null);const s=un.dirname(t);cn(s,((u,o)=>u?n(u):o?r(e,t):void sn.mkdirs(s,(u=>{if(u)return n(u);r(e,t)}))))}))}))})),createLinkSync:function(e,t){let n;try{n=on.lstatSync(t)}catch{}try{const t=on.lstatSync(e);if(n&&an(t,n))return}catch(e){throw e.message=e.message.replace("lstat","ensureLink"),e}const r=un.dirname(t);return on.existsSync(r)||sn.mkdirsSync(r),on.linkSync(e,t)}};const fn=p.default,dn=we,Dn=Ge.pathExists;var pn={symlinkPaths:function(e,t,n){if(fn.isAbsolute(e))return dn.lstat(e,(t=>t?(t.message=t.message.replace("lstat","ensureSymlink"),n(t)):n(null,{toCwd:e,toDst:e})));{const r=fn.dirname(t),u=fn.join(r,e);return Dn(u,((t,o)=>t?n(t):o?n(null,{toCwd:u,toDst:e}):dn.lstat(e,(t=>t?(t.message=t.message.replace("lstat","ensureSymlink"),n(t)):n(null,{toCwd:e,toDst:fn.relative(r,e)})))))}},symlinkPathsSync:function(e,t){let n;if(fn.isAbsolute(e)){if(n=dn.existsSync(e),!n)throw new Error("absolute srcpath does not exist");return{toCwd:e,toDst:e}}{const r=fn.dirname(t),u=fn.join(r,e);if(n=dn.existsSync(u),n)return{toCwd:u,toDst:e};if(n=dn.existsSync(e),!n)throw new Error("relative srcpath does not exist");return{toCwd:e,toDst:fn.relative(r,e)}}}};const En=we;var mn={symlinkType:function(e,t,n){if(n="function"==typeof t?t:n,t="function"!=typeof t&&t)return n(null,t);En.lstat(e,((e,r)=>{if(e)return n(null,"file");t=r&&r.isDirectory()?"dir":"file",n(null,t)}))},symlinkTypeSync:function(e,t){let n;if(t)return t;try{n=En.lstatSync(e)}catch{return"file"}return n&&n.isDirectory()?"dir":"file"}};const hn=re.fromCallback,yn=p.default,Cn=ne,Fn=$e.mkdirs,gn=$e.mkdirsSync,An=pn.symlinkPaths,vn=pn.symlinkPathsSync,Sn=mn.symlinkType,wn=mn.symlinkTypeSync,On=Ge.pathExists,{areIdentical:bn}=et;function _n(e,t,n,r){An(e,t,((u,o)=>{if(u)return r(u);e=o.toDst,Sn(o.toCwd,n,((n,u)=>{if(n)return r(n);const o=yn.dirname(t);On(o,((n,i)=>n?r(n):i?Cn.symlink(e,t,u,r):void Fn(o,(n=>{if(n)return r(n);Cn.symlink(e,t,u,r)}))))}))}))}var Bn={createSymlink:hn((function(e,t,n,r){r="function"==typeof n?n:r,n="function"!=typeof n&&n,Cn.lstat(t,((u,o)=>{!u&&o.isSymbolicLink()?Promise.all([Cn.stat(e),Cn.stat(t)]).then((([u,o])=>{if(bn(u,o))return r(null);_n(e,t,n,r)})):_n(e,t,n,r)}))})),createSymlinkSync:function(e,t,n){let r;try{r=Cn.lstatSync(t)}catch{}if(r&&r.isSymbolicLink()){const n=Cn.statSync(e),r=Cn.statSync(t);if(bn(n,r))return}const u=vn(e,t);e=u.toDst,n=wn(u.toCwd,n);const o=yn.dirname(t);return Cn.existsSync(o)||gn(o),Cn.symlinkSync(e,t,n)}};const{createFile:Pn,createFileSync:kn}=nn,{createLink:xn,createLinkSync:Nn}=ln,{createSymlink:In,createSymlinkSync:Tn}=Bn;var Rn={createFile:Pn,createFileSync:kn,ensureFile:Pn,ensureFileSync:kn,createLink:xn,createLinkSync:Nn,ensureLink:xn,ensureLinkSync:Nn,createSymlink:In,createSymlinkSync:Tn,ensureSymlink:In,ensureSymlinkSync:Tn};var Mn={stringify:function(e,{EOL:t="\n",finalEOL:n=!0,replacer:r=null,spaces:u}={}){const o=n?t:"";return JSON.stringify(e,r,u).replace(/\n/g,t)+o},stripBom:function(e){return Buffer.isBuffer(e)&&(e=e.toString("utf8")),e.replace(/^\uFEFF/,"")}};let Ln;try{Ln=we}catch(e){Ln=D.default}const jn=re,{stringify:$n,stripBom:Hn}=Mn;const Jn=jn.fromPromise((async function(e,t={}){"string"==typeof t&&(t={encoding:t});const n=t.fs||Ln,r=!("throws"in t)||t.throws;let u,o=await jn.fromCallback(n.readFile)(e,t);o=Hn(o);try{u=JSON.parse(o,t?t.reviver:null)}catch(t){if(r)throw t.message=`${e}: ${t.message}`,t;return null}return u}));const Gn=jn.fromPromise((async function(e,t,n={}){const r=n.fs||Ln,u=$n(t,n);await jn.fromCallback(r.writeFile)(e,u,n)}));const Vn={readFile:Jn,readFileSync:function(e,t={}){"string"==typeof t&&(t={encoding:t});const n=t.fs||Ln,r=!("throws"in t)||t.throws;try{let r=n.readFileSync(e,t);return r=Hn(r),JSON.parse(r,t.reviver)}catch(t){if(r)throw t.message=`${e}: ${t.message}`,t;return null}},writeFile:Gn,writeFileSync:function(e,t,n={}){const r=n.fs||Ln,u=$n(t,n);return r.writeFileSync(e,u,n)}};var Un={readJson:Vn.readFile,readJsonSync:Vn.readFileSync,writeJson:Vn.writeFile,writeJsonSync:Vn.writeFileSync};const Wn=re.fromCallback,zn=we,Kn=p.default,qn=$e,Yn=Ge.pathExists;var Xn={outputFile:Wn((function(e,t,n,r){"function"==typeof n&&(r=n,n="utf8");const u=Kn.dirname(e);Yn(u,((o,i)=>o?r(o):i?zn.writeFile(e,t,n,r):void qn.mkdirs(u,(u=>{if(u)return r(u);zn.writeFile(e,t,n,r)}))))})),outputFileSync:function(e,...t){const n=Kn.dirname(e);if(zn.existsSync(n))return zn.writeFileSync(e,...t);qn.mkdirsSync(n),zn.writeFileSync(e,...t)}};const{stringify:Zn}=Mn,{outputFile:Qn}=Xn;var er=async function(e,t,n={}){const r=Zn(t,n);await Qn(e,r,n)};const{stringify:tr}=Mn,{outputFileSync:nr}=Xn;var rr=function(e,t,n){const r=tr(t,n);nr(e,r,n)};const ur=re.fromPromise,or=Un;or.outputJson=ur(er),or.outputJsonSync=rr,or.outputJSON=or.outputJson,or.outputJSONSync=or.outputJsonSync,or.writeJSON=or.writeJson,or.writeJSONSync=or.writeJsonSync,or.readJSON=or.readJson,or.readJSONSync=or.readJsonSync;var ir=or;const sr=we,cr=p.default,ar=Ot.copy,lr=Gt.remove,fr=$e.mkdirp,dr=Ge.pathExists,Dr=et;function pr(e,t,n,r,u){return r?Er(e,t,n,u):n?lr(t,(r=>r?u(r):Er(e,t,n,u))):void dr(t,((r,o)=>r?u(r):o?u(new Error("dest already exists.")):Er(e,t,n,u)))}function Er(e,t,n,r){sr.rename(e,t,(u=>u?"EXDEV"!==u.code?r(u):function(e,t,n,r){const u={overwrite:n,errorOnExist:!0};ar(e,t,u,(t=>t?r(t):lr(e,r)))}(e,t,n,r):r()))}var mr=function(e,t,n,r){"function"==typeof n&&(r=n,n={});const u=n.overwrite||n.clobber||!1;Dr.checkPaths(e,t,"move",n,((n,o)=>{if(n)return r(n);const{srcStat:i,isChangingCase:s=!1}=o;Dr.checkParentPaths(e,i,t,"move",(n=>n?r(n):function(e){const t=cr.dirname(e);return cr.parse(t).root===t}(t)?pr(e,t,u,s,r):void fr(cr.dirname(t),(n=>n?r(n):pr(e,t,u,s,r)))))}))};const hr=we,yr=p.default,Cr=Ot.copySync,Fr=Gt.removeSync,gr=$e.mkdirpSync,Ar=et;function vr(e,t,n){try{hr.renameSync(e,t)}catch(r){if("EXDEV"!==r.code)throw r;return function(e,t,n){const r={overwrite:n,errorOnExist:!0};return Cr(e,t,r),Fr(e)}(e,t,n)}}var Sr=function(e,t,n){const r=(n=n||{}).overwrite||n.clobber||!1,{srcStat:u,isChangingCase:o=!1}=Ar.checkPathsSync(e,t,"move",n);return Ar.checkParentPathsSync(e,u,t,"move"),function(e){const t=yr.dirname(e);return yr.parse(t).root===t}(t)||gr(yr.dirname(t)),function(e,t,n,r){if(r)return vr(e,t,n);if(n)return Fr(t),vr(e,t,n);if(hr.existsSync(t))throw new Error("dest already exists.");return vr(e,t,n)}(e,t,r,o)};var wr,Or,br,_r,Br,Pr={move:(0,re.fromCallback)(mr),moveSync:Sr},kr={...ne,...Ot,...Xt,...Rn,...ir,...$e,...Pr,...Xn,...Ge,...Gt},xr={},Nr={exports:{}},Ir={exports:{}};function Tr(){if(Or)return wr;Or=1;var e=1e3,t=60*e,n=60*t,r=24*n,u=7*r,o=365.25*r;function i(e,t,n,r){var u=t>=1.5*n;return Math.round(e/n)+" "+r+(u?"s":"")}return wr=function(s,c){c=c||{};var a=typeof s;if("string"===a&&s.length>0)return function(i){if((i=String(i)).length>100)return;var s=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(i);if(!s)return;var c=parseFloat(s[1]);switch((s[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return c*o;case"weeks":case"week":case"w":return c*u;case"days":case"day":case"d":return c*r;case"hours":case"hour":case"hrs":case"hr":case"h":return c*n;case"minutes":case"minute":case"mins":case"min":case"m":return c*t;case"seconds":case"second":case"secs":case"sec":case"s":return c*e;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return c;default:return}}(s);if("number"===a&&isFinite(s))return c.long?function(u){var o=Math.abs(u);if(o>=r)return i(u,o,r,"day");if(o>=n)return i(u,o,n,"hour");if(o>=t)return i(u,o,t,"minute");if(o>=e)return i(u,o,e,"second");return u+" ms"}(s):function(u){var o=Math.abs(u);if(o>=r)return Math.round(u/r)+"d";if(o>=n)return Math.round(u/n)+"h";if(o>=t)return Math.round(u/t)+"m";if(o>=e)return Math.round(u/e)+"s";return u+"ms"}(s);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(s))}}function Rr(){if(_r)return br;return _r=1,br=function(e){function t(e){let r,u,o,i=null;function s(...e){if(!s.enabled)return;const n=s,u=Number(new Date),o=u-(r||u);n.diff=o,n.prev=r,n.curr=u,r=u,e[0]=t.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let i=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,((r,u)=>{if("%%"===r)return"%";i++;const o=t.formatters[u];if("function"==typeof o){const t=e[i];r=o.call(n,t),e.splice(i,1),i--}return r})),t.formatArgs.call(n,e);(n.log||t.log).apply(n,e)}return s.namespace=e,s.useColors=t.useColors(),s.color=t.selectColor(e),s.extend=n,s.destroy=t.destroy,Object.defineProperty(s,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==i?i:(u!==t.namespaces&&(u=t.namespaces,o=t.enabled(e)),o),set:e=>{i=e}}),"function"==typeof t.init&&t.init(s),s}function n(e,n){const r=t(this.namespace+(void 0===n?":":n)+e);return r.log=this.log,r}function r(e){return e.toString().substring(2,e.toString().length-2).replace(/\.\*\?$/,"*")}return t.debug=t,t.default=t,t.coerce=function(e){if(e instanceof Error)return e.stack||e.message;return e},t.disable=function(){const e=[...t.names.map(r),...t.skips.map(r).map((e=>"-"+e))].join(",");return t.enable(""),e},t.enable=function(e){let n;t.save(e),t.namespaces=e,t.names=[],t.skips=[];const r=("string"==typeof e?e:"").split(/[\s,]+/),u=r.length;for(n=0;n{t[n]=e[n]})),t.names=[],t.skips=[],t.formatters={},t.selectColor=function(e){let n=0;for(let t=0;t{const n=e.startsWith("-")?"":1===e.length?"-":"--",r=t.indexOf(n+e),u=t.indexOf("--");return-1!==r&&(-1===u||r{}),"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."),t.colors=[6,2,3,4,5,1];try{const e=function(){if($r)return jr;$r=1;const e=E.default,t=A.default,n=Vr(),{env:r}=process;let u;function o(e){return 0!==e&&{level:e,hasBasic:!0,has256:e>=2,has16m:e>=3}}function i(t,o){if(0===u)return 0;if(n("color=16m")||n("color=full")||n("color=truecolor"))return 3;if(n("color=256"))return 2;if(t&&!o&&void 0===u)return 0;const i=u||0;if("dumb"===r.TERM)return i;if("win32"===process.platform){const t=e.release().split(".");return Number(t[0])>=10&&Number(t[2])>=10586?Number(t[2])>=14931?3:2:1}if("CI"in r)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI","GITHUB_ACTIONS","BUILDKITE"].some((e=>e in r))||"codeship"===r.CI_NAME?1:i;if("TEAMCITY_VERSION"in r)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(r.TEAMCITY_VERSION)?1:0;if("truecolor"===r.COLORTERM)return 3;if("TERM_PROGRAM"in r){const e=parseInt((r.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(r.TERM_PROGRAM){case"iTerm.app":return e>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(r.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(r.TERM)||"COLORTERM"in r?1:i}return n("no-color")||n("no-colors")||n("color=false")||n("color=never")?u=0:(n("color")||n("colors")||n("color=true")||n("color=always"))&&(u=1),"FORCE_COLOR"in r&&(u="true"===r.FORCE_COLOR?1:"false"===r.FORCE_COLOR?0:0===r.FORCE_COLOR.length?1:Math.min(parseInt(r.FORCE_COLOR,10),3)),jr={supportsColor:function(e){return o(i(e,e&&e.isTTY))},stdout:o(i(!0,t.isatty(1))),stderr:o(i(!0,t.isatty(2)))}}();e&&(e.stderr||e).level>=2&&(t.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221])}catch(e){}t.inspectOpts=Object.keys(process.env).filter((e=>/^debug_/i.test(e))).reduce(((e,t)=>{const n=t.substring(6).toLowerCase().replace(/_([a-z])/g,((e,t)=>t.toUpperCase()));let r=process.env[t];return r=!!/^(yes|on|true|enabled)$/i.test(r)||!/^(no|off|false|disabled)$/i.test(r)&&("null"===r?null:Number(r)),e[n]=r,e}),{}),e.exports=Rr()(t);const{formatters:u}=e.exports;u.o=function(e){return this.inspectOpts.colors=this.useColors,r.inspect(e,this.inspectOpts).split("\n").map((e=>e.trim())).join(" ")},u.O=function(e){return this.inspectOpts.colors=this.useColors,r.inspect(e,this.inspectOpts)}}(Gr,Gr.exports)),Gr.exports}Jr=Nr,"undefined"==typeof process||"renderer"===process.type||!0===process.browser||process.__nwjs?Jr.exports=(Br||(Br=1,function(e,t){t.formatArgs=function(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const n="color: "+this.color;t.splice(1,0,n,"color: inherit");let r=0,u=0;t[0].replace(/%[a-zA-Z%]/g,(e=>{"%%"!==e&&(r++,"%c"===e&&(u=r))})),t.splice(u,0,n)},t.save=function(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch(e){}},t.load=function(){let e;try{e=t.storage.getItem("debug")}catch(e){}return!e&&"undefined"!=typeof process&&"env"in process&&(e=process.env.DEBUG),e},t.useColors=function(){return!("undefined"==typeof window||!window.process||"renderer"!==window.process.type&&!window.process.__nwjs)||("undefined"==typeof navigator||!navigator.userAgent||!navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))&&("undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))},t.storage=function(){try{return localStorage}catch(e){}}(),t.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],t.log=console.debug||console.log||(()=>{}),e.exports=Rr()(t);const{formatters:n}=e.exports;n.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}}(Ir,Ir.exports)),Ir.exports):Jr.exports=Ur();var Wr=function(e){return(e=e||{}).circles?function(e){var t=[],n=[];return e.proto?function e(u){if("object"!=typeof u||null===u)return u;if(u instanceof Date)return new Date(u);if(Array.isArray(u))return r(u,e);if(u instanceof Map)return new Map(r(Array.from(u),e));if(u instanceof Set)return new Set(r(Array.from(u),e));var o={};for(var i in t.push(u),n.push(o),u){var s=u[i];if("object"!=typeof s||null===s)o[i]=s;else if(s instanceof Date)o[i]=new Date(s);else if(s instanceof Map)o[i]=new Map(r(Array.from(s),e));else if(s instanceof Set)o[i]=new Set(r(Array.from(s),e));else if(ArrayBuffer.isView(s))o[i]=zr(s);else{var c=t.indexOf(s);o[i]=-1!==c?n[c]:e(s)}}return t.pop(),n.pop(),o}:function e(u){if("object"!=typeof u||null===u)return u;if(u instanceof Date)return new Date(u);if(Array.isArray(u))return r(u,e);if(u instanceof Map)return new Map(r(Array.from(u),e));if(u instanceof Set)return new Set(r(Array.from(u),e));var o={};for(var i in t.push(u),n.push(o),u)if(!1!==Object.hasOwnProperty.call(u,i)){var s=u[i];if("object"!=typeof s||null===s)o[i]=s;else if(s instanceof Date)o[i]=new Date(s);else if(s instanceof Map)o[i]=new Map(r(Array.from(s),e));else if(s instanceof Set)o[i]=new Set(r(Array.from(s),e));else if(ArrayBuffer.isView(s))o[i]=zr(s);else{var c=t.indexOf(s);o[i]=-1!==c?n[c]:e(s)}}return t.pop(),n.pop(),o};function r(e,r){for(var u=Object.keys(e),o=new Array(u.length),i=0;i!e,Qr=e=>e&&"object"==typeof e&&!Array.isArray(e),eu=(e,t,n)=>{(Array.isArray(t)?t:[t]).forEach((t=>{if(t)throw new Error(`Problem with log4js configuration: (${Kr.inspect(e,{depth:5})}) - ${n}`)}))};var tu={configure:e=>{qr("New configuration to be validated: ",e),eu(e,Zr(Qr(e)),"must be an object."),qr(`Calling pre-processing listeners (${Yr.length})`),Yr.forEach((t=>t(e))),qr("Configuration pre-processing finished."),qr(`Calling configuration listeners (${Xr.length})`),Xr.forEach((t=>t(e))),qr("Configuration finished.")},addListener:e=>{Xr.push(e),qr(`Added listener, now ${Xr.length} listeners`)},addPreProcessingListener:e=>{Yr.push(e),qr(`Added pre-processing listener, now ${Yr.length} listeners`)},throwExceptionIf:eu,anObject:Qr,anInteger:e=>e&&"number"==typeof e&&Number.isInteger(e),validIdentifier:e=>/^[A-Za-z][A-Za-z0-9_]*$/g.test(e),not:Zr},nu={exports:{}};!function(e){function t(e,t){for(var n=e.toString();n.length-1?s:c,l=n(u.getHours()),f=n(u.getMinutes()),d=n(u.getSeconds()),D=t(u.getMilliseconds(),3),p=function(e){var t=Math.abs(e),n=String(Math.floor(t/60)),r=String(t%60);return n=("0"+n).slice(-2),r=("0"+r).slice(-2),0===e?"Z":(e<0?"+":"-")+n+":"+r}(u.getTimezoneOffset());return r.replace(/dd/g,o).replace(/MM/g,i).replace(/y{1,4}/g,a).replace(/hh/g,l).replace(/mm/g,f).replace(/ss/g,d).replace(/SSS/g,D).replace(/O/g,p)}function u(e,t,n,r){e["set"+(r?"":"UTC")+t](n)}e.exports=r,e.exports.asString=r,e.exports.parse=function(t,n,r){if(!t)throw new Error("pattern must be supplied");return function(t,n,r){var o=t.indexOf("O")<0,i=!1,s=[{pattern:/y{1,4}/,regexp:"\\d{1,4}",fn:function(e,t){u(e,"FullYear",t,o)}},{pattern:/MM/,regexp:"\\d{1,2}",fn:function(e,t){u(e,"Month",t-1,o),e.getMonth()!==t-1&&(i=!0)}},{pattern:/dd/,regexp:"\\d{1,2}",fn:function(e,t){i&&u(e,"Month",e.getMonth()-1,o),u(e,"Date",t,o)}},{pattern:/hh/,regexp:"\\d{1,2}",fn:function(e,t){u(e,"Hours",t,o)}},{pattern:/mm/,regexp:"\\d\\d",fn:function(e,t){u(e,"Minutes",t,o)}},{pattern:/ss/,regexp:"\\d\\d",fn:function(e,t){u(e,"Seconds",t,o)}},{pattern:/SSS/,regexp:"\\d\\d\\d",fn:function(e,t){u(e,"Milliseconds",t,o)}},{pattern:/O/,regexp:"[+-]\\d{1,2}:?\\d{2}?|Z",fn:function(e,t){t="Z"===t?0:t.replace(":","");var n=Math.abs(t),r=(t>0?-1:1)*(n%100+60*Math.floor(n/100));e.setUTCMinutes(e.getUTCMinutes()+r)}}],c=s.reduce((function(e,t){return t.pattern.test(e.regexp)?(t.index=e.regexp.match(t.pattern).index,e.regexp=e.regexp.replace(t.pattern,"("+t.regexp+")")):t.index=-1,e}),{regexp:t,index:[]}),a=s.filter((function(e){return e.index>-1}));a.sort((function(e,t){return e.index-t.index}));var l=new RegExp(c.regexp).exec(n);if(l){var f=r||e.exports.now();return a.forEach((function(e,t){e.fn(f,l[t+1])})),f}throw new Error("String '"+n+"' could not be parsed as '"+t+"'")}(t,n,r)},e.exports.now=function(){return new Date},e.exports.ISO8601_FORMAT="yyyy-MM-ddThh:mm:ss.SSS",e.exports.ISO8601_WITH_TZ_OFFSET_FORMAT="yyyy-MM-ddThh:mm:ss.SSSO",e.exports.DATETIME_FORMAT="dd MM yyyy hh:mm:ss.SSS",e.exports.ABSOLUTETIME_FORMAT="hh:mm:ss.SSS"}(nu);const ru=nu.exports,uu=E.default,ou=F.default,iu=p.default,su={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[90,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[91,39],yellow:[33,39]};function cu(e){return e?`[${su[e][0]}m`:""}function au(e){return e?`[${su[e][1]}m`:""}function lu(e,t){return n=ou.format("[%s] [%s] %s - ",ru.asString(e.startTime),e.level.toString(),e.categoryName),cu(r=t)+n+au(r);var n,r}function fu(e){return lu(e)+ou.format(...e.data)}function du(e){return lu(e,e.level.colour)+ou.format(...e.data)}function Du(e){return ou.format(...e.data)}function pu(e){return e.data[0]}function Eu(e,t){const n=/%(-?[0-9]+)?(\.?-?[0-9]+)?([[\]cdhmnprzxXyflos%])(\{([^}]+)\})?|([^%]+)/;function r(e){return e&&e.pid?e.pid.toString():process.pid.toString()}e=e||"%r %p %c - %m%n";const u={c:function(e,t){let n=e.categoryName;if(t){const e=parseInt(t,10),r=n.split(".");ee&&(n=r.slice(-e).join(iu.sep))}return n},l:function(e){return e.lineNumber?`${e.lineNumber}`:""},o:function(e){return e.columnNumber?`${e.columnNumber}`:""},s:function(e){return e.callStack||""}};function o(e,t,n){return u[e](t,n)}function i(e,t,n){let r=e;return r=function(e,t){let n;return e?(n=parseInt(e.substr(1),10),n>0?t.slice(0,n):t.slice(n)):t}(t,r),r=function(e,t){let n;if(e)if("-"===e.charAt(0))for(n=parseInt(e.substr(1),10);t.lengthDu,basic:()=>fu,colored:()=>du,coloured:()=>du,pattern:e=>Eu(e&&e.pattern,e&&e.tokens),dummy:()=>pu};var hu={basicLayout:fu,messagePassThroughLayout:Du,patternLayout:Eu,colouredLayout:du,coloredLayout:du,dummyLayout:pu,addLayout(e,t){mu[e]=t},layout:(e,t)=>mu[e]&&mu[e](t)};const yu=tu,Cu=["white","grey","black","blue","cyan","green","magenta","red","yellow"];class Fu{constructor(e,t,n){this.level=e,this.levelStr=t,this.colour=n}toString(){return this.levelStr}static getLevel(e,t){return e?e instanceof Fu?e:(e instanceof Object&&e.levelStr&&(e=e.levelStr),Fu[e.toString().toUpperCase()]||t):t}static addLevels(e){if(e){Object.keys(e).forEach((t=>{const n=t.toUpperCase();Fu[n]=new Fu(e[t].value,n,e[t].colour);const r=Fu.levels.findIndex((e=>e.levelStr===n));r>-1?Fu.levels[r]=Fu[n]:Fu.levels.push(Fu[n])})),Fu.levels.sort(((e,t)=>e.level-t.level))}}isLessThanOrEqualTo(e){return"string"==typeof e&&(e=Fu.getLevel(e)),this.level<=e.level}isGreaterThanOrEqualTo(e){return"string"==typeof e&&(e=Fu.getLevel(e)),this.level>=e.level}isEqualTo(e){return"string"==typeof e&&(e=Fu.getLevel(e)),this.level===e.level}}Fu.levels=[],Fu.addLevels({ALL:{value:Number.MIN_VALUE,colour:"grey"},TRACE:{value:5e3,colour:"blue"},DEBUG:{value:1e4,colour:"cyan"},INFO:{value:2e4,colour:"green"},WARN:{value:3e4,colour:"yellow"},ERROR:{value:4e4,colour:"red"},FATAL:{value:5e4,colour:"magenta"},MARK:{value:9007199254740992,colour:"grey"},OFF:{value:Number.MAX_VALUE,colour:"grey"}}),yu.addListener((e=>{const t=e.levels;if(t){yu.throwExceptionIf(e,yu.not(yu.anObject(t)),"levels must be an object");Object.keys(t).forEach((n=>{yu.throwExceptionIf(e,yu.not(yu.validIdentifier(n)),`level name "${n}" is not a valid identifier (must start with a letter, only contain A-Z,a-z,0-9,_)`),yu.throwExceptionIf(e,yu.not(yu.anObject(t[n])),`level "${n}" must be an object`),yu.throwExceptionIf(e,yu.not(t[n].value),`level "${n}" must have a 'value' property`),yu.throwExceptionIf(e,yu.not(yu.anInteger(t[n].value)),`level "${n}".value must have an integer value`),yu.throwExceptionIf(e,yu.not(t[n].colour),`level "${n}" must have a 'colour' property`),yu.throwExceptionIf(e,yu.not(Cu.indexOf(t[n].colour)>-1),`level "${n}".colour must be one of ${Cu.join(", ")}`)}))}})),yu.addListener((e=>{Fu.addLevels(e.levels)}));var gu=Fu,Au={exports:{}},vu={};/*! (c) 2020 Andrea Giammarchi */ +const{parse:Su,stringify:wu}=JSON,{keys:Ou}=Object,bu=String,_u="string",Bu={},Pu="object",ku=(e,t)=>t,xu=e=>e instanceof bu?bu(e):e,Nu=(e,t)=>typeof t===_u?new bu(t):t,Iu=(e,t,n,r)=>{const u=[];for(let o=Ou(n),{length:i}=o,s=0;s{const r=bu(t.push(n)-1);return e.set(n,r),r},Ru=(e,t)=>{const n=Su(e,Nu).map(xu),r=n[0],u=t||ku,o=typeof r===Pu&&r?Iu(n,new Set,r,u):r;return u.call({"":o},"",o)};vu.parse=Ru;const Mu=(e,t,n)=>{const r=t&&typeof t===Pu?(e,n)=>""===e||-1Su(Mu(e));vu.fromJSON=e=>Ru(wu(e));const Lu=vu,ju=gu;class $u{constructor(e,t,n,r,u){this.startTime=new Date,this.categoryName=e,this.data=n,this.level=t,this.context=Object.assign({},r),this.pid=process.pid,u&&(this.functionName=u.functionName,this.fileName=u.fileName,this.lineNumber=u.lineNumber,this.columnNumber=u.columnNumber,this.callStack=u.callStack)}serialise(){const e=this.data.map((e=>(e&&e.message&&e.stack&&(e=Object.assign({message:e.message,stack:e.stack},e)),e)));return this.data=e,Lu.stringify(this)}static deserialise(e){let t;try{const n=Lu.parse(e);n.data=n.data.map((e=>{if(e&&e.message&&e.stack){const t=new Error(e);Object.keys(e).forEach((n=>{t[n]=e[n]})),e=t}return e})),t=new $u(n.categoryName,ju.getLevel(n.level.levelStr),n.data,n.context),t.startTime=new Date(n.startTime),t.pid=n.pid,t.cluster=n.cluster}catch(n){t=new $u("log4js",ju.ERROR,["Unable to parse log:",e,"because: ",n])}return t}}var Hu=$u;const Ju=Nr.exports("log4js:clustering"),Gu=Hu,Vu=tu;let Uu=!1,Wu=null;try{Wu=require("cluster")}catch(e){Ju("cluster module not present"),Uu=!0}const zu=[];let Ku=!1,qu="NODE_APP_INSTANCE";const Yu=()=>Ku&&"0"===process.env[qu],Xu=()=>Uu||Wu.isMaster||Yu(),Zu=e=>{zu.forEach((t=>t(e)))},Qu=(e,t)=>{if(Ju("cluster message received from worker ",e,": ",t),e.topic&&e.data&&(t=e,e=void 0),t&&t.topic&&"log4js:message"===t.topic){Ju("received message: ",t.data);const e=Gu.deserialise(t.data);Zu(e)}};Uu||Vu.addListener((e=>{zu.length=0,({pm2:Ku,disableClustering:Uu,pm2InstanceVar:qu="NODE_APP_INSTANCE"}=e),Ju(`clustering disabled ? ${Uu}`),Ju(`cluster.isMaster ? ${Wu&&Wu.isMaster}`),Ju(`pm2 enabled ? ${Ku}`),Ju(`pm2InstanceVar = ${qu}`),Ju(`process.env[${qu}] = ${process.env[qu]}`),Ku&&process.removeListener("message",Qu),Wu&&Wu.removeListener&&Wu.removeListener("message",Qu),Uu||e.disableClustering?Ju("Not listening for cluster messages, because clustering disabled."):Yu()?(Ju("listening for PM2 broadcast messages"),process.on("message",Qu)):Wu.isMaster?(Ju("listening for cluster messages"),Wu.on("message",Qu)):Ju("not listening for messages, because we are not a master process")}));var eo={onlyOnMaster:(e,t)=>Xu()?e():t,isMaster:Xu,send:e=>{Xu()?Zu(e):(Ku||(e.cluster={workerId:Wu.worker.id,worker:process.pid}),process.send({topic:"log4js:message",data:e.serialise()}))},onMessage:e=>{zu.push(e)}},to={};function no(e){if("number"==typeof e&&Number.isInteger(e))return e;const t={K:1024,M:1048576,G:1073741824},n=Object.keys(t),r=e.substr(e.length-1).toLocaleUpperCase(),u=e.substring(0,e.length-1).trim();if(n.indexOf(r)<0||!Number.isInteger(Number(u)))throw Error(`maxLogSize: "${e}" is invalid`);return u*t[r]}function ro(e){return function(e,t){const n=Object.assign({},t);return Object.keys(e).forEach((r=>{n[r]&&(n[r]=e[r](t[r]))})),n}({maxLogSize:no},e)}const uo={file:ro,fileSync:ro};to.modifyConfig=e=>uo[e.type]?uo[e.type](e):e;var oo={};const io=console.log.bind(console);oo.configure=function(e,t){let n=t.colouredLayout;return e.layout&&(n=t.layout(e.layout.type,e.layout)),function(e,t){return n=>{io(e(n,t))}}(n,e.timezoneOffset)};var so={};so.configure=function(e,t){let n=t.colouredLayout;return e.layout&&(n=t.layout(e.layout.type,e.layout)),function(e,t){return n=>{process.stdout.write(`${e(n,t)}\n`)}}(n,e.timezoneOffset)};var co={};co.configure=function(e,t){let n=t.colouredLayout;return e.layout&&(n=t.layout(e.layout.type,e.layout)),function(e,t){return n=>{process.stderr.write(`${e(n,t)}\n`)}}(n,e.timezoneOffset)};var ao={};ao.configure=function(e,t,n,r){const u=n(e.appender);return function(e,t,n,r){const u=r.getLevel(e),o=r.getLevel(t,r.FATAL);return e=>{const t=e.level;t.isGreaterThanOrEqualTo(u)&&t.isLessThanOrEqualTo(o)&&n(e)}}(e.level,e.maxLevel,u,r)};var lo={};const fo=Nr.exports("log4js:categoryFilter");lo.configure=function(e,t,n){const r=n(e.appender);return function(e,t){return"string"==typeof e&&(e=[e]),n=>{fo(`Checking ${n.categoryName} against ${e}`),-1===e.indexOf(n.categoryName)&&(fo("Not excluded, sending to appender"),t(n))}}(e.exclude,r)};var Do={};const po=Nr.exports("log4js:noLogFilter");Do.configure=function(e,t,n){const r=n(e.appender);return function(e,t){return n=>{po(`Checking data: ${n.data} against filters: ${e}`),"string"==typeof e&&(e=[e]),e=e.filter((e=>null!=e&&""!==e));const r=new RegExp(e.join("|"),"i");(0===e.length||n.data.findIndex((e=>r.test(e)))<0)&&(po("Not excluded, sending to appender"),t(n))}}(e.exclude,r)};var Eo={},mo={exports:{}},ho={},yo={fromCallback:function(e){return Object.defineProperty((function(){if("function"!=typeof arguments[arguments.length-1])return new Promise(((t,n)=>{arguments[arguments.length]=(e,r)=>{if(e)return n(e);t(r)},arguments.length++,e.apply(this,arguments)}));e.apply(this,arguments)}),"name",{value:e.name})},fromPromise:function(e){return Object.defineProperty((function(){const t=arguments[arguments.length-1];if("function"!=typeof t)return e.apply(this,arguments);e.apply(this,arguments).then((e=>t(null,e)),t)}),"name",{value:e.name})}};!function(e){const t=yo.fromCallback,n=we,r=["access","appendFile","chmod","chown","close","copyFile","fchmod","fchown","fdatasync","fstat","fsync","ftruncate","futimes","lchown","lchmod","link","lstat","mkdir","mkdtemp","open","readFile","readdir","readlink","realpath","rename","rmdir","stat","symlink","truncate","unlink","utimes","writeFile"].filter((e=>"function"==typeof n[e]));Object.keys(n).forEach((t=>{"promises"!==t&&(e[t]=n[t])})),r.forEach((r=>{e[r]=t(n[r])})),e.exists=function(e,t){return"function"==typeof t?n.exists(e,t):new Promise((t=>n.exists(e,t)))},e.read=function(e,t,r,u,o,i){return"function"==typeof i?n.read(e,t,r,u,o,i):new Promise(((i,s)=>{n.read(e,t,r,u,o,((e,t,n)=>{if(e)return s(e);i({bytesRead:t,buffer:n})}))}))},e.write=function(e,t,...r){return"function"==typeof r[r.length-1]?n.write(e,t,...r):new Promise(((u,o)=>{n.write(e,t,...r,((e,t,n)=>{if(e)return o(e);u({bytesWritten:t,buffer:n})}))}))},"function"==typeof n.realpath.native&&(e.realpath.native=t(n.realpath.native))}(ho);const Co=p.default;function Fo(e){return(e=Co.normalize(Co.resolve(e)).split(Co.sep)).length>0?e[0]:null}const go=/[<>:"|?*]/;var Ao=function(e){const t=Fo(e);return e=e.replace(t,""),go.test(e)};const vo=we,So=p.default,wo=Ao,Oo=parseInt("0777",8);var bo=function e(t,n,r,u){if("function"==typeof n?(r=n,n={}):n&&"object"==typeof n||(n={mode:n}),"win32"===process.platform&&wo(t)){const e=new Error(t+" contains invalid WIN32 path characters.");return e.code="EINVAL",r(e)}let o=n.mode;const i=n.fs||vo;void 0===o&&(o=Oo&~process.umask()),u||(u=null),r=r||function(){},t=So.resolve(t),i.mkdir(t,o,(o=>{if(!o)return r(null,u=u||t);if("ENOENT"===o.code){if(So.dirname(t)===t)return r(o);e(So.dirname(t),n,((u,o)=>{u?r(u,o):e(t,n,r,o)}))}else i.stat(t,((e,t)=>{e||!t.isDirectory()?r(o,u):r(null,u)}))}))};const _o=we,Bo=p.default,Po=Ao,ko=parseInt("0777",8);var xo=function e(t,n,r){n&&"object"==typeof n||(n={mode:n});let u=n.mode;const o=n.fs||_o;if("win32"===process.platform&&Po(t)){const e=new Error(t+" contains invalid WIN32 path characters.");throw e.code="EINVAL",e}void 0===u&&(u=ko&~process.umask()),r||(r=null),t=Bo.resolve(t);try{o.mkdirSync(t,u),r=r||t}catch(u){if("ENOENT"===u.code){if(Bo.dirname(t)===t)throw u;r=e(Bo.dirname(t),n,r),e(t,n,r)}else{let e;try{e=o.statSync(t)}catch(e){throw u}if(!e.isDirectory())throw u}}return r};const No=(0,yo.fromCallback)(bo);var Io={mkdirs:No,mkdirsSync:xo,mkdirp:No,mkdirpSync:xo,ensureDir:No,ensureDirSync:xo};const To=we;E.default,p.default;var Ro=function(e,t,n,r){To.open(e,"r+",((e,u)=>{if(e)return r(e);To.futimes(u,t,n,(e=>{To.close(u,(t=>{r&&r(e||t)}))}))}))},Mo=function(e,t,n){const r=To.openSync(e,"r+");return To.futimesSync(r,t,n),To.closeSync(r)};const Lo=we,jo=p.default,$o=10,Ho=5,Jo=0,Go=process.versions.node.split("."),Vo=Number.parseInt(Go[0],10),Uo=Number.parseInt(Go[1],10),Wo=Number.parseInt(Go[2],10);function zo(){if(Vo>$o)return!0;if(Vo===$o){if(Uo>Ho)return!0;if(Uo===Ho&&Wo>=Jo)return!0}return!1}function Ko(e,t){const n=jo.resolve(e).split(jo.sep).filter((e=>e)),r=jo.resolve(t).split(jo.sep).filter((e=>e));return n.reduce(((e,t,n)=>e&&r[n]===t),!0)}function qo(e,t,n){return`Cannot ${n} '${e}' to a subdirectory of itself, '${t}'.`}var Yo,Xo,Zo={checkPaths:function(e,t,n,r){!function(e,t,n){zo()?Lo.stat(e,{bigint:!0},((e,r)=>{if(e)return n(e);Lo.stat(t,{bigint:!0},((e,t)=>e?"ENOENT"===e.code?n(null,{srcStat:r,destStat:null}):n(e):n(null,{srcStat:r,destStat:t})))})):Lo.stat(e,((e,r)=>{if(e)return n(e);Lo.stat(t,((e,t)=>e?"ENOENT"===e.code?n(null,{srcStat:r,destStat:null}):n(e):n(null,{srcStat:r,destStat:t})))}))}(e,t,((u,o)=>{if(u)return r(u);const{srcStat:i,destStat:s}=o;return s&&s.ino&&s.dev&&s.ino===i.ino&&s.dev===i.dev?r(new Error("Source and destination must not be the same.")):i.isDirectory()&&Ko(e,t)?r(new Error(qo(e,t,n))):r(null,{srcStat:i,destStat:s})}))},checkPathsSync:function(e,t,n){const{srcStat:r,destStat:u}=function(e,t){let n,r;n=zo()?Lo.statSync(e,{bigint:!0}):Lo.statSync(e);try{r=zo()?Lo.statSync(t,{bigint:!0}):Lo.statSync(t)}catch(e){if("ENOENT"===e.code)return{srcStat:n,destStat:null};throw e}return{srcStat:n,destStat:r}}(e,t);if(u&&u.ino&&u.dev&&u.ino===r.ino&&u.dev===r.dev)throw new Error("Source and destination must not be the same.");if(r.isDirectory()&&Ko(e,t))throw new Error(qo(e,t,n));return{srcStat:r,destStat:u}},checkParentPaths:function e(t,n,r,u,o){const i=jo.resolve(jo.dirname(t)),s=jo.resolve(jo.dirname(r));if(s===i||s===jo.parse(s).root)return o();zo()?Lo.stat(s,{bigint:!0},((i,c)=>i?"ENOENT"===i.code?o():o(i):c.ino&&c.dev&&c.ino===n.ino&&c.dev===n.dev?o(new Error(qo(t,r,u))):e(t,n,s,u,o))):Lo.stat(s,((i,c)=>i?"ENOENT"===i.code?o():o(i):c.ino&&c.dev&&c.ino===n.ino&&c.dev===n.dev?o(new Error(qo(t,r,u))):e(t,n,s,u,o)))},checkParentPathsSync:function e(t,n,r,u){const o=jo.resolve(jo.dirname(t)),i=jo.resolve(jo.dirname(r));if(i===o||i===jo.parse(i).root)return;let s;try{s=zo()?Lo.statSync(i,{bigint:!0}):Lo.statSync(i)}catch(e){if("ENOENT"===e.code)return;throw e}if(s.ino&&s.dev&&s.ino===n.ino&&s.dev===n.dev)throw new Error(qo(t,r,u));return e(t,n,i,u)},isSrcSubdir:Ko};const Qo=we,ei=p.default,ti=Io.mkdirsSync,ni=Mo,ri=Zo;function ui(e,t,n,r){if(!r.filter||r.filter(t,n))return function(e,t,n,r){const u=r.dereference?Qo.statSync:Qo.lstatSync,o=u(t);if(o.isDirectory())return function(e,t,n,r,u){if(!t)return function(e,t,n,r){return Qo.mkdirSync(n),ii(t,n,r),Qo.chmodSync(n,e.mode)}(e,n,r,u);if(t&&!t.isDirectory())throw new Error(`Cannot overwrite non-directory '${r}' with directory '${n}'.`);return ii(n,r,u)}(o,e,t,n,r);if(o.isFile()||o.isCharacterDevice()||o.isBlockDevice())return function(e,t,n,r,u){return t?function(e,t,n,r){if(r.overwrite)return Qo.unlinkSync(n),oi(e,t,n,r);if(r.errorOnExist)throw new Error(`'${n}' already exists`)}(e,n,r,u):oi(e,n,r,u)}(o,e,t,n,r);if(o.isSymbolicLink())return function(e,t,n,r){let u=Qo.readlinkSync(t);r.dereference&&(u=ei.resolve(process.cwd(),u));if(e){let e;try{e=Qo.readlinkSync(n)}catch(e){if("EINVAL"===e.code||"UNKNOWN"===e.code)return Qo.symlinkSync(u,n);throw e}if(r.dereference&&(e=ei.resolve(process.cwd(),e)),ri.isSrcSubdir(u,e))throw new Error(`Cannot copy '${u}' to a subdirectory of itself, '${e}'.`);if(Qo.statSync(n).isDirectory()&&ri.isSrcSubdir(e,u))throw new Error(`Cannot overwrite '${e}' with '${u}'.`);return function(e,t){return Qo.unlinkSync(t),Qo.symlinkSync(e,t)}(u,n)}return Qo.symlinkSync(u,n)}(e,t,n,r)}(e,t,n,r)}function oi(e,t,n,r){return"function"==typeof Qo.copyFileSync?(Qo.copyFileSync(t,n),Qo.chmodSync(n,e.mode),r.preserveTimestamps?ni(n,e.atime,e.mtime):void 0):function(e,t,n,r){const u=65536,o=(Xo?Yo:(Xo=1,Yo=function(e){if("function"==typeof Buffer.allocUnsafe)try{return Buffer.allocUnsafe(e)}catch(t){return new Buffer(e)}return new Buffer(e)}))(u),i=Qo.openSync(t,"r"),s=Qo.openSync(n,"w",e.mode);let c=0;for(;cfunction(e,t,n,r){const u=ei.join(t,e),o=ei.join(n,e),{destStat:i}=ri.checkPathsSync(u,o,"copy");return ui(i,u,o,r)}(r,e,t,n)))}var si=function(e,t,n){"function"==typeof n&&(n={filter:n}),(n=n||{}).clobber=!("clobber"in n)||!!n.clobber,n.overwrite="overwrite"in n?!!n.overwrite:n.clobber,n.preserveTimestamps&&"ia32"===process.arch&&console.warn("fs-extra: Using the preserveTimestamps option in 32-bit node is not recommended;\n\n see https://github.com/jprichardson/node-fs-extra/issues/269");const{srcStat:r,destStat:u}=ri.checkPathsSync(e,t,"copy");return ri.checkParentPathsSync(e,r,t,"copy"),function(e,t,n,r){if(r.filter&&!r.filter(t,n))return;const u=ei.dirname(n);Qo.existsSync(u)||ti(u);return ui(e,t,n,r)}(u,e,t,n)},ci={copySync:si};const ai=yo.fromPromise,li=ho;var fi={pathExists:ai((function(e){return li.access(e).then((()=>!0)).catch((()=>!1))})),pathExistsSync:li.existsSync};const di=we,Di=p.default,pi=Io.mkdirs,Ei=fi.pathExists,mi=Ro,hi=Zo;function yi(e,t,n,r,u){const o=Di.dirname(n);Ei(o,((i,s)=>i?u(i):s?Fi(e,t,n,r,u):void pi(o,(o=>o?u(o):Fi(e,t,n,r,u)))))}function Ci(e,t,n,r,u,o){Promise.resolve(u.filter(n,r)).then((i=>i?e(t,n,r,u,o):o()),(e=>o(e)))}function Fi(e,t,n,r,u){return r.filter?Ci(gi,e,t,n,r,u):gi(e,t,n,r,u)}function gi(e,t,n,r,u){(r.dereference?di.stat:di.lstat)(t,((o,i)=>o?u(o):i.isDirectory()?function(e,t,n,r,u,o){if(!t)return function(e,t,n,r,u){di.mkdir(n,(o=>{if(o)return u(o);Si(t,n,r,(t=>t?u(t):di.chmod(n,e.mode,u)))}))}(e,n,r,u,o);if(t&&!t.isDirectory())return o(new Error(`Cannot overwrite non-directory '${r}' with directory '${n}'.`));return Si(n,r,u,o)}(i,e,t,n,r,u):i.isFile()||i.isCharacterDevice()||i.isBlockDevice()?function(e,t,n,r,u,o){return t?function(e,t,n,r,u){if(!r.overwrite)return r.errorOnExist?u(new Error(`'${n}' already exists`)):u();di.unlink(n,(o=>o?u(o):Ai(e,t,n,r,u)))}(e,n,r,u,o):Ai(e,n,r,u,o)}(i,e,t,n,r,u):i.isSymbolicLink()?function(e,t,n,r,u){di.readlink(t,((t,o)=>t?u(t):(r.dereference&&(o=Di.resolve(process.cwd(),o)),e?void di.readlink(n,((t,i)=>t?"EINVAL"===t.code||"UNKNOWN"===t.code?di.symlink(o,n,u):u(t):(r.dereference&&(i=Di.resolve(process.cwd(),i)),hi.isSrcSubdir(o,i)?u(new Error(`Cannot copy '${o}' to a subdirectory of itself, '${i}'.`)):e.isDirectory()&&hi.isSrcSubdir(i,o)?u(new Error(`Cannot overwrite '${i}' with '${o}'.`)):function(e,t,n){di.unlink(t,(r=>r?n(r):di.symlink(e,t,n)))}(o,n,u)))):di.symlink(o,n,u))))}(e,t,n,r,u):void 0))}function Ai(e,t,n,r,u){return"function"==typeof di.copyFile?di.copyFile(t,n,(t=>t?u(t):vi(e,n,r,u))):function(e,t,n,r,u){const o=di.createReadStream(t);o.on("error",(e=>u(e))).once("open",(()=>{const t=di.createWriteStream(n,{mode:e.mode});t.on("error",(e=>u(e))).on("open",(()=>o.pipe(t))).once("close",(()=>vi(e,n,r,u)))}))}(e,t,n,r,u)}function vi(e,t,n,r){di.chmod(t,e.mode,(u=>u?r(u):n.preserveTimestamps?mi(t,e.atime,e.mtime,r):r()))}function Si(e,t,n,r){di.readdir(e,((u,o)=>u?r(u):wi(o,e,t,n,r)))}function wi(e,t,n,r,u){const o=e.pop();return o?function(e,t,n,r,u,o){const i=Di.join(n,t),s=Di.join(r,t);hi.checkPaths(i,s,"copy",((t,c)=>{if(t)return o(t);const{destStat:a}=c;Fi(a,i,s,u,(t=>t?o(t):wi(e,n,r,u,o)))}))}(e,o,t,n,r,u):u()}var Oi=function(e,t,n,r){"function"!=typeof n||r?"function"==typeof n&&(n={filter:n}):(r=n,n={}),r=r||function(){},(n=n||{}).clobber=!("clobber"in n)||!!n.clobber,n.overwrite="overwrite"in n?!!n.overwrite:n.clobber,n.preserveTimestamps&&"ia32"===process.arch&&console.warn("fs-extra: Using the preserveTimestamps option in 32-bit node is not recommended;\n\n see https://github.com/jprichardson/node-fs-extra/issues/269"),hi.checkPaths(e,t,"copy",((u,o)=>{if(u)return r(u);const{srcStat:i,destStat:s}=o;hi.checkParentPaths(e,i,t,"copy",(u=>u?r(u):n.filter?Ci(yi,s,e,t,n,r):yi(s,e,t,n,r)))}))};var bi={copy:(0,yo.fromCallback)(Oi)};const _i=we,Bi=p.default,Pi=g.default,ki="win32"===process.platform;function xi(e){["unlink","chmod","stat","lstat","rmdir","readdir"].forEach((t=>{e[t]=e[t]||_i[t],e[t+="Sync"]=e[t]||_i[t]})),e.maxBusyTries=e.maxBusyTries||3}function Ni(e,t,n){let r=0;"function"==typeof t&&(n=t,t={}),Pi(e,"rimraf: missing path"),Pi.strictEqual(typeof e,"string","rimraf: path should be a string"),Pi.strictEqual(typeof n,"function","rimraf: callback function required"),Pi(t,"rimraf: invalid options argument provided"),Pi.strictEqual(typeof t,"object","rimraf: options should be object"),xi(t),Ii(e,t,(function u(o){if(o){if(("EBUSY"===o.code||"ENOTEMPTY"===o.code||"EPERM"===o.code)&&rIi(e,t,u)),100*r)}"ENOENT"===o.code&&(o=null)}n(o)}))}function Ii(e,t,n){Pi(e),Pi(t),Pi("function"==typeof n),t.lstat(e,((r,u)=>r&&"ENOENT"===r.code?n(null):r&&"EPERM"===r.code&&ki?Ti(e,t,r,n):u&&u.isDirectory()?Mi(e,t,r,n):void t.unlink(e,(r=>{if(r){if("ENOENT"===r.code)return n(null);if("EPERM"===r.code)return ki?Ti(e,t,r,n):Mi(e,t,r,n);if("EISDIR"===r.code)return Mi(e,t,r,n)}return n(r)}))))}function Ti(e,t,n,r){Pi(e),Pi(t),Pi("function"==typeof r),n&&Pi(n instanceof Error),t.chmod(e,438,(u=>{u?r("ENOENT"===u.code?null:n):t.stat(e,((u,o)=>{u?r("ENOENT"===u.code?null:n):o.isDirectory()?Mi(e,t,n,r):t.unlink(e,r)}))}))}function Ri(e,t,n){let r;Pi(e),Pi(t),n&&Pi(n instanceof Error);try{t.chmodSync(e,438)}catch(e){if("ENOENT"===e.code)return;throw n}try{r=t.statSync(e)}catch(e){if("ENOENT"===e.code)return;throw n}r.isDirectory()?ji(e,t,n):t.unlinkSync(e)}function Mi(e,t,n,r){Pi(e),Pi(t),n&&Pi(n instanceof Error),Pi("function"==typeof r),t.rmdir(e,(u=>{!u||"ENOTEMPTY"!==u.code&&"EEXIST"!==u.code&&"EPERM"!==u.code?u&&"ENOTDIR"===u.code?r(n):r(u):function(e,t,n){Pi(e),Pi(t),Pi("function"==typeof n),t.readdir(e,((r,u)=>{if(r)return n(r);let o,i=u.length;if(0===i)return t.rmdir(e,n);u.forEach((r=>{Ni(Bi.join(e,r),t,(r=>{if(!o)return r?n(o=r):void(0==--i&&t.rmdir(e,n))}))}))}))}(e,t,r)}))}function Li(e,t){let n;xi(t=t||{}),Pi(e,"rimraf: missing path"),Pi.strictEqual(typeof e,"string","rimraf: path should be a string"),Pi(t,"rimraf: missing options"),Pi.strictEqual(typeof t,"object","rimraf: options should be object");try{n=t.lstatSync(e)}catch(n){if("ENOENT"===n.code)return;"EPERM"===n.code&&ki&&Ri(e,t,n)}try{n&&n.isDirectory()?ji(e,t,null):t.unlinkSync(e)}catch(n){if("ENOENT"===n.code)return;if("EPERM"===n.code)return ki?Ri(e,t,n):ji(e,t,n);if("EISDIR"!==n.code)throw n;ji(e,t,n)}}function ji(e,t,n){Pi(e),Pi(t),n&&Pi(n instanceof Error);try{t.rmdirSync(e)}catch(r){if("ENOTDIR"===r.code)throw n;if("ENOTEMPTY"===r.code||"EEXIST"===r.code||"EPERM"===r.code)!function(e,t){if(Pi(e),Pi(t),t.readdirSync(e).forEach((n=>Li(Bi.join(e,n),t))),!ki){return t.rmdirSync(e,t)}{const n=Date.now();do{try{return t.rmdirSync(e,t)}catch(e){}}while(Date.now()-n<500)}}(e,t);else if("ENOENT"!==r.code)throw r}}var $i=Ni;Ni.sync=Li;const Hi=$i;var Ji={remove:(0,yo.fromCallback)(Hi),removeSync:Hi.sync};const Gi=yo.fromCallback,Vi=we,Ui=p.default,Wi=Io,zi=Ji,Ki=Gi((function(e,t){t=t||function(){},Vi.readdir(e,((n,r)=>{if(n)return Wi.mkdirs(e,t);r=r.map((t=>Ui.join(e,t))),function e(){const n=r.pop();if(!n)return t();zi.remove(n,(n=>{if(n)return t(n);e()}))}()}))}));function qi(e){let t;try{t=Vi.readdirSync(e)}catch(t){return Wi.mkdirsSync(e)}t.forEach((t=>{t=Ui.join(e,t),zi.removeSync(t)}))}var Yi={emptyDirSync:qi,emptydirSync:qi,emptyDir:Ki,emptydir:Ki};const Xi=yo.fromCallback,Zi=p.default,Qi=we,es=Io,ts=fi.pathExists;var ns={createFile:Xi((function(e,t){function n(){Qi.writeFile(e,"",(e=>{if(e)return t(e);t()}))}Qi.stat(e,((r,u)=>{if(!r&&u.isFile())return t();const o=Zi.dirname(e);ts(o,((e,r)=>e?t(e):r?n():void es.mkdirs(o,(e=>{if(e)return t(e);n()}))))}))})),createFileSync:function(e){let t;try{t=Qi.statSync(e)}catch(e){}if(t&&t.isFile())return;const n=Zi.dirname(e);Qi.existsSync(n)||es.mkdirsSync(n),Qi.writeFileSync(e,"")}};const rs=yo.fromCallback,us=p.default,os=we,is=Io,ss=fi.pathExists;var cs={createLink:rs((function(e,t,n){function r(e,t){os.link(e,t,(e=>{if(e)return n(e);n(null)}))}ss(t,((u,o)=>u?n(u):o?n(null):void os.lstat(e,(u=>{if(u)return u.message=u.message.replace("lstat","ensureLink"),n(u);const o=us.dirname(t);ss(o,((u,i)=>u?n(u):i?r(e,t):void is.mkdirs(o,(u=>{if(u)return n(u);r(e,t)}))))}))))})),createLinkSync:function(e,t){if(os.existsSync(t))return;try{os.lstatSync(e)}catch(e){throw e.message=e.message.replace("lstat","ensureLink"),e}const n=us.dirname(t);return os.existsSync(n)||is.mkdirsSync(n),os.linkSync(e,t)}};const as=p.default,ls=we,fs=fi.pathExists;var ds={symlinkPaths:function(e,t,n){if(as.isAbsolute(e))return ls.lstat(e,(t=>t?(t.message=t.message.replace("lstat","ensureSymlink"),n(t)):n(null,{toCwd:e,toDst:e})));{const r=as.dirname(t),u=as.join(r,e);return fs(u,((t,o)=>t?n(t):o?n(null,{toCwd:u,toDst:e}):ls.lstat(e,(t=>t?(t.message=t.message.replace("lstat","ensureSymlink"),n(t)):n(null,{toCwd:e,toDst:as.relative(r,e)})))))}},symlinkPathsSync:function(e,t){let n;if(as.isAbsolute(e)){if(n=ls.existsSync(e),!n)throw new Error("absolute srcpath does not exist");return{toCwd:e,toDst:e}}{const r=as.dirname(t),u=as.join(r,e);if(n=ls.existsSync(u),n)return{toCwd:u,toDst:e};if(n=ls.existsSync(e),!n)throw new Error("relative srcpath does not exist");return{toCwd:e,toDst:as.relative(r,e)}}}};const Ds=we;var ps={symlinkType:function(e,t,n){if(n="function"==typeof t?t:n,t="function"!=typeof t&&t)return n(null,t);Ds.lstat(e,((e,r)=>{if(e)return n(null,"file");t=r&&r.isDirectory()?"dir":"file",n(null,t)}))},symlinkTypeSync:function(e,t){let n;if(t)return t;try{n=Ds.lstatSync(e)}catch(e){return"file"}return n&&n.isDirectory()?"dir":"file"}};const Es=yo.fromCallback,ms=p.default,hs=we,ys=Io.mkdirs,Cs=Io.mkdirsSync,Fs=ds.symlinkPaths,gs=ds.symlinkPathsSync,As=ps.symlinkType,vs=ps.symlinkTypeSync,Ss=fi.pathExists;var ws={createSymlink:Es((function(e,t,n,r){r="function"==typeof n?n:r,n="function"!=typeof n&&n,Ss(t,((u,o)=>u?r(u):o?r(null):void Fs(e,t,((u,o)=>{if(u)return r(u);e=o.toDst,As(o.toCwd,n,((n,u)=>{if(n)return r(n);const o=ms.dirname(t);Ss(o,((n,i)=>n?r(n):i?hs.symlink(e,t,u,r):void ys(o,(n=>{if(n)return r(n);hs.symlink(e,t,u,r)}))))}))}))))})),createSymlinkSync:function(e,t,n){if(hs.existsSync(t))return;const r=gs(e,t);e=r.toDst,n=vs(r.toCwd,n);const u=ms.dirname(t);return hs.existsSync(u)||Cs(u),hs.symlinkSync(e,t,n)}};var Os,bs={createFile:ns.createFile,createFileSync:ns.createFileSync,ensureFile:ns.createFile,ensureFileSync:ns.createFileSync,createLink:cs.createLink,createLinkSync:cs.createLinkSync,ensureLink:cs.createLink,ensureLinkSync:cs.createLinkSync,createSymlink:ws.createSymlink,createSymlinkSync:ws.createSymlinkSync,ensureSymlink:ws.createSymlink,ensureSymlinkSync:ws.createSymlinkSync};try{Os=we}catch(e){Os=D.default}function _s(e,t){var n,r="\n";return"object"==typeof t&&null!==t&&(t.spaces&&(n=t.spaces),t.EOL&&(r=t.EOL)),JSON.stringify(e,t?t.replacer:null,n).replace(/\n/g,r)+r}function Bs(e){return Buffer.isBuffer(e)&&(e=e.toString("utf8")),e=e.replace(/^\uFEFF/,"")}var Ps={readFile:function(e,t,n){null==n&&(n=t,t={}),"string"==typeof t&&(t={encoding:t});var r=(t=t||{}).fs||Os,u=!0;"throws"in t&&(u=t.throws),r.readFile(e,t,(function(r,o){if(r)return n(r);var i;o=Bs(o);try{i=JSON.parse(o,t?t.reviver:null)}catch(t){return u?(t.message=e+": "+t.message,n(t)):n(null,null)}n(null,i)}))},readFileSync:function(e,t){"string"==typeof(t=t||{})&&(t={encoding:t});var n=t.fs||Os,r=!0;"throws"in t&&(r=t.throws);try{var u=n.readFileSync(e,t);return u=Bs(u),JSON.parse(u,t.reviver)}catch(t){if(r)throw t.message=e+": "+t.message,t;return null}},writeFile:function(e,t,n,r){null==r&&(r=n,n={});var u=(n=n||{}).fs||Os,o="";try{o=_s(t,n)}catch(e){return void(r&&r(e,null))}u.writeFile(e,o,n,r)},writeFileSync:function(e,t,n){var r=(n=n||{}).fs||Os,u=_s(t,n);return r.writeFileSync(e,u,n)}},ks=Ps;const xs=yo.fromCallback,Ns=ks;var Is={readJson:xs(Ns.readFile),readJsonSync:Ns.readFileSync,writeJson:xs(Ns.writeFile),writeJsonSync:Ns.writeFileSync};const Ts=p.default,Rs=Io,Ms=fi.pathExists,Ls=Is;var js=function(e,t,n,r){"function"==typeof n&&(r=n,n={});const u=Ts.dirname(e);Ms(u,((o,i)=>o?r(o):i?Ls.writeJson(e,t,n,r):void Rs.mkdirs(u,(u=>{if(u)return r(u);Ls.writeJson(e,t,n,r)}))))};const $s=we,Hs=p.default,Js=Io,Gs=Is;var Vs=function(e,t,n){const r=Hs.dirname(e);$s.existsSync(r)||Js.mkdirsSync(r),Gs.writeJsonSync(e,t,n)};const Us=yo.fromCallback,Ws=Is;Ws.outputJson=Us(js),Ws.outputJsonSync=Vs,Ws.outputJSON=Ws.outputJson,Ws.outputJSONSync=Ws.outputJsonSync,Ws.writeJSON=Ws.writeJson,Ws.writeJSONSync=Ws.writeJsonSync,Ws.readJSON=Ws.readJson,Ws.readJSONSync=Ws.readJsonSync;var zs=Ws;const Ks=we,qs=p.default,Ys=ci.copySync,Xs=Ji.removeSync,Zs=Io.mkdirpSync,Qs=Zo;function ec(e,t,n){try{Ks.renameSync(e,t)}catch(r){if("EXDEV"!==r.code)throw r;return function(e,t,n){const r={overwrite:n,errorOnExist:!0};return Ys(e,t,r),Xs(e)}(e,t,n)}}var tc=function(e,t,n){const r=(n=n||{}).overwrite||n.clobber||!1,{srcStat:u}=Qs.checkPathsSync(e,t,"move");return Qs.checkParentPathsSync(e,u,t,"move"),Zs(qs.dirname(t)),function(e,t,n){if(n)return Xs(t),ec(e,t,n);if(Ks.existsSync(t))throw new Error("dest already exists.");return ec(e,t,n)}(e,t,r)},nc={moveSync:tc};const rc=we,uc=p.default,oc=bi.copy,ic=Ji.remove,sc=Io.mkdirp,cc=fi.pathExists,ac=Zo;function lc(e,t,n,r){rc.rename(e,t,(u=>u?"EXDEV"!==u.code?r(u):function(e,t,n,r){const u={overwrite:n,errorOnExist:!0};oc(e,t,u,(t=>t?r(t):ic(e,r)))}(e,t,n,r):r()))}var fc=function(e,t,n,r){"function"==typeof n&&(r=n,n={});const u=n.overwrite||n.clobber||!1;ac.checkPaths(e,t,"move",((n,o)=>{if(n)return r(n);const{srcStat:i}=o;ac.checkParentPaths(e,i,t,"move",(n=>{if(n)return r(n);sc(uc.dirname(t),(n=>n?r(n):function(e,t,n,r){if(n)return ic(t,(u=>u?r(u):lc(e,t,n,r)));cc(t,((u,o)=>u?r(u):o?r(new Error("dest already exists.")):lc(e,t,n,r)))}(e,t,u,r)))}))}))};var dc={move:(0,yo.fromCallback)(fc)};const Dc=yo.fromCallback,pc=we,Ec=p.default,mc=Io,hc=fi.pathExists;var yc={outputFile:Dc((function(e,t,n,r){"function"==typeof n&&(r=n,n="utf8");const u=Ec.dirname(e);hc(u,((o,i)=>o?r(o):i?pc.writeFile(e,t,n,r):void mc.mkdirs(u,(u=>{if(u)return r(u);pc.writeFile(e,t,n,r)}))))})),outputFileSync:function(e,...t){const n=Ec.dirname(e);if(pc.existsSync(n))return pc.writeFileSync(e,...t);mc.mkdirsSync(n),pc.writeFileSync(e,...t)}};!function(e){e.exports=Object.assign({},ho,ci,bi,Yi,bs,zs,Io,nc,dc,yc,fi,Ji);const t=D.default;Object.getOwnPropertyDescriptor(t,"promises")&&Object.defineProperty(e.exports,"promises",{get:()=>t.promises})}(mo);const Cc=Nr.exports("streamroller:fileNameFormatter"),Fc=p.default;const gc=Nr.exports("streamroller:fileNameParser"),Ac=nu.exports;const vc=Nr.exports("streamroller:moveAndMaybeCompressFile"),Sc=mo.exports,wc=v.default;var Oc=async(e,t,n)=>{if(n=function(e){const t={mode:parseInt("0600",8),compress:!1},n=Object.assign({},t,e);return vc(`_parseOption: moveAndMaybeCompressFile called with option=${JSON.stringify(n)}`),n}(n),e!==t){if(await Sc.pathExists(e))if(vc(`moveAndMaybeCompressFile: moving file from ${e} to ${t} ${n.compress?"with":"without"} compress`),n.compress)await new Promise(((r,u)=>{let o=!1;const i=Sc.createWriteStream(t,{mode:n.mode,flags:"wx"}).on("open",(()=>{o=!0;const t=Sc.createReadStream(e).on("open",(()=>{t.pipe(wc.createGzip()).pipe(i)})).on("error",(t=>{vc(`moveAndMaybeCompressFile: error reading ${e}`,t),i.destroy(t)}))})).on("finish",(()=>{vc(`moveAndMaybeCompressFile: finished compressing ${t}, deleting ${e}`),Sc.unlink(e).then(r).catch((t=>{vc(`moveAndMaybeCompressFile: error deleting ${e}, truncating instead`,t),Sc.truncate(e).then(r).catch((t=>{vc(`moveAndMaybeCompressFile: error truncating ${e}`,t),u(t)}))}))})).on("error",(e=>{o?(vc(`moveAndMaybeCompressFile: error writing ${t}, deleting`,e),Sc.unlink(t).then((()=>{u(e)})).catch((e=>{vc(`moveAndMaybeCompressFile: error deleting ${t}`,e),u(e)}))):(vc(`moveAndMaybeCompressFile: error creating ${t}`,e),u(e))}))})).catch((()=>{}));else{vc(`moveAndMaybeCompressFile: renaming ${e} to ${t}`);try{await Sc.move(e,t,{overwrite:!0})}catch(n){if(vc(`moveAndMaybeCompressFile: error renaming ${e} to ${t}`,n),"ENOENT"!==n.code){vc("moveAndMaybeCompressFile: trying copy+truncate instead");try{await Sc.copy(e,t,{overwrite:!0}),await Sc.truncate(e)}catch(e){vc("moveAndMaybeCompressFile: error copy+truncate",e)}}}}}else vc("moveAndMaybeCompressFile: source and target are the same, not doing anything")};const bc=Nr.exports("streamroller:RollingFileWriteStream"),_c=mo.exports,Bc=p.default,Pc=E.default,kc=()=>new Date,xc=nu.exports,{Writable:Nc}=C.default,Ic=({file:e,keepFileExt:t,needsIndex:n,alwaysIncludeDate:r,compress:u,fileNameSep:o})=>{let i=o||".";const s=Fc.join(e.dir,e.name),c=t=>t+e.ext,a=(e,t,r)=>!n&&r||!t?e:e+i+t,l=(e,t,n)=>(t>0||r)&&n?e+i+n:e,f=(e,t)=>t&&u?e+".gz":e,d=t?[l,a,c,f]:[c,l,a,f];return({date:e,index:t})=>(Cc(`_formatFileName: date=${e}, index=${t}`),d.reduce(((n,r)=>r(n,t,e)),s))},Tc=({file:e,keepFileExt:t,pattern:n,fileNameSep:r})=>{let u=r||".";const o="__NOT_MATCHING__";let i=[(e,t)=>e.endsWith(".gz")?(gc("it is gzipped"),t.isCompressed=!0,e.slice(0,-1*".gz".length)):e,t?t=>t.startsWith(e.name)&&t.endsWith(e.ext)?(gc("it starts and ends with the right things"),t.slice(e.name.length+1,-1*e.ext.length)):o:t=>t.startsWith(e.base)?(gc("it starts with the right things"),t.slice(e.base.length+1)):o,n?(e,t)=>{const r=e.split(u);let o=r[r.length-1];gc("items: ",r,", indexStr: ",o);let i=e;void 0!==o&&o.match(/^\d+$/)?(i=e.slice(0,-1*(o.length+1)),gc(`dateStr is ${i}`),n&&!i&&(i=o,o="0")):o="0";try{const r=Ac.parse(n,i,new Date(0,0));return Ac.asString(n,r)!==i?e:(t.index=parseInt(o,10),t.date=i,t.timestamp=r.getTime(),"")}catch(t){return gc(`Problem parsing ${i} as ${n}, error was: `,t),e}}:(e,t)=>e.match(/^\d+$/)?(gc("it has an index"),t.index=parseInt(e,10),""):e];return e=>{let t={filename:e,index:0,isCompressed:!1};return i.reduce(((e,n)=>n(e,t)),e)?null:t}},Rc=Oc;var Mc=class extends Nc{constructor(e,t){if(bc(`constructor: creating RollingFileWriteStream. path=${e}`),"string"!=typeof e||0===e.length)throw new Error(`Invalid filename: ${e}`);if(e.endsWith(Bc.sep))throw new Error(`Filename is a directory: ${e}`);0===e.indexOf(`~${Bc.sep}`)&&(e=e.replace("~",Pc.homedir())),super(t),this.options=this._parseOption(t),this.fileObject=Bc.parse(e),""===this.fileObject.dir&&(this.fileObject=Bc.parse(Bc.join(process.cwd(),e))),this.fileFormatter=Ic({file:this.fileObject,alwaysIncludeDate:this.options.alwaysIncludePattern,needsIndex:this.options.maxSize 0`)}else delete n.maxSize;if(n.numBackups||0===n.numBackups){if(n.numBackups<0)throw new Error(`options.numBackups (${n.numBackups}) should be >= 0`);if(n.numBackups>=Number.MAX_SAFE_INTEGER)throw new Error(`options.numBackups (${n.numBackups}) should be < Number.MAX_SAFE_INTEGER`);n.numToKeep=n.numBackups+1}else if(n.numToKeep<=0)throw new Error(`options.numToKeep (${n.numToKeep}) should be > 0`);return bc(`_parseOption: creating stream with option=${JSON.stringify(n)}`),n}_final(e){this.currentFileStream.end("",this.options.encoding,e)}_write(e,t,n){this._shouldRoll().then((()=>{bc(`_write: writing chunk. file=${this.currentFileStream.path} state=${JSON.stringify(this.state)} chunk=${e}`),this.currentFileStream.write(e,t,(t=>{this.state.currentSize+=e.length,n(t)}))}))}async _shouldRoll(){(this._dateChanged()||this._tooBig())&&(bc(`_shouldRoll: rolling because dateChanged? ${this._dateChanged()} or tooBig? ${this._tooBig()}`),await this._roll())}_dateChanged(){return this.state.currentDate&&this.state.currentDate!==xc(this.options.pattern,kc())}_tooBig(){return this.state.currentSize>=this.options.maxSize}_roll(){return bc("_roll: closing the current stream"),new Promise(((e,t)=>{this.currentFileStream.end("",this.options.encoding,(()=>{this._moveOldFiles().then(e).catch(t)}))}))}async _moveOldFiles(){const e=await this._getExistingFiles();for(let t=(this.state.currentDate?e.filter((e=>e.date===this.state.currentDate)):e).length;t>=0;t--){bc(`_moveOldFiles: i = ${t}`);const e=this.fileFormatter({date:this.state.currentDate,index:t}),n=this.fileFormatter({date:this.state.currentDate,index:t+1}),r={compress:this.options.compress&&0===t,mode:this.options.mode};await Rc(e,n,r)}this.state.currentSize=0,this.state.currentDate=this.state.currentDate?xc(this.options.pattern,kc()):null,bc(`_moveOldFiles: finished rolling files. state=${JSON.stringify(this.state)}`),this._renewWriteStream(),await new Promise(((e,t)=>{this.currentFileStream.write("","utf8",(()=>{this._clean().then(e).catch(t)}))}))}async _getExistingFiles(){const e=await _c.readdir(this.fileObject.dir).catch((()=>[]));bc(`_getExistingFiles: files=${e}`);const t=e.map((e=>this.fileNameParser(e))).filter((e=>e)),n=e=>(e.timestamp?e.timestamp:kc().getTime())-e.index;return t.sort(((e,t)=>n(e)-n(t))),t}_renewWriteStream(){const e=this.fileFormatter({date:this.state.currentDate,index:0}),t=e=>{try{return _c.mkdirSync(e,{recursive:!0})}catch(n){if("ENOENT"===n.code)return t(Bc.dirname(e)),t(e);if("EEXIST"!==n.code&&"EROFS"!==n.code)throw n;try{if(_c.statSync(e).isDirectory())return e;throw n}catch(e){throw n}}};t(this.fileObject.dir);const n={flags:this.options.flags,encoding:this.options.encoding,mode:this.options.mode};var r,u;_c.appendFileSync(e,"",(r={...n},u="flags",r["flag"]=r[u],delete r[u],r)),this.currentFileStream=_c.createWriteStream(e,n),this.currentFileStream.on("error",(e=>{this.emit("error",e)}))}async _clean(){const e=await this._getExistingFiles();if(bc(`_clean: numToKeep = ${this.options.numToKeep}, existingFiles = ${e.length}`),bc("_clean: existing files are: ",e),this._tooManyFiles(e.length)){const n=e.slice(0,e.length-this.options.numToKeep).map((e=>Bc.format({dir:this.fileObject.dir,base:e.filename})));await(t=n,bc(`deleteFiles: files to delete: ${t}`),Promise.all(t.map((e=>_c.unlink(e).catch((t=>{bc(`deleteFiles: error when unlinking ${e}, ignoring. Error was ${t}`)}))))))}var t}_tooManyFiles(e){return this.options.numToKeep>0&&e>this.options.numToKeep}};const Lc=Mc;var jc=class extends Lc{constructor(e,t,n,r){r||(r={}),t&&(r.maxSize=t),r.numBackups||0===r.numBackups||(n||0===n||(n=1),r.numBackups=n),super(e,r),this.backups=r.numBackups,this.size=this.options.maxSize}get theStream(){return this.currentFileStream}};const $c=Mc;var Hc={RollingFileWriteStream:Mc,RollingFileStream:jc,DateRollingFileStream:class extends $c{constructor(e,t,n){t&&"object"==typeof t&&(n=t,t=null),n||(n={}),t||(t="yyyy-MM-dd"),n.pattern=t,n.numBackups||0===n.numBackups?n.daysToKeep=n.numBackups:(n.daysToKeep||0===n.daysToKeep?process.emitWarning("options.daysToKeep is deprecated due to the confusion it causes when used together with file size rolling. Please use options.numBackups instead.","DeprecationWarning","streamroller-DEP0001"):n.daysToKeep=1,n.numBackups=n.daysToKeep),super(e,n),this.mode=this.options.mode}get theStream(){return this.currentFileStream}}};const Jc=Nr.exports("log4js:file"),Gc=p.default,Vc=Hc,Uc=E.default.EOL;let Wc=!1;const zc=new Set;function Kc(){zc.forEach((e=>{e.sighupHandler()}))}function qc(e,t,n,r){const u=new Vc.RollingFileStream(e,t,n,r);return u.on("error",(t=>{console.error("log4js.fileAppender - Writing to file %s, error happened ",e,t)})),u.on("drain",(()=>{process.emit("log4js:pause",!1)})),u}Eo.configure=function(e,t){let n=t.basicLayout;return e.layout&&(n=t.layout(e.layout.type,e.layout)),e.mode=e.mode||384,function(e,t,n,r,u,o){e=Gc.normalize(e),Jc("Creating file appender (",e,", ",n,", ",r=r||0===r?r:5,", ",u,", ",o,")");let i=qc(e,n,r,u);const s=function(e){if(i.writable){if(!0===u.removeColor){const t=/\x1b[[0-9;]*m/g;e.data=e.data.map((e=>"string"==typeof e?e.replace(t,""):e))}i.write(t(e,o)+Uc,"utf8")||process.emit("log4js:pause",!0)}};return s.reopen=function(){i.end((()=>{i=qc(e,n,r,u)}))},s.sighupHandler=function(){Jc("SIGHUP handler called."),s.reopen()},s.shutdown=function(e){zc.delete(s),0===zc.size&&Wc&&(process.removeListener("SIGHUP",Kc),Wc=!1),i.end("","utf-8",e)},zc.add(s),Wc||(process.on("SIGHUP",Kc),Wc=!0),s}(e.filename,n,e.maxLogSize,e.backups,e,e.timezoneOffset)};var Yc={};const Xc=Hc,Zc=E.default.EOL;function Qc(e,t,n,r,u){r.maxSize=r.maxLogSize;const o=function(e,t,n){const r=new Xc.DateRollingFileStream(e,t,n);return r.on("error",(t=>{console.error("log4js.dateFileAppender - Writing to file %s, error happened ",e,t)})),r.on("drain",(()=>{process.emit("log4js:pause",!1)})),r}(e,t,r),i=function(e){o.writable&&(o.write(n(e,u)+Zc,"utf8")||process.emit("log4js:pause",!0))};return i.shutdown=function(e){o.end("","utf-8",e)},i}Yc.configure=function(e,t){let n=t.basicLayout;return e.layout&&(n=t.layout(e.layout.type,e.layout)),e.alwaysIncludePattern||(e.alwaysIncludePattern=!1),e.mode=e.mode||384,Qc(e.filename,e.pattern,n,e,e.timezoneOffset)};var ea={};const ta=Nr.exports("log4js:fileSync"),na=p.default,ra=D.default,ua=E.default.EOL||"\n";function oa(e,t){if(ra.existsSync(e))return;const n=ra.openSync(e,t.flags,t.mode);ra.closeSync(n)}class ia{constructor(e,t,n,r){ta("In RollingFileStream"),function(){if(!e||!t||t<=0)throw new Error("You must specify a filename and file size")}(),this.filename=e,this.size=t,this.backups=n,this.options=r,this.currentSize=0,this.currentSize=function(e){let t=0;try{t=ra.statSync(e).size}catch(t){oa(e,r)}return t}(this.filename)}shouldRoll(){return ta("should roll with current size %d, and max size %d",this.currentSize,this.size),this.currentSize>=this.size}roll(e){const t=this,n=new RegExp(`^${na.basename(e)}`);function r(e){return n.test(e)}function u(t){return parseInt(t.substring(`${na.basename(e)}.`.length),10)||0}function o(e,t){return u(e)>u(t)?1:u(e) ${e}.${r+1}`),ra.renameSync(na.join(na.dirname(e),n),`${e}.${r+1}`)}}ta("Rolling, rolling, rolling"),ta("Renaming the old files"),ra.readdirSync(na.dirname(e)).filter(r).sort(o).reverse().forEach(i)}write(e,t){const n=this;ta("in write"),this.shouldRoll()&&(this.currentSize=0,this.roll(this.filename)),ta("writing the chunk to the file"),n.currentSize+=e.length,ra.appendFileSync(n.filename,e)}}ea.configure=function(e,t){let n=t.basicLayout;e.layout&&(n=t.layout(e.layout.type,e.layout));const r={flags:e.flags||"a",encoding:e.encoding||"utf8",mode:e.mode||384};return function(e,t,n,r,u,o){ta("fileSync appender created");const i=function(e,t,n){let r;var u;return t?r=new ia(e,t,n,o):(oa(u=e,o),r={write(e){ra.appendFileSync(u,e)}}),r}(e=na.normalize(e),n,r=r||0===r?r:5);return e=>{i.write(t(e,u)+ua)}}(e.filename,n,e.maxLogSize,e.backups,e.timezoneOffset,r)};var sa={};const ca=Nr.exports("log4js:tcp"),aa=S.default;sa.configure=function(e,t){ca(`configure with config = ${e}`);let n=function(e){return e.serialise()};return e.layout&&(n=t.layout(e.layout.type,e.layout)),function(e,t){let n=!1;const r=[];let u,o=3,i="__LOG4JS__";function s(e){ca("Writing log event to socket"),n=u.write(`${t(e)}${i}`,"utf8")}function c(){let e;for(ca("emptying buffer");e=r.shift();)s(e)}function a(e){n?s(e):(ca("buffering log event because it cannot write at the moment"),r.push(e))}return function t(){ca(`appender creating socket to ${e.host||"localhost"}:${e.port||5e3}`),i=`${e.endMsg||"__LOG4JS__"}`,u=aa.createConnection(e.port||5e3,e.host||"localhost"),u.on("connect",(()=>{ca("socket connected"),c(),n=!0})),u.on("drain",(()=>{ca("drain event received, emptying buffer"),n=!0,c()})),u.on("timeout",u.end.bind(u)),u.on("error",(e=>{ca("connection error",e),n=!1,c()})),u.on("close",t)}(),a.shutdown=function(e){ca("shutdown called"),r.length&&o?(ca("buffer has items, waiting 100ms to empty"),o-=1,setTimeout((()=>{a.shutdown(e)}),100)):(u.removeAllListeners("close"),u.end(e))},a}(e,n)};const la=p.default,fa=Nr.exports("log4js:appenders"),da=tu,Da=eo,pa=gu,Ea=hu,ma=to,ha=new Map;ha.set("console",oo),ha.set("stdout",so),ha.set("stderr",co),ha.set("logLevelFilter",ao),ha.set("categoryFilter",lo),ha.set("noLogFilter",Do),ha.set("file",Eo),ha.set("dateFile",Yc),ha.set("fileSync",ea),ha.set("tcp",sa);const ya=new Map,Ca=(e,t)=>{fa("Loading module from ",e);try{return require(e)}catch(n){return void da.throwExceptionIf(t,"MODULE_NOT_FOUND"!==n.code,`appender "${e}" could not be loaded (error was: ${n})`)}},Fa=new Set,ga=(e,t)=>{if(ya.has(e))return ya.get(e);if(!t.appenders[e])return!1;if(Fa.has(e))throw new Error(`Dependency loop detected for appender ${e}.`);Fa.add(e),fa(`Creating appender ${e}`);const n=Aa(e,t);return Fa.delete(e),ya.set(e,n),n},Aa=(e,t)=>{const n=t.appenders[e],r=n.type.configure?n.type:((e,t)=>ha.get(e)||Ca(`./${e}`,t)||Ca(e,t)||require.main&&Ca(la.join(la.dirname(require.main.filename),e),t)||Ca(la.join(process.cwd(),e),t))(n.type,t);return da.throwExceptionIf(t,da.not(r),`appender "${e}" is not valid (type "${n.type}" could not be found)`),r.appender&&fa(`DEPRECATION: Appender ${n.type} exports an appender function.`),r.shutdown&&fa(`DEPRECATION: Appender ${n.type} exports a shutdown function.`),fa(`${e}: clustering.isMaster ? ${Da.isMaster()}`),fa(`${e}: appenderModule is ${F.default.inspect(r)}`),Da.onlyOnMaster((()=>(fa(`calling appenderModule.configure for ${e} / ${n.type}`),r.configure(ma.modifyConfig(n),Ea,(e=>ga(e,t)),pa))),(()=>{}))},va=e=>{ya.clear(),Fa.clear();const t=[];Object.values(e.categories).forEach((e=>{t.push(...e.appenders)})),Object.keys(e.appenders).forEach((n=>{(t.includes(n)||"tcp-server"===e.appenders[n].type)&&ga(n,e)}))},Sa=()=>{va({appenders:{out:{type:"stdout"}},categories:{default:{appenders:["out"],level:"trace"}}})};Sa(),da.addListener((e=>{da.throwExceptionIf(e,da.not(da.anObject(e.appenders)),'must have a property "appenders" of type object.');const t=Object.keys(e.appenders);da.throwExceptionIf(e,da.not(t.length),"must define at least one appender."),t.forEach((t=>{da.throwExceptionIf(e,da.not(e.appenders[t].type),`appender "${t}" is not valid (must be an object with property "type")`)}))})),da.addListener(va),Au.exports=ya,Au.exports.init=Sa;var wa={exports:{}};!function(e){const t=Nr.exports("log4js:categories"),n=tu,r=gu,u=Au.exports,o=new Map;function i(e,t,n){if(!1===t.inherit)return;const r=n.lastIndexOf(".");if(r<0)return;const u=n.substring(0,r);let o=e.categories[u];o||(o={inherit:!0,appenders:[]}),i(e,o,u),!e.categories[u]&&o.appenders&&o.appenders.length&&o.level&&(e.categories[u]=o),t.appenders=t.appenders||[],t.level=t.level||o.level,o.appenders.forEach((e=>{t.appenders.includes(e)||t.appenders.push(e)})),t.parent=o}function s(e){if(!e.categories)return;Object.keys(e.categories).forEach((t=>{const n=e.categories[t];i(e,n,t)}))}n.addPreProcessingListener((e=>s(e))),n.addListener((e=>{n.throwExceptionIf(e,n.not(n.anObject(e.categories)),'must have a property "categories" of type object.');const t=Object.keys(e.categories);n.throwExceptionIf(e,n.not(t.length),"must define at least one category."),t.forEach((t=>{const o=e.categories[t];n.throwExceptionIf(e,[n.not(o.appenders),n.not(o.level)],`category "${t}" is not valid (must be an object with properties "appenders" and "level")`),n.throwExceptionIf(e,n.not(Array.isArray(o.appenders)),`category "${t}" is not valid (appenders must be an array of appender names)`),n.throwExceptionIf(e,n.not(o.appenders.length),`category "${t}" is not valid (appenders must contain at least one appender name)`),Object.prototype.hasOwnProperty.call(o,"enableCallStack")&&n.throwExceptionIf(e,"boolean"!=typeof o.enableCallStack,`category "${t}" is not valid (enableCallStack must be boolean type)`),o.appenders.forEach((r=>{n.throwExceptionIf(e,n.not(u.get(r)),`category "${t}" is not valid (appender "${r}" is not defined)`)})),n.throwExceptionIf(e,n.not(r.getLevel(o.level)),`category "${t}" is not valid (level "${o.level}" not recognised; valid levels are ${r.levels.join(", ")})`)})),n.throwExceptionIf(e,n.not(e.categories.default),'must define a "default" category.')}));const c=e=>{o.clear();Object.keys(e.categories).forEach((n=>{const i=e.categories[n],s=[];i.appenders.forEach((e=>{s.push(u.get(e)),t(`Creating category ${n}`),o.set(n,{appenders:s,level:r.getLevel(i.level),enableCallStack:i.enableCallStack||!1})}))}))},a=()=>{c({categories:{default:{appenders:["out"],level:"OFF"}}})};a(),n.addListener(c);const l=e=>(t(`configForCategory: searching for config for ${e}`),o.has(e)?(t(`configForCategory: ${e} exists in config, returning it`),o.get(e)):e.indexOf(".")>0?(t(`configForCategory: ${e} has hierarchy, searching for parents`),l(e.substring(0,e.lastIndexOf(".")))):(t("configForCategory: returning config for default category"),l("default")));e.exports=o,e.exports=Object.assign(e.exports,{appendersForCategory:e=>l(e).appenders,getLevelForCategory:e=>l(e).level,setLevelForCategory:(e,n)=>{let r=o.get(e);if(t(`setLevelForCategory: found ${r} for ${e}`),!r){const n=l(e);t(`setLevelForCategory: no config found for category, found ${n} for parents of ${e}`),r={appenders:n.appenders}}r.level=n,o.set(e,r)},getEnableCallStackForCategory:e=>!0===l(e).enableCallStack,setEnableCallStackForCategory:(e,t)=>{l(e).enableCallStack=t},init:a})}(wa);const Oa=Nr.exports("log4js:logger"),ba=Hu,_a=gu,Ba=eo,Pa=wa.exports,ka=tu,xa=/at (?:(.+)\s+\()?(?:(.+?):(\d+)(?::(\d+))?|([^)]+))\)?/;function Na(e,t=4){const n=e.stack.split("\n").slice(t),r=xa.exec(n[0]);return r&&6===r.length?{functionName:r[1],fileName:r[2],lineNumber:parseInt(r[3],10),columnNumber:parseInt(r[4],10),callStack:n.join("\n")}:null}class Ia{constructor(e){if(!e)throw new Error("No category provided.");this.category=e,this.context={},this.parseCallStack=Na,Oa(`Logger created (${this.category}, ${this.level})`)}get level(){return _a.getLevel(Pa.getLevelForCategory(this.category),_a.TRACE)}set level(e){Pa.setLevelForCategory(this.category,_a.getLevel(e,this.level))}get useCallStack(){return Pa.getEnableCallStackForCategory(this.category)}set useCallStack(e){Pa.setEnableCallStackForCategory(this.category,!0===e)}log(e,...t){let n=_a.getLevel(e);n||(this._log(_a.WARN,"log4js:logger.log: invalid value for log-level as first parameter given: ",e),n=_a.INFO),this.isLevelEnabled(n)&&this._log(n,t)}isLevelEnabled(e){return this.level.isLessThanOrEqualTo(e)}_log(e,t){Oa(`sending log data (${e}) to appenders`);const n=new ba(this.category,e,t,this.context,this.useCallStack&&this.parseCallStack(new Error));Ba.send(n)}addContext(e,t){this.context[e]=t}removeContext(e){delete this.context[e]}clearContext(){this.context={}}setParseCallStackFunction(e){this.parseCallStack=e}}function Ta(e){const t=_a.getLevel(e),n=t.toString().toLowerCase().replace(/_([a-z])/g,(e=>e[1].toUpperCase())),r=n[0].toUpperCase()+n.slice(1);Ia.prototype[`is${r}Enabled`]=function(){return this.isLevelEnabled(t)},Ia.prototype[n]=function(...e){this.log(t,...e)}}_a.levels.forEach(Ta),ka.addListener((()=>{_a.levels.forEach(Ta)}));var Ra=Ia;const Ma=gu;function La(e){return e.originalUrl||e.url}function ja(e,t){for(let n=0;ne.source?e.source:e));t=new RegExp(n.join("|"))}return t}(t.nolog);return(e,i,s)=>{if(e._logging)return s();if(o&&o.test(e.originalUrl))return s();if(n.isLevelEnabled(r)||"auto"===t.level){const o=new Date,{writeHead:s}=i;e._logging=!0,i.writeHead=(e,t)=>{i.writeHead=s,i.writeHead(e,t),i.__statusCode=e,i.__headers=t||{}},i.on("finish",(()=>{i.responseTime=new Date-o,i.statusCode&&"auto"===t.level&&(r=Ma.INFO,i.statusCode>=300&&(r=Ma.WARN),i.statusCode>=400&&(r=Ma.ERROR)),r=function(e,t,n){let r=t;if(n){const t=n.find((t=>{let n=!1;return n=t.from&&t.to?e>=t.from&&e<=t.to:-1!==t.codes.indexOf(e),n}));t&&(r=Ma.getLevel(t.level,r))}return r}(i.statusCode,r,t.statusRules);const s=function(e,t,n){const r=[];return r.push({token:":url",replacement:La(e)}),r.push({token:":protocol",replacement:e.protocol}),r.push({token:":hostname",replacement:e.hostname}),r.push({token:":method",replacement:e.method}),r.push({token:":status",replacement:t.__statusCode||t.statusCode}),r.push({token:":response-time",replacement:t.responseTime}),r.push({token:":date",replacement:(new Date).toUTCString()}),r.push({token:":referrer",replacement:e.headers.referer||e.headers.referrer||""}),r.push({token:":http-version",replacement:`${e.httpVersionMajor}.${e.httpVersionMinor}`}),r.push({token:":remote-addr",replacement:e.headers["x-forwarded-for"]||e.ip||e._remoteAddress||e.socket&&(e.socket.remoteAddress||e.socket.socket&&e.socket.socket.remoteAddress)}),r.push({token:":user-agent",replacement:e.headers["user-agent"]}),r.push({token:":content-length",replacement:t.getHeader("content-length")||t.__headers&&t.__headers["Content-Length"]||"-"}),r.push({token:/:req\[([^\]]+)]/g,replacement:(t,n)=>e.headers[n.toLowerCase()]}),r.push({token:/:res\[([^\]]+)]/g,replacement:(e,n)=>t.getHeader(n.toLowerCase())||t.__headers&&t.__headers[n]}),(e=>{const t=e.concat();for(let e=0;eja(e,s)));t&&n.log(r,t)}else n.log(r,ja(u,s));t.context&&n.removeContext("res")}))}return s()}},nl=Va;let rl=!1;function ul(e){if(!rl)return;Ua("Received log event ",e);Za.appendersForCategory(e.categoryName).forEach((t=>{t(e)}))}function ol(e){rl&&il();let t=e;return"string"==typeof t&&(t=function(e){Ua(`Loading configuration from ${e}`);try{return JSON.parse(Wa.readFileSync(e,"utf8"))}catch(t){throw new Error(`Problem reading config from file "${e}". Error was ${t.message}`,t)}}(e)),Ua(`Configuration is ${t}`),Ka.configure(za(t)),el.onMessage(ul),rl=!0,sl}function il(e){Ua("Shutdown called. Disabling all log writing."),rl=!1;const t=Array.from(Xa.values());Xa.init(),Za.init();const n=t.reduceRight(((e,t)=>t.shutdown?e+1:e),0);if(0===n)return Ua("No appenders with shutdown functions found."),void 0!==e&&e();let r,u=0;function o(t){r=r||t,u+=1,Ua(`Appender shutdowns complete: ${u} / ${n}`),u>=n&&(Ua("All shutdown functions completed."),e&&e(r))}return Ua(`Found ${n} appenders with shutdown functions.`),t.filter((e=>e.shutdown)).forEach((e=>e.shutdown(o))),null}const sl={getLogger:function(e){return rl||ol(process.env.LOG4JS_CONFIG||{appenders:{out:{type:"stdout"}},categories:{default:{appenders:["out"],level:"OFF"}}}),new Qa(e||"default")},configure:ol,shutdown:il,connectLogger:tl,levels:Ya,addLayout:qa.addLayout,recording:function(){return nl}};var cl=sl,al={};Object.defineProperty(al,"__esModule",{value:!0}),al.levelMap=al.getLevel=al.setCategoriesLevel=al.getConfiguration=al.setConfiguration=void 0;const ll=cl;let fl={appenders:{debug:{type:"stdout",layout:{type:"pattern",pattern:"[%d] > hvigor %p %c %[%m%]"}},info:{type:"stdout",layout:{type:"pattern",pattern:"[%d] > hvigor %[%m%]"}},"no-pattern-info":{type:"stdout",layout:{type:"pattern",pattern:"%m"}},wrong:{type:"stderr",layout:{type:"pattern",pattern:"[%d] > hvigor %[%p: %m%]"}},"just-debug":{type:"logLevelFilter",appender:"debug",level:"debug",maxLevel:"debug"},"just-info":{type:"logLevelFilter",appender:"info",level:"info",maxLevel:"info"},"just-wrong":{type:"logLevelFilter",appender:"wrong",level:"warn",maxLevel:"error"}},categories:{default:{appenders:["just-debug","just-info","just-wrong"],level:"debug"},"no-pattern-info":{appenders:["no-pattern-info"],level:"info"}}};al.setConfiguration=e=>{fl=e};al.getConfiguration=()=>fl;let dl=ll.levels.DEBUG;al.setCategoriesLevel=(e,t)=>{dl=e;const n=fl.categories;for(const r in n)(null==t?void 0:t.includes(r))||Object.prototype.hasOwnProperty.call(n,r)&&(n[r].level=e.levelStr)};al.getLevel=()=>dl,al.levelMap=new Map([["ALL",ll.levels.ALL],["MARK",ll.levels.MARK],["TRACE",ll.levels.TRACE],["DEBUG",ll.levels.DEBUG],["INFO",ll.levels.INFO],["WARN",ll.levels.WARN],["ERROR",ll.levels.ERROR],["FATAL",ll.levels.FATAL],["OFF",ll.levels.OFF]]);var Dl=w&&w.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var u=Object.getOwnPropertyDescriptor(t,n);u&&!("get"in u?!t.__esModule:u.writable||u.configurable)||(u={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,u)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),pl=w&&w.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),El=w&&w.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&Dl(t,e,n);return pl(t,e),t};Object.defineProperty(xr,"__esModule",{value:!0}),xr.evaluateLogLevel=xr.HvigorLogger=void 0;const ml=El(cl),hl=cl,yl=El(F.default),Cl=al;class Fl{constructor(e){ml.configure((0,Cl.getConfiguration)()),this._logger=ml.getLogger(e),this._logger.level=(0,Cl.getLevel)()}static getLogger(e){return new Fl(e)}log(e,...t){this._logger.log(e,...t)}debug(e,...t){this._logger.debug(e,...t)}info(e,...t){this._logger.info(e,...t)}warn(e,...t){void 0!==e&&""!==e&&this._logger.warn(e,...t)}error(e,...t){this._logger.error(e,...t)}_printTaskExecuteInfo(e,t){this.info(`Finished :${e}... after ${t}`)}_printFailedTaskInfo(e){this.error(`Failed :${e}... `)}_printDisabledTaskInfo(e){this.info(`Disabled :${e}... `)}_printUpToDateTaskInfo(e){this.info(`UP-TO-DATE :${e}... `)}errorMessageExit(e,...t){throw new Error(yl.format(e,...t))}errorExit(e,t,...n){t&&this._logger.error(t,n),this._logger.error(e.stack)}setLevel(e,t){(0,Cl.setCategoriesLevel)(e,t),ml.shutdown(),ml.configure((0,Cl.getConfiguration)())}getLevel(){return this._logger.level}configure(e){const t=(0,Cl.getConfiguration)(),n={appenders:{...t.appenders,...e.appenders},categories:{...t.categories,...e.categories}};(0,Cl.setConfiguration)(n),ml.shutdown(),ml.configure(n)}}xr.HvigorLogger=Fl,xr.evaluateLogLevel=function(e,t){t.debug?e.setLevel(hl.levels.DEBUG):t.warn?e.setLevel(hl.levels.WARN):t.error?e.setLevel(hl.levels.ERROR):e.setLevel(hl.levels.INFO)};var gl=w&&w.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(X,"__esModule",{value:!0}),X.parseJsonText=X.parseJsonFile=void 0;const Al=Z,vl=gl(kr),Sl=gl(p.default),wl=gl(E.default),Ol=xr.HvigorLogger.getLogger("parse-json-util");var bl;!function(e){e[e.Char=0]="Char",e[e.EOF=1]="EOF",e[e.Identifier=2]="Identifier"}(bl||(bl={}));let _l,Bl,Pl,kl,xl,Nl,Il="start",Tl=[],Rl=0,Ml=1,Ll=0,jl=!1,$l="default",Hl="'",Jl=1;function Gl(e,t=!1){Bl=String(e),Il="start",Tl=[],Rl=0,Ml=1,Ll=0,kl=void 0,jl=t;do{_l=Vl(),Xl[Il]()}while("eof"!==_l.type);return kl}function Vl(){for($l="default",xl="",Hl="'",Jl=1;;){Nl=Ul();const e=zl[$l]();if(e)return e}}function Ul(){if(Bl[Rl])return String.fromCodePoint(Bl.codePointAt(Rl))}function Wl(){const e=Ul();return"\n"===e?(Ml++,Ll=0):e?Ll+=e.length:Ll++,e&&(Rl+=e.length),e}X.parseJsonFile=function(e,t=!1,n="utf-8"){const r=vl.default.readFileSync(Sl.default.resolve(e),{encoding:n});try{return Gl(r,t)}catch(t){if(t instanceof SyntaxError){const n=t.message.split("at");2===n.length&&Ol.errorMessageExit(`${n[0].trim()}${wl.default.EOL}\t at ${e}:${n[1].trim()}`)}Ol.errorMessageExit(`${e} is not in valid JSON/JSON5 format.`)}},X.parseJsonText=Gl;const zl={default(){switch(Nl){case"/":return Wl(),void($l="comment");case void 0:return Wl(),Kl("eof")}if(!Al.JudgeUtil.isIgnoreChar(Nl)&&!Al.JudgeUtil.isSpaceSeparator(Nl))return zl[Il]();Wl()},start(){$l="value"},beforePropertyName(){switch(Nl){case"$":case"_":return xl=Wl(),void($l="identifierName");case"\\":return Wl(),void($l="identifierNameStartEscape");case"}":return Kl("punctuator",Wl());case'"':case"'":return Hl=Nl,Wl(),void($l="string")}if(Al.JudgeUtil.isIdStartChar(Nl))return xl+=Wl(),void($l="identifierName");throw tf(bl.Char,Wl())},afterPropertyName(){if(":"===Nl)return Kl("punctuator",Wl());throw tf(bl.Char,Wl())},beforePropertyValue(){$l="value"},afterPropertyValue(){switch(Nl){case",":case"}":return Kl("punctuator",Wl())}throw tf(bl.Char,Wl())},beforeArrayValue(){if("]"===Nl)return Kl("punctuator",Wl());$l="value"},afterArrayValue(){switch(Nl){case",":case"]":return Kl("punctuator",Wl())}throw tf(bl.Char,Wl())},end(){throw tf(bl.Char,Wl())},comment(){switch(Nl){case"*":return Wl(),void($l="multiLineComment");case"/":return Wl(),void($l="singleLineComment")}throw tf(bl.Char,Wl())},multiLineComment(){switch(Nl){case"*":return Wl(),void($l="multiLineCommentAsterisk");case void 0:throw tf(bl.Char,Wl())}Wl()},multiLineCommentAsterisk(){switch(Nl){case"*":return void Wl();case"/":return Wl(),void($l="default");case void 0:throw tf(bl.Char,Wl())}Wl(),$l="multiLineComment"},singleLineComment(){switch(Nl){case"\n":case"\r":case"\u2028":case"\u2029":return Wl(),void($l="default");case void 0:return Wl(),Kl("eof")}Wl()},value(){switch(Nl){case"{":case"[":return Kl("punctuator",Wl());case"n":return Wl(),ql("ull"),Kl("null",null);case"t":return Wl(),ql("rue"),Kl("boolean",!0);case"f":return Wl(),ql("alse"),Kl("boolean",!1);case"-":case"+":return"-"===Wl()&&(Jl=-1),void($l="numerical");case".":case"0":case"I":case"N":return void($l="numerical");case'"':case"'":return Hl=Nl,Wl(),xl="",void($l="string")}if(void 0===Nl||!Al.JudgeUtil.isDigitWithoutZero(Nl))throw tf(bl.Char,Wl());$l="numerical"},numerical(){switch(Nl){case".":return xl=Wl(),void($l="decimalPointLeading");case"0":return xl=Wl(),void($l="zero");case"I":return Wl(),ql("nfinity"),Kl("numeric",Jl*(1/0));case"N":return Wl(),ql("aN"),Kl("numeric",NaN)}if(void 0!==Nl&&Al.JudgeUtil.isDigitWithoutZero(Nl))return xl=Wl(),void($l="decimalInteger");throw tf(bl.Char,Wl())},zero(){switch(Nl){case".":case"e":case"E":return void($l="decimal");case"x":case"X":return xl+=Wl(),void($l="hexadecimal")}return Kl("numeric",0)},decimalInteger(){switch(Nl){case".":case"e":case"E":return void($l="decimal")}if(!Al.JudgeUtil.isDigit(Nl))return Kl("numeric",Jl*Number(xl));xl+=Wl()},decimal(){switch(Nl){case".":xl+=Wl(),$l="decimalFraction";break;case"e":case"E":xl+=Wl(),$l="decimalExponent"}},decimalPointLeading(){if(Al.JudgeUtil.isDigit(Nl))return xl+=Wl(),void($l="decimalFraction");throw tf(bl.Char,Wl())},decimalFraction(){switch(Nl){case"e":case"E":return xl+=Wl(),void($l="decimalExponent")}if(!Al.JudgeUtil.isDigit(Nl))return Kl("numeric",Jl*Number(xl));xl+=Wl()},decimalExponent(){switch(Nl){case"+":case"-":return xl+=Wl(),void($l="decimalExponentSign")}if(Al.JudgeUtil.isDigit(Nl))return xl+=Wl(),void($l="decimalExponentInteger");throw tf(bl.Char,Wl())},decimalExponentSign(){if(Al.JudgeUtil.isDigit(Nl))return xl+=Wl(),void($l="decimalExponentInteger");throw tf(bl.Char,Wl())},decimalExponentInteger(){if(!Al.JudgeUtil.isDigit(Nl))return Kl("numeric",Jl*Number(xl));xl+=Wl()},hexadecimal(){if(Al.JudgeUtil.isHexDigit(Nl))return xl+=Wl(),void($l="hexadecimalInteger");throw tf(bl.Char,Wl())},hexadecimalInteger(){if(!Al.JudgeUtil.isHexDigit(Nl))return Kl("numeric",Jl*Number(xl));xl+=Wl()},identifierNameStartEscape(){if("u"!==Nl)throw tf(bl.Char,Wl());Wl();const e=Yl();switch(e){case"$":case"_":break;default:if(!Al.JudgeUtil.isIdStartChar(e))throw tf(bl.Identifier)}xl+=e,$l="identifierName"},identifierName(){switch(Nl){case"$":case"_":case"‌":case"‍":return void(xl+=Wl());case"\\":return Wl(),void($l="identifierNameEscape")}if(!Al.JudgeUtil.isIdContinueChar(Nl))return Kl("identifier",xl);xl+=Wl()},identifierNameEscape(){if("u"!==Nl)throw tf(bl.Char,Wl());Wl();const e=Yl();switch(e){case"$":case"_":case"‌":case"‍":break;default:if(!Al.JudgeUtil.isIdContinueChar(e))throw tf(bl.Identifier)}xl+=e,$l="identifierName"},string(){switch(Nl){case"\\":return Wl(),void(xl+=function(){const e=Ul(),t=function(){switch(Ul()){case"b":return Wl(),"\b";case"f":return Wl(),"\f";case"n":return Wl(),"\n";case"r":return Wl(),"\r";case"t":return Wl(),"\t";case"v":return Wl(),"\v"}return}();if(t)return t;switch(e){case"0":if(Wl(),Al.JudgeUtil.isDigit(Ul()))throw tf(bl.Char,Wl());return"\0";case"x":return Wl(),function(){let e="",t=Ul();if(!Al.JudgeUtil.isHexDigit(t))throw tf(bl.Char,Wl());if(e+=Wl(),t=Ul(),!Al.JudgeUtil.isHexDigit(t))throw tf(bl.Char,Wl());return e+=Wl(),String.fromCodePoint(parseInt(e,16))}();case"u":return Wl(),Yl();case"\n":case"\u2028":case"\u2029":return Wl(),"";case"\r":return Wl(),"\n"===Ul()&&Wl(),""}if(void 0===e||Al.JudgeUtil.isDigitWithoutZero(e))throw tf(bl.Char,Wl());return Wl()}());case'"':case"'":if(Nl===Hl){const e=Kl("string",xl);return Wl(),e}return void(xl+=Wl());case"\n":case"\r":case void 0:throw tf(bl.Char,Wl());case"\u2028":case"\u2029":!function(e){Ol.warn(`JSON5: '${ef(e)}' in strings is not valid ECMAScript; consider escaping.`)}(Nl)}xl+=Wl()}};function Kl(e,t){return{type:e,value:t,line:Ml,column:Ll}}function ql(e){for(const t of e){if(Ul()!==t)throw tf(bl.Char,Wl());Wl()}}function Yl(){let e="",t=4;for(;t-- >0;){const t=Ul();if(!Al.JudgeUtil.isHexDigit(t))throw tf(bl.Char,Wl());e+=Wl()}return String.fromCodePoint(parseInt(e,16))}const Xl={start(){if("eof"===_l.type)throw tf(bl.EOF);Zl()},beforePropertyName(){switch(_l.type){case"identifier":case"string":return Pl=_l.value,void(Il="afterPropertyName");case"punctuator":return void Ql();case"eof":throw tf(bl.EOF)}},afterPropertyName(){if("eof"===_l.type)throw tf(bl.EOF);Il="beforePropertyValue"},beforePropertyValue(){if("eof"===_l.type)throw tf(bl.EOF);Zl()},afterPropertyValue(){if("eof"===_l.type)throw tf(bl.EOF);switch(_l.value){case",":return void(Il="beforePropertyName");case"}":Ql()}},beforeArrayValue(){if("eof"===_l.type)throw tf(bl.EOF);"punctuator"!==_l.type||"]"!==_l.value?Zl():Ql()},afterArrayValue(){if("eof"===_l.type)throw tf(bl.EOF);switch(_l.value){case",":return void(Il="beforeArrayValue");case"]":Ql()}},end(){}};function Zl(){const e=function(){let e;switch(_l.type){case"punctuator":switch(_l.value){case"{":e={};break;case"[":e=[]}break;case"null":case"boolean":case"numeric":case"string":e=_l.value}return e}();if(jl&&"object"==typeof e&&(e._line=Ml,e._column=Ll),void 0===kl)kl=e;else{const t=Tl[Tl.length-1];Array.isArray(t)?jl&&"object"!=typeof e?t.push({value:e,_line:Ml,_column:Ll}):t.push(e):t[Pl]=jl&&"object"!=typeof e?{value:e,_line:Ml,_column:Ll}:e}!function(e){if(e&&"object"==typeof e)Tl.push(e),Il=Array.isArray(e)?"beforeArrayValue":"beforePropertyName";else{const e=Tl[Tl.length-1];Il=e?Array.isArray(e)?"afterArrayValue":"afterPropertyValue":"end"}}(e)}function Ql(){Tl.pop();const e=Tl[Tl.length-1];Il=e?Array.isArray(e)?"afterArrayValue":"afterPropertyValue":"end"}function ef(e){const t={"'":"\\'",'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\v":"\\v","\0":"\\0","\u2028":"\\u2028","\u2029":"\\u2029"};if(t[e])return t[e];if(e<" "){const t=e.charCodeAt(0).toString(16);return`\\x${`00${t}`.substring(t.length)}`}return e}function tf(e,t){let n="";switch(e){case bl.Char:n=void 0===t?`JSON5: invalid end of input at ${Ml}:${Ll}`:`JSON5: invalid character '${ef(t)}' at ${Ml}:${Ll}`;break;case bl.EOF:n=`JSON5: invalid end of input at ${Ml}:${Ll}`;break;case bl.Identifier:Ll-=5,n=`JSON5: invalid identifier character at ${Ml}:${Ll}`}const r=new nf(n);return r.lineNumber=Ml,r.columnNumber=Ll,r}class nf extends SyntaxError{}var rf=w&&w.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var u=Object.getOwnPropertyDescriptor(t,n);u&&!("get"in u?!t.__esModule:u.writable||u.configurable)||(u={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,u)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),uf=w&&w.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),of=w&&w.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&rf(t,e,n);return uf(t,e),t};Object.defineProperty(Y,"__esModule",{value:!0});var sf=Y.cleanWorkSpace=Ff=Y.executeInstallHvigor=yf=Y.isHvigorInstalled=mf=Y.isAllDependenciesInstalled=void 0;const cf=of(D.default),af=of(p.default),lf=b,ff=j,df=$,Df=X;let pf,Ef;var mf=Y.isAllDependenciesInstalled=function(){function e(e){const t=null==e?void 0:e.dependencies;return void 0===t?0:Object.getOwnPropertyNames(t).length}if(pf=gf(),Ef=Af(),e(pf)+1!==e(Ef))return!1;for(const e in null==pf?void 0:pf.dependencies)if(!(0,ff.hasNpmPackInPaths)(e,[lf.HVIGOR_PROJECT_DEPENDENCIES_HOME])||!hf(e,pf,Ef))return!1;return!0};function hf(e,t,n){return void 0!==n.dependencies&&(0,ff.offlinePluginConversion)(lf.HVIGOR_PROJECT_ROOT_DIR,t.dependencies[e])===n.dependencies[e]}var yf=Y.isHvigorInstalled=function(){return pf=gf(),Ef=Af(),(0,ff.hasNpmPackInPaths)(lf.HVIGOR_ENGINE_PACKAGE_NAME,[lf.HVIGOR_PROJECT_DEPENDENCIES_HOME])&&(0,ff.offlinePluginConversion)(lf.HVIGOR_PROJECT_ROOT_DIR,pf.hvigorVersion)===Ef.dependencies[lf.HVIGOR_ENGINE_PACKAGE_NAME]};const Cf={cwd:lf.HVIGOR_PROJECT_DEPENDENCIES_HOME,stdio:["inherit","inherit","inherit"]};var Ff=Y.executeInstallHvigor=function(){(0,df.logInfoPrintConsole)("Hvigor installing...");const e={dependencies:{}};e.dependencies[lf.HVIGOR_ENGINE_PACKAGE_NAME]=(0,ff.offlinePluginConversion)(lf.HVIGOR_PROJECT_ROOT_DIR,pf.hvigorVersion);try{cf.mkdirSync(lf.HVIGOR_PROJECT_DEPENDENCIES_HOME,{recursive:!0});const t=af.resolve(lf.HVIGOR_PROJECT_DEPENDENCIES_HOME,lf.DEFAULT_PACKAGE_JSON);cf.writeFileSync(t,JSON.stringify(e))}catch(e){(0,df.logErrorAndExit)(e)}!function(){const e=["config","set","store-dir",lf.HVIGOR_PNPM_STORE_PATH];(0,ff.executeCommand)(lf.HVIGOR_WRAPPER_PNPM_SCRIPT_PATH,e,Cf)}(),(0,ff.executeCommand)(lf.HVIGOR_WRAPPER_PNPM_SCRIPT_PATH,["install"],Cf)};function gf(){const e=af.resolve(lf.HVIGOR_PROJECT_WRAPPER_HOME,lf.DEFAULT_HVIGOR_CONFIG_JSON_FILE_NAME);return cf.existsSync(e)||(0,df.logErrorAndExit)(`Error: Hvigor config file ${e} does not exist.`),(0,Df.parseJsonFile)(e)}function Af(){return cf.existsSync(lf.HVIGOR_PROJECT_DEPENDENCY_PACKAGE_JSON_PATH)?(0,Df.parseJsonFile)(lf.HVIGOR_PROJECT_DEPENDENCY_PACKAGE_JSON_PATH):{dependencies:{}}}sf=Y.cleanWorkSpace=function(){if((0,df.logInfoPrintConsole)("Hvigor cleaning..."),!cf.existsSync(lf.HVIGOR_PROJECT_DEPENDENCIES_HOME))return;const e=cf.readdirSync(lf.HVIGOR_PROJECT_DEPENDENCIES_HOME);if(e&&0!==e.length){cf.existsSync(lf.HVIGOR_BOOT_JS_FILE_PATH)&&(0,ff.executeCommand)(process.argv[0],[lf.HVIGOR_BOOT_JS_FILE_PATH,"--stop-daemon"],{});try{e.forEach((e=>{cf.rmSync(af.resolve(lf.HVIGOR_PROJECT_DEPENDENCIES_HOME,e),{recursive:!0})}))}catch(e){(0,df.logErrorAndExit)(`The hvigor build tool cannot be installed. Please manually clear the workspace directory and synchronize the project again.\n\n Workspace Path: ${lf.HVIGOR_PROJECT_DEPENDENCIES_HOME}.`)}}};var vf={},Sf=w&&w.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var u=Object.getOwnPropertyDescriptor(t,n);u&&!("get"in u?!t.__esModule:u.writable||u.configurable)||(u={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,u)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),wf=w&&w.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Of=w&&w.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&Sf(t,e,n);return wf(t,e),t};Object.defineProperty(vf,"__esModule",{value:!0});var bf=vf.executeBuild=void 0;const _f=b,Bf=Of(D.default),Pf=Of(p.default),kf=$;bf=vf.executeBuild=function(){const e=Pf.resolve(_f.HVIGOR_PROJECT_DEPENDENCIES_HOME,"node_modules","@ohos","hvigor","bin","hvigor.js");try{const t=Bf.realpathSync(e);require(t)}catch(t){(0,kf.logErrorAndExit)(`Error: ENOENT: no such file ${e},delete ${_f.HVIGOR_PROJECT_DEPENDENCIES_HOME} and retry.`)}},function(){if(O.checkNpmConifg(),O.environmentHandler(),O.isPnpmAvailable()||O.executeInstallPnpm(),yf()&&mf())bf();else{sf();try{Ff()}catch(e){return void sf()}bf()}}(); \ No newline at end of file diff --git a/HarmonyOS_NEXT/Native/NdkOpenGL/hvigorfile.ts b/HarmonyOS_NEXT/Native/NdkOpenGL/hvigorfile.ts new file mode 100644 index 0000000000000000000000000000000000000000..6478186902c0c1ad7c966a929c7d6b7d8ae7a9f3 --- /dev/null +++ b/HarmonyOS_NEXT/Native/NdkOpenGL/hvigorfile.ts @@ -0,0 +1,2 @@ +// Script for compiling build behavior. It is built in the build plug-in and cannot be modified currently. +export { appTasks } from '@ohos/hvigor-ohos-plugin'; \ No newline at end of file diff --git a/HarmonyOS_NEXT/Native/NdkOpenGL/hvigorw b/HarmonyOS_NEXT/Native/NdkOpenGL/hvigorw new file mode 100644 index 0000000000000000000000000000000000000000..54aadd226b453397860013d328fd01031648fc31 --- /dev/null +++ b/HarmonyOS_NEXT/Native/NdkOpenGL/hvigorw @@ -0,0 +1,48 @@ +#!/bin/bash + +# ---------------------------------------------------------------------------- +# Hvigor startup script, version 1.0.0 +# +# Required ENV vars: +# ------------------ +# NODE_HOME - location of a Node home dir +# or +# Add /usr/local/nodejs/bin to the PATH environment variable +# ---------------------------------------------------------------------------- + +HVIGOR_APP_HOME=$(dirname $(readlink -f $0)) +HVIGOR_WRAPPER_SCRIPT=${HVIGOR_APP_HOME}/hvigor/hvigor-wrapper.js +warn() { + echo "" + echo -e "\033[1;33m`date '+[%Y-%m-%d %H:%M:%S]'`$@\033[0m" +} + +error() { + echo "" + echo -e "\033[1;31m`date '+[%Y-%m-%d %H:%M:%S]'`$@\033[0m" +} + +fail() { + error "$@" + exit 1 +} + +# Determine node to start hvigor wrapper script +if [ -n "${NODE_HOME}" ];then + EXECUTABLE_NODE="${NODE_HOME}/bin/node" + if [ ! -x "$EXECUTABLE_NODE" ];then + fail "ERROR: NODE_HOME is set to an invalid directory,check $NODE_HOME\n\nPlease set NODE_HOME in your environment to the location where your nodejs installed" + fi +else + EXECUTABLE_NODE="node" + which ${EXECUTABLE_NODE} > /dev/null 2>&1 || fail "ERROR: NODE_HOME is not set and not 'node' command found in your path" +fi + +# Check hvigor wrapper script +if [ ! -r "$HVIGOR_WRAPPER_SCRIPT" ];then + fail "ERROR: Couldn't find hvigor/hvigor-wrapper.js in ${HVIGOR_APP_HOME}" +fi + +# start hvigor-wrapper script +exec "${EXECUTABLE_NODE}" \ + "${HVIGOR_WRAPPER_SCRIPT}" "$@" diff --git a/HarmonyOS_NEXT/Native/NdkOpenGL/hvigorw.bat b/HarmonyOS_NEXT/Native/NdkOpenGL/hvigorw.bat new file mode 100644 index 0000000000000000000000000000000000000000..af893e9a2c9170d04610c906f1cf1b6f3ac144ac --- /dev/null +++ b/HarmonyOS_NEXT/Native/NdkOpenGL/hvigorw.bat @@ -0,0 +1,72 @@ +:: Copyright (c) 2023 Huawei Device Co., Ltd. +:: Licensed under the Apache License, Version 2.0 (the "License"); +:: you may not use this file except in compliance with the License. +:: You may obtain a copy of the License at +:: +:: http://www.apache.org/licenses/LICENSE-2.0 +:: +:: Unless required by applicable law or agreed to in writing, software +:: distributed under the License is distributed on an "AS IS" BASIS, +:: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +:: See the License for the specific language governing permissions and +:: limitations under the License. + +@echo off + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Hvigor startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +set WRAPPER_MODULE_PATH=%APP_HOME%\hvigor\hvigor-wrapper.js +set NODE_EXE=node.exe + +goto start + +:start +@rem Find node.exe +if defined NODE_HOME goto findNodeFromNodeHome + +%NODE_EXE% --version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: NODE_HOME is not set and no 'node' command could be found in your PATH. +echo. +echo Please set the NODE_HOME variable in your environment to match the +echo location of your NodeJs installation. + +goto fail + +:findNodeFromNodeHome +set NODE_HOME=%NODE_HOME:"=% +set NODE_EXE_PATH=%NODE_HOME%/%NODE_EXE% + +if exist "%NODE_EXE_PATH%" goto execute +echo. +echo ERROR: NODE_HOME is not set and no 'node' command could be found in your PATH. +echo. +echo Please set the NODE_HOME variable in your environment to match the +echo location of your NodeJs installation. + +goto fail + +:execute +@rem Execute hvigor +"%NODE_EXE%" %WRAPPER_MODULE_PATH% %* + +:fail +exit /b 1 diff --git a/HarmonyOS_NEXT/Native/NdkOpenGL/oh-package.json5 b/HarmonyOS_NEXT/Native/NdkOpenGL/oh-package.json5 new file mode 100644 index 0000000000000000000000000000000000000000..567e91cea6cf9021ee1d6c4fc133fc10bb5d7016 --- /dev/null +++ b/HarmonyOS_NEXT/Native/NdkOpenGL/oh-package.json5 @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "license": "", + "devDependencies": { + "@ohos/hypium": "1.0.6" + }, + "author": "", + "name": "NdkOpenGL", + "description": "Please describe the basic information.", + "main": "", + "version": "1.0.0", + "dependencies": {} +} diff --git a/HarmonyOS_NEXT/Native/NdkOpenGL/screenshots/device/index.png b/HarmonyOS_NEXT/Native/NdkOpenGL/screenshots/device/index.png new file mode 100644 index 0000000000000000000000000000000000000000..9a7012c54aa8c0526666c8162d94f937df8ed5c1 Binary files /dev/null and b/HarmonyOS_NEXT/Native/NdkOpenGL/screenshots/device/index.png differ diff --git a/HarmonyOS_NEXT/Native/NdkOpenGL/screenshots/device/rotate.png b/HarmonyOS_NEXT/Native/NdkOpenGL/screenshots/device/rotate.png new file mode 100644 index 0000000000000000000000000000000000000000..3a046ce0515d17ba319455f5cfd38c6cbb41a116 Binary files /dev/null and b/HarmonyOS_NEXT/Native/NdkOpenGL/screenshots/device/rotate.png differ diff --git a/HarmonyOS_NEXT/Notification/CustomNotificationBadge/.gitignore b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..70d8907eeef92650075242b74ca55c1af1a85270 --- /dev/null +++ b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/.gitignore @@ -0,0 +1,15 @@ +/node_modules +/oh_modules +/local.properties +/.idea +**/build +/.hvigor +.cxx +/.clangd +/.clang-format +/.clang-tidy +**/.test +/oh-package-lock.json5 +/signature +**/.preview +**/package-lock.json \ No newline at end of file diff --git a/HarmonyOS_NEXT/Notification/CustomNotificationBadge/AppScope/app.json5 b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/AppScope/app.json5 new file mode 100644 index 0000000000000000000000000000000000000000..8ffe1bb88af5754a47f77e306ee394507b45152b --- /dev/null +++ b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/AppScope/app.json5 @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "app": { + "bundleName": "com.samples.customnotificationbadge", + "vendor": "samples", + "versionCode": 1000000, + "versionName": "1.0.0", + "icon": "$media:app_icon", + "label": "$string:app_name" + } +} diff --git a/HarmonyOS_NEXT/Notification/CustomNotificationBadge/AppScope/resources/base/element/string.json b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/AppScope/resources/base/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..557e81bdb31a736cd2a9bd17a7c2578f6a8400e3 --- /dev/null +++ b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/AppScope/resources/base/element/string.json @@ -0,0 +1,8 @@ +{ + "string": [ + { + "name": "app_name", + "value": "CustomNotificationBadge" + } + ] +} diff --git a/HarmonyOS_NEXT/Notification/CustomNotificationBadge/AppScope/resources/base/media/app_icon.png b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/AppScope/resources/base/media/app_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ce307a8827bd75456441ceb57d530e4c8d45d36c Binary files /dev/null and b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/AppScope/resources/base/media/app_icon.png differ diff --git a/HarmonyOS_NEXT/Notification/CustomNotificationBadge/build-profile.json5 b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/build-profile.json5 new file mode 100644 index 0000000000000000000000000000000000000000..54653505261ffb3703be5f23df2e1aa1400e5485 --- /dev/null +++ b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/build-profile.json5 @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "app": { + "signingConfigs": [], + "products": [ + { + "name": "default", + "signingConfig": "default", + "compileSdkVersion": "4.0.0(10)", + "compatibleSdkVersion": "4.0.0(10)", + "runtimeOS": "HarmonyOS" + } + ] + }, + "modules": [ + { + "name": "entry", + "srcPath": "./entry", + "targets": [ + { + "name": "default", + "applyToProducts": [ + "default" + ] + } + ] + }, + { + "name": "notification", + "srcPath": "./notification" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/.gitignore b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..e2713a2779c5a3e0eb879efe6115455592caeea5 --- /dev/null +++ b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/.gitignore @@ -0,0 +1,6 @@ +/node_modules +/oh_modules +/.preview +/build +/.cxx +/.test \ No newline at end of file diff --git a/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/build-profile.json5 b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/build-profile.json5 new file mode 100644 index 0000000000000000000000000000000000000000..7376c96fd06ebf6461fe029fc480a9fb67256a32 --- /dev/null +++ b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/build-profile.json5 @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "apiType": 'stageMode', + "buildOption": { + }, + "targets": [ + { + "name": "default", + }, + { + "name": "ohosTest", + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/hvigorfile.ts b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/hvigorfile.ts new file mode 100644 index 0000000000000000000000000000000000000000..80e4ec5b81689f238c34614b167a0b9e9c83e8d9 --- /dev/null +++ b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/hvigorfile.ts @@ -0,0 +1,2 @@ +// Script for compiling build behavior. It is built in the build plug-in and cannot be modified currently. +export { hapTasks } from '@ohos/hvigor-ohos-plugin'; diff --git a/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/oh-package.json5 b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/oh-package.json5 new file mode 100644 index 0000000000000000000000000000000000000000..8d3ccc29596d2c7688ef64458a14df92cfbd48bc --- /dev/null +++ b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/oh-package.json5 @@ -0,0 +1,12 @@ +{ + "license": "", + "devDependencies": {}, + "author": "", + "name": "entry", + "description": "Please describe the basic information.", + "main": "", + "version": "1.0.0", + "dependencies": { + "@ohos/notification": "file:../notification" + } +} diff --git a/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/main/ets/components/NotificationList.ets b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/main/ets/components/NotificationList.ets new file mode 100644 index 0000000000000000000000000000000000000000..1bb7240578d74cb9203e2d4d33ac0d9763f86c14 --- /dev/null +++ b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/main/ets/components/NotificationList.ets @@ -0,0 +1,134 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License") + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import notification from '@ohos.notificationManager'; +import { notificationManagement } from '@ohos/notification'; +import { logger } from '@ohos/notification'; +import { TitleBar } from './/TitleBar'; + +@Component +export struct NotificationList { + @State groupNotifications: Array> = []; + @State countsByType: Array = []; + + aboutToAppear() { + notificationManagement.getAllNotifications().then((data) => { + this.groupNotifications = data.groupNotifications; + this.countsByType = data.countsByType; + logger.info("getAllNotifications data: " + JSON.stringify(data)); + }) + } + + build() { + Column() { + TitleBar({ title: $r('app.string.messages_list_title') }) + List({ space: 15 }) { + ForEach(this.countsByType, (num: number, index: number) => { + if (this.groupNotifications[index].length) { + ListItem() { + NotificationItem({ + notifications: this.groupNotifications[index], + notificationNum: this.countsByType[index], + }) + .onClick(() => { + if (this.countsByType[index]) { + notificationManagement.cancelNotificationType(this.groupNotifications[index][0].content.contentType); + let currentBadgeNum = notificationManagement.getBadgeNumber(); + currentBadgeNum -= this.countsByType[index]; + this.countsByType[index] = 0; + notificationManagement.setBadgeNumber(currentBadgeNum); + } + }) + } + } + }) + }.width('100%') + }.width('100%') + + } +} + + +@Component +export struct NotificationItem { + @State notificationNum: number = 0; + @State notifications: notification.NotificationRequest[] = []; + private title: Resource | null = null; + private content: string = ''; + + aboutToAppear() { + switch (this.notifications[0].content.contentType) { + case notification.ContentType.NOTIFICATION_CONTENT_BASIC_TEXT: { + this.title = $r('app.string.basic_notification'); + if (this.notifications[0].content.normal) { + this.content = this.notifications[0].content.normal.text; + } + break; + } + case notification.ContentType.NOTIFICATION_CONTENT_LONG_TEXT: { + this.title = $r('app.string.long_text_notification'); + if (this.notifications[0].content.longText) { + this.content = this.notifications[0].content.longText.text; + } + break; + } + case notification.ContentType.NOTIFICATION_CONTENT_PICTURE: { + this.title = $r('app.string.picture_notification'); + if (this.notifications[0].content.picture) { + this.content = this.notifications[0].content.picture.text; + } + break; + } + case notification.ContentType.NOTIFICATION_CONTENT_MULTILINE: { + this.title = $r('app.string.multiline_notification'); + if (this.notifications[0].content.multiLine) { + this.content = this.notifications[0].content.multiLine.text; + } + break; + } + } + } + + build() { + Row() { + Badge({ + count: this.notificationNum, + position: BadgePosition.Right, + style: { badgeSize: 16, badgeColor: $r('app.color.badge_color'), fontSize: 10 } + }) { + Column() { + Text(this.title) + .alignSelf(ItemAlign.Start) + .fontWeight(500) + .fontSize(16) + .lineHeight(22) + Text(this.content) + .alignSelf(ItemAlign.Start) + .margin({ top: 0 }) + .fontSize(14) + .lineHeight(19) + .opacity(0.6) + }.width('100%') + .height(64) + }.width('95%') + .margin({ left: 10, right: 15 }) + } + .backgroundColor(Color.White) + .borderRadius(24) + .height(72) + .margin({ left: 10, right: 10 }) + .padding(16) + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/main/ets/components/NotificationPublish.ets b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/main/ets/components/NotificationPublish.ets new file mode 100644 index 0000000000000000000000000000000000000000..39b27be690c86f7ce7cee84297e89a404f05ce9e --- /dev/null +++ b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/main/ets/components/NotificationPublish.ets @@ -0,0 +1,71 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License") + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import NotificationOperations from '../feature/NotificationOperations'; +import { notificationUtil } from '@ohos/notification'; +import { TitleBar } from './TitleBar'; + +@Component +export struct NoticePublish { + private notificationOperations: NotificationOperations = new NotificationOperations(getContext(this)); + + @Styles buttonStyle(){ + .width('86.7%') + .height(40) + .margin(6) + .backgroundColor($r('app.color.notification_button')) + } + + build() { + + Column() { + TitleBar({ title: $r('app.string.notification_publish_title') }) + Blank() + Scroll() { + Flex({ wrap: FlexWrap.Wrap, justifyContent: FlexAlign.SpaceEvenly }) { + Button($r('app.string.basic_notification')) + .fontSize(16) + .buttonStyle() + .onClick(this.notificationOperations.publishBasicNotification) + Button($r('app.string.long_text_notification')) + .fontSize(16) + .buttonStyle() + .onClick(this.notificationOperations.publishLongTextNotification) + Button($r('app.string.picture_notification')) + .fontSize(16) + .buttonStyle() + .onClick(this.notificationOperations.publishPictureNotification) + Button($r('app.string.multiline_notification')) + .fontSize(16) + .buttonStyle() + .onClick(this.notificationOperations.publishMultiLineNotification) + + } + .width('100%') + .padding(12) + + } + + Blank() + } + .width('100%') + .height('100%') + .justifyContent(FlexAlign.SpaceAround) + } + + aboutToAppear() { + notificationUtil.enableNotification(); + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/main/ets/components/TitleBar.ets b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/main/ets/components/TitleBar.ets new file mode 100644 index 0000000000000000000000000000000000000000..95aadbc70d0084014d7096b3939b88fb41da1bd3 --- /dev/null +++ b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/main/ets/components/TitleBar.ets @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +// Page title bar +@Component +export struct TitleBar { + private title: string | Resource | undefined = undefined + + build() { + Row() { + Text(this.title) + .fontSize(24) + .fontWeight(700) + .lineHeight(32) + .margin({ left: 24 }) + .fontColor('#182431') + } + .width('100%') + .height(70) + .backgroundColor($r('app.color.title_bar_background')) + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/main/ets/entryability/EntryAbility.ts b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/main/ets/entryability/EntryAbility.ts new file mode 100644 index 0000000000000000000000000000000000000000..7370b8f3270dfb1cc5824b1d9fe959f82b7ede74 --- /dev/null +++ b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/main/ets/entryability/EntryAbility.ts @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import UIAbility from '@ohos.app.ability.UIAbility'; +import hilog from '@ohos.hilog'; +import window from '@ohos.window'; + +export default class EntryAbility extends UIAbility { + onCreate(want, launchParam) { + hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate'); + } + + onDestroy() { + hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onDestroy'); + } + + onWindowStageCreate(windowStage: window.WindowStage) { + // Main window is created, set main page for this ability + hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageCreate'); + + windowStage.loadContent('pages/Index', (err, data) => { + if (err.code) { + hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? ''); + return; + } + hilog.info(0x0000, 'testTag', 'Succeeded in loading the content. Data: %{public}s', JSON.stringify(data) ?? ''); + }); + } + + onWindowStageDestroy() { + // Main window is destroyed, release UI related resources + hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageDestroy'); + } + + onForeground() { + // Ability has brought to foreground + hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onForeground'); + } + + onBackground() { + // Ability has back to background + hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onBackground'); + } +} diff --git a/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/main/ets/feature/NotificationOperations.ets b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/main/ets/feature/NotificationOperations.ets new file mode 100644 index 0000000000000000000000000000000000000000..d70aea5de956b128ec83bf1ea0a2f9dc06c292f0 --- /dev/null +++ b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/main/ets/feature/NotificationOperations.ets @@ -0,0 +1,125 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License") + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import image from '@ohos.multimedia.image'; +import notification from '@ohos.notificationManager'; +import { logger, notificationUtil, notificationContentUtil, notificationRequestUtil } from '@ohos/notification'; + +const TAG: string = 'Sample_Notification'; +const MULTI_LINE_CONTENT: Array = ['line0', 'line1', 'line2', 'line3']; // 多行文本通知的多行文本内容 + +interface NOTIFICATION_GROUP_TYPE { + BASIC: string + LONG_TEXT: string + MULTI_LINE: string + PICTURE: string + CONVERSATION: string +} + +const NOTIFICATION_GROUP: NOTIFICATION_GROUP_TYPE = { // 定义不同类型通知的通知组 + BASIC: 'BASIC', + LONG_TEXT: 'LONG_TEXT', + MULTI_LINE: 'MULTI_LINE', + PICTURE: 'PICTURE', + CONVERSATION: 'CONVERSATION' +} + +export default class NotificationOperations { + private context: Context; + private basicContent: notification.NotificationBasicContent; + + // 在初始化函数初始化基本通知类型的参数 + constructor(context: Context) { + this.context = context; + let notificationTitle = ''; + let notificationText = this.context.resourceManager.getStringSync($r('app.string.notification_content')); + let notificationAdditional = this.context.resourceManager.getStringSync($r('app.string.notification_additional')); + this.basicContent = { + title: notificationTitle, + text: notificationText, + additionalText: notificationAdditional + } + } + + // 发布基本类型通知 + publishBasicNotification = () => { + try { + logger.info(TAG, 'publishBasicNotification'); + this.basicContent.title = this.context.resourceManager.getStringSync($r('app.string.basic_notification')); + let notificationContent = notificationContentUtil.initBasicNotificationContent(this.basicContent); + notificationUtil.publishNotification(notificationRequestUtil.initBasicNotificationRequest(notificationContent)); + } catch (error) { + logger.info(TAG, `publishBasicNotification error, error = ${JSON.stringify(error)}`); + } + } + + // 发布长文本类型通知 + publishLongTextNotification = () => { + try { + logger.info(TAG, 'publishLongTextNotification'); + this.basicContent.title = this.context.resourceManager.getStringSync($r('app.string.long_text_notification')); + let notificationLongText = this.context.resourceManager.getStringSync($r('app.string.notification_long_text')); + let notificationBriefText = this.context.resourceManager.getStringSync($r('app.string.notification_brief_text')); + let notificationExpandedText = this.context.resourceManager.getStringSync($r('app.string.notification_expanded_title')); + let notificationContent = notificationContentUtil.initNotificationLongTextContent(this.basicContent, notificationLongText, notificationBriefText, notificationExpandedText); + notificationUtil.publishNotification(notificationRequestUtil.initBasicNotificationRequest(notificationContent)); + } catch (error) { + logger.info(TAG, `publishLongTextNotification error, error = ${JSON.stringify(error)}`); + } + } + + // 发布多行文本类型通知 + publishMultiLineNotification = () => { + try { + logger.info(TAG, 'publishMultiLineNotification'); + this.basicContent.title = this.context.resourceManager.getStringSync($r('app.string.multiline_notification')); + let notificationBriefText = this.context.resourceManager.getStringSync($r('app.string.notification_brief_text')); + let notificationLongTitle = this.context.resourceManager.getStringSync($r('app.string.notification_expanded_title')); + let notificationContent = notificationContentUtil.initNotificationMultiLineContent(this.basicContent, notificationBriefText, notificationLongTitle, MULTI_LINE_CONTENT); + notificationUtil.publishNotification(notificationRequestUtil.initBasicNotificationRequest(notificationContent)); + } catch (error) { + logger.info(TAG, `publishMultiLineNotification error, error = ${JSON.stringify(error)}`); + } + } + + // 发布图片类型通知 + publishPictureNotification = async () => { + try { + logger.info(TAG, 'publishPictureNotification'); + this.basicContent.title = this.context.resourceManager.getStringSync($r('app.string.picture_notification')); + let notificationBriefText = this.context.resourceManager.getStringSync($r('app.string.notification_brief_text')); + let notificationExpandedText = this.context.resourceManager.getStringSync($r('app.string.notification_expanded_title')); + let imageArray = await this.context.resourceManager.getMediaContent($r('app.media.notification_icon').id); + let imageResource = image.createImageSource(imageArray.buffer); + let picture = await imageResource.createPixelMap(); + let notificationContent = notificationContentUtil.initNotificationPictureContent(this.basicContent, notificationBriefText, notificationExpandedText, picture); + notificationUtil.publishNotification(notificationRequestUtil.initBasicNotificationRequest(notificationContent)); + } catch (error) { + logger.info(TAG, `publishPictureNotification error, error = ${JSON.stringify(error)}`); + } + } + + // 发布社交类型的通知 + publishConversationNotification = async () => { + try { + logger.info(TAG, 'publishConversationNotification'); + this.basicContent.title = this.context.resourceManager.getStringSync($r('app.string.conversation_notification')); + let notificationContent = notificationContentUtil.initNotificationConversationContent(this.basicContent); + notificationUtil.publishNotification(notificationRequestUtil.initBasicNotificationRequest(notificationContent), NOTIFICATION_GROUP.CONVERSATION); + } catch (error) { + logger.info(TAG, `publishNotificationWithWantAgent error, error = ${JSON.stringify(error)}`); + } + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/main/ets/pages/Index.ets b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/main/ets/pages/Index.ets new file mode 100644 index 0000000000000000000000000000000000000000..a8e75e52d624f71cc38e219b97a71e0be5300e30 --- /dev/null +++ b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/main/ets/pages/Index.ets @@ -0,0 +1,98 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License") + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { NotificationList } from '../components/NotificationList'; +import { NoticePublish } from '../components/NotificationPublish'; + +export interface TabImage { + selectedImage: Resource, + unselectedImage: Resource, +} + +const MESSAGE_TAB: TabImage = { + selectedImage: $r('app.media.ic_messages_filled'), + unselectedImage: $r('app.media.ic_messages'), +} +const NOTIFICATION_TAB: TabImage = { + selectedImage: $r('app.media.ic_public_send_filled'), + unselectedImage: $r('app.media.ic_public_send'), +} + +interface TAB_INDEX_TYPE { + MESSAGE_TAB: number + NOTIFICATION_TAB: number +} + +const TAB_INDEX: TAB_INDEX_TYPE = { + MESSAGE_TAB: 0, + NOTIFICATION_TAB: 1 +} + +@Entry +@Component +struct Index { + @State tabsIndex: number = 0 + + @Builder TabBarBuilder(index: number, item: TabImage, tabBarName: Resource) { + + Column() { + Image(this.tabsIndex === index ? item.selectedImage : item.unselectedImage) + .width(24) + .height(24) + .margin({ bottom: 10 }) + Text(tabBarName) + .fontSize(10) + + } + .width('100%') + .padding({ top: 0, bottom: 0 }) + .alignItems(HorizontalAlign.Center) + .id(`tabBar${index}`) + } + + build() { + Column() { + Tabs({ barPosition: BarPosition.End }) { + TabContent() { + Column() { + if (this.tabsIndex === TAB_INDEX.MESSAGE_TAB) { + NotificationList() + } + Blank() + } + .height('100%') + } + .tabBar(this.TabBarBuilder(TAB_INDEX.MESSAGE_TAB, MESSAGE_TAB, $r('app.string.messages_list_title'))) + + TabContent() { + Column() { + NoticePublish() + Blank() + } + .height('100%') + } + .tabBar(this.TabBarBuilder(TAB_INDEX.NOTIFICATION_TAB, NOTIFICATION_TAB, $r('app.string.notification_publish_title')),) + } + .barHeight(74) + .barWidth('100%') + .vertical(false) + .onChange((index: number) => { + this.tabsIndex = index + }) + + }.width('100%').height('100%') + .backgroundColor($r('app.color.background_light_gray')) + } +} diff --git a/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/main/module.json5 b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/main/module.json5 new file mode 100644 index 0000000000000000000000000000000000000000..bac72d95926679c3199ad00b9457707b6970fe38 --- /dev/null +++ b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/main/module.json5 @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "module": { + "name": "entry", + "type": "entry", + "description": "$string:module_desc", + "mainElement": "EntryAbility", + "deviceTypes": [ + "default" + ], + "deliveryWithInstall": true, + "installationFree": false, + "pages": "$profile:main_pages", + "abilities": [ + { + "name": "EntryAbility", + "srcEntry": "./ets/entryability/EntryAbility.ts", + "description": "$string:EntryAbility_desc", + "icon": "$media:icon", + "label": "$string:EntryAbility_label", + "startWindowIcon": "$media:icon", + "startWindowBackground": "$color:start_window_background", + "exported": true, + "skills": [ + { + "entities": [ + "entity.system.home" + ], + "actions": [ + "action.system.home" + ] + } + ] + } + ] + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/main/resources/base/element/color.json b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/main/resources/base/element/color.json new file mode 100644 index 0000000000000000000000000000000000000000..3d389adcb8ac417b9c5a3734eee2bc0f0f23f16d --- /dev/null +++ b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/main/resources/base/element/color.json @@ -0,0 +1,28 @@ +{ + "color": [ + { + "name": "start_window_background", + "value": "#FFFFFF" + }, + { + "name": "badge_color", + "value": "#FA2A2D" + }, + { + "name": "title_bar_background", + "value": "#F1F3F5" + }, + { + "name": "background_light_gray", + "value": "#f1f3f5" + }, + { + "name": "notification_button", + "value": "#007DFF" + }, + { + "name": "tab_bar_divider", + "value": "#33182431" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/main/resources/base/element/string.json b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/main/resources/base/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..683e7fb77e4160f19dbf66cc19e4c37d9622dfbf --- /dev/null +++ b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/main/resources/base/element/string.json @@ -0,0 +1,77 @@ +{ + "string": [ + { + "name": "module_desc", + "value": "CustomNotificationBadge" + }, + { + "name": "EntryAbility_desc", + "value": "CustomNotificationBadge" + }, + { + "name": "EntryAbility_label", + "value": "CustomNotificationBadge" + }, + { + "name": "basic_notification", + "value": "Basic notification" + }, + { + "name": "long_text_notification", + "value": "Long text notification" + }, + { + "name": "multiline_notification", + "value": "Multiline notification" + }, + { + "name": "picture_notification", + "value": "Picture notification" + }, + { + "name": "conversation_notification", + "value": "Conversation notification" + }, + { + "name": "notification_title", + "value": "Title" + }, + { + "name": "notification_content", + "value": "Notification content" + }, + { + "name": "notification_additional", + "value": "Notification additional content" + }, + { + "name": "notification_long_text", + "value": "Notification long text" + }, + { + "name": "notification_brief_text", + "value": "Notification brief text,it is a summary of the contents of the notice." + }, + { + "name": "notification_expanded_title", + "value": "Notification expanded title" + }, + { + "name": "cancel_all_notifications", + "value": "Cancel all notifications" + }, + { + "name": "messages_list_title", + "value": "Messages List" + }, + { + "name": "notification_publish_title", + "value": "Notifications Publish" + }, + { + "name": "accept", + "value": "accept" + } + + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/main/resources/base/media/ic_messages.png b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/main/resources/base/media/ic_messages.png new file mode 100644 index 0000000000000000000000000000000000000000..42af29f00534d1d20c67130698f9b3aeda799a08 Binary files /dev/null and b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/main/resources/base/media/ic_messages.png differ diff --git a/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/main/resources/base/media/ic_messages_filled.png b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/main/resources/base/media/ic_messages_filled.png new file mode 100644 index 0000000000000000000000000000000000000000..375e0272c6304606dd6db09370d31e28fc6dee73 Binary files /dev/null and b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/main/resources/base/media/ic_messages_filled.png differ diff --git a/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/main/resources/base/media/ic_public_send.png b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/main/resources/base/media/ic_public_send.png new file mode 100644 index 0000000000000000000000000000000000000000..1c3ed2bc1e32038c94eecff80f9c256b7ebb2ac9 Binary files /dev/null and b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/main/resources/base/media/ic_public_send.png differ diff --git a/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/main/resources/base/media/ic_public_send_filled.png b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/main/resources/base/media/ic_public_send_filled.png new file mode 100644 index 0000000000000000000000000000000000000000..da932e65372db67d4b999a13a6620ffa7d6c7315 Binary files /dev/null and b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/main/resources/base/media/ic_public_send_filled.png differ diff --git a/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/main/resources/base/media/icon.png b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/main/resources/base/media/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ce307a8827bd75456441ceb57d530e4c8d45d36c Binary files /dev/null and b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/main/resources/base/media/icon.png differ diff --git a/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/main/resources/base/media/notification_icon.png b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/main/resources/base/media/notification_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..523fe863b9bdd8f1d80932ac99757f37e532d485 Binary files /dev/null and b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/main/resources/base/media/notification_icon.png differ diff --git a/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/main/resources/base/profile/main_pages.json b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/main/resources/base/profile/main_pages.json new file mode 100644 index 0000000000000000000000000000000000000000..1898d94f58d6128ab712be2c68acc7c98e9ab9ce --- /dev/null +++ b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/main/resources/base/profile/main_pages.json @@ -0,0 +1,5 @@ +{ + "src": [ + "pages/Index" + ] +} diff --git a/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/main/resources/en_US/element/string.json b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/main/resources/en_US/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..dfd58deedec3d72eadfb5dfb8a25607d062807ed --- /dev/null +++ b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/main/resources/en_US/element/string.json @@ -0,0 +1,76 @@ +{ + "string": [ + { + "name": "module_desc", + "value": "CustomNotificationBadge" + }, + { + "name": "EntryAbility_desc", + "value": "CustomNotificationBadge" + }, + { + "name": "EntryAbility_label", + "value": "CustomNotificationBadge" + }, + { + "name": "basic_notification", + "value": "Basic notification" + }, + { + "name": "long_text_notification", + "value": "Long text notification" + }, + { + "name": "multiline_notification", + "value": "Multiline notification" + }, + { + "name": "picture_notification", + "value": "Picture notification" + }, + { + "name": "conversation_notification", + "value": "Conversation notification" + }, + { + "name": "notification_title", + "value": "Title" + }, + { + "name": "notification_content", + "value": "Notification content" + }, + { + "name": "notification_additional", + "value": "Notification additional content" + }, + { + "name": "notification_long_text", + "value": "Notification long text" + }, + { + "name": "notification_brief_text", + "value": "Notification brief text,it is a summary of the contents of the notice." + }, + { + "name": "notification_expanded_title", + "value": "Notification expanded title" + }, + { + "name": "cancel_all_notifications", + "value": "Cancel all notifications" + }, + { + "name": "messages_list_title", + "value": "Messages List" + }, + { + "name": "notification_publish_title", + "value": "Notifications Publish" + }, + { + "name": "accept", + "value": "accept" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/main/resources/zh_CN/element/string.json b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/main/resources/zh_CN/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..d3b7948b9a69955796041d246d3ad853571cad8c --- /dev/null +++ b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/main/resources/zh_CN/element/string.json @@ -0,0 +1,76 @@ +{ + "string": [ + { + "name": "module_desc", + "value": "自定义通知角标" + }, + { + "name": "EntryAbility_desc", + "value": "自定义通知角标" + }, + { + "name": "EntryAbility_label", + "value": "自定义通知角标" + }, + { + "name": "basic_notification", + "value": "基本类型通知" + }, + { + "name": "long_text_notification", + "value": "长文本类型通知" + }, + { + "name": "multiline_notification", + "value": "多行文本类型通知" + }, + { + "name": "picture_notification", + "value": "图片类型通知" + }, + { + "name": "conversation_notification", + "value": "社交类型通知" + }, + { + "name": "notification_title", + "value": "标题" + }, + { + "name": "notification_content", + "value": "通知内容" + }, + { + "name": "notification_additional", + "value": "通知次要内容" + }, + { + "name": "notification_long_text", + "value": "通知的长文本" + }, + { + "name": "notification_brief_text", + "value": "通知概要内容,是对通知内容的总结。" + }, + { + "name": "notification_expanded_title", + "value": "通知展开时的标题" + }, + { + "name": "cancel_all_notifications", + "value": "取消所有通知" + }, + { + "name": "messages_list_title", + "value": "通知列表" + }, + { + "name": "notification_publish_title", + "value": "通知发送" + }, + { + "name": "accept", + "value": "允许" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/ohosTest/ets/TestRunner/OpenHarmonyTestRunner.ts b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/ohosTest/ets/TestRunner/OpenHarmonyTestRunner.ts new file mode 100644 index 0000000000000000000000000000000000000000..b09be7a37c37b66c7210a3f5a390146041cb19ae --- /dev/null +++ b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/ohosTest/ets/TestRunner/OpenHarmonyTestRunner.ts @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import hilog from '@ohos.hilog'; +import TestRunner from '@ohos.application.testRunner'; +import AbilityDelegatorRegistry from '@ohos.app.ability.abilityDelegatorRegistry'; + +let abilityDelegator = undefined; +let abilityDelegatorArguments = undefined; + +async function onAbilityCreateCallback() { + hilog.info(0x0000, 'testTag', '%{public}s', 'onAbilityCreateCallback'); +} + +async function addAbilityMonitorCallback(err: any) { + hilog.info(0x0000, 'testTag', 'addAbilityMonitorCallback : %{public}s', JSON.stringify(err) ?? ''); +} + +export default class OpenHarmonyTestRunner implements TestRunner { + constructor() { + } + + onPrepare() { + hilog.info(0x0000, 'testTag', '%{public}s', 'OpenHarmonyTestRunner OnPrepare '); + } + + async onRun() { + hilog.info(0x0000, 'testTag', '%{public}s', 'OpenHarmonyTestRunner onRun run'); + abilityDelegatorArguments = AbilityDelegatorRegistry.getArguments(); + abilityDelegator = AbilityDelegatorRegistry.getAbilityDelegator(); + let testAbilityName = abilityDelegatorArguments.bundleName + '.TestAbility'; + let lMonitor = { + abilityName: testAbilityName, + onAbilityCreate: onAbilityCreateCallback, + }; + abilityDelegator.addAbilityMonitor(lMonitor, addAbilityMonitorCallback); + let cmd = 'aa start -d 0 -a TestAbility' + ' -b ' + abilityDelegatorArguments.bundleName; + let debug = abilityDelegatorArguments.parameters['-D']; + if (debug === 'true') { + cmd += ' -D'; + } + hilog.info(0x0000, 'testTag', 'cmd : %{public}s', cmd); + abilityDelegator.executeShellCommand(cmd, + (err: any, d: any) => { + hilog.info(0x0000, 'testTag', 'executeShellCommand : err : %{public}s', JSON.stringify(err) ?? ''); + hilog.info(0x0000, 'testTag', 'executeShellCommand : data : %{public}s', d.stdResult ?? ''); + hilog.info(0x0000, 'testTag', 'executeShellCommand : data : %{public}s', d.exitCode ?? ''); + }) + hilog.info(0x0000, 'testTag', '%{public}s', 'OpenHarmonyTestRunner onRun end'); + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/ohosTest/ets/test/Ability.test.ets b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/ohosTest/ets/test/Ability.test.ets new file mode 100644 index 0000000000000000000000000000000000000000..8c7f6252a6ffeeb3574936020b69a0e3c3b2042b --- /dev/null +++ b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/ohosTest/ets/test/Ability.test.ets @@ -0,0 +1,175 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import hilog from '@ohos.hilog'; +import { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from '@ohos/hypium'; +import AbilityDelegatorRegistry from '@ohos.app.ability.abilityDelegatorRegistry'; +import { Driver, ON } from '@ohos.UiTest'; +import UIAbility from '@ohos.app.ability.UIAbility'; +import Base from '@ohos.base'; + +const TAG: string = '[Samples_Badge]'; +const DOMAIN = 0xF811; +const BUNDLE = 'Badge_'; +let ability: UIAbility; + +export default function abilityTest() { + describe('ActsAbilityTest', () => { + /** + * 打开应用 + */ + it(BUNDLE + 'StartAbility_001', 0, async (done: Function) => { + hilog.info(DOMAIN, TAG, BUNDLE + 'StartAbility_001 begin'); + let abilityDelegator = AbilityDelegatorRegistry.getAbilityDelegator(); + try { + await abilityDelegator.startAbility({ + bundleName: 'com.samples.customnotificationbadge', + abilityName: 'EntryAbility' + }); + done(); + } catch (expection) { + hilog.info(DOMAIN, TAG, 'StartAbility end err:' + JSON.stringify(expection as Base.BusinessError)); + expect(0).assertEqual(expection?.code); + done(); + } + ability = await abilityDelegator.getCurrentTopAbility(); + hilog.info(DOMAIN, TAG, BUNDLE + 'StartAbility_001 end'); + }) + /** + * 获取权限 + */ + it(BUNDLE + 'RequestPermissionFunction_001', 1, async () => { + hilog.info(DOMAIN, TAG, BUNDLE + 'RequestPermissionFunction_001 begin'); + let driver = Driver.create(); + await driver.delayMs(1000); + // 获取允许 + hilog.info(DOMAIN, TAG, BUNDLE + 'RequestPermissionFunction_001 requestPermission'); + let resourceManager = ability.context.resourceManager; + await driver.assertComponentExist(ON.text(await resourceManager.getStringValue($r('app.string.accept')))); + let btnAccept = await driver.findComponent(ON.text(await resourceManager.getStringValue($r('app.string.accept')))); + await driver.delayMs(200); + await btnAccept.click(); + await driver.delayMs(200); + hilog.info(DOMAIN, TAG, BUNDLE + 'RequestPermissionFunction_001 end'); + }) + /** + * 发送基本类型通知 + */ + it(BUNDLE + 'BasicNotification_001', 1, async () => { + hilog.info(DOMAIN, TAG, BUNDLE + 'BasicNotification_001 begin'); + let driver = Driver.create(); + await driver.delayMs(1000); + let resourceManager = ability.context.resourceManager; + await driver.assertComponentExist(ON.id('tabBar0')); + await driver.assertComponentExist(ON.id('tabBar1')); + let messages = await driver.findComponent(ON.id('tabBar0')); + let notification = await driver.findComponent(ON.id('tabBar1')); + + await driver.delayMs(200); + await notification.click(); + await driver.delayMs(200); + + await driver.assertComponentExist(ON.text(await resourceManager.getStringValue($r('app.string.basic_notification')))); + let btnAccept = await driver.findComponent(ON.text(await resourceManager.getStringValue($r('app.string.basic_notification')))); + await driver.delayMs(200); + await btnAccept.click(); + await driver.delayMs(200); + await messages.click(); + await driver.delayMs(2000); + hilog.info(DOMAIN, TAG, BUNDLE + 'BasicNotification_001 end'); + }) + /** + * 发送长文本类型通知 + */ + it(BUNDLE + 'LongTextNotification_001', 1, async () => { + hilog.info(DOMAIN, TAG, BUNDLE + 'LongTextNotification_001 begin'); + let driver = Driver.create(); + await driver.delayMs(1000); + let resourceManager = ability.context.resourceManager; + await driver.assertComponentExist(ON.id('tabBar0')); + await driver.assertComponentExist(ON.id('tabBar1')); + let messages = await driver.findComponent(ON.id('tabBar0')); + let notification = await driver.findComponent(ON.id('tabBar1')); + + await driver.delayMs(200); + await notification.click(); + await driver.delayMs(200); + + await driver.assertComponentExist(ON.text(await resourceManager.getStringValue($r('app.string.long_text_notification')))); + let btnAccept = await driver.findComponent(ON.text(await resourceManager.getStringValue($r('app.string.long_text_notification')))); + await driver.delayMs(200); + await btnAccept.click(); + await driver.delayMs(200); + await driver.delayMs(200); + await messages.click(); + await driver.delayMs(2000); + hilog.info(DOMAIN, TAG, BUNDLE + 'LongTextNotification_001 end'); + }) + /** + * 发送多行文本类型通知 + */ + it(BUNDLE + 'MultilineNotification_001', 1, async () => { + hilog.info(DOMAIN, TAG, BUNDLE + 'MultilineNotification_001 begin'); + let driver = Driver.create(); + await driver.delayMs(1000); + let resourceManager = ability.context.resourceManager; + await driver.assertComponentExist(ON.id('tabBar0')); + await driver.assertComponentExist(ON.id('tabBar1')); + let messages = await driver.findComponent(ON.id('tabBar0')); + let notification = await driver.findComponent(ON.id('tabBar1')); + + await driver.delayMs(200); + await notification.click(); + await driver.delayMs(200); + + await driver.assertComponentExist(ON.text(await resourceManager.getStringValue($r('app.string.multiline_notification')))); + let btnAccept = await driver.findComponent(ON.text(await resourceManager.getStringValue($r('app.string.multiline_notification')))); + await driver.delayMs(200); + await btnAccept.click(); + await driver.delayMs(200); + await messages.click(); + await driver.delayMs(2000); + hilog.info(DOMAIN, TAG, BUNDLE + 'MultilineNotification_001 end'); + }) + /** + * 发送图片类型通知 + */ + it(BUNDLE + 'PictureNotification_001', 1, async () => { + hilog.info(DOMAIN, TAG, BUNDLE + 'PictureNotification_001 begin'); + let driver = Driver.create(); + await driver.delayMs(1000); + let resourceManager = ability.context.resourceManager; + await driver.assertComponentExist(ON.id('tabBar0')); + await driver.assertComponentExist(ON.id('tabBar1')); + let messages = await driver.findComponent(ON.id('tabBar0')); + let notification = await driver.findComponent(ON.id('tabBar1')); + + await driver.delayMs(200); + await notification.click(); + await driver.delayMs(200); + + await driver.assertComponentExist(ON.text(await resourceManager.getStringValue($r('app.string.picture_notification')))); + let btnAccept = await driver.findComponent(ON.text(await resourceManager.getStringValue($r('app.string.picture_notification')))); + await driver.delayMs(200); + await btnAccept.click(); + await driver.delayMs(200); + await driver.delayMs(200); + await messages.click(); + await driver.delayMs(2000); + hilog.info(DOMAIN, TAG, BUNDLE + 'PictureNotification_001 end'); + }) + + }) +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/ohosTest/ets/test/List.test.ets b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/ohosTest/ets/test/List.test.ets new file mode 100644 index 0000000000000000000000000000000000000000..657d194164f932396390ddb56c59cbd65c7d1259 --- /dev/null +++ b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/ohosTest/ets/test/List.test.ets @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import abilityTest from './Ability.test'; + +export default function testsuite() { + abilityTest(); +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/ohosTest/ets/testability/TestAbility.ets b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/ohosTest/ets/testability/TestAbility.ets new file mode 100644 index 0000000000000000000000000000000000000000..e67a9f814502d90e7afddbd62c8eaed6603de607 --- /dev/null +++ b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/ohosTest/ets/testability/TestAbility.ets @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import UIAbility from '@ohos.app.ability.UIAbility'; +import AbilityDelegatorRegistry from '@ohos.app.ability.abilityDelegatorRegistry'; +import hilog from '@ohos.hilog'; +import { Hypium } from '@ohos/hypium'; +import window from '@ohos.window'; +import testsuite from '../test/List.test'; +import Want from '@ohos.app.ability.Want'; +import AbilityConstant from '@ohos.app.ability.AbilityConstant'; + +export default class TestAbility extends UIAbility { + onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) { + hilog.info(0x0000, 'testTag', '%{public}s', 'TestAbility onCreate'); + hilog.info(0x0000, 'testTag', '%{public}s', 'want param:' + JSON.stringify(want) ?? ''); + hilog.info(0x0000, 'testTag', '%{public}s', 'launchParam:' + JSON.stringify(launchParam) ?? ''); + let abilityDelegator = AbilityDelegatorRegistry.getAbilityDelegator(); + let abilityDelegatorArguments = AbilityDelegatorRegistry.getArguments(); + hilog.info(0x0000, 'testTag', '%{public}s', 'start run testcase!!!'); + Hypium.hypiumTest(abilityDelegator, abilityDelegatorArguments, testsuite); + } + + onDestroy() { + hilog.info(0x0000, 'testTag', '%{public}s', 'TestAbility onDestroy'); + } + + onWindowStageCreate(windowStage: window.WindowStage) { + hilog.info(0x0000, 'testTag', '%{public}s', 'TestAbility onWindowStageCreate'); + windowStage.loadContent('testability/pages/Index', (err, data) => { + if (err.code) { + hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? ''); + return; + } + hilog.info(0x0000, 'testTag', 'Succeeded in loading the content. Data: %{public}s', + JSON.stringify(data) ?? ''); + }); + } + + onWindowStageDestroy() { + hilog.info(0x0000, 'testTag', '%{public}s', 'TestAbility onWindowStageDestroy'); + } + + onForeground() { + hilog.info(0x0000, 'testTag', '%{public}s', 'TestAbility onForeground'); + } + + onBackground() { + hilog.info(0x0000, 'testTag', '%{public}s', 'TestAbility onBackground'); + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/ohosTest/ets/testability/pages/Index.ets b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/ohosTest/ets/testability/pages/Index.ets new file mode 100644 index 0000000000000000000000000000000000000000..e91baaf849736366acab7c54a1901943a480a1d2 --- /dev/null +++ b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/ohosTest/ets/testability/pages/Index.ets @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import hilog from '@ohos.hilog'; + +@Entry +@Component +struct Index { + aboutToAppear() { + hilog.info(0x0000, 'testTag', '%{public}s', 'TestAbility index aboutToAppear'); + } + + @State message: string = 'Hello World' + + build() { + Row() { + Column() { + Text(this.message) + .fontSize(50) + .fontWeight(FontWeight.Bold) + Button() { + Text('next page') + .fontSize(20) + .fontWeight(FontWeight.Bold) + } + .type(ButtonType.Capsule) + .margin({ + top: 20 + }) + .backgroundColor('#0D9FFB') + .width('35%') + .height('5%') + .onClick(() => { + }) + } + .width('100%') + } + .height('100%') + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/ohosTest/module.json5 b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/ohosTest/module.json5 new file mode 100644 index 0000000000000000000000000000000000000000..c6ad62fbbd46259bb51381022bcdce57349e123c --- /dev/null +++ b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/ohosTest/module.json5 @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "module": { + "name": "entry_test", + "type": "feature", + "description": "$string:module_test_desc", + "mainElement": "TestAbility", + "deviceTypes": [ + "default" + ], + "deliveryWithInstall": true, + "installationFree": false, + "pages": "$profile:test_pages", + "abilities": [ + { + "name": "TestAbility", + "srcEntry": "./ets/testability/TestAbility.ets", + "description": "$string:TestAbility_desc", + "icon": "$media:icon", + "label": "$string:TestAbility_label", + "exported": true, + "startWindowIcon": "$media:icon", + "startWindowBackground": "$color:start_window_background", + "skills": [ + { + "actions": [ + "action.system.home" + ], + "entities": [ + "entity.system.home" + ] + } + ] + } + ] + } +} diff --git a/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/ohosTest/resources/base/element/color.json b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/ohosTest/resources/base/element/color.json new file mode 100644 index 0000000000000000000000000000000000000000..3c712962da3c2751c2b9ddb53559afcbd2b54a02 --- /dev/null +++ b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/ohosTest/resources/base/element/color.json @@ -0,0 +1,8 @@ +{ + "color": [ + { + "name": "start_window_background", + "value": "#FFFFFF" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/ohosTest/resources/base/element/string.json b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/ohosTest/resources/base/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..eea35ddc16a5200c1e0491923431ae85c38ab3af --- /dev/null +++ b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/ohosTest/resources/base/element/string.json @@ -0,0 +1,76 @@ +{ + "string": [ + { + "name": "module_test_desc", + "value": "test ability description" + }, + { + "name": "TestAbility_desc", + "value": "the test ability" + }, + { + "name": "TestAbility_label", + "value": "test label" + }, + { + "name": "basic_notification", + "value": "Basic notification" + }, + { + "name": "long_text_notification", + "value": "Long text notification" + }, + { + "name": "multiline_notification", + "value": "Multiline notification" + }, + { + "name": "picture_notification", + "value": "Picture notification" + }, + { + "name": "conversation_notification", + "value": "Conversation notification" + }, + { + "name": "notification_title", + "value": "Title" + }, + { + "name": "notification_content", + "value": "Notification content" + }, + { + "name": "notification_additional", + "value": "Notification additional content" + }, + { + "name": "notification_long_text", + "value": "Notification long text" + }, + { + "name": "notification_brief_text", + "value": "Notification brief text,it is a summary of the contents of the notice." + }, + { + "name": "notification_expanded_title", + "value": "Notification expanded title" + }, + { + "name": "cancel_all_notifications", + "value": "Cancel all notifications" + }, + { + "name": "messages_list_title", + "value": "Messages List" + }, + { + "name": "notification_publish_title", + "value": "Notifications Publish" + }, + { + "name": "accept", + "value": "accept" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/ohosTest/resources/base/media/icon.png b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/ohosTest/resources/base/media/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ce307a8827bd75456441ceb57d530e4c8d45d36c Binary files /dev/null and b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/ohosTest/resources/base/media/icon.png differ diff --git a/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/ohosTest/resources/base/profile/test_pages.json b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/ohosTest/resources/base/profile/test_pages.json new file mode 100644 index 0000000000000000000000000000000000000000..b7e7343cacb32ce982a45e76daad86e435e054fe --- /dev/null +++ b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/ohosTest/resources/base/profile/test_pages.json @@ -0,0 +1,5 @@ +{ + "src": [ + "testability/pages/Index" + ] +} diff --git a/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/ohosTest/resources/en_US/element/string.json b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/ohosTest/resources/en_US/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..eea35ddc16a5200c1e0491923431ae85c38ab3af --- /dev/null +++ b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/ohosTest/resources/en_US/element/string.json @@ -0,0 +1,76 @@ +{ + "string": [ + { + "name": "module_test_desc", + "value": "test ability description" + }, + { + "name": "TestAbility_desc", + "value": "the test ability" + }, + { + "name": "TestAbility_label", + "value": "test label" + }, + { + "name": "basic_notification", + "value": "Basic notification" + }, + { + "name": "long_text_notification", + "value": "Long text notification" + }, + { + "name": "multiline_notification", + "value": "Multiline notification" + }, + { + "name": "picture_notification", + "value": "Picture notification" + }, + { + "name": "conversation_notification", + "value": "Conversation notification" + }, + { + "name": "notification_title", + "value": "Title" + }, + { + "name": "notification_content", + "value": "Notification content" + }, + { + "name": "notification_additional", + "value": "Notification additional content" + }, + { + "name": "notification_long_text", + "value": "Notification long text" + }, + { + "name": "notification_brief_text", + "value": "Notification brief text,it is a summary of the contents of the notice." + }, + { + "name": "notification_expanded_title", + "value": "Notification expanded title" + }, + { + "name": "cancel_all_notifications", + "value": "Cancel all notifications" + }, + { + "name": "messages_list_title", + "value": "Messages List" + }, + { + "name": "notification_publish_title", + "value": "Notifications Publish" + }, + { + "name": "accept", + "value": "accept" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/ohosTest/resources/zh_CN/element/string.json b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/ohosTest/resources/zh_CN/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..7db2f17bfd35f4ed8ba165486b5160451c577527 --- /dev/null +++ b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/entry/src/ohosTest/resources/zh_CN/element/string.json @@ -0,0 +1,76 @@ +{ + "string": [ + { + "name": "module_test_desc", + "value": "自定义通知角标" + }, + { + "name": "TestAbility_desc", + "value": "自定义通知角标" + }, + { + "name": "TestAbility_label", + "value": "自定义通知角标" + }, + { + "name": "basic_notification", + "value": "基本类型通知" + }, + { + "name": "long_text_notification", + "value": "长文本类型通知" + }, + { + "name": "multiline_notification", + "value": "多行文本类型通知" + }, + { + "name": "picture_notification", + "value": "图片类型通知" + }, + { + "name": "conversation_notification", + "value": "社交类型通知" + }, + { + "name": "notification_title", + "value": "标题" + }, + { + "name": "notification_content", + "value": "通知内容" + }, + { + "name": "notification_additional", + "value": "通知次要内容" + }, + { + "name": "notification_long_text", + "value": "通知的长文本" + }, + { + "name": "notification_brief_text", + "value": "通知概要内容,是对通知内容的总结。" + }, + { + "name": "notification_expanded_title", + "value": "通知展开时的标题" + }, + { + "name": "cancel_all_notifications", + "value": "取消所有通知" + }, + { + "name": "messages_list_title", + "value": "消息列表" + }, + { + "name": "notification_publish_title", + "value": "通知发送" + }, + { + "name": "accept", + "value": "允许" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Notification/CustomNotificationBadge/hvigor/hvigor-config.json5 b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/hvigor/hvigor-config.json5 new file mode 100644 index 0000000000000000000000000000000000000000..0a65640e18744a20aa793bebb2b571e31fc63399 --- /dev/null +++ b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/hvigor/hvigor-config.json5 @@ -0,0 +1,18 @@ +{ + "hvigorVersion": "3.0.9-s", + "dependencies": { + "@ohos/hvigor-ohos-plugin": "3.0.9-s" + }, + "execution": { + // "daemon": true, /* Enable daemon compilation. Default: true */ + // "incremental": true, /* Enable incremental compilation. Default: true */ + // "parallel": true, /* Enable parallel compilation. Default: true */ + // "typeCheck": false, /* Enable typeCheck. Default: false */ + }, + "logging": { + // "level": "info" /* Define the log level. Value: [ "debug" | "info" | "warn" | "error" ]. Default: "info" */ + }, + "debugging": { + // "stacktrace": false /* Disable stacktrace compilation. Default: false */ + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Notification/CustomNotificationBadge/hvigor/hvigor-wrapper.js b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/hvigor/hvigor-wrapper.js new file mode 100644 index 0000000000000000000000000000000000000000..994f22987bd0739b9faa07c966b066c2d9218602 --- /dev/null +++ b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/hvigor/hvigor-wrapper.js @@ -0,0 +1,2 @@ +"use strict";var e=require("fs"),t=require("path"),n=require("os"),r=require("crypto"),u=require("child_process"),o=require("constants"),i=require("stream"),s=require("util"),c=require("assert"),a=require("tty"),l=require("zlib"),f=require("net");function d(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var D=d(e),p=d(t),E=d(n),m=d(r),h=d(u),y=d(o),C=d(i),F=d(s),g=d(c),A=d(a),v=d(l),S=d(f),w="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},O={},b={},_={},B=w&&w.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(_,"__esModule",{value:!0}),_.isMac=_.isLinux=_.isWindows=void 0;const P=B(E.default),k="Windows_NT",x="Linux",N="Darwin";_.isWindows=function(){return P.default.type()===k},_.isLinux=function(){return P.default.type()===x},_.isMac=function(){return P.default.type()===N};var I={},T=w&&w.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var u=Object.getOwnPropertyDescriptor(t,n);u&&!("get"in u?!t.__esModule:u.writable||u.configurable)||(u={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,u)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),R=w&&w.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),M=w&&w.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&T(t,e,n);return R(t,e),t};Object.defineProperty(I,"__esModule",{value:!0}),I.hash=void 0;const L=M(m.default);I.hash=function(e,t="md5"){return L.createHash(t).update(e,"utf-8").digest("hex")},function(e){var t=w&&w.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var u=Object.getOwnPropertyDescriptor(t,n);u&&!("get"in u?!t.__esModule:u.writable||u.configurable)||(u={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,u)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),n=w&&w.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),r=w&&w.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(null!=e)for(var u in e)"default"!==u&&Object.prototype.hasOwnProperty.call(e,u)&&t(r,e,u);return n(r,e),r};Object.defineProperty(e,"__esModule",{value:!0}),e.HVIGOR_BOOT_JS_FILE_PATH=e.HVIGOR_PROJECT_DEPENDENCY_PACKAGE_JSON_PATH=e.HVIGOR_PROJECT_DEPENDENCIES_HOME=e.HVIGOR_PROJECT_WRAPPER_HOME=e.HVIGOR_PROJECT_NAME=e.HVIGOR_PROJECT_ROOT_DIR=e.HVIGOR_PROJECT_CACHES_HOME=e.HVIGOR_PNPM_STORE_PATH=e.HVIGOR_WRAPPER_PNPM_SCRIPT_PATH=e.HVIGOR_WRAPPER_TOOLS_HOME=e.HVIGOR_USER_HOME=e.DEFAULT_PACKAGE_JSON=e.DEFAULT_HVIGOR_CONFIG_JSON_FILE_NAME=e.PNPM=e.HVIGOR=e.NPM_TOOL=e.PNPM_TOOL=e.HVIGOR_ENGINE_PACKAGE_NAME=void 0;const u=r(p.default),o=r(E.default),i=_,s=I;e.HVIGOR_ENGINE_PACKAGE_NAME="@ohos/hvigor",e.PNPM_TOOL=(0,i.isWindows)()?"pnpm.cmd":"pnpm",e.NPM_TOOL=(0,i.isWindows)()?"npm.cmd":"npm",e.HVIGOR="hvigor",e.PNPM="pnpm",e.DEFAULT_HVIGOR_CONFIG_JSON_FILE_NAME="hvigor-config.json5",e.DEFAULT_PACKAGE_JSON="package.json",e.HVIGOR_USER_HOME=u.resolve(o.homedir(),".hvigor"),e.HVIGOR_WRAPPER_TOOLS_HOME=u.resolve(e.HVIGOR_USER_HOME,"wrapper","tools"),e.HVIGOR_WRAPPER_PNPM_SCRIPT_PATH=u.resolve(e.HVIGOR_WRAPPER_TOOLS_HOME,"node_modules",".bin",e.PNPM_TOOL),e.HVIGOR_PNPM_STORE_PATH=u.resolve(e.HVIGOR_USER_HOME,"caches"),e.HVIGOR_PROJECT_CACHES_HOME=u.resolve(e.HVIGOR_USER_HOME,"project_caches"),e.HVIGOR_PROJECT_ROOT_DIR=process.cwd(),e.HVIGOR_PROJECT_NAME=u.basename((0,s.hash)(e.HVIGOR_PROJECT_ROOT_DIR)),e.HVIGOR_PROJECT_WRAPPER_HOME=u.resolve(e.HVIGOR_PROJECT_ROOT_DIR,e.HVIGOR),e.HVIGOR_PROJECT_DEPENDENCIES_HOME=u.resolve(e.HVIGOR_PROJECT_CACHES_HOME,e.HVIGOR_PROJECT_NAME,"workspace"),e.HVIGOR_PROJECT_DEPENDENCY_PACKAGE_JSON_PATH=u.resolve(e.HVIGOR_PROJECT_DEPENDENCIES_HOME,e.DEFAULT_PACKAGE_JSON),e.HVIGOR_BOOT_JS_FILE_PATH=u.resolve(e.HVIGOR_PROJECT_DEPENDENCIES_HOME,"node_modules","@ohos","hvigor","bin","hvigor.js")}(b);var j={},$={};Object.defineProperty($,"__esModule",{value:!0}),$.logInfoPrintConsole=$.logErrorAndExit=void 0,$.logErrorAndExit=function(e){e instanceof Error?console.error(e.message):console.error(e),process.exit(-1)},$.logInfoPrintConsole=function(e){console.log(e)};var H=w&&w.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var u=Object.getOwnPropertyDescriptor(t,n);u&&!("get"in u?!t.__esModule:u.writable||u.configurable)||(u={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,u)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),J=w&&w.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),G=w&&w.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&H(t,e,n);return J(t,e),t},V=w&&w.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(j,"__esModule",{value:!0}),j.isFileExists=j.offlinePluginConversion=j.executeCommand=j.getNpmPath=j.hasNpmPackInPaths=void 0;const U=h.default,W=G(p.default),z=b,K=$,q=V(D.default);j.hasNpmPackInPaths=function(e,t){try{return require.resolve(e,{paths:[...t]}),!0}catch(e){return!1}},j.getNpmPath=function(){const e=process.execPath;return W.join(W.dirname(e),z.NPM_TOOL)},j.executeCommand=function(e,t,n){0!==(0,U.spawnSync)(e,t,n).status&&(0,K.logErrorAndExit)(`Error: ${e} ${t} execute failed.See above for details.`)},j.offlinePluginConversion=function(e,t){return t.startsWith("file:")||t.endsWith(".tgz")?W.resolve(e,z.HVIGOR,t.replace("file:","")):t},j.isFileExists=function(e){return q.default.existsSync(e)&&q.default.statSync(e).isFile()},function(e){var t=w&&w.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var u=Object.getOwnPropertyDescriptor(t,n);u&&!("get"in u?!t.__esModule:u.writable||u.configurable)||(u={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,u)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),n=w&&w.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),r=w&&w.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(null!=e)for(var u in e)"default"!==u&&Object.prototype.hasOwnProperty.call(e,u)&&t(r,e,u);return n(r,e),r},u=w&&w.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,"__esModule",{value:!0}),e.executeInstallPnpm=e.isPnpmAvailable=e.environmentHandler=e.checkNpmConifg=e.PNPM_VERSION=void 0;const o=r(D.default),i=b,s=j,c=r(p.default),a=$,l=h.default,f=u(E.default);e.PNPM_VERSION="7.30.0",e.checkNpmConifg=function(){const e=c.resolve(i.HVIGOR_PROJECT_ROOT_DIR,".npmrc"),t=c.resolve(f.default.homedir(),".npmrc");if((0,s.isFileExists)(e)||(0,s.isFileExists)(t))return;const n=(0,s.getNpmPath)(),r=(0,l.spawnSync)(n,["config","get","prefix"],{cwd:i.HVIGOR_PROJECT_ROOT_DIR});if(0!==r.status||!r.stdout)return void(0,a.logErrorAndExit)("Error: The hvigor depends on the npmrc file. Configure the npmrc file first.");const u=c.resolve(`${r.stdout}`.replace(/[\r\n]/gi,""),".npmrc");(0,s.isFileExists)(u)||(0,a.logErrorAndExit)("Error: The hvigor depends on the npmrc file. Configure the npmrc file first.")},e.environmentHandler=function(){process.env["npm_config_update-notifier"]="false"},e.isPnpmAvailable=function(){return!!o.existsSync(i.HVIGOR_WRAPPER_PNPM_SCRIPT_PATH)&&(0,s.hasNpmPackInPaths)("pnpm",[i.HVIGOR_WRAPPER_TOOLS_HOME])},e.executeInstallPnpm=function(){(0,a.logInfoPrintConsole)(`Installing pnpm@${e.PNPM_VERSION}...`);const t=(0,s.getNpmPath)();!function(){const t=c.resolve(i.HVIGOR_WRAPPER_TOOLS_HOME,i.DEFAULT_PACKAGE_JSON);try{o.existsSync(i.HVIGOR_WRAPPER_TOOLS_HOME)||o.mkdirSync(i.HVIGOR_WRAPPER_TOOLS_HOME,{recursive:!0});const n={dependencies:{}};n.dependencies[i.PNPM]=e.PNPM_VERSION,o.writeFileSync(t,JSON.stringify(n))}catch(e){(0,a.logErrorAndExit)(`Error: EPERM: operation not permitted,create ${t} failed.`)}}(),(0,s.executeCommand)(t,["install","pnpm"],{cwd:i.HVIGOR_WRAPPER_TOOLS_HOME,stdio:["inherit","inherit","inherit"],env:process.env}),(0,a.logInfoPrintConsole)("Pnpm install success.")}}(O);var Y={},X={},Z={},Q={};Object.defineProperty(Q,"__esModule",{value:!0}),Q.Unicode=void 0;class ee{}Q.Unicode=ee,ee.Space_Separator=/[\u1680\u2000-\u200A\u202F\u205F\u3000]/,ee.ID_Start=/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/,ee.ID_Continue=/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDE00-\uDE3E\uDE47\uDE50-\uDE83\uDE86-\uDE99\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/,Object.defineProperty(Z,"__esModule",{value:!0}),Z.JudgeUtil=void 0;const te=Q;Z.JudgeUtil=class{static isIgnoreChar(e){return"string"==typeof e&&("\t"===e||"\v"===e||"\f"===e||" "===e||" "===e||"\ufeff"===e||"\n"===e||"\r"===e||"\u2028"===e||"\u2029"===e)}static isSpaceSeparator(e){return"string"==typeof e&&te.Unicode.Space_Separator.test(e)}static isIdStartChar(e){return"string"==typeof e&&(e>="a"&&e<="z"||e>="A"&&e<="Z"||"$"===e||"_"===e||te.Unicode.ID_Start.test(e))}static isIdContinueChar(e){return"string"==typeof e&&(e>="a"&&e<="z"||e>="A"&&e<="Z"||e>="0"&&e<="9"||"$"===e||"_"===e||"‌"===e||"‍"===e||te.Unicode.ID_Continue.test(e))}static isDigitWithoutZero(e){return/[1-9]/.test(e)}static isDigit(e){return"string"==typeof e&&/[0-9]/.test(e)}static isHexDigit(e){return"string"==typeof e&&/[0-9A-Fa-f]/.test(e)}};var ne={},re={fromCallback:function(e){return Object.defineProperty((function(...t){if("function"!=typeof t[t.length-1])return new Promise(((n,r)=>{e.call(this,...t,((e,t)=>null!=e?r(e):n(t)))}));e.apply(this,t)}),"name",{value:e.name})},fromPromise:function(e){return Object.defineProperty((function(...t){const n=t[t.length-1];if("function"!=typeof n)return e.apply(this,t);e.apply(this,t.slice(0,-1)).then((e=>n(null,e)),n)}),"name",{value:e.name})}},ue=y.default,oe=process.cwd,ie=null,se=process.env.GRACEFUL_FS_PLATFORM||process.platform;process.cwd=function(){return ie||(ie=oe.call(process)),ie};try{process.cwd()}catch(e){}if("function"==typeof process.chdir){var ce=process.chdir;process.chdir=function(e){ie=null,ce.call(process,e)},Object.setPrototypeOf&&Object.setPrototypeOf(process.chdir,ce)}var ae=function(e){ue.hasOwnProperty("O_SYMLINK")&&process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)&&function(e){e.lchmod=function(t,n,r){e.open(t,ue.O_WRONLY|ue.O_SYMLINK,n,(function(t,u){t?r&&r(t):e.fchmod(u,n,(function(t){e.close(u,(function(e){r&&r(t||e)}))}))}))},e.lchmodSync=function(t,n){var r,u=e.openSync(t,ue.O_WRONLY|ue.O_SYMLINK,n),o=!0;try{r=e.fchmodSync(u,n),o=!1}finally{if(o)try{e.closeSync(u)}catch(e){}else e.closeSync(u)}return r}}(e);e.lutimes||function(e){ue.hasOwnProperty("O_SYMLINK")&&e.futimes?(e.lutimes=function(t,n,r,u){e.open(t,ue.O_SYMLINK,(function(t,o){t?u&&u(t):e.futimes(o,n,r,(function(t){e.close(o,(function(e){u&&u(t||e)}))}))}))},e.lutimesSync=function(t,n,r){var u,o=e.openSync(t,ue.O_SYMLINK),i=!0;try{u=e.futimesSync(o,n,r),i=!1}finally{if(i)try{e.closeSync(o)}catch(e){}else e.closeSync(o)}return u}):e.futimes&&(e.lutimes=function(e,t,n,r){r&&process.nextTick(r)},e.lutimesSync=function(){})}(e);e.chown=r(e.chown),e.fchown=r(e.fchown),e.lchown=r(e.lchown),e.chmod=t(e.chmod),e.fchmod=t(e.fchmod),e.lchmod=t(e.lchmod),e.chownSync=u(e.chownSync),e.fchownSync=u(e.fchownSync),e.lchownSync=u(e.lchownSync),e.chmodSync=n(e.chmodSync),e.fchmodSync=n(e.fchmodSync),e.lchmodSync=n(e.lchmodSync),e.stat=o(e.stat),e.fstat=o(e.fstat),e.lstat=o(e.lstat),e.statSync=i(e.statSync),e.fstatSync=i(e.fstatSync),e.lstatSync=i(e.lstatSync),e.chmod&&!e.lchmod&&(e.lchmod=function(e,t,n){n&&process.nextTick(n)},e.lchmodSync=function(){});e.chown&&!e.lchown&&(e.lchown=function(e,t,n,r){r&&process.nextTick(r)},e.lchownSync=function(){});"win32"===se&&(e.rename="function"!=typeof e.rename?e.rename:function(t){function n(n,r,u){var o=Date.now(),i=0;t(n,r,(function s(c){if(c&&("EACCES"===c.code||"EPERM"===c.code||"EBUSY"===c.code)&&Date.now()-o<6e4)return setTimeout((function(){e.stat(r,(function(e,o){e&&"ENOENT"===e.code?t(n,r,s):u(c)}))}),i),void(i<100&&(i+=10));u&&u(c)}))}return Object.setPrototypeOf&&Object.setPrototypeOf(n,t),n}(e.rename));function t(t){return t?function(n,r,u){return t.call(e,n,r,(function(e){s(e)&&(e=null),u&&u.apply(this,arguments)}))}:t}function n(t){return t?function(n,r){try{return t.call(e,n,r)}catch(e){if(!s(e))throw e}}:t}function r(t){return t?function(n,r,u,o){return t.call(e,n,r,u,(function(e){s(e)&&(e=null),o&&o.apply(this,arguments)}))}:t}function u(t){return t?function(n,r,u){try{return t.call(e,n,r,u)}catch(e){if(!s(e))throw e}}:t}function o(t){return t?function(n,r,u){function o(e,t){t&&(t.uid<0&&(t.uid+=4294967296),t.gid<0&&(t.gid+=4294967296)),u&&u.apply(this,arguments)}return"function"==typeof r&&(u=r,r=null),r?t.call(e,n,r,o):t.call(e,n,o)}:t}function i(t){return t?function(n,r){var u=r?t.call(e,n,r):t.call(e,n);return u&&(u.uid<0&&(u.uid+=4294967296),u.gid<0&&(u.gid+=4294967296)),u}:t}function s(e){return!e||("ENOSYS"===e.code||!(process.getuid&&0===process.getuid()||"EINVAL"!==e.code&&"EPERM"!==e.code))}e.read="function"!=typeof e.read?e.read:function(t){function n(n,r,u,o,i,s){var c;if(s&&"function"==typeof s){var a=0;c=function(l,f,d){if(l&&"EAGAIN"===l.code&&a<10)return a++,t.call(e,n,r,u,o,i,c);s.apply(this,arguments)}}return t.call(e,n,r,u,o,i,c)}return Object.setPrototypeOf&&Object.setPrototypeOf(n,t),n}(e.read),e.readSync="function"!=typeof e.readSync?e.readSync:(c=e.readSync,function(t,n,r,u,o){for(var i=0;;)try{return c.call(e,t,n,r,u,o)}catch(e){if("EAGAIN"===e.code&&i<10){i++;continue}throw e}});var c};var le=C.default.Stream,fe=function(e){return{ReadStream:function t(n,r){if(!(this instanceof t))return new t(n,r);le.call(this);var u=this;this.path=n,this.fd=null,this.readable=!0,this.paused=!1,this.flags="r",this.mode=438,this.bufferSize=65536,r=r||{};for(var o=Object.keys(r),i=0,s=o.length;ithis.end)throw new Error("start must be <= end");this.pos=this.start}if(null!==this.fd)return void process.nextTick((function(){u._read()}));e.open(this.path,this.flags,this.mode,(function(e,t){if(e)return u.emit("error",e),void(u.readable=!1);u.fd=t,u.emit("open",t),u._read()}))},WriteStream:function t(n,r){if(!(this instanceof t))return new t(n,r);le.call(this),this.path=n,this.fd=null,this.writable=!0,this.flags="w",this.encoding="binary",this.mode=438,this.bytesWritten=0,r=r||{};for(var u=Object.keys(r),o=0,i=u.length;o= zero");this.pos=this.start}this.busy=!1,this._queue=[],null===this.fd&&(this._open=e.open,this._queue.push([this._open,this.path,this.flags,this.mode,void 0]),this.flush())}}};var de=function(e){if(null===e||"object"!=typeof e)return e;if(e instanceof Object)var t={__proto__:De(e)};else t=Object.create(null);return Object.getOwnPropertyNames(e).forEach((function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(e,n))})),t},De=Object.getPrototypeOf||function(e){return e.__proto__};var pe,Ee,me=D.default,he=ae,ye=fe,Ce=de,Fe=F.default;function ge(e,t){Object.defineProperty(e,pe,{get:function(){return t}})}"function"==typeof Symbol&&"function"==typeof Symbol.for?(pe=Symbol.for("graceful-fs.queue"),Ee=Symbol.for("graceful-fs.previous")):(pe="___graceful-fs.queue",Ee="___graceful-fs.previous");var Ae=function(){};if(Fe.debuglog?Ae=Fe.debuglog("gfs4"):/\bgfs4\b/i.test(process.env.NODE_DEBUG||"")&&(Ae=function(){var e=Fe.format.apply(Fe,arguments);e="GFS4: "+e.split(/\n/).join("\nGFS4: "),console.error(e)}),!me[pe]){var ve=w[pe]||[];ge(me,ve),me.close=function(e){function t(t,n){return e.call(me,t,(function(e){e||_e(),"function"==typeof n&&n.apply(this,arguments)}))}return Object.defineProperty(t,Ee,{value:e}),t}(me.close),me.closeSync=function(e){function t(t){e.apply(me,arguments),_e()}return Object.defineProperty(t,Ee,{value:e}),t}(me.closeSync),/\bgfs4\b/i.test(process.env.NODE_DEBUG||"")&&process.on("exit",(function(){Ae(me[pe]),g.default.equal(me[pe].length,0)}))}w[pe]||ge(w,me[pe]);var Se,we=Oe(Ce(me));function Oe(e){he(e),e.gracefulify=Oe,e.createReadStream=function(t,n){return new e.ReadStream(t,n)},e.createWriteStream=function(t,n){return new e.WriteStream(t,n)};var t=e.readFile;e.readFile=function(e,n,r){"function"==typeof n&&(r=n,n=null);return function e(n,r,u,o){return t(n,r,(function(t){!t||"EMFILE"!==t.code&&"ENFILE"!==t.code?"function"==typeof u&&u.apply(this,arguments):be([e,[n,r,u],t,o||Date.now(),Date.now()])}))}(e,n,r)};var n=e.writeFile;e.writeFile=function(e,t,r,u){"function"==typeof r&&(u=r,r=null);return function e(t,r,u,o,i){return n(t,r,u,(function(n){!n||"EMFILE"!==n.code&&"ENFILE"!==n.code?"function"==typeof o&&o.apply(this,arguments):be([e,[t,r,u,o],n,i||Date.now(),Date.now()])}))}(e,t,r,u)};var r=e.appendFile;r&&(e.appendFile=function(e,t,n,u){"function"==typeof n&&(u=n,n=null);return function e(t,n,u,o,i){return r(t,n,u,(function(r){!r||"EMFILE"!==r.code&&"ENFILE"!==r.code?"function"==typeof o&&o.apply(this,arguments):be([e,[t,n,u,o],r,i||Date.now(),Date.now()])}))}(e,t,n,u)});var u=e.copyFile;u&&(e.copyFile=function(e,t,n,r){"function"==typeof n&&(r=n,n=0);return function e(t,n,r,o,i){return u(t,n,r,(function(u){!u||"EMFILE"!==u.code&&"ENFILE"!==u.code?"function"==typeof o&&o.apply(this,arguments):be([e,[t,n,r,o],u,i||Date.now(),Date.now()])}))}(e,t,n,r)});var o=e.readdir;e.readdir=function(e,t,n){"function"==typeof t&&(n=t,t=null);var r=i.test(process.version)?function(e,t,n,r){return o(e,u(e,t,n,r))}:function(e,t,n,r){return o(e,t,u(e,t,n,r))};return r(e,t,n);function u(e,t,n,u){return function(o,i){!o||"EMFILE"!==o.code&&"ENFILE"!==o.code?(i&&i.sort&&i.sort(),"function"==typeof n&&n.call(this,o,i)):be([r,[e,t,n],o,u||Date.now(),Date.now()])}}};var i=/^v[0-5]\./;if("v0.8"===process.version.substr(0,4)){var s=ye(e);d=s.ReadStream,D=s.WriteStream}var c=e.ReadStream;c&&(d.prototype=Object.create(c.prototype),d.prototype.open=function(){var e=this;E(e.path,e.flags,e.mode,(function(t,n){t?(e.autoClose&&e.destroy(),e.emit("error",t)):(e.fd=n,e.emit("open",n),e.read())}))});var a=e.WriteStream;a&&(D.prototype=Object.create(a.prototype),D.prototype.open=function(){var e=this;E(e.path,e.flags,e.mode,(function(t,n){t?(e.destroy(),e.emit("error",t)):(e.fd=n,e.emit("open",n))}))}),Object.defineProperty(e,"ReadStream",{get:function(){return d},set:function(e){d=e},enumerable:!0,configurable:!0}),Object.defineProperty(e,"WriteStream",{get:function(){return D},set:function(e){D=e},enumerable:!0,configurable:!0});var l=d;Object.defineProperty(e,"FileReadStream",{get:function(){return l},set:function(e){l=e},enumerable:!0,configurable:!0});var f=D;function d(e,t){return this instanceof d?(c.apply(this,arguments),this):d.apply(Object.create(d.prototype),arguments)}function D(e,t){return this instanceof D?(a.apply(this,arguments),this):D.apply(Object.create(D.prototype),arguments)}Object.defineProperty(e,"FileWriteStream",{get:function(){return f},set:function(e){f=e},enumerable:!0,configurable:!0});var p=e.open;function E(e,t,n,r){return"function"==typeof n&&(r=n,n=null),function e(t,n,r,u,o){return p(t,n,r,(function(i,s){!i||"EMFILE"!==i.code&&"ENFILE"!==i.code?"function"==typeof u&&u.apply(this,arguments):be([e,[t,n,r,u],i,o||Date.now(),Date.now()])}))}(e,t,n,r)}return e.open=E,e}function be(e){Ae("ENQUEUE",e[0].name,e[1]),me[pe].push(e),Be()}function _e(){for(var e=Date.now(),t=0;t2&&(me[pe][t][3]=e,me[pe][t][4]=e);Be()}function Be(){if(clearTimeout(Se),Se=void 0,0!==me[pe].length){var e=me[pe].shift(),t=e[0],n=e[1],r=e[2],u=e[3],o=e[4];if(void 0===u)Ae("RETRY",t.name,n),t.apply(null,n);else if(Date.now()-u>=6e4){Ae("TIMEOUT",t.name,n);var i=n.pop();"function"==typeof i&&i.call(null,r)}else{var s=Date.now()-o,c=Math.max(o-u,1);s>=Math.min(1.2*c,100)?(Ae("RETRY",t.name,n),t.apply(null,n.concat([u]))):me[pe].push(e)}void 0===Se&&(Se=setTimeout(Be,0))}}process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH&&!me.__patched&&(we=Oe(me),me.__patched=!0),function(e){const t=re.fromCallback,n=we,r=["access","appendFile","chmod","chown","close","copyFile","fchmod","fchown","fdatasync","fstat","fsync","ftruncate","futimes","lchmod","lchown","link","lstat","mkdir","mkdtemp","open","opendir","readdir","readFile","readlink","realpath","rename","rm","rmdir","stat","symlink","truncate","unlink","utimes","writeFile"].filter((e=>"function"==typeof n[e]));Object.assign(e,n),r.forEach((r=>{e[r]=t(n[r])})),e.realpath.native=t(n.realpath.native),e.exists=function(e,t){return"function"==typeof t?n.exists(e,t):new Promise((t=>n.exists(e,t)))},e.read=function(e,t,r,u,o,i){return"function"==typeof i?n.read(e,t,r,u,o,i):new Promise(((i,s)=>{n.read(e,t,r,u,o,((e,t,n)=>{if(e)return s(e);i({bytesRead:t,buffer:n})}))}))},e.write=function(e,t,...r){return"function"==typeof r[r.length-1]?n.write(e,t,...r):new Promise(((u,o)=>{n.write(e,t,...r,((e,t,n)=>{if(e)return o(e);u({bytesWritten:t,buffer:n})}))}))},"function"==typeof n.writev&&(e.writev=function(e,t,...r){return"function"==typeof r[r.length-1]?n.writev(e,t,...r):new Promise(((u,o)=>{n.writev(e,t,...r,((e,t,n)=>{if(e)return o(e);u({bytesWritten:t,buffers:n})}))}))})}(ne);var Pe={},ke={};const xe=p.default;ke.checkPath=function(e){if("win32"===process.platform){if(/[<>:"|?*]/.test(e.replace(xe.parse(e).root,""))){const t=new Error(`Path contains invalid characters: ${e}`);throw t.code="EINVAL",t}}};const Ne=ne,{checkPath:Ie}=ke,Te=e=>"number"==typeof e?e:{mode:511,...e}.mode;Pe.makeDir=async(e,t)=>(Ie(e),Ne.mkdir(e,{mode:Te(t),recursive:!0})),Pe.makeDirSync=(e,t)=>(Ie(e),Ne.mkdirSync(e,{mode:Te(t),recursive:!0}));const Re=re.fromPromise,{makeDir:Me,makeDirSync:Le}=Pe,je=Re(Me);var $e={mkdirs:je,mkdirsSync:Le,mkdirp:je,mkdirpSync:Le,ensureDir:je,ensureDirSync:Le};const He=re.fromPromise,Je=ne;var Ge={pathExists:He((function(e){return Je.access(e).then((()=>!0)).catch((()=>!1))})),pathExistsSync:Je.existsSync};const Ve=we;var Ue=function(e,t,n,r){Ve.open(e,"r+",((e,u)=>{if(e)return r(e);Ve.futimes(u,t,n,(e=>{Ve.close(u,(t=>{r&&r(e||t)}))}))}))},We=function(e,t,n){const r=Ve.openSync(e,"r+");return Ve.futimesSync(r,t,n),Ve.closeSync(r)};const ze=ne,Ke=p.default,qe=F.default;function Ye(e,t,n){const r=n.dereference?e=>ze.stat(e,{bigint:!0}):e=>ze.lstat(e,{bigint:!0});return Promise.all([r(e),r(t).catch((e=>{if("ENOENT"===e.code)return null;throw e}))]).then((([e,t])=>({srcStat:e,destStat:t})))}function Xe(e,t){return t.ino&&t.dev&&t.ino===e.ino&&t.dev===e.dev}function Ze(e,t){const n=Ke.resolve(e).split(Ke.sep).filter((e=>e)),r=Ke.resolve(t).split(Ke.sep).filter((e=>e));return n.reduce(((e,t,n)=>e&&r[n]===t),!0)}function Qe(e,t,n){return`Cannot ${n} '${e}' to a subdirectory of itself, '${t}'.`}var et={checkPaths:function(e,t,n,r,u){qe.callbackify(Ye)(e,t,r,((r,o)=>{if(r)return u(r);const{srcStat:i,destStat:s}=o;if(s){if(Xe(i,s)){const r=Ke.basename(e),o=Ke.basename(t);return"move"===n&&r!==o&&r.toLowerCase()===o.toLowerCase()?u(null,{srcStat:i,destStat:s,isChangingCase:!0}):u(new Error("Source and destination must not be the same."))}if(i.isDirectory()&&!s.isDirectory())return u(new Error(`Cannot overwrite non-directory '${t}' with directory '${e}'.`));if(!i.isDirectory()&&s.isDirectory())return u(new Error(`Cannot overwrite directory '${t}' with non-directory '${e}'.`))}return i.isDirectory()&&Ze(e,t)?u(new Error(Qe(e,t,n))):u(null,{srcStat:i,destStat:s})}))},checkPathsSync:function(e,t,n,r){const{srcStat:u,destStat:o}=function(e,t,n){let r;const u=n.dereference?e=>ze.statSync(e,{bigint:!0}):e=>ze.lstatSync(e,{bigint:!0}),o=u(e);try{r=u(t)}catch(e){if("ENOENT"===e.code)return{srcStat:o,destStat:null};throw e}return{srcStat:o,destStat:r}}(e,t,r);if(o){if(Xe(u,o)){const r=Ke.basename(e),i=Ke.basename(t);if("move"===n&&r!==i&&r.toLowerCase()===i.toLowerCase())return{srcStat:u,destStat:o,isChangingCase:!0};throw new Error("Source and destination must not be the same.")}if(u.isDirectory()&&!o.isDirectory())throw new Error(`Cannot overwrite non-directory '${t}' with directory '${e}'.`);if(!u.isDirectory()&&o.isDirectory())throw new Error(`Cannot overwrite directory '${t}' with non-directory '${e}'.`)}if(u.isDirectory()&&Ze(e,t))throw new Error(Qe(e,t,n));return{srcStat:u,destStat:o}},checkParentPaths:function e(t,n,r,u,o){const i=Ke.resolve(Ke.dirname(t)),s=Ke.resolve(Ke.dirname(r));if(s===i||s===Ke.parse(s).root)return o();ze.stat(s,{bigint:!0},((i,c)=>i?"ENOENT"===i.code?o():o(i):Xe(n,c)?o(new Error(Qe(t,r,u))):e(t,n,s,u,o)))},checkParentPathsSync:function e(t,n,r,u){const o=Ke.resolve(Ke.dirname(t)),i=Ke.resolve(Ke.dirname(r));if(i===o||i===Ke.parse(i).root)return;let s;try{s=ze.statSync(i,{bigint:!0})}catch(e){if("ENOENT"===e.code)return;throw e}if(Xe(n,s))throw new Error(Qe(t,r,u));return e(t,n,i,u)},isSrcSubdir:Ze,areIdentical:Xe};const tt=we,nt=p.default,rt=$e.mkdirs,ut=Ge.pathExists,ot=Ue,it=et;function st(e,t,n,r,u){const o=nt.dirname(n);ut(o,((i,s)=>i?u(i):s?at(e,t,n,r,u):void rt(o,(o=>o?u(o):at(e,t,n,r,u)))))}function ct(e,t,n,r,u,o){Promise.resolve(u.filter(n,r)).then((i=>i?e(t,n,r,u,o):o()),(e=>o(e)))}function at(e,t,n,r,u){(r.dereference?tt.stat:tt.lstat)(t,((o,i)=>o?u(o):i.isDirectory()?function(e,t,n,r,u,o){return t?Dt(n,r,u,o):function(e,t,n,r,u){tt.mkdir(n,(o=>{if(o)return u(o);Dt(t,n,r,(t=>t?u(t):dt(n,e,u)))}))}(e.mode,n,r,u,o)}(i,e,t,n,r,u):i.isFile()||i.isCharacterDevice()||i.isBlockDevice()?function(e,t,n,r,u,o){return t?function(e,t,n,r,u){if(!r.overwrite)return r.errorOnExist?u(new Error(`'${n}' already exists`)):u();tt.unlink(n,(o=>o?u(o):lt(e,t,n,r,u)))}(e,n,r,u,o):lt(e,n,r,u,o)}(i,e,t,n,r,u):i.isSymbolicLink()?function(e,t,n,r,u){tt.readlink(t,((t,o)=>t?u(t):(r.dereference&&(o=nt.resolve(process.cwd(),o)),e?void tt.readlink(n,((t,i)=>t?"EINVAL"===t.code||"UNKNOWN"===t.code?tt.symlink(o,n,u):u(t):(r.dereference&&(i=nt.resolve(process.cwd(),i)),it.isSrcSubdir(o,i)?u(new Error(`Cannot copy '${o}' to a subdirectory of itself, '${i}'.`)):e.isDirectory()&&it.isSrcSubdir(i,o)?u(new Error(`Cannot overwrite '${i}' with '${o}'.`)):function(e,t,n){tt.unlink(t,(r=>r?n(r):tt.symlink(e,t,n)))}(o,n,u)))):tt.symlink(o,n,u))))}(e,t,n,r,u):i.isSocket()?u(new Error(`Cannot copy a socket file: ${t}`)):i.isFIFO()?u(new Error(`Cannot copy a FIFO pipe: ${t}`)):u(new Error(`Unknown file: ${t}`))))}function lt(e,t,n,r,u){tt.copyFile(t,n,(o=>o?u(o):r.preserveTimestamps?function(e,t,n,r){if(function(e){return 0==(128&e)}(e))return function(e,t,n){return dt(e,128|t,n)}(n,e,(u=>u?r(u):ft(e,t,n,r)));return ft(e,t,n,r)}(e.mode,t,n,u):dt(n,e.mode,u)))}function ft(e,t,n,r){!function(e,t,n){tt.stat(e,((e,r)=>e?n(e):ot(t,r.atime,r.mtime,n)))}(t,n,(t=>t?r(t):dt(n,e,r)))}function dt(e,t,n){return tt.chmod(e,t,n)}function Dt(e,t,n,r){tt.readdir(e,((u,o)=>u?r(u):pt(o,e,t,n,r)))}function pt(e,t,n,r,u){const o=e.pop();return o?function(e,t,n,r,u,o){const i=nt.join(n,t),s=nt.join(r,t);it.checkPaths(i,s,"copy",u,((t,c)=>{if(t)return o(t);const{destStat:a}=c;!function(e,t,n,r,u){r.filter?ct(at,e,t,n,r,u):at(e,t,n,r,u)}(a,i,s,u,(t=>t?o(t):pt(e,n,r,u,o)))}))}(e,o,t,n,r,u):u()}var Et=function(e,t,n,r){"function"!=typeof n||r?"function"==typeof n&&(n={filter:n}):(r=n,n={}),r=r||function(){},(n=n||{}).clobber=!("clobber"in n)||!!n.clobber,n.overwrite="overwrite"in n?!!n.overwrite:n.clobber,n.preserveTimestamps&&"ia32"===process.arch&&console.warn("fs-extra: Using the preserveTimestamps option in 32-bit node is not recommended;\n\n see https://github.com/jprichardson/node-fs-extra/issues/269"),it.checkPaths(e,t,"copy",n,((u,o)=>{if(u)return r(u);const{srcStat:i,destStat:s}=o;it.checkParentPaths(e,i,t,"copy",(u=>u?r(u):n.filter?ct(st,s,e,t,n,r):st(s,e,t,n,r)))}))};const mt=we,ht=p.default,yt=$e.mkdirsSync,Ct=We,Ft=et;function gt(e,t,n,r){const u=(r.dereference?mt.statSync:mt.lstatSync)(t);if(u.isDirectory())return function(e,t,n,r,u){return t?St(n,r,u):function(e,t,n,r){return mt.mkdirSync(n),St(t,n,r),vt(n,e)}(e.mode,n,r,u)}(u,e,t,n,r);if(u.isFile()||u.isCharacterDevice()||u.isBlockDevice())return function(e,t,n,r,u){return t?function(e,t,n,r){if(r.overwrite)return mt.unlinkSync(n),At(e,t,n,r);if(r.errorOnExist)throw new Error(`'${n}' already exists`)}(e,n,r,u):At(e,n,r,u)}(u,e,t,n,r);if(u.isSymbolicLink())return function(e,t,n,r){let u=mt.readlinkSync(t);r.dereference&&(u=ht.resolve(process.cwd(),u));if(e){let e;try{e=mt.readlinkSync(n)}catch(e){if("EINVAL"===e.code||"UNKNOWN"===e.code)return mt.symlinkSync(u,n);throw e}if(r.dereference&&(e=ht.resolve(process.cwd(),e)),Ft.isSrcSubdir(u,e))throw new Error(`Cannot copy '${u}' to a subdirectory of itself, '${e}'.`);if(mt.statSync(n).isDirectory()&&Ft.isSrcSubdir(e,u))throw new Error(`Cannot overwrite '${e}' with '${u}'.`);return function(e,t){return mt.unlinkSync(t),mt.symlinkSync(e,t)}(u,n)}return mt.symlinkSync(u,n)}(e,t,n,r);if(u.isSocket())throw new Error(`Cannot copy a socket file: ${t}`);if(u.isFIFO())throw new Error(`Cannot copy a FIFO pipe: ${t}`);throw new Error(`Unknown file: ${t}`)}function At(e,t,n,r){return mt.copyFileSync(t,n),r.preserveTimestamps&&function(e,t,n){(function(e){return 0==(128&e)})(e)&&function(e,t){vt(e,128|t)}(n,e);(function(e,t){const n=mt.statSync(e);Ct(t,n.atime,n.mtime)})(t,n)}(e.mode,t,n),vt(n,e.mode)}function vt(e,t){return mt.chmodSync(e,t)}function St(e,t,n){mt.readdirSync(e).forEach((r=>function(e,t,n,r){const u=ht.join(t,e),o=ht.join(n,e),{destStat:i}=Ft.checkPathsSync(u,o,"copy",r);return function(e,t,n,r){if(!r.filter||r.filter(t,n))return gt(e,t,n,r)}(i,u,o,r)}(r,e,t,n)))}var wt=function(e,t,n){"function"==typeof n&&(n={filter:n}),(n=n||{}).clobber=!("clobber"in n)||!!n.clobber,n.overwrite="overwrite"in n?!!n.overwrite:n.clobber,n.preserveTimestamps&&"ia32"===process.arch&&console.warn("fs-extra: Using the preserveTimestamps option in 32-bit node is not recommended;\n\n see https://github.com/jprichardson/node-fs-extra/issues/269");const{srcStat:r,destStat:u}=Ft.checkPathsSync(e,t,"copy",n);return Ft.checkParentPathsSync(e,r,t,"copy"),function(e,t,n,r){if(r.filter&&!r.filter(t,n))return;const u=ht.dirname(n);mt.existsSync(u)||yt(u);return gt(e,t,n,r)}(u,e,t,n)};var Ot={copy:(0,re.fromCallback)(Et),copySync:wt};const bt=we,_t=p.default,Bt=g.default,Pt="win32"===process.platform;function kt(e){["unlink","chmod","stat","lstat","rmdir","readdir"].forEach((t=>{e[t]=e[t]||bt[t],e[t+="Sync"]=e[t]||bt[t]})),e.maxBusyTries=e.maxBusyTries||3}function xt(e,t,n){let r=0;"function"==typeof t&&(n=t,t={}),Bt(e,"rimraf: missing path"),Bt.strictEqual(typeof e,"string","rimraf: path should be a string"),Bt.strictEqual(typeof n,"function","rimraf: callback function required"),Bt(t,"rimraf: invalid options argument provided"),Bt.strictEqual(typeof t,"object","rimraf: options should be object"),kt(t),Nt(e,t,(function u(o){if(o){if(("EBUSY"===o.code||"ENOTEMPTY"===o.code||"EPERM"===o.code)&&rNt(e,t,u)),100*r)}"ENOENT"===o.code&&(o=null)}n(o)}))}function Nt(e,t,n){Bt(e),Bt(t),Bt("function"==typeof n),t.lstat(e,((r,u)=>r&&"ENOENT"===r.code?n(null):r&&"EPERM"===r.code&&Pt?It(e,t,r,n):u&&u.isDirectory()?Rt(e,t,r,n):void t.unlink(e,(r=>{if(r){if("ENOENT"===r.code)return n(null);if("EPERM"===r.code)return Pt?It(e,t,r,n):Rt(e,t,r,n);if("EISDIR"===r.code)return Rt(e,t,r,n)}return n(r)}))))}function It(e,t,n,r){Bt(e),Bt(t),Bt("function"==typeof r),t.chmod(e,438,(u=>{u?r("ENOENT"===u.code?null:n):t.stat(e,((u,o)=>{u?r("ENOENT"===u.code?null:n):o.isDirectory()?Rt(e,t,n,r):t.unlink(e,r)}))}))}function Tt(e,t,n){let r;Bt(e),Bt(t);try{t.chmodSync(e,438)}catch(e){if("ENOENT"===e.code)return;throw n}try{r=t.statSync(e)}catch(e){if("ENOENT"===e.code)return;throw n}r.isDirectory()?Lt(e,t,n):t.unlinkSync(e)}function Rt(e,t,n,r){Bt(e),Bt(t),Bt("function"==typeof r),t.rmdir(e,(u=>{!u||"ENOTEMPTY"!==u.code&&"EEXIST"!==u.code&&"EPERM"!==u.code?u&&"ENOTDIR"===u.code?r(n):r(u):function(e,t,n){Bt(e),Bt(t),Bt("function"==typeof n),t.readdir(e,((r,u)=>{if(r)return n(r);let o,i=u.length;if(0===i)return t.rmdir(e,n);u.forEach((r=>{xt(_t.join(e,r),t,(r=>{if(!o)return r?n(o=r):void(0==--i&&t.rmdir(e,n))}))}))}))}(e,t,r)}))}function Mt(e,t){let n;kt(t=t||{}),Bt(e,"rimraf: missing path"),Bt.strictEqual(typeof e,"string","rimraf: path should be a string"),Bt(t,"rimraf: missing options"),Bt.strictEqual(typeof t,"object","rimraf: options should be object");try{n=t.lstatSync(e)}catch(n){if("ENOENT"===n.code)return;"EPERM"===n.code&&Pt&&Tt(e,t,n)}try{n&&n.isDirectory()?Lt(e,t,null):t.unlinkSync(e)}catch(n){if("ENOENT"===n.code)return;if("EPERM"===n.code)return Pt?Tt(e,t,n):Lt(e,t,n);if("EISDIR"!==n.code)throw n;Lt(e,t,n)}}function Lt(e,t,n){Bt(e),Bt(t);try{t.rmdirSync(e)}catch(r){if("ENOTDIR"===r.code)throw n;if("ENOTEMPTY"===r.code||"EEXIST"===r.code||"EPERM"===r.code)!function(e,t){if(Bt(e),Bt(t),t.readdirSync(e).forEach((n=>Mt(_t.join(e,n),t))),!Pt){return t.rmdirSync(e,t)}{const n=Date.now();do{try{return t.rmdirSync(e,t)}catch{}}while(Date.now()-n<500)}}(e,t);else if("ENOENT"!==r.code)throw r}}var jt=xt;xt.sync=Mt;const $t=we,Ht=re.fromCallback,Jt=jt;var Gt={remove:Ht((function(e,t){if($t.rm)return $t.rm(e,{recursive:!0,force:!0},t);Jt(e,t)})),removeSync:function(e){if($t.rmSync)return $t.rmSync(e,{recursive:!0,force:!0});Jt.sync(e)}};const Vt=re.fromPromise,Ut=ne,Wt=p.default,zt=$e,Kt=Gt,qt=Vt((async function(e){let t;try{t=await Ut.readdir(e)}catch{return zt.mkdirs(e)}return Promise.all(t.map((t=>Kt.remove(Wt.join(e,t)))))}));function Yt(e){let t;try{t=Ut.readdirSync(e)}catch{return zt.mkdirsSync(e)}t.forEach((t=>{t=Wt.join(e,t),Kt.removeSync(t)}))}var Xt={emptyDirSync:Yt,emptydirSync:Yt,emptyDir:qt,emptydir:qt};const Zt=re.fromCallback,Qt=p.default,en=we,tn=$e;var nn={createFile:Zt((function(e,t){function n(){en.writeFile(e,"",(e=>{if(e)return t(e);t()}))}en.stat(e,((r,u)=>{if(!r&&u.isFile())return t();const o=Qt.dirname(e);en.stat(o,((e,r)=>{if(e)return"ENOENT"===e.code?tn.mkdirs(o,(e=>{if(e)return t(e);n()})):t(e);r.isDirectory()?n():en.readdir(o,(e=>{if(e)return t(e)}))}))}))})),createFileSync:function(e){let t;try{t=en.statSync(e)}catch{}if(t&&t.isFile())return;const n=Qt.dirname(e);try{en.statSync(n).isDirectory()||en.readdirSync(n)}catch(e){if(!e||"ENOENT"!==e.code)throw e;tn.mkdirsSync(n)}en.writeFileSync(e,"")}};const rn=re.fromCallback,un=p.default,on=we,sn=$e,cn=Ge.pathExists,{areIdentical:an}=et;var ln={createLink:rn((function(e,t,n){function r(e,t){on.link(e,t,(e=>{if(e)return n(e);n(null)}))}on.lstat(t,((u,o)=>{on.lstat(e,((u,i)=>{if(u)return u.message=u.message.replace("lstat","ensureLink"),n(u);if(o&&an(i,o))return n(null);const s=un.dirname(t);cn(s,((u,o)=>u?n(u):o?r(e,t):void sn.mkdirs(s,(u=>{if(u)return n(u);r(e,t)}))))}))}))})),createLinkSync:function(e,t){let n;try{n=on.lstatSync(t)}catch{}try{const t=on.lstatSync(e);if(n&&an(t,n))return}catch(e){throw e.message=e.message.replace("lstat","ensureLink"),e}const r=un.dirname(t);return on.existsSync(r)||sn.mkdirsSync(r),on.linkSync(e,t)}};const fn=p.default,dn=we,Dn=Ge.pathExists;var pn={symlinkPaths:function(e,t,n){if(fn.isAbsolute(e))return dn.lstat(e,(t=>t?(t.message=t.message.replace("lstat","ensureSymlink"),n(t)):n(null,{toCwd:e,toDst:e})));{const r=fn.dirname(t),u=fn.join(r,e);return Dn(u,((t,o)=>t?n(t):o?n(null,{toCwd:u,toDst:e}):dn.lstat(e,(t=>t?(t.message=t.message.replace("lstat","ensureSymlink"),n(t)):n(null,{toCwd:e,toDst:fn.relative(r,e)})))))}},symlinkPathsSync:function(e,t){let n;if(fn.isAbsolute(e)){if(n=dn.existsSync(e),!n)throw new Error("absolute srcpath does not exist");return{toCwd:e,toDst:e}}{const r=fn.dirname(t),u=fn.join(r,e);if(n=dn.existsSync(u),n)return{toCwd:u,toDst:e};if(n=dn.existsSync(e),!n)throw new Error("relative srcpath does not exist");return{toCwd:e,toDst:fn.relative(r,e)}}}};const En=we;var mn={symlinkType:function(e,t,n){if(n="function"==typeof t?t:n,t="function"!=typeof t&&t)return n(null,t);En.lstat(e,((e,r)=>{if(e)return n(null,"file");t=r&&r.isDirectory()?"dir":"file",n(null,t)}))},symlinkTypeSync:function(e,t){let n;if(t)return t;try{n=En.lstatSync(e)}catch{return"file"}return n&&n.isDirectory()?"dir":"file"}};const hn=re.fromCallback,yn=p.default,Cn=ne,Fn=$e.mkdirs,gn=$e.mkdirsSync,An=pn.symlinkPaths,vn=pn.symlinkPathsSync,Sn=mn.symlinkType,wn=mn.symlinkTypeSync,On=Ge.pathExists,{areIdentical:bn}=et;function _n(e,t,n,r){An(e,t,((u,o)=>{if(u)return r(u);e=o.toDst,Sn(o.toCwd,n,((n,u)=>{if(n)return r(n);const o=yn.dirname(t);On(o,((n,i)=>n?r(n):i?Cn.symlink(e,t,u,r):void Fn(o,(n=>{if(n)return r(n);Cn.symlink(e,t,u,r)}))))}))}))}var Bn={createSymlink:hn((function(e,t,n,r){r="function"==typeof n?n:r,n="function"!=typeof n&&n,Cn.lstat(t,((u,o)=>{!u&&o.isSymbolicLink()?Promise.all([Cn.stat(e),Cn.stat(t)]).then((([u,o])=>{if(bn(u,o))return r(null);_n(e,t,n,r)})):_n(e,t,n,r)}))})),createSymlinkSync:function(e,t,n){let r;try{r=Cn.lstatSync(t)}catch{}if(r&&r.isSymbolicLink()){const n=Cn.statSync(e),r=Cn.statSync(t);if(bn(n,r))return}const u=vn(e,t);e=u.toDst,n=wn(u.toCwd,n);const o=yn.dirname(t);return Cn.existsSync(o)||gn(o),Cn.symlinkSync(e,t,n)}};const{createFile:Pn,createFileSync:kn}=nn,{createLink:xn,createLinkSync:Nn}=ln,{createSymlink:In,createSymlinkSync:Tn}=Bn;var Rn={createFile:Pn,createFileSync:kn,ensureFile:Pn,ensureFileSync:kn,createLink:xn,createLinkSync:Nn,ensureLink:xn,ensureLinkSync:Nn,createSymlink:In,createSymlinkSync:Tn,ensureSymlink:In,ensureSymlinkSync:Tn};var Mn={stringify:function(e,{EOL:t="\n",finalEOL:n=!0,replacer:r=null,spaces:u}={}){const o=n?t:"";return JSON.stringify(e,r,u).replace(/\n/g,t)+o},stripBom:function(e){return Buffer.isBuffer(e)&&(e=e.toString("utf8")),e.replace(/^\uFEFF/,"")}};let Ln;try{Ln=we}catch(e){Ln=D.default}const jn=re,{stringify:$n,stripBom:Hn}=Mn;const Jn=jn.fromPromise((async function(e,t={}){"string"==typeof t&&(t={encoding:t});const n=t.fs||Ln,r=!("throws"in t)||t.throws;let u,o=await jn.fromCallback(n.readFile)(e,t);o=Hn(o);try{u=JSON.parse(o,t?t.reviver:null)}catch(t){if(r)throw t.message=`${e}: ${t.message}`,t;return null}return u}));const Gn=jn.fromPromise((async function(e,t,n={}){const r=n.fs||Ln,u=$n(t,n);await jn.fromCallback(r.writeFile)(e,u,n)}));const Vn={readFile:Jn,readFileSync:function(e,t={}){"string"==typeof t&&(t={encoding:t});const n=t.fs||Ln,r=!("throws"in t)||t.throws;try{let r=n.readFileSync(e,t);return r=Hn(r),JSON.parse(r,t.reviver)}catch(t){if(r)throw t.message=`${e}: ${t.message}`,t;return null}},writeFile:Gn,writeFileSync:function(e,t,n={}){const r=n.fs||Ln,u=$n(t,n);return r.writeFileSync(e,u,n)}};var Un={readJson:Vn.readFile,readJsonSync:Vn.readFileSync,writeJson:Vn.writeFile,writeJsonSync:Vn.writeFileSync};const Wn=re.fromCallback,zn=we,Kn=p.default,qn=$e,Yn=Ge.pathExists;var Xn={outputFile:Wn((function(e,t,n,r){"function"==typeof n&&(r=n,n="utf8");const u=Kn.dirname(e);Yn(u,((o,i)=>o?r(o):i?zn.writeFile(e,t,n,r):void qn.mkdirs(u,(u=>{if(u)return r(u);zn.writeFile(e,t,n,r)}))))})),outputFileSync:function(e,...t){const n=Kn.dirname(e);if(zn.existsSync(n))return zn.writeFileSync(e,...t);qn.mkdirsSync(n),zn.writeFileSync(e,...t)}};const{stringify:Zn}=Mn,{outputFile:Qn}=Xn;var er=async function(e,t,n={}){const r=Zn(t,n);await Qn(e,r,n)};const{stringify:tr}=Mn,{outputFileSync:nr}=Xn;var rr=function(e,t,n){const r=tr(t,n);nr(e,r,n)};const ur=re.fromPromise,or=Un;or.outputJson=ur(er),or.outputJsonSync=rr,or.outputJSON=or.outputJson,or.outputJSONSync=or.outputJsonSync,or.writeJSON=or.writeJson,or.writeJSONSync=or.writeJsonSync,or.readJSON=or.readJson,or.readJSONSync=or.readJsonSync;var ir=or;const sr=we,cr=p.default,ar=Ot.copy,lr=Gt.remove,fr=$e.mkdirp,dr=Ge.pathExists,Dr=et;function pr(e,t,n,r,u){return r?Er(e,t,n,u):n?lr(t,(r=>r?u(r):Er(e,t,n,u))):void dr(t,((r,o)=>r?u(r):o?u(new Error("dest already exists.")):Er(e,t,n,u)))}function Er(e,t,n,r){sr.rename(e,t,(u=>u?"EXDEV"!==u.code?r(u):function(e,t,n,r){const u={overwrite:n,errorOnExist:!0};ar(e,t,u,(t=>t?r(t):lr(e,r)))}(e,t,n,r):r()))}var mr=function(e,t,n,r){"function"==typeof n&&(r=n,n={});const u=n.overwrite||n.clobber||!1;Dr.checkPaths(e,t,"move",n,((n,o)=>{if(n)return r(n);const{srcStat:i,isChangingCase:s=!1}=o;Dr.checkParentPaths(e,i,t,"move",(n=>n?r(n):function(e){const t=cr.dirname(e);return cr.parse(t).root===t}(t)?pr(e,t,u,s,r):void fr(cr.dirname(t),(n=>n?r(n):pr(e,t,u,s,r)))))}))};const hr=we,yr=p.default,Cr=Ot.copySync,Fr=Gt.removeSync,gr=$e.mkdirpSync,Ar=et;function vr(e,t,n){try{hr.renameSync(e,t)}catch(r){if("EXDEV"!==r.code)throw r;return function(e,t,n){const r={overwrite:n,errorOnExist:!0};return Cr(e,t,r),Fr(e)}(e,t,n)}}var Sr=function(e,t,n){const r=(n=n||{}).overwrite||n.clobber||!1,{srcStat:u,isChangingCase:o=!1}=Ar.checkPathsSync(e,t,"move",n);return Ar.checkParentPathsSync(e,u,t,"move"),function(e){const t=yr.dirname(e);return yr.parse(t).root===t}(t)||gr(yr.dirname(t)),function(e,t,n,r){if(r)return vr(e,t,n);if(n)return Fr(t),vr(e,t,n);if(hr.existsSync(t))throw new Error("dest already exists.");return vr(e,t,n)}(e,t,r,o)};var wr,Or,br,_r,Br,Pr={move:(0,re.fromCallback)(mr),moveSync:Sr},kr={...ne,...Ot,...Xt,...Rn,...ir,...$e,...Pr,...Xn,...Ge,...Gt},xr={},Nr={exports:{}},Ir={exports:{}};function Tr(){if(Or)return wr;Or=1;var e=1e3,t=60*e,n=60*t,r=24*n,u=7*r,o=365.25*r;function i(e,t,n,r){var u=t>=1.5*n;return Math.round(e/n)+" "+r+(u?"s":"")}return wr=function(s,c){c=c||{};var a=typeof s;if("string"===a&&s.length>0)return function(i){if((i=String(i)).length>100)return;var s=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(i);if(!s)return;var c=parseFloat(s[1]);switch((s[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return c*o;case"weeks":case"week":case"w":return c*u;case"days":case"day":case"d":return c*r;case"hours":case"hour":case"hrs":case"hr":case"h":return c*n;case"minutes":case"minute":case"mins":case"min":case"m":return c*t;case"seconds":case"second":case"secs":case"sec":case"s":return c*e;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return c;default:return}}(s);if("number"===a&&isFinite(s))return c.long?function(u){var o=Math.abs(u);if(o>=r)return i(u,o,r,"day");if(o>=n)return i(u,o,n,"hour");if(o>=t)return i(u,o,t,"minute");if(o>=e)return i(u,o,e,"second");return u+" ms"}(s):function(u){var o=Math.abs(u);if(o>=r)return Math.round(u/r)+"d";if(o>=n)return Math.round(u/n)+"h";if(o>=t)return Math.round(u/t)+"m";if(o>=e)return Math.round(u/e)+"s";return u+"ms"}(s);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(s))}}function Rr(){if(_r)return br;return _r=1,br=function(e){function t(e){let r,u,o,i=null;function s(...e){if(!s.enabled)return;const n=s,u=Number(new Date),o=u-(r||u);n.diff=o,n.prev=r,n.curr=u,r=u,e[0]=t.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let i=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,((r,u)=>{if("%%"===r)return"%";i++;const o=t.formatters[u];if("function"==typeof o){const t=e[i];r=o.call(n,t),e.splice(i,1),i--}return r})),t.formatArgs.call(n,e);(n.log||t.log).apply(n,e)}return s.namespace=e,s.useColors=t.useColors(),s.color=t.selectColor(e),s.extend=n,s.destroy=t.destroy,Object.defineProperty(s,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==i?i:(u!==t.namespaces&&(u=t.namespaces,o=t.enabled(e)),o),set:e=>{i=e}}),"function"==typeof t.init&&t.init(s),s}function n(e,n){const r=t(this.namespace+(void 0===n?":":n)+e);return r.log=this.log,r}function r(e){return e.toString().substring(2,e.toString().length-2).replace(/\.\*\?$/,"*")}return t.debug=t,t.default=t,t.coerce=function(e){if(e instanceof Error)return e.stack||e.message;return e},t.disable=function(){const e=[...t.names.map(r),...t.skips.map(r).map((e=>"-"+e))].join(",");return t.enable(""),e},t.enable=function(e){let n;t.save(e),t.namespaces=e,t.names=[],t.skips=[];const r=("string"==typeof e?e:"").split(/[\s,]+/),u=r.length;for(n=0;n{t[n]=e[n]})),t.names=[],t.skips=[],t.formatters={},t.selectColor=function(e){let n=0;for(let t=0;t{const n=e.startsWith("-")?"":1===e.length?"-":"--",r=t.indexOf(n+e),u=t.indexOf("--");return-1!==r&&(-1===u||r{}),"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."),t.colors=[6,2,3,4,5,1];try{const e=function(){if($r)return jr;$r=1;const e=E.default,t=A.default,n=Vr(),{env:r}=process;let u;function o(e){return 0!==e&&{level:e,hasBasic:!0,has256:e>=2,has16m:e>=3}}function i(t,o){if(0===u)return 0;if(n("color=16m")||n("color=full")||n("color=truecolor"))return 3;if(n("color=256"))return 2;if(t&&!o&&void 0===u)return 0;const i=u||0;if("dumb"===r.TERM)return i;if("win32"===process.platform){const t=e.release().split(".");return Number(t[0])>=10&&Number(t[2])>=10586?Number(t[2])>=14931?3:2:1}if("CI"in r)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI","GITHUB_ACTIONS","BUILDKITE"].some((e=>e in r))||"codeship"===r.CI_NAME?1:i;if("TEAMCITY_VERSION"in r)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(r.TEAMCITY_VERSION)?1:0;if("truecolor"===r.COLORTERM)return 3;if("TERM_PROGRAM"in r){const e=parseInt((r.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(r.TERM_PROGRAM){case"iTerm.app":return e>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(r.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(r.TERM)||"COLORTERM"in r?1:i}return n("no-color")||n("no-colors")||n("color=false")||n("color=never")?u=0:(n("color")||n("colors")||n("color=true")||n("color=always"))&&(u=1),"FORCE_COLOR"in r&&(u="true"===r.FORCE_COLOR?1:"false"===r.FORCE_COLOR?0:0===r.FORCE_COLOR.length?1:Math.min(parseInt(r.FORCE_COLOR,10),3)),jr={supportsColor:function(e){return o(i(e,e&&e.isTTY))},stdout:o(i(!0,t.isatty(1))),stderr:o(i(!0,t.isatty(2)))}}();e&&(e.stderr||e).level>=2&&(t.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221])}catch(e){}t.inspectOpts=Object.keys(process.env).filter((e=>/^debug_/i.test(e))).reduce(((e,t)=>{const n=t.substring(6).toLowerCase().replace(/_([a-z])/g,((e,t)=>t.toUpperCase()));let r=process.env[t];return r=!!/^(yes|on|true|enabled)$/i.test(r)||!/^(no|off|false|disabled)$/i.test(r)&&("null"===r?null:Number(r)),e[n]=r,e}),{}),e.exports=Rr()(t);const{formatters:u}=e.exports;u.o=function(e){return this.inspectOpts.colors=this.useColors,r.inspect(e,this.inspectOpts).split("\n").map((e=>e.trim())).join(" ")},u.O=function(e){return this.inspectOpts.colors=this.useColors,r.inspect(e,this.inspectOpts)}}(Gr,Gr.exports)),Gr.exports}Jr=Nr,"undefined"==typeof process||"renderer"===process.type||!0===process.browser||process.__nwjs?Jr.exports=(Br||(Br=1,function(e,t){t.formatArgs=function(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const n="color: "+this.color;t.splice(1,0,n,"color: inherit");let r=0,u=0;t[0].replace(/%[a-zA-Z%]/g,(e=>{"%%"!==e&&(r++,"%c"===e&&(u=r))})),t.splice(u,0,n)},t.save=function(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch(e){}},t.load=function(){let e;try{e=t.storage.getItem("debug")}catch(e){}return!e&&"undefined"!=typeof process&&"env"in process&&(e=process.env.DEBUG),e},t.useColors=function(){return!("undefined"==typeof window||!window.process||"renderer"!==window.process.type&&!window.process.__nwjs)||("undefined"==typeof navigator||!navigator.userAgent||!navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))&&("undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))},t.storage=function(){try{return localStorage}catch(e){}}(),t.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],t.log=console.debug||console.log||(()=>{}),e.exports=Rr()(t);const{formatters:n}=e.exports;n.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}}(Ir,Ir.exports)),Ir.exports):Jr.exports=Ur();var Wr=function(e){return(e=e||{}).circles?function(e){var t=[],n=[];return e.proto?function e(u){if("object"!=typeof u||null===u)return u;if(u instanceof Date)return new Date(u);if(Array.isArray(u))return r(u,e);if(u instanceof Map)return new Map(r(Array.from(u),e));if(u instanceof Set)return new Set(r(Array.from(u),e));var o={};for(var i in t.push(u),n.push(o),u){var s=u[i];if("object"!=typeof s||null===s)o[i]=s;else if(s instanceof Date)o[i]=new Date(s);else if(s instanceof Map)o[i]=new Map(r(Array.from(s),e));else if(s instanceof Set)o[i]=new Set(r(Array.from(s),e));else if(ArrayBuffer.isView(s))o[i]=zr(s);else{var c=t.indexOf(s);o[i]=-1!==c?n[c]:e(s)}}return t.pop(),n.pop(),o}:function e(u){if("object"!=typeof u||null===u)return u;if(u instanceof Date)return new Date(u);if(Array.isArray(u))return r(u,e);if(u instanceof Map)return new Map(r(Array.from(u),e));if(u instanceof Set)return new Set(r(Array.from(u),e));var o={};for(var i in t.push(u),n.push(o),u)if(!1!==Object.hasOwnProperty.call(u,i)){var s=u[i];if("object"!=typeof s||null===s)o[i]=s;else if(s instanceof Date)o[i]=new Date(s);else if(s instanceof Map)o[i]=new Map(r(Array.from(s),e));else if(s instanceof Set)o[i]=new Set(r(Array.from(s),e));else if(ArrayBuffer.isView(s))o[i]=zr(s);else{var c=t.indexOf(s);o[i]=-1!==c?n[c]:e(s)}}return t.pop(),n.pop(),o};function r(e,r){for(var u=Object.keys(e),o=new Array(u.length),i=0;i!e,Qr=e=>e&&"object"==typeof e&&!Array.isArray(e),eu=(e,t,n)=>{(Array.isArray(t)?t:[t]).forEach((t=>{if(t)throw new Error(`Problem with log4js configuration: (${Kr.inspect(e,{depth:5})}) - ${n}`)}))};var tu={configure:e=>{qr("New configuration to be validated: ",e),eu(e,Zr(Qr(e)),"must be an object."),qr(`Calling pre-processing listeners (${Yr.length})`),Yr.forEach((t=>t(e))),qr("Configuration pre-processing finished."),qr(`Calling configuration listeners (${Xr.length})`),Xr.forEach((t=>t(e))),qr("Configuration finished.")},addListener:e=>{Xr.push(e),qr(`Added listener, now ${Xr.length} listeners`)},addPreProcessingListener:e=>{Yr.push(e),qr(`Added pre-processing listener, now ${Yr.length} listeners`)},throwExceptionIf:eu,anObject:Qr,anInteger:e=>e&&"number"==typeof e&&Number.isInteger(e),validIdentifier:e=>/^[A-Za-z][A-Za-z0-9_]*$/g.test(e),not:Zr},nu={exports:{}};!function(e){function t(e,t){for(var n=e.toString();n.length-1?s:c,l=n(u.getHours()),f=n(u.getMinutes()),d=n(u.getSeconds()),D=t(u.getMilliseconds(),3),p=function(e){var t=Math.abs(e),n=String(Math.floor(t/60)),r=String(t%60);return n=("0"+n).slice(-2),r=("0"+r).slice(-2),0===e?"Z":(e<0?"+":"-")+n+":"+r}(u.getTimezoneOffset());return r.replace(/dd/g,o).replace(/MM/g,i).replace(/y{1,4}/g,a).replace(/hh/g,l).replace(/mm/g,f).replace(/ss/g,d).replace(/SSS/g,D).replace(/O/g,p)}function u(e,t,n,r){e["set"+(r?"":"UTC")+t](n)}e.exports=r,e.exports.asString=r,e.exports.parse=function(t,n,r){if(!t)throw new Error("pattern must be supplied");return function(t,n,r){var o=t.indexOf("O")<0,i=!1,s=[{pattern:/y{1,4}/,regexp:"\\d{1,4}",fn:function(e,t){u(e,"FullYear",t,o)}},{pattern:/MM/,regexp:"\\d{1,2}",fn:function(e,t){u(e,"Month",t-1,o),e.getMonth()!==t-1&&(i=!0)}},{pattern:/dd/,regexp:"\\d{1,2}",fn:function(e,t){i&&u(e,"Month",e.getMonth()-1,o),u(e,"Date",t,o)}},{pattern:/hh/,regexp:"\\d{1,2}",fn:function(e,t){u(e,"Hours",t,o)}},{pattern:/mm/,regexp:"\\d\\d",fn:function(e,t){u(e,"Minutes",t,o)}},{pattern:/ss/,regexp:"\\d\\d",fn:function(e,t){u(e,"Seconds",t,o)}},{pattern:/SSS/,regexp:"\\d\\d\\d",fn:function(e,t){u(e,"Milliseconds",t,o)}},{pattern:/O/,regexp:"[+-]\\d{1,2}:?\\d{2}?|Z",fn:function(e,t){t="Z"===t?0:t.replace(":","");var n=Math.abs(t),r=(t>0?-1:1)*(n%100+60*Math.floor(n/100));e.setUTCMinutes(e.getUTCMinutes()+r)}}],c=s.reduce((function(e,t){return t.pattern.test(e.regexp)?(t.index=e.regexp.match(t.pattern).index,e.regexp=e.regexp.replace(t.pattern,"("+t.regexp+")")):t.index=-1,e}),{regexp:t,index:[]}),a=s.filter((function(e){return e.index>-1}));a.sort((function(e,t){return e.index-t.index}));var l=new RegExp(c.regexp).exec(n);if(l){var f=r||e.exports.now();return a.forEach((function(e,t){e.fn(f,l[t+1])})),f}throw new Error("String '"+n+"' could not be parsed as '"+t+"'")}(t,n,r)},e.exports.now=function(){return new Date},e.exports.ISO8601_FORMAT="yyyy-MM-ddThh:mm:ss.SSS",e.exports.ISO8601_WITH_TZ_OFFSET_FORMAT="yyyy-MM-ddThh:mm:ss.SSSO",e.exports.DATETIME_FORMAT="dd MM yyyy hh:mm:ss.SSS",e.exports.ABSOLUTETIME_FORMAT="hh:mm:ss.SSS"}(nu);const ru=nu.exports,uu=E.default,ou=F.default,iu=p.default,su={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[90,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[91,39],yellow:[33,39]};function cu(e){return e?`[${su[e][0]}m`:""}function au(e){return e?`[${su[e][1]}m`:""}function lu(e,t){return n=ou.format("[%s] [%s] %s - ",ru.asString(e.startTime),e.level.toString(),e.categoryName),cu(r=t)+n+au(r);var n,r}function fu(e){return lu(e)+ou.format(...e.data)}function du(e){return lu(e,e.level.colour)+ou.format(...e.data)}function Du(e){return ou.format(...e.data)}function pu(e){return e.data[0]}function Eu(e,t){const n=/%(-?[0-9]+)?(\.?-?[0-9]+)?([[\]cdhmnprzxXyflos%])(\{([^}]+)\})?|([^%]+)/;function r(e){return e&&e.pid?e.pid.toString():process.pid.toString()}e=e||"%r %p %c - %m%n";const u={c:function(e,t){let n=e.categoryName;if(t){const e=parseInt(t,10),r=n.split(".");ee&&(n=r.slice(-e).join(iu.sep))}return n},l:function(e){return e.lineNumber?`${e.lineNumber}`:""},o:function(e){return e.columnNumber?`${e.columnNumber}`:""},s:function(e){return e.callStack||""}};function o(e,t,n){return u[e](t,n)}function i(e,t,n){let r=e;return r=function(e,t){let n;return e?(n=parseInt(e.substr(1),10),n>0?t.slice(0,n):t.slice(n)):t}(t,r),r=function(e,t){let n;if(e)if("-"===e.charAt(0))for(n=parseInt(e.substr(1),10);t.lengthDu,basic:()=>fu,colored:()=>du,coloured:()=>du,pattern:e=>Eu(e&&e.pattern,e&&e.tokens),dummy:()=>pu};var hu={basicLayout:fu,messagePassThroughLayout:Du,patternLayout:Eu,colouredLayout:du,coloredLayout:du,dummyLayout:pu,addLayout(e,t){mu[e]=t},layout:(e,t)=>mu[e]&&mu[e](t)};const yu=tu,Cu=["white","grey","black","blue","cyan","green","magenta","red","yellow"];class Fu{constructor(e,t,n){this.level=e,this.levelStr=t,this.colour=n}toString(){return this.levelStr}static getLevel(e,t){return e?e instanceof Fu?e:(e instanceof Object&&e.levelStr&&(e=e.levelStr),Fu[e.toString().toUpperCase()]||t):t}static addLevels(e){if(e){Object.keys(e).forEach((t=>{const n=t.toUpperCase();Fu[n]=new Fu(e[t].value,n,e[t].colour);const r=Fu.levels.findIndex((e=>e.levelStr===n));r>-1?Fu.levels[r]=Fu[n]:Fu.levels.push(Fu[n])})),Fu.levels.sort(((e,t)=>e.level-t.level))}}isLessThanOrEqualTo(e){return"string"==typeof e&&(e=Fu.getLevel(e)),this.level<=e.level}isGreaterThanOrEqualTo(e){return"string"==typeof e&&(e=Fu.getLevel(e)),this.level>=e.level}isEqualTo(e){return"string"==typeof e&&(e=Fu.getLevel(e)),this.level===e.level}}Fu.levels=[],Fu.addLevels({ALL:{value:Number.MIN_VALUE,colour:"grey"},TRACE:{value:5e3,colour:"blue"},DEBUG:{value:1e4,colour:"cyan"},INFO:{value:2e4,colour:"green"},WARN:{value:3e4,colour:"yellow"},ERROR:{value:4e4,colour:"red"},FATAL:{value:5e4,colour:"magenta"},MARK:{value:9007199254740992,colour:"grey"},OFF:{value:Number.MAX_VALUE,colour:"grey"}}),yu.addListener((e=>{const t=e.levels;if(t){yu.throwExceptionIf(e,yu.not(yu.anObject(t)),"levels must be an object");Object.keys(t).forEach((n=>{yu.throwExceptionIf(e,yu.not(yu.validIdentifier(n)),`level name "${n}" is not a valid identifier (must start with a letter, only contain A-Z,a-z,0-9,_)`),yu.throwExceptionIf(e,yu.not(yu.anObject(t[n])),`level "${n}" must be an object`),yu.throwExceptionIf(e,yu.not(t[n].value),`level "${n}" must have a 'value' property`),yu.throwExceptionIf(e,yu.not(yu.anInteger(t[n].value)),`level "${n}".value must have an integer value`),yu.throwExceptionIf(e,yu.not(t[n].colour),`level "${n}" must have a 'colour' property`),yu.throwExceptionIf(e,yu.not(Cu.indexOf(t[n].colour)>-1),`level "${n}".colour must be one of ${Cu.join(", ")}`)}))}})),yu.addListener((e=>{Fu.addLevels(e.levels)}));var gu=Fu,Au={exports:{}},vu={};/*! (c) 2020 Andrea Giammarchi */ +const{parse:Su,stringify:wu}=JSON,{keys:Ou}=Object,bu=String,_u="string",Bu={},Pu="object",ku=(e,t)=>t,xu=e=>e instanceof bu?bu(e):e,Nu=(e,t)=>typeof t===_u?new bu(t):t,Iu=(e,t,n,r)=>{const u=[];for(let o=Ou(n),{length:i}=o,s=0;s{const r=bu(t.push(n)-1);return e.set(n,r),r},Ru=(e,t)=>{const n=Su(e,Nu).map(xu),r=n[0],u=t||ku,o=typeof r===Pu&&r?Iu(n,new Set,r,u):r;return u.call({"":o},"",o)};vu.parse=Ru;const Mu=(e,t,n)=>{const r=t&&typeof t===Pu?(e,n)=>""===e||-1Su(Mu(e));vu.fromJSON=e=>Ru(wu(e));const Lu=vu,ju=gu;class $u{constructor(e,t,n,r,u){this.startTime=new Date,this.categoryName=e,this.data=n,this.level=t,this.context=Object.assign({},r),this.pid=process.pid,u&&(this.functionName=u.functionName,this.fileName=u.fileName,this.lineNumber=u.lineNumber,this.columnNumber=u.columnNumber,this.callStack=u.callStack)}serialise(){const e=this.data.map((e=>(e&&e.message&&e.stack&&(e=Object.assign({message:e.message,stack:e.stack},e)),e)));return this.data=e,Lu.stringify(this)}static deserialise(e){let t;try{const n=Lu.parse(e);n.data=n.data.map((e=>{if(e&&e.message&&e.stack){const t=new Error(e);Object.keys(e).forEach((n=>{t[n]=e[n]})),e=t}return e})),t=new $u(n.categoryName,ju.getLevel(n.level.levelStr),n.data,n.context),t.startTime=new Date(n.startTime),t.pid=n.pid,t.cluster=n.cluster}catch(n){t=new $u("log4js",ju.ERROR,["Unable to parse log:",e,"because: ",n])}return t}}var Hu=$u;const Ju=Nr.exports("log4js:clustering"),Gu=Hu,Vu=tu;let Uu=!1,Wu=null;try{Wu=require("cluster")}catch(e){Ju("cluster module not present"),Uu=!0}const zu=[];let Ku=!1,qu="NODE_APP_INSTANCE";const Yu=()=>Ku&&"0"===process.env[qu],Xu=()=>Uu||Wu.isMaster||Yu(),Zu=e=>{zu.forEach((t=>t(e)))},Qu=(e,t)=>{if(Ju("cluster message received from worker ",e,": ",t),e.topic&&e.data&&(t=e,e=void 0),t&&t.topic&&"log4js:message"===t.topic){Ju("received message: ",t.data);const e=Gu.deserialise(t.data);Zu(e)}};Uu||Vu.addListener((e=>{zu.length=0,({pm2:Ku,disableClustering:Uu,pm2InstanceVar:qu="NODE_APP_INSTANCE"}=e),Ju(`clustering disabled ? ${Uu}`),Ju(`cluster.isMaster ? ${Wu&&Wu.isMaster}`),Ju(`pm2 enabled ? ${Ku}`),Ju(`pm2InstanceVar = ${qu}`),Ju(`process.env[${qu}] = ${process.env[qu]}`),Ku&&process.removeListener("message",Qu),Wu&&Wu.removeListener&&Wu.removeListener("message",Qu),Uu||e.disableClustering?Ju("Not listening for cluster messages, because clustering disabled."):Yu()?(Ju("listening for PM2 broadcast messages"),process.on("message",Qu)):Wu.isMaster?(Ju("listening for cluster messages"),Wu.on("message",Qu)):Ju("not listening for messages, because we are not a master process")}));var eo={onlyOnMaster:(e,t)=>Xu()?e():t,isMaster:Xu,send:e=>{Xu()?Zu(e):(Ku||(e.cluster={workerId:Wu.worker.id,worker:process.pid}),process.send({topic:"log4js:message",data:e.serialise()}))},onMessage:e=>{zu.push(e)}},to={};function no(e){if("number"==typeof e&&Number.isInteger(e))return e;const t={K:1024,M:1048576,G:1073741824},n=Object.keys(t),r=e.substr(e.length-1).toLocaleUpperCase(),u=e.substring(0,e.length-1).trim();if(n.indexOf(r)<0||!Number.isInteger(Number(u)))throw Error(`maxLogSize: "${e}" is invalid`);return u*t[r]}function ro(e){return function(e,t){const n=Object.assign({},t);return Object.keys(e).forEach((r=>{n[r]&&(n[r]=e[r](t[r]))})),n}({maxLogSize:no},e)}const uo={file:ro,fileSync:ro};to.modifyConfig=e=>uo[e.type]?uo[e.type](e):e;var oo={};const io=console.log.bind(console);oo.configure=function(e,t){let n=t.colouredLayout;return e.layout&&(n=t.layout(e.layout.type,e.layout)),function(e,t){return n=>{io(e(n,t))}}(n,e.timezoneOffset)};var so={};so.configure=function(e,t){let n=t.colouredLayout;return e.layout&&(n=t.layout(e.layout.type,e.layout)),function(e,t){return n=>{process.stdout.write(`${e(n,t)}\n`)}}(n,e.timezoneOffset)};var co={};co.configure=function(e,t){let n=t.colouredLayout;return e.layout&&(n=t.layout(e.layout.type,e.layout)),function(e,t){return n=>{process.stderr.write(`${e(n,t)}\n`)}}(n,e.timezoneOffset)};var ao={};ao.configure=function(e,t,n,r){const u=n(e.appender);return function(e,t,n,r){const u=r.getLevel(e),o=r.getLevel(t,r.FATAL);return e=>{const t=e.level;t.isGreaterThanOrEqualTo(u)&&t.isLessThanOrEqualTo(o)&&n(e)}}(e.level,e.maxLevel,u,r)};var lo={};const fo=Nr.exports("log4js:categoryFilter");lo.configure=function(e,t,n){const r=n(e.appender);return function(e,t){return"string"==typeof e&&(e=[e]),n=>{fo(`Checking ${n.categoryName} against ${e}`),-1===e.indexOf(n.categoryName)&&(fo("Not excluded, sending to appender"),t(n))}}(e.exclude,r)};var Do={};const po=Nr.exports("log4js:noLogFilter");Do.configure=function(e,t,n){const r=n(e.appender);return function(e,t){return n=>{po(`Checking data: ${n.data} against filters: ${e}`),"string"==typeof e&&(e=[e]),e=e.filter((e=>null!=e&&""!==e));const r=new RegExp(e.join("|"),"i");(0===e.length||n.data.findIndex((e=>r.test(e)))<0)&&(po("Not excluded, sending to appender"),t(n))}}(e.exclude,r)};var Eo={},mo={exports:{}},ho={},yo={fromCallback:function(e){return Object.defineProperty((function(){if("function"!=typeof arguments[arguments.length-1])return new Promise(((t,n)=>{arguments[arguments.length]=(e,r)=>{if(e)return n(e);t(r)},arguments.length++,e.apply(this,arguments)}));e.apply(this,arguments)}),"name",{value:e.name})},fromPromise:function(e){return Object.defineProperty((function(){const t=arguments[arguments.length-1];if("function"!=typeof t)return e.apply(this,arguments);e.apply(this,arguments).then((e=>t(null,e)),t)}),"name",{value:e.name})}};!function(e){const t=yo.fromCallback,n=we,r=["access","appendFile","chmod","chown","close","copyFile","fchmod","fchown","fdatasync","fstat","fsync","ftruncate","futimes","lchown","lchmod","link","lstat","mkdir","mkdtemp","open","readFile","readdir","readlink","realpath","rename","rmdir","stat","symlink","truncate","unlink","utimes","writeFile"].filter((e=>"function"==typeof n[e]));Object.keys(n).forEach((t=>{"promises"!==t&&(e[t]=n[t])})),r.forEach((r=>{e[r]=t(n[r])})),e.exists=function(e,t){return"function"==typeof t?n.exists(e,t):new Promise((t=>n.exists(e,t)))},e.read=function(e,t,r,u,o,i){return"function"==typeof i?n.read(e,t,r,u,o,i):new Promise(((i,s)=>{n.read(e,t,r,u,o,((e,t,n)=>{if(e)return s(e);i({bytesRead:t,buffer:n})}))}))},e.write=function(e,t,...r){return"function"==typeof r[r.length-1]?n.write(e,t,...r):new Promise(((u,o)=>{n.write(e,t,...r,((e,t,n)=>{if(e)return o(e);u({bytesWritten:t,buffer:n})}))}))},"function"==typeof n.realpath.native&&(e.realpath.native=t(n.realpath.native))}(ho);const Co=p.default;function Fo(e){return(e=Co.normalize(Co.resolve(e)).split(Co.sep)).length>0?e[0]:null}const go=/[<>:"|?*]/;var Ao=function(e){const t=Fo(e);return e=e.replace(t,""),go.test(e)};const vo=we,So=p.default,wo=Ao,Oo=parseInt("0777",8);var bo=function e(t,n,r,u){if("function"==typeof n?(r=n,n={}):n&&"object"==typeof n||(n={mode:n}),"win32"===process.platform&&wo(t)){const e=new Error(t+" contains invalid WIN32 path characters.");return e.code="EINVAL",r(e)}let o=n.mode;const i=n.fs||vo;void 0===o&&(o=Oo&~process.umask()),u||(u=null),r=r||function(){},t=So.resolve(t),i.mkdir(t,o,(o=>{if(!o)return r(null,u=u||t);if("ENOENT"===o.code){if(So.dirname(t)===t)return r(o);e(So.dirname(t),n,((u,o)=>{u?r(u,o):e(t,n,r,o)}))}else i.stat(t,((e,t)=>{e||!t.isDirectory()?r(o,u):r(null,u)}))}))};const _o=we,Bo=p.default,Po=Ao,ko=parseInt("0777",8);var xo=function e(t,n,r){n&&"object"==typeof n||(n={mode:n});let u=n.mode;const o=n.fs||_o;if("win32"===process.platform&&Po(t)){const e=new Error(t+" contains invalid WIN32 path characters.");throw e.code="EINVAL",e}void 0===u&&(u=ko&~process.umask()),r||(r=null),t=Bo.resolve(t);try{o.mkdirSync(t,u),r=r||t}catch(u){if("ENOENT"===u.code){if(Bo.dirname(t)===t)throw u;r=e(Bo.dirname(t),n,r),e(t,n,r)}else{let e;try{e=o.statSync(t)}catch(e){throw u}if(!e.isDirectory())throw u}}return r};const No=(0,yo.fromCallback)(bo);var Io={mkdirs:No,mkdirsSync:xo,mkdirp:No,mkdirpSync:xo,ensureDir:No,ensureDirSync:xo};const To=we;E.default,p.default;var Ro=function(e,t,n,r){To.open(e,"r+",((e,u)=>{if(e)return r(e);To.futimes(u,t,n,(e=>{To.close(u,(t=>{r&&r(e||t)}))}))}))},Mo=function(e,t,n){const r=To.openSync(e,"r+");return To.futimesSync(r,t,n),To.closeSync(r)};const Lo=we,jo=p.default,$o=10,Ho=5,Jo=0,Go=process.versions.node.split("."),Vo=Number.parseInt(Go[0],10),Uo=Number.parseInt(Go[1],10),Wo=Number.parseInt(Go[2],10);function zo(){if(Vo>$o)return!0;if(Vo===$o){if(Uo>Ho)return!0;if(Uo===Ho&&Wo>=Jo)return!0}return!1}function Ko(e,t){const n=jo.resolve(e).split(jo.sep).filter((e=>e)),r=jo.resolve(t).split(jo.sep).filter((e=>e));return n.reduce(((e,t,n)=>e&&r[n]===t),!0)}function qo(e,t,n){return`Cannot ${n} '${e}' to a subdirectory of itself, '${t}'.`}var Yo,Xo,Zo={checkPaths:function(e,t,n,r){!function(e,t,n){zo()?Lo.stat(e,{bigint:!0},((e,r)=>{if(e)return n(e);Lo.stat(t,{bigint:!0},((e,t)=>e?"ENOENT"===e.code?n(null,{srcStat:r,destStat:null}):n(e):n(null,{srcStat:r,destStat:t})))})):Lo.stat(e,((e,r)=>{if(e)return n(e);Lo.stat(t,((e,t)=>e?"ENOENT"===e.code?n(null,{srcStat:r,destStat:null}):n(e):n(null,{srcStat:r,destStat:t})))}))}(e,t,((u,o)=>{if(u)return r(u);const{srcStat:i,destStat:s}=o;return s&&s.ino&&s.dev&&s.ino===i.ino&&s.dev===i.dev?r(new Error("Source and destination must not be the same.")):i.isDirectory()&&Ko(e,t)?r(new Error(qo(e,t,n))):r(null,{srcStat:i,destStat:s})}))},checkPathsSync:function(e,t,n){const{srcStat:r,destStat:u}=function(e,t){let n,r;n=zo()?Lo.statSync(e,{bigint:!0}):Lo.statSync(e);try{r=zo()?Lo.statSync(t,{bigint:!0}):Lo.statSync(t)}catch(e){if("ENOENT"===e.code)return{srcStat:n,destStat:null};throw e}return{srcStat:n,destStat:r}}(e,t);if(u&&u.ino&&u.dev&&u.ino===r.ino&&u.dev===r.dev)throw new Error("Source and destination must not be the same.");if(r.isDirectory()&&Ko(e,t))throw new Error(qo(e,t,n));return{srcStat:r,destStat:u}},checkParentPaths:function e(t,n,r,u,o){const i=jo.resolve(jo.dirname(t)),s=jo.resolve(jo.dirname(r));if(s===i||s===jo.parse(s).root)return o();zo()?Lo.stat(s,{bigint:!0},((i,c)=>i?"ENOENT"===i.code?o():o(i):c.ino&&c.dev&&c.ino===n.ino&&c.dev===n.dev?o(new Error(qo(t,r,u))):e(t,n,s,u,o))):Lo.stat(s,((i,c)=>i?"ENOENT"===i.code?o():o(i):c.ino&&c.dev&&c.ino===n.ino&&c.dev===n.dev?o(new Error(qo(t,r,u))):e(t,n,s,u,o)))},checkParentPathsSync:function e(t,n,r,u){const o=jo.resolve(jo.dirname(t)),i=jo.resolve(jo.dirname(r));if(i===o||i===jo.parse(i).root)return;let s;try{s=zo()?Lo.statSync(i,{bigint:!0}):Lo.statSync(i)}catch(e){if("ENOENT"===e.code)return;throw e}if(s.ino&&s.dev&&s.ino===n.ino&&s.dev===n.dev)throw new Error(qo(t,r,u));return e(t,n,i,u)},isSrcSubdir:Ko};const Qo=we,ei=p.default,ti=Io.mkdirsSync,ni=Mo,ri=Zo;function ui(e,t,n,r){if(!r.filter||r.filter(t,n))return function(e,t,n,r){const u=r.dereference?Qo.statSync:Qo.lstatSync,o=u(t);if(o.isDirectory())return function(e,t,n,r,u){if(!t)return function(e,t,n,r){return Qo.mkdirSync(n),ii(t,n,r),Qo.chmodSync(n,e.mode)}(e,n,r,u);if(t&&!t.isDirectory())throw new Error(`Cannot overwrite non-directory '${r}' with directory '${n}'.`);return ii(n,r,u)}(o,e,t,n,r);if(o.isFile()||o.isCharacterDevice()||o.isBlockDevice())return function(e,t,n,r,u){return t?function(e,t,n,r){if(r.overwrite)return Qo.unlinkSync(n),oi(e,t,n,r);if(r.errorOnExist)throw new Error(`'${n}' already exists`)}(e,n,r,u):oi(e,n,r,u)}(o,e,t,n,r);if(o.isSymbolicLink())return function(e,t,n,r){let u=Qo.readlinkSync(t);r.dereference&&(u=ei.resolve(process.cwd(),u));if(e){let e;try{e=Qo.readlinkSync(n)}catch(e){if("EINVAL"===e.code||"UNKNOWN"===e.code)return Qo.symlinkSync(u,n);throw e}if(r.dereference&&(e=ei.resolve(process.cwd(),e)),ri.isSrcSubdir(u,e))throw new Error(`Cannot copy '${u}' to a subdirectory of itself, '${e}'.`);if(Qo.statSync(n).isDirectory()&&ri.isSrcSubdir(e,u))throw new Error(`Cannot overwrite '${e}' with '${u}'.`);return function(e,t){return Qo.unlinkSync(t),Qo.symlinkSync(e,t)}(u,n)}return Qo.symlinkSync(u,n)}(e,t,n,r)}(e,t,n,r)}function oi(e,t,n,r){return"function"==typeof Qo.copyFileSync?(Qo.copyFileSync(t,n),Qo.chmodSync(n,e.mode),r.preserveTimestamps?ni(n,e.atime,e.mtime):void 0):function(e,t,n,r){const u=65536,o=(Xo?Yo:(Xo=1,Yo=function(e){if("function"==typeof Buffer.allocUnsafe)try{return Buffer.allocUnsafe(e)}catch(t){return new Buffer(e)}return new Buffer(e)}))(u),i=Qo.openSync(t,"r"),s=Qo.openSync(n,"w",e.mode);let c=0;for(;cfunction(e,t,n,r){const u=ei.join(t,e),o=ei.join(n,e),{destStat:i}=ri.checkPathsSync(u,o,"copy");return ui(i,u,o,r)}(r,e,t,n)))}var si=function(e,t,n){"function"==typeof n&&(n={filter:n}),(n=n||{}).clobber=!("clobber"in n)||!!n.clobber,n.overwrite="overwrite"in n?!!n.overwrite:n.clobber,n.preserveTimestamps&&"ia32"===process.arch&&console.warn("fs-extra: Using the preserveTimestamps option in 32-bit node is not recommended;\n\n see https://github.com/jprichardson/node-fs-extra/issues/269");const{srcStat:r,destStat:u}=ri.checkPathsSync(e,t,"copy");return ri.checkParentPathsSync(e,r,t,"copy"),function(e,t,n,r){if(r.filter&&!r.filter(t,n))return;const u=ei.dirname(n);Qo.existsSync(u)||ti(u);return ui(e,t,n,r)}(u,e,t,n)},ci={copySync:si};const ai=yo.fromPromise,li=ho;var fi={pathExists:ai((function(e){return li.access(e).then((()=>!0)).catch((()=>!1))})),pathExistsSync:li.existsSync};const di=we,Di=p.default,pi=Io.mkdirs,Ei=fi.pathExists,mi=Ro,hi=Zo;function yi(e,t,n,r,u){const o=Di.dirname(n);Ei(o,((i,s)=>i?u(i):s?Fi(e,t,n,r,u):void pi(o,(o=>o?u(o):Fi(e,t,n,r,u)))))}function Ci(e,t,n,r,u,o){Promise.resolve(u.filter(n,r)).then((i=>i?e(t,n,r,u,o):o()),(e=>o(e)))}function Fi(e,t,n,r,u){return r.filter?Ci(gi,e,t,n,r,u):gi(e,t,n,r,u)}function gi(e,t,n,r,u){(r.dereference?di.stat:di.lstat)(t,((o,i)=>o?u(o):i.isDirectory()?function(e,t,n,r,u,o){if(!t)return function(e,t,n,r,u){di.mkdir(n,(o=>{if(o)return u(o);Si(t,n,r,(t=>t?u(t):di.chmod(n,e.mode,u)))}))}(e,n,r,u,o);if(t&&!t.isDirectory())return o(new Error(`Cannot overwrite non-directory '${r}' with directory '${n}'.`));return Si(n,r,u,o)}(i,e,t,n,r,u):i.isFile()||i.isCharacterDevice()||i.isBlockDevice()?function(e,t,n,r,u,o){return t?function(e,t,n,r,u){if(!r.overwrite)return r.errorOnExist?u(new Error(`'${n}' already exists`)):u();di.unlink(n,(o=>o?u(o):Ai(e,t,n,r,u)))}(e,n,r,u,o):Ai(e,n,r,u,o)}(i,e,t,n,r,u):i.isSymbolicLink()?function(e,t,n,r,u){di.readlink(t,((t,o)=>t?u(t):(r.dereference&&(o=Di.resolve(process.cwd(),o)),e?void di.readlink(n,((t,i)=>t?"EINVAL"===t.code||"UNKNOWN"===t.code?di.symlink(o,n,u):u(t):(r.dereference&&(i=Di.resolve(process.cwd(),i)),hi.isSrcSubdir(o,i)?u(new Error(`Cannot copy '${o}' to a subdirectory of itself, '${i}'.`)):e.isDirectory()&&hi.isSrcSubdir(i,o)?u(new Error(`Cannot overwrite '${i}' with '${o}'.`)):function(e,t,n){di.unlink(t,(r=>r?n(r):di.symlink(e,t,n)))}(o,n,u)))):di.symlink(o,n,u))))}(e,t,n,r,u):void 0))}function Ai(e,t,n,r,u){return"function"==typeof di.copyFile?di.copyFile(t,n,(t=>t?u(t):vi(e,n,r,u))):function(e,t,n,r,u){const o=di.createReadStream(t);o.on("error",(e=>u(e))).once("open",(()=>{const t=di.createWriteStream(n,{mode:e.mode});t.on("error",(e=>u(e))).on("open",(()=>o.pipe(t))).once("close",(()=>vi(e,n,r,u)))}))}(e,t,n,r,u)}function vi(e,t,n,r){di.chmod(t,e.mode,(u=>u?r(u):n.preserveTimestamps?mi(t,e.atime,e.mtime,r):r()))}function Si(e,t,n,r){di.readdir(e,((u,o)=>u?r(u):wi(o,e,t,n,r)))}function wi(e,t,n,r,u){const o=e.pop();return o?function(e,t,n,r,u,o){const i=Di.join(n,t),s=Di.join(r,t);hi.checkPaths(i,s,"copy",((t,c)=>{if(t)return o(t);const{destStat:a}=c;Fi(a,i,s,u,(t=>t?o(t):wi(e,n,r,u,o)))}))}(e,o,t,n,r,u):u()}var Oi=function(e,t,n,r){"function"!=typeof n||r?"function"==typeof n&&(n={filter:n}):(r=n,n={}),r=r||function(){},(n=n||{}).clobber=!("clobber"in n)||!!n.clobber,n.overwrite="overwrite"in n?!!n.overwrite:n.clobber,n.preserveTimestamps&&"ia32"===process.arch&&console.warn("fs-extra: Using the preserveTimestamps option in 32-bit node is not recommended;\n\n see https://github.com/jprichardson/node-fs-extra/issues/269"),hi.checkPaths(e,t,"copy",((u,o)=>{if(u)return r(u);const{srcStat:i,destStat:s}=o;hi.checkParentPaths(e,i,t,"copy",(u=>u?r(u):n.filter?Ci(yi,s,e,t,n,r):yi(s,e,t,n,r)))}))};var bi={copy:(0,yo.fromCallback)(Oi)};const _i=we,Bi=p.default,Pi=g.default,ki="win32"===process.platform;function xi(e){["unlink","chmod","stat","lstat","rmdir","readdir"].forEach((t=>{e[t]=e[t]||_i[t],e[t+="Sync"]=e[t]||_i[t]})),e.maxBusyTries=e.maxBusyTries||3}function Ni(e,t,n){let r=0;"function"==typeof t&&(n=t,t={}),Pi(e,"rimraf: missing path"),Pi.strictEqual(typeof e,"string","rimraf: path should be a string"),Pi.strictEqual(typeof n,"function","rimraf: callback function required"),Pi(t,"rimraf: invalid options argument provided"),Pi.strictEqual(typeof t,"object","rimraf: options should be object"),xi(t),Ii(e,t,(function u(o){if(o){if(("EBUSY"===o.code||"ENOTEMPTY"===o.code||"EPERM"===o.code)&&rIi(e,t,u)),100*r)}"ENOENT"===o.code&&(o=null)}n(o)}))}function Ii(e,t,n){Pi(e),Pi(t),Pi("function"==typeof n),t.lstat(e,((r,u)=>r&&"ENOENT"===r.code?n(null):r&&"EPERM"===r.code&&ki?Ti(e,t,r,n):u&&u.isDirectory()?Mi(e,t,r,n):void t.unlink(e,(r=>{if(r){if("ENOENT"===r.code)return n(null);if("EPERM"===r.code)return ki?Ti(e,t,r,n):Mi(e,t,r,n);if("EISDIR"===r.code)return Mi(e,t,r,n)}return n(r)}))))}function Ti(e,t,n,r){Pi(e),Pi(t),Pi("function"==typeof r),n&&Pi(n instanceof Error),t.chmod(e,438,(u=>{u?r("ENOENT"===u.code?null:n):t.stat(e,((u,o)=>{u?r("ENOENT"===u.code?null:n):o.isDirectory()?Mi(e,t,n,r):t.unlink(e,r)}))}))}function Ri(e,t,n){let r;Pi(e),Pi(t),n&&Pi(n instanceof Error);try{t.chmodSync(e,438)}catch(e){if("ENOENT"===e.code)return;throw n}try{r=t.statSync(e)}catch(e){if("ENOENT"===e.code)return;throw n}r.isDirectory()?ji(e,t,n):t.unlinkSync(e)}function Mi(e,t,n,r){Pi(e),Pi(t),n&&Pi(n instanceof Error),Pi("function"==typeof r),t.rmdir(e,(u=>{!u||"ENOTEMPTY"!==u.code&&"EEXIST"!==u.code&&"EPERM"!==u.code?u&&"ENOTDIR"===u.code?r(n):r(u):function(e,t,n){Pi(e),Pi(t),Pi("function"==typeof n),t.readdir(e,((r,u)=>{if(r)return n(r);let o,i=u.length;if(0===i)return t.rmdir(e,n);u.forEach((r=>{Ni(Bi.join(e,r),t,(r=>{if(!o)return r?n(o=r):void(0==--i&&t.rmdir(e,n))}))}))}))}(e,t,r)}))}function Li(e,t){let n;xi(t=t||{}),Pi(e,"rimraf: missing path"),Pi.strictEqual(typeof e,"string","rimraf: path should be a string"),Pi(t,"rimraf: missing options"),Pi.strictEqual(typeof t,"object","rimraf: options should be object");try{n=t.lstatSync(e)}catch(n){if("ENOENT"===n.code)return;"EPERM"===n.code&&ki&&Ri(e,t,n)}try{n&&n.isDirectory()?ji(e,t,null):t.unlinkSync(e)}catch(n){if("ENOENT"===n.code)return;if("EPERM"===n.code)return ki?Ri(e,t,n):ji(e,t,n);if("EISDIR"!==n.code)throw n;ji(e,t,n)}}function ji(e,t,n){Pi(e),Pi(t),n&&Pi(n instanceof Error);try{t.rmdirSync(e)}catch(r){if("ENOTDIR"===r.code)throw n;if("ENOTEMPTY"===r.code||"EEXIST"===r.code||"EPERM"===r.code)!function(e,t){if(Pi(e),Pi(t),t.readdirSync(e).forEach((n=>Li(Bi.join(e,n),t))),!ki){return t.rmdirSync(e,t)}{const n=Date.now();do{try{return t.rmdirSync(e,t)}catch(e){}}while(Date.now()-n<500)}}(e,t);else if("ENOENT"!==r.code)throw r}}var $i=Ni;Ni.sync=Li;const Hi=$i;var Ji={remove:(0,yo.fromCallback)(Hi),removeSync:Hi.sync};const Gi=yo.fromCallback,Vi=we,Ui=p.default,Wi=Io,zi=Ji,Ki=Gi((function(e,t){t=t||function(){},Vi.readdir(e,((n,r)=>{if(n)return Wi.mkdirs(e,t);r=r.map((t=>Ui.join(e,t))),function e(){const n=r.pop();if(!n)return t();zi.remove(n,(n=>{if(n)return t(n);e()}))}()}))}));function qi(e){let t;try{t=Vi.readdirSync(e)}catch(t){return Wi.mkdirsSync(e)}t.forEach((t=>{t=Ui.join(e,t),zi.removeSync(t)}))}var Yi={emptyDirSync:qi,emptydirSync:qi,emptyDir:Ki,emptydir:Ki};const Xi=yo.fromCallback,Zi=p.default,Qi=we,es=Io,ts=fi.pathExists;var ns={createFile:Xi((function(e,t){function n(){Qi.writeFile(e,"",(e=>{if(e)return t(e);t()}))}Qi.stat(e,((r,u)=>{if(!r&&u.isFile())return t();const o=Zi.dirname(e);ts(o,((e,r)=>e?t(e):r?n():void es.mkdirs(o,(e=>{if(e)return t(e);n()}))))}))})),createFileSync:function(e){let t;try{t=Qi.statSync(e)}catch(e){}if(t&&t.isFile())return;const n=Zi.dirname(e);Qi.existsSync(n)||es.mkdirsSync(n),Qi.writeFileSync(e,"")}};const rs=yo.fromCallback,us=p.default,os=we,is=Io,ss=fi.pathExists;var cs={createLink:rs((function(e,t,n){function r(e,t){os.link(e,t,(e=>{if(e)return n(e);n(null)}))}ss(t,((u,o)=>u?n(u):o?n(null):void os.lstat(e,(u=>{if(u)return u.message=u.message.replace("lstat","ensureLink"),n(u);const o=us.dirname(t);ss(o,((u,i)=>u?n(u):i?r(e,t):void is.mkdirs(o,(u=>{if(u)return n(u);r(e,t)}))))}))))})),createLinkSync:function(e,t){if(os.existsSync(t))return;try{os.lstatSync(e)}catch(e){throw e.message=e.message.replace("lstat","ensureLink"),e}const n=us.dirname(t);return os.existsSync(n)||is.mkdirsSync(n),os.linkSync(e,t)}};const as=p.default,ls=we,fs=fi.pathExists;var ds={symlinkPaths:function(e,t,n){if(as.isAbsolute(e))return ls.lstat(e,(t=>t?(t.message=t.message.replace("lstat","ensureSymlink"),n(t)):n(null,{toCwd:e,toDst:e})));{const r=as.dirname(t),u=as.join(r,e);return fs(u,((t,o)=>t?n(t):o?n(null,{toCwd:u,toDst:e}):ls.lstat(e,(t=>t?(t.message=t.message.replace("lstat","ensureSymlink"),n(t)):n(null,{toCwd:e,toDst:as.relative(r,e)})))))}},symlinkPathsSync:function(e,t){let n;if(as.isAbsolute(e)){if(n=ls.existsSync(e),!n)throw new Error("absolute srcpath does not exist");return{toCwd:e,toDst:e}}{const r=as.dirname(t),u=as.join(r,e);if(n=ls.existsSync(u),n)return{toCwd:u,toDst:e};if(n=ls.existsSync(e),!n)throw new Error("relative srcpath does not exist");return{toCwd:e,toDst:as.relative(r,e)}}}};const Ds=we;var ps={symlinkType:function(e,t,n){if(n="function"==typeof t?t:n,t="function"!=typeof t&&t)return n(null,t);Ds.lstat(e,((e,r)=>{if(e)return n(null,"file");t=r&&r.isDirectory()?"dir":"file",n(null,t)}))},symlinkTypeSync:function(e,t){let n;if(t)return t;try{n=Ds.lstatSync(e)}catch(e){return"file"}return n&&n.isDirectory()?"dir":"file"}};const Es=yo.fromCallback,ms=p.default,hs=we,ys=Io.mkdirs,Cs=Io.mkdirsSync,Fs=ds.symlinkPaths,gs=ds.symlinkPathsSync,As=ps.symlinkType,vs=ps.symlinkTypeSync,Ss=fi.pathExists;var ws={createSymlink:Es((function(e,t,n,r){r="function"==typeof n?n:r,n="function"!=typeof n&&n,Ss(t,((u,o)=>u?r(u):o?r(null):void Fs(e,t,((u,o)=>{if(u)return r(u);e=o.toDst,As(o.toCwd,n,((n,u)=>{if(n)return r(n);const o=ms.dirname(t);Ss(o,((n,i)=>n?r(n):i?hs.symlink(e,t,u,r):void ys(o,(n=>{if(n)return r(n);hs.symlink(e,t,u,r)}))))}))}))))})),createSymlinkSync:function(e,t,n){if(hs.existsSync(t))return;const r=gs(e,t);e=r.toDst,n=vs(r.toCwd,n);const u=ms.dirname(t);return hs.existsSync(u)||Cs(u),hs.symlinkSync(e,t,n)}};var Os,bs={createFile:ns.createFile,createFileSync:ns.createFileSync,ensureFile:ns.createFile,ensureFileSync:ns.createFileSync,createLink:cs.createLink,createLinkSync:cs.createLinkSync,ensureLink:cs.createLink,ensureLinkSync:cs.createLinkSync,createSymlink:ws.createSymlink,createSymlinkSync:ws.createSymlinkSync,ensureSymlink:ws.createSymlink,ensureSymlinkSync:ws.createSymlinkSync};try{Os=we}catch(e){Os=D.default}function _s(e,t){var n,r="\n";return"object"==typeof t&&null!==t&&(t.spaces&&(n=t.spaces),t.EOL&&(r=t.EOL)),JSON.stringify(e,t?t.replacer:null,n).replace(/\n/g,r)+r}function Bs(e){return Buffer.isBuffer(e)&&(e=e.toString("utf8")),e=e.replace(/^\uFEFF/,"")}var Ps={readFile:function(e,t,n){null==n&&(n=t,t={}),"string"==typeof t&&(t={encoding:t});var r=(t=t||{}).fs||Os,u=!0;"throws"in t&&(u=t.throws),r.readFile(e,t,(function(r,o){if(r)return n(r);var i;o=Bs(o);try{i=JSON.parse(o,t?t.reviver:null)}catch(t){return u?(t.message=e+": "+t.message,n(t)):n(null,null)}n(null,i)}))},readFileSync:function(e,t){"string"==typeof(t=t||{})&&(t={encoding:t});var n=t.fs||Os,r=!0;"throws"in t&&(r=t.throws);try{var u=n.readFileSync(e,t);return u=Bs(u),JSON.parse(u,t.reviver)}catch(t){if(r)throw t.message=e+": "+t.message,t;return null}},writeFile:function(e,t,n,r){null==r&&(r=n,n={});var u=(n=n||{}).fs||Os,o="";try{o=_s(t,n)}catch(e){return void(r&&r(e,null))}u.writeFile(e,o,n,r)},writeFileSync:function(e,t,n){var r=(n=n||{}).fs||Os,u=_s(t,n);return r.writeFileSync(e,u,n)}},ks=Ps;const xs=yo.fromCallback,Ns=ks;var Is={readJson:xs(Ns.readFile),readJsonSync:Ns.readFileSync,writeJson:xs(Ns.writeFile),writeJsonSync:Ns.writeFileSync};const Ts=p.default,Rs=Io,Ms=fi.pathExists,Ls=Is;var js=function(e,t,n,r){"function"==typeof n&&(r=n,n={});const u=Ts.dirname(e);Ms(u,((o,i)=>o?r(o):i?Ls.writeJson(e,t,n,r):void Rs.mkdirs(u,(u=>{if(u)return r(u);Ls.writeJson(e,t,n,r)}))))};const $s=we,Hs=p.default,Js=Io,Gs=Is;var Vs=function(e,t,n){const r=Hs.dirname(e);$s.existsSync(r)||Js.mkdirsSync(r),Gs.writeJsonSync(e,t,n)};const Us=yo.fromCallback,Ws=Is;Ws.outputJson=Us(js),Ws.outputJsonSync=Vs,Ws.outputJSON=Ws.outputJson,Ws.outputJSONSync=Ws.outputJsonSync,Ws.writeJSON=Ws.writeJson,Ws.writeJSONSync=Ws.writeJsonSync,Ws.readJSON=Ws.readJson,Ws.readJSONSync=Ws.readJsonSync;var zs=Ws;const Ks=we,qs=p.default,Ys=ci.copySync,Xs=Ji.removeSync,Zs=Io.mkdirpSync,Qs=Zo;function ec(e,t,n){try{Ks.renameSync(e,t)}catch(r){if("EXDEV"!==r.code)throw r;return function(e,t,n){const r={overwrite:n,errorOnExist:!0};return Ys(e,t,r),Xs(e)}(e,t,n)}}var tc=function(e,t,n){const r=(n=n||{}).overwrite||n.clobber||!1,{srcStat:u}=Qs.checkPathsSync(e,t,"move");return Qs.checkParentPathsSync(e,u,t,"move"),Zs(qs.dirname(t)),function(e,t,n){if(n)return Xs(t),ec(e,t,n);if(Ks.existsSync(t))throw new Error("dest already exists.");return ec(e,t,n)}(e,t,r)},nc={moveSync:tc};const rc=we,uc=p.default,oc=bi.copy,ic=Ji.remove,sc=Io.mkdirp,cc=fi.pathExists,ac=Zo;function lc(e,t,n,r){rc.rename(e,t,(u=>u?"EXDEV"!==u.code?r(u):function(e,t,n,r){const u={overwrite:n,errorOnExist:!0};oc(e,t,u,(t=>t?r(t):ic(e,r)))}(e,t,n,r):r()))}var fc=function(e,t,n,r){"function"==typeof n&&(r=n,n={});const u=n.overwrite||n.clobber||!1;ac.checkPaths(e,t,"move",((n,o)=>{if(n)return r(n);const{srcStat:i}=o;ac.checkParentPaths(e,i,t,"move",(n=>{if(n)return r(n);sc(uc.dirname(t),(n=>n?r(n):function(e,t,n,r){if(n)return ic(t,(u=>u?r(u):lc(e,t,n,r)));cc(t,((u,o)=>u?r(u):o?r(new Error("dest already exists.")):lc(e,t,n,r)))}(e,t,u,r)))}))}))};var dc={move:(0,yo.fromCallback)(fc)};const Dc=yo.fromCallback,pc=we,Ec=p.default,mc=Io,hc=fi.pathExists;var yc={outputFile:Dc((function(e,t,n,r){"function"==typeof n&&(r=n,n="utf8");const u=Ec.dirname(e);hc(u,((o,i)=>o?r(o):i?pc.writeFile(e,t,n,r):void mc.mkdirs(u,(u=>{if(u)return r(u);pc.writeFile(e,t,n,r)}))))})),outputFileSync:function(e,...t){const n=Ec.dirname(e);if(pc.existsSync(n))return pc.writeFileSync(e,...t);mc.mkdirsSync(n),pc.writeFileSync(e,...t)}};!function(e){e.exports=Object.assign({},ho,ci,bi,Yi,bs,zs,Io,nc,dc,yc,fi,Ji);const t=D.default;Object.getOwnPropertyDescriptor(t,"promises")&&Object.defineProperty(e.exports,"promises",{get:()=>t.promises})}(mo);const Cc=Nr.exports("streamroller:fileNameFormatter"),Fc=p.default;const gc=Nr.exports("streamroller:fileNameParser"),Ac=nu.exports;const vc=Nr.exports("streamroller:moveAndMaybeCompressFile"),Sc=mo.exports,wc=v.default;var Oc=async(e,t,n)=>{if(n=function(e){const t={mode:parseInt("0600",8),compress:!1},n=Object.assign({},t,e);return vc(`_parseOption: moveAndMaybeCompressFile called with option=${JSON.stringify(n)}`),n}(n),e!==t){if(await Sc.pathExists(e))if(vc(`moveAndMaybeCompressFile: moving file from ${e} to ${t} ${n.compress?"with":"without"} compress`),n.compress)await new Promise(((r,u)=>{let o=!1;const i=Sc.createWriteStream(t,{mode:n.mode,flags:"wx"}).on("open",(()=>{o=!0;const t=Sc.createReadStream(e).on("open",(()=>{t.pipe(wc.createGzip()).pipe(i)})).on("error",(t=>{vc(`moveAndMaybeCompressFile: error reading ${e}`,t),i.destroy(t)}))})).on("finish",(()=>{vc(`moveAndMaybeCompressFile: finished compressing ${t}, deleting ${e}`),Sc.unlink(e).then(r).catch((t=>{vc(`moveAndMaybeCompressFile: error deleting ${e}, truncating instead`,t),Sc.truncate(e).then(r).catch((t=>{vc(`moveAndMaybeCompressFile: error truncating ${e}`,t),u(t)}))}))})).on("error",(e=>{o?(vc(`moveAndMaybeCompressFile: error writing ${t}, deleting`,e),Sc.unlink(t).then((()=>{u(e)})).catch((e=>{vc(`moveAndMaybeCompressFile: error deleting ${t}`,e),u(e)}))):(vc(`moveAndMaybeCompressFile: error creating ${t}`,e),u(e))}))})).catch((()=>{}));else{vc(`moveAndMaybeCompressFile: renaming ${e} to ${t}`);try{await Sc.move(e,t,{overwrite:!0})}catch(n){if(vc(`moveAndMaybeCompressFile: error renaming ${e} to ${t}`,n),"ENOENT"!==n.code){vc("moveAndMaybeCompressFile: trying copy+truncate instead");try{await Sc.copy(e,t,{overwrite:!0}),await Sc.truncate(e)}catch(e){vc("moveAndMaybeCompressFile: error copy+truncate",e)}}}}}else vc("moveAndMaybeCompressFile: source and target are the same, not doing anything")};const bc=Nr.exports("streamroller:RollingFileWriteStream"),_c=mo.exports,Bc=p.default,Pc=E.default,kc=()=>new Date,xc=nu.exports,{Writable:Nc}=C.default,Ic=({file:e,keepFileExt:t,needsIndex:n,alwaysIncludeDate:r,compress:u,fileNameSep:o})=>{let i=o||".";const s=Fc.join(e.dir,e.name),c=t=>t+e.ext,a=(e,t,r)=>!n&&r||!t?e:e+i+t,l=(e,t,n)=>(t>0||r)&&n?e+i+n:e,f=(e,t)=>t&&u?e+".gz":e,d=t?[l,a,c,f]:[c,l,a,f];return({date:e,index:t})=>(Cc(`_formatFileName: date=${e}, index=${t}`),d.reduce(((n,r)=>r(n,t,e)),s))},Tc=({file:e,keepFileExt:t,pattern:n,fileNameSep:r})=>{let u=r||".";const o="__NOT_MATCHING__";let i=[(e,t)=>e.endsWith(".gz")?(gc("it is gzipped"),t.isCompressed=!0,e.slice(0,-1*".gz".length)):e,t?t=>t.startsWith(e.name)&&t.endsWith(e.ext)?(gc("it starts and ends with the right things"),t.slice(e.name.length+1,-1*e.ext.length)):o:t=>t.startsWith(e.base)?(gc("it starts with the right things"),t.slice(e.base.length+1)):o,n?(e,t)=>{const r=e.split(u);let o=r[r.length-1];gc("items: ",r,", indexStr: ",o);let i=e;void 0!==o&&o.match(/^\d+$/)?(i=e.slice(0,-1*(o.length+1)),gc(`dateStr is ${i}`),n&&!i&&(i=o,o="0")):o="0";try{const r=Ac.parse(n,i,new Date(0,0));return Ac.asString(n,r)!==i?e:(t.index=parseInt(o,10),t.date=i,t.timestamp=r.getTime(),"")}catch(t){return gc(`Problem parsing ${i} as ${n}, error was: `,t),e}}:(e,t)=>e.match(/^\d+$/)?(gc("it has an index"),t.index=parseInt(e,10),""):e];return e=>{let t={filename:e,index:0,isCompressed:!1};return i.reduce(((e,n)=>n(e,t)),e)?null:t}},Rc=Oc;var Mc=class extends Nc{constructor(e,t){if(bc(`constructor: creating RollingFileWriteStream. path=${e}`),"string"!=typeof e||0===e.length)throw new Error(`Invalid filename: ${e}`);if(e.endsWith(Bc.sep))throw new Error(`Filename is a directory: ${e}`);0===e.indexOf(`~${Bc.sep}`)&&(e=e.replace("~",Pc.homedir())),super(t),this.options=this._parseOption(t),this.fileObject=Bc.parse(e),""===this.fileObject.dir&&(this.fileObject=Bc.parse(Bc.join(process.cwd(),e))),this.fileFormatter=Ic({file:this.fileObject,alwaysIncludeDate:this.options.alwaysIncludePattern,needsIndex:this.options.maxSize 0`)}else delete n.maxSize;if(n.numBackups||0===n.numBackups){if(n.numBackups<0)throw new Error(`options.numBackups (${n.numBackups}) should be >= 0`);if(n.numBackups>=Number.MAX_SAFE_INTEGER)throw new Error(`options.numBackups (${n.numBackups}) should be < Number.MAX_SAFE_INTEGER`);n.numToKeep=n.numBackups+1}else if(n.numToKeep<=0)throw new Error(`options.numToKeep (${n.numToKeep}) should be > 0`);return bc(`_parseOption: creating stream with option=${JSON.stringify(n)}`),n}_final(e){this.currentFileStream.end("",this.options.encoding,e)}_write(e,t,n){this._shouldRoll().then((()=>{bc(`_write: writing chunk. file=${this.currentFileStream.path} state=${JSON.stringify(this.state)} chunk=${e}`),this.currentFileStream.write(e,t,(t=>{this.state.currentSize+=e.length,n(t)}))}))}async _shouldRoll(){(this._dateChanged()||this._tooBig())&&(bc(`_shouldRoll: rolling because dateChanged? ${this._dateChanged()} or tooBig? ${this._tooBig()}`),await this._roll())}_dateChanged(){return this.state.currentDate&&this.state.currentDate!==xc(this.options.pattern,kc())}_tooBig(){return this.state.currentSize>=this.options.maxSize}_roll(){return bc("_roll: closing the current stream"),new Promise(((e,t)=>{this.currentFileStream.end("",this.options.encoding,(()=>{this._moveOldFiles().then(e).catch(t)}))}))}async _moveOldFiles(){const e=await this._getExistingFiles();for(let t=(this.state.currentDate?e.filter((e=>e.date===this.state.currentDate)):e).length;t>=0;t--){bc(`_moveOldFiles: i = ${t}`);const e=this.fileFormatter({date:this.state.currentDate,index:t}),n=this.fileFormatter({date:this.state.currentDate,index:t+1}),r={compress:this.options.compress&&0===t,mode:this.options.mode};await Rc(e,n,r)}this.state.currentSize=0,this.state.currentDate=this.state.currentDate?xc(this.options.pattern,kc()):null,bc(`_moveOldFiles: finished rolling files. state=${JSON.stringify(this.state)}`),this._renewWriteStream(),await new Promise(((e,t)=>{this.currentFileStream.write("","utf8",(()=>{this._clean().then(e).catch(t)}))}))}async _getExistingFiles(){const e=await _c.readdir(this.fileObject.dir).catch((()=>[]));bc(`_getExistingFiles: files=${e}`);const t=e.map((e=>this.fileNameParser(e))).filter((e=>e)),n=e=>(e.timestamp?e.timestamp:kc().getTime())-e.index;return t.sort(((e,t)=>n(e)-n(t))),t}_renewWriteStream(){const e=this.fileFormatter({date:this.state.currentDate,index:0}),t=e=>{try{return _c.mkdirSync(e,{recursive:!0})}catch(n){if("ENOENT"===n.code)return t(Bc.dirname(e)),t(e);if("EEXIST"!==n.code&&"EROFS"!==n.code)throw n;try{if(_c.statSync(e).isDirectory())return e;throw n}catch(e){throw n}}};t(this.fileObject.dir);const n={flags:this.options.flags,encoding:this.options.encoding,mode:this.options.mode};var r,u;_c.appendFileSync(e,"",(r={...n},u="flags",r["flag"]=r[u],delete r[u],r)),this.currentFileStream=_c.createWriteStream(e,n),this.currentFileStream.on("error",(e=>{this.emit("error",e)}))}async _clean(){const e=await this._getExistingFiles();if(bc(`_clean: numToKeep = ${this.options.numToKeep}, existingFiles = ${e.length}`),bc("_clean: existing files are: ",e),this._tooManyFiles(e.length)){const n=e.slice(0,e.length-this.options.numToKeep).map((e=>Bc.format({dir:this.fileObject.dir,base:e.filename})));await(t=n,bc(`deleteFiles: files to delete: ${t}`),Promise.all(t.map((e=>_c.unlink(e).catch((t=>{bc(`deleteFiles: error when unlinking ${e}, ignoring. Error was ${t}`)}))))))}var t}_tooManyFiles(e){return this.options.numToKeep>0&&e>this.options.numToKeep}};const Lc=Mc;var jc=class extends Lc{constructor(e,t,n,r){r||(r={}),t&&(r.maxSize=t),r.numBackups||0===r.numBackups||(n||0===n||(n=1),r.numBackups=n),super(e,r),this.backups=r.numBackups,this.size=this.options.maxSize}get theStream(){return this.currentFileStream}};const $c=Mc;var Hc={RollingFileWriteStream:Mc,RollingFileStream:jc,DateRollingFileStream:class extends $c{constructor(e,t,n){t&&"object"==typeof t&&(n=t,t=null),n||(n={}),t||(t="yyyy-MM-dd"),n.pattern=t,n.numBackups||0===n.numBackups?n.daysToKeep=n.numBackups:(n.daysToKeep||0===n.daysToKeep?process.emitWarning("options.daysToKeep is deprecated due to the confusion it causes when used together with file size rolling. Please use options.numBackups instead.","DeprecationWarning","streamroller-DEP0001"):n.daysToKeep=1,n.numBackups=n.daysToKeep),super(e,n),this.mode=this.options.mode}get theStream(){return this.currentFileStream}}};const Jc=Nr.exports("log4js:file"),Gc=p.default,Vc=Hc,Uc=E.default.EOL;let Wc=!1;const zc=new Set;function Kc(){zc.forEach((e=>{e.sighupHandler()}))}function qc(e,t,n,r){const u=new Vc.RollingFileStream(e,t,n,r);return u.on("error",(t=>{console.error("log4js.fileAppender - Writing to file %s, error happened ",e,t)})),u.on("drain",(()=>{process.emit("log4js:pause",!1)})),u}Eo.configure=function(e,t){let n=t.basicLayout;return e.layout&&(n=t.layout(e.layout.type,e.layout)),e.mode=e.mode||384,function(e,t,n,r,u,o){e=Gc.normalize(e),Jc("Creating file appender (",e,", ",n,", ",r=r||0===r?r:5,", ",u,", ",o,")");let i=qc(e,n,r,u);const s=function(e){if(i.writable){if(!0===u.removeColor){const t=/\x1b[[0-9;]*m/g;e.data=e.data.map((e=>"string"==typeof e?e.replace(t,""):e))}i.write(t(e,o)+Uc,"utf8")||process.emit("log4js:pause",!0)}};return s.reopen=function(){i.end((()=>{i=qc(e,n,r,u)}))},s.sighupHandler=function(){Jc("SIGHUP handler called."),s.reopen()},s.shutdown=function(e){zc.delete(s),0===zc.size&&Wc&&(process.removeListener("SIGHUP",Kc),Wc=!1),i.end("","utf-8",e)},zc.add(s),Wc||(process.on("SIGHUP",Kc),Wc=!0),s}(e.filename,n,e.maxLogSize,e.backups,e,e.timezoneOffset)};var Yc={};const Xc=Hc,Zc=E.default.EOL;function Qc(e,t,n,r,u){r.maxSize=r.maxLogSize;const o=function(e,t,n){const r=new Xc.DateRollingFileStream(e,t,n);return r.on("error",(t=>{console.error("log4js.dateFileAppender - Writing to file %s, error happened ",e,t)})),r.on("drain",(()=>{process.emit("log4js:pause",!1)})),r}(e,t,r),i=function(e){o.writable&&(o.write(n(e,u)+Zc,"utf8")||process.emit("log4js:pause",!0))};return i.shutdown=function(e){o.end("","utf-8",e)},i}Yc.configure=function(e,t){let n=t.basicLayout;return e.layout&&(n=t.layout(e.layout.type,e.layout)),e.alwaysIncludePattern||(e.alwaysIncludePattern=!1),e.mode=e.mode||384,Qc(e.filename,e.pattern,n,e,e.timezoneOffset)};var ea={};const ta=Nr.exports("log4js:fileSync"),na=p.default,ra=D.default,ua=E.default.EOL||"\n";function oa(e,t){if(ra.existsSync(e))return;const n=ra.openSync(e,t.flags,t.mode);ra.closeSync(n)}class ia{constructor(e,t,n,r){ta("In RollingFileStream"),function(){if(!e||!t||t<=0)throw new Error("You must specify a filename and file size")}(),this.filename=e,this.size=t,this.backups=n,this.options=r,this.currentSize=0,this.currentSize=function(e){let t=0;try{t=ra.statSync(e).size}catch(t){oa(e,r)}return t}(this.filename)}shouldRoll(){return ta("should roll with current size %d, and max size %d",this.currentSize,this.size),this.currentSize>=this.size}roll(e){const t=this,n=new RegExp(`^${na.basename(e)}`);function r(e){return n.test(e)}function u(t){return parseInt(t.substring(`${na.basename(e)}.`.length),10)||0}function o(e,t){return u(e)>u(t)?1:u(e) ${e}.${r+1}`),ra.renameSync(na.join(na.dirname(e),n),`${e}.${r+1}`)}}ta("Rolling, rolling, rolling"),ta("Renaming the old files"),ra.readdirSync(na.dirname(e)).filter(r).sort(o).reverse().forEach(i)}write(e,t){const n=this;ta("in write"),this.shouldRoll()&&(this.currentSize=0,this.roll(this.filename)),ta("writing the chunk to the file"),n.currentSize+=e.length,ra.appendFileSync(n.filename,e)}}ea.configure=function(e,t){let n=t.basicLayout;e.layout&&(n=t.layout(e.layout.type,e.layout));const r={flags:e.flags||"a",encoding:e.encoding||"utf8",mode:e.mode||384};return function(e,t,n,r,u,o){ta("fileSync appender created");const i=function(e,t,n){let r;var u;return t?r=new ia(e,t,n,o):(oa(u=e,o),r={write(e){ra.appendFileSync(u,e)}}),r}(e=na.normalize(e),n,r=r||0===r?r:5);return e=>{i.write(t(e,u)+ua)}}(e.filename,n,e.maxLogSize,e.backups,e.timezoneOffset,r)};var sa={};const ca=Nr.exports("log4js:tcp"),aa=S.default;sa.configure=function(e,t){ca(`configure with config = ${e}`);let n=function(e){return e.serialise()};return e.layout&&(n=t.layout(e.layout.type,e.layout)),function(e,t){let n=!1;const r=[];let u,o=3,i="__LOG4JS__";function s(e){ca("Writing log event to socket"),n=u.write(`${t(e)}${i}`,"utf8")}function c(){let e;for(ca("emptying buffer");e=r.shift();)s(e)}function a(e){n?s(e):(ca("buffering log event because it cannot write at the moment"),r.push(e))}return function t(){ca(`appender creating socket to ${e.host||"localhost"}:${e.port||5e3}`),i=`${e.endMsg||"__LOG4JS__"}`,u=aa.createConnection(e.port||5e3,e.host||"localhost"),u.on("connect",(()=>{ca("socket connected"),c(),n=!0})),u.on("drain",(()=>{ca("drain event received, emptying buffer"),n=!0,c()})),u.on("timeout",u.end.bind(u)),u.on("error",(e=>{ca("connection error",e),n=!1,c()})),u.on("close",t)}(),a.shutdown=function(e){ca("shutdown called"),r.length&&o?(ca("buffer has items, waiting 100ms to empty"),o-=1,setTimeout((()=>{a.shutdown(e)}),100)):(u.removeAllListeners("close"),u.end(e))},a}(e,n)};const la=p.default,fa=Nr.exports("log4js:appenders"),da=tu,Da=eo,pa=gu,Ea=hu,ma=to,ha=new Map;ha.set("console",oo),ha.set("stdout",so),ha.set("stderr",co),ha.set("logLevelFilter",ao),ha.set("categoryFilter",lo),ha.set("noLogFilter",Do),ha.set("file",Eo),ha.set("dateFile",Yc),ha.set("fileSync",ea),ha.set("tcp",sa);const ya=new Map,Ca=(e,t)=>{fa("Loading module from ",e);try{return require(e)}catch(n){return void da.throwExceptionIf(t,"MODULE_NOT_FOUND"!==n.code,`appender "${e}" could not be loaded (error was: ${n})`)}},Fa=new Set,ga=(e,t)=>{if(ya.has(e))return ya.get(e);if(!t.appenders[e])return!1;if(Fa.has(e))throw new Error(`Dependency loop detected for appender ${e}.`);Fa.add(e),fa(`Creating appender ${e}`);const n=Aa(e,t);return Fa.delete(e),ya.set(e,n),n},Aa=(e,t)=>{const n=t.appenders[e],r=n.type.configure?n.type:((e,t)=>ha.get(e)||Ca(`./${e}`,t)||Ca(e,t)||require.main&&Ca(la.join(la.dirname(require.main.filename),e),t)||Ca(la.join(process.cwd(),e),t))(n.type,t);return da.throwExceptionIf(t,da.not(r),`appender "${e}" is not valid (type "${n.type}" could not be found)`),r.appender&&fa(`DEPRECATION: Appender ${n.type} exports an appender function.`),r.shutdown&&fa(`DEPRECATION: Appender ${n.type} exports a shutdown function.`),fa(`${e}: clustering.isMaster ? ${Da.isMaster()}`),fa(`${e}: appenderModule is ${F.default.inspect(r)}`),Da.onlyOnMaster((()=>(fa(`calling appenderModule.configure for ${e} / ${n.type}`),r.configure(ma.modifyConfig(n),Ea,(e=>ga(e,t)),pa))),(()=>{}))},va=e=>{ya.clear(),Fa.clear();const t=[];Object.values(e.categories).forEach((e=>{t.push(...e.appenders)})),Object.keys(e.appenders).forEach((n=>{(t.includes(n)||"tcp-server"===e.appenders[n].type)&&ga(n,e)}))},Sa=()=>{va({appenders:{out:{type:"stdout"}},categories:{default:{appenders:["out"],level:"trace"}}})};Sa(),da.addListener((e=>{da.throwExceptionIf(e,da.not(da.anObject(e.appenders)),'must have a property "appenders" of type object.');const t=Object.keys(e.appenders);da.throwExceptionIf(e,da.not(t.length),"must define at least one appender."),t.forEach((t=>{da.throwExceptionIf(e,da.not(e.appenders[t].type),`appender "${t}" is not valid (must be an object with property "type")`)}))})),da.addListener(va),Au.exports=ya,Au.exports.init=Sa;var wa={exports:{}};!function(e){const t=Nr.exports("log4js:categories"),n=tu,r=gu,u=Au.exports,o=new Map;function i(e,t,n){if(!1===t.inherit)return;const r=n.lastIndexOf(".");if(r<0)return;const u=n.substring(0,r);let o=e.categories[u];o||(o={inherit:!0,appenders:[]}),i(e,o,u),!e.categories[u]&&o.appenders&&o.appenders.length&&o.level&&(e.categories[u]=o),t.appenders=t.appenders||[],t.level=t.level||o.level,o.appenders.forEach((e=>{t.appenders.includes(e)||t.appenders.push(e)})),t.parent=o}function s(e){if(!e.categories)return;Object.keys(e.categories).forEach((t=>{const n=e.categories[t];i(e,n,t)}))}n.addPreProcessingListener((e=>s(e))),n.addListener((e=>{n.throwExceptionIf(e,n.not(n.anObject(e.categories)),'must have a property "categories" of type object.');const t=Object.keys(e.categories);n.throwExceptionIf(e,n.not(t.length),"must define at least one category."),t.forEach((t=>{const o=e.categories[t];n.throwExceptionIf(e,[n.not(o.appenders),n.not(o.level)],`category "${t}" is not valid (must be an object with properties "appenders" and "level")`),n.throwExceptionIf(e,n.not(Array.isArray(o.appenders)),`category "${t}" is not valid (appenders must be an array of appender names)`),n.throwExceptionIf(e,n.not(o.appenders.length),`category "${t}" is not valid (appenders must contain at least one appender name)`),Object.prototype.hasOwnProperty.call(o,"enableCallStack")&&n.throwExceptionIf(e,"boolean"!=typeof o.enableCallStack,`category "${t}" is not valid (enableCallStack must be boolean type)`),o.appenders.forEach((r=>{n.throwExceptionIf(e,n.not(u.get(r)),`category "${t}" is not valid (appender "${r}" is not defined)`)})),n.throwExceptionIf(e,n.not(r.getLevel(o.level)),`category "${t}" is not valid (level "${o.level}" not recognised; valid levels are ${r.levels.join(", ")})`)})),n.throwExceptionIf(e,n.not(e.categories.default),'must define a "default" category.')}));const c=e=>{o.clear();Object.keys(e.categories).forEach((n=>{const i=e.categories[n],s=[];i.appenders.forEach((e=>{s.push(u.get(e)),t(`Creating category ${n}`),o.set(n,{appenders:s,level:r.getLevel(i.level),enableCallStack:i.enableCallStack||!1})}))}))},a=()=>{c({categories:{default:{appenders:["out"],level:"OFF"}}})};a(),n.addListener(c);const l=e=>(t(`configForCategory: searching for config for ${e}`),o.has(e)?(t(`configForCategory: ${e} exists in config, returning it`),o.get(e)):e.indexOf(".")>0?(t(`configForCategory: ${e} has hierarchy, searching for parents`),l(e.substring(0,e.lastIndexOf(".")))):(t("configForCategory: returning config for default category"),l("default")));e.exports=o,e.exports=Object.assign(e.exports,{appendersForCategory:e=>l(e).appenders,getLevelForCategory:e=>l(e).level,setLevelForCategory:(e,n)=>{let r=o.get(e);if(t(`setLevelForCategory: found ${r} for ${e}`),!r){const n=l(e);t(`setLevelForCategory: no config found for category, found ${n} for parents of ${e}`),r={appenders:n.appenders}}r.level=n,o.set(e,r)},getEnableCallStackForCategory:e=>!0===l(e).enableCallStack,setEnableCallStackForCategory:(e,t)=>{l(e).enableCallStack=t},init:a})}(wa);const Oa=Nr.exports("log4js:logger"),ba=Hu,_a=gu,Ba=eo,Pa=wa.exports,ka=tu,xa=/at (?:(.+)\s+\()?(?:(.+?):(\d+)(?::(\d+))?|([^)]+))\)?/;function Na(e,t=4){const n=e.stack.split("\n").slice(t),r=xa.exec(n[0]);return r&&6===r.length?{functionName:r[1],fileName:r[2],lineNumber:parseInt(r[3],10),columnNumber:parseInt(r[4],10),callStack:n.join("\n")}:null}class Ia{constructor(e){if(!e)throw new Error("No category provided.");this.category=e,this.context={},this.parseCallStack=Na,Oa(`Logger created (${this.category}, ${this.level})`)}get level(){return _a.getLevel(Pa.getLevelForCategory(this.category),_a.TRACE)}set level(e){Pa.setLevelForCategory(this.category,_a.getLevel(e,this.level))}get useCallStack(){return Pa.getEnableCallStackForCategory(this.category)}set useCallStack(e){Pa.setEnableCallStackForCategory(this.category,!0===e)}log(e,...t){let n=_a.getLevel(e);n||(this._log(_a.WARN,"log4js:logger.log: invalid value for log-level as first parameter given: ",e),n=_a.INFO),this.isLevelEnabled(n)&&this._log(n,t)}isLevelEnabled(e){return this.level.isLessThanOrEqualTo(e)}_log(e,t){Oa(`sending log data (${e}) to appenders`);const n=new ba(this.category,e,t,this.context,this.useCallStack&&this.parseCallStack(new Error));Ba.send(n)}addContext(e,t){this.context[e]=t}removeContext(e){delete this.context[e]}clearContext(){this.context={}}setParseCallStackFunction(e){this.parseCallStack=e}}function Ta(e){const t=_a.getLevel(e),n=t.toString().toLowerCase().replace(/_([a-z])/g,(e=>e[1].toUpperCase())),r=n[0].toUpperCase()+n.slice(1);Ia.prototype[`is${r}Enabled`]=function(){return this.isLevelEnabled(t)},Ia.prototype[n]=function(...e){this.log(t,...e)}}_a.levels.forEach(Ta),ka.addListener((()=>{_a.levels.forEach(Ta)}));var Ra=Ia;const Ma=gu;function La(e){return e.originalUrl||e.url}function ja(e,t){for(let n=0;ne.source?e.source:e));t=new RegExp(n.join("|"))}return t}(t.nolog);return(e,i,s)=>{if(e._logging)return s();if(o&&o.test(e.originalUrl))return s();if(n.isLevelEnabled(r)||"auto"===t.level){const o=new Date,{writeHead:s}=i;e._logging=!0,i.writeHead=(e,t)=>{i.writeHead=s,i.writeHead(e,t),i.__statusCode=e,i.__headers=t||{}},i.on("finish",(()=>{i.responseTime=new Date-o,i.statusCode&&"auto"===t.level&&(r=Ma.INFO,i.statusCode>=300&&(r=Ma.WARN),i.statusCode>=400&&(r=Ma.ERROR)),r=function(e,t,n){let r=t;if(n){const t=n.find((t=>{let n=!1;return n=t.from&&t.to?e>=t.from&&e<=t.to:-1!==t.codes.indexOf(e),n}));t&&(r=Ma.getLevel(t.level,r))}return r}(i.statusCode,r,t.statusRules);const s=function(e,t,n){const r=[];return r.push({token:":url",replacement:La(e)}),r.push({token:":protocol",replacement:e.protocol}),r.push({token:":hostname",replacement:e.hostname}),r.push({token:":method",replacement:e.method}),r.push({token:":status",replacement:t.__statusCode||t.statusCode}),r.push({token:":response-time",replacement:t.responseTime}),r.push({token:":date",replacement:(new Date).toUTCString()}),r.push({token:":referrer",replacement:e.headers.referer||e.headers.referrer||""}),r.push({token:":http-version",replacement:`${e.httpVersionMajor}.${e.httpVersionMinor}`}),r.push({token:":remote-addr",replacement:e.headers["x-forwarded-for"]||e.ip||e._remoteAddress||e.socket&&(e.socket.remoteAddress||e.socket.socket&&e.socket.socket.remoteAddress)}),r.push({token:":user-agent",replacement:e.headers["user-agent"]}),r.push({token:":content-length",replacement:t.getHeader("content-length")||t.__headers&&t.__headers["Content-Length"]||"-"}),r.push({token:/:req\[([^\]]+)]/g,replacement:(t,n)=>e.headers[n.toLowerCase()]}),r.push({token:/:res\[([^\]]+)]/g,replacement:(e,n)=>t.getHeader(n.toLowerCase())||t.__headers&&t.__headers[n]}),(e=>{const t=e.concat();for(let e=0;eja(e,s)));t&&n.log(r,t)}else n.log(r,ja(u,s));t.context&&n.removeContext("res")}))}return s()}},nl=Va;let rl=!1;function ul(e){if(!rl)return;Ua("Received log event ",e);Za.appendersForCategory(e.categoryName).forEach((t=>{t(e)}))}function ol(e){rl&&il();let t=e;return"string"==typeof t&&(t=function(e){Ua(`Loading configuration from ${e}`);try{return JSON.parse(Wa.readFileSync(e,"utf8"))}catch(t){throw new Error(`Problem reading config from file "${e}". Error was ${t.message}`,t)}}(e)),Ua(`Configuration is ${t}`),Ka.configure(za(t)),el.onMessage(ul),rl=!0,sl}function il(e){Ua("Shutdown called. Disabling all log writing."),rl=!1;const t=Array.from(Xa.values());Xa.init(),Za.init();const n=t.reduceRight(((e,t)=>t.shutdown?e+1:e),0);if(0===n)return Ua("No appenders with shutdown functions found."),void 0!==e&&e();let r,u=0;function o(t){r=r||t,u+=1,Ua(`Appender shutdowns complete: ${u} / ${n}`),u>=n&&(Ua("All shutdown functions completed."),e&&e(r))}return Ua(`Found ${n} appenders with shutdown functions.`),t.filter((e=>e.shutdown)).forEach((e=>e.shutdown(o))),null}const sl={getLogger:function(e){return rl||ol(process.env.LOG4JS_CONFIG||{appenders:{out:{type:"stdout"}},categories:{default:{appenders:["out"],level:"OFF"}}}),new Qa(e||"default")},configure:ol,shutdown:il,connectLogger:tl,levels:Ya,addLayout:qa.addLayout,recording:function(){return nl}};var cl=sl,al={};Object.defineProperty(al,"__esModule",{value:!0}),al.levelMap=al.getLevel=al.setCategoriesLevel=al.getConfiguration=al.setConfiguration=void 0;const ll=cl;let fl={appenders:{debug:{type:"stdout",layout:{type:"pattern",pattern:"[%d] > hvigor %p %c %[%m%]"}},info:{type:"stdout",layout:{type:"pattern",pattern:"[%d] > hvigor %[%m%]"}},"no-pattern-info":{type:"stdout",layout:{type:"pattern",pattern:"%m"}},wrong:{type:"stderr",layout:{type:"pattern",pattern:"[%d] > hvigor %[%p: %m%]"}},"just-debug":{type:"logLevelFilter",appender:"debug",level:"debug",maxLevel:"debug"},"just-info":{type:"logLevelFilter",appender:"info",level:"info",maxLevel:"info"},"just-wrong":{type:"logLevelFilter",appender:"wrong",level:"warn",maxLevel:"error"}},categories:{default:{appenders:["just-debug","just-info","just-wrong"],level:"debug"},"no-pattern-info":{appenders:["no-pattern-info"],level:"info"}}};al.setConfiguration=e=>{fl=e};al.getConfiguration=()=>fl;let dl=ll.levels.DEBUG;al.setCategoriesLevel=(e,t)=>{dl=e;const n=fl.categories;for(const r in n)(null==t?void 0:t.includes(r))||Object.prototype.hasOwnProperty.call(n,r)&&(n[r].level=e.levelStr)};al.getLevel=()=>dl,al.levelMap=new Map([["ALL",ll.levels.ALL],["MARK",ll.levels.MARK],["TRACE",ll.levels.TRACE],["DEBUG",ll.levels.DEBUG],["INFO",ll.levels.INFO],["WARN",ll.levels.WARN],["ERROR",ll.levels.ERROR],["FATAL",ll.levels.FATAL],["OFF",ll.levels.OFF]]);var Dl=w&&w.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var u=Object.getOwnPropertyDescriptor(t,n);u&&!("get"in u?!t.__esModule:u.writable||u.configurable)||(u={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,u)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),pl=w&&w.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),El=w&&w.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&Dl(t,e,n);return pl(t,e),t};Object.defineProperty(xr,"__esModule",{value:!0}),xr.evaluateLogLevel=xr.HvigorLogger=void 0;const ml=El(cl),hl=cl,yl=El(F.default),Cl=al;class Fl{constructor(e){ml.configure((0,Cl.getConfiguration)()),this._logger=ml.getLogger(e),this._logger.level=(0,Cl.getLevel)()}static getLogger(e){return new Fl(e)}log(e,...t){this._logger.log(e,...t)}debug(e,...t){this._logger.debug(e,...t)}info(e,...t){this._logger.info(e,...t)}warn(e,...t){void 0!==e&&""!==e&&this._logger.warn(e,...t)}error(e,...t){this._logger.error(e,...t)}_printTaskExecuteInfo(e,t){this.info(`Finished :${e}... after ${t}`)}_printFailedTaskInfo(e){this.error(`Failed :${e}... `)}_printDisabledTaskInfo(e){this.info(`Disabled :${e}... `)}_printUpToDateTaskInfo(e){this.info(`UP-TO-DATE :${e}... `)}errorMessageExit(e,...t){throw new Error(yl.format(e,...t))}errorExit(e,t,...n){t&&this._logger.error(t,n),this._logger.error(e.stack)}setLevel(e,t){(0,Cl.setCategoriesLevel)(e,t),ml.shutdown(),ml.configure((0,Cl.getConfiguration)())}getLevel(){return this._logger.level}configure(e){const t=(0,Cl.getConfiguration)(),n={appenders:{...t.appenders,...e.appenders},categories:{...t.categories,...e.categories}};(0,Cl.setConfiguration)(n),ml.shutdown(),ml.configure(n)}}xr.HvigorLogger=Fl,xr.evaluateLogLevel=function(e,t){t.debug?e.setLevel(hl.levels.DEBUG):t.warn?e.setLevel(hl.levels.WARN):t.error?e.setLevel(hl.levels.ERROR):e.setLevel(hl.levels.INFO)};var gl=w&&w.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(X,"__esModule",{value:!0}),X.parseJsonText=X.parseJsonFile=void 0;const Al=Z,vl=gl(kr),Sl=gl(p.default),wl=gl(E.default),Ol=xr.HvigorLogger.getLogger("parse-json-util");var bl;!function(e){e[e.Char=0]="Char",e[e.EOF=1]="EOF",e[e.Identifier=2]="Identifier"}(bl||(bl={}));let _l,Bl,Pl,kl,xl,Nl,Il="start",Tl=[],Rl=0,Ml=1,Ll=0,jl=!1,$l="default",Hl="'",Jl=1;function Gl(e,t=!1){Bl=String(e),Il="start",Tl=[],Rl=0,Ml=1,Ll=0,kl=void 0,jl=t;do{_l=Vl(),Xl[Il]()}while("eof"!==_l.type);return kl}function Vl(){for($l="default",xl="",Hl="'",Jl=1;;){Nl=Ul();const e=zl[$l]();if(e)return e}}function Ul(){if(Bl[Rl])return String.fromCodePoint(Bl.codePointAt(Rl))}function Wl(){const e=Ul();return"\n"===e?(Ml++,Ll=0):e?Ll+=e.length:Ll++,e&&(Rl+=e.length),e}X.parseJsonFile=function(e,t=!1,n="utf-8"){const r=vl.default.readFileSync(Sl.default.resolve(e),{encoding:n});try{return Gl(r,t)}catch(t){if(t instanceof SyntaxError){const n=t.message.split("at");2===n.length&&Ol.errorMessageExit(`${n[0].trim()}${wl.default.EOL}\t at ${e}:${n[1].trim()}`)}Ol.errorMessageExit(`${e} is not in valid JSON/JSON5 format.`)}},X.parseJsonText=Gl;const zl={default(){switch(Nl){case"/":return Wl(),void($l="comment");case void 0:return Wl(),Kl("eof")}if(!Al.JudgeUtil.isIgnoreChar(Nl)&&!Al.JudgeUtil.isSpaceSeparator(Nl))return zl[Il]();Wl()},start(){$l="value"},beforePropertyName(){switch(Nl){case"$":case"_":return xl=Wl(),void($l="identifierName");case"\\":return Wl(),void($l="identifierNameStartEscape");case"}":return Kl("punctuator",Wl());case'"':case"'":return Hl=Nl,Wl(),void($l="string")}if(Al.JudgeUtil.isIdStartChar(Nl))return xl+=Wl(),void($l="identifierName");throw tf(bl.Char,Wl())},afterPropertyName(){if(":"===Nl)return Kl("punctuator",Wl());throw tf(bl.Char,Wl())},beforePropertyValue(){$l="value"},afterPropertyValue(){switch(Nl){case",":case"}":return Kl("punctuator",Wl())}throw tf(bl.Char,Wl())},beforeArrayValue(){if("]"===Nl)return Kl("punctuator",Wl());$l="value"},afterArrayValue(){switch(Nl){case",":case"]":return Kl("punctuator",Wl())}throw tf(bl.Char,Wl())},end(){throw tf(bl.Char,Wl())},comment(){switch(Nl){case"*":return Wl(),void($l="multiLineComment");case"/":return Wl(),void($l="singleLineComment")}throw tf(bl.Char,Wl())},multiLineComment(){switch(Nl){case"*":return Wl(),void($l="multiLineCommentAsterisk");case void 0:throw tf(bl.Char,Wl())}Wl()},multiLineCommentAsterisk(){switch(Nl){case"*":return void Wl();case"/":return Wl(),void($l="default");case void 0:throw tf(bl.Char,Wl())}Wl(),$l="multiLineComment"},singleLineComment(){switch(Nl){case"\n":case"\r":case"\u2028":case"\u2029":return Wl(),void($l="default");case void 0:return Wl(),Kl("eof")}Wl()},value(){switch(Nl){case"{":case"[":return Kl("punctuator",Wl());case"n":return Wl(),ql("ull"),Kl("null",null);case"t":return Wl(),ql("rue"),Kl("boolean",!0);case"f":return Wl(),ql("alse"),Kl("boolean",!1);case"-":case"+":return"-"===Wl()&&(Jl=-1),void($l="numerical");case".":case"0":case"I":case"N":return void($l="numerical");case'"':case"'":return Hl=Nl,Wl(),xl="",void($l="string")}if(void 0===Nl||!Al.JudgeUtil.isDigitWithoutZero(Nl))throw tf(bl.Char,Wl());$l="numerical"},numerical(){switch(Nl){case".":return xl=Wl(),void($l="decimalPointLeading");case"0":return xl=Wl(),void($l="zero");case"I":return Wl(),ql("nfinity"),Kl("numeric",Jl*(1/0));case"N":return Wl(),ql("aN"),Kl("numeric",NaN)}if(void 0!==Nl&&Al.JudgeUtil.isDigitWithoutZero(Nl))return xl=Wl(),void($l="decimalInteger");throw tf(bl.Char,Wl())},zero(){switch(Nl){case".":case"e":case"E":return void($l="decimal");case"x":case"X":return xl+=Wl(),void($l="hexadecimal")}return Kl("numeric",0)},decimalInteger(){switch(Nl){case".":case"e":case"E":return void($l="decimal")}if(!Al.JudgeUtil.isDigit(Nl))return Kl("numeric",Jl*Number(xl));xl+=Wl()},decimal(){switch(Nl){case".":xl+=Wl(),$l="decimalFraction";break;case"e":case"E":xl+=Wl(),$l="decimalExponent"}},decimalPointLeading(){if(Al.JudgeUtil.isDigit(Nl))return xl+=Wl(),void($l="decimalFraction");throw tf(bl.Char,Wl())},decimalFraction(){switch(Nl){case"e":case"E":return xl+=Wl(),void($l="decimalExponent")}if(!Al.JudgeUtil.isDigit(Nl))return Kl("numeric",Jl*Number(xl));xl+=Wl()},decimalExponent(){switch(Nl){case"+":case"-":return xl+=Wl(),void($l="decimalExponentSign")}if(Al.JudgeUtil.isDigit(Nl))return xl+=Wl(),void($l="decimalExponentInteger");throw tf(bl.Char,Wl())},decimalExponentSign(){if(Al.JudgeUtil.isDigit(Nl))return xl+=Wl(),void($l="decimalExponentInteger");throw tf(bl.Char,Wl())},decimalExponentInteger(){if(!Al.JudgeUtil.isDigit(Nl))return Kl("numeric",Jl*Number(xl));xl+=Wl()},hexadecimal(){if(Al.JudgeUtil.isHexDigit(Nl))return xl+=Wl(),void($l="hexadecimalInteger");throw tf(bl.Char,Wl())},hexadecimalInteger(){if(!Al.JudgeUtil.isHexDigit(Nl))return Kl("numeric",Jl*Number(xl));xl+=Wl()},identifierNameStartEscape(){if("u"!==Nl)throw tf(bl.Char,Wl());Wl();const e=Yl();switch(e){case"$":case"_":break;default:if(!Al.JudgeUtil.isIdStartChar(e))throw tf(bl.Identifier)}xl+=e,$l="identifierName"},identifierName(){switch(Nl){case"$":case"_":case"‌":case"‍":return void(xl+=Wl());case"\\":return Wl(),void($l="identifierNameEscape")}if(!Al.JudgeUtil.isIdContinueChar(Nl))return Kl("identifier",xl);xl+=Wl()},identifierNameEscape(){if("u"!==Nl)throw tf(bl.Char,Wl());Wl();const e=Yl();switch(e){case"$":case"_":case"‌":case"‍":break;default:if(!Al.JudgeUtil.isIdContinueChar(e))throw tf(bl.Identifier)}xl+=e,$l="identifierName"},string(){switch(Nl){case"\\":return Wl(),void(xl+=function(){const e=Ul(),t=function(){switch(Ul()){case"b":return Wl(),"\b";case"f":return Wl(),"\f";case"n":return Wl(),"\n";case"r":return Wl(),"\r";case"t":return Wl(),"\t";case"v":return Wl(),"\v"}return}();if(t)return t;switch(e){case"0":if(Wl(),Al.JudgeUtil.isDigit(Ul()))throw tf(bl.Char,Wl());return"\0";case"x":return Wl(),function(){let e="",t=Ul();if(!Al.JudgeUtil.isHexDigit(t))throw tf(bl.Char,Wl());if(e+=Wl(),t=Ul(),!Al.JudgeUtil.isHexDigit(t))throw tf(bl.Char,Wl());return e+=Wl(),String.fromCodePoint(parseInt(e,16))}();case"u":return Wl(),Yl();case"\n":case"\u2028":case"\u2029":return Wl(),"";case"\r":return Wl(),"\n"===Ul()&&Wl(),""}if(void 0===e||Al.JudgeUtil.isDigitWithoutZero(e))throw tf(bl.Char,Wl());return Wl()}());case'"':case"'":if(Nl===Hl){const e=Kl("string",xl);return Wl(),e}return void(xl+=Wl());case"\n":case"\r":case void 0:throw tf(bl.Char,Wl());case"\u2028":case"\u2029":!function(e){Ol.warn(`JSON5: '${ef(e)}' in strings is not valid ECMAScript; consider escaping.`)}(Nl)}xl+=Wl()}};function Kl(e,t){return{type:e,value:t,line:Ml,column:Ll}}function ql(e){for(const t of e){if(Ul()!==t)throw tf(bl.Char,Wl());Wl()}}function Yl(){let e="",t=4;for(;t-- >0;){const t=Ul();if(!Al.JudgeUtil.isHexDigit(t))throw tf(bl.Char,Wl());e+=Wl()}return String.fromCodePoint(parseInt(e,16))}const Xl={start(){if("eof"===_l.type)throw tf(bl.EOF);Zl()},beforePropertyName(){switch(_l.type){case"identifier":case"string":return Pl=_l.value,void(Il="afterPropertyName");case"punctuator":return void Ql();case"eof":throw tf(bl.EOF)}},afterPropertyName(){if("eof"===_l.type)throw tf(bl.EOF);Il="beforePropertyValue"},beforePropertyValue(){if("eof"===_l.type)throw tf(bl.EOF);Zl()},afterPropertyValue(){if("eof"===_l.type)throw tf(bl.EOF);switch(_l.value){case",":return void(Il="beforePropertyName");case"}":Ql()}},beforeArrayValue(){if("eof"===_l.type)throw tf(bl.EOF);"punctuator"!==_l.type||"]"!==_l.value?Zl():Ql()},afterArrayValue(){if("eof"===_l.type)throw tf(bl.EOF);switch(_l.value){case",":return void(Il="beforeArrayValue");case"]":Ql()}},end(){}};function Zl(){const e=function(){let e;switch(_l.type){case"punctuator":switch(_l.value){case"{":e={};break;case"[":e=[]}break;case"null":case"boolean":case"numeric":case"string":e=_l.value}return e}();if(jl&&"object"==typeof e&&(e._line=Ml,e._column=Ll),void 0===kl)kl=e;else{const t=Tl[Tl.length-1];Array.isArray(t)?jl&&"object"!=typeof e?t.push({value:e,_line:Ml,_column:Ll}):t.push(e):t[Pl]=jl&&"object"!=typeof e?{value:e,_line:Ml,_column:Ll}:e}!function(e){if(e&&"object"==typeof e)Tl.push(e),Il=Array.isArray(e)?"beforeArrayValue":"beforePropertyName";else{const e=Tl[Tl.length-1];Il=e?Array.isArray(e)?"afterArrayValue":"afterPropertyValue":"end"}}(e)}function Ql(){Tl.pop();const e=Tl[Tl.length-1];Il=e?Array.isArray(e)?"afterArrayValue":"afterPropertyValue":"end"}function ef(e){const t={"'":"\\'",'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\v":"\\v","\0":"\\0","\u2028":"\\u2028","\u2029":"\\u2029"};if(t[e])return t[e];if(e<" "){const t=e.charCodeAt(0).toString(16);return`\\x${`00${t}`.substring(t.length)}`}return e}function tf(e,t){let n="";switch(e){case bl.Char:n=void 0===t?`JSON5: invalid end of input at ${Ml}:${Ll}`:`JSON5: invalid character '${ef(t)}' at ${Ml}:${Ll}`;break;case bl.EOF:n=`JSON5: invalid end of input at ${Ml}:${Ll}`;break;case bl.Identifier:Ll-=5,n=`JSON5: invalid identifier character at ${Ml}:${Ll}`}const r=new nf(n);return r.lineNumber=Ml,r.columnNumber=Ll,r}class nf extends SyntaxError{}var rf=w&&w.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var u=Object.getOwnPropertyDescriptor(t,n);u&&!("get"in u?!t.__esModule:u.writable||u.configurable)||(u={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,u)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),uf=w&&w.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),of=w&&w.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&rf(t,e,n);return uf(t,e),t};Object.defineProperty(Y,"__esModule",{value:!0});var sf=Y.cleanWorkSpace=Ff=Y.executeInstallHvigor=yf=Y.isHvigorInstalled=mf=Y.isAllDependenciesInstalled=void 0;const cf=of(D.default),af=of(p.default),lf=b,ff=j,df=$,Df=X;let pf,Ef;var mf=Y.isAllDependenciesInstalled=function(){function e(e){const t=null==e?void 0:e.dependencies;return void 0===t?0:Object.getOwnPropertyNames(t).length}if(pf=gf(),Ef=Af(),e(pf)+1!==e(Ef))return!1;for(const e in null==pf?void 0:pf.dependencies)if(!(0,ff.hasNpmPackInPaths)(e,[lf.HVIGOR_PROJECT_DEPENDENCIES_HOME])||!hf(e,pf,Ef))return!1;return!0};function hf(e,t,n){return void 0!==n.dependencies&&(0,ff.offlinePluginConversion)(lf.HVIGOR_PROJECT_ROOT_DIR,t.dependencies[e])===n.dependencies[e]}var yf=Y.isHvigorInstalled=function(){return pf=gf(),Ef=Af(),(0,ff.hasNpmPackInPaths)(lf.HVIGOR_ENGINE_PACKAGE_NAME,[lf.HVIGOR_PROJECT_DEPENDENCIES_HOME])&&(0,ff.offlinePluginConversion)(lf.HVIGOR_PROJECT_ROOT_DIR,pf.hvigorVersion)===Ef.dependencies[lf.HVIGOR_ENGINE_PACKAGE_NAME]};const Cf={cwd:lf.HVIGOR_PROJECT_DEPENDENCIES_HOME,stdio:["inherit","inherit","inherit"]};var Ff=Y.executeInstallHvigor=function(){(0,df.logInfoPrintConsole)("Hvigor installing...");const e={dependencies:{}};e.dependencies[lf.HVIGOR_ENGINE_PACKAGE_NAME]=(0,ff.offlinePluginConversion)(lf.HVIGOR_PROJECT_ROOT_DIR,pf.hvigorVersion);try{cf.mkdirSync(lf.HVIGOR_PROJECT_DEPENDENCIES_HOME,{recursive:!0});const t=af.resolve(lf.HVIGOR_PROJECT_DEPENDENCIES_HOME,lf.DEFAULT_PACKAGE_JSON);cf.writeFileSync(t,JSON.stringify(e))}catch(e){(0,df.logErrorAndExit)(e)}!function(){const e=["config","set","store-dir",lf.HVIGOR_PNPM_STORE_PATH];(0,ff.executeCommand)(lf.HVIGOR_WRAPPER_PNPM_SCRIPT_PATH,e,Cf)}(),(0,ff.executeCommand)(lf.HVIGOR_WRAPPER_PNPM_SCRIPT_PATH,["install"],Cf)};function gf(){const e=af.resolve(lf.HVIGOR_PROJECT_WRAPPER_HOME,lf.DEFAULT_HVIGOR_CONFIG_JSON_FILE_NAME);return cf.existsSync(e)||(0,df.logErrorAndExit)(`Error: Hvigor config file ${e} does not exist.`),(0,Df.parseJsonFile)(e)}function Af(){return cf.existsSync(lf.HVIGOR_PROJECT_DEPENDENCY_PACKAGE_JSON_PATH)?(0,Df.parseJsonFile)(lf.HVIGOR_PROJECT_DEPENDENCY_PACKAGE_JSON_PATH):{dependencies:{}}}sf=Y.cleanWorkSpace=function(){if((0,df.logInfoPrintConsole)("Hvigor cleaning..."),!cf.existsSync(lf.HVIGOR_PROJECT_DEPENDENCIES_HOME))return;const e=cf.readdirSync(lf.HVIGOR_PROJECT_DEPENDENCIES_HOME);if(e&&0!==e.length){cf.existsSync(lf.HVIGOR_BOOT_JS_FILE_PATH)&&(0,ff.executeCommand)(process.argv[0],[lf.HVIGOR_BOOT_JS_FILE_PATH,"--stop-daemon"],{});try{e.forEach((e=>{cf.rmSync(af.resolve(lf.HVIGOR_PROJECT_DEPENDENCIES_HOME,e),{recursive:!0})}))}catch(e){(0,df.logErrorAndExit)(`The hvigor build tool cannot be installed. Please manually clear the workspace directory and synchronize the project again.\n\n Workspace Path: ${lf.HVIGOR_PROJECT_DEPENDENCIES_HOME}.`)}}};var vf={},Sf=w&&w.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var u=Object.getOwnPropertyDescriptor(t,n);u&&!("get"in u?!t.__esModule:u.writable||u.configurable)||(u={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,u)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),wf=w&&w.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Of=w&&w.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&Sf(t,e,n);return wf(t,e),t};Object.defineProperty(vf,"__esModule",{value:!0});var bf=vf.executeBuild=void 0;const _f=b,Bf=Of(D.default),Pf=Of(p.default),kf=$;bf=vf.executeBuild=function(){const e=Pf.resolve(_f.HVIGOR_PROJECT_DEPENDENCIES_HOME,"node_modules","@ohos","hvigor","bin","hvigor.js");try{const t=Bf.realpathSync(e);require(t)}catch(t){(0,kf.logErrorAndExit)(`Error: ENOENT: no such file ${e},delete ${_f.HVIGOR_PROJECT_DEPENDENCIES_HOME} and retry.`)}},function(){if(O.checkNpmConifg(),O.environmentHandler(),O.isPnpmAvailable()||O.executeInstallPnpm(),yf()&&mf())bf();else{sf();try{Ff()}catch(e){return void sf()}bf()}}(); \ No newline at end of file diff --git a/HarmonyOS_NEXT/Notification/CustomNotificationBadge/hvigorfile.ts b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/hvigorfile.ts new file mode 100644 index 0000000000000000000000000000000000000000..6478186902c0c1ad7c966a929c7d6b7d8ae7a9f3 --- /dev/null +++ b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/hvigorfile.ts @@ -0,0 +1,2 @@ +// Script for compiling build behavior. It is built in the build plug-in and cannot be modified currently. +export { appTasks } from '@ohos/hvigor-ohos-plugin'; \ No newline at end of file diff --git a/HarmonyOS_NEXT/Notification/CustomNotificationBadge/hvigorw b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/hvigorw new file mode 100644 index 0000000000000000000000000000000000000000..54aadd226b453397860013d328fd01031648fc31 --- /dev/null +++ b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/hvigorw @@ -0,0 +1,48 @@ +#!/bin/bash + +# ---------------------------------------------------------------------------- +# Hvigor startup script, version 1.0.0 +# +# Required ENV vars: +# ------------------ +# NODE_HOME - location of a Node home dir +# or +# Add /usr/local/nodejs/bin to the PATH environment variable +# ---------------------------------------------------------------------------- + +HVIGOR_APP_HOME=$(dirname $(readlink -f $0)) +HVIGOR_WRAPPER_SCRIPT=${HVIGOR_APP_HOME}/hvigor/hvigor-wrapper.js +warn() { + echo "" + echo -e "\033[1;33m`date '+[%Y-%m-%d %H:%M:%S]'`$@\033[0m" +} + +error() { + echo "" + echo -e "\033[1;31m`date '+[%Y-%m-%d %H:%M:%S]'`$@\033[0m" +} + +fail() { + error "$@" + exit 1 +} + +# Determine node to start hvigor wrapper script +if [ -n "${NODE_HOME}" ];then + EXECUTABLE_NODE="${NODE_HOME}/bin/node" + if [ ! -x "$EXECUTABLE_NODE" ];then + fail "ERROR: NODE_HOME is set to an invalid directory,check $NODE_HOME\n\nPlease set NODE_HOME in your environment to the location where your nodejs installed" + fi +else + EXECUTABLE_NODE="node" + which ${EXECUTABLE_NODE} > /dev/null 2>&1 || fail "ERROR: NODE_HOME is not set and not 'node' command found in your path" +fi + +# Check hvigor wrapper script +if [ ! -r "$HVIGOR_WRAPPER_SCRIPT" ];then + fail "ERROR: Couldn't find hvigor/hvigor-wrapper.js in ${HVIGOR_APP_HOME}" +fi + +# start hvigor-wrapper script +exec "${EXECUTABLE_NODE}" \ + "${HVIGOR_WRAPPER_SCRIPT}" "$@" diff --git a/HarmonyOS_NEXT/Notification/CustomNotificationBadge/hvigorw.bat b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/hvigorw.bat new file mode 100644 index 0000000000000000000000000000000000000000..d9546692e75abc1d8ce1ba30bb750addc483ac66 --- /dev/null +++ b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/hvigorw.bat @@ -0,0 +1,79 @@ +:: Copyright (c) 2023 Huawei Device Co., Ltd. +:: Licensed under the Apache License, Version 2.0 (the "License"); +:: you may not use this file except in compliance with the License. +:: You may obtain a copy of the License at +:: +:: http://www.apache.org/licenses/LICENSE-2.0 +:: +:: Unless required by applicable law or agreed to in writing, software +:: distributed under the License is distributed on an "AS IS" BASIS, +:: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +:: See the License for the specific language governing permissions and +:: limitations under the License. + +@echo off + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Hvigor startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +set WRAPPER_MODULE_PATH=%APP_HOME%\hvigor\hvigor-wrapper.js +set NODE_EXE=node.exe + +goto start + +:start +@rem Find node.exe +if defined NODE_HOME goto findNodeFromNodeHome + +%NODE_EXE% --version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: NODE_HOME is not set and no 'node' command could be found in your PATH. +echo. +echo Please set the NODE_HOME variable in your environment to match the +echo location of your NodeJs installation. + +goto fail + +:findNodeFromNodeHome +set NODE_HOME=%NODE_HOME:"=% +set NODE_EXE_PATH=%NODE_HOME%/%NODE_EXE% + +if exist "%NODE_EXE_PATH%" goto execute +echo. +echo ERROR: NODE_HOME is not set and no 'node' command could be found in your PATH. +echo. +echo Please set the NODE_HOME variable in your environment to match the +echo location of your NodeJs installation. + +goto fail + +:execute +@rem Execute hvigor +"%NODE_EXE%" %WRAPPER_MODULE_PATH% %* + +if "%ERRORLEVEL%" == "0" goto hvigorwEnd + +:fail +exit /b 1 + +:hvigorwEnd +if "%OS%" == "Windows_NT" endlocal + +:end diff --git a/HarmonyOS_NEXT/Notification/CustomNotificationBadge/notification/.gitignore b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/notification/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..4f9a973815d0b5e49bc8547681a6b4bc7a178d12 --- /dev/null +++ b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/notification/.gitignore @@ -0,0 +1,3 @@ +/node_modules +/.preview +/build \ No newline at end of file diff --git a/HarmonyOS_NEXT/Notification/CustomNotificationBadge/notification/build-profile.json5 b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/notification/build-profile.json5 new file mode 100644 index 0000000000000000000000000000000000000000..431999870d30f72c7c6e728d63eb40d9b271f976 --- /dev/null +++ b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/notification/build-profile.json5 @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "apiType": "stageMode", + "buildOption": { + } +} diff --git a/HarmonyOS_NEXT/Notification/CustomNotificationBadge/notification/hvigorfile.ts b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/notification/hvigorfile.ts new file mode 100644 index 0000000000000000000000000000000000000000..5411a878812bbb306437bacec8611dffb1a240de --- /dev/null +++ b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/notification/hvigorfile.ts @@ -0,0 +1,18 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// Script for compiling build behavior. It is built in the build plug-in and cannot be modified currently. +module.exports = require('@ohos/hvigor-ohos-plugin').harTasks + diff --git a/HarmonyOS_NEXT/Notification/CustomNotificationBadge/notification/index.ets b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/notification/index.ets new file mode 100644 index 0000000000000000000000000000000000000000..1122e67e6b68d156c9ffd50d2635ab8e468f79cf --- /dev/null +++ b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/notification/index.ets @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export { notificationUtil } from './src/main/ets/notification/NotificationUtil'; + +export { notificationRequestUtil } from './src/main/ets/notification/NotificationRequestUtil'; + +export { notificationContentUtil } from './src/main/ets/notification/NotificationContentUtil'; + +export { notificationManagement } from './src/main/ets/notification/NotificationManagementUtil'; + +export { logger } from './src/main/ets/util/Logger'; + diff --git a/HarmonyOS_NEXT/Notification/CustomNotificationBadge/notification/oh-package.json5 b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/notification/oh-package.json5 new file mode 100644 index 0000000000000000000000000000000000000000..c6ec58654707f0e50ea3e79f3048cded2fc9d491 --- /dev/null +++ b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/notification/oh-package.json5 @@ -0,0 +1,11 @@ +{ + "license": "ISC", + "types": "", + "devDependencies": {}, + "name": "@ohos/notification", + "description": "a npm package which contains arkUI2.0 page", + "main": "index.ets", + "repository": {}, + "version": "1.0.0", + "dependencies": {} +} diff --git a/HarmonyOS_NEXT/Notification/CustomNotificationBadge/notification/src/main/ets/notification/NotificationContentUtil.ets b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/notification/src/main/ets/notification/NotificationContentUtil.ets new file mode 100644 index 0000000000000000000000000000000000000000..2863dba4b2fdb310ac1c7771fd5ad7b7bcd9ff13 --- /dev/null +++ b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/notification/src/main/ets/notification/NotificationContentUtil.ets @@ -0,0 +1,126 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import image from '@ohos.multimedia.image'; +import notification from '@ohos.notificationManager'; + +interface NotificationContentUtilResultType { + contentType: notification.ContentType + normal?: notification.NotificationBasicContent + longText?: notification.NotificationLongTextContent + multiLine?: notification.NotificationMultiLineContent + picture?: notification.NotificationPictureContent +} + +class NotificationContentUtil { + /** + * init basic notification content + * @param basicContent + * @return return the created NotificationContent + */ + initBasicNotificationContent(basicContent: notification.NotificationBasicContent) { + let result: NotificationContentUtilResultType = { + contentType: notification.ContentType.NOTIFICATION_CONTENT_BASIC_TEXT, // 通知内容类型 + normal: basicContent // 基本类型通知内容 + } + return result; + } + + /** + * init longText notification content + * + * @param basicContent + * @param notificationLongText + * @param notificationBriefText + * @param notificationExpandedTitle + * @return return the created NotificationContent + */ + initNotificationLongTextContent(basicContent: notification.NotificationBasicContent, notificationLongText: string, notificationBriefText: string, notificationExpandedTitle: string) { + let result: NotificationContentUtilResultType = { + contentType: notification.ContentType.NOTIFICATION_CONTENT_LONG_TEXT, // 通知内容类型 + longText: { + title: basicContent.title, // 通知标题 + text: basicContent.text, // 通知内容 + additionalText: basicContent.additionalText ? basicContent.additionalText : '', // 通知次要内容 + longText: notificationLongText, // 通知的长文本 + briefText: notificationBriefText, // 通知概要内容,是对通知内容的总结 + expandedTitle: notificationExpandedTitle // 通知展开时的标题 + } + }; + return result; + } + + /** + * init multiline notification content + * @param basicContent + * @param notificationBriefText + * @param notificationLongTitle + * @param notificationLines + * @return return the created NotificationContent + */ + initNotificationMultiLineContent(basicContent: notification.NotificationBasicContent, notificationBriefText: string, notificationLongTitle: string, notificationLines: Array) { + let result: NotificationContentUtilResultType = { + contentType: notification.ContentType.NOTIFICATION_CONTENT_MULTILINE, // 通知内容类型 + multiLine: { + title: basicContent.title, // 通知标题 + text: basicContent.text, // 通知内容 + additionalText: basicContent.additionalText ? basicContent.additionalText : '', // 通知次要内容,是对通知内容的补充 + briefText: notificationBriefText, // 通知概要内容,是对通知内容的总结 + longTitle: notificationLongTitle, // 通知展开时的标题 + lines: notificationLines // 通知的多行文本 + } + }; + return result; + } + + /** + * init picture notification content + * @param basicContent + * @param notificationBriefText + * @param notificationExpandedTitle + * @param notificationPicture + * @return return the created NotificationContent + */ + initNotificationPictureContent(basicContent: notification.NotificationBasicContent, notificationBriefText: string, notificationExpandedTitle: string, notificationPicture: image.PixelMap) { + let result: NotificationContentUtilResultType = { + contentType: notification.ContentType.NOTIFICATION_CONTENT_PICTURE, // 通知内容类型 + picture: { + title: basicContent.title, // 通知标题 + text: basicContent.text, // 通知内容 + additionalText: basicContent.additionalText ? basicContent.additionalText : '', // 通知次要内容,是对通知内容的补充 + briefText: notificationBriefText, // 通知概要内容,是对通知内容的总结 + expandedTitle: notificationExpandedTitle, // 通知展开时的标题 + picture: notificationPicture // 通知的图片 + } + }; + return result; + } + + + /** + * init conversation notification content + * @param basicContent + * @return return the created NotificationContent + */ + initNotificationConversationContent(basicContent: notification.NotificationBasicContent) { + let result: NotificationContentUtilResultType = { + contentType: notification.ContentType.NOTIFICATION_CONTENT_CONVERSATION, // 通知内容类型 + normal: basicContent // 基本类型通知内容 + }; + return result; + } +} + +export let notificationContentUtil = new NotificationContentUtil(); \ No newline at end of file diff --git a/HarmonyOS_NEXT/Notification/CustomNotificationBadge/notification/src/main/ets/notification/NotificationManagementUtil.ets b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/notification/src/main/ets/notification/NotificationManagementUtil.ets new file mode 100644 index 0000000000000000000000000000000000000000..0f55d03952aac5624daf7ee2315a5d07fbe6eade --- /dev/null +++ b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/notification/src/main/ets/notification/NotificationManagementUtil.ets @@ -0,0 +1,92 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import notification from '@ohos.notificationManager'; +import { logger } from '../util/Logger'; + +const NOTIFICATION_TYPE_SIZE = 5; + +interface getAllNotificationsResultType { + groupNotifications: Array> + countsByType: Array +} + +// 通知管理 +class NotificationManagementUtil { + typeNotifications: Array> = new Array(NOTIFICATION_TYPE_SIZE + 1); + countsByType: Array = new Array(NOTIFICATION_TYPE_SIZE + 1); + badgeNum: number = 0; + + constructor() { + this.countsByType.fill(0); + for (let i = 0; i < NOTIFICATION_TYPE_SIZE + 1; i++) { + this.typeNotifications[i] = new Array(); + } + // 获取当前应用所有通知 + notification.getActiveNotifications().then((notifications) => { + for (let i = 0; i < notifications.length; i++) { + let typeId = notifications[i].content.contentType; + this.countsByType[typeId] += 1; + this.typeNotifications[typeId].push(notifications[i]); + } + logger.info(`getAllActiveNotifications success, data: ${JSON.stringify(notifications)}`) + // 计算角标数量 + this.countsByType.forEach((num: number) => { + this.badgeNum += num; + }) + }) + } + + // 取消属于该类型的通知 + cancelNotificationType(typeId: number) { + this.typeNotifications[typeId].forEach(item => { + notification.cancel(item.id); + }) + } + + // 设置角标 + async setBadgeNumber(num: number) { + await notification.setBadgeNumber(num).then(() => { + this.badgeNum = num; + logger.info("displayBadge success"); + }); + } + + // 获取角标数量 + getBadgeNumber(): number { + return this.badgeNum; + } + + // 添加一条消息 + async addNotification(notification: notification.NotificationRequest) { + const typeId = notification.content.contentType; + this.typeNotifications[typeId].push(notification); + this.countsByType[typeId] += 1; + this.badgeNum += 1; + await notificationManagement.setBadgeNumber(this.badgeNum); + logger.info("add Message success"); + } + + // 获取当前所有消息及数量 + async getAllNotifications() { + let result: getAllNotificationsResultType = { + groupNotifications: this.typeNotifications, + countsByType: this.countsByType + } + return result; + } +} + +export let notificationManagement = new NotificationManagementUtil(); \ No newline at end of file diff --git a/HarmonyOS_NEXT/Notification/CustomNotificationBadge/notification/src/main/ets/notification/NotificationRequestUtil.ets b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/notification/src/main/ets/notification/NotificationRequestUtil.ets new file mode 100644 index 0000000000000000000000000000000000000000..00a11c025977f9409ae31a4814c9f43333d4c580 --- /dev/null +++ b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/notification/src/main/ets/notification/NotificationRequestUtil.ets @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import notification from '@ohos.notificationManager'; + +interface NotificationRequestUtilResultType { + slotType: notification.SlotType, + id: number, // 通知id,默认为1 + content: notification.NotificationContent +} + +class NotificationRequestUtil { + /** + * init basic NotificationRequest + * @param notificationContent + * @return return the created NotificationRequest + */ + initBasicNotificationRequest(notificationContent: notification.NotificationContent) { + let result: NotificationRequestUtilResultType = { + slotType: notification.SlotType.CONTENT_INFORMATION, + id: 1, // 通知id,默认为1 + content: notificationContent + } + return result; + } +} + +export let notificationRequestUtil = new NotificationRequestUtil(); \ No newline at end of file diff --git a/HarmonyOS_NEXT/Notification/CustomNotificationBadge/notification/src/main/ets/notification/NotificationUtil.ets b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/notification/src/main/ets/notification/NotificationUtil.ets new file mode 100644 index 0000000000000000000000000000000000000000..aca76728fa140f4945f6f78819c8a34dc2e412cf --- /dev/null +++ b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/notification/src/main/ets/notification/NotificationUtil.ets @@ -0,0 +1,90 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import notification from '@ohos.notificationManager'; +import { logger } from '../util/Logger'; +import { notificationManagement } from '../notification/NotificationManagementUtil'; + +const TAG: string = 'NotificationUtilModel'; + +class NotificationUtil { + /** + * enable notification + */ + private id: number = 0 + + async enableNotification() { + try { + await notification.requestEnableNotification(); + logger.info(TAG, `enableNotification success`); + } catch (err) { + logger.info(TAG, `enableNotification err ${JSON.stringify(err)}`); + } + } + + /** + * + * @param notificationRequest + * @param id, Support specifying notification id when publishing notifications + */ + async publishNotification(notificationRequest: notification.NotificationRequest, group?: string) { + notificationRequest.id = this.id; + this.id++; + if (group) { + notificationRequest.groupName = group; + } + + try { + await notification.publish(notificationRequest); + logger.info(TAG, `publish notification success`); + // 通知管理器添加新通知 + await notificationManagement.addNotification(notificationRequest); + } catch (err) { + if (err) { + logger.info(TAG, `publishNotification err ${JSON.stringify(err)}`); + } + } + } + + /** + * cancel notification by id + */ + async cancelNotificationById(id: number) { + try { + await notification.cancel(id); + logger.info(TAG, `cancel success`); + } catch (err) { + if (err) { + logger.info(TAG, `cancel err ${JSON.stringify(err)}`); + } + } + } + + /** + * cancel all notification + */ + async cancelAllNotifications() { + try { + await notification.cancelAll(); + logger.info(TAG, `cancel all success`); + } catch (err) { + if (err) { + logger.info(TAG, `cancel all err ${JSON.stringify(err)}`); + } + } + } +} + +export let notificationUtil = new NotificationUtil(); diff --git a/HarmonyOS_NEXT/Notification/CustomNotificationBadge/notification/src/main/ets/util/Logger.ets b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/notification/src/main/ets/util/Logger.ets new file mode 100644 index 0000000000000000000000000000000000000000..f0a65a97b7f6290dd665bc2381234e4087f96681 --- /dev/null +++ b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/notification/src/main/ets/util/Logger.ets @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import hilog from '@ohos.hilog'; + +class Logger { + private domain: number; + private prefix: string; + private format: string = '%{public}s, %{public}s'; + + constructor(prefix: string) { + this.prefix = prefix; + this.domain = 0x0000; + hilog.isLoggable(this.domain, prefix, hilog.LogLevel.INFO); + hilog.isLoggable(this.domain, prefix, hilog.LogLevel.DEBUG); + hilog.isLoggable(this.domain, prefix, hilog.LogLevel.WARN); + hilog.isLoggable(this.domain, prefix, hilog.LogLevel.ERROR); + } + + debug(...args: string[]) { + hilog.debug(this.domain, this.prefix, this.format, args); + } + + info(...args: string[]) { + hilog.info(this.domain, this.prefix, this.format, args); + } + + warn(...args: string[]) { + hilog.warn(this.domain, this.prefix, this.format, args); + } + + error(...args: string[]) { + hilog.error(this.domain, this.prefix, this.format, args); + } +} + +export let logger = new Logger('[Sample_CustomNotificationBadge]'); \ No newline at end of file diff --git a/HarmonyOS_NEXT/Notification/CustomNotificationBadge/notification/src/main/module.json5 b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/notification/src/main/module.json5 new file mode 100644 index 0000000000000000000000000000000000000000..41f0c2f246a5769a14c243e86829ff632cfb3b8a --- /dev/null +++ b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/notification/src/main/module.json5 @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "module": { + "name": "notification", + "type": "har", + "deviceTypes": [ + "default", + "tablet" + ] + } +} diff --git a/HarmonyOS_NEXT/Notification/CustomNotificationBadge/notification/src/main/resources/base/element/string.json b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/notification/src/main/resources/base/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..1e76de0c66777cfe83568615c5c2e68c61d23fed --- /dev/null +++ b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/notification/src/main/resources/base/element/string.json @@ -0,0 +1,8 @@ +{ + "string": [ + { + "name": "page_show", + "value": "page from npm package" + } + ] +} diff --git a/HarmonyOS_NEXT/Notification/CustomNotificationBadge/oh-package.json5 b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/oh-package.json5 new file mode 100644 index 0000000000000000000000000000000000000000..23539b3b5cd1810590051507932b427116e07bf2 --- /dev/null +++ b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/oh-package.json5 @@ -0,0 +1,12 @@ +{ + "license": "", + "devDependencies": { + "@ohos/hypium": "1.0.6" + }, + "author": "", + "name": "customnotificationbadge", + "description": "Please describe the basic information.", + "main": "", + "version": "1.0.0", + "dependencies": {} +} diff --git a/HarmonyOS_NEXT/Notification/CustomNotificationBadge/screenshots/desktop.png b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/screenshots/desktop.png new file mode 100644 index 0000000000000000000000000000000000000000..f752ea4b2e301fdfdc9006999f91b399a843bcd3 Binary files /dev/null and b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/screenshots/desktop.png differ diff --git a/HarmonyOS_NEXT/Notification/CustomNotificationBadge/screenshots/main.png b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/screenshots/main.png new file mode 100644 index 0000000000000000000000000000000000000000..2019b21fdf09137a95fc929701447b878380f0d0 Binary files /dev/null and b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/screenshots/main.png differ diff --git a/HarmonyOS_NEXT/Notification/CustomNotificationBadge/screenshots/notificatio_get_list.png b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/screenshots/notificatio_get_list.png new file mode 100644 index 0000000000000000000000000000000000000000..f56faa3ae117969894bf06a8797f6de8d2af2937 Binary files /dev/null and b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/screenshots/notificatio_get_list.png differ diff --git a/HarmonyOS_NEXT/Notification/CustomNotificationBadge/screenshots/notification_send.png b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/screenshots/notification_send.png new file mode 100644 index 0000000000000000000000000000000000000000..08040f8cf5aebed3bb3701b1f2a948a0bf350cb2 Binary files /dev/null and b/HarmonyOS_NEXT/Notification/CustomNotificationBadge/screenshots/notification_send.png differ diff --git a/HarmonyOS_NEXT/Security/CertificateFramework/.gitignore b/HarmonyOS_NEXT/Security/CertificateFramework/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..fbabf771011fe78f9919db0b1195ab6cadffc2b0 --- /dev/null +++ b/HarmonyOS_NEXT/Security/CertificateFramework/.gitignore @@ -0,0 +1,11 @@ +/node_modules +/oh_modules +/local.properties +/.idea +**/build +/.hvigor +.cxx +/.clangd +/.clang-format +/.clang-tidy +**/.test \ No newline at end of file diff --git a/HarmonyOS_NEXT/Security/CertificateFramework/AppScope/app.json5 b/HarmonyOS_NEXT/Security/CertificateFramework/AppScope/app.json5 new file mode 100644 index 0000000000000000000000000000000000000000..468eb3abe1eb26eb289eb124a68ac49e56d77ac1 --- /dev/null +++ b/HarmonyOS_NEXT/Security/CertificateFramework/AppScope/app.json5 @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "app": { + "bundleName": "com.samples.certframework", + "vendor": "samples", + "versionCode": 1000000, + "versionName": "1.0.0", + "icon": "$media:app_icon", + "label": "$string:app_name", + "distributedNotificationEnabled": true + } +} diff --git a/HarmonyOS_NEXT/Security/CertificateFramework/AppScope/resources/base/element/string.json b/HarmonyOS_NEXT/Security/CertificateFramework/AppScope/resources/base/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..5b2585b312905ef10fd19a51bc4dc3e8a7fa9731 --- /dev/null +++ b/HarmonyOS_NEXT/Security/CertificateFramework/AppScope/resources/base/element/string.json @@ -0,0 +1,8 @@ +{ + "string": [ + { + "name": "app_name", + "value": "CertificateFramework" + } + ] +} diff --git a/HarmonyOS_NEXT/Security/CertificateFramework/AppScope/resources/base/media/app_icon.png b/HarmonyOS_NEXT/Security/CertificateFramework/AppScope/resources/base/media/app_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ce307a8827bd75456441ceb57d530e4c8d45d36c Binary files /dev/null and b/HarmonyOS_NEXT/Security/CertificateFramework/AppScope/resources/base/media/app_icon.png differ diff --git a/HarmonyOS_NEXT/Security/CertificateFramework/build-profile.json5 b/HarmonyOS_NEXT/Security/CertificateFramework/build-profile.json5 new file mode 100644 index 0000000000000000000000000000000000000000..f591aaacf7f1f9ce8201566c3aa3f83a2dc63053 --- /dev/null +++ b/HarmonyOS_NEXT/Security/CertificateFramework/build-profile.json5 @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "app": { + "signingConfigs": [], + "products": [ + { + "name": "default", + "signingConfig": "default", + "compileSdkVersion": "4.0.0(10)", + "compatibleSdkVersion": "4.0.0(10)", + "runtimeOS": "HarmonyOS" + } + ] + }, + "modules": [ + { + "name": "entry", + "srcPath": "./entry", + "targets": [ + { + "name": "default", + "applyToProducts": [ + "default" + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Security/CertificateFramework/entry/.gitignore b/HarmonyOS_NEXT/Security/CertificateFramework/entry/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..e2713a2779c5a3e0eb879efe6115455592caeea5 --- /dev/null +++ b/HarmonyOS_NEXT/Security/CertificateFramework/entry/.gitignore @@ -0,0 +1,6 @@ +/node_modules +/oh_modules +/.preview +/build +/.cxx +/.test \ No newline at end of file diff --git a/HarmonyOS_NEXT/Security/CertificateFramework/entry/build-profile.json5 b/HarmonyOS_NEXT/Security/CertificateFramework/entry/build-profile.json5 new file mode 100644 index 0000000000000000000000000000000000000000..ddd6e5f1ac23a18a1d1d0d8d7470c6d4726ef66e --- /dev/null +++ b/HarmonyOS_NEXT/Security/CertificateFramework/entry/build-profile.json5 @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "apiType": 'stageMode', + "buildOption": { + }, + "targets": [ + { + "name": "default" + }, + { + "name": "ohosTest", + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Security/CertificateFramework/entry/hvigorfile.ts b/HarmonyOS_NEXT/Security/CertificateFramework/entry/hvigorfile.ts new file mode 100644 index 0000000000000000000000000000000000000000..80e4ec5b81689f238c34614b167a0b9e9c83e8d9 --- /dev/null +++ b/HarmonyOS_NEXT/Security/CertificateFramework/entry/hvigorfile.ts @@ -0,0 +1,2 @@ +// Script for compiling build behavior. It is built in the build plug-in and cannot be modified currently. +export { hapTasks } from '@ohos/hvigor-ohos-plugin'; diff --git a/HarmonyOS_NEXT/Security/CertificateFramework/entry/oh-package.json5 b/HarmonyOS_NEXT/Security/CertificateFramework/entry/oh-package.json5 new file mode 100644 index 0000000000000000000000000000000000000000..28192b13b1902e15e574722a51486c92d4c0f308 --- /dev/null +++ b/HarmonyOS_NEXT/Security/CertificateFramework/entry/oh-package.json5 @@ -0,0 +1,10 @@ +{ + "license": "ISC", + "devDependencies": {}, + "author": "", + "name": "entry", + "description": "certificate framework sample.", + "main": "", + "version": "1.0.0", + "dependencies": {} +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Security/CertificateFramework/entry/src/main/ets/entryability/EntryAbility.ets b/HarmonyOS_NEXT/Security/CertificateFramework/entry/src/main/ets/entryability/EntryAbility.ets new file mode 100644 index 0000000000000000000000000000000000000000..1e4e3d7b4043aa10cdecf8e817a6135c33ea510b --- /dev/null +++ b/HarmonyOS_NEXT/Security/CertificateFramework/entry/src/main/ets/entryability/EntryAbility.ets @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import UIAbility from '@ohos.app.ability.UIAbility'; +import AbilityConstant from '@ohos.app.ability.AbilityConstant'; +import Logger from '../model/Logger'; +import Want from '@ohos.app.ability.Want'; +import window from '@ohos.window'; + +export default class EntryAbility extends UIAbility { + onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) { + Logger.info('testTag', 'Ability onCreate'); + } + + onDestroy() { + Logger.info('testTag', 'Ability onDestroy'); + } + + onWindowStageCreate(windowStage: window.WindowStage) { + // Main window is created, set main page for this ability + Logger.info('testTag', 'Ability onWindowStageCreate'); + + windowStage.loadContent('pages/Index', (err, data) => { + if (err.code) { + Logger.error('testTag', `Failed to load the content. Cause: ${JSON.stringify(err) ?? ''}`); + return; + } + Logger.info('testTag', `Succeeded in loading the content. Data: ${JSON.stringify(err) ?? ''}`); + }); + } + + onWindowStageDestroy() { + // Main window is destroyed, release UI related resources + Logger.info('testTag', 'Ability onWindowStageDestroy'); + } + + onForeground() { + // Ability has brought to foreground + Logger.info('testTag', 'Ability onForeground'); + } + + onBackground() { + // Ability has back to background + Logger.info('testTag', 'Ability onBackground'); + } +} diff --git a/HarmonyOS_NEXT/Security/CertificateFramework/entry/src/main/ets/model/CertFrameworkModel.ets b/HarmonyOS_NEXT/Security/CertificateFramework/entry/src/main/ets/model/CertFrameworkModel.ets new file mode 100644 index 0000000000000000000000000000000000000000..1ec35e6c3370914acbcdc7765220a440cc56f090 --- /dev/null +++ b/HarmonyOS_NEXT/Security/CertificateFramework/entry/src/main/ets/model/CertFrameworkModel.ets @@ -0,0 +1,229 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import cert from '@ohos.security.cert'; +import cryptoFrameWork from '@ohos.security.cryptoFramework'; +import util from '@ohos.util'; +import Logger from './Logger'; + +const TAG: string = '[CertFramework]'; + +let CERT_DATA = new Uint8Array([ + 0x30, 0x82, 0x01, 0xb6, 0x30, 0x82, 0x01, 0x1f, 0x02, 0x14, 0x53, 0x19, 0x8b, 0x14, 0x84, 0xb7, + 0xab, 0xca, 0xe2, 0x13, 0x05, 0x16, 0xcb, 0xd6, 0x92, 0x4f, 0x9d, 0x34, 0xa6, 0x76, 0x30, 0x0d, + 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x1a, 0x31, + 0x18, 0x30, 0x16, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c, 0x0f, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, + 0x65, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x32, 0x33, 0x30, + 0x31, 0x31, 0x37, 0x31, 0x33, 0x32, 0x35, 0x35, 0x33, 0x5a, 0x17, 0x0d, 0x32, 0x35, 0x31, 0x30, + 0x31, 0x32, 0x31, 0x33, 0x32, 0x35, 0x35, 0x33, 0x5a, 0x30, 0x1a, 0x31, 0x18, 0x30, 0x16, 0x06, + 0x03, 0x55, 0x04, 0x03, 0x0c, 0x0f, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x20, 0x52, 0x6f, + 0x6f, 0x74, 0x20, 0x43, 0x41, 0x30, 0x81, 0x9f, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, + 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x81, 0x8d, 0x00, 0x30, 0x81, 0x89, 0x02, 0x81, + 0x81, 0x00, 0xe3, 0x65, 0x54, 0x13, 0xc6, 0x07, 0x31, 0x1d, 0x7e, 0xbc, 0xfc, 0x2c, 0x3d, 0xcd, + 0x54, 0x7f, 0x28, 0x05, 0xaa, 0xd6, 0xc1, 0xd0, 0x71, 0xc9, 0x33, 0x46, 0x07, 0x80, 0x6e, 0x5d, + 0xae, 0x9a, 0xcd, 0x29, 0x6b, 0xfb, 0x9b, 0x3a, 0x92, 0xee, 0x2f, 0x96, 0x29, 0x26, 0x12, 0x95, + 0x84, 0x1b, 0x5a, 0x33, 0x8a, 0x28, 0x3c, 0xa3, 0x25, 0xe7, 0x14, 0x00, 0x9f, 0xbb, 0xc2, 0x85, + 0xe6, 0x7f, 0x4d, 0x5c, 0x5e, 0xae, 0x09, 0xb4, 0x9f, 0x8a, 0x23, 0xc0, 0xb4, 0x85, 0xc3, 0x45, + 0xea, 0x82, 0x60, 0x4e, 0x90, 0xbe, 0x6c, 0x0a, 0x0b, 0xb3, 0xfb, 0x04, 0x0d, 0xcc, 0x1d, 0xea, + 0x07, 0x98, 0xa3, 0xf6, 0xdd, 0x4c, 0x16, 0x36, 0x68, 0xf9, 0x10, 0xa4, 0xf3, 0xd1, 0x5f, 0x0c, + 0x59, 0x7b, 0xe6, 0x2e, 0x94, 0xe2, 0x70, 0xbf, 0x23, 0x9d, 0xda, 0x59, 0x05, 0x04, 0xe0, 0x8e, + 0x51, 0x81, 0x02, 0x03, 0x01, 0x00, 0x01, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, + 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x81, 0x81, 0x00, 0xb0, 0x3d, 0xe1, 0xd7, 0x71, 0x9a, + 0x78, 0x85, 0x6e, 0xeb, 0xd5, 0xa7, 0xdf, 0x54, 0x57, 0x55, 0x3a, 0xb9, 0x6c, 0x3a, 0x3a, 0x2c, + 0x03, 0x94, 0x6b, 0x14, 0xc2, 0x55, 0xaa, 0xbb, 0x8f, 0xc8, 0x02, 0x7a, 0x2a, 0x92, 0x5c, 0xca, + 0xf0, 0x57, 0x7b, 0x7a, 0x8b, 0x78, 0xc6, 0x3b, 0x7a, 0x95, 0x27, 0x13, 0x83, 0xb5, 0x5a, 0x84, + 0x55, 0x8d, 0xd8, 0x09, 0x0f, 0x9e, 0x88, 0x69, 0x64, 0x26, 0x5f, 0x46, 0x77, 0xff, 0x67, 0xaa, + 0x71, 0xab, 0x6a, 0x9a, 0x01, 0x16, 0xc0, 0x84, 0x13, 0x90, 0xce, 0x07, 0x30, 0xc5, 0x34, 0x3d, + 0x86, 0x8d, 0xe7, 0x3f, 0xc9, 0x2e, 0x69, 0xac, 0x83, 0x8f, 0xf0, 0x1d, 0x5a, 0x9f, 0x0e, 0x64, + 0x14, 0xd9, 0xb1, 0xa6, 0x19, 0xcf, 0xcc, 0x92, 0x08, 0xbd, 0x94, 0x18, 0xd2, 0x83, 0x6c, 0x13, + 0xb9, 0x45, 0xd8, 0x03, 0x58, 0x2d, 0xf1, 0xd6, 0xb9, 0x66, +]); + +let SIGNATURE_TEXT = new Uint8Array([ + 0x77, 0xb9, 0xa2, 0xfd, 0x57, 0x97, 0x66, 0xa2, 0x92, 0x73, 0x67, 0x72, 0x9d, 0x38, 0xa4, 0x72, + 0x76, 0x02, 0x54, 0x6e, 0xeb, 0x83, 0xfd, 0x1d, 0x0c, 0xf1, 0xd7, 0x55, 0x06, 0x69, 0x51, 0xb1, + 0x2f, 0xfb, 0x03, 0x60, 0x68, 0x50, 0x9b, 0x20, 0xef, 0xd4, 0xe9, 0xa2, 0xe8, 0x12, 0xb8, 0x55, + 0x59, 0x8c, 0xfe, 0xfb, 0x00, 0x1d, 0x35, 0x80, 0x0f, 0xa7, 0x1c, 0xea, 0xde, 0xe2, 0x68, 0xe6, + 0x12, 0xd3, 0x3e, 0xcb, 0xe8, 0x29, 0x99, 0xe5, 0x64, 0x2d, 0x99, 0xf5, 0x1b, 0x48, 0xf6, 0x0d, + 0x89, 0x48, 0xeb, 0xe6, 0x12, 0x0a, 0x8d, 0x2d, 0x48, 0xe8, 0xd6, 0x52, 0xb5, 0x5f, 0xc5, 0xe8, + 0xc1, 0x0c, 0x88, 0x5d, 0xa4, 0x57, 0x10, 0xfc, 0x50, 0x94, 0xbb, 0xb6, 0x2a, 0x17, 0xb8, 0xee, + 0xa1, 0xda, 0x0d, 0xf0, 0x63, 0x56, 0xf4, 0xc8, 0x91, 0xb2, 0xbd, 0x47, 0xfe, 0xf1, 0x34, 0x5d +]); + +let STAIN_SIGNATURE_TEXT = new Uint8Array([ + 0x00, 0x00, 0x11, 0x12, 0x57, 0x97, 0x61, 0xa2, 0x92, 0x73, 0x67, 0x72, 0x9d, 0x38, 0xa4, 0x72, + 0x76, 0x02, 0x54, 0x6e, 0xeb, 0x83, 0x00, 0x1d, 0x0c, 0xf1, 0xd7, 0x55, 0x06, 0x69, 0x51, 0xb1, + 0x2f, 0xfb, 0x03, 0x60, 0x68, 0x50, 0x9b, 0x20, 0xef, 0xd4, 0xe9, 0x00, 0xe8, 0x12, 0xb0, 0x55, + 0x00, 0x8c, 0xfe, 0xfb, 0x00, 0x11, 0x35, 0x80, 0x0f, 0x00, 0x00, 0x00, 0xde, 0xe6, 0x68, 0x00, + 0x00, 0xd3, 0x36, 0xcb, 0xe8, 0x29, 0x99, 0xe5, 0x64, 0x2d, 0x99, 0xf5, 0x1b, 0x48, 0xf6, 0x0d, + 0x89, 0x40, 0xeb, 0xe6, 0x12, 0x00, 0x8d, 0x2d, 0x40, 0xe8, 0xd6, 0x52, 0xb5, 0x5f, 0xc5, 0xe8, + 0xc1, 0x0c, 0x88, 0x5d, 0xa4, 0x57, 0x10, 0xfc, 0x50, 0x94, 0xbb, 0xb6, 0x2a, 0x17, 0xb8, 0xee, + 0xa1, 0xda, 0x0d, 0xf0, 0x63, 0x56, 0xf4, 0xc8, 0x91, 0xb2, 0x00, 0x47, 0x11, 0xf1, 0x44, 0x00 +]); + +function stringToUint8Array(str: String): Uint8Array { + if (str.length === 0) { + Logger.error(TAG, 'str length is 0'); + return new Uint8Array; + } + + let len = str.length; + let tempArray: number[] = []; + for (let i = 0; i < len; ++i) { + tempArray.push(str.charCodeAt(i)); + } + let array = new Uint8Array(tempArray); + return array; +} + +/** + * 功能模型 + */ +export class CertFrameworkModel { + // cert data + private certEncodingBlob: certEncodingBlob = { + data: CERT_DATA, + encodingFormat: cert.EncodingFormat.FORMAT_DER + }; + + // origin data + private originText: string = 'Dear Tom, can we go for a spring outing on Sunday at the Central Garden?'; + + private originData: cryptoFrameWork.DataBlob = { data: stringToUint8Array(this.originText) }; + + private stainOriginText: string = 'Dear Tom, can we go for a spring outing together on Monday at the lakeside garden?'; + + // signature data + private signature: cryptoFrameWork.DataBlob = { data: SIGNATURE_TEXT }; + + + async dataDisplay(callback: Function): Promise { + this.originData.data = stringToUint8Array(this.originText); + this.signature.data = SIGNATURE_TEXT; + + let utilBase = new util.Base64Helper(); + let data: callbackData = new callbackData(); + data.certInfo = utilBase.encodeToStringSync(CERT_DATA); + data.originInfo = this.originText; + data.signatureInfo = utilBase.encodeToStringSync(SIGNATURE_TEXT); + + callback(data); + } + + async modifyOriginData(callback: Function): Promise { + this.originData.data = stringToUint8Array(this.stainOriginText); + this.signature.data = SIGNATURE_TEXT; + + let utilBase = new util.Base64Helper(); + let data: callbackData = new callbackData(); + data.originInfo = this.stainOriginText; + data.signatureInfo = utilBase.encodeToStringSync(SIGNATURE_TEXT); + callback(data); + } + + async modifySignatureData(callback: Function): Promise { + this.originData.data = stringToUint8Array(this.originText); + this.signature.data = STAIN_SIGNATURE_TEXT; + + let utilBase = new util.Base64Helper(); + let data: callbackData = new callbackData(); + data.originInfo = this.originText; + data.signatureInfo = utilBase.encodeToStringSync(STAIN_SIGNATURE_TEXT); + callback(data); + } + + private async getPubKey(callback: Function): Promise { + let certObject: cert.X509Cert | null = null; + let pubKey: cryptoFrameWork.PubKey; + + // create x509 cert object + await cert.createX509Cert(this.certEncodingBlob).then((x509Cert) => { + Logger.info(TAG, 'create x509 cert object success.'); + certObject = x509Cert; + }).catch((err:Error) => { + Logger.error(TAG, `create x509 cert object failed, ${JSON.stringify(err)}: ${JSON.stringify(err.message)}`); + }); + + // get pubKey from cert + try { + if (certObject == null) { + Logger.error(TAG, `getPubKey failed, certObject == null`); + return; + } + let pubKeyObject: cryptoFrameWork.PubKey = (certObject as cert.X509Cert).getPublicKey(); + let pubKeyBlob: cryptoFrameWork.DataBlob = pubKeyObject.getEncoded(); + let keyGenerator: cryptoFrameWork.AsyKeyGenerator = cryptoFrameWork.createAsyKeyGenerator('RSA1024'); + + await keyGenerator.convertKey(pubKeyBlob, null).then((keyPair) => { + Logger.info(TAG, 'get keyPair success.'); + pubKey = keyPair.pubKey; + callback(pubKey); + }).catch((err:Error) => { + Logger.error(TAG, `get keyPair failed, ${JSON.stringify(err)}: ${JSON.stringify(err.message)}`); + }); + Logger.info(TAG, 'get pubKey success.'); + } catch (err) { + Logger.error(TAG, `get pubKey failed, ${JSON.stringify(err)}`); + } + } + + async verify(callback: Function): Promise { + // get pubkey + let pubKey: cryptoFrameWork.PubKey | null = null; + await this.getPubKey((result: cryptoFrameWork.PubKey) => { + pubKey = result; + }); + + // create verifier + let verifier: cryptoFrameWork.Verify | null = null; + try { + verifier = cryptoFrameWork.createVerify('RSA1024|PKCS1|SHA256'); + Logger.info(TAG, 'create verifier success.'); + } catch (err) { + Logger.error(TAG, `create verifier, ${JSON.stringify(err)}`); + } + + // verify init + if (verifier == null){ + Logger.error(TAG, `verify init failed, verifier == null`); + return; + } + await verifier.init(pubKey).then(() => { + Logger.info(TAG, 'verify init success.'); + }).catch((err: Error) => { + Logger.error(TAG, `verify init failed, ${JSON.stringify(err)}: ${JSON.stringify(err.message)}`); + }); + + // verify operation + await verifier.verify(this.originData, this.signature).then((res) => { + Logger.info(TAG, 'verify operation success.'); + let result = res; + callback(result); + }).catch((err: Error) => { + Logger.error(TAG, `verify operation failed, ${JSON.stringify(err)}: ${JSON.stringify(err.message)}`); + }); + } +} + +class certEncodingBlob { + data: Uint8Array = new Uint8Array() + encodingFormat: number = 0 +} + +class callbackData{ + certInfo: string = '' + originInfo: string = '' + signatureInfo: string = '' +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Security/CertificateFramework/entry/src/main/ets/model/Logger.ets b/HarmonyOS_NEXT/Security/CertificateFramework/entry/src/main/ets/model/Logger.ets new file mode 100644 index 0000000000000000000000000000000000000000..5538282a1fe451ea073a99b1083a12307b68c01b --- /dev/null +++ b/HarmonyOS_NEXT/Security/CertificateFramework/entry/src/main/ets/model/Logger.ets @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import hilog from '@ohos.hilog'; + +class Logger { + private domain: number; + private prefix: string; + private format: string = '%{public}s, %{public}s'; + + constructor(prefix: string) { + this.prefix = prefix; + this.domain = 0xFF00; + } + + debug(...args: string[]): void { + hilog.debug(this.domain, this.prefix, this.format, args); + return; + } + + info(...args: string[]): void { + hilog.info(this.domain, this.prefix, this.format, args); + return; + } + + warn(...args: string[]): void { + hilog.warn(this.domain, this.prefix, this.format, args); + return; + } + + error(...args: string[]): void { + hilog.error(this.domain, this.prefix, this.format, args); + return; + } + + fatal(...args: string[]): void { + hilog.fatal(this.domain, this.prefix, this.format, args); + return; + } + + isLoggable(level: number): void { + hilog.isLoggable(this.domain, this.prefix, level); + return; + } +} + +export default new Logger('[Sample_CertFramework]'); \ No newline at end of file diff --git a/HarmonyOS_NEXT/Security/CertificateFramework/entry/src/main/ets/pages/Index.ets b/HarmonyOS_NEXT/Security/CertificateFramework/entry/src/main/ets/pages/Index.ets new file mode 100644 index 0000000000000000000000000000000000000000..2ab697c48ed55e8b990045cbff3b8bfe968bcab9 --- /dev/null +++ b/HarmonyOS_NEXT/Security/CertificateFramework/entry/src/main/ets/pages/Index.ets @@ -0,0 +1,259 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { CertFrameworkModel } from '../model/CertFrameworkModel' +import promptAction from '@ohos.promptAction'; +import Logger from '../model/Logger' + +const TAG: string = '[CertFramework]' + +@Entry +@Component +struct Index { + @State certTextInfo: string = ''; + @State originTextInfo: string = ''; + @State signTextInfo: string = ''; + private certFramework: CertFrameworkModel = new CertFrameworkModel(); + + build() { + Column() { + Column() { + Text($r('app.string.module_desc')) + .fontColor($r('app.color.homepage_title_color')) + .fontSize($r('sys.float.ohos_id_text_size_headline7')) + .fontWeight(FontWeight.Bold) + .margin({ top: '12vp', left: '24vp', bottom: '11vp' }) + } + .width('100%') + .height('56vp') + .alignItems(HorizontalAlign.Start) + + Column() { + Text($r('app.string.certificate_data')) + .fontColor($r('app.color.text_title_color')) + .fontSize($r('sys.float.ohos_id_text_size_sub_title3')) + .margin({ top: '19.5vp', left: '24vp', bottom: '9.5vp' }) + } + .width('100%') + .height('48vp') + .alignItems(HorizontalAlign.Start) + + Column() { + Column() { + Scroll() { + Text(this.certTextInfo) + .fontColor($r('app.color.text_content_color')) + .fontSize($r('sys.float.ohos_id_text_size_body1')) + .lineHeight('19vp') + .textAlign(TextAlign.Start) + .width('100%') + } + .margin({ top: '8vp', left: '16vp', right: '16vp', bottom: '21vp' }) + } + .height('139vp') + .backgroundColor($r('app.color.text_bg_color')) + .borderRadius($r('sys.float.ohos_id_corner_radius_default_l')) + .margin({ left: '12vp', right: '12vp' }) + .align(Alignment.TopStart) + } + .width('100%') + .height('139vp') + .alignItems(HorizontalAlign.Center) + + Column() { + Text($r('app.string.origin_data')) + .fontColor($r('app.color.text_title_color')) + .fontSize($r('sys.float.ohos_id_text_size_sub_title3')) + .margin({ top: '19.5vp', left: '24vp', bottom: '9.5vp' }) + } + .width('100%') + .height('48vp') + .alignItems(HorizontalAlign.Start) + + Column() { + Column() { + Scroll() { + Text(this.originTextInfo) + .fontColor($r('app.color.text_content_color')) + .fontSize($r('sys.float.ohos_id_text_size_body1')) + .lineHeight('19vp') + .textAlign(TextAlign.Start) + .width('100%') + } + .margin({ top: '8vp', left: '16vp', right: '16vp', bottom: '21vp' }) + } + .height('139vp') + .backgroundColor($r('app.color.text_bg_color')) + .borderRadius($r('sys.float.ohos_id_corner_radius_default_l')) + .margin({ left: '12vp', right: '12vp' }) + .align(Alignment.TopStart) + } + .width('100%') + .height('139vp') + .alignItems(HorizontalAlign.Center) + + Column() { + Text($r('app.string.signature_data')) + .fontColor($r('app.color.text_title_color')) + .fontSize($r('sys.float.ohos_id_text_size_sub_title3')) + .margin({ top: '19.5vp', left: '24vp', bottom: '9.5vp' }) + } + .width('100%') + .height('48vp') + .alignItems(HorizontalAlign.Start) + + Column() { + Column() { + Scroll() { + Text(this.signTextInfo) + .fontColor($r('app.color.text_content_color')) + .fontSize($r('sys.float.ohos_id_text_size_body1')) + .lineHeight('19vp') + .textAlign(TextAlign.Start) + .width('100%') + } + .margin({ top: '8vp', left: '16vp', right: '16vp', bottom: '21vp' }) + } + .height('139vp') + .backgroundColor($r('app.color.text_bg_color')) + .borderRadius($r('sys.float.ohos_id_corner_radius_default_l')) + .margin({ left: '12vp', right: '12vp' }) + .align(Alignment.TopStart) + } + .width('100%') + .height('139vp') + .alignItems(HorizontalAlign.Center) + + Column() { + Row() { + Button({ type: ButtonType.Capsule, stateEffect: false }) { + Text($r('app.string.display_data')) + .fontSize($r('sys.float.ohos_id_text_size_body1')) + .fontColor($r('app.color.button_display_title_color')) + .padding({ top: '9vp', left: '16vp', right: '16vp', bottom: '9vp' }) + } + .width('48%') + .backgroundColor($r('app.color.button_display_bg_color')) + .margin({ right: '12vp' }) + .id('dataDispalyButton') + .onClick(() => { + this.certFramework.dataDisplay((result: resultInfo) => { + this.certTextInfo = result.certInfo; + this.originTextInfo = result.originInfo; + this.signTextInfo = result.signatureInfo; + }) + }) + + Button({ type: ButtonType.Capsule, stateEffect: false }) { + Text($r('app.string.verify')) + .fontSize($r('sys.float.ohos_id_text_size_body1')) + .fontColor($r('app.color.button_verify_title_color')) + .padding({ top: '9vp', left: '16vp', right: '16vp', bottom: '9vp' }) + } + .width('48%') + .backgroundColor($r('app.color.button_verify_bg_color')) + .id('verifyButton') + .onClick(() => { + this.certFramework.verify((result: boolean) => { + if (result == true) { + Logger.info(TAG, 'verify: PASS!!!'); + try { + promptAction.showToast( + { + message: $r('app.string.verify_success'), + duration: 2000, + bottom: 122 + } + ) + } catch (err) { + Logger.error(TAG, `show result failed, ${JSON.stringify(err)}`); + } + } else { + Logger.info(TAG, 'verify: FAILED!!!'); + try { + promptAction.showToast( + { + message: $r('app.string.verify_fail'), + duration: 2000, + bottom: 122 + } + ) + } catch (err) { + Logger.error(TAG, `show result failed, ${JSON.stringify(err)}`); + } + } + }) + }) + } + .margin({ left: '24vp', right: '24vp' }) + } + .width('100%') + .height('40vp') + .alignItems(HorizontalAlign.Center) + .margin({ top: '23vp' }) + + Column() { + Row() { + Button({ type: ButtonType.Capsule, stateEffect: false }) { + Text($r('app.string.modify_origin_data')) + .fontSize($r('sys.float.ohos_id_text_size_body1')) + .fontColor($r('app.color.button_modify_origin_data_title_color')) + .padding({ top: '9.25vp', left: '20vp', right: '20vp', bottom: '8.75vp' }) + } + .width('48%') + .backgroundColor($r('app.color.button_modify_origin_data_bg_color')) + .margin({ right: '12vp' }) + .id('modifyOriginDataButton') + .onClick(() => { + this.certFramework.modifyOriginData((result: resultInfo) => { + this.originTextInfo = result.originInfo; + this.signTextInfo = result.signatureInfo; + }) + }) + + Button({ type: ButtonType.Capsule, stateEffect: false }) { + Text($r('app.string.modify_signature_data')) + .fontSize($r('sys.float.ohos_id_text_size_body1')) + .fontColor($r('app.color.button_modify_signature_data_title_color')) + .padding({ top: '9.25vp', left: '20vp', right: '20vp', bottom: '8.75vp' }) + } + .width('48%') + .backgroundColor($r('app.color.button_modify_signature_data_bg_color')) + .id('modifySignatureDataButton') + .onClick(() => { + this.certFramework.modifySignatureData((result: resultInfo) => { + this.originTextInfo = result.originInfo; + this.signTextInfo = result.signatureInfo; + }) + }) + } + .margin({ left: '24vp', right: '24vp' }) + } + .width('100%') + .height('40vp') + .alignItems(HorizontalAlign.Center) + .margin({ top: '12vp' }) + } + .width('100%') + .height('100%') + .backgroundColor($r('app.color.homepage_bg_color')) + } +} + +class resultInfo{ + certInfo: string = ''; + originInfo: string = ''; + signatureInfo: string = ''; +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Security/CertificateFramework/entry/src/main/module.json5 b/HarmonyOS_NEXT/Security/CertificateFramework/entry/src/main/module.json5 new file mode 100644 index 0000000000000000000000000000000000000000..e42c2962094ce21b5300a2e19e780aa0b1b84002 --- /dev/null +++ b/HarmonyOS_NEXT/Security/CertificateFramework/entry/src/main/module.json5 @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "module": { + "name": "entry", + "type": "entry", + "description": "$string:module_desc", + "mainElement": "EntryAbility", + "deviceTypes": [ + "default", + "tablet" + ], + "deliveryWithInstall": true, + "installationFree": false, + "pages": "$profile:main_pages", + "abilities": [ + { + "name": "EntryAbility", + "srcEntry": "./ets/entryability/EntryAbility.ets", + "description": "$string:EntryAbility_desc", + "icon": "$media:icon", + "label": "$string:EntryAbility_label", + "startWindowIcon": "$media:icon", + "startWindowBackground": "$color:start_window_background", + "exported": true, + "skills": [ + { + "entities": [ + "entity.system.home" + ], + "actions": [ + "action.system.home" + ] + } + ] + } + ] + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Security/CertificateFramework/entry/src/main/resources/base/element/color.json b/HarmonyOS_NEXT/Security/CertificateFramework/entry/src/main/resources/base/element/color.json new file mode 100644 index 0000000000000000000000000000000000000000..c0b3ea497018f9b4276cab37f5fe49d333361593 --- /dev/null +++ b/HarmonyOS_NEXT/Security/CertificateFramework/entry/src/main/resources/base/element/color.json @@ -0,0 +1,60 @@ +{ + "color": [ + { + "name": "start_window_background", + "value": "#FFFFFF" + }, + { + "name": "homepage_title_color", + "value": "#182431" + }, + { + "name": "homepage_bg_color", + "value": "#F1F3F5" + }, + { + "name": "text_title_color", + "value": "#99182431" + }, + { + "name": "text_content_color", + "value": "#182431" + }, + { + "name": "text_bg_color", + "value": "#FFFFFF" + }, + { + "name": "button_display_title_color", + "value": "#FFFFFF" + }, + { + "name": "button_display_bg_color", + "value": "#007DFF" + }, + { + "name": "button_verify_title_color", + "value": "#FFFFFF" + }, + { + "name": "button_verify_bg_color", + "value": "#007DFF" + }, + { + "name": "button_modify_origin_data_title_color", + "value": "#007DFF" + }, + { + "name": "button_modify_origin_data_bg_color", + "value": "#0D182431" + }, + { + "name": "button_modify_signature_data_title_color", + "value": "#007DFF" + }, + { + "name": "button_modify_signature_data_bg_color", + "value": "#0D182431" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Security/CertificateFramework/entry/src/main/resources/base/element/string.json b/HarmonyOS_NEXT/Security/CertificateFramework/entry/src/main/resources/base/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..6b474d59413132da4daec3419e803f7c76d27e41 --- /dev/null +++ b/HarmonyOS_NEXT/Security/CertificateFramework/entry/src/main/resources/base/element/string.json @@ -0,0 +1,52 @@ +{ + "string": [ + { + "name": "module_desc", + "value": "Certificate Framework" + }, + { + "name": "EntryAbility_desc", + "value": "Certificate Framework" + }, + { + "name": "EntryAbility_label", + "value": "Certificate Framework" + }, + { + "name": "certificate_data", + "value": "Certificate Data" + }, + { + "name": "origin_data", + "value": "Origin Data" + }, + { + "name": "signature_data", + "value": "Signature Data" + }, + { + "name": "display_data", + "value": "Display Data" + }, + { + "name": "verify", + "value": "Verify" + }, + { + "name": "modify_origin_data", + "value": "Modify Origin Data" + }, + { + "name": "modify_signature_data", + "value": "Modify Signature Data" + }, + { + "name": "verify_success", + "value": "Verify Success" + }, + { + "name": "verify_fail", + "value": "Verify Fail" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Security/CertificateFramework/entry/src/main/resources/base/media/icon.png b/HarmonyOS_NEXT/Security/CertificateFramework/entry/src/main/resources/base/media/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ce307a8827bd75456441ceb57d530e4c8d45d36c Binary files /dev/null and b/HarmonyOS_NEXT/Security/CertificateFramework/entry/src/main/resources/base/media/icon.png differ diff --git a/HarmonyOS_NEXT/Security/CertificateFramework/entry/src/main/resources/base/profile/main_pages.json b/HarmonyOS_NEXT/Security/CertificateFramework/entry/src/main/resources/base/profile/main_pages.json new file mode 100644 index 0000000000000000000000000000000000000000..1898d94f58d6128ab712be2c68acc7c98e9ab9ce --- /dev/null +++ b/HarmonyOS_NEXT/Security/CertificateFramework/entry/src/main/resources/base/profile/main_pages.json @@ -0,0 +1,5 @@ +{ + "src": [ + "pages/Index" + ] +} diff --git a/HarmonyOS_NEXT/Security/CertificateFramework/entry/src/main/resources/en_US/element/string.json b/HarmonyOS_NEXT/Security/CertificateFramework/entry/src/main/resources/en_US/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..6b474d59413132da4daec3419e803f7c76d27e41 --- /dev/null +++ b/HarmonyOS_NEXT/Security/CertificateFramework/entry/src/main/resources/en_US/element/string.json @@ -0,0 +1,52 @@ +{ + "string": [ + { + "name": "module_desc", + "value": "Certificate Framework" + }, + { + "name": "EntryAbility_desc", + "value": "Certificate Framework" + }, + { + "name": "EntryAbility_label", + "value": "Certificate Framework" + }, + { + "name": "certificate_data", + "value": "Certificate Data" + }, + { + "name": "origin_data", + "value": "Origin Data" + }, + { + "name": "signature_data", + "value": "Signature Data" + }, + { + "name": "display_data", + "value": "Display Data" + }, + { + "name": "verify", + "value": "Verify" + }, + { + "name": "modify_origin_data", + "value": "Modify Origin Data" + }, + { + "name": "modify_signature_data", + "value": "Modify Signature Data" + }, + { + "name": "verify_success", + "value": "Verify Success" + }, + { + "name": "verify_fail", + "value": "Verify Fail" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Security/CertificateFramework/entry/src/main/resources/zh_CN/element/string.json b/HarmonyOS_NEXT/Security/CertificateFramework/entry/src/main/resources/zh_CN/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..8a357ca5db2ba64da9184d360c70f79bddfa164a --- /dev/null +++ b/HarmonyOS_NEXT/Security/CertificateFramework/entry/src/main/resources/zh_CN/element/string.json @@ -0,0 +1,52 @@ +{ + "string": [ + { + "name": "module_desc", + "value": "证书算法库框架" + }, + { + "name": "EntryAbility_desc", + "value": "证书算法库框架" + }, + { + "name": "EntryAbility_label", + "value": "证书算法库框架" + }, + { + "name": "certificate_data", + "value": "证书数据" + }, + { + "name": "origin_data", + "value": "原始数据" + }, + { + "name": "signature_data", + "value": "签名数据" + }, + { + "name": "display_data", + "value": "数据展示" + }, + { + "name": "verify", + "value": "签名校验" + }, + { + "name": "modify_origin_data", + "value": "修改原始数据" + }, + { + "name": "modify_signature_data", + "value": "修改签名数据" + }, + { + "name": "verify_success", + "value": "校验通过" + }, + { + "name": "verify_fail", + "value": "校验失败" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Security/CertificateFramework/entry/src/ohosTest/ets/TestRunner/OpenHarmonyTestRunner.ts b/HarmonyOS_NEXT/Security/CertificateFramework/entry/src/ohosTest/ets/TestRunner/OpenHarmonyTestRunner.ts new file mode 100644 index 0000000000000000000000000000000000000000..a879f29dcecbc48d6919fc7bf94b2749387f41a8 --- /dev/null +++ b/HarmonyOS_NEXT/Security/CertificateFramework/entry/src/ohosTest/ets/TestRunner/OpenHarmonyTestRunner.ts @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import Logger from '../../../main/ets/model/Logger'; +import TestRunner from '@ohos.application.testRunner'; +import AbilityDelegatorRegistry from '@ohos.app.ability.abilityDelegatorRegistry'; + +let abilityDelegator = undefined; +let abilityDelegatorArguments = undefined; + +async function onAbilityCreateCallback() { + Logger.info('testTag', 'onAbilityCreateCallback'); +} + +async function addAbilityMonitorCallback(err: any) { + Logger.info('testTag', `addAbilityMonitorCallback : ${JSON.stringify(err) ?? ''}`); +} + +export default class OpenHarmonyTestRunner implements TestRunner { + constructor() { + } + + onPrepare() { + Logger.info('testTag', 'OpenHarmonyTestRunner OnPrepare '); + } + + async onRun() { + Logger.info('testTag', 'OpenHarmonyTestRunner onRun run'); + abilityDelegatorArguments = AbilityDelegatorRegistry.getArguments(); + abilityDelegator = AbilityDelegatorRegistry.getAbilityDelegator(); + let testAbilityName = abilityDelegatorArguments.bundleName + '.TestAbility'; + let lMonitor = { + abilityName: testAbilityName, + onAbilityCreate: onAbilityCreateCallback, + }; + abilityDelegator.addAbilityMonitor(lMonitor, addAbilityMonitorCallback); + let cmd = 'aa start -d 0 -a TestAbility' + ' -b ' + abilityDelegatorArguments.bundleName; + let debug = abilityDelegatorArguments.parameters['-D']; + if (debug == 'true') { + cmd += ' -D'; + } + Logger.info('testTag', `cmd : ${cmd}`); + abilityDelegator.executeShellCommand(cmd, + (err: any, d: any) => { + Logger.info('testTag', `executeShellCommand : err : ${JSON.stringify(err) ?? ''}`); + Logger.info('testTag', `executeShellCommand : data : ${d.stdResult ?? ''}`); + Logger.info('testTag', `executeShellCommand : data : ${d.exitCode ?? ''}`); + }) + Logger.info('testTag', 'OpenHarmonyTestRunner onRun end'); + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Security/CertificateFramework/entry/src/ohosTest/ets/test/Ability.test.ets b/HarmonyOS_NEXT/Security/CertificateFramework/entry/src/ohosTest/ets/test/Ability.test.ets new file mode 100644 index 0000000000000000000000000000000000000000..910a069c9efe24c4148d6b2a480c050392ccbc80 --- /dev/null +++ b/HarmonyOS_NEXT/Security/CertificateFramework/entry/src/ohosTest/ets/test/Ability.test.ets @@ -0,0 +1,233 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { MatchPattern, Driver, ON } from '@ohos.UiTest'; +import Logger from '../../../main/ets/model/Logger'; +import AbilityDelegatorRegistry from '@ohos.app.ability.abilityDelegatorRegistry'; +import { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from '@ohos/hypium'; +import resource from '@ohos.resourceManager' + +const TAG = '[Sample_CertFramework]'; +const BUNDLE = 'CertFramework_'; +const COMMON_DELAY_TIME = 1000; +const DISPLAY_DELAY_TIME = 50; +const VERIFY_DELAY_TIME = 200; +const CORRECT_CERTIFICATION = 'gt8da5Zg=='; +const CORRECT_ORIGIN_TEXT = 'on Sunday at the Central Garden'; +const MODIFIED_ORIGIN_TEXT = 'on Monday at the lakeside garden'; +const CORRECT_SIGNATURE = 'd7mi/'; +const MODIFIED_SIGNATURE = 'AAAREleX'; + +export default function abilityTest() { + let driver = Driver.create(); + let abilityDelegator = AbilityDelegatorRegistry.getAbilityDelegator(); + describe('ActsAbilityTest', () => { + /** + * 拉起应用 + */ + it(BUNDLE + 'StartAbility_001', 0, async (done: Function) => { + Logger.info(TAG, BUNDLE + 'StartAbility_001 begin'); + try { + await abilityDelegator.startAbility({ + bundleName: 'com.samples.certframework', + abilityName: 'EntryAbility' + }); + Logger.info(TAG, BUNDLE + 'Start certframework'); + done(); + } catch (exception) { + Logger.info(TAG, `StartAbility_001 exception = ${JSON.stringify(exception)}`); + expect().assertFail(); + } + Logger.info(TAG, 'StartAbility_001 end'); + done(); + }) + + /** + * 数据展示 + */ + it(BUNDLE + 'DisplayData_001', 0, async (done: Function) => { + Logger.info(TAG, BUNDLE + 'DisplayData_001 begin'); + await driver.delayMs(COMMON_DELAY_TIME); + + // 点击数据展示按钮,页面分别显示正确的证书、原始、签名数据 + await driver.assertComponentExist(ON.id('dataDispalyButton')); + let displayData = await driver.findComponent(ON.id('dataDispalyButton')); + await displayData.click(); + await driver.delayMs(DISPLAY_DELAY_TIME); + await driver.assertComponentExist(ON.text(CORRECT_CERTIFICATION, MatchPattern.CONTAINS)); + await driver.assertComponentExist(ON.text(CORRECT_ORIGIN_TEXT, MatchPattern.CONTAINS)); + await driver.assertComponentExist(ON.text(CORRECT_SIGNATURE, MatchPattern.CONTAINS)); + + Logger.info(TAG, BUNDLE + 'DisplayData_001 end'); + done(); + }) + + /** + * 签名校验 + */ + it(BUNDLE + 'Verify_001', 0, async (done: Function) => { + Logger.info(TAG, BUNDLE + 'Verify_001 begin'); + await driver.delayMs(COMMON_DELAY_TIME); + // 获取ability + let ability = await abilityDelegator.getCurrentTopAbility() + //获取manager + let manager = ability.context.resourceManager + + // 点击签名校验按钮,页面弹出toast弹窗提示:校验通过 + await driver.assertComponentExist(ON.id('verifyButton')); + let verify = await driver.findComponent(ON.id('verifyButton')); + await verify.click(); + await driver.delayMs(VERIFY_DELAY_TIME); + await driver.assertComponentExist(ON.text(await manager.getStringValue($r('app.string.verify_success')))); + + Logger.info(TAG, BUNDLE + 'Verify_001 end'); + done(); + }) + + /** + * 修改原始数据并保持签名数据不变 + */ + it(BUNDLE + 'ModifyOriginData_001', 0, async (done: Function) => { + Logger.info(TAG, BUNDLE + 'ModifyOriginData_001 begin'); + await driver.delayMs(COMMON_DELAY_TIME); + + // 点击修改原始数据按钮,页面分别显示正确的证书数据和签名数据,以及错误的原始数据 + await driver.assertComponentExist(ON.id('modifyOriginDataButton')); + let modify = await driver.findComponent(ON.id('modifyOriginDataButton')); + await modify.click(); + await driver.delayMs(DISPLAY_DELAY_TIME); + await driver.assertComponentExist(ON.text(CORRECT_CERTIFICATION, MatchPattern.CONTAINS)); + await driver.assertComponentExist(ON.text(MODIFIED_ORIGIN_TEXT, MatchPattern.CONTAINS)); + await driver.assertComponentExist(ON.text(CORRECT_SIGNATURE, MatchPattern.CONTAINS)); + + Logger.info(TAG, BUNDLE + 'ModifyOriginData_001 begin'); + done(); + }) + + /** + * 修改签名数据并保持原始数据不变 + */ + it(BUNDLE + 'ModifySignatureData_001', 0, async (done: Function) => { + Logger.info(TAG, BUNDLE + 'ModifySignatureData_001 begin'); + await driver.delayMs(COMMON_DELAY_TIME); + + // 点击修改签名数据按钮,页面分别显示正确的证书数据和原始数据,以及错误的签名数据 + await driver.assertComponentExist(ON.id('modifySignatureDataButton')); + let modify = await driver.findComponent(ON.id('modifySignatureDataButton')); + await modify.click(); + await driver.delayMs(DISPLAY_DELAY_TIME); + await driver.assertComponentExist(ON.text(CORRECT_CERTIFICATION, MatchPattern.CONTAINS)); + await driver.assertComponentExist(ON.text(CORRECT_ORIGIN_TEXT, MatchPattern.CONTAINS)); + await driver.assertComponentExist(ON.text(MODIFIED_SIGNATURE, MatchPattern.CONTAINS)); + + Logger.info(TAG, BUNDLE + 'ModifySignatureData_001 begin'); + done(); + }) + + /** + * 恢复初始数据,修改原始数据并保持签名数据不变,重新进行签名校验 + */ + it(BUNDLE + 'Verify_002', 0, async (done: Function) => { + Logger.info(TAG, BUNDLE + 'Verify_002 begin'); + await driver.delayMs(COMMON_DELAY_TIME); + // 获取ability + let ability = await abilityDelegator.getCurrentTopAbility(); + //获取manager + let manager = ability.context.resourceManager; + + // 点击数据展示按钮恢复正确的数据,页面分别显示正确的证书、签名、原始数据 + Logger.info(TAG, 'display data'); + await driver.assertComponentExist(ON.id('dataDispalyButton')); + let display = await driver.findComponent(ON.id('dataDispalyButton')); + await display.click(); + // 点击修改原始数据按钮,页面分别显示正确的证书数据和签名数据,以及错误的原始数据 + Logger.info(TAG, 'modify origin data'); + await driver.assertComponentExist(ON.id('modifyOriginDataButton')); + let modify = await driver.findComponent(ON.id('modifyOriginDataButton')); + await modify.click(); + // 点击签名校验按钮,页面弹出toast弹窗提示:校验失败 + Logger.info(TAG, 'verify'); + await driver.assertComponentExist(ON.id('verifyButton')); + let verify = await driver.findComponent(ON.id('verifyButton')); + await verify.click(); + await driver.delayMs(VERIFY_DELAY_TIME); + await driver.assertComponentExist(ON.text(await manager.getStringValue($r('app.string.verify_fail')))); + + Logger.info(TAG, BUNDLE + 'Verify_002 end'); + done(); + }) + + /** + * 恢复初始数据,修改签名数据并保持原始数据不变,重新进行签名校验 + */ + it(BUNDLE + 'Verify_003', 0, async (done: Function) => { + Logger.info(TAG, BUNDLE + 'Verify_003 begin'); + await driver.delayMs(COMMON_DELAY_TIME); + // 获取ability + let ability = await abilityDelegator.getCurrentTopAbility(); + //获取manager + let manager = ability.context.resourceManager; + + // 点击数据展示按钮恢复正确的数据,页面分别显示正确的证书、签名、原始数据 + Logger.info(TAG, 'display data'); + await driver.assertComponentExist(ON.id('dataDispalyButton')); + let display = await driver.findComponent(ON.id('dataDispalyButton')); + await display.click(); + // 点击修改原始数据按钮,页面分别显示正确的证书数据和签名数据,以及错误的原始数据 + Logger.info(TAG, 'modify signature data'); + await driver.assertComponentExist(ON.id('modifySignatureDataButton')); + let modify = await driver.findComponent(ON.id('modifySignatureDataButton')); + await modify.click(); + // 点击签名校验按钮,页面弹出toast弹窗提示:校验失败 + Logger.info(TAG, 'verify'); + await driver.assertComponentExist(ON.id('verifyButton')); + let verify = await driver.findComponent(ON.id('verifyButton')); + await verify.click(); + await driver.delayMs(VERIFY_DELAY_TIME); + await driver.assertComponentExist(ON.text(await manager.getStringValue($r('app.string.verify_fail')))); + + Logger.info(TAG, BUNDLE + 'Verify_003 end'); + done(); + }) + + /** + * 恢复正确的签名数据和原始数据,重新进行签名校验 + */ + it(BUNDLE + 'Verify_004', 0, async (done: Function) => { + Logger.info(TAG, BUNDLE + 'Verify_004 begin'); + await driver.delayMs(COMMON_DELAY_TIME); + // 获取ability + let ability = await abilityDelegator.getCurrentTopAbility(); + //获取manager + let manager = ability.context.resourceManager; + + // 点击数据展示按钮恢复正确的数据,页面分别显示正确的证书、签名、原始数据 + Logger.info(TAG, 'display data'); + await driver.assertComponentExist(ON.id('dataDispalyButton')); + let display = await driver.findComponent(ON.id('dataDispalyButton')); + await display.click(); + // 点击签名校验按钮,页面弹出toast弹窗提示:校验通过 + Logger.info(TAG, 'verify'); + await driver.assertComponentExist(ON.id('verifyButton')); + let verify = await driver.findComponent(ON.id('verifyButton')); + await verify.click(); + await driver.delayMs(VERIFY_DELAY_TIME); + await driver.assertComponentExist(ON.text(await manager.getStringValue($r('app.string.verify_success')))); + + Logger.info(TAG, BUNDLE + 'Verify_004 end'); + done(); + }) + }) +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Security/CertificateFramework/entry/src/ohosTest/ets/test/List.test.ets b/HarmonyOS_NEXT/Security/CertificateFramework/entry/src/ohosTest/ets/test/List.test.ets new file mode 100644 index 0000000000000000000000000000000000000000..47ea1ac7ace6c39e56d10924f34e207470d0d6d9 --- /dev/null +++ b/HarmonyOS_NEXT/Security/CertificateFramework/entry/src/ohosTest/ets/test/List.test.ets @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import abilityTest from './Ability.test' + +export default function testsuite() { + abilityTest(); +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Security/CertificateFramework/entry/src/ohosTest/ets/testability/TestAbility.ets b/HarmonyOS_NEXT/Security/CertificateFramework/entry/src/ohosTest/ets/testability/TestAbility.ets new file mode 100644 index 0000000000000000000000000000000000000000..6839fef22425f2dbd9562b225b0f2f221c9f116c --- /dev/null +++ b/HarmonyOS_NEXT/Security/CertificateFramework/entry/src/ohosTest/ets/testability/TestAbility.ets @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import UIAbility from '@ohos.app.ability.UIAbility'; +import AbilityDelegatorRegistry from '@ohos.app.ability.abilityDelegatorRegistry'; +import AbilityConstant from '@ohos.app.ability.AbilityConstant'; +import Logger from '../../../main/ets/model/Logger'; +import { Hypium } from '@ohos/hypium'; +import testsuite from '../test/List.test'; +import window from '@ohos.window'; +import Want from '@ohos.app.ability.Want'; + +export default class TestAbility extends UIAbility { + onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) { + Logger.info('testTag', 'TestAbility onCreate'); + Logger.info('testTag', `want param: ${JSON.stringify(want) ?? ''}`); + Logger.info('testTag', `launchParam: ${JSON.stringify(launchParam) ?? ''}`); + let abilityDelegator = AbilityDelegatorRegistry.getAbilityDelegator(); + let abilityDelegatorArguments = AbilityDelegatorRegistry.getArguments(); + Logger.info('testTag', 'start run testcase!!!'); + Hypium.hypiumTest(abilityDelegator, abilityDelegatorArguments, testsuite); + } + + onDestroy() { + Logger.info('testTag', 'TestAbility onDestroy'); + } + + onWindowStageCreate(windowStage: window.WindowStage) { + Logger.info('testTag', 'TestAbility onWindowStageCreate'); + windowStage.loadContent('testability/pages/Index', (err, data) => { + if (err.code) { + Logger.error('testTag', `Failed to load the content. Cause: ${JSON.stringify(err) ?? ''}`); + return; + } + Logger.info('testTag', `Succeeded in loading the content. Data: ${JSON.stringify(data) ?? ''}`); + }); + } + + onWindowStageDestroy() { + Logger.info('testTag', 'TestAbility onWindowStageDestroy'); + } + + onForeground() { + Logger.info('testTag', 'TestAbility onForeground'); + } + + onBackground() { + Logger.info('testTag', 'TestAbility onBackground'); + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Security/CertificateFramework/entry/src/ohosTest/ets/testability/pages/Index.ets b/HarmonyOS_NEXT/Security/CertificateFramework/entry/src/ohosTest/ets/testability/pages/Index.ets new file mode 100644 index 0000000000000000000000000000000000000000..7555968ca54dc498f829d612feb163248f986ce1 --- /dev/null +++ b/HarmonyOS_NEXT/Security/CertificateFramework/entry/src/ohosTest/ets/testability/pages/Index.ets @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import Logger from '../../../../main/ets/model/Logger'; + +@Entry +@Component +struct Index { + aboutToAppear() { + Logger.info('testTag', 'TestAbility index aboutToAppear'); + } + @State message: string = 'Hello World' + build() { + Row() { + Column() { + Text(this.message) + .fontSize(50) + .fontWeight(FontWeight.Bold) + Button() { + Text('next page') + .fontSize(20) + .fontWeight(FontWeight.Bold) + }.type(ButtonType.Capsule) + .margin({ + top: 20 + }) + .backgroundColor('#0D9FFB') + .width('35%') + .height('5%') + .onClick(()=>{ + }) + } + .width('100%') + } + .height('100%') + } + } \ No newline at end of file diff --git a/HarmonyOS_NEXT/Security/CertificateFramework/entry/src/ohosTest/module.json5 b/HarmonyOS_NEXT/Security/CertificateFramework/entry/src/ohosTest/module.json5 new file mode 100644 index 0000000000000000000000000000000000000000..e6a499c49efe53f1a5bab25638ce6b00f612a7d8 --- /dev/null +++ b/HarmonyOS_NEXT/Security/CertificateFramework/entry/src/ohosTest/module.json5 @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "module": { + "name": "entry_test", + "type": "feature", + "description": "$string:module_test_desc", + "mainElement": "TestAbility", + "deviceTypes": [ + "default", + "tablet" + ], + "deliveryWithInstall": true, + "installationFree": false, + "pages": "$profile:test_pages", + "abilities": [ + { + "name": "TestAbility", + "srcEntry": "./ets/testability/TestAbility.ets", + "description": "$string:TestAbility_desc", + "icon": "$media:icon", + "label": "$string:TestAbility_label", + "exported": true, + "startWindowIcon": "$media:icon", + "startWindowBackground": "$color:start_window_background", + "skills": [ + { + "actions": [ + "action.system.home" + ], + "entities": [ + "entity.system.home" + ] + } + ] + } + ] + } +} diff --git a/HarmonyOS_NEXT/Security/CertificateFramework/entry/src/ohosTest/resources/base/element/color.json b/HarmonyOS_NEXT/Security/CertificateFramework/entry/src/ohosTest/resources/base/element/color.json new file mode 100644 index 0000000000000000000000000000000000000000..3c712962da3c2751c2b9ddb53559afcbd2b54a02 --- /dev/null +++ b/HarmonyOS_NEXT/Security/CertificateFramework/entry/src/ohosTest/resources/base/element/color.json @@ -0,0 +1,8 @@ +{ + "color": [ + { + "name": "start_window_background", + "value": "#FFFFFF" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Security/CertificateFramework/entry/src/ohosTest/resources/base/element/string.json b/HarmonyOS_NEXT/Security/CertificateFramework/entry/src/ohosTest/resources/base/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..0c84e8b70c3f104e3cddc393ee793a744d33a2dc --- /dev/null +++ b/HarmonyOS_NEXT/Security/CertificateFramework/entry/src/ohosTest/resources/base/element/string.json @@ -0,0 +1,24 @@ +{ + "string": [ + { + "name": "module_test_desc", + "value": "test ability description" + }, + { + "name": "TestAbility_desc", + "value": "the test ability" + }, + { + "name": "TestAbility_label", + "value": "test label" + }, + { + "name": "verify_success", + "value": "Verify Success" + }, + { + "name": "verify_fail", + "value": "Verify Fail" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Security/CertificateFramework/entry/src/ohosTest/resources/base/media/icon.png b/HarmonyOS_NEXT/Security/CertificateFramework/entry/src/ohosTest/resources/base/media/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ce307a8827bd75456441ceb57d530e4c8d45d36c Binary files /dev/null and b/HarmonyOS_NEXT/Security/CertificateFramework/entry/src/ohosTest/resources/base/media/icon.png differ diff --git a/HarmonyOS_NEXT/Security/CertificateFramework/entry/src/ohosTest/resources/base/profile/test_pages.json b/HarmonyOS_NEXT/Security/CertificateFramework/entry/src/ohosTest/resources/base/profile/test_pages.json new file mode 100644 index 0000000000000000000000000000000000000000..b7e7343cacb32ce982a45e76daad86e435e054fe --- /dev/null +++ b/HarmonyOS_NEXT/Security/CertificateFramework/entry/src/ohosTest/resources/base/profile/test_pages.json @@ -0,0 +1,5 @@ +{ + "src": [ + "testability/pages/Index" + ] +} diff --git a/HarmonyOS_NEXT/Security/CertificateFramework/entry/src/ohosTest/resources/en/element/string.json b/HarmonyOS_NEXT/Security/CertificateFramework/entry/src/ohosTest/resources/en/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..347a05ba146400f8a1db6b99f8ed50ea2d6923dc --- /dev/null +++ b/HarmonyOS_NEXT/Security/CertificateFramework/entry/src/ohosTest/resources/en/element/string.json @@ -0,0 +1,12 @@ +{ + "string": [ + { + "name": "verify_success", + "value": "Verify Success" + }, + { + "name": "verify_fail", + "value": "Verify Fail" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Security/CertificateFramework/entry/src/ohosTest/resources/zh/element/string.json b/HarmonyOS_NEXT/Security/CertificateFramework/entry/src/ohosTest/resources/zh/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..6d8046e90669fb69a654d8ff328d888441dd901a --- /dev/null +++ b/HarmonyOS_NEXT/Security/CertificateFramework/entry/src/ohosTest/resources/zh/element/string.json @@ -0,0 +1,12 @@ +{ + "string": [ + { + "name": "verify_success", + "value": "校验通过" + }, + { + "name": "verify_fail", + "value": "校验失败" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Security/CertificateFramework/hvigor/hvigor-config.json5 b/HarmonyOS_NEXT/Security/CertificateFramework/hvigor/hvigor-config.json5 new file mode 100644 index 0000000000000000000000000000000000000000..97a4cbde7a8fba26054a45f27718562d6a6b4fa6 --- /dev/null +++ b/HarmonyOS_NEXT/Security/CertificateFramework/hvigor/hvigor-config.json5 @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "hvigorVersion": "3.0.9-s", + "dependencies": { + "@ohos/hvigor-ohos-plugin": "3.0.9-s" + }, + "execution": { + // "daemon": true, /* Enable daemon compilation. Default: true */ + // "incremental": true, /* Enable incremental compilation. Default: true */ + // "parallel": true, /* Enable parallel compilation. Default: true */ + // "typeCheck": false, /* Enable typeCheck. Default: false */ + }, + "logging": { + // "level": "info" /* Define the log level. Value: [ "debug" | "info" | "warn" | "error" ]. Default: "info" */ + }, + "debugging": { + // "stacktrace": false /* Disable stacktrace compilation. Default: false */ + } +} diff --git a/HarmonyOS_NEXT/Security/CertificateFramework/hvigor/hvigor-wrapper.js b/HarmonyOS_NEXT/Security/CertificateFramework/hvigor/hvigor-wrapper.js new file mode 100644 index 0000000000000000000000000000000000000000..994f22987bd0739b9faa07c966b066c2d9218602 --- /dev/null +++ b/HarmonyOS_NEXT/Security/CertificateFramework/hvigor/hvigor-wrapper.js @@ -0,0 +1,2 @@ +"use strict";var e=require("fs"),t=require("path"),n=require("os"),r=require("crypto"),u=require("child_process"),o=require("constants"),i=require("stream"),s=require("util"),c=require("assert"),a=require("tty"),l=require("zlib"),f=require("net");function d(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var D=d(e),p=d(t),E=d(n),m=d(r),h=d(u),y=d(o),C=d(i),F=d(s),g=d(c),A=d(a),v=d(l),S=d(f),w="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},O={},b={},_={},B=w&&w.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(_,"__esModule",{value:!0}),_.isMac=_.isLinux=_.isWindows=void 0;const P=B(E.default),k="Windows_NT",x="Linux",N="Darwin";_.isWindows=function(){return P.default.type()===k},_.isLinux=function(){return P.default.type()===x},_.isMac=function(){return P.default.type()===N};var I={},T=w&&w.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var u=Object.getOwnPropertyDescriptor(t,n);u&&!("get"in u?!t.__esModule:u.writable||u.configurable)||(u={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,u)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),R=w&&w.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),M=w&&w.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&T(t,e,n);return R(t,e),t};Object.defineProperty(I,"__esModule",{value:!0}),I.hash=void 0;const L=M(m.default);I.hash=function(e,t="md5"){return L.createHash(t).update(e,"utf-8").digest("hex")},function(e){var t=w&&w.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var u=Object.getOwnPropertyDescriptor(t,n);u&&!("get"in u?!t.__esModule:u.writable||u.configurable)||(u={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,u)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),n=w&&w.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),r=w&&w.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(null!=e)for(var u in e)"default"!==u&&Object.prototype.hasOwnProperty.call(e,u)&&t(r,e,u);return n(r,e),r};Object.defineProperty(e,"__esModule",{value:!0}),e.HVIGOR_BOOT_JS_FILE_PATH=e.HVIGOR_PROJECT_DEPENDENCY_PACKAGE_JSON_PATH=e.HVIGOR_PROJECT_DEPENDENCIES_HOME=e.HVIGOR_PROJECT_WRAPPER_HOME=e.HVIGOR_PROJECT_NAME=e.HVIGOR_PROJECT_ROOT_DIR=e.HVIGOR_PROJECT_CACHES_HOME=e.HVIGOR_PNPM_STORE_PATH=e.HVIGOR_WRAPPER_PNPM_SCRIPT_PATH=e.HVIGOR_WRAPPER_TOOLS_HOME=e.HVIGOR_USER_HOME=e.DEFAULT_PACKAGE_JSON=e.DEFAULT_HVIGOR_CONFIG_JSON_FILE_NAME=e.PNPM=e.HVIGOR=e.NPM_TOOL=e.PNPM_TOOL=e.HVIGOR_ENGINE_PACKAGE_NAME=void 0;const u=r(p.default),o=r(E.default),i=_,s=I;e.HVIGOR_ENGINE_PACKAGE_NAME="@ohos/hvigor",e.PNPM_TOOL=(0,i.isWindows)()?"pnpm.cmd":"pnpm",e.NPM_TOOL=(0,i.isWindows)()?"npm.cmd":"npm",e.HVIGOR="hvigor",e.PNPM="pnpm",e.DEFAULT_HVIGOR_CONFIG_JSON_FILE_NAME="hvigor-config.json5",e.DEFAULT_PACKAGE_JSON="package.json",e.HVIGOR_USER_HOME=u.resolve(o.homedir(),".hvigor"),e.HVIGOR_WRAPPER_TOOLS_HOME=u.resolve(e.HVIGOR_USER_HOME,"wrapper","tools"),e.HVIGOR_WRAPPER_PNPM_SCRIPT_PATH=u.resolve(e.HVIGOR_WRAPPER_TOOLS_HOME,"node_modules",".bin",e.PNPM_TOOL),e.HVIGOR_PNPM_STORE_PATH=u.resolve(e.HVIGOR_USER_HOME,"caches"),e.HVIGOR_PROJECT_CACHES_HOME=u.resolve(e.HVIGOR_USER_HOME,"project_caches"),e.HVIGOR_PROJECT_ROOT_DIR=process.cwd(),e.HVIGOR_PROJECT_NAME=u.basename((0,s.hash)(e.HVIGOR_PROJECT_ROOT_DIR)),e.HVIGOR_PROJECT_WRAPPER_HOME=u.resolve(e.HVIGOR_PROJECT_ROOT_DIR,e.HVIGOR),e.HVIGOR_PROJECT_DEPENDENCIES_HOME=u.resolve(e.HVIGOR_PROJECT_CACHES_HOME,e.HVIGOR_PROJECT_NAME,"workspace"),e.HVIGOR_PROJECT_DEPENDENCY_PACKAGE_JSON_PATH=u.resolve(e.HVIGOR_PROJECT_DEPENDENCIES_HOME,e.DEFAULT_PACKAGE_JSON),e.HVIGOR_BOOT_JS_FILE_PATH=u.resolve(e.HVIGOR_PROJECT_DEPENDENCIES_HOME,"node_modules","@ohos","hvigor","bin","hvigor.js")}(b);var j={},$={};Object.defineProperty($,"__esModule",{value:!0}),$.logInfoPrintConsole=$.logErrorAndExit=void 0,$.logErrorAndExit=function(e){e instanceof Error?console.error(e.message):console.error(e),process.exit(-1)},$.logInfoPrintConsole=function(e){console.log(e)};var H=w&&w.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var u=Object.getOwnPropertyDescriptor(t,n);u&&!("get"in u?!t.__esModule:u.writable||u.configurable)||(u={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,u)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),J=w&&w.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),G=w&&w.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&H(t,e,n);return J(t,e),t},V=w&&w.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(j,"__esModule",{value:!0}),j.isFileExists=j.offlinePluginConversion=j.executeCommand=j.getNpmPath=j.hasNpmPackInPaths=void 0;const U=h.default,W=G(p.default),z=b,K=$,q=V(D.default);j.hasNpmPackInPaths=function(e,t){try{return require.resolve(e,{paths:[...t]}),!0}catch(e){return!1}},j.getNpmPath=function(){const e=process.execPath;return W.join(W.dirname(e),z.NPM_TOOL)},j.executeCommand=function(e,t,n){0!==(0,U.spawnSync)(e,t,n).status&&(0,K.logErrorAndExit)(`Error: ${e} ${t} execute failed.See above for details.`)},j.offlinePluginConversion=function(e,t){return t.startsWith("file:")||t.endsWith(".tgz")?W.resolve(e,z.HVIGOR,t.replace("file:","")):t},j.isFileExists=function(e){return q.default.existsSync(e)&&q.default.statSync(e).isFile()},function(e){var t=w&&w.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var u=Object.getOwnPropertyDescriptor(t,n);u&&!("get"in u?!t.__esModule:u.writable||u.configurable)||(u={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,u)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),n=w&&w.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),r=w&&w.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(null!=e)for(var u in e)"default"!==u&&Object.prototype.hasOwnProperty.call(e,u)&&t(r,e,u);return n(r,e),r},u=w&&w.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,"__esModule",{value:!0}),e.executeInstallPnpm=e.isPnpmAvailable=e.environmentHandler=e.checkNpmConifg=e.PNPM_VERSION=void 0;const o=r(D.default),i=b,s=j,c=r(p.default),a=$,l=h.default,f=u(E.default);e.PNPM_VERSION="7.30.0",e.checkNpmConifg=function(){const e=c.resolve(i.HVIGOR_PROJECT_ROOT_DIR,".npmrc"),t=c.resolve(f.default.homedir(),".npmrc");if((0,s.isFileExists)(e)||(0,s.isFileExists)(t))return;const n=(0,s.getNpmPath)(),r=(0,l.spawnSync)(n,["config","get","prefix"],{cwd:i.HVIGOR_PROJECT_ROOT_DIR});if(0!==r.status||!r.stdout)return void(0,a.logErrorAndExit)("Error: The hvigor depends on the npmrc file. Configure the npmrc file first.");const u=c.resolve(`${r.stdout}`.replace(/[\r\n]/gi,""),".npmrc");(0,s.isFileExists)(u)||(0,a.logErrorAndExit)("Error: The hvigor depends on the npmrc file. Configure the npmrc file first.")},e.environmentHandler=function(){process.env["npm_config_update-notifier"]="false"},e.isPnpmAvailable=function(){return!!o.existsSync(i.HVIGOR_WRAPPER_PNPM_SCRIPT_PATH)&&(0,s.hasNpmPackInPaths)("pnpm",[i.HVIGOR_WRAPPER_TOOLS_HOME])},e.executeInstallPnpm=function(){(0,a.logInfoPrintConsole)(`Installing pnpm@${e.PNPM_VERSION}...`);const t=(0,s.getNpmPath)();!function(){const t=c.resolve(i.HVIGOR_WRAPPER_TOOLS_HOME,i.DEFAULT_PACKAGE_JSON);try{o.existsSync(i.HVIGOR_WRAPPER_TOOLS_HOME)||o.mkdirSync(i.HVIGOR_WRAPPER_TOOLS_HOME,{recursive:!0});const n={dependencies:{}};n.dependencies[i.PNPM]=e.PNPM_VERSION,o.writeFileSync(t,JSON.stringify(n))}catch(e){(0,a.logErrorAndExit)(`Error: EPERM: operation not permitted,create ${t} failed.`)}}(),(0,s.executeCommand)(t,["install","pnpm"],{cwd:i.HVIGOR_WRAPPER_TOOLS_HOME,stdio:["inherit","inherit","inherit"],env:process.env}),(0,a.logInfoPrintConsole)("Pnpm install success.")}}(O);var Y={},X={},Z={},Q={};Object.defineProperty(Q,"__esModule",{value:!0}),Q.Unicode=void 0;class ee{}Q.Unicode=ee,ee.Space_Separator=/[\u1680\u2000-\u200A\u202F\u205F\u3000]/,ee.ID_Start=/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/,ee.ID_Continue=/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDE00-\uDE3E\uDE47\uDE50-\uDE83\uDE86-\uDE99\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/,Object.defineProperty(Z,"__esModule",{value:!0}),Z.JudgeUtil=void 0;const te=Q;Z.JudgeUtil=class{static isIgnoreChar(e){return"string"==typeof e&&("\t"===e||"\v"===e||"\f"===e||" "===e||" "===e||"\ufeff"===e||"\n"===e||"\r"===e||"\u2028"===e||"\u2029"===e)}static isSpaceSeparator(e){return"string"==typeof e&&te.Unicode.Space_Separator.test(e)}static isIdStartChar(e){return"string"==typeof e&&(e>="a"&&e<="z"||e>="A"&&e<="Z"||"$"===e||"_"===e||te.Unicode.ID_Start.test(e))}static isIdContinueChar(e){return"string"==typeof e&&(e>="a"&&e<="z"||e>="A"&&e<="Z"||e>="0"&&e<="9"||"$"===e||"_"===e||"‌"===e||"‍"===e||te.Unicode.ID_Continue.test(e))}static isDigitWithoutZero(e){return/[1-9]/.test(e)}static isDigit(e){return"string"==typeof e&&/[0-9]/.test(e)}static isHexDigit(e){return"string"==typeof e&&/[0-9A-Fa-f]/.test(e)}};var ne={},re={fromCallback:function(e){return Object.defineProperty((function(...t){if("function"!=typeof t[t.length-1])return new Promise(((n,r)=>{e.call(this,...t,((e,t)=>null!=e?r(e):n(t)))}));e.apply(this,t)}),"name",{value:e.name})},fromPromise:function(e){return Object.defineProperty((function(...t){const n=t[t.length-1];if("function"!=typeof n)return e.apply(this,t);e.apply(this,t.slice(0,-1)).then((e=>n(null,e)),n)}),"name",{value:e.name})}},ue=y.default,oe=process.cwd,ie=null,se=process.env.GRACEFUL_FS_PLATFORM||process.platform;process.cwd=function(){return ie||(ie=oe.call(process)),ie};try{process.cwd()}catch(e){}if("function"==typeof process.chdir){var ce=process.chdir;process.chdir=function(e){ie=null,ce.call(process,e)},Object.setPrototypeOf&&Object.setPrototypeOf(process.chdir,ce)}var ae=function(e){ue.hasOwnProperty("O_SYMLINK")&&process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)&&function(e){e.lchmod=function(t,n,r){e.open(t,ue.O_WRONLY|ue.O_SYMLINK,n,(function(t,u){t?r&&r(t):e.fchmod(u,n,(function(t){e.close(u,(function(e){r&&r(t||e)}))}))}))},e.lchmodSync=function(t,n){var r,u=e.openSync(t,ue.O_WRONLY|ue.O_SYMLINK,n),o=!0;try{r=e.fchmodSync(u,n),o=!1}finally{if(o)try{e.closeSync(u)}catch(e){}else e.closeSync(u)}return r}}(e);e.lutimes||function(e){ue.hasOwnProperty("O_SYMLINK")&&e.futimes?(e.lutimes=function(t,n,r,u){e.open(t,ue.O_SYMLINK,(function(t,o){t?u&&u(t):e.futimes(o,n,r,(function(t){e.close(o,(function(e){u&&u(t||e)}))}))}))},e.lutimesSync=function(t,n,r){var u,o=e.openSync(t,ue.O_SYMLINK),i=!0;try{u=e.futimesSync(o,n,r),i=!1}finally{if(i)try{e.closeSync(o)}catch(e){}else e.closeSync(o)}return u}):e.futimes&&(e.lutimes=function(e,t,n,r){r&&process.nextTick(r)},e.lutimesSync=function(){})}(e);e.chown=r(e.chown),e.fchown=r(e.fchown),e.lchown=r(e.lchown),e.chmod=t(e.chmod),e.fchmod=t(e.fchmod),e.lchmod=t(e.lchmod),e.chownSync=u(e.chownSync),e.fchownSync=u(e.fchownSync),e.lchownSync=u(e.lchownSync),e.chmodSync=n(e.chmodSync),e.fchmodSync=n(e.fchmodSync),e.lchmodSync=n(e.lchmodSync),e.stat=o(e.stat),e.fstat=o(e.fstat),e.lstat=o(e.lstat),e.statSync=i(e.statSync),e.fstatSync=i(e.fstatSync),e.lstatSync=i(e.lstatSync),e.chmod&&!e.lchmod&&(e.lchmod=function(e,t,n){n&&process.nextTick(n)},e.lchmodSync=function(){});e.chown&&!e.lchown&&(e.lchown=function(e,t,n,r){r&&process.nextTick(r)},e.lchownSync=function(){});"win32"===se&&(e.rename="function"!=typeof e.rename?e.rename:function(t){function n(n,r,u){var o=Date.now(),i=0;t(n,r,(function s(c){if(c&&("EACCES"===c.code||"EPERM"===c.code||"EBUSY"===c.code)&&Date.now()-o<6e4)return setTimeout((function(){e.stat(r,(function(e,o){e&&"ENOENT"===e.code?t(n,r,s):u(c)}))}),i),void(i<100&&(i+=10));u&&u(c)}))}return Object.setPrototypeOf&&Object.setPrototypeOf(n,t),n}(e.rename));function t(t){return t?function(n,r,u){return t.call(e,n,r,(function(e){s(e)&&(e=null),u&&u.apply(this,arguments)}))}:t}function n(t){return t?function(n,r){try{return t.call(e,n,r)}catch(e){if(!s(e))throw e}}:t}function r(t){return t?function(n,r,u,o){return t.call(e,n,r,u,(function(e){s(e)&&(e=null),o&&o.apply(this,arguments)}))}:t}function u(t){return t?function(n,r,u){try{return t.call(e,n,r,u)}catch(e){if(!s(e))throw e}}:t}function o(t){return t?function(n,r,u){function o(e,t){t&&(t.uid<0&&(t.uid+=4294967296),t.gid<0&&(t.gid+=4294967296)),u&&u.apply(this,arguments)}return"function"==typeof r&&(u=r,r=null),r?t.call(e,n,r,o):t.call(e,n,o)}:t}function i(t){return t?function(n,r){var u=r?t.call(e,n,r):t.call(e,n);return u&&(u.uid<0&&(u.uid+=4294967296),u.gid<0&&(u.gid+=4294967296)),u}:t}function s(e){return!e||("ENOSYS"===e.code||!(process.getuid&&0===process.getuid()||"EINVAL"!==e.code&&"EPERM"!==e.code))}e.read="function"!=typeof e.read?e.read:function(t){function n(n,r,u,o,i,s){var c;if(s&&"function"==typeof s){var a=0;c=function(l,f,d){if(l&&"EAGAIN"===l.code&&a<10)return a++,t.call(e,n,r,u,o,i,c);s.apply(this,arguments)}}return t.call(e,n,r,u,o,i,c)}return Object.setPrototypeOf&&Object.setPrototypeOf(n,t),n}(e.read),e.readSync="function"!=typeof e.readSync?e.readSync:(c=e.readSync,function(t,n,r,u,o){for(var i=0;;)try{return c.call(e,t,n,r,u,o)}catch(e){if("EAGAIN"===e.code&&i<10){i++;continue}throw e}});var c};var le=C.default.Stream,fe=function(e){return{ReadStream:function t(n,r){if(!(this instanceof t))return new t(n,r);le.call(this);var u=this;this.path=n,this.fd=null,this.readable=!0,this.paused=!1,this.flags="r",this.mode=438,this.bufferSize=65536,r=r||{};for(var o=Object.keys(r),i=0,s=o.length;ithis.end)throw new Error("start must be <= end");this.pos=this.start}if(null!==this.fd)return void process.nextTick((function(){u._read()}));e.open(this.path,this.flags,this.mode,(function(e,t){if(e)return u.emit("error",e),void(u.readable=!1);u.fd=t,u.emit("open",t),u._read()}))},WriteStream:function t(n,r){if(!(this instanceof t))return new t(n,r);le.call(this),this.path=n,this.fd=null,this.writable=!0,this.flags="w",this.encoding="binary",this.mode=438,this.bytesWritten=0,r=r||{};for(var u=Object.keys(r),o=0,i=u.length;o= zero");this.pos=this.start}this.busy=!1,this._queue=[],null===this.fd&&(this._open=e.open,this._queue.push([this._open,this.path,this.flags,this.mode,void 0]),this.flush())}}};var de=function(e){if(null===e||"object"!=typeof e)return e;if(e instanceof Object)var t={__proto__:De(e)};else t=Object.create(null);return Object.getOwnPropertyNames(e).forEach((function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(e,n))})),t},De=Object.getPrototypeOf||function(e){return e.__proto__};var pe,Ee,me=D.default,he=ae,ye=fe,Ce=de,Fe=F.default;function ge(e,t){Object.defineProperty(e,pe,{get:function(){return t}})}"function"==typeof Symbol&&"function"==typeof Symbol.for?(pe=Symbol.for("graceful-fs.queue"),Ee=Symbol.for("graceful-fs.previous")):(pe="___graceful-fs.queue",Ee="___graceful-fs.previous");var Ae=function(){};if(Fe.debuglog?Ae=Fe.debuglog("gfs4"):/\bgfs4\b/i.test(process.env.NODE_DEBUG||"")&&(Ae=function(){var e=Fe.format.apply(Fe,arguments);e="GFS4: "+e.split(/\n/).join("\nGFS4: "),console.error(e)}),!me[pe]){var ve=w[pe]||[];ge(me,ve),me.close=function(e){function t(t,n){return e.call(me,t,(function(e){e||_e(),"function"==typeof n&&n.apply(this,arguments)}))}return Object.defineProperty(t,Ee,{value:e}),t}(me.close),me.closeSync=function(e){function t(t){e.apply(me,arguments),_e()}return Object.defineProperty(t,Ee,{value:e}),t}(me.closeSync),/\bgfs4\b/i.test(process.env.NODE_DEBUG||"")&&process.on("exit",(function(){Ae(me[pe]),g.default.equal(me[pe].length,0)}))}w[pe]||ge(w,me[pe]);var Se,we=Oe(Ce(me));function Oe(e){he(e),e.gracefulify=Oe,e.createReadStream=function(t,n){return new e.ReadStream(t,n)},e.createWriteStream=function(t,n){return new e.WriteStream(t,n)};var t=e.readFile;e.readFile=function(e,n,r){"function"==typeof n&&(r=n,n=null);return function e(n,r,u,o){return t(n,r,(function(t){!t||"EMFILE"!==t.code&&"ENFILE"!==t.code?"function"==typeof u&&u.apply(this,arguments):be([e,[n,r,u],t,o||Date.now(),Date.now()])}))}(e,n,r)};var n=e.writeFile;e.writeFile=function(e,t,r,u){"function"==typeof r&&(u=r,r=null);return function e(t,r,u,o,i){return n(t,r,u,(function(n){!n||"EMFILE"!==n.code&&"ENFILE"!==n.code?"function"==typeof o&&o.apply(this,arguments):be([e,[t,r,u,o],n,i||Date.now(),Date.now()])}))}(e,t,r,u)};var r=e.appendFile;r&&(e.appendFile=function(e,t,n,u){"function"==typeof n&&(u=n,n=null);return function e(t,n,u,o,i){return r(t,n,u,(function(r){!r||"EMFILE"!==r.code&&"ENFILE"!==r.code?"function"==typeof o&&o.apply(this,arguments):be([e,[t,n,u,o],r,i||Date.now(),Date.now()])}))}(e,t,n,u)});var u=e.copyFile;u&&(e.copyFile=function(e,t,n,r){"function"==typeof n&&(r=n,n=0);return function e(t,n,r,o,i){return u(t,n,r,(function(u){!u||"EMFILE"!==u.code&&"ENFILE"!==u.code?"function"==typeof o&&o.apply(this,arguments):be([e,[t,n,r,o],u,i||Date.now(),Date.now()])}))}(e,t,n,r)});var o=e.readdir;e.readdir=function(e,t,n){"function"==typeof t&&(n=t,t=null);var r=i.test(process.version)?function(e,t,n,r){return o(e,u(e,t,n,r))}:function(e,t,n,r){return o(e,t,u(e,t,n,r))};return r(e,t,n);function u(e,t,n,u){return function(o,i){!o||"EMFILE"!==o.code&&"ENFILE"!==o.code?(i&&i.sort&&i.sort(),"function"==typeof n&&n.call(this,o,i)):be([r,[e,t,n],o,u||Date.now(),Date.now()])}}};var i=/^v[0-5]\./;if("v0.8"===process.version.substr(0,4)){var s=ye(e);d=s.ReadStream,D=s.WriteStream}var c=e.ReadStream;c&&(d.prototype=Object.create(c.prototype),d.prototype.open=function(){var e=this;E(e.path,e.flags,e.mode,(function(t,n){t?(e.autoClose&&e.destroy(),e.emit("error",t)):(e.fd=n,e.emit("open",n),e.read())}))});var a=e.WriteStream;a&&(D.prototype=Object.create(a.prototype),D.prototype.open=function(){var e=this;E(e.path,e.flags,e.mode,(function(t,n){t?(e.destroy(),e.emit("error",t)):(e.fd=n,e.emit("open",n))}))}),Object.defineProperty(e,"ReadStream",{get:function(){return d},set:function(e){d=e},enumerable:!0,configurable:!0}),Object.defineProperty(e,"WriteStream",{get:function(){return D},set:function(e){D=e},enumerable:!0,configurable:!0});var l=d;Object.defineProperty(e,"FileReadStream",{get:function(){return l},set:function(e){l=e},enumerable:!0,configurable:!0});var f=D;function d(e,t){return this instanceof d?(c.apply(this,arguments),this):d.apply(Object.create(d.prototype),arguments)}function D(e,t){return this instanceof D?(a.apply(this,arguments),this):D.apply(Object.create(D.prototype),arguments)}Object.defineProperty(e,"FileWriteStream",{get:function(){return f},set:function(e){f=e},enumerable:!0,configurable:!0});var p=e.open;function E(e,t,n,r){return"function"==typeof n&&(r=n,n=null),function e(t,n,r,u,o){return p(t,n,r,(function(i,s){!i||"EMFILE"!==i.code&&"ENFILE"!==i.code?"function"==typeof u&&u.apply(this,arguments):be([e,[t,n,r,u],i,o||Date.now(),Date.now()])}))}(e,t,n,r)}return e.open=E,e}function be(e){Ae("ENQUEUE",e[0].name,e[1]),me[pe].push(e),Be()}function _e(){for(var e=Date.now(),t=0;t2&&(me[pe][t][3]=e,me[pe][t][4]=e);Be()}function Be(){if(clearTimeout(Se),Se=void 0,0!==me[pe].length){var e=me[pe].shift(),t=e[0],n=e[1],r=e[2],u=e[3],o=e[4];if(void 0===u)Ae("RETRY",t.name,n),t.apply(null,n);else if(Date.now()-u>=6e4){Ae("TIMEOUT",t.name,n);var i=n.pop();"function"==typeof i&&i.call(null,r)}else{var s=Date.now()-o,c=Math.max(o-u,1);s>=Math.min(1.2*c,100)?(Ae("RETRY",t.name,n),t.apply(null,n.concat([u]))):me[pe].push(e)}void 0===Se&&(Se=setTimeout(Be,0))}}process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH&&!me.__patched&&(we=Oe(me),me.__patched=!0),function(e){const t=re.fromCallback,n=we,r=["access","appendFile","chmod","chown","close","copyFile","fchmod","fchown","fdatasync","fstat","fsync","ftruncate","futimes","lchmod","lchown","link","lstat","mkdir","mkdtemp","open","opendir","readdir","readFile","readlink","realpath","rename","rm","rmdir","stat","symlink","truncate","unlink","utimes","writeFile"].filter((e=>"function"==typeof n[e]));Object.assign(e,n),r.forEach((r=>{e[r]=t(n[r])})),e.realpath.native=t(n.realpath.native),e.exists=function(e,t){return"function"==typeof t?n.exists(e,t):new Promise((t=>n.exists(e,t)))},e.read=function(e,t,r,u,o,i){return"function"==typeof i?n.read(e,t,r,u,o,i):new Promise(((i,s)=>{n.read(e,t,r,u,o,((e,t,n)=>{if(e)return s(e);i({bytesRead:t,buffer:n})}))}))},e.write=function(e,t,...r){return"function"==typeof r[r.length-1]?n.write(e,t,...r):new Promise(((u,o)=>{n.write(e,t,...r,((e,t,n)=>{if(e)return o(e);u({bytesWritten:t,buffer:n})}))}))},"function"==typeof n.writev&&(e.writev=function(e,t,...r){return"function"==typeof r[r.length-1]?n.writev(e,t,...r):new Promise(((u,o)=>{n.writev(e,t,...r,((e,t,n)=>{if(e)return o(e);u({bytesWritten:t,buffers:n})}))}))})}(ne);var Pe={},ke={};const xe=p.default;ke.checkPath=function(e){if("win32"===process.platform){if(/[<>:"|?*]/.test(e.replace(xe.parse(e).root,""))){const t=new Error(`Path contains invalid characters: ${e}`);throw t.code="EINVAL",t}}};const Ne=ne,{checkPath:Ie}=ke,Te=e=>"number"==typeof e?e:{mode:511,...e}.mode;Pe.makeDir=async(e,t)=>(Ie(e),Ne.mkdir(e,{mode:Te(t),recursive:!0})),Pe.makeDirSync=(e,t)=>(Ie(e),Ne.mkdirSync(e,{mode:Te(t),recursive:!0}));const Re=re.fromPromise,{makeDir:Me,makeDirSync:Le}=Pe,je=Re(Me);var $e={mkdirs:je,mkdirsSync:Le,mkdirp:je,mkdirpSync:Le,ensureDir:je,ensureDirSync:Le};const He=re.fromPromise,Je=ne;var Ge={pathExists:He((function(e){return Je.access(e).then((()=>!0)).catch((()=>!1))})),pathExistsSync:Je.existsSync};const Ve=we;var Ue=function(e,t,n,r){Ve.open(e,"r+",((e,u)=>{if(e)return r(e);Ve.futimes(u,t,n,(e=>{Ve.close(u,(t=>{r&&r(e||t)}))}))}))},We=function(e,t,n){const r=Ve.openSync(e,"r+");return Ve.futimesSync(r,t,n),Ve.closeSync(r)};const ze=ne,Ke=p.default,qe=F.default;function Ye(e,t,n){const r=n.dereference?e=>ze.stat(e,{bigint:!0}):e=>ze.lstat(e,{bigint:!0});return Promise.all([r(e),r(t).catch((e=>{if("ENOENT"===e.code)return null;throw e}))]).then((([e,t])=>({srcStat:e,destStat:t})))}function Xe(e,t){return t.ino&&t.dev&&t.ino===e.ino&&t.dev===e.dev}function Ze(e,t){const n=Ke.resolve(e).split(Ke.sep).filter((e=>e)),r=Ke.resolve(t).split(Ke.sep).filter((e=>e));return n.reduce(((e,t,n)=>e&&r[n]===t),!0)}function Qe(e,t,n){return`Cannot ${n} '${e}' to a subdirectory of itself, '${t}'.`}var et={checkPaths:function(e,t,n,r,u){qe.callbackify(Ye)(e,t,r,((r,o)=>{if(r)return u(r);const{srcStat:i,destStat:s}=o;if(s){if(Xe(i,s)){const r=Ke.basename(e),o=Ke.basename(t);return"move"===n&&r!==o&&r.toLowerCase()===o.toLowerCase()?u(null,{srcStat:i,destStat:s,isChangingCase:!0}):u(new Error("Source and destination must not be the same."))}if(i.isDirectory()&&!s.isDirectory())return u(new Error(`Cannot overwrite non-directory '${t}' with directory '${e}'.`));if(!i.isDirectory()&&s.isDirectory())return u(new Error(`Cannot overwrite directory '${t}' with non-directory '${e}'.`))}return i.isDirectory()&&Ze(e,t)?u(new Error(Qe(e,t,n))):u(null,{srcStat:i,destStat:s})}))},checkPathsSync:function(e,t,n,r){const{srcStat:u,destStat:o}=function(e,t,n){let r;const u=n.dereference?e=>ze.statSync(e,{bigint:!0}):e=>ze.lstatSync(e,{bigint:!0}),o=u(e);try{r=u(t)}catch(e){if("ENOENT"===e.code)return{srcStat:o,destStat:null};throw e}return{srcStat:o,destStat:r}}(e,t,r);if(o){if(Xe(u,o)){const r=Ke.basename(e),i=Ke.basename(t);if("move"===n&&r!==i&&r.toLowerCase()===i.toLowerCase())return{srcStat:u,destStat:o,isChangingCase:!0};throw new Error("Source and destination must not be the same.")}if(u.isDirectory()&&!o.isDirectory())throw new Error(`Cannot overwrite non-directory '${t}' with directory '${e}'.`);if(!u.isDirectory()&&o.isDirectory())throw new Error(`Cannot overwrite directory '${t}' with non-directory '${e}'.`)}if(u.isDirectory()&&Ze(e,t))throw new Error(Qe(e,t,n));return{srcStat:u,destStat:o}},checkParentPaths:function e(t,n,r,u,o){const i=Ke.resolve(Ke.dirname(t)),s=Ke.resolve(Ke.dirname(r));if(s===i||s===Ke.parse(s).root)return o();ze.stat(s,{bigint:!0},((i,c)=>i?"ENOENT"===i.code?o():o(i):Xe(n,c)?o(new Error(Qe(t,r,u))):e(t,n,s,u,o)))},checkParentPathsSync:function e(t,n,r,u){const o=Ke.resolve(Ke.dirname(t)),i=Ke.resolve(Ke.dirname(r));if(i===o||i===Ke.parse(i).root)return;let s;try{s=ze.statSync(i,{bigint:!0})}catch(e){if("ENOENT"===e.code)return;throw e}if(Xe(n,s))throw new Error(Qe(t,r,u));return e(t,n,i,u)},isSrcSubdir:Ze,areIdentical:Xe};const tt=we,nt=p.default,rt=$e.mkdirs,ut=Ge.pathExists,ot=Ue,it=et;function st(e,t,n,r,u){const o=nt.dirname(n);ut(o,((i,s)=>i?u(i):s?at(e,t,n,r,u):void rt(o,(o=>o?u(o):at(e,t,n,r,u)))))}function ct(e,t,n,r,u,o){Promise.resolve(u.filter(n,r)).then((i=>i?e(t,n,r,u,o):o()),(e=>o(e)))}function at(e,t,n,r,u){(r.dereference?tt.stat:tt.lstat)(t,((o,i)=>o?u(o):i.isDirectory()?function(e,t,n,r,u,o){return t?Dt(n,r,u,o):function(e,t,n,r,u){tt.mkdir(n,(o=>{if(o)return u(o);Dt(t,n,r,(t=>t?u(t):dt(n,e,u)))}))}(e.mode,n,r,u,o)}(i,e,t,n,r,u):i.isFile()||i.isCharacterDevice()||i.isBlockDevice()?function(e,t,n,r,u,o){return t?function(e,t,n,r,u){if(!r.overwrite)return r.errorOnExist?u(new Error(`'${n}' already exists`)):u();tt.unlink(n,(o=>o?u(o):lt(e,t,n,r,u)))}(e,n,r,u,o):lt(e,n,r,u,o)}(i,e,t,n,r,u):i.isSymbolicLink()?function(e,t,n,r,u){tt.readlink(t,((t,o)=>t?u(t):(r.dereference&&(o=nt.resolve(process.cwd(),o)),e?void tt.readlink(n,((t,i)=>t?"EINVAL"===t.code||"UNKNOWN"===t.code?tt.symlink(o,n,u):u(t):(r.dereference&&(i=nt.resolve(process.cwd(),i)),it.isSrcSubdir(o,i)?u(new Error(`Cannot copy '${o}' to a subdirectory of itself, '${i}'.`)):e.isDirectory()&&it.isSrcSubdir(i,o)?u(new Error(`Cannot overwrite '${i}' with '${o}'.`)):function(e,t,n){tt.unlink(t,(r=>r?n(r):tt.symlink(e,t,n)))}(o,n,u)))):tt.symlink(o,n,u))))}(e,t,n,r,u):i.isSocket()?u(new Error(`Cannot copy a socket file: ${t}`)):i.isFIFO()?u(new Error(`Cannot copy a FIFO pipe: ${t}`)):u(new Error(`Unknown file: ${t}`))))}function lt(e,t,n,r,u){tt.copyFile(t,n,(o=>o?u(o):r.preserveTimestamps?function(e,t,n,r){if(function(e){return 0==(128&e)}(e))return function(e,t,n){return dt(e,128|t,n)}(n,e,(u=>u?r(u):ft(e,t,n,r)));return ft(e,t,n,r)}(e.mode,t,n,u):dt(n,e.mode,u)))}function ft(e,t,n,r){!function(e,t,n){tt.stat(e,((e,r)=>e?n(e):ot(t,r.atime,r.mtime,n)))}(t,n,(t=>t?r(t):dt(n,e,r)))}function dt(e,t,n){return tt.chmod(e,t,n)}function Dt(e,t,n,r){tt.readdir(e,((u,o)=>u?r(u):pt(o,e,t,n,r)))}function pt(e,t,n,r,u){const o=e.pop();return o?function(e,t,n,r,u,o){const i=nt.join(n,t),s=nt.join(r,t);it.checkPaths(i,s,"copy",u,((t,c)=>{if(t)return o(t);const{destStat:a}=c;!function(e,t,n,r,u){r.filter?ct(at,e,t,n,r,u):at(e,t,n,r,u)}(a,i,s,u,(t=>t?o(t):pt(e,n,r,u,o)))}))}(e,o,t,n,r,u):u()}var Et=function(e,t,n,r){"function"!=typeof n||r?"function"==typeof n&&(n={filter:n}):(r=n,n={}),r=r||function(){},(n=n||{}).clobber=!("clobber"in n)||!!n.clobber,n.overwrite="overwrite"in n?!!n.overwrite:n.clobber,n.preserveTimestamps&&"ia32"===process.arch&&console.warn("fs-extra: Using the preserveTimestamps option in 32-bit node is not recommended;\n\n see https://github.com/jprichardson/node-fs-extra/issues/269"),it.checkPaths(e,t,"copy",n,((u,o)=>{if(u)return r(u);const{srcStat:i,destStat:s}=o;it.checkParentPaths(e,i,t,"copy",(u=>u?r(u):n.filter?ct(st,s,e,t,n,r):st(s,e,t,n,r)))}))};const mt=we,ht=p.default,yt=$e.mkdirsSync,Ct=We,Ft=et;function gt(e,t,n,r){const u=(r.dereference?mt.statSync:mt.lstatSync)(t);if(u.isDirectory())return function(e,t,n,r,u){return t?St(n,r,u):function(e,t,n,r){return mt.mkdirSync(n),St(t,n,r),vt(n,e)}(e.mode,n,r,u)}(u,e,t,n,r);if(u.isFile()||u.isCharacterDevice()||u.isBlockDevice())return function(e,t,n,r,u){return t?function(e,t,n,r){if(r.overwrite)return mt.unlinkSync(n),At(e,t,n,r);if(r.errorOnExist)throw new Error(`'${n}' already exists`)}(e,n,r,u):At(e,n,r,u)}(u,e,t,n,r);if(u.isSymbolicLink())return function(e,t,n,r){let u=mt.readlinkSync(t);r.dereference&&(u=ht.resolve(process.cwd(),u));if(e){let e;try{e=mt.readlinkSync(n)}catch(e){if("EINVAL"===e.code||"UNKNOWN"===e.code)return mt.symlinkSync(u,n);throw e}if(r.dereference&&(e=ht.resolve(process.cwd(),e)),Ft.isSrcSubdir(u,e))throw new Error(`Cannot copy '${u}' to a subdirectory of itself, '${e}'.`);if(mt.statSync(n).isDirectory()&&Ft.isSrcSubdir(e,u))throw new Error(`Cannot overwrite '${e}' with '${u}'.`);return function(e,t){return mt.unlinkSync(t),mt.symlinkSync(e,t)}(u,n)}return mt.symlinkSync(u,n)}(e,t,n,r);if(u.isSocket())throw new Error(`Cannot copy a socket file: ${t}`);if(u.isFIFO())throw new Error(`Cannot copy a FIFO pipe: ${t}`);throw new Error(`Unknown file: ${t}`)}function At(e,t,n,r){return mt.copyFileSync(t,n),r.preserveTimestamps&&function(e,t,n){(function(e){return 0==(128&e)})(e)&&function(e,t){vt(e,128|t)}(n,e);(function(e,t){const n=mt.statSync(e);Ct(t,n.atime,n.mtime)})(t,n)}(e.mode,t,n),vt(n,e.mode)}function vt(e,t){return mt.chmodSync(e,t)}function St(e,t,n){mt.readdirSync(e).forEach((r=>function(e,t,n,r){const u=ht.join(t,e),o=ht.join(n,e),{destStat:i}=Ft.checkPathsSync(u,o,"copy",r);return function(e,t,n,r){if(!r.filter||r.filter(t,n))return gt(e,t,n,r)}(i,u,o,r)}(r,e,t,n)))}var wt=function(e,t,n){"function"==typeof n&&(n={filter:n}),(n=n||{}).clobber=!("clobber"in n)||!!n.clobber,n.overwrite="overwrite"in n?!!n.overwrite:n.clobber,n.preserveTimestamps&&"ia32"===process.arch&&console.warn("fs-extra: Using the preserveTimestamps option in 32-bit node is not recommended;\n\n see https://github.com/jprichardson/node-fs-extra/issues/269");const{srcStat:r,destStat:u}=Ft.checkPathsSync(e,t,"copy",n);return Ft.checkParentPathsSync(e,r,t,"copy"),function(e,t,n,r){if(r.filter&&!r.filter(t,n))return;const u=ht.dirname(n);mt.existsSync(u)||yt(u);return gt(e,t,n,r)}(u,e,t,n)};var Ot={copy:(0,re.fromCallback)(Et),copySync:wt};const bt=we,_t=p.default,Bt=g.default,Pt="win32"===process.platform;function kt(e){["unlink","chmod","stat","lstat","rmdir","readdir"].forEach((t=>{e[t]=e[t]||bt[t],e[t+="Sync"]=e[t]||bt[t]})),e.maxBusyTries=e.maxBusyTries||3}function xt(e,t,n){let r=0;"function"==typeof t&&(n=t,t={}),Bt(e,"rimraf: missing path"),Bt.strictEqual(typeof e,"string","rimraf: path should be a string"),Bt.strictEqual(typeof n,"function","rimraf: callback function required"),Bt(t,"rimraf: invalid options argument provided"),Bt.strictEqual(typeof t,"object","rimraf: options should be object"),kt(t),Nt(e,t,(function u(o){if(o){if(("EBUSY"===o.code||"ENOTEMPTY"===o.code||"EPERM"===o.code)&&rNt(e,t,u)),100*r)}"ENOENT"===o.code&&(o=null)}n(o)}))}function Nt(e,t,n){Bt(e),Bt(t),Bt("function"==typeof n),t.lstat(e,((r,u)=>r&&"ENOENT"===r.code?n(null):r&&"EPERM"===r.code&&Pt?It(e,t,r,n):u&&u.isDirectory()?Rt(e,t,r,n):void t.unlink(e,(r=>{if(r){if("ENOENT"===r.code)return n(null);if("EPERM"===r.code)return Pt?It(e,t,r,n):Rt(e,t,r,n);if("EISDIR"===r.code)return Rt(e,t,r,n)}return n(r)}))))}function It(e,t,n,r){Bt(e),Bt(t),Bt("function"==typeof r),t.chmod(e,438,(u=>{u?r("ENOENT"===u.code?null:n):t.stat(e,((u,o)=>{u?r("ENOENT"===u.code?null:n):o.isDirectory()?Rt(e,t,n,r):t.unlink(e,r)}))}))}function Tt(e,t,n){let r;Bt(e),Bt(t);try{t.chmodSync(e,438)}catch(e){if("ENOENT"===e.code)return;throw n}try{r=t.statSync(e)}catch(e){if("ENOENT"===e.code)return;throw n}r.isDirectory()?Lt(e,t,n):t.unlinkSync(e)}function Rt(e,t,n,r){Bt(e),Bt(t),Bt("function"==typeof r),t.rmdir(e,(u=>{!u||"ENOTEMPTY"!==u.code&&"EEXIST"!==u.code&&"EPERM"!==u.code?u&&"ENOTDIR"===u.code?r(n):r(u):function(e,t,n){Bt(e),Bt(t),Bt("function"==typeof n),t.readdir(e,((r,u)=>{if(r)return n(r);let o,i=u.length;if(0===i)return t.rmdir(e,n);u.forEach((r=>{xt(_t.join(e,r),t,(r=>{if(!o)return r?n(o=r):void(0==--i&&t.rmdir(e,n))}))}))}))}(e,t,r)}))}function Mt(e,t){let n;kt(t=t||{}),Bt(e,"rimraf: missing path"),Bt.strictEqual(typeof e,"string","rimraf: path should be a string"),Bt(t,"rimraf: missing options"),Bt.strictEqual(typeof t,"object","rimraf: options should be object");try{n=t.lstatSync(e)}catch(n){if("ENOENT"===n.code)return;"EPERM"===n.code&&Pt&&Tt(e,t,n)}try{n&&n.isDirectory()?Lt(e,t,null):t.unlinkSync(e)}catch(n){if("ENOENT"===n.code)return;if("EPERM"===n.code)return Pt?Tt(e,t,n):Lt(e,t,n);if("EISDIR"!==n.code)throw n;Lt(e,t,n)}}function Lt(e,t,n){Bt(e),Bt(t);try{t.rmdirSync(e)}catch(r){if("ENOTDIR"===r.code)throw n;if("ENOTEMPTY"===r.code||"EEXIST"===r.code||"EPERM"===r.code)!function(e,t){if(Bt(e),Bt(t),t.readdirSync(e).forEach((n=>Mt(_t.join(e,n),t))),!Pt){return t.rmdirSync(e,t)}{const n=Date.now();do{try{return t.rmdirSync(e,t)}catch{}}while(Date.now()-n<500)}}(e,t);else if("ENOENT"!==r.code)throw r}}var jt=xt;xt.sync=Mt;const $t=we,Ht=re.fromCallback,Jt=jt;var Gt={remove:Ht((function(e,t){if($t.rm)return $t.rm(e,{recursive:!0,force:!0},t);Jt(e,t)})),removeSync:function(e){if($t.rmSync)return $t.rmSync(e,{recursive:!0,force:!0});Jt.sync(e)}};const Vt=re.fromPromise,Ut=ne,Wt=p.default,zt=$e,Kt=Gt,qt=Vt((async function(e){let t;try{t=await Ut.readdir(e)}catch{return zt.mkdirs(e)}return Promise.all(t.map((t=>Kt.remove(Wt.join(e,t)))))}));function Yt(e){let t;try{t=Ut.readdirSync(e)}catch{return zt.mkdirsSync(e)}t.forEach((t=>{t=Wt.join(e,t),Kt.removeSync(t)}))}var Xt={emptyDirSync:Yt,emptydirSync:Yt,emptyDir:qt,emptydir:qt};const Zt=re.fromCallback,Qt=p.default,en=we,tn=$e;var nn={createFile:Zt((function(e,t){function n(){en.writeFile(e,"",(e=>{if(e)return t(e);t()}))}en.stat(e,((r,u)=>{if(!r&&u.isFile())return t();const o=Qt.dirname(e);en.stat(o,((e,r)=>{if(e)return"ENOENT"===e.code?tn.mkdirs(o,(e=>{if(e)return t(e);n()})):t(e);r.isDirectory()?n():en.readdir(o,(e=>{if(e)return t(e)}))}))}))})),createFileSync:function(e){let t;try{t=en.statSync(e)}catch{}if(t&&t.isFile())return;const n=Qt.dirname(e);try{en.statSync(n).isDirectory()||en.readdirSync(n)}catch(e){if(!e||"ENOENT"!==e.code)throw e;tn.mkdirsSync(n)}en.writeFileSync(e,"")}};const rn=re.fromCallback,un=p.default,on=we,sn=$e,cn=Ge.pathExists,{areIdentical:an}=et;var ln={createLink:rn((function(e,t,n){function r(e,t){on.link(e,t,(e=>{if(e)return n(e);n(null)}))}on.lstat(t,((u,o)=>{on.lstat(e,((u,i)=>{if(u)return u.message=u.message.replace("lstat","ensureLink"),n(u);if(o&&an(i,o))return n(null);const s=un.dirname(t);cn(s,((u,o)=>u?n(u):o?r(e,t):void sn.mkdirs(s,(u=>{if(u)return n(u);r(e,t)}))))}))}))})),createLinkSync:function(e,t){let n;try{n=on.lstatSync(t)}catch{}try{const t=on.lstatSync(e);if(n&&an(t,n))return}catch(e){throw e.message=e.message.replace("lstat","ensureLink"),e}const r=un.dirname(t);return on.existsSync(r)||sn.mkdirsSync(r),on.linkSync(e,t)}};const fn=p.default,dn=we,Dn=Ge.pathExists;var pn={symlinkPaths:function(e,t,n){if(fn.isAbsolute(e))return dn.lstat(e,(t=>t?(t.message=t.message.replace("lstat","ensureSymlink"),n(t)):n(null,{toCwd:e,toDst:e})));{const r=fn.dirname(t),u=fn.join(r,e);return Dn(u,((t,o)=>t?n(t):o?n(null,{toCwd:u,toDst:e}):dn.lstat(e,(t=>t?(t.message=t.message.replace("lstat","ensureSymlink"),n(t)):n(null,{toCwd:e,toDst:fn.relative(r,e)})))))}},symlinkPathsSync:function(e,t){let n;if(fn.isAbsolute(e)){if(n=dn.existsSync(e),!n)throw new Error("absolute srcpath does not exist");return{toCwd:e,toDst:e}}{const r=fn.dirname(t),u=fn.join(r,e);if(n=dn.existsSync(u),n)return{toCwd:u,toDst:e};if(n=dn.existsSync(e),!n)throw new Error("relative srcpath does not exist");return{toCwd:e,toDst:fn.relative(r,e)}}}};const En=we;var mn={symlinkType:function(e,t,n){if(n="function"==typeof t?t:n,t="function"!=typeof t&&t)return n(null,t);En.lstat(e,((e,r)=>{if(e)return n(null,"file");t=r&&r.isDirectory()?"dir":"file",n(null,t)}))},symlinkTypeSync:function(e,t){let n;if(t)return t;try{n=En.lstatSync(e)}catch{return"file"}return n&&n.isDirectory()?"dir":"file"}};const hn=re.fromCallback,yn=p.default,Cn=ne,Fn=$e.mkdirs,gn=$e.mkdirsSync,An=pn.symlinkPaths,vn=pn.symlinkPathsSync,Sn=mn.symlinkType,wn=mn.symlinkTypeSync,On=Ge.pathExists,{areIdentical:bn}=et;function _n(e,t,n,r){An(e,t,((u,o)=>{if(u)return r(u);e=o.toDst,Sn(o.toCwd,n,((n,u)=>{if(n)return r(n);const o=yn.dirname(t);On(o,((n,i)=>n?r(n):i?Cn.symlink(e,t,u,r):void Fn(o,(n=>{if(n)return r(n);Cn.symlink(e,t,u,r)}))))}))}))}var Bn={createSymlink:hn((function(e,t,n,r){r="function"==typeof n?n:r,n="function"!=typeof n&&n,Cn.lstat(t,((u,o)=>{!u&&o.isSymbolicLink()?Promise.all([Cn.stat(e),Cn.stat(t)]).then((([u,o])=>{if(bn(u,o))return r(null);_n(e,t,n,r)})):_n(e,t,n,r)}))})),createSymlinkSync:function(e,t,n){let r;try{r=Cn.lstatSync(t)}catch{}if(r&&r.isSymbolicLink()){const n=Cn.statSync(e),r=Cn.statSync(t);if(bn(n,r))return}const u=vn(e,t);e=u.toDst,n=wn(u.toCwd,n);const o=yn.dirname(t);return Cn.existsSync(o)||gn(o),Cn.symlinkSync(e,t,n)}};const{createFile:Pn,createFileSync:kn}=nn,{createLink:xn,createLinkSync:Nn}=ln,{createSymlink:In,createSymlinkSync:Tn}=Bn;var Rn={createFile:Pn,createFileSync:kn,ensureFile:Pn,ensureFileSync:kn,createLink:xn,createLinkSync:Nn,ensureLink:xn,ensureLinkSync:Nn,createSymlink:In,createSymlinkSync:Tn,ensureSymlink:In,ensureSymlinkSync:Tn};var Mn={stringify:function(e,{EOL:t="\n",finalEOL:n=!0,replacer:r=null,spaces:u}={}){const o=n?t:"";return JSON.stringify(e,r,u).replace(/\n/g,t)+o},stripBom:function(e){return Buffer.isBuffer(e)&&(e=e.toString("utf8")),e.replace(/^\uFEFF/,"")}};let Ln;try{Ln=we}catch(e){Ln=D.default}const jn=re,{stringify:$n,stripBom:Hn}=Mn;const Jn=jn.fromPromise((async function(e,t={}){"string"==typeof t&&(t={encoding:t});const n=t.fs||Ln,r=!("throws"in t)||t.throws;let u,o=await jn.fromCallback(n.readFile)(e,t);o=Hn(o);try{u=JSON.parse(o,t?t.reviver:null)}catch(t){if(r)throw t.message=`${e}: ${t.message}`,t;return null}return u}));const Gn=jn.fromPromise((async function(e,t,n={}){const r=n.fs||Ln,u=$n(t,n);await jn.fromCallback(r.writeFile)(e,u,n)}));const Vn={readFile:Jn,readFileSync:function(e,t={}){"string"==typeof t&&(t={encoding:t});const n=t.fs||Ln,r=!("throws"in t)||t.throws;try{let r=n.readFileSync(e,t);return r=Hn(r),JSON.parse(r,t.reviver)}catch(t){if(r)throw t.message=`${e}: ${t.message}`,t;return null}},writeFile:Gn,writeFileSync:function(e,t,n={}){const r=n.fs||Ln,u=$n(t,n);return r.writeFileSync(e,u,n)}};var Un={readJson:Vn.readFile,readJsonSync:Vn.readFileSync,writeJson:Vn.writeFile,writeJsonSync:Vn.writeFileSync};const Wn=re.fromCallback,zn=we,Kn=p.default,qn=$e,Yn=Ge.pathExists;var Xn={outputFile:Wn((function(e,t,n,r){"function"==typeof n&&(r=n,n="utf8");const u=Kn.dirname(e);Yn(u,((o,i)=>o?r(o):i?zn.writeFile(e,t,n,r):void qn.mkdirs(u,(u=>{if(u)return r(u);zn.writeFile(e,t,n,r)}))))})),outputFileSync:function(e,...t){const n=Kn.dirname(e);if(zn.existsSync(n))return zn.writeFileSync(e,...t);qn.mkdirsSync(n),zn.writeFileSync(e,...t)}};const{stringify:Zn}=Mn,{outputFile:Qn}=Xn;var er=async function(e,t,n={}){const r=Zn(t,n);await Qn(e,r,n)};const{stringify:tr}=Mn,{outputFileSync:nr}=Xn;var rr=function(e,t,n){const r=tr(t,n);nr(e,r,n)};const ur=re.fromPromise,or=Un;or.outputJson=ur(er),or.outputJsonSync=rr,or.outputJSON=or.outputJson,or.outputJSONSync=or.outputJsonSync,or.writeJSON=or.writeJson,or.writeJSONSync=or.writeJsonSync,or.readJSON=or.readJson,or.readJSONSync=or.readJsonSync;var ir=or;const sr=we,cr=p.default,ar=Ot.copy,lr=Gt.remove,fr=$e.mkdirp,dr=Ge.pathExists,Dr=et;function pr(e,t,n,r,u){return r?Er(e,t,n,u):n?lr(t,(r=>r?u(r):Er(e,t,n,u))):void dr(t,((r,o)=>r?u(r):o?u(new Error("dest already exists.")):Er(e,t,n,u)))}function Er(e,t,n,r){sr.rename(e,t,(u=>u?"EXDEV"!==u.code?r(u):function(e,t,n,r){const u={overwrite:n,errorOnExist:!0};ar(e,t,u,(t=>t?r(t):lr(e,r)))}(e,t,n,r):r()))}var mr=function(e,t,n,r){"function"==typeof n&&(r=n,n={});const u=n.overwrite||n.clobber||!1;Dr.checkPaths(e,t,"move",n,((n,o)=>{if(n)return r(n);const{srcStat:i,isChangingCase:s=!1}=o;Dr.checkParentPaths(e,i,t,"move",(n=>n?r(n):function(e){const t=cr.dirname(e);return cr.parse(t).root===t}(t)?pr(e,t,u,s,r):void fr(cr.dirname(t),(n=>n?r(n):pr(e,t,u,s,r)))))}))};const hr=we,yr=p.default,Cr=Ot.copySync,Fr=Gt.removeSync,gr=$e.mkdirpSync,Ar=et;function vr(e,t,n){try{hr.renameSync(e,t)}catch(r){if("EXDEV"!==r.code)throw r;return function(e,t,n){const r={overwrite:n,errorOnExist:!0};return Cr(e,t,r),Fr(e)}(e,t,n)}}var Sr=function(e,t,n){const r=(n=n||{}).overwrite||n.clobber||!1,{srcStat:u,isChangingCase:o=!1}=Ar.checkPathsSync(e,t,"move",n);return Ar.checkParentPathsSync(e,u,t,"move"),function(e){const t=yr.dirname(e);return yr.parse(t).root===t}(t)||gr(yr.dirname(t)),function(e,t,n,r){if(r)return vr(e,t,n);if(n)return Fr(t),vr(e,t,n);if(hr.existsSync(t))throw new Error("dest already exists.");return vr(e,t,n)}(e,t,r,o)};var wr,Or,br,_r,Br,Pr={move:(0,re.fromCallback)(mr),moveSync:Sr},kr={...ne,...Ot,...Xt,...Rn,...ir,...$e,...Pr,...Xn,...Ge,...Gt},xr={},Nr={exports:{}},Ir={exports:{}};function Tr(){if(Or)return wr;Or=1;var e=1e3,t=60*e,n=60*t,r=24*n,u=7*r,o=365.25*r;function i(e,t,n,r){var u=t>=1.5*n;return Math.round(e/n)+" "+r+(u?"s":"")}return wr=function(s,c){c=c||{};var a=typeof s;if("string"===a&&s.length>0)return function(i){if((i=String(i)).length>100)return;var s=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(i);if(!s)return;var c=parseFloat(s[1]);switch((s[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return c*o;case"weeks":case"week":case"w":return c*u;case"days":case"day":case"d":return c*r;case"hours":case"hour":case"hrs":case"hr":case"h":return c*n;case"minutes":case"minute":case"mins":case"min":case"m":return c*t;case"seconds":case"second":case"secs":case"sec":case"s":return c*e;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return c;default:return}}(s);if("number"===a&&isFinite(s))return c.long?function(u){var o=Math.abs(u);if(o>=r)return i(u,o,r,"day");if(o>=n)return i(u,o,n,"hour");if(o>=t)return i(u,o,t,"minute");if(o>=e)return i(u,o,e,"second");return u+" ms"}(s):function(u){var o=Math.abs(u);if(o>=r)return Math.round(u/r)+"d";if(o>=n)return Math.round(u/n)+"h";if(o>=t)return Math.round(u/t)+"m";if(o>=e)return Math.round(u/e)+"s";return u+"ms"}(s);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(s))}}function Rr(){if(_r)return br;return _r=1,br=function(e){function t(e){let r,u,o,i=null;function s(...e){if(!s.enabled)return;const n=s,u=Number(new Date),o=u-(r||u);n.diff=o,n.prev=r,n.curr=u,r=u,e[0]=t.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let i=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,((r,u)=>{if("%%"===r)return"%";i++;const o=t.formatters[u];if("function"==typeof o){const t=e[i];r=o.call(n,t),e.splice(i,1),i--}return r})),t.formatArgs.call(n,e);(n.log||t.log).apply(n,e)}return s.namespace=e,s.useColors=t.useColors(),s.color=t.selectColor(e),s.extend=n,s.destroy=t.destroy,Object.defineProperty(s,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==i?i:(u!==t.namespaces&&(u=t.namespaces,o=t.enabled(e)),o),set:e=>{i=e}}),"function"==typeof t.init&&t.init(s),s}function n(e,n){const r=t(this.namespace+(void 0===n?":":n)+e);return r.log=this.log,r}function r(e){return e.toString().substring(2,e.toString().length-2).replace(/\.\*\?$/,"*")}return t.debug=t,t.default=t,t.coerce=function(e){if(e instanceof Error)return e.stack||e.message;return e},t.disable=function(){const e=[...t.names.map(r),...t.skips.map(r).map((e=>"-"+e))].join(",");return t.enable(""),e},t.enable=function(e){let n;t.save(e),t.namespaces=e,t.names=[],t.skips=[];const r=("string"==typeof e?e:"").split(/[\s,]+/),u=r.length;for(n=0;n{t[n]=e[n]})),t.names=[],t.skips=[],t.formatters={},t.selectColor=function(e){let n=0;for(let t=0;t{const n=e.startsWith("-")?"":1===e.length?"-":"--",r=t.indexOf(n+e),u=t.indexOf("--");return-1!==r&&(-1===u||r{}),"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."),t.colors=[6,2,3,4,5,1];try{const e=function(){if($r)return jr;$r=1;const e=E.default,t=A.default,n=Vr(),{env:r}=process;let u;function o(e){return 0!==e&&{level:e,hasBasic:!0,has256:e>=2,has16m:e>=3}}function i(t,o){if(0===u)return 0;if(n("color=16m")||n("color=full")||n("color=truecolor"))return 3;if(n("color=256"))return 2;if(t&&!o&&void 0===u)return 0;const i=u||0;if("dumb"===r.TERM)return i;if("win32"===process.platform){const t=e.release().split(".");return Number(t[0])>=10&&Number(t[2])>=10586?Number(t[2])>=14931?3:2:1}if("CI"in r)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI","GITHUB_ACTIONS","BUILDKITE"].some((e=>e in r))||"codeship"===r.CI_NAME?1:i;if("TEAMCITY_VERSION"in r)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(r.TEAMCITY_VERSION)?1:0;if("truecolor"===r.COLORTERM)return 3;if("TERM_PROGRAM"in r){const e=parseInt((r.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(r.TERM_PROGRAM){case"iTerm.app":return e>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(r.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(r.TERM)||"COLORTERM"in r?1:i}return n("no-color")||n("no-colors")||n("color=false")||n("color=never")?u=0:(n("color")||n("colors")||n("color=true")||n("color=always"))&&(u=1),"FORCE_COLOR"in r&&(u="true"===r.FORCE_COLOR?1:"false"===r.FORCE_COLOR?0:0===r.FORCE_COLOR.length?1:Math.min(parseInt(r.FORCE_COLOR,10),3)),jr={supportsColor:function(e){return o(i(e,e&&e.isTTY))},stdout:o(i(!0,t.isatty(1))),stderr:o(i(!0,t.isatty(2)))}}();e&&(e.stderr||e).level>=2&&(t.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221])}catch(e){}t.inspectOpts=Object.keys(process.env).filter((e=>/^debug_/i.test(e))).reduce(((e,t)=>{const n=t.substring(6).toLowerCase().replace(/_([a-z])/g,((e,t)=>t.toUpperCase()));let r=process.env[t];return r=!!/^(yes|on|true|enabled)$/i.test(r)||!/^(no|off|false|disabled)$/i.test(r)&&("null"===r?null:Number(r)),e[n]=r,e}),{}),e.exports=Rr()(t);const{formatters:u}=e.exports;u.o=function(e){return this.inspectOpts.colors=this.useColors,r.inspect(e,this.inspectOpts).split("\n").map((e=>e.trim())).join(" ")},u.O=function(e){return this.inspectOpts.colors=this.useColors,r.inspect(e,this.inspectOpts)}}(Gr,Gr.exports)),Gr.exports}Jr=Nr,"undefined"==typeof process||"renderer"===process.type||!0===process.browser||process.__nwjs?Jr.exports=(Br||(Br=1,function(e,t){t.formatArgs=function(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const n="color: "+this.color;t.splice(1,0,n,"color: inherit");let r=0,u=0;t[0].replace(/%[a-zA-Z%]/g,(e=>{"%%"!==e&&(r++,"%c"===e&&(u=r))})),t.splice(u,0,n)},t.save=function(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch(e){}},t.load=function(){let e;try{e=t.storage.getItem("debug")}catch(e){}return!e&&"undefined"!=typeof process&&"env"in process&&(e=process.env.DEBUG),e},t.useColors=function(){return!("undefined"==typeof window||!window.process||"renderer"!==window.process.type&&!window.process.__nwjs)||("undefined"==typeof navigator||!navigator.userAgent||!navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))&&("undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))},t.storage=function(){try{return localStorage}catch(e){}}(),t.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],t.log=console.debug||console.log||(()=>{}),e.exports=Rr()(t);const{formatters:n}=e.exports;n.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}}(Ir,Ir.exports)),Ir.exports):Jr.exports=Ur();var Wr=function(e){return(e=e||{}).circles?function(e){var t=[],n=[];return e.proto?function e(u){if("object"!=typeof u||null===u)return u;if(u instanceof Date)return new Date(u);if(Array.isArray(u))return r(u,e);if(u instanceof Map)return new Map(r(Array.from(u),e));if(u instanceof Set)return new Set(r(Array.from(u),e));var o={};for(var i in t.push(u),n.push(o),u){var s=u[i];if("object"!=typeof s||null===s)o[i]=s;else if(s instanceof Date)o[i]=new Date(s);else if(s instanceof Map)o[i]=new Map(r(Array.from(s),e));else if(s instanceof Set)o[i]=new Set(r(Array.from(s),e));else if(ArrayBuffer.isView(s))o[i]=zr(s);else{var c=t.indexOf(s);o[i]=-1!==c?n[c]:e(s)}}return t.pop(),n.pop(),o}:function e(u){if("object"!=typeof u||null===u)return u;if(u instanceof Date)return new Date(u);if(Array.isArray(u))return r(u,e);if(u instanceof Map)return new Map(r(Array.from(u),e));if(u instanceof Set)return new Set(r(Array.from(u),e));var o={};for(var i in t.push(u),n.push(o),u)if(!1!==Object.hasOwnProperty.call(u,i)){var s=u[i];if("object"!=typeof s||null===s)o[i]=s;else if(s instanceof Date)o[i]=new Date(s);else if(s instanceof Map)o[i]=new Map(r(Array.from(s),e));else if(s instanceof Set)o[i]=new Set(r(Array.from(s),e));else if(ArrayBuffer.isView(s))o[i]=zr(s);else{var c=t.indexOf(s);o[i]=-1!==c?n[c]:e(s)}}return t.pop(),n.pop(),o};function r(e,r){for(var u=Object.keys(e),o=new Array(u.length),i=0;i!e,Qr=e=>e&&"object"==typeof e&&!Array.isArray(e),eu=(e,t,n)=>{(Array.isArray(t)?t:[t]).forEach((t=>{if(t)throw new Error(`Problem with log4js configuration: (${Kr.inspect(e,{depth:5})}) - ${n}`)}))};var tu={configure:e=>{qr("New configuration to be validated: ",e),eu(e,Zr(Qr(e)),"must be an object."),qr(`Calling pre-processing listeners (${Yr.length})`),Yr.forEach((t=>t(e))),qr("Configuration pre-processing finished."),qr(`Calling configuration listeners (${Xr.length})`),Xr.forEach((t=>t(e))),qr("Configuration finished.")},addListener:e=>{Xr.push(e),qr(`Added listener, now ${Xr.length} listeners`)},addPreProcessingListener:e=>{Yr.push(e),qr(`Added pre-processing listener, now ${Yr.length} listeners`)},throwExceptionIf:eu,anObject:Qr,anInteger:e=>e&&"number"==typeof e&&Number.isInteger(e),validIdentifier:e=>/^[A-Za-z][A-Za-z0-9_]*$/g.test(e),not:Zr},nu={exports:{}};!function(e){function t(e,t){for(var n=e.toString();n.length-1?s:c,l=n(u.getHours()),f=n(u.getMinutes()),d=n(u.getSeconds()),D=t(u.getMilliseconds(),3),p=function(e){var t=Math.abs(e),n=String(Math.floor(t/60)),r=String(t%60);return n=("0"+n).slice(-2),r=("0"+r).slice(-2),0===e?"Z":(e<0?"+":"-")+n+":"+r}(u.getTimezoneOffset());return r.replace(/dd/g,o).replace(/MM/g,i).replace(/y{1,4}/g,a).replace(/hh/g,l).replace(/mm/g,f).replace(/ss/g,d).replace(/SSS/g,D).replace(/O/g,p)}function u(e,t,n,r){e["set"+(r?"":"UTC")+t](n)}e.exports=r,e.exports.asString=r,e.exports.parse=function(t,n,r){if(!t)throw new Error("pattern must be supplied");return function(t,n,r){var o=t.indexOf("O")<0,i=!1,s=[{pattern:/y{1,4}/,regexp:"\\d{1,4}",fn:function(e,t){u(e,"FullYear",t,o)}},{pattern:/MM/,regexp:"\\d{1,2}",fn:function(e,t){u(e,"Month",t-1,o),e.getMonth()!==t-1&&(i=!0)}},{pattern:/dd/,regexp:"\\d{1,2}",fn:function(e,t){i&&u(e,"Month",e.getMonth()-1,o),u(e,"Date",t,o)}},{pattern:/hh/,regexp:"\\d{1,2}",fn:function(e,t){u(e,"Hours",t,o)}},{pattern:/mm/,regexp:"\\d\\d",fn:function(e,t){u(e,"Minutes",t,o)}},{pattern:/ss/,regexp:"\\d\\d",fn:function(e,t){u(e,"Seconds",t,o)}},{pattern:/SSS/,regexp:"\\d\\d\\d",fn:function(e,t){u(e,"Milliseconds",t,o)}},{pattern:/O/,regexp:"[+-]\\d{1,2}:?\\d{2}?|Z",fn:function(e,t){t="Z"===t?0:t.replace(":","");var n=Math.abs(t),r=(t>0?-1:1)*(n%100+60*Math.floor(n/100));e.setUTCMinutes(e.getUTCMinutes()+r)}}],c=s.reduce((function(e,t){return t.pattern.test(e.regexp)?(t.index=e.regexp.match(t.pattern).index,e.regexp=e.regexp.replace(t.pattern,"("+t.regexp+")")):t.index=-1,e}),{regexp:t,index:[]}),a=s.filter((function(e){return e.index>-1}));a.sort((function(e,t){return e.index-t.index}));var l=new RegExp(c.regexp).exec(n);if(l){var f=r||e.exports.now();return a.forEach((function(e,t){e.fn(f,l[t+1])})),f}throw new Error("String '"+n+"' could not be parsed as '"+t+"'")}(t,n,r)},e.exports.now=function(){return new Date},e.exports.ISO8601_FORMAT="yyyy-MM-ddThh:mm:ss.SSS",e.exports.ISO8601_WITH_TZ_OFFSET_FORMAT="yyyy-MM-ddThh:mm:ss.SSSO",e.exports.DATETIME_FORMAT="dd MM yyyy hh:mm:ss.SSS",e.exports.ABSOLUTETIME_FORMAT="hh:mm:ss.SSS"}(nu);const ru=nu.exports,uu=E.default,ou=F.default,iu=p.default,su={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[90,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[91,39],yellow:[33,39]};function cu(e){return e?`[${su[e][0]}m`:""}function au(e){return e?`[${su[e][1]}m`:""}function lu(e,t){return n=ou.format("[%s] [%s] %s - ",ru.asString(e.startTime),e.level.toString(),e.categoryName),cu(r=t)+n+au(r);var n,r}function fu(e){return lu(e)+ou.format(...e.data)}function du(e){return lu(e,e.level.colour)+ou.format(...e.data)}function Du(e){return ou.format(...e.data)}function pu(e){return e.data[0]}function Eu(e,t){const n=/%(-?[0-9]+)?(\.?-?[0-9]+)?([[\]cdhmnprzxXyflos%])(\{([^}]+)\})?|([^%]+)/;function r(e){return e&&e.pid?e.pid.toString():process.pid.toString()}e=e||"%r %p %c - %m%n";const u={c:function(e,t){let n=e.categoryName;if(t){const e=parseInt(t,10),r=n.split(".");ee&&(n=r.slice(-e).join(iu.sep))}return n},l:function(e){return e.lineNumber?`${e.lineNumber}`:""},o:function(e){return e.columnNumber?`${e.columnNumber}`:""},s:function(e){return e.callStack||""}};function o(e,t,n){return u[e](t,n)}function i(e,t,n){let r=e;return r=function(e,t){let n;return e?(n=parseInt(e.substr(1),10),n>0?t.slice(0,n):t.slice(n)):t}(t,r),r=function(e,t){let n;if(e)if("-"===e.charAt(0))for(n=parseInt(e.substr(1),10);t.lengthDu,basic:()=>fu,colored:()=>du,coloured:()=>du,pattern:e=>Eu(e&&e.pattern,e&&e.tokens),dummy:()=>pu};var hu={basicLayout:fu,messagePassThroughLayout:Du,patternLayout:Eu,colouredLayout:du,coloredLayout:du,dummyLayout:pu,addLayout(e,t){mu[e]=t},layout:(e,t)=>mu[e]&&mu[e](t)};const yu=tu,Cu=["white","grey","black","blue","cyan","green","magenta","red","yellow"];class Fu{constructor(e,t,n){this.level=e,this.levelStr=t,this.colour=n}toString(){return this.levelStr}static getLevel(e,t){return e?e instanceof Fu?e:(e instanceof Object&&e.levelStr&&(e=e.levelStr),Fu[e.toString().toUpperCase()]||t):t}static addLevels(e){if(e){Object.keys(e).forEach((t=>{const n=t.toUpperCase();Fu[n]=new Fu(e[t].value,n,e[t].colour);const r=Fu.levels.findIndex((e=>e.levelStr===n));r>-1?Fu.levels[r]=Fu[n]:Fu.levels.push(Fu[n])})),Fu.levels.sort(((e,t)=>e.level-t.level))}}isLessThanOrEqualTo(e){return"string"==typeof e&&(e=Fu.getLevel(e)),this.level<=e.level}isGreaterThanOrEqualTo(e){return"string"==typeof e&&(e=Fu.getLevel(e)),this.level>=e.level}isEqualTo(e){return"string"==typeof e&&(e=Fu.getLevel(e)),this.level===e.level}}Fu.levels=[],Fu.addLevels({ALL:{value:Number.MIN_VALUE,colour:"grey"},TRACE:{value:5e3,colour:"blue"},DEBUG:{value:1e4,colour:"cyan"},INFO:{value:2e4,colour:"green"},WARN:{value:3e4,colour:"yellow"},ERROR:{value:4e4,colour:"red"},FATAL:{value:5e4,colour:"magenta"},MARK:{value:9007199254740992,colour:"grey"},OFF:{value:Number.MAX_VALUE,colour:"grey"}}),yu.addListener((e=>{const t=e.levels;if(t){yu.throwExceptionIf(e,yu.not(yu.anObject(t)),"levels must be an object");Object.keys(t).forEach((n=>{yu.throwExceptionIf(e,yu.not(yu.validIdentifier(n)),`level name "${n}" is not a valid identifier (must start with a letter, only contain A-Z,a-z,0-9,_)`),yu.throwExceptionIf(e,yu.not(yu.anObject(t[n])),`level "${n}" must be an object`),yu.throwExceptionIf(e,yu.not(t[n].value),`level "${n}" must have a 'value' property`),yu.throwExceptionIf(e,yu.not(yu.anInteger(t[n].value)),`level "${n}".value must have an integer value`),yu.throwExceptionIf(e,yu.not(t[n].colour),`level "${n}" must have a 'colour' property`),yu.throwExceptionIf(e,yu.not(Cu.indexOf(t[n].colour)>-1),`level "${n}".colour must be one of ${Cu.join(", ")}`)}))}})),yu.addListener((e=>{Fu.addLevels(e.levels)}));var gu=Fu,Au={exports:{}},vu={};/*! (c) 2020 Andrea Giammarchi */ +const{parse:Su,stringify:wu}=JSON,{keys:Ou}=Object,bu=String,_u="string",Bu={},Pu="object",ku=(e,t)=>t,xu=e=>e instanceof bu?bu(e):e,Nu=(e,t)=>typeof t===_u?new bu(t):t,Iu=(e,t,n,r)=>{const u=[];for(let o=Ou(n),{length:i}=o,s=0;s{const r=bu(t.push(n)-1);return e.set(n,r),r},Ru=(e,t)=>{const n=Su(e,Nu).map(xu),r=n[0],u=t||ku,o=typeof r===Pu&&r?Iu(n,new Set,r,u):r;return u.call({"":o},"",o)};vu.parse=Ru;const Mu=(e,t,n)=>{const r=t&&typeof t===Pu?(e,n)=>""===e||-1Su(Mu(e));vu.fromJSON=e=>Ru(wu(e));const Lu=vu,ju=gu;class $u{constructor(e,t,n,r,u){this.startTime=new Date,this.categoryName=e,this.data=n,this.level=t,this.context=Object.assign({},r),this.pid=process.pid,u&&(this.functionName=u.functionName,this.fileName=u.fileName,this.lineNumber=u.lineNumber,this.columnNumber=u.columnNumber,this.callStack=u.callStack)}serialise(){const e=this.data.map((e=>(e&&e.message&&e.stack&&(e=Object.assign({message:e.message,stack:e.stack},e)),e)));return this.data=e,Lu.stringify(this)}static deserialise(e){let t;try{const n=Lu.parse(e);n.data=n.data.map((e=>{if(e&&e.message&&e.stack){const t=new Error(e);Object.keys(e).forEach((n=>{t[n]=e[n]})),e=t}return e})),t=new $u(n.categoryName,ju.getLevel(n.level.levelStr),n.data,n.context),t.startTime=new Date(n.startTime),t.pid=n.pid,t.cluster=n.cluster}catch(n){t=new $u("log4js",ju.ERROR,["Unable to parse log:",e,"because: ",n])}return t}}var Hu=$u;const Ju=Nr.exports("log4js:clustering"),Gu=Hu,Vu=tu;let Uu=!1,Wu=null;try{Wu=require("cluster")}catch(e){Ju("cluster module not present"),Uu=!0}const zu=[];let Ku=!1,qu="NODE_APP_INSTANCE";const Yu=()=>Ku&&"0"===process.env[qu],Xu=()=>Uu||Wu.isMaster||Yu(),Zu=e=>{zu.forEach((t=>t(e)))},Qu=(e,t)=>{if(Ju("cluster message received from worker ",e,": ",t),e.topic&&e.data&&(t=e,e=void 0),t&&t.topic&&"log4js:message"===t.topic){Ju("received message: ",t.data);const e=Gu.deserialise(t.data);Zu(e)}};Uu||Vu.addListener((e=>{zu.length=0,({pm2:Ku,disableClustering:Uu,pm2InstanceVar:qu="NODE_APP_INSTANCE"}=e),Ju(`clustering disabled ? ${Uu}`),Ju(`cluster.isMaster ? ${Wu&&Wu.isMaster}`),Ju(`pm2 enabled ? ${Ku}`),Ju(`pm2InstanceVar = ${qu}`),Ju(`process.env[${qu}] = ${process.env[qu]}`),Ku&&process.removeListener("message",Qu),Wu&&Wu.removeListener&&Wu.removeListener("message",Qu),Uu||e.disableClustering?Ju("Not listening for cluster messages, because clustering disabled."):Yu()?(Ju("listening for PM2 broadcast messages"),process.on("message",Qu)):Wu.isMaster?(Ju("listening for cluster messages"),Wu.on("message",Qu)):Ju("not listening for messages, because we are not a master process")}));var eo={onlyOnMaster:(e,t)=>Xu()?e():t,isMaster:Xu,send:e=>{Xu()?Zu(e):(Ku||(e.cluster={workerId:Wu.worker.id,worker:process.pid}),process.send({topic:"log4js:message",data:e.serialise()}))},onMessage:e=>{zu.push(e)}},to={};function no(e){if("number"==typeof e&&Number.isInteger(e))return e;const t={K:1024,M:1048576,G:1073741824},n=Object.keys(t),r=e.substr(e.length-1).toLocaleUpperCase(),u=e.substring(0,e.length-1).trim();if(n.indexOf(r)<0||!Number.isInteger(Number(u)))throw Error(`maxLogSize: "${e}" is invalid`);return u*t[r]}function ro(e){return function(e,t){const n=Object.assign({},t);return Object.keys(e).forEach((r=>{n[r]&&(n[r]=e[r](t[r]))})),n}({maxLogSize:no},e)}const uo={file:ro,fileSync:ro};to.modifyConfig=e=>uo[e.type]?uo[e.type](e):e;var oo={};const io=console.log.bind(console);oo.configure=function(e,t){let n=t.colouredLayout;return e.layout&&(n=t.layout(e.layout.type,e.layout)),function(e,t){return n=>{io(e(n,t))}}(n,e.timezoneOffset)};var so={};so.configure=function(e,t){let n=t.colouredLayout;return e.layout&&(n=t.layout(e.layout.type,e.layout)),function(e,t){return n=>{process.stdout.write(`${e(n,t)}\n`)}}(n,e.timezoneOffset)};var co={};co.configure=function(e,t){let n=t.colouredLayout;return e.layout&&(n=t.layout(e.layout.type,e.layout)),function(e,t){return n=>{process.stderr.write(`${e(n,t)}\n`)}}(n,e.timezoneOffset)};var ao={};ao.configure=function(e,t,n,r){const u=n(e.appender);return function(e,t,n,r){const u=r.getLevel(e),o=r.getLevel(t,r.FATAL);return e=>{const t=e.level;t.isGreaterThanOrEqualTo(u)&&t.isLessThanOrEqualTo(o)&&n(e)}}(e.level,e.maxLevel,u,r)};var lo={};const fo=Nr.exports("log4js:categoryFilter");lo.configure=function(e,t,n){const r=n(e.appender);return function(e,t){return"string"==typeof e&&(e=[e]),n=>{fo(`Checking ${n.categoryName} against ${e}`),-1===e.indexOf(n.categoryName)&&(fo("Not excluded, sending to appender"),t(n))}}(e.exclude,r)};var Do={};const po=Nr.exports("log4js:noLogFilter");Do.configure=function(e,t,n){const r=n(e.appender);return function(e,t){return n=>{po(`Checking data: ${n.data} against filters: ${e}`),"string"==typeof e&&(e=[e]),e=e.filter((e=>null!=e&&""!==e));const r=new RegExp(e.join("|"),"i");(0===e.length||n.data.findIndex((e=>r.test(e)))<0)&&(po("Not excluded, sending to appender"),t(n))}}(e.exclude,r)};var Eo={},mo={exports:{}},ho={},yo={fromCallback:function(e){return Object.defineProperty((function(){if("function"!=typeof arguments[arguments.length-1])return new Promise(((t,n)=>{arguments[arguments.length]=(e,r)=>{if(e)return n(e);t(r)},arguments.length++,e.apply(this,arguments)}));e.apply(this,arguments)}),"name",{value:e.name})},fromPromise:function(e){return Object.defineProperty((function(){const t=arguments[arguments.length-1];if("function"!=typeof t)return e.apply(this,arguments);e.apply(this,arguments).then((e=>t(null,e)),t)}),"name",{value:e.name})}};!function(e){const t=yo.fromCallback,n=we,r=["access","appendFile","chmod","chown","close","copyFile","fchmod","fchown","fdatasync","fstat","fsync","ftruncate","futimes","lchown","lchmod","link","lstat","mkdir","mkdtemp","open","readFile","readdir","readlink","realpath","rename","rmdir","stat","symlink","truncate","unlink","utimes","writeFile"].filter((e=>"function"==typeof n[e]));Object.keys(n).forEach((t=>{"promises"!==t&&(e[t]=n[t])})),r.forEach((r=>{e[r]=t(n[r])})),e.exists=function(e,t){return"function"==typeof t?n.exists(e,t):new Promise((t=>n.exists(e,t)))},e.read=function(e,t,r,u,o,i){return"function"==typeof i?n.read(e,t,r,u,o,i):new Promise(((i,s)=>{n.read(e,t,r,u,o,((e,t,n)=>{if(e)return s(e);i({bytesRead:t,buffer:n})}))}))},e.write=function(e,t,...r){return"function"==typeof r[r.length-1]?n.write(e,t,...r):new Promise(((u,o)=>{n.write(e,t,...r,((e,t,n)=>{if(e)return o(e);u({bytesWritten:t,buffer:n})}))}))},"function"==typeof n.realpath.native&&(e.realpath.native=t(n.realpath.native))}(ho);const Co=p.default;function Fo(e){return(e=Co.normalize(Co.resolve(e)).split(Co.sep)).length>0?e[0]:null}const go=/[<>:"|?*]/;var Ao=function(e){const t=Fo(e);return e=e.replace(t,""),go.test(e)};const vo=we,So=p.default,wo=Ao,Oo=parseInt("0777",8);var bo=function e(t,n,r,u){if("function"==typeof n?(r=n,n={}):n&&"object"==typeof n||(n={mode:n}),"win32"===process.platform&&wo(t)){const e=new Error(t+" contains invalid WIN32 path characters.");return e.code="EINVAL",r(e)}let o=n.mode;const i=n.fs||vo;void 0===o&&(o=Oo&~process.umask()),u||(u=null),r=r||function(){},t=So.resolve(t),i.mkdir(t,o,(o=>{if(!o)return r(null,u=u||t);if("ENOENT"===o.code){if(So.dirname(t)===t)return r(o);e(So.dirname(t),n,((u,o)=>{u?r(u,o):e(t,n,r,o)}))}else i.stat(t,((e,t)=>{e||!t.isDirectory()?r(o,u):r(null,u)}))}))};const _o=we,Bo=p.default,Po=Ao,ko=parseInt("0777",8);var xo=function e(t,n,r){n&&"object"==typeof n||(n={mode:n});let u=n.mode;const o=n.fs||_o;if("win32"===process.platform&&Po(t)){const e=new Error(t+" contains invalid WIN32 path characters.");throw e.code="EINVAL",e}void 0===u&&(u=ko&~process.umask()),r||(r=null),t=Bo.resolve(t);try{o.mkdirSync(t,u),r=r||t}catch(u){if("ENOENT"===u.code){if(Bo.dirname(t)===t)throw u;r=e(Bo.dirname(t),n,r),e(t,n,r)}else{let e;try{e=o.statSync(t)}catch(e){throw u}if(!e.isDirectory())throw u}}return r};const No=(0,yo.fromCallback)(bo);var Io={mkdirs:No,mkdirsSync:xo,mkdirp:No,mkdirpSync:xo,ensureDir:No,ensureDirSync:xo};const To=we;E.default,p.default;var Ro=function(e,t,n,r){To.open(e,"r+",((e,u)=>{if(e)return r(e);To.futimes(u,t,n,(e=>{To.close(u,(t=>{r&&r(e||t)}))}))}))},Mo=function(e,t,n){const r=To.openSync(e,"r+");return To.futimesSync(r,t,n),To.closeSync(r)};const Lo=we,jo=p.default,$o=10,Ho=5,Jo=0,Go=process.versions.node.split("."),Vo=Number.parseInt(Go[0],10),Uo=Number.parseInt(Go[1],10),Wo=Number.parseInt(Go[2],10);function zo(){if(Vo>$o)return!0;if(Vo===$o){if(Uo>Ho)return!0;if(Uo===Ho&&Wo>=Jo)return!0}return!1}function Ko(e,t){const n=jo.resolve(e).split(jo.sep).filter((e=>e)),r=jo.resolve(t).split(jo.sep).filter((e=>e));return n.reduce(((e,t,n)=>e&&r[n]===t),!0)}function qo(e,t,n){return`Cannot ${n} '${e}' to a subdirectory of itself, '${t}'.`}var Yo,Xo,Zo={checkPaths:function(e,t,n,r){!function(e,t,n){zo()?Lo.stat(e,{bigint:!0},((e,r)=>{if(e)return n(e);Lo.stat(t,{bigint:!0},((e,t)=>e?"ENOENT"===e.code?n(null,{srcStat:r,destStat:null}):n(e):n(null,{srcStat:r,destStat:t})))})):Lo.stat(e,((e,r)=>{if(e)return n(e);Lo.stat(t,((e,t)=>e?"ENOENT"===e.code?n(null,{srcStat:r,destStat:null}):n(e):n(null,{srcStat:r,destStat:t})))}))}(e,t,((u,o)=>{if(u)return r(u);const{srcStat:i,destStat:s}=o;return s&&s.ino&&s.dev&&s.ino===i.ino&&s.dev===i.dev?r(new Error("Source and destination must not be the same.")):i.isDirectory()&&Ko(e,t)?r(new Error(qo(e,t,n))):r(null,{srcStat:i,destStat:s})}))},checkPathsSync:function(e,t,n){const{srcStat:r,destStat:u}=function(e,t){let n,r;n=zo()?Lo.statSync(e,{bigint:!0}):Lo.statSync(e);try{r=zo()?Lo.statSync(t,{bigint:!0}):Lo.statSync(t)}catch(e){if("ENOENT"===e.code)return{srcStat:n,destStat:null};throw e}return{srcStat:n,destStat:r}}(e,t);if(u&&u.ino&&u.dev&&u.ino===r.ino&&u.dev===r.dev)throw new Error("Source and destination must not be the same.");if(r.isDirectory()&&Ko(e,t))throw new Error(qo(e,t,n));return{srcStat:r,destStat:u}},checkParentPaths:function e(t,n,r,u,o){const i=jo.resolve(jo.dirname(t)),s=jo.resolve(jo.dirname(r));if(s===i||s===jo.parse(s).root)return o();zo()?Lo.stat(s,{bigint:!0},((i,c)=>i?"ENOENT"===i.code?o():o(i):c.ino&&c.dev&&c.ino===n.ino&&c.dev===n.dev?o(new Error(qo(t,r,u))):e(t,n,s,u,o))):Lo.stat(s,((i,c)=>i?"ENOENT"===i.code?o():o(i):c.ino&&c.dev&&c.ino===n.ino&&c.dev===n.dev?o(new Error(qo(t,r,u))):e(t,n,s,u,o)))},checkParentPathsSync:function e(t,n,r,u){const o=jo.resolve(jo.dirname(t)),i=jo.resolve(jo.dirname(r));if(i===o||i===jo.parse(i).root)return;let s;try{s=zo()?Lo.statSync(i,{bigint:!0}):Lo.statSync(i)}catch(e){if("ENOENT"===e.code)return;throw e}if(s.ino&&s.dev&&s.ino===n.ino&&s.dev===n.dev)throw new Error(qo(t,r,u));return e(t,n,i,u)},isSrcSubdir:Ko};const Qo=we,ei=p.default,ti=Io.mkdirsSync,ni=Mo,ri=Zo;function ui(e,t,n,r){if(!r.filter||r.filter(t,n))return function(e,t,n,r){const u=r.dereference?Qo.statSync:Qo.lstatSync,o=u(t);if(o.isDirectory())return function(e,t,n,r,u){if(!t)return function(e,t,n,r){return Qo.mkdirSync(n),ii(t,n,r),Qo.chmodSync(n,e.mode)}(e,n,r,u);if(t&&!t.isDirectory())throw new Error(`Cannot overwrite non-directory '${r}' with directory '${n}'.`);return ii(n,r,u)}(o,e,t,n,r);if(o.isFile()||o.isCharacterDevice()||o.isBlockDevice())return function(e,t,n,r,u){return t?function(e,t,n,r){if(r.overwrite)return Qo.unlinkSync(n),oi(e,t,n,r);if(r.errorOnExist)throw new Error(`'${n}' already exists`)}(e,n,r,u):oi(e,n,r,u)}(o,e,t,n,r);if(o.isSymbolicLink())return function(e,t,n,r){let u=Qo.readlinkSync(t);r.dereference&&(u=ei.resolve(process.cwd(),u));if(e){let e;try{e=Qo.readlinkSync(n)}catch(e){if("EINVAL"===e.code||"UNKNOWN"===e.code)return Qo.symlinkSync(u,n);throw e}if(r.dereference&&(e=ei.resolve(process.cwd(),e)),ri.isSrcSubdir(u,e))throw new Error(`Cannot copy '${u}' to a subdirectory of itself, '${e}'.`);if(Qo.statSync(n).isDirectory()&&ri.isSrcSubdir(e,u))throw new Error(`Cannot overwrite '${e}' with '${u}'.`);return function(e,t){return Qo.unlinkSync(t),Qo.symlinkSync(e,t)}(u,n)}return Qo.symlinkSync(u,n)}(e,t,n,r)}(e,t,n,r)}function oi(e,t,n,r){return"function"==typeof Qo.copyFileSync?(Qo.copyFileSync(t,n),Qo.chmodSync(n,e.mode),r.preserveTimestamps?ni(n,e.atime,e.mtime):void 0):function(e,t,n,r){const u=65536,o=(Xo?Yo:(Xo=1,Yo=function(e){if("function"==typeof Buffer.allocUnsafe)try{return Buffer.allocUnsafe(e)}catch(t){return new Buffer(e)}return new Buffer(e)}))(u),i=Qo.openSync(t,"r"),s=Qo.openSync(n,"w",e.mode);let c=0;for(;cfunction(e,t,n,r){const u=ei.join(t,e),o=ei.join(n,e),{destStat:i}=ri.checkPathsSync(u,o,"copy");return ui(i,u,o,r)}(r,e,t,n)))}var si=function(e,t,n){"function"==typeof n&&(n={filter:n}),(n=n||{}).clobber=!("clobber"in n)||!!n.clobber,n.overwrite="overwrite"in n?!!n.overwrite:n.clobber,n.preserveTimestamps&&"ia32"===process.arch&&console.warn("fs-extra: Using the preserveTimestamps option in 32-bit node is not recommended;\n\n see https://github.com/jprichardson/node-fs-extra/issues/269");const{srcStat:r,destStat:u}=ri.checkPathsSync(e,t,"copy");return ri.checkParentPathsSync(e,r,t,"copy"),function(e,t,n,r){if(r.filter&&!r.filter(t,n))return;const u=ei.dirname(n);Qo.existsSync(u)||ti(u);return ui(e,t,n,r)}(u,e,t,n)},ci={copySync:si};const ai=yo.fromPromise,li=ho;var fi={pathExists:ai((function(e){return li.access(e).then((()=>!0)).catch((()=>!1))})),pathExistsSync:li.existsSync};const di=we,Di=p.default,pi=Io.mkdirs,Ei=fi.pathExists,mi=Ro,hi=Zo;function yi(e,t,n,r,u){const o=Di.dirname(n);Ei(o,((i,s)=>i?u(i):s?Fi(e,t,n,r,u):void pi(o,(o=>o?u(o):Fi(e,t,n,r,u)))))}function Ci(e,t,n,r,u,o){Promise.resolve(u.filter(n,r)).then((i=>i?e(t,n,r,u,o):o()),(e=>o(e)))}function Fi(e,t,n,r,u){return r.filter?Ci(gi,e,t,n,r,u):gi(e,t,n,r,u)}function gi(e,t,n,r,u){(r.dereference?di.stat:di.lstat)(t,((o,i)=>o?u(o):i.isDirectory()?function(e,t,n,r,u,o){if(!t)return function(e,t,n,r,u){di.mkdir(n,(o=>{if(o)return u(o);Si(t,n,r,(t=>t?u(t):di.chmod(n,e.mode,u)))}))}(e,n,r,u,o);if(t&&!t.isDirectory())return o(new Error(`Cannot overwrite non-directory '${r}' with directory '${n}'.`));return Si(n,r,u,o)}(i,e,t,n,r,u):i.isFile()||i.isCharacterDevice()||i.isBlockDevice()?function(e,t,n,r,u,o){return t?function(e,t,n,r,u){if(!r.overwrite)return r.errorOnExist?u(new Error(`'${n}' already exists`)):u();di.unlink(n,(o=>o?u(o):Ai(e,t,n,r,u)))}(e,n,r,u,o):Ai(e,n,r,u,o)}(i,e,t,n,r,u):i.isSymbolicLink()?function(e,t,n,r,u){di.readlink(t,((t,o)=>t?u(t):(r.dereference&&(o=Di.resolve(process.cwd(),o)),e?void di.readlink(n,((t,i)=>t?"EINVAL"===t.code||"UNKNOWN"===t.code?di.symlink(o,n,u):u(t):(r.dereference&&(i=Di.resolve(process.cwd(),i)),hi.isSrcSubdir(o,i)?u(new Error(`Cannot copy '${o}' to a subdirectory of itself, '${i}'.`)):e.isDirectory()&&hi.isSrcSubdir(i,o)?u(new Error(`Cannot overwrite '${i}' with '${o}'.`)):function(e,t,n){di.unlink(t,(r=>r?n(r):di.symlink(e,t,n)))}(o,n,u)))):di.symlink(o,n,u))))}(e,t,n,r,u):void 0))}function Ai(e,t,n,r,u){return"function"==typeof di.copyFile?di.copyFile(t,n,(t=>t?u(t):vi(e,n,r,u))):function(e,t,n,r,u){const o=di.createReadStream(t);o.on("error",(e=>u(e))).once("open",(()=>{const t=di.createWriteStream(n,{mode:e.mode});t.on("error",(e=>u(e))).on("open",(()=>o.pipe(t))).once("close",(()=>vi(e,n,r,u)))}))}(e,t,n,r,u)}function vi(e,t,n,r){di.chmod(t,e.mode,(u=>u?r(u):n.preserveTimestamps?mi(t,e.atime,e.mtime,r):r()))}function Si(e,t,n,r){di.readdir(e,((u,o)=>u?r(u):wi(o,e,t,n,r)))}function wi(e,t,n,r,u){const o=e.pop();return o?function(e,t,n,r,u,o){const i=Di.join(n,t),s=Di.join(r,t);hi.checkPaths(i,s,"copy",((t,c)=>{if(t)return o(t);const{destStat:a}=c;Fi(a,i,s,u,(t=>t?o(t):wi(e,n,r,u,o)))}))}(e,o,t,n,r,u):u()}var Oi=function(e,t,n,r){"function"!=typeof n||r?"function"==typeof n&&(n={filter:n}):(r=n,n={}),r=r||function(){},(n=n||{}).clobber=!("clobber"in n)||!!n.clobber,n.overwrite="overwrite"in n?!!n.overwrite:n.clobber,n.preserveTimestamps&&"ia32"===process.arch&&console.warn("fs-extra: Using the preserveTimestamps option in 32-bit node is not recommended;\n\n see https://github.com/jprichardson/node-fs-extra/issues/269"),hi.checkPaths(e,t,"copy",((u,o)=>{if(u)return r(u);const{srcStat:i,destStat:s}=o;hi.checkParentPaths(e,i,t,"copy",(u=>u?r(u):n.filter?Ci(yi,s,e,t,n,r):yi(s,e,t,n,r)))}))};var bi={copy:(0,yo.fromCallback)(Oi)};const _i=we,Bi=p.default,Pi=g.default,ki="win32"===process.platform;function xi(e){["unlink","chmod","stat","lstat","rmdir","readdir"].forEach((t=>{e[t]=e[t]||_i[t],e[t+="Sync"]=e[t]||_i[t]})),e.maxBusyTries=e.maxBusyTries||3}function Ni(e,t,n){let r=0;"function"==typeof t&&(n=t,t={}),Pi(e,"rimraf: missing path"),Pi.strictEqual(typeof e,"string","rimraf: path should be a string"),Pi.strictEqual(typeof n,"function","rimraf: callback function required"),Pi(t,"rimraf: invalid options argument provided"),Pi.strictEqual(typeof t,"object","rimraf: options should be object"),xi(t),Ii(e,t,(function u(o){if(o){if(("EBUSY"===o.code||"ENOTEMPTY"===o.code||"EPERM"===o.code)&&rIi(e,t,u)),100*r)}"ENOENT"===o.code&&(o=null)}n(o)}))}function Ii(e,t,n){Pi(e),Pi(t),Pi("function"==typeof n),t.lstat(e,((r,u)=>r&&"ENOENT"===r.code?n(null):r&&"EPERM"===r.code&&ki?Ti(e,t,r,n):u&&u.isDirectory()?Mi(e,t,r,n):void t.unlink(e,(r=>{if(r){if("ENOENT"===r.code)return n(null);if("EPERM"===r.code)return ki?Ti(e,t,r,n):Mi(e,t,r,n);if("EISDIR"===r.code)return Mi(e,t,r,n)}return n(r)}))))}function Ti(e,t,n,r){Pi(e),Pi(t),Pi("function"==typeof r),n&&Pi(n instanceof Error),t.chmod(e,438,(u=>{u?r("ENOENT"===u.code?null:n):t.stat(e,((u,o)=>{u?r("ENOENT"===u.code?null:n):o.isDirectory()?Mi(e,t,n,r):t.unlink(e,r)}))}))}function Ri(e,t,n){let r;Pi(e),Pi(t),n&&Pi(n instanceof Error);try{t.chmodSync(e,438)}catch(e){if("ENOENT"===e.code)return;throw n}try{r=t.statSync(e)}catch(e){if("ENOENT"===e.code)return;throw n}r.isDirectory()?ji(e,t,n):t.unlinkSync(e)}function Mi(e,t,n,r){Pi(e),Pi(t),n&&Pi(n instanceof Error),Pi("function"==typeof r),t.rmdir(e,(u=>{!u||"ENOTEMPTY"!==u.code&&"EEXIST"!==u.code&&"EPERM"!==u.code?u&&"ENOTDIR"===u.code?r(n):r(u):function(e,t,n){Pi(e),Pi(t),Pi("function"==typeof n),t.readdir(e,((r,u)=>{if(r)return n(r);let o,i=u.length;if(0===i)return t.rmdir(e,n);u.forEach((r=>{Ni(Bi.join(e,r),t,(r=>{if(!o)return r?n(o=r):void(0==--i&&t.rmdir(e,n))}))}))}))}(e,t,r)}))}function Li(e,t){let n;xi(t=t||{}),Pi(e,"rimraf: missing path"),Pi.strictEqual(typeof e,"string","rimraf: path should be a string"),Pi(t,"rimraf: missing options"),Pi.strictEqual(typeof t,"object","rimraf: options should be object");try{n=t.lstatSync(e)}catch(n){if("ENOENT"===n.code)return;"EPERM"===n.code&&ki&&Ri(e,t,n)}try{n&&n.isDirectory()?ji(e,t,null):t.unlinkSync(e)}catch(n){if("ENOENT"===n.code)return;if("EPERM"===n.code)return ki?Ri(e,t,n):ji(e,t,n);if("EISDIR"!==n.code)throw n;ji(e,t,n)}}function ji(e,t,n){Pi(e),Pi(t),n&&Pi(n instanceof Error);try{t.rmdirSync(e)}catch(r){if("ENOTDIR"===r.code)throw n;if("ENOTEMPTY"===r.code||"EEXIST"===r.code||"EPERM"===r.code)!function(e,t){if(Pi(e),Pi(t),t.readdirSync(e).forEach((n=>Li(Bi.join(e,n),t))),!ki){return t.rmdirSync(e,t)}{const n=Date.now();do{try{return t.rmdirSync(e,t)}catch(e){}}while(Date.now()-n<500)}}(e,t);else if("ENOENT"!==r.code)throw r}}var $i=Ni;Ni.sync=Li;const Hi=$i;var Ji={remove:(0,yo.fromCallback)(Hi),removeSync:Hi.sync};const Gi=yo.fromCallback,Vi=we,Ui=p.default,Wi=Io,zi=Ji,Ki=Gi((function(e,t){t=t||function(){},Vi.readdir(e,((n,r)=>{if(n)return Wi.mkdirs(e,t);r=r.map((t=>Ui.join(e,t))),function e(){const n=r.pop();if(!n)return t();zi.remove(n,(n=>{if(n)return t(n);e()}))}()}))}));function qi(e){let t;try{t=Vi.readdirSync(e)}catch(t){return Wi.mkdirsSync(e)}t.forEach((t=>{t=Ui.join(e,t),zi.removeSync(t)}))}var Yi={emptyDirSync:qi,emptydirSync:qi,emptyDir:Ki,emptydir:Ki};const Xi=yo.fromCallback,Zi=p.default,Qi=we,es=Io,ts=fi.pathExists;var ns={createFile:Xi((function(e,t){function n(){Qi.writeFile(e,"",(e=>{if(e)return t(e);t()}))}Qi.stat(e,((r,u)=>{if(!r&&u.isFile())return t();const o=Zi.dirname(e);ts(o,((e,r)=>e?t(e):r?n():void es.mkdirs(o,(e=>{if(e)return t(e);n()}))))}))})),createFileSync:function(e){let t;try{t=Qi.statSync(e)}catch(e){}if(t&&t.isFile())return;const n=Zi.dirname(e);Qi.existsSync(n)||es.mkdirsSync(n),Qi.writeFileSync(e,"")}};const rs=yo.fromCallback,us=p.default,os=we,is=Io,ss=fi.pathExists;var cs={createLink:rs((function(e,t,n){function r(e,t){os.link(e,t,(e=>{if(e)return n(e);n(null)}))}ss(t,((u,o)=>u?n(u):o?n(null):void os.lstat(e,(u=>{if(u)return u.message=u.message.replace("lstat","ensureLink"),n(u);const o=us.dirname(t);ss(o,((u,i)=>u?n(u):i?r(e,t):void is.mkdirs(o,(u=>{if(u)return n(u);r(e,t)}))))}))))})),createLinkSync:function(e,t){if(os.existsSync(t))return;try{os.lstatSync(e)}catch(e){throw e.message=e.message.replace("lstat","ensureLink"),e}const n=us.dirname(t);return os.existsSync(n)||is.mkdirsSync(n),os.linkSync(e,t)}};const as=p.default,ls=we,fs=fi.pathExists;var ds={symlinkPaths:function(e,t,n){if(as.isAbsolute(e))return ls.lstat(e,(t=>t?(t.message=t.message.replace("lstat","ensureSymlink"),n(t)):n(null,{toCwd:e,toDst:e})));{const r=as.dirname(t),u=as.join(r,e);return fs(u,((t,o)=>t?n(t):o?n(null,{toCwd:u,toDst:e}):ls.lstat(e,(t=>t?(t.message=t.message.replace("lstat","ensureSymlink"),n(t)):n(null,{toCwd:e,toDst:as.relative(r,e)})))))}},symlinkPathsSync:function(e,t){let n;if(as.isAbsolute(e)){if(n=ls.existsSync(e),!n)throw new Error("absolute srcpath does not exist");return{toCwd:e,toDst:e}}{const r=as.dirname(t),u=as.join(r,e);if(n=ls.existsSync(u),n)return{toCwd:u,toDst:e};if(n=ls.existsSync(e),!n)throw new Error("relative srcpath does not exist");return{toCwd:e,toDst:as.relative(r,e)}}}};const Ds=we;var ps={symlinkType:function(e,t,n){if(n="function"==typeof t?t:n,t="function"!=typeof t&&t)return n(null,t);Ds.lstat(e,((e,r)=>{if(e)return n(null,"file");t=r&&r.isDirectory()?"dir":"file",n(null,t)}))},symlinkTypeSync:function(e,t){let n;if(t)return t;try{n=Ds.lstatSync(e)}catch(e){return"file"}return n&&n.isDirectory()?"dir":"file"}};const Es=yo.fromCallback,ms=p.default,hs=we,ys=Io.mkdirs,Cs=Io.mkdirsSync,Fs=ds.symlinkPaths,gs=ds.symlinkPathsSync,As=ps.symlinkType,vs=ps.symlinkTypeSync,Ss=fi.pathExists;var ws={createSymlink:Es((function(e,t,n,r){r="function"==typeof n?n:r,n="function"!=typeof n&&n,Ss(t,((u,o)=>u?r(u):o?r(null):void Fs(e,t,((u,o)=>{if(u)return r(u);e=o.toDst,As(o.toCwd,n,((n,u)=>{if(n)return r(n);const o=ms.dirname(t);Ss(o,((n,i)=>n?r(n):i?hs.symlink(e,t,u,r):void ys(o,(n=>{if(n)return r(n);hs.symlink(e,t,u,r)}))))}))}))))})),createSymlinkSync:function(e,t,n){if(hs.existsSync(t))return;const r=gs(e,t);e=r.toDst,n=vs(r.toCwd,n);const u=ms.dirname(t);return hs.existsSync(u)||Cs(u),hs.symlinkSync(e,t,n)}};var Os,bs={createFile:ns.createFile,createFileSync:ns.createFileSync,ensureFile:ns.createFile,ensureFileSync:ns.createFileSync,createLink:cs.createLink,createLinkSync:cs.createLinkSync,ensureLink:cs.createLink,ensureLinkSync:cs.createLinkSync,createSymlink:ws.createSymlink,createSymlinkSync:ws.createSymlinkSync,ensureSymlink:ws.createSymlink,ensureSymlinkSync:ws.createSymlinkSync};try{Os=we}catch(e){Os=D.default}function _s(e,t){var n,r="\n";return"object"==typeof t&&null!==t&&(t.spaces&&(n=t.spaces),t.EOL&&(r=t.EOL)),JSON.stringify(e,t?t.replacer:null,n).replace(/\n/g,r)+r}function Bs(e){return Buffer.isBuffer(e)&&(e=e.toString("utf8")),e=e.replace(/^\uFEFF/,"")}var Ps={readFile:function(e,t,n){null==n&&(n=t,t={}),"string"==typeof t&&(t={encoding:t});var r=(t=t||{}).fs||Os,u=!0;"throws"in t&&(u=t.throws),r.readFile(e,t,(function(r,o){if(r)return n(r);var i;o=Bs(o);try{i=JSON.parse(o,t?t.reviver:null)}catch(t){return u?(t.message=e+": "+t.message,n(t)):n(null,null)}n(null,i)}))},readFileSync:function(e,t){"string"==typeof(t=t||{})&&(t={encoding:t});var n=t.fs||Os,r=!0;"throws"in t&&(r=t.throws);try{var u=n.readFileSync(e,t);return u=Bs(u),JSON.parse(u,t.reviver)}catch(t){if(r)throw t.message=e+": "+t.message,t;return null}},writeFile:function(e,t,n,r){null==r&&(r=n,n={});var u=(n=n||{}).fs||Os,o="";try{o=_s(t,n)}catch(e){return void(r&&r(e,null))}u.writeFile(e,o,n,r)},writeFileSync:function(e,t,n){var r=(n=n||{}).fs||Os,u=_s(t,n);return r.writeFileSync(e,u,n)}},ks=Ps;const xs=yo.fromCallback,Ns=ks;var Is={readJson:xs(Ns.readFile),readJsonSync:Ns.readFileSync,writeJson:xs(Ns.writeFile),writeJsonSync:Ns.writeFileSync};const Ts=p.default,Rs=Io,Ms=fi.pathExists,Ls=Is;var js=function(e,t,n,r){"function"==typeof n&&(r=n,n={});const u=Ts.dirname(e);Ms(u,((o,i)=>o?r(o):i?Ls.writeJson(e,t,n,r):void Rs.mkdirs(u,(u=>{if(u)return r(u);Ls.writeJson(e,t,n,r)}))))};const $s=we,Hs=p.default,Js=Io,Gs=Is;var Vs=function(e,t,n){const r=Hs.dirname(e);$s.existsSync(r)||Js.mkdirsSync(r),Gs.writeJsonSync(e,t,n)};const Us=yo.fromCallback,Ws=Is;Ws.outputJson=Us(js),Ws.outputJsonSync=Vs,Ws.outputJSON=Ws.outputJson,Ws.outputJSONSync=Ws.outputJsonSync,Ws.writeJSON=Ws.writeJson,Ws.writeJSONSync=Ws.writeJsonSync,Ws.readJSON=Ws.readJson,Ws.readJSONSync=Ws.readJsonSync;var zs=Ws;const Ks=we,qs=p.default,Ys=ci.copySync,Xs=Ji.removeSync,Zs=Io.mkdirpSync,Qs=Zo;function ec(e,t,n){try{Ks.renameSync(e,t)}catch(r){if("EXDEV"!==r.code)throw r;return function(e,t,n){const r={overwrite:n,errorOnExist:!0};return Ys(e,t,r),Xs(e)}(e,t,n)}}var tc=function(e,t,n){const r=(n=n||{}).overwrite||n.clobber||!1,{srcStat:u}=Qs.checkPathsSync(e,t,"move");return Qs.checkParentPathsSync(e,u,t,"move"),Zs(qs.dirname(t)),function(e,t,n){if(n)return Xs(t),ec(e,t,n);if(Ks.existsSync(t))throw new Error("dest already exists.");return ec(e,t,n)}(e,t,r)},nc={moveSync:tc};const rc=we,uc=p.default,oc=bi.copy,ic=Ji.remove,sc=Io.mkdirp,cc=fi.pathExists,ac=Zo;function lc(e,t,n,r){rc.rename(e,t,(u=>u?"EXDEV"!==u.code?r(u):function(e,t,n,r){const u={overwrite:n,errorOnExist:!0};oc(e,t,u,(t=>t?r(t):ic(e,r)))}(e,t,n,r):r()))}var fc=function(e,t,n,r){"function"==typeof n&&(r=n,n={});const u=n.overwrite||n.clobber||!1;ac.checkPaths(e,t,"move",((n,o)=>{if(n)return r(n);const{srcStat:i}=o;ac.checkParentPaths(e,i,t,"move",(n=>{if(n)return r(n);sc(uc.dirname(t),(n=>n?r(n):function(e,t,n,r){if(n)return ic(t,(u=>u?r(u):lc(e,t,n,r)));cc(t,((u,o)=>u?r(u):o?r(new Error("dest already exists.")):lc(e,t,n,r)))}(e,t,u,r)))}))}))};var dc={move:(0,yo.fromCallback)(fc)};const Dc=yo.fromCallback,pc=we,Ec=p.default,mc=Io,hc=fi.pathExists;var yc={outputFile:Dc((function(e,t,n,r){"function"==typeof n&&(r=n,n="utf8");const u=Ec.dirname(e);hc(u,((o,i)=>o?r(o):i?pc.writeFile(e,t,n,r):void mc.mkdirs(u,(u=>{if(u)return r(u);pc.writeFile(e,t,n,r)}))))})),outputFileSync:function(e,...t){const n=Ec.dirname(e);if(pc.existsSync(n))return pc.writeFileSync(e,...t);mc.mkdirsSync(n),pc.writeFileSync(e,...t)}};!function(e){e.exports=Object.assign({},ho,ci,bi,Yi,bs,zs,Io,nc,dc,yc,fi,Ji);const t=D.default;Object.getOwnPropertyDescriptor(t,"promises")&&Object.defineProperty(e.exports,"promises",{get:()=>t.promises})}(mo);const Cc=Nr.exports("streamroller:fileNameFormatter"),Fc=p.default;const gc=Nr.exports("streamroller:fileNameParser"),Ac=nu.exports;const vc=Nr.exports("streamroller:moveAndMaybeCompressFile"),Sc=mo.exports,wc=v.default;var Oc=async(e,t,n)=>{if(n=function(e){const t={mode:parseInt("0600",8),compress:!1},n=Object.assign({},t,e);return vc(`_parseOption: moveAndMaybeCompressFile called with option=${JSON.stringify(n)}`),n}(n),e!==t){if(await Sc.pathExists(e))if(vc(`moveAndMaybeCompressFile: moving file from ${e} to ${t} ${n.compress?"with":"without"} compress`),n.compress)await new Promise(((r,u)=>{let o=!1;const i=Sc.createWriteStream(t,{mode:n.mode,flags:"wx"}).on("open",(()=>{o=!0;const t=Sc.createReadStream(e).on("open",(()=>{t.pipe(wc.createGzip()).pipe(i)})).on("error",(t=>{vc(`moveAndMaybeCompressFile: error reading ${e}`,t),i.destroy(t)}))})).on("finish",(()=>{vc(`moveAndMaybeCompressFile: finished compressing ${t}, deleting ${e}`),Sc.unlink(e).then(r).catch((t=>{vc(`moveAndMaybeCompressFile: error deleting ${e}, truncating instead`,t),Sc.truncate(e).then(r).catch((t=>{vc(`moveAndMaybeCompressFile: error truncating ${e}`,t),u(t)}))}))})).on("error",(e=>{o?(vc(`moveAndMaybeCompressFile: error writing ${t}, deleting`,e),Sc.unlink(t).then((()=>{u(e)})).catch((e=>{vc(`moveAndMaybeCompressFile: error deleting ${t}`,e),u(e)}))):(vc(`moveAndMaybeCompressFile: error creating ${t}`,e),u(e))}))})).catch((()=>{}));else{vc(`moveAndMaybeCompressFile: renaming ${e} to ${t}`);try{await Sc.move(e,t,{overwrite:!0})}catch(n){if(vc(`moveAndMaybeCompressFile: error renaming ${e} to ${t}`,n),"ENOENT"!==n.code){vc("moveAndMaybeCompressFile: trying copy+truncate instead");try{await Sc.copy(e,t,{overwrite:!0}),await Sc.truncate(e)}catch(e){vc("moveAndMaybeCompressFile: error copy+truncate",e)}}}}}else vc("moveAndMaybeCompressFile: source and target are the same, not doing anything")};const bc=Nr.exports("streamroller:RollingFileWriteStream"),_c=mo.exports,Bc=p.default,Pc=E.default,kc=()=>new Date,xc=nu.exports,{Writable:Nc}=C.default,Ic=({file:e,keepFileExt:t,needsIndex:n,alwaysIncludeDate:r,compress:u,fileNameSep:o})=>{let i=o||".";const s=Fc.join(e.dir,e.name),c=t=>t+e.ext,a=(e,t,r)=>!n&&r||!t?e:e+i+t,l=(e,t,n)=>(t>0||r)&&n?e+i+n:e,f=(e,t)=>t&&u?e+".gz":e,d=t?[l,a,c,f]:[c,l,a,f];return({date:e,index:t})=>(Cc(`_formatFileName: date=${e}, index=${t}`),d.reduce(((n,r)=>r(n,t,e)),s))},Tc=({file:e,keepFileExt:t,pattern:n,fileNameSep:r})=>{let u=r||".";const o="__NOT_MATCHING__";let i=[(e,t)=>e.endsWith(".gz")?(gc("it is gzipped"),t.isCompressed=!0,e.slice(0,-1*".gz".length)):e,t?t=>t.startsWith(e.name)&&t.endsWith(e.ext)?(gc("it starts and ends with the right things"),t.slice(e.name.length+1,-1*e.ext.length)):o:t=>t.startsWith(e.base)?(gc("it starts with the right things"),t.slice(e.base.length+1)):o,n?(e,t)=>{const r=e.split(u);let o=r[r.length-1];gc("items: ",r,", indexStr: ",o);let i=e;void 0!==o&&o.match(/^\d+$/)?(i=e.slice(0,-1*(o.length+1)),gc(`dateStr is ${i}`),n&&!i&&(i=o,o="0")):o="0";try{const r=Ac.parse(n,i,new Date(0,0));return Ac.asString(n,r)!==i?e:(t.index=parseInt(o,10),t.date=i,t.timestamp=r.getTime(),"")}catch(t){return gc(`Problem parsing ${i} as ${n}, error was: `,t),e}}:(e,t)=>e.match(/^\d+$/)?(gc("it has an index"),t.index=parseInt(e,10),""):e];return e=>{let t={filename:e,index:0,isCompressed:!1};return i.reduce(((e,n)=>n(e,t)),e)?null:t}},Rc=Oc;var Mc=class extends Nc{constructor(e,t){if(bc(`constructor: creating RollingFileWriteStream. path=${e}`),"string"!=typeof e||0===e.length)throw new Error(`Invalid filename: ${e}`);if(e.endsWith(Bc.sep))throw new Error(`Filename is a directory: ${e}`);0===e.indexOf(`~${Bc.sep}`)&&(e=e.replace("~",Pc.homedir())),super(t),this.options=this._parseOption(t),this.fileObject=Bc.parse(e),""===this.fileObject.dir&&(this.fileObject=Bc.parse(Bc.join(process.cwd(),e))),this.fileFormatter=Ic({file:this.fileObject,alwaysIncludeDate:this.options.alwaysIncludePattern,needsIndex:this.options.maxSize 0`)}else delete n.maxSize;if(n.numBackups||0===n.numBackups){if(n.numBackups<0)throw new Error(`options.numBackups (${n.numBackups}) should be >= 0`);if(n.numBackups>=Number.MAX_SAFE_INTEGER)throw new Error(`options.numBackups (${n.numBackups}) should be < Number.MAX_SAFE_INTEGER`);n.numToKeep=n.numBackups+1}else if(n.numToKeep<=0)throw new Error(`options.numToKeep (${n.numToKeep}) should be > 0`);return bc(`_parseOption: creating stream with option=${JSON.stringify(n)}`),n}_final(e){this.currentFileStream.end("",this.options.encoding,e)}_write(e,t,n){this._shouldRoll().then((()=>{bc(`_write: writing chunk. file=${this.currentFileStream.path} state=${JSON.stringify(this.state)} chunk=${e}`),this.currentFileStream.write(e,t,(t=>{this.state.currentSize+=e.length,n(t)}))}))}async _shouldRoll(){(this._dateChanged()||this._tooBig())&&(bc(`_shouldRoll: rolling because dateChanged? ${this._dateChanged()} or tooBig? ${this._tooBig()}`),await this._roll())}_dateChanged(){return this.state.currentDate&&this.state.currentDate!==xc(this.options.pattern,kc())}_tooBig(){return this.state.currentSize>=this.options.maxSize}_roll(){return bc("_roll: closing the current stream"),new Promise(((e,t)=>{this.currentFileStream.end("",this.options.encoding,(()=>{this._moveOldFiles().then(e).catch(t)}))}))}async _moveOldFiles(){const e=await this._getExistingFiles();for(let t=(this.state.currentDate?e.filter((e=>e.date===this.state.currentDate)):e).length;t>=0;t--){bc(`_moveOldFiles: i = ${t}`);const e=this.fileFormatter({date:this.state.currentDate,index:t}),n=this.fileFormatter({date:this.state.currentDate,index:t+1}),r={compress:this.options.compress&&0===t,mode:this.options.mode};await Rc(e,n,r)}this.state.currentSize=0,this.state.currentDate=this.state.currentDate?xc(this.options.pattern,kc()):null,bc(`_moveOldFiles: finished rolling files. state=${JSON.stringify(this.state)}`),this._renewWriteStream(),await new Promise(((e,t)=>{this.currentFileStream.write("","utf8",(()=>{this._clean().then(e).catch(t)}))}))}async _getExistingFiles(){const e=await _c.readdir(this.fileObject.dir).catch((()=>[]));bc(`_getExistingFiles: files=${e}`);const t=e.map((e=>this.fileNameParser(e))).filter((e=>e)),n=e=>(e.timestamp?e.timestamp:kc().getTime())-e.index;return t.sort(((e,t)=>n(e)-n(t))),t}_renewWriteStream(){const e=this.fileFormatter({date:this.state.currentDate,index:0}),t=e=>{try{return _c.mkdirSync(e,{recursive:!0})}catch(n){if("ENOENT"===n.code)return t(Bc.dirname(e)),t(e);if("EEXIST"!==n.code&&"EROFS"!==n.code)throw n;try{if(_c.statSync(e).isDirectory())return e;throw n}catch(e){throw n}}};t(this.fileObject.dir);const n={flags:this.options.flags,encoding:this.options.encoding,mode:this.options.mode};var r,u;_c.appendFileSync(e,"",(r={...n},u="flags",r["flag"]=r[u],delete r[u],r)),this.currentFileStream=_c.createWriteStream(e,n),this.currentFileStream.on("error",(e=>{this.emit("error",e)}))}async _clean(){const e=await this._getExistingFiles();if(bc(`_clean: numToKeep = ${this.options.numToKeep}, existingFiles = ${e.length}`),bc("_clean: existing files are: ",e),this._tooManyFiles(e.length)){const n=e.slice(0,e.length-this.options.numToKeep).map((e=>Bc.format({dir:this.fileObject.dir,base:e.filename})));await(t=n,bc(`deleteFiles: files to delete: ${t}`),Promise.all(t.map((e=>_c.unlink(e).catch((t=>{bc(`deleteFiles: error when unlinking ${e}, ignoring. Error was ${t}`)}))))))}var t}_tooManyFiles(e){return this.options.numToKeep>0&&e>this.options.numToKeep}};const Lc=Mc;var jc=class extends Lc{constructor(e,t,n,r){r||(r={}),t&&(r.maxSize=t),r.numBackups||0===r.numBackups||(n||0===n||(n=1),r.numBackups=n),super(e,r),this.backups=r.numBackups,this.size=this.options.maxSize}get theStream(){return this.currentFileStream}};const $c=Mc;var Hc={RollingFileWriteStream:Mc,RollingFileStream:jc,DateRollingFileStream:class extends $c{constructor(e,t,n){t&&"object"==typeof t&&(n=t,t=null),n||(n={}),t||(t="yyyy-MM-dd"),n.pattern=t,n.numBackups||0===n.numBackups?n.daysToKeep=n.numBackups:(n.daysToKeep||0===n.daysToKeep?process.emitWarning("options.daysToKeep is deprecated due to the confusion it causes when used together with file size rolling. Please use options.numBackups instead.","DeprecationWarning","streamroller-DEP0001"):n.daysToKeep=1,n.numBackups=n.daysToKeep),super(e,n),this.mode=this.options.mode}get theStream(){return this.currentFileStream}}};const Jc=Nr.exports("log4js:file"),Gc=p.default,Vc=Hc,Uc=E.default.EOL;let Wc=!1;const zc=new Set;function Kc(){zc.forEach((e=>{e.sighupHandler()}))}function qc(e,t,n,r){const u=new Vc.RollingFileStream(e,t,n,r);return u.on("error",(t=>{console.error("log4js.fileAppender - Writing to file %s, error happened ",e,t)})),u.on("drain",(()=>{process.emit("log4js:pause",!1)})),u}Eo.configure=function(e,t){let n=t.basicLayout;return e.layout&&(n=t.layout(e.layout.type,e.layout)),e.mode=e.mode||384,function(e,t,n,r,u,o){e=Gc.normalize(e),Jc("Creating file appender (",e,", ",n,", ",r=r||0===r?r:5,", ",u,", ",o,")");let i=qc(e,n,r,u);const s=function(e){if(i.writable){if(!0===u.removeColor){const t=/\x1b[[0-9;]*m/g;e.data=e.data.map((e=>"string"==typeof e?e.replace(t,""):e))}i.write(t(e,o)+Uc,"utf8")||process.emit("log4js:pause",!0)}};return s.reopen=function(){i.end((()=>{i=qc(e,n,r,u)}))},s.sighupHandler=function(){Jc("SIGHUP handler called."),s.reopen()},s.shutdown=function(e){zc.delete(s),0===zc.size&&Wc&&(process.removeListener("SIGHUP",Kc),Wc=!1),i.end("","utf-8",e)},zc.add(s),Wc||(process.on("SIGHUP",Kc),Wc=!0),s}(e.filename,n,e.maxLogSize,e.backups,e,e.timezoneOffset)};var Yc={};const Xc=Hc,Zc=E.default.EOL;function Qc(e,t,n,r,u){r.maxSize=r.maxLogSize;const o=function(e,t,n){const r=new Xc.DateRollingFileStream(e,t,n);return r.on("error",(t=>{console.error("log4js.dateFileAppender - Writing to file %s, error happened ",e,t)})),r.on("drain",(()=>{process.emit("log4js:pause",!1)})),r}(e,t,r),i=function(e){o.writable&&(o.write(n(e,u)+Zc,"utf8")||process.emit("log4js:pause",!0))};return i.shutdown=function(e){o.end("","utf-8",e)},i}Yc.configure=function(e,t){let n=t.basicLayout;return e.layout&&(n=t.layout(e.layout.type,e.layout)),e.alwaysIncludePattern||(e.alwaysIncludePattern=!1),e.mode=e.mode||384,Qc(e.filename,e.pattern,n,e,e.timezoneOffset)};var ea={};const ta=Nr.exports("log4js:fileSync"),na=p.default,ra=D.default,ua=E.default.EOL||"\n";function oa(e,t){if(ra.existsSync(e))return;const n=ra.openSync(e,t.flags,t.mode);ra.closeSync(n)}class ia{constructor(e,t,n,r){ta("In RollingFileStream"),function(){if(!e||!t||t<=0)throw new Error("You must specify a filename and file size")}(),this.filename=e,this.size=t,this.backups=n,this.options=r,this.currentSize=0,this.currentSize=function(e){let t=0;try{t=ra.statSync(e).size}catch(t){oa(e,r)}return t}(this.filename)}shouldRoll(){return ta("should roll with current size %d, and max size %d",this.currentSize,this.size),this.currentSize>=this.size}roll(e){const t=this,n=new RegExp(`^${na.basename(e)}`);function r(e){return n.test(e)}function u(t){return parseInt(t.substring(`${na.basename(e)}.`.length),10)||0}function o(e,t){return u(e)>u(t)?1:u(e) ${e}.${r+1}`),ra.renameSync(na.join(na.dirname(e),n),`${e}.${r+1}`)}}ta("Rolling, rolling, rolling"),ta("Renaming the old files"),ra.readdirSync(na.dirname(e)).filter(r).sort(o).reverse().forEach(i)}write(e,t){const n=this;ta("in write"),this.shouldRoll()&&(this.currentSize=0,this.roll(this.filename)),ta("writing the chunk to the file"),n.currentSize+=e.length,ra.appendFileSync(n.filename,e)}}ea.configure=function(e,t){let n=t.basicLayout;e.layout&&(n=t.layout(e.layout.type,e.layout));const r={flags:e.flags||"a",encoding:e.encoding||"utf8",mode:e.mode||384};return function(e,t,n,r,u,o){ta("fileSync appender created");const i=function(e,t,n){let r;var u;return t?r=new ia(e,t,n,o):(oa(u=e,o),r={write(e){ra.appendFileSync(u,e)}}),r}(e=na.normalize(e),n,r=r||0===r?r:5);return e=>{i.write(t(e,u)+ua)}}(e.filename,n,e.maxLogSize,e.backups,e.timezoneOffset,r)};var sa={};const ca=Nr.exports("log4js:tcp"),aa=S.default;sa.configure=function(e,t){ca(`configure with config = ${e}`);let n=function(e){return e.serialise()};return e.layout&&(n=t.layout(e.layout.type,e.layout)),function(e,t){let n=!1;const r=[];let u,o=3,i="__LOG4JS__";function s(e){ca("Writing log event to socket"),n=u.write(`${t(e)}${i}`,"utf8")}function c(){let e;for(ca("emptying buffer");e=r.shift();)s(e)}function a(e){n?s(e):(ca("buffering log event because it cannot write at the moment"),r.push(e))}return function t(){ca(`appender creating socket to ${e.host||"localhost"}:${e.port||5e3}`),i=`${e.endMsg||"__LOG4JS__"}`,u=aa.createConnection(e.port||5e3,e.host||"localhost"),u.on("connect",(()=>{ca("socket connected"),c(),n=!0})),u.on("drain",(()=>{ca("drain event received, emptying buffer"),n=!0,c()})),u.on("timeout",u.end.bind(u)),u.on("error",(e=>{ca("connection error",e),n=!1,c()})),u.on("close",t)}(),a.shutdown=function(e){ca("shutdown called"),r.length&&o?(ca("buffer has items, waiting 100ms to empty"),o-=1,setTimeout((()=>{a.shutdown(e)}),100)):(u.removeAllListeners("close"),u.end(e))},a}(e,n)};const la=p.default,fa=Nr.exports("log4js:appenders"),da=tu,Da=eo,pa=gu,Ea=hu,ma=to,ha=new Map;ha.set("console",oo),ha.set("stdout",so),ha.set("stderr",co),ha.set("logLevelFilter",ao),ha.set("categoryFilter",lo),ha.set("noLogFilter",Do),ha.set("file",Eo),ha.set("dateFile",Yc),ha.set("fileSync",ea),ha.set("tcp",sa);const ya=new Map,Ca=(e,t)=>{fa("Loading module from ",e);try{return require(e)}catch(n){return void da.throwExceptionIf(t,"MODULE_NOT_FOUND"!==n.code,`appender "${e}" could not be loaded (error was: ${n})`)}},Fa=new Set,ga=(e,t)=>{if(ya.has(e))return ya.get(e);if(!t.appenders[e])return!1;if(Fa.has(e))throw new Error(`Dependency loop detected for appender ${e}.`);Fa.add(e),fa(`Creating appender ${e}`);const n=Aa(e,t);return Fa.delete(e),ya.set(e,n),n},Aa=(e,t)=>{const n=t.appenders[e],r=n.type.configure?n.type:((e,t)=>ha.get(e)||Ca(`./${e}`,t)||Ca(e,t)||require.main&&Ca(la.join(la.dirname(require.main.filename),e),t)||Ca(la.join(process.cwd(),e),t))(n.type,t);return da.throwExceptionIf(t,da.not(r),`appender "${e}" is not valid (type "${n.type}" could not be found)`),r.appender&&fa(`DEPRECATION: Appender ${n.type} exports an appender function.`),r.shutdown&&fa(`DEPRECATION: Appender ${n.type} exports a shutdown function.`),fa(`${e}: clustering.isMaster ? ${Da.isMaster()}`),fa(`${e}: appenderModule is ${F.default.inspect(r)}`),Da.onlyOnMaster((()=>(fa(`calling appenderModule.configure for ${e} / ${n.type}`),r.configure(ma.modifyConfig(n),Ea,(e=>ga(e,t)),pa))),(()=>{}))},va=e=>{ya.clear(),Fa.clear();const t=[];Object.values(e.categories).forEach((e=>{t.push(...e.appenders)})),Object.keys(e.appenders).forEach((n=>{(t.includes(n)||"tcp-server"===e.appenders[n].type)&&ga(n,e)}))},Sa=()=>{va({appenders:{out:{type:"stdout"}},categories:{default:{appenders:["out"],level:"trace"}}})};Sa(),da.addListener((e=>{da.throwExceptionIf(e,da.not(da.anObject(e.appenders)),'must have a property "appenders" of type object.');const t=Object.keys(e.appenders);da.throwExceptionIf(e,da.not(t.length),"must define at least one appender."),t.forEach((t=>{da.throwExceptionIf(e,da.not(e.appenders[t].type),`appender "${t}" is not valid (must be an object with property "type")`)}))})),da.addListener(va),Au.exports=ya,Au.exports.init=Sa;var wa={exports:{}};!function(e){const t=Nr.exports("log4js:categories"),n=tu,r=gu,u=Au.exports,o=new Map;function i(e,t,n){if(!1===t.inherit)return;const r=n.lastIndexOf(".");if(r<0)return;const u=n.substring(0,r);let o=e.categories[u];o||(o={inherit:!0,appenders:[]}),i(e,o,u),!e.categories[u]&&o.appenders&&o.appenders.length&&o.level&&(e.categories[u]=o),t.appenders=t.appenders||[],t.level=t.level||o.level,o.appenders.forEach((e=>{t.appenders.includes(e)||t.appenders.push(e)})),t.parent=o}function s(e){if(!e.categories)return;Object.keys(e.categories).forEach((t=>{const n=e.categories[t];i(e,n,t)}))}n.addPreProcessingListener((e=>s(e))),n.addListener((e=>{n.throwExceptionIf(e,n.not(n.anObject(e.categories)),'must have a property "categories" of type object.');const t=Object.keys(e.categories);n.throwExceptionIf(e,n.not(t.length),"must define at least one category."),t.forEach((t=>{const o=e.categories[t];n.throwExceptionIf(e,[n.not(o.appenders),n.not(o.level)],`category "${t}" is not valid (must be an object with properties "appenders" and "level")`),n.throwExceptionIf(e,n.not(Array.isArray(o.appenders)),`category "${t}" is not valid (appenders must be an array of appender names)`),n.throwExceptionIf(e,n.not(o.appenders.length),`category "${t}" is not valid (appenders must contain at least one appender name)`),Object.prototype.hasOwnProperty.call(o,"enableCallStack")&&n.throwExceptionIf(e,"boolean"!=typeof o.enableCallStack,`category "${t}" is not valid (enableCallStack must be boolean type)`),o.appenders.forEach((r=>{n.throwExceptionIf(e,n.not(u.get(r)),`category "${t}" is not valid (appender "${r}" is not defined)`)})),n.throwExceptionIf(e,n.not(r.getLevel(o.level)),`category "${t}" is not valid (level "${o.level}" not recognised; valid levels are ${r.levels.join(", ")})`)})),n.throwExceptionIf(e,n.not(e.categories.default),'must define a "default" category.')}));const c=e=>{o.clear();Object.keys(e.categories).forEach((n=>{const i=e.categories[n],s=[];i.appenders.forEach((e=>{s.push(u.get(e)),t(`Creating category ${n}`),o.set(n,{appenders:s,level:r.getLevel(i.level),enableCallStack:i.enableCallStack||!1})}))}))},a=()=>{c({categories:{default:{appenders:["out"],level:"OFF"}}})};a(),n.addListener(c);const l=e=>(t(`configForCategory: searching for config for ${e}`),o.has(e)?(t(`configForCategory: ${e} exists in config, returning it`),o.get(e)):e.indexOf(".")>0?(t(`configForCategory: ${e} has hierarchy, searching for parents`),l(e.substring(0,e.lastIndexOf(".")))):(t("configForCategory: returning config for default category"),l("default")));e.exports=o,e.exports=Object.assign(e.exports,{appendersForCategory:e=>l(e).appenders,getLevelForCategory:e=>l(e).level,setLevelForCategory:(e,n)=>{let r=o.get(e);if(t(`setLevelForCategory: found ${r} for ${e}`),!r){const n=l(e);t(`setLevelForCategory: no config found for category, found ${n} for parents of ${e}`),r={appenders:n.appenders}}r.level=n,o.set(e,r)},getEnableCallStackForCategory:e=>!0===l(e).enableCallStack,setEnableCallStackForCategory:(e,t)=>{l(e).enableCallStack=t},init:a})}(wa);const Oa=Nr.exports("log4js:logger"),ba=Hu,_a=gu,Ba=eo,Pa=wa.exports,ka=tu,xa=/at (?:(.+)\s+\()?(?:(.+?):(\d+)(?::(\d+))?|([^)]+))\)?/;function Na(e,t=4){const n=e.stack.split("\n").slice(t),r=xa.exec(n[0]);return r&&6===r.length?{functionName:r[1],fileName:r[2],lineNumber:parseInt(r[3],10),columnNumber:parseInt(r[4],10),callStack:n.join("\n")}:null}class Ia{constructor(e){if(!e)throw new Error("No category provided.");this.category=e,this.context={},this.parseCallStack=Na,Oa(`Logger created (${this.category}, ${this.level})`)}get level(){return _a.getLevel(Pa.getLevelForCategory(this.category),_a.TRACE)}set level(e){Pa.setLevelForCategory(this.category,_a.getLevel(e,this.level))}get useCallStack(){return Pa.getEnableCallStackForCategory(this.category)}set useCallStack(e){Pa.setEnableCallStackForCategory(this.category,!0===e)}log(e,...t){let n=_a.getLevel(e);n||(this._log(_a.WARN,"log4js:logger.log: invalid value for log-level as first parameter given: ",e),n=_a.INFO),this.isLevelEnabled(n)&&this._log(n,t)}isLevelEnabled(e){return this.level.isLessThanOrEqualTo(e)}_log(e,t){Oa(`sending log data (${e}) to appenders`);const n=new ba(this.category,e,t,this.context,this.useCallStack&&this.parseCallStack(new Error));Ba.send(n)}addContext(e,t){this.context[e]=t}removeContext(e){delete this.context[e]}clearContext(){this.context={}}setParseCallStackFunction(e){this.parseCallStack=e}}function Ta(e){const t=_a.getLevel(e),n=t.toString().toLowerCase().replace(/_([a-z])/g,(e=>e[1].toUpperCase())),r=n[0].toUpperCase()+n.slice(1);Ia.prototype[`is${r}Enabled`]=function(){return this.isLevelEnabled(t)},Ia.prototype[n]=function(...e){this.log(t,...e)}}_a.levels.forEach(Ta),ka.addListener((()=>{_a.levels.forEach(Ta)}));var Ra=Ia;const Ma=gu;function La(e){return e.originalUrl||e.url}function ja(e,t){for(let n=0;ne.source?e.source:e));t=new RegExp(n.join("|"))}return t}(t.nolog);return(e,i,s)=>{if(e._logging)return s();if(o&&o.test(e.originalUrl))return s();if(n.isLevelEnabled(r)||"auto"===t.level){const o=new Date,{writeHead:s}=i;e._logging=!0,i.writeHead=(e,t)=>{i.writeHead=s,i.writeHead(e,t),i.__statusCode=e,i.__headers=t||{}},i.on("finish",(()=>{i.responseTime=new Date-o,i.statusCode&&"auto"===t.level&&(r=Ma.INFO,i.statusCode>=300&&(r=Ma.WARN),i.statusCode>=400&&(r=Ma.ERROR)),r=function(e,t,n){let r=t;if(n){const t=n.find((t=>{let n=!1;return n=t.from&&t.to?e>=t.from&&e<=t.to:-1!==t.codes.indexOf(e),n}));t&&(r=Ma.getLevel(t.level,r))}return r}(i.statusCode,r,t.statusRules);const s=function(e,t,n){const r=[];return r.push({token:":url",replacement:La(e)}),r.push({token:":protocol",replacement:e.protocol}),r.push({token:":hostname",replacement:e.hostname}),r.push({token:":method",replacement:e.method}),r.push({token:":status",replacement:t.__statusCode||t.statusCode}),r.push({token:":response-time",replacement:t.responseTime}),r.push({token:":date",replacement:(new Date).toUTCString()}),r.push({token:":referrer",replacement:e.headers.referer||e.headers.referrer||""}),r.push({token:":http-version",replacement:`${e.httpVersionMajor}.${e.httpVersionMinor}`}),r.push({token:":remote-addr",replacement:e.headers["x-forwarded-for"]||e.ip||e._remoteAddress||e.socket&&(e.socket.remoteAddress||e.socket.socket&&e.socket.socket.remoteAddress)}),r.push({token:":user-agent",replacement:e.headers["user-agent"]}),r.push({token:":content-length",replacement:t.getHeader("content-length")||t.__headers&&t.__headers["Content-Length"]||"-"}),r.push({token:/:req\[([^\]]+)]/g,replacement:(t,n)=>e.headers[n.toLowerCase()]}),r.push({token:/:res\[([^\]]+)]/g,replacement:(e,n)=>t.getHeader(n.toLowerCase())||t.__headers&&t.__headers[n]}),(e=>{const t=e.concat();for(let e=0;eja(e,s)));t&&n.log(r,t)}else n.log(r,ja(u,s));t.context&&n.removeContext("res")}))}return s()}},nl=Va;let rl=!1;function ul(e){if(!rl)return;Ua("Received log event ",e);Za.appendersForCategory(e.categoryName).forEach((t=>{t(e)}))}function ol(e){rl&&il();let t=e;return"string"==typeof t&&(t=function(e){Ua(`Loading configuration from ${e}`);try{return JSON.parse(Wa.readFileSync(e,"utf8"))}catch(t){throw new Error(`Problem reading config from file "${e}". Error was ${t.message}`,t)}}(e)),Ua(`Configuration is ${t}`),Ka.configure(za(t)),el.onMessage(ul),rl=!0,sl}function il(e){Ua("Shutdown called. Disabling all log writing."),rl=!1;const t=Array.from(Xa.values());Xa.init(),Za.init();const n=t.reduceRight(((e,t)=>t.shutdown?e+1:e),0);if(0===n)return Ua("No appenders with shutdown functions found."),void 0!==e&&e();let r,u=0;function o(t){r=r||t,u+=1,Ua(`Appender shutdowns complete: ${u} / ${n}`),u>=n&&(Ua("All shutdown functions completed."),e&&e(r))}return Ua(`Found ${n} appenders with shutdown functions.`),t.filter((e=>e.shutdown)).forEach((e=>e.shutdown(o))),null}const sl={getLogger:function(e){return rl||ol(process.env.LOG4JS_CONFIG||{appenders:{out:{type:"stdout"}},categories:{default:{appenders:["out"],level:"OFF"}}}),new Qa(e||"default")},configure:ol,shutdown:il,connectLogger:tl,levels:Ya,addLayout:qa.addLayout,recording:function(){return nl}};var cl=sl,al={};Object.defineProperty(al,"__esModule",{value:!0}),al.levelMap=al.getLevel=al.setCategoriesLevel=al.getConfiguration=al.setConfiguration=void 0;const ll=cl;let fl={appenders:{debug:{type:"stdout",layout:{type:"pattern",pattern:"[%d] > hvigor %p %c %[%m%]"}},info:{type:"stdout",layout:{type:"pattern",pattern:"[%d] > hvigor %[%m%]"}},"no-pattern-info":{type:"stdout",layout:{type:"pattern",pattern:"%m"}},wrong:{type:"stderr",layout:{type:"pattern",pattern:"[%d] > hvigor %[%p: %m%]"}},"just-debug":{type:"logLevelFilter",appender:"debug",level:"debug",maxLevel:"debug"},"just-info":{type:"logLevelFilter",appender:"info",level:"info",maxLevel:"info"},"just-wrong":{type:"logLevelFilter",appender:"wrong",level:"warn",maxLevel:"error"}},categories:{default:{appenders:["just-debug","just-info","just-wrong"],level:"debug"},"no-pattern-info":{appenders:["no-pattern-info"],level:"info"}}};al.setConfiguration=e=>{fl=e};al.getConfiguration=()=>fl;let dl=ll.levels.DEBUG;al.setCategoriesLevel=(e,t)=>{dl=e;const n=fl.categories;for(const r in n)(null==t?void 0:t.includes(r))||Object.prototype.hasOwnProperty.call(n,r)&&(n[r].level=e.levelStr)};al.getLevel=()=>dl,al.levelMap=new Map([["ALL",ll.levels.ALL],["MARK",ll.levels.MARK],["TRACE",ll.levels.TRACE],["DEBUG",ll.levels.DEBUG],["INFO",ll.levels.INFO],["WARN",ll.levels.WARN],["ERROR",ll.levels.ERROR],["FATAL",ll.levels.FATAL],["OFF",ll.levels.OFF]]);var Dl=w&&w.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var u=Object.getOwnPropertyDescriptor(t,n);u&&!("get"in u?!t.__esModule:u.writable||u.configurable)||(u={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,u)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),pl=w&&w.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),El=w&&w.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&Dl(t,e,n);return pl(t,e),t};Object.defineProperty(xr,"__esModule",{value:!0}),xr.evaluateLogLevel=xr.HvigorLogger=void 0;const ml=El(cl),hl=cl,yl=El(F.default),Cl=al;class Fl{constructor(e){ml.configure((0,Cl.getConfiguration)()),this._logger=ml.getLogger(e),this._logger.level=(0,Cl.getLevel)()}static getLogger(e){return new Fl(e)}log(e,...t){this._logger.log(e,...t)}debug(e,...t){this._logger.debug(e,...t)}info(e,...t){this._logger.info(e,...t)}warn(e,...t){void 0!==e&&""!==e&&this._logger.warn(e,...t)}error(e,...t){this._logger.error(e,...t)}_printTaskExecuteInfo(e,t){this.info(`Finished :${e}... after ${t}`)}_printFailedTaskInfo(e){this.error(`Failed :${e}... `)}_printDisabledTaskInfo(e){this.info(`Disabled :${e}... `)}_printUpToDateTaskInfo(e){this.info(`UP-TO-DATE :${e}... `)}errorMessageExit(e,...t){throw new Error(yl.format(e,...t))}errorExit(e,t,...n){t&&this._logger.error(t,n),this._logger.error(e.stack)}setLevel(e,t){(0,Cl.setCategoriesLevel)(e,t),ml.shutdown(),ml.configure((0,Cl.getConfiguration)())}getLevel(){return this._logger.level}configure(e){const t=(0,Cl.getConfiguration)(),n={appenders:{...t.appenders,...e.appenders},categories:{...t.categories,...e.categories}};(0,Cl.setConfiguration)(n),ml.shutdown(),ml.configure(n)}}xr.HvigorLogger=Fl,xr.evaluateLogLevel=function(e,t){t.debug?e.setLevel(hl.levels.DEBUG):t.warn?e.setLevel(hl.levels.WARN):t.error?e.setLevel(hl.levels.ERROR):e.setLevel(hl.levels.INFO)};var gl=w&&w.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(X,"__esModule",{value:!0}),X.parseJsonText=X.parseJsonFile=void 0;const Al=Z,vl=gl(kr),Sl=gl(p.default),wl=gl(E.default),Ol=xr.HvigorLogger.getLogger("parse-json-util");var bl;!function(e){e[e.Char=0]="Char",e[e.EOF=1]="EOF",e[e.Identifier=2]="Identifier"}(bl||(bl={}));let _l,Bl,Pl,kl,xl,Nl,Il="start",Tl=[],Rl=0,Ml=1,Ll=0,jl=!1,$l="default",Hl="'",Jl=1;function Gl(e,t=!1){Bl=String(e),Il="start",Tl=[],Rl=0,Ml=1,Ll=0,kl=void 0,jl=t;do{_l=Vl(),Xl[Il]()}while("eof"!==_l.type);return kl}function Vl(){for($l="default",xl="",Hl="'",Jl=1;;){Nl=Ul();const e=zl[$l]();if(e)return e}}function Ul(){if(Bl[Rl])return String.fromCodePoint(Bl.codePointAt(Rl))}function Wl(){const e=Ul();return"\n"===e?(Ml++,Ll=0):e?Ll+=e.length:Ll++,e&&(Rl+=e.length),e}X.parseJsonFile=function(e,t=!1,n="utf-8"){const r=vl.default.readFileSync(Sl.default.resolve(e),{encoding:n});try{return Gl(r,t)}catch(t){if(t instanceof SyntaxError){const n=t.message.split("at");2===n.length&&Ol.errorMessageExit(`${n[0].trim()}${wl.default.EOL}\t at ${e}:${n[1].trim()}`)}Ol.errorMessageExit(`${e} is not in valid JSON/JSON5 format.`)}},X.parseJsonText=Gl;const zl={default(){switch(Nl){case"/":return Wl(),void($l="comment");case void 0:return Wl(),Kl("eof")}if(!Al.JudgeUtil.isIgnoreChar(Nl)&&!Al.JudgeUtil.isSpaceSeparator(Nl))return zl[Il]();Wl()},start(){$l="value"},beforePropertyName(){switch(Nl){case"$":case"_":return xl=Wl(),void($l="identifierName");case"\\":return Wl(),void($l="identifierNameStartEscape");case"}":return Kl("punctuator",Wl());case'"':case"'":return Hl=Nl,Wl(),void($l="string")}if(Al.JudgeUtil.isIdStartChar(Nl))return xl+=Wl(),void($l="identifierName");throw tf(bl.Char,Wl())},afterPropertyName(){if(":"===Nl)return Kl("punctuator",Wl());throw tf(bl.Char,Wl())},beforePropertyValue(){$l="value"},afterPropertyValue(){switch(Nl){case",":case"}":return Kl("punctuator",Wl())}throw tf(bl.Char,Wl())},beforeArrayValue(){if("]"===Nl)return Kl("punctuator",Wl());$l="value"},afterArrayValue(){switch(Nl){case",":case"]":return Kl("punctuator",Wl())}throw tf(bl.Char,Wl())},end(){throw tf(bl.Char,Wl())},comment(){switch(Nl){case"*":return Wl(),void($l="multiLineComment");case"/":return Wl(),void($l="singleLineComment")}throw tf(bl.Char,Wl())},multiLineComment(){switch(Nl){case"*":return Wl(),void($l="multiLineCommentAsterisk");case void 0:throw tf(bl.Char,Wl())}Wl()},multiLineCommentAsterisk(){switch(Nl){case"*":return void Wl();case"/":return Wl(),void($l="default");case void 0:throw tf(bl.Char,Wl())}Wl(),$l="multiLineComment"},singleLineComment(){switch(Nl){case"\n":case"\r":case"\u2028":case"\u2029":return Wl(),void($l="default");case void 0:return Wl(),Kl("eof")}Wl()},value(){switch(Nl){case"{":case"[":return Kl("punctuator",Wl());case"n":return Wl(),ql("ull"),Kl("null",null);case"t":return Wl(),ql("rue"),Kl("boolean",!0);case"f":return Wl(),ql("alse"),Kl("boolean",!1);case"-":case"+":return"-"===Wl()&&(Jl=-1),void($l="numerical");case".":case"0":case"I":case"N":return void($l="numerical");case'"':case"'":return Hl=Nl,Wl(),xl="",void($l="string")}if(void 0===Nl||!Al.JudgeUtil.isDigitWithoutZero(Nl))throw tf(bl.Char,Wl());$l="numerical"},numerical(){switch(Nl){case".":return xl=Wl(),void($l="decimalPointLeading");case"0":return xl=Wl(),void($l="zero");case"I":return Wl(),ql("nfinity"),Kl("numeric",Jl*(1/0));case"N":return Wl(),ql("aN"),Kl("numeric",NaN)}if(void 0!==Nl&&Al.JudgeUtil.isDigitWithoutZero(Nl))return xl=Wl(),void($l="decimalInteger");throw tf(bl.Char,Wl())},zero(){switch(Nl){case".":case"e":case"E":return void($l="decimal");case"x":case"X":return xl+=Wl(),void($l="hexadecimal")}return Kl("numeric",0)},decimalInteger(){switch(Nl){case".":case"e":case"E":return void($l="decimal")}if(!Al.JudgeUtil.isDigit(Nl))return Kl("numeric",Jl*Number(xl));xl+=Wl()},decimal(){switch(Nl){case".":xl+=Wl(),$l="decimalFraction";break;case"e":case"E":xl+=Wl(),$l="decimalExponent"}},decimalPointLeading(){if(Al.JudgeUtil.isDigit(Nl))return xl+=Wl(),void($l="decimalFraction");throw tf(bl.Char,Wl())},decimalFraction(){switch(Nl){case"e":case"E":return xl+=Wl(),void($l="decimalExponent")}if(!Al.JudgeUtil.isDigit(Nl))return Kl("numeric",Jl*Number(xl));xl+=Wl()},decimalExponent(){switch(Nl){case"+":case"-":return xl+=Wl(),void($l="decimalExponentSign")}if(Al.JudgeUtil.isDigit(Nl))return xl+=Wl(),void($l="decimalExponentInteger");throw tf(bl.Char,Wl())},decimalExponentSign(){if(Al.JudgeUtil.isDigit(Nl))return xl+=Wl(),void($l="decimalExponentInteger");throw tf(bl.Char,Wl())},decimalExponentInteger(){if(!Al.JudgeUtil.isDigit(Nl))return Kl("numeric",Jl*Number(xl));xl+=Wl()},hexadecimal(){if(Al.JudgeUtil.isHexDigit(Nl))return xl+=Wl(),void($l="hexadecimalInteger");throw tf(bl.Char,Wl())},hexadecimalInteger(){if(!Al.JudgeUtil.isHexDigit(Nl))return Kl("numeric",Jl*Number(xl));xl+=Wl()},identifierNameStartEscape(){if("u"!==Nl)throw tf(bl.Char,Wl());Wl();const e=Yl();switch(e){case"$":case"_":break;default:if(!Al.JudgeUtil.isIdStartChar(e))throw tf(bl.Identifier)}xl+=e,$l="identifierName"},identifierName(){switch(Nl){case"$":case"_":case"‌":case"‍":return void(xl+=Wl());case"\\":return Wl(),void($l="identifierNameEscape")}if(!Al.JudgeUtil.isIdContinueChar(Nl))return Kl("identifier",xl);xl+=Wl()},identifierNameEscape(){if("u"!==Nl)throw tf(bl.Char,Wl());Wl();const e=Yl();switch(e){case"$":case"_":case"‌":case"‍":break;default:if(!Al.JudgeUtil.isIdContinueChar(e))throw tf(bl.Identifier)}xl+=e,$l="identifierName"},string(){switch(Nl){case"\\":return Wl(),void(xl+=function(){const e=Ul(),t=function(){switch(Ul()){case"b":return Wl(),"\b";case"f":return Wl(),"\f";case"n":return Wl(),"\n";case"r":return Wl(),"\r";case"t":return Wl(),"\t";case"v":return Wl(),"\v"}return}();if(t)return t;switch(e){case"0":if(Wl(),Al.JudgeUtil.isDigit(Ul()))throw tf(bl.Char,Wl());return"\0";case"x":return Wl(),function(){let e="",t=Ul();if(!Al.JudgeUtil.isHexDigit(t))throw tf(bl.Char,Wl());if(e+=Wl(),t=Ul(),!Al.JudgeUtil.isHexDigit(t))throw tf(bl.Char,Wl());return e+=Wl(),String.fromCodePoint(parseInt(e,16))}();case"u":return Wl(),Yl();case"\n":case"\u2028":case"\u2029":return Wl(),"";case"\r":return Wl(),"\n"===Ul()&&Wl(),""}if(void 0===e||Al.JudgeUtil.isDigitWithoutZero(e))throw tf(bl.Char,Wl());return Wl()}());case'"':case"'":if(Nl===Hl){const e=Kl("string",xl);return Wl(),e}return void(xl+=Wl());case"\n":case"\r":case void 0:throw tf(bl.Char,Wl());case"\u2028":case"\u2029":!function(e){Ol.warn(`JSON5: '${ef(e)}' in strings is not valid ECMAScript; consider escaping.`)}(Nl)}xl+=Wl()}};function Kl(e,t){return{type:e,value:t,line:Ml,column:Ll}}function ql(e){for(const t of e){if(Ul()!==t)throw tf(bl.Char,Wl());Wl()}}function Yl(){let e="",t=4;for(;t-- >0;){const t=Ul();if(!Al.JudgeUtil.isHexDigit(t))throw tf(bl.Char,Wl());e+=Wl()}return String.fromCodePoint(parseInt(e,16))}const Xl={start(){if("eof"===_l.type)throw tf(bl.EOF);Zl()},beforePropertyName(){switch(_l.type){case"identifier":case"string":return Pl=_l.value,void(Il="afterPropertyName");case"punctuator":return void Ql();case"eof":throw tf(bl.EOF)}},afterPropertyName(){if("eof"===_l.type)throw tf(bl.EOF);Il="beforePropertyValue"},beforePropertyValue(){if("eof"===_l.type)throw tf(bl.EOF);Zl()},afterPropertyValue(){if("eof"===_l.type)throw tf(bl.EOF);switch(_l.value){case",":return void(Il="beforePropertyName");case"}":Ql()}},beforeArrayValue(){if("eof"===_l.type)throw tf(bl.EOF);"punctuator"!==_l.type||"]"!==_l.value?Zl():Ql()},afterArrayValue(){if("eof"===_l.type)throw tf(bl.EOF);switch(_l.value){case",":return void(Il="beforeArrayValue");case"]":Ql()}},end(){}};function Zl(){const e=function(){let e;switch(_l.type){case"punctuator":switch(_l.value){case"{":e={};break;case"[":e=[]}break;case"null":case"boolean":case"numeric":case"string":e=_l.value}return e}();if(jl&&"object"==typeof e&&(e._line=Ml,e._column=Ll),void 0===kl)kl=e;else{const t=Tl[Tl.length-1];Array.isArray(t)?jl&&"object"!=typeof e?t.push({value:e,_line:Ml,_column:Ll}):t.push(e):t[Pl]=jl&&"object"!=typeof e?{value:e,_line:Ml,_column:Ll}:e}!function(e){if(e&&"object"==typeof e)Tl.push(e),Il=Array.isArray(e)?"beforeArrayValue":"beforePropertyName";else{const e=Tl[Tl.length-1];Il=e?Array.isArray(e)?"afterArrayValue":"afterPropertyValue":"end"}}(e)}function Ql(){Tl.pop();const e=Tl[Tl.length-1];Il=e?Array.isArray(e)?"afterArrayValue":"afterPropertyValue":"end"}function ef(e){const t={"'":"\\'",'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\v":"\\v","\0":"\\0","\u2028":"\\u2028","\u2029":"\\u2029"};if(t[e])return t[e];if(e<" "){const t=e.charCodeAt(0).toString(16);return`\\x${`00${t}`.substring(t.length)}`}return e}function tf(e,t){let n="";switch(e){case bl.Char:n=void 0===t?`JSON5: invalid end of input at ${Ml}:${Ll}`:`JSON5: invalid character '${ef(t)}' at ${Ml}:${Ll}`;break;case bl.EOF:n=`JSON5: invalid end of input at ${Ml}:${Ll}`;break;case bl.Identifier:Ll-=5,n=`JSON5: invalid identifier character at ${Ml}:${Ll}`}const r=new nf(n);return r.lineNumber=Ml,r.columnNumber=Ll,r}class nf extends SyntaxError{}var rf=w&&w.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var u=Object.getOwnPropertyDescriptor(t,n);u&&!("get"in u?!t.__esModule:u.writable||u.configurable)||(u={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,u)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),uf=w&&w.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),of=w&&w.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&rf(t,e,n);return uf(t,e),t};Object.defineProperty(Y,"__esModule",{value:!0});var sf=Y.cleanWorkSpace=Ff=Y.executeInstallHvigor=yf=Y.isHvigorInstalled=mf=Y.isAllDependenciesInstalled=void 0;const cf=of(D.default),af=of(p.default),lf=b,ff=j,df=$,Df=X;let pf,Ef;var mf=Y.isAllDependenciesInstalled=function(){function e(e){const t=null==e?void 0:e.dependencies;return void 0===t?0:Object.getOwnPropertyNames(t).length}if(pf=gf(),Ef=Af(),e(pf)+1!==e(Ef))return!1;for(const e in null==pf?void 0:pf.dependencies)if(!(0,ff.hasNpmPackInPaths)(e,[lf.HVIGOR_PROJECT_DEPENDENCIES_HOME])||!hf(e,pf,Ef))return!1;return!0};function hf(e,t,n){return void 0!==n.dependencies&&(0,ff.offlinePluginConversion)(lf.HVIGOR_PROJECT_ROOT_DIR,t.dependencies[e])===n.dependencies[e]}var yf=Y.isHvigorInstalled=function(){return pf=gf(),Ef=Af(),(0,ff.hasNpmPackInPaths)(lf.HVIGOR_ENGINE_PACKAGE_NAME,[lf.HVIGOR_PROJECT_DEPENDENCIES_HOME])&&(0,ff.offlinePluginConversion)(lf.HVIGOR_PROJECT_ROOT_DIR,pf.hvigorVersion)===Ef.dependencies[lf.HVIGOR_ENGINE_PACKAGE_NAME]};const Cf={cwd:lf.HVIGOR_PROJECT_DEPENDENCIES_HOME,stdio:["inherit","inherit","inherit"]};var Ff=Y.executeInstallHvigor=function(){(0,df.logInfoPrintConsole)("Hvigor installing...");const e={dependencies:{}};e.dependencies[lf.HVIGOR_ENGINE_PACKAGE_NAME]=(0,ff.offlinePluginConversion)(lf.HVIGOR_PROJECT_ROOT_DIR,pf.hvigorVersion);try{cf.mkdirSync(lf.HVIGOR_PROJECT_DEPENDENCIES_HOME,{recursive:!0});const t=af.resolve(lf.HVIGOR_PROJECT_DEPENDENCIES_HOME,lf.DEFAULT_PACKAGE_JSON);cf.writeFileSync(t,JSON.stringify(e))}catch(e){(0,df.logErrorAndExit)(e)}!function(){const e=["config","set","store-dir",lf.HVIGOR_PNPM_STORE_PATH];(0,ff.executeCommand)(lf.HVIGOR_WRAPPER_PNPM_SCRIPT_PATH,e,Cf)}(),(0,ff.executeCommand)(lf.HVIGOR_WRAPPER_PNPM_SCRIPT_PATH,["install"],Cf)};function gf(){const e=af.resolve(lf.HVIGOR_PROJECT_WRAPPER_HOME,lf.DEFAULT_HVIGOR_CONFIG_JSON_FILE_NAME);return cf.existsSync(e)||(0,df.logErrorAndExit)(`Error: Hvigor config file ${e} does not exist.`),(0,Df.parseJsonFile)(e)}function Af(){return cf.existsSync(lf.HVIGOR_PROJECT_DEPENDENCY_PACKAGE_JSON_PATH)?(0,Df.parseJsonFile)(lf.HVIGOR_PROJECT_DEPENDENCY_PACKAGE_JSON_PATH):{dependencies:{}}}sf=Y.cleanWorkSpace=function(){if((0,df.logInfoPrintConsole)("Hvigor cleaning..."),!cf.existsSync(lf.HVIGOR_PROJECT_DEPENDENCIES_HOME))return;const e=cf.readdirSync(lf.HVIGOR_PROJECT_DEPENDENCIES_HOME);if(e&&0!==e.length){cf.existsSync(lf.HVIGOR_BOOT_JS_FILE_PATH)&&(0,ff.executeCommand)(process.argv[0],[lf.HVIGOR_BOOT_JS_FILE_PATH,"--stop-daemon"],{});try{e.forEach((e=>{cf.rmSync(af.resolve(lf.HVIGOR_PROJECT_DEPENDENCIES_HOME,e),{recursive:!0})}))}catch(e){(0,df.logErrorAndExit)(`The hvigor build tool cannot be installed. Please manually clear the workspace directory and synchronize the project again.\n\n Workspace Path: ${lf.HVIGOR_PROJECT_DEPENDENCIES_HOME}.`)}}};var vf={},Sf=w&&w.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var u=Object.getOwnPropertyDescriptor(t,n);u&&!("get"in u?!t.__esModule:u.writable||u.configurable)||(u={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,u)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),wf=w&&w.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Of=w&&w.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&Sf(t,e,n);return wf(t,e),t};Object.defineProperty(vf,"__esModule",{value:!0});var bf=vf.executeBuild=void 0;const _f=b,Bf=Of(D.default),Pf=Of(p.default),kf=$;bf=vf.executeBuild=function(){const e=Pf.resolve(_f.HVIGOR_PROJECT_DEPENDENCIES_HOME,"node_modules","@ohos","hvigor","bin","hvigor.js");try{const t=Bf.realpathSync(e);require(t)}catch(t){(0,kf.logErrorAndExit)(`Error: ENOENT: no such file ${e},delete ${_f.HVIGOR_PROJECT_DEPENDENCIES_HOME} and retry.`)}},function(){if(O.checkNpmConifg(),O.environmentHandler(),O.isPnpmAvailable()||O.executeInstallPnpm(),yf()&&mf())bf();else{sf();try{Ff()}catch(e){return void sf()}bf()}}(); \ No newline at end of file diff --git a/HarmonyOS_NEXT/Security/CertificateFramework/hvigorfile.ts b/HarmonyOS_NEXT/Security/CertificateFramework/hvigorfile.ts new file mode 100644 index 0000000000000000000000000000000000000000..6478186902c0c1ad7c966a929c7d6b7d8ae7a9f3 --- /dev/null +++ b/HarmonyOS_NEXT/Security/CertificateFramework/hvigorfile.ts @@ -0,0 +1,2 @@ +// Script for compiling build behavior. It is built in the build plug-in and cannot be modified currently. +export { appTasks } from '@ohos/hvigor-ohos-plugin'; \ No newline at end of file diff --git a/HarmonyOS_NEXT/Security/CertificateFramework/hvigorw b/HarmonyOS_NEXT/Security/CertificateFramework/hvigorw new file mode 100644 index 0000000000000000000000000000000000000000..b4d7760e72934718fc616fcef2806a1c7f04ba34 --- /dev/null +++ b/HarmonyOS_NEXT/Security/CertificateFramework/hvigorw @@ -0,0 +1,61 @@ +# Copyright (c) 2023 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +#!/bin/bash + +# ---------------------------------------------------------------------------- +# Hvigor startup script, version 1.0.0 +# +# Required ENV vars: +# ------------------ +# NODE_HOME - location of a Node home dir +# or +# Add /usr/local/nodejs/bin to the PATH environment variable +# ---------------------------------------------------------------------------- + +HVIGOR_APP_HOME=$(dirname $(readlink -f $0)) +HVIGOR_WRAPPER_SCRIPT=${HVIGOR_APP_HOME}/hvigor/hvigor-wrapper.js +warn() { + echo "" + echo -e "\033[1;33m`date '+[%Y-%m-%d %H:%M:%S]'`$@\033[0m" +} + +error() { + echo "" + echo -e "\033[1;31m`date '+[%Y-%m-%d %H:%M:%S]'`$@\033[0m" +} + +fail() { + error "$@" + exit 1 +} + +# Determine node to start hvigor wrapper script +if [ -n "${NODE_HOME}" ];then + EXECUTABLE_NODE="${NODE_HOME}/bin/node" + if [ ! -x "$EXECUTABLE_NODE" ];then + fail "ERROR: NODE_HOME is set to an invalid directory,check $NODE_HOME\n\nPlease set NODE_HOME in your environment to the location where your nodejs installed" + fi +else + EXECUTABLE_NODE="node" + which ${EXECUTABLE_NODE} > /dev/null 2>&1 || fail "ERROR: NODE_HOME is not set and not 'node' command found in your path" +fi + +# Check hvigor wrapper script +if [ ! -r "$HVIGOR_WRAPPER_SCRIPT" ];then + fail "ERROR: Couldn't find hvigor/hvigor-wrapper.js in ${HVIGOR_APP_HOME}" +fi + +# start hvigor-wrapper script +exec "${EXECUTABLE_NODE}" \ + "${HVIGOR_WRAPPER_SCRIPT}" "$@" diff --git a/HarmonyOS_NEXT/Security/CertificateFramework/hvigorw.bat b/HarmonyOS_NEXT/Security/CertificateFramework/hvigorw.bat new file mode 100644 index 0000000000000000000000000000000000000000..a1ac36f3ea225a16487f8b077dc62b2a44bfeb80 --- /dev/null +++ b/HarmonyOS_NEXT/Security/CertificateFramework/hvigorw.bat @@ -0,0 +1,79 @@ +:: Copyright (c) 2023 Huawei Device Co., Ltd. +:: Licensed under the Apache License, Version 2.0 (the "License"); +:: you may not use this file except in compliance with the License. +:: You may obtain a copy of the License at +:: +:: http://www.apache.org/licenses/LICENSE-2.0 +:: +:: Unless required by applicable law or agreed to in writing, software +:: distributed under the License is distributed on an "AS IS" BASIS, +:: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +:: See the License for the specific language governing permissions and +:: limitations under the License. + +@echo off + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Hvigor startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +set WRAPPER_MODULE_PATH=%APP_HOME%\hvigor\hvigor-wrapper.js +set NODE_EXE=node.exe + +goto start + +:start +@rem Find node.exe +if defined NODE_HOME goto findNodeFromNodeHome + +%NODE_EXE% --version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: NODE_HOME is not set and no 'node' command could be found in your PATH. +echo. +echo Please set the NODE_HOME variable in your environment to match the +echo location of your NodeJs installation. + +goto fail + +:findNodeFromNodeHome +set NODE_HOME=%NODE_HOME:"=% +set NODE_EXE_PATH=%NODE_HOME%/%NODE_EXE% + +if exist "%NODE_EXE_PATH%" goto execute +echo. +echo ERROR: NODE_HOME is not set and no 'node' command could be found in your PATH. +echo. +echo Please set the NODE_HOME variable in your environment to match the +echo location of your NodeJs installation. + +goto fail + +:execute +@rem Execute hvigor +"%NODE_EXE%" %WRAPPER_MODULE_PATH% %* + +if "%ERRORLEVEL%" == "0" goto hvigorwEnd + +:fail +exit /b 1 + +:hvigorwEnd +if "%OS%" == "Windows_NT" endlocal + +:end diff --git a/HarmonyOS_NEXT/Security/CertificateFramework/oh-package.json5 b/HarmonyOS_NEXT/Security/CertificateFramework/oh-package.json5 new file mode 100644 index 0000000000000000000000000000000000000000..40df9cf2e51b47809958689bf9f5efeb017c156a --- /dev/null +++ b/HarmonyOS_NEXT/Security/CertificateFramework/oh-package.json5 @@ -0,0 +1,12 @@ +{ + "license": "ISC", + "devDependencies": { + "@ohos/hypium": "1.0.6" + }, + "author": "", + "name": "certificateframework", + "description": "Please describe the basic information.", + "main": "", + "version": "1.0.0", + "dependencies": {} +} diff --git a/HarmonyOS_NEXT/Security/CertificateFramework/screenshots/device/index.png b/HarmonyOS_NEXT/Security/CertificateFramework/screenshots/device/index.png new file mode 100644 index 0000000000000000000000000000000000000000..a97618f33e39446765ee6e28554b4696cf29f034 Binary files /dev/null and b/HarmonyOS_NEXT/Security/CertificateFramework/screenshots/device/index.png differ diff --git a/HarmonyOS_NEXT/Security/CertificateFramework/screenshots/device/verify_fail.png b/HarmonyOS_NEXT/Security/CertificateFramework/screenshots/device/verify_fail.png new file mode 100644 index 0000000000000000000000000000000000000000..b543bb02a4b968d500fddcfd1fe4f70269c97dc5 Binary files /dev/null and b/HarmonyOS_NEXT/Security/CertificateFramework/screenshots/device/verify_fail.png differ diff --git a/HarmonyOS_NEXT/Security/CertificateFramework/screenshots/device/verify_success.png b/HarmonyOS_NEXT/Security/CertificateFramework/screenshots/device/verify_success.png new file mode 100644 index 0000000000000000000000000000000000000000..b8483b34e1cf1755bfc3c9cce9a5530f1f5183ed Binary files /dev/null and b/HarmonyOS_NEXT/Security/CertificateFramework/screenshots/device/verify_success.png differ diff --git a/HarmonyOS_NEXT/Security/Huks/.gitignore b/HarmonyOS_NEXT/Security/Huks/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..0c38a40677934c22c3027419ed87ba766d8bef3e --- /dev/null +++ b/HarmonyOS_NEXT/Security/Huks/.gitignore @@ -0,0 +1,12 @@ +/oh_modules +/local.properties +/.idea +**/build +/.hvigor +.cxx +/.clangd +/.clang-format +/.clang-tidy +/oh-package-lock.json +/entry/package-lock.json +/entry/.preview \ No newline at end of file diff --git a/HarmonyOS_NEXT/Security/Huks/AppScope/app.json5 b/HarmonyOS_NEXT/Security/Huks/AppScope/app.json5 new file mode 100644 index 0000000000000000000000000000000000000000..db748ab6915c18d79160d448b033e624a17bd488 --- /dev/null +++ b/HarmonyOS_NEXT/Security/Huks/AppScope/app.json5 @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "app": { + "bundleName": "com.samples.huks", + "vendor": "example", + "versionCode": 1000000, + "versionName": "1.0.0", + "icon": "$media:app_icon", + "label": "$string:app_name", + "distributedNotificationEnabled": true + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Security/Huks/AppScope/resources/base/element/string.json b/HarmonyOS_NEXT/Security/Huks/AppScope/resources/base/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..074544cf8799dd445a14ee3fccb3ae5b3e78ba20 --- /dev/null +++ b/HarmonyOS_NEXT/Security/Huks/AppScope/resources/base/element/string.json @@ -0,0 +1,8 @@ +{ + "string": [ + { + "name": "app_name", + "value": "Huks" + } + ] +} diff --git a/HarmonyOS_NEXT/Security/Huks/AppScope/resources/base/media/app_icon.png b/HarmonyOS_NEXT/Security/Huks/AppScope/resources/base/media/app_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ce307a8827bd75456441ceb57d530e4c8d45d36c Binary files /dev/null and b/HarmonyOS_NEXT/Security/Huks/AppScope/resources/base/media/app_icon.png differ diff --git a/HarmonyOS_NEXT/Security/Huks/build-profile.json5 b/HarmonyOS_NEXT/Security/Huks/build-profile.json5 new file mode 100644 index 0000000000000000000000000000000000000000..f591aaacf7f1f9ce8201566c3aa3f83a2dc63053 --- /dev/null +++ b/HarmonyOS_NEXT/Security/Huks/build-profile.json5 @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "app": { + "signingConfigs": [], + "products": [ + { + "name": "default", + "signingConfig": "default", + "compileSdkVersion": "4.0.0(10)", + "compatibleSdkVersion": "4.0.0(10)", + "runtimeOS": "HarmonyOS" + } + ] + }, + "modules": [ + { + "name": "entry", + "srcPath": "./entry", + "targets": [ + { + "name": "default", + "applyToProducts": [ + "default" + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Security/Huks/entry/.gitignore b/HarmonyOS_NEXT/Security/Huks/entry/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..5a6ba80fa3d9498a23ae8ae7d9518f8743fa8a96 --- /dev/null +++ b/HarmonyOS_NEXT/Security/Huks/entry/.gitignore @@ -0,0 +1,4 @@ +/node_modules +/.preview +/build +/.cxx \ No newline at end of file diff --git a/HarmonyOS_NEXT/Security/Huks/entry/build-profile.json5 b/HarmonyOS_NEXT/Security/Huks/entry/build-profile.json5 new file mode 100644 index 0000000000000000000000000000000000000000..7376c96fd06ebf6461fe029fc480a9fb67256a32 --- /dev/null +++ b/HarmonyOS_NEXT/Security/Huks/entry/build-profile.json5 @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "apiType": 'stageMode', + "buildOption": { + }, + "targets": [ + { + "name": "default", + }, + { + "name": "ohosTest", + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Security/Huks/entry/hvigorfile.ts b/HarmonyOS_NEXT/Security/Huks/entry/hvigorfile.ts new file mode 100644 index 0000000000000000000000000000000000000000..b16f61d761cf045e7c454ecefa5db31ce22219df --- /dev/null +++ b/HarmonyOS_NEXT/Security/Huks/entry/hvigorfile.ts @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// Script for compiling build behavior. It is built in the build plug-in and cannot be modified currently. +export { hapTasks } from '@ohos/hvigor-ohos-plugin'; diff --git a/HarmonyOS_NEXT/Security/Huks/entry/oh-package.json5 b/HarmonyOS_NEXT/Security/Huks/entry/oh-package.json5 new file mode 100644 index 0000000000000000000000000000000000000000..a7afd4ec1017198e9d8017e9f28e8e1d786a9e39 --- /dev/null +++ b/HarmonyOS_NEXT/Security/Huks/entry/oh-package.json5 @@ -0,0 +1,9 @@ +{ + "license": "ISC", + "devDependencies": {}, + "name": "entry", + "description": "example description", + "repository": {}, + "version": "1.0.0", + "dependencies": {} +} diff --git a/HarmonyOS_NEXT/Security/Huks/entry/src/main/ets/common/MinAccessControl.ets b/HarmonyOS_NEXT/Security/Huks/entry/src/main/ets/common/MinAccessControl.ets new file mode 100644 index 0000000000000000000000000000000000000000..9d6e4f7b5cf46138cd205b0534e1ed700ed04a60 --- /dev/null +++ b/HarmonyOS_NEXT/Security/Huks/entry/src/main/ets/common/MinAccessControl.ets @@ -0,0 +1,220 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import prompt from '@ohos.promptAction' +import Logger from '../model/Logger' +import { HuksModel } from '../model/HuksModel' + +const TAG: string = '[HUKS]' + +@Component +export struct MinAccessControl { + @State cipherTextinfo: string = '' + @State plainTextinfo: string = '' + @State inputPassword: string = '' + huksModel: HuksModel = new HuksModel() + + build() { + Stack({ alignContent: Alignment.Center }) { + Column() { + GridRow() { + GridCol({ span: { xs: 12, sm: 12, md: 12, lg: 12 } }) { + Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { + List() { + ListItem() { + Row() { + Text($r('app.string.input_save_password')) + .fontSize(16) + .textAlign(TextAlign.Start) + .lineHeight(22) + } + .backgroundColor(0xFFFFFF) + .width('100%') + .height('52vp') + .padding({ top: 4, left: 12, right: 12 }) + } + + ListItem() { + Row() { + TextInput() + .enableKeyboardOnFocus(false) + .margin(4) + .width('90%') + .id('passwordInput') + .fontSize(16) + .textAlign(TextAlign.Start) + .onChange((value: string) => { + this.inputPassword = value + }) + } + .backgroundColor(0xFFFFFF) + .width('100%') + .height('48vp') + .padding({ left: 12, right: 12 }) + } + } + .width('100%') + .height('100%') + .borderRadius(16) + } + } + } + .height('100vp') + .margin({ left: 12, right: 12, bottom: 12 }) + + GridRow() { + GridCol({ span: { xs: 12, sm: 12, md: 12, lg: 12 } }) { + Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { + Column() { + Row() { + Text($r('app.string.cipher_text')) + .fontSize(16) + .textAlign(TextAlign.Start) + .fontWeight(500) + .lineHeight(22) + } + .padding({ left: 12, right: 12 }) + .width('100%') + .height('48vp') + + Row() { + Text() { + Span(this.cipherTextinfo) + .fontSize(16) + .fontWeight(400) + .fontColor(0x808080) + .fontColor('#182431') + }.textAlign(TextAlign.Start) + .id('cipherTextinfo') + } + .padding({ left: 12, right: 12, bottom: 4 }) + .width('100%') + .height('52vp') + } + .borderRadius(16) + .width('100%') + .height('100') + .backgroundColor(0xFFFFFF) + } + } + } + .height('100vp') + .margin({ left: 12, right: 12, bottom: 12 }) + + GridRow() { + GridCol({ span: { xs: 12, sm: 12, md: 12, lg: 12 } }) { + Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { + Column() { + Row() { + Text($r('app.string.plain_text')) + .fontSize(16) + .textAlign(TextAlign.Start) + .fontWeight(500) + .lineHeight(22) + } + .padding({ left: 12, right: 12 }) + .width('100%') + .height('48vp') + + Row() { + Text() { + Span(this.plainTextinfo) + .fontSize(16) + .fontWeight(400) + .fontColor(0x808080) + .fontColor('#182431') + }.textAlign(TextAlign.Start) + .id('plainTextinfo') + } + .padding({ left: 12, right: 12, bottom: 4 }) + .width('100%') + .height('52vp') + } + .borderRadius(16) + .width('100%') + .height('100') + .backgroundColor(0xFFFFFF) + } + } + } + .height('100vp') + .margin({ left: 12, right: 12, bottom: 12 }) + + Column() { + GridRow() { + GridCol({ span: { xs: 12, sm: 12, md: 12, lg: 12 } }) { + Column() { + Button() { + Text($r('app.string.save_password')).fontSize(16).fontWeight(500) + .lineHeight(22) + .fontColor('#FFFFFF') + } + .id('save_password') + .borderRadius(20) + .type(ButtonType.Capsule) + .width('100%') + .height('40vp') + .margin({ bottom: 16 }) + .backgroundColor('#007DFF') + .onClick(() => { + if (this.inputPassword === '') { + prompt.showToast({ + message: 'This message is null.' + }) + } else { + this.huksModel.encryptDataUseSm4(this.inputPassword, (result: string) => { + Logger.info(TAG, `this result = ${result}`) + this.cipherTextinfo = `${result}` + }) + } + }); + + Button() { + Text($r('app.string.read_password')).fontSize(16).fontWeight(500) + .lineHeight(22) + .fontColor('#FFFFFF') + } + .borderRadius(20) + .id('read_password') + .type(ButtonType.Capsule) + .margin({ left: 24, right: 24 }) + .width('100%') + .height('40vp') + .backgroundColor('#007DFF') + .onClick(() => { + + if (this.inputPassword === '') { + prompt.showToast({ + message: 'This message is null.' + }) + } else { + this.huksModel.decryptDataUseSm4((result: string) => { + Logger.info(TAG, `this result = ${result}`) + this.plainTextinfo = `${result}` + }) + } + + }); + } + } + }.margin({ left: 24, right: 24 }) + }.width('100%').height('296vp').justifyContent(FlexAlign.End) + } + .width('100%') + .height('100%') + } + } +} + diff --git a/HarmonyOS_NEXT/Security/Huks/entry/src/main/ets/common/NewKey.ets b/HarmonyOS_NEXT/Security/Huks/entry/src/main/ets/common/NewKey.ets new file mode 100644 index 0000000000000000000000000000000000000000..b3309704ecdd1774b26ecee5123ef820afbf2200 --- /dev/null +++ b/HarmonyOS_NEXT/Security/Huks/entry/src/main/ets/common/NewKey.ets @@ -0,0 +1,104 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import prompt from '@ohos.promptAction' +import Logger from '../model/Logger' +import { HuksModel } from '../model/HuksModel' + +const TAG: string = '[HUKS]' + +@Component +export struct NewKey { + @State cipherTextinfo: string = '' + @State plainTextinfo: string = '' + @State message: string = '' + private huksModel: HuksModel = new HuksModel() + + build() { + Stack({alignContent:Alignment.Center}) { + Column() { + Text($r('app.string.input_message')).fontSize(20).margin({ left: 1, top:1 }) + TextInput() + .enableKeyboardOnFocus(false) + .margin(4) + .width('90%') + .id('encryptionInput') + .onChange((value: string) => { + this.message = value + }) + + Row() { + Button($r('app.string.send_message')) + .margin(10) + .fontSize(20) + .width('45%') + .height('6%') + .id('encryptionBtn') + .onClick(() => { + if (this.message === '') { + prompt.showToast({ + message: 'This message is null.' + }) + } else { + this.huksModel.encryptData(this.message, (result: string) => { + Logger.info(TAG, `this result = ${result}`) + this.cipherTextinfo = `${result}` + }) + } + }) + } + + Text(this.cipherTextinfo) + .id('encryptionInfo') + .fontSize(18) + .width('85%') + .height('25%') + .border({ width: 2, color: Color.Black }) + .margin(10) + + Row() { + Button($r('app.string.recieve_message')) + .margin(10) + .fontSize(20) + .width('45%') + .height('6%') + .id('decryptionBtn') + .onClick(() => { + if (this.message === '') { + prompt.showToast({ + message: 'This message is null.' + }) + } else { + this.huksModel.decryptData((result: string) => { + Logger.info(TAG, `this result = ${result}`) + this.plainTextinfo = `${result}` + }) + } + }) + } + + Text(this.plainTextinfo) + .id('decryptionInfo') + .fontSize(18) + .width('85%') + .height('25%') + .border({ width: 2, color: Color.Black }) + .margin(10) + } + } + .width('100%') + .height('100%') + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Security/Huks/entry/src/main/ets/common/OldKey.ets b/HarmonyOS_NEXT/Security/Huks/entry/src/main/ets/common/OldKey.ets new file mode 100644 index 0000000000000000000000000000000000000000..4d9df604d8e78567a7cb61daaaa155bf1f9410ef --- /dev/null +++ b/HarmonyOS_NEXT/Security/Huks/entry/src/main/ets/common/OldKey.ets @@ -0,0 +1,113 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import prompt from '@ohos.promptAction' +import Logger from '../model/Logger' +import { HuksModel } from '../model/HuksModel' + +const TAG: string = '[HUKS]' + +@Component +export struct OldKey { + @State cipherTextInfo: string = '' + @State plainTextInfo: string = '' + @State message: string = '' + private huksModel: HuksModel = new HuksModel() + + build() { + Stack({alignContent:Alignment.Center}) { + Column() { + Text($r('app.string.input_message')).fontSize(20).margin({ left: 1, top:1 }) + TextInput() + .enableKeyboardOnFocus(false) + .margin(4) + .width('90%') + .id('encryptionInput') + .onChange((value: string) => { + this.message = value + }) + + Row() { + Button($r('app.string.send_message')) + .margin(10) + .fontSize(20) + .width('45%') + .height('6%') + .id('encryptionBtn') + .onClick(() => { + if (this.message === '') { + prompt.showToast({ + message: 'This message is null.' + }) + } else { + this.huksModel.encryptDataUserOldKey(this.message, (result: string) => { + Logger.info(TAG, `this result = ${result}`) + this.cipherTextInfo = `${result}` + }) + } + }) + } + + Text(this.cipherTextInfo) + .id('encryptionInfo') + .fontSize(18) + .width('85%') + .height('25%') + .border({ width: 2, color: Color.Black }) + .margin(10) + + Row() { + Button($r('app.string.recieve_message')) + .margin(10) + .fontSize(20) + .width('45%') + .height('6%') + .id('decryptionBtn') + .onClick(() => { + if (this.message === '') { + prompt.showToast({ + message: 'This message is null.' + }) + } else { + this.huksModel.decryptDataUserOldKey((result: string) => { + Logger.info(TAG, `this result = ${result}`) + this.plainTextInfo = `${result}` + }) + } + }) + Button($r('app.string.import_key')) + .margin(10) + .fontSize(20) + .width('45%') + .height('6%') + .id('importKeyBtn') + .onClick(() => { + this.huksModel.importKey() + }) + } + + Text(this.plainTextInfo) + .id('decryptionInfo') + .fontSize(18) + .width('85%') + .height('25%') + .border({ width: 2, color: Color.Black }) + .margin(10) + } + } + .width('100%') + .height('100%') + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Security/Huks/entry/src/main/ets/entryability/EntryAbility.ets b/HarmonyOS_NEXT/Security/Huks/entry/src/main/ets/entryability/EntryAbility.ets new file mode 100644 index 0000000000000000000000000000000000000000..9d10c8e452093bb8253ab2af313cf4ce1f8c853d --- /dev/null +++ b/HarmonyOS_NEXT/Security/Huks/entry/src/main/ets/entryability/EntryAbility.ets @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import UIAbility from '@ohos.app.ability.UIAbility'; +import AbilityConstant from '@ohos.app.ability.AbilityConstant'; +import Logger from '../model/Logger'; +import Want from '@ohos.app.ability.Want'; +import window from '@ohos.window'; + +export default class EntryAbility extends UIAbility { + onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) { + Logger.info('testTag', 'Ability onCreate'); + } + + onDestroy() { + Logger.info('testTag', 'Ability onDestroy'); + } + + onWindowStageCreate(windowStage: window.WindowStage): void { + // Main window is created, set main page for this ability + Logger.info('testTag', 'Ability onWindowStageCreate'); + + windowStage.loadContent('pages/Index', (err, data) => { + if (err.code) { + Logger.error('testTag', `Failed to load the content. Cause: ${JSON.stringify(err) ?? ''}`); + return; + } + Logger.info('testTag', `Succeeded in loading the content. Data: ${JSON.stringify(data) ?? ''}`); + }); + } + + onWindowStageDestroy() { + // Main window is destroyed, release UI related resources + Logger.info('testTag', 'Ability onWindowStageDestroy'); + } + + onForeground() { + // Ability has brought to foreground + Logger.info('testTag', 'Ability onForeground'); + } + + onBackground() { + // Ability has back to background + Logger.info('testTag', 'Ability onBackground'); + } +} diff --git a/HarmonyOS_NEXT/Security/Huks/entry/src/main/ets/model/HuksModel.ets b/HarmonyOS_NEXT/Security/Huks/entry/src/main/ets/model/HuksModel.ets new file mode 100644 index 0000000000000000000000000000000000000000..d4d19c0b69a9d514890c093ebe2da430df798a52 --- /dev/null +++ b/HarmonyOS_NEXT/Security/Huks/entry/src/main/ets/model/HuksModel.ets @@ -0,0 +1,595 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import util from '@ohos.util'; +import huks from '@ohos.security.huks'; +import userAuth from '@ohos.userIAM.userAuth'; +import promptAction from '@ohos.promptAction'; +import Logger from './Logger'; + +const TAG: string = '[HUKS]'; +const CHALLENG_LEN = 6; +const IV: string = '001122334455'; +let cipherData: Uint8Array; +let challengeNew = new Uint8Array(CHALLENG_LEN); + +// 密钥明文 +let PLAIN_TEXT_SIZE_16 = new Uint8Array([ + 0xfb, 0x8b, 0x9f, 0x12, 0xa0, 0x83, 0x19, 0xbe, + 0x64, 0x0b, 0x88, 0x96, 0xe2, 0xfa, 0x77, 0xbc +]); + +class HuksProperties { + tag: huks.HuksTag = huks.HuksTag.HUKS_TAG_ALGORITHM + value: huks.HuksKeyAlg | huks.HuksKeySize | huks.HuksKeyPurpose | huks.HuksKeyDigest | + huks.HuksKeyPadding | huks.HuksCipherMode | Uint8Array = huks.HuksKeyAlg.HUKS_ALG_ECC +} + +function stringToUint8Array(str: string): Uint8Array { + let arr: number[] = []; + for (let i = 0, j = str.length; i < j; ++i) { + arr.push(str.charCodeAt(i)); + } + return new Uint8Array(arr); +} + +// 生成Sm4密钥属性信息 +function getSm4GenerateProperties(properties: HuksProperties[]): void { + let index = 0; + properties[index++] = { + tag: huks.HuksTag.HUKS_TAG_ALGORITHM, + value: huks.HuksKeyAlg.HUKS_ALG_SM4 + }; + properties[index++] = { + tag: huks.HuksTag.HUKS_TAG_KEY_SIZE, + value: huks.HuksKeySize.HUKS_SM4_KEY_SIZE_128 + }; + properties[index++] = { + tag: huks.HuksTag.HUKS_TAG_PURPOSE, + value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_ENCRYPT | + huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_DECRYPT + }; + return; +} + +// Sm4加密密钥属性信息 +function getSm4EncryptProperties(properties: HuksProperties[]): void { + let index = 0; + properties[index++] = { + tag: huks.HuksTag.HUKS_TAG_ALGORITHM, + value: huks.HuksKeyAlg.HUKS_ALG_SM4 + }; + properties[index++] = { + tag: huks.HuksTag.HUKS_TAG_KEY_SIZE, + value: huks.HuksKeySize.HUKS_SM4_KEY_SIZE_128, + }; + properties[index++] = { + tag: huks.HuksTag.HUKS_TAG_PURPOSE, + value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_ENCRYPT + }; + properties[index++] = { + tag: huks.HuksTag.HUKS_TAG_BLOCK_MODE, + value: huks.HuksCipherMode.HUKS_MODE_CBC + }; + properties[index++] = { + tag: huks.HuksTag.HUKS_TAG_PADDING, + value: huks.HuksKeyPadding.HUKS_PADDING_PKCS7 + }; + properties[index++] = { + tag: huks.HuksTag.HUKS_TAG_IV, + value: stringToUint8Array(IV) + }; + return; +} + +// Sm4解密密钥属性信息 +function getSm4DecryptProperties(properties: HuksProperties[]): void { + let index = 0; + properties[index++] = { + tag: huks.HuksTag.HUKS_TAG_ALGORITHM, + value: huks.HuksKeyAlg.HUKS_ALG_SM4 + }; + properties[index++] = { + tag: huks.HuksTag.HUKS_TAG_KEY_SIZE, + value: huks.HuksKeySize.HUKS_SM4_KEY_SIZE_128, + }; + properties[index++] = { + tag: huks.HuksTag.HUKS_TAG_PURPOSE, + value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_DECRYPT + }; + properties[index++] = { + tag: huks.HuksTag.HUKS_TAG_BLOCK_MODE, + value: huks.HuksCipherMode.HUKS_MODE_CBC + }; + properties[index++] = { + tag: huks.HuksTag.HUKS_TAG_PADDING, + value: huks.HuksKeyPadding.HUKS_PADDING_PKCS7 + }; + properties[index++] = { + tag: huks.HuksTag.HUKS_TAG_IV, + value: stringToUint8Array(IV) + }; + return; +} + +function uint8ArrayToString(fileData: Uint8Array): string { + let dataString = ''; + for (let i = 0; i < fileData.length; i++) { + dataString += String.fromCharCode(fileData[i]); + } + return dataString; +} + +// AES加密密钥属性信息 +function getAesEncryptProperties(properties: HuksProperties[]): void { + let index = 0; + properties[index++] = { + tag: huks.HuksTag.HUKS_TAG_ALGORITHM, + value: huks.HuksKeyAlg.HUKS_ALG_AES + }; + properties[index++] = { + tag: huks.HuksTag.HUKS_TAG_KEY_SIZE, + value: huks.HuksKeySize.HUKS_AES_KEY_SIZE_128 + }; + properties[index++] = { + tag: huks.HuksTag.HUKS_TAG_PURPOSE, + value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_ENCRYPT + }; + properties[index++] = { + tag: huks.HuksTag.HUKS_TAG_PADDING, + value: huks.HuksKeyPadding.HUKS_PADDING_PKCS7 + }; + properties[index++] = { + tag: huks.HuksTag.HUKS_TAG_BLOCK_MODE, + value: huks.HuksCipherMode.HUKS_MODE_CBC + }; + properties[index++] = { + tag: huks.HuksTag.HUKS_TAG_IV, + value: stringToUint8Array(IV) + }; + return; +} + +// AES解密密钥属性信息 +function getAesDecryptProperties(properties: HuksProperties[]): void { + let index = 0; + properties[index++] = { + tag: huks.HuksTag.HUKS_TAG_ALGORITHM, + value: huks.HuksKeyAlg.HUKS_ALG_AES + }; + properties[index++] = { + tag: huks.HuksTag.HUKS_TAG_KEY_SIZE, + value: huks.HuksKeySize.HUKS_AES_KEY_SIZE_128 + }; + properties[index++] = { + tag: huks.HuksTag.HUKS_TAG_PURPOSE, + value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_DECRYPT + }; + properties[index++] = { + tag: huks.HuksTag.HUKS_TAG_PADDING, + value: huks.HuksKeyPadding.HUKS_PADDING_PKCS7 + }; + properties[index++] = { + tag: huks.HuksTag.HUKS_TAG_BLOCK_MODE, + value: huks.HuksCipherMode.HUKS_MODE_CBC + }; + properties[index++] = { + tag: huks.HuksTag.HUKS_TAG_IV, + value: stringToUint8Array(IV) + }; + return; +} + +// 生成AES密钥属性信息 +function getAesGenerateProperties(properties: HuksProperties[]): void { + let index = 0; + properties[index++] = { + tag: huks.HuksTag.HUKS_TAG_ALGORITHM, + value: huks.HuksKeyAlg.HUKS_ALG_AES + }; + properties[index++] = { + tag: huks.HuksTag.HUKS_TAG_KEY_SIZE, + value: huks.HuksKeySize.HUKS_AES_KEY_SIZE_128 + }; + properties[index++] = { + tag: huks.HuksTag.HUKS_TAG_PURPOSE, + value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_ENCRYPT | + huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_DECRYPT + }; + return; +} + +// 导入SM4密钥属性信息 +function getImportKeyProperties(properties: HuksProperties[]): void { + let index = 0; + properties[index++] = { + tag: huks.HuksTag.HUKS_TAG_ALGORITHM, + value: huks.HuksKeyAlg.HUKS_ALG_SM4 + }; + properties[index++] = { + tag: huks.HuksTag.HUKS_TAG_KEY_SIZE, + value: huks.HuksKeySize.HUKS_SM4_KEY_SIZE_128 + }; + properties[index++] = { + tag: huks.HuksTag.HUKS_TAG_PURPOSE, + value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_ENCRYPT | + huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_DECRYPT + }; + return; +} + +// SM4 加密密钥属性 +function getSm4EnryptProperties(properties: HuksProperties[]): void { + let index = 0; + properties[index++] = { + tag: huks.HuksTag.HUKS_TAG_ALGORITHM, + value: huks.HuksKeyAlg.HUKS_ALG_SM4 + }; + properties[index++] = { + tag: huks.HuksTag.HUKS_TAG_KEY_SIZE, + value: huks.HuksKeySize.HUKS_SM4_KEY_SIZE_128, + }; + properties[index++] = { + tag: huks.HuksTag.HUKS_TAG_PURPOSE, + value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_ENCRYPT + }; + properties[index++] = { + tag: huks.HuksTag.HUKS_TAG_BLOCK_MODE, + value: huks.HuksCipherMode.HUKS_MODE_CBC + }; + properties[index++] = { + tag: huks.HuksTag.HUKS_TAG_PADDING, + value: huks.HuksKeyPadding.HUKS_PADDING_PKCS7 + }; + properties[index++] = { + tag: huks.HuksTag.HUKS_TAG_IV, + value: stringToUint8Array(IV) + }; + return; +} + +// SM4 解密密钥属性 +function getSm4DeryptProperties(properties: HuksProperties[]): void { + let index = 0; + properties[index++] = { + tag: huks.HuksTag.HUKS_TAG_ALGORITHM, + value: huks.HuksKeyAlg.HUKS_ALG_SM4 + }; + properties[index++] = { + tag: huks.HuksTag.HUKS_TAG_KEY_SIZE, + value: huks.HuksKeySize.HUKS_SM4_KEY_SIZE_128, + }; + properties[index++] = { + tag: huks.HuksTag.HUKS_TAG_PURPOSE, + value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_DECRYPT + }; + properties[index++] = { + tag: huks.HuksTag.HUKS_TAG_BLOCK_MODE, + value: huks.HuksCipherMode.HUKS_MODE_CBC + }; + properties[index++] = { + tag: huks.HuksTag.HUKS_TAG_PADDING, + value: huks.HuksKeyPadding.HUKS_PADDING_PKCS7 + }; + properties[index++] = { + tag: huks.HuksTag.HUKS_TAG_IV, + value: stringToUint8Array(IV) + }; + return; +} + +/** + * 功能模型 + */ +export class HuksModel { + // 模拟使用HUKS生成的新密钥进行加密 + async encryptData(plainText: string, resultCallback: Function): Promise { + let aesKeyAlias = 'test_aesKeyAlias'; + let handle: number = 0; + let generateKeyProperties: HuksProperties[] = new Array(); + getAesGenerateProperties(generateKeyProperties); + let generateKeyOptions: huks.HuksOptions = { + properties: generateKeyProperties + }; + await huks.generateKeyItem(aesKeyAlias, generateKeyOptions).then((data) => { + Logger.info(TAG, `generate key success, data: ${JSON.stringify(data)}`); + }).catch((err: Error)=>{ + Logger.error(TAG, `generate key failed, ${JSON.stringify(err)}: ${JSON.stringify(err.message)}`); + }); + + let encryptProperties: HuksProperties[] = new Array(); + getAesEncryptProperties(encryptProperties); + let encryptOptions: huks.HuksOptions = { + properties:encryptProperties, + inData: stringToUint8Array(plainText) + }; + await huks.initSession(aesKeyAlias, encryptOptions).then((data) => { + Logger.info(TAG, `encrypt initSession success, data: ${JSON.stringify(data)}`); + handle = data.handle; + }).catch((err: Error)=>{ + Logger.error(TAG, `encrypt initSession failed, ${JSON.stringify(err)}: ${JSON.stringify(err.message)}`); + }); + await huks.finishSession(handle, encryptOptions).then((data) => { + Logger.info(TAG, `encrypt finishSession success, data: ${JSON.stringify(data)}`); + cipherData = data.outData as Uint8Array; + let that = new util.Base64Helper(); + resultCallback(that.encodeToStringSync(cipherData)); + }).catch((err: Error)=>{ + Logger.error(TAG, `encrypt finishSession failed, ${JSON.stringify(err)}: ${JSON.stringify(err.message)}`); + promptAction.showToast({ + message: `send message failed, ${JSON.stringify(err)}: ${JSON.stringify(err.message)}`, + duration: 6500, + }); + }); + } + + // 模拟使用HUKS生成的新密钥进行解密 + async decryptData(resultCallback: Function): Promise { + let decryptOptions: HuksProperties[] = new Array(); + getAesDecryptProperties(decryptOptions); + let aesKeyAlias = 'test_aesKeyAlias'; + let handle: number = 0; + let options: huks.HuksOptions = { + properties: decryptOptions, + inData: cipherData + }; + let emptyOptions: huks.HuksOptions = { + properties: [] + }; + + await huks.initSession(aesKeyAlias, options).then((data) => { + Logger.info(TAG, `decrypt initSession success, data: ${JSON.stringify(data)}`); + handle = data.handle; + }).catch((err: Error) => { + Logger.error(TAG, `decrypt initSession failed, ${JSON.stringify(err)}: ${JSON.stringify(err.message)}`); + }); + await huks.finishSession(handle, options).then((data) => { + Logger.info(TAG, `decrypt finishSession success, data: ${JSON.stringify(data)}`); + resultCallback(uint8ArrayToString(data.outData as Uint8Array)); + }).catch((err: Error) => { + Logger.error(TAG, `decrypt finishSession failed, ${JSON.stringify(err)}: ${JSON.stringify(err.message)}`); + promptAction.showToast({ + message: `receive message failed, ${JSON.stringify(err)}: ${JSON.stringify(err.message)}`, + duration: 6500, + }); + }); + await huks.deleteKeyItem(aesKeyAlias, emptyOptions).then((data) => { + Logger.info(TAG, `delete key success, data: ${JSON.stringify(data)}`); + }).catch((err: Error)=>{ + Logger.error(TAG, `delete key failed, ${JSON.stringify(err)}: ${JSON.stringify(err.message)}`); + }); + } + + // 模拟使用Sm4 生成密钥并进行加密 + async encryptDataUseSm4(plainText: string, resultCallback: Function): Promise { + let sm4KeyAlias = 'test_sm4KeyAlias'; + let handle: number = 0; + let generateKeyProperties: HuksProperties[] = new Array(); + getSm4GenerateProperties(generateKeyProperties); + let generateKeyOptions: huks.HuksOptions = { + properties: generateKeyProperties + }; + await huks.generateKeyItem(sm4KeyAlias, generateKeyOptions).then((data) => { + Logger.info(TAG, `generate key success, data: ${JSON.stringify(data)}`); + }).catch((err: Error)=>{ + Logger.error(TAG, `generate key failed, ${JSON.stringify(err)}: ${JSON.stringify(err.message)}`); + }); + let encryptProperties: HuksProperties[] = new Array(); + getSm4EncryptProperties(encryptProperties); + let encryptOptions: huks.HuksOptions= { + properties:encryptProperties, + inData: stringToUint8Array(plainText) + }; + await huks.initSession(sm4KeyAlias, encryptOptions).then((data) => { + Logger.info(TAG, `encrypt initSession success, data: ${JSON.stringify(data)}`); + handle = data.handle; + }).catch((err: Error)=>{ + Logger.error(TAG, `encrypt initSession failed, ${JSON.stringify(err)}: ${JSON.stringify(err.message)}`); + }); + await huks.finishSession(handle, encryptOptions).then((data) => { + Logger.info(TAG, `encrypt finishSession success, data: ${JSON.stringify(data)}`); + cipherData = data.outData as Uint8Array; + let that = new util.Base64Helper(); + resultCallback(that.encodeToStringSync(cipherData)); + }).catch((err: Error)=>{ + Logger.error(TAG, `encrypt finishSession failed, ${JSON.stringify(err)}: ${JSON.stringify(err.message)}`); + promptAction.showToast({ + message: `send message failed, ${JSON.stringify(err)}: ${JSON.stringify(err.message)}`, + duration: 6500, + }); + }); + } + + async finishSession(handle: number, options: huks.HuksOptions , resultCallback: Function, authToken: Uint8Array): Promise { + await huks.finishSession(handle, options, authToken).then((data) => { + Logger.info(TAG, `decrypt finishSession success, data: ${JSON.stringify(data)}`); + resultCallback(uint8ArrayToString(data.outData as Uint8Array)); + }).catch((err: Error) => { + Logger.error(TAG, `decrypt finishSession failed, ${JSON.stringify(err)}: ${JSON.stringify(err.message)}`); + promptAction.showToast({ + message: `receive message failed, ${JSON.stringify(err)}: ${JSON.stringify(err.message)}`, + duration: 6500, + }); + }); + } + + async userIAMAuthFinger(finishSessionFunction: Function, handle: number, options: huks.HuksOptions , resultCallback: Function) : Promise { + Logger.info(TAG, '[HUKS->userIAM]start userAuth...'); + const authParam : userAuth.AuthParam = { + challenge: challengeNew, + authType: [userAuth.UserAuthType.PIN], + authTrustLevel: userAuth.AuthTrustLevel.ATL1 + }; + const widgetParam :userAuth.WidgetParam = { + title: 'PIN' + }; + try { + let userAuthInstance = userAuth.getUserAuthInstance(authParam, widgetParam); + Logger.info(TAG, 'get userAuth instance success'); + userAuthInstance.on('result', { + onResult(result) { + Logger.info(TAG, 'userAuthInstance callback result = ' + JSON.stringify(result)); + finishSessionFunction(handle, options, resultCallback, result.token); + } + }); + Logger.info(TAG, 'auth on success'); + userAuthInstance.start(); + Logger.info(TAG, 'auth on success'); + } catch (error) { + Logger.error(TAG, 'auth catch error: ' + JSON.stringify(error)); + } + } + + // 模拟使用HUKS生成的新密钥进行低安访问控制与解密 + async decryptDataUseSm4(resultCallback: Function): Promise { + let decryptOptions: HuksProperties[] = new Array(); + getSm4DecryptProperties(decryptOptions); + let sm4KeyAlias = 'test_sm4KeyAlias'; + let handle: number = 0; + let options: huks.HuksOptions = { + properties: decryptOptions, + inData: cipherData + }; + await huks.initSession(sm4KeyAlias, options).then((data) => { + Logger.info(TAG, `decrypt initSession success, data: ${JSON.stringify(data)}`); + handle = data.handle; + // challengeNew = data.challenge; + }).catch((err: Error) => { + Logger.error(TAG, `decrypt initSession failed, ${JSON.stringify(err)}: ${JSON.stringify(err.message)}`); + }); + let finishSessionFunction = this.finishSession; + await this.userIAMAuthFinger(finishSessionFunction, handle, options, resultCallback); + } + + + // 模拟设备1使用旧密钥在本地进行加密 + async encryptDataUserOldKey(plainText: string, resultCallback: Function): Promise { + let device1KeyAlias = 'device_1_key_alias'; + let importKeyProperties: HuksProperties[] = new Array(); + getImportKeyProperties(importKeyProperties); + let importKeyOptions: huks.HuksOptions = { + properties: importKeyProperties, + inData: PLAIN_TEXT_SIZE_16 + }; + Logger.info(TAG, `key plain text: ${JSON.stringify(PLAIN_TEXT_SIZE_16)}`); + await huks.importKeyItem(device1KeyAlias, importKeyOptions).then((data) => { + Logger.info(TAG, `import key success, data: ${JSON.stringify(data)}`); + }).catch((err: Error)=>{ + Logger.error(TAG, `import key failed, ${JSON.stringify(err)}: ${JSON.stringify(err.message)}`); + }); + + // 加密 + let sm4EncryptProperties: HuksProperties[] = new Array(); + getSm4EnryptProperties(sm4EncryptProperties); + let sm4EncryptOptions: huks.HuksOptions = { + properties:sm4EncryptProperties, + inData: stringToUint8Array(plainText) + }; + let handle: number = 0; + await huks.initSession(device1KeyAlias, sm4EncryptOptions).then((data) => { + Logger.info(TAG, `encrypt initSession success, data: ${JSON.stringify(data)}`); + handle = data.handle; + }).catch((err: Error)=>{ + Logger.error(TAG, `encrypt initSession failed, ${JSON.stringify(err)}: ${JSON.stringify(err.message)}`); + }); + await huks.finishSession(handle, sm4EncryptOptions).then((data) => { + Logger.info(TAG, `encrypt finishSession success, data: ${JSON.stringify(data)}`); + cipherData = data.outData as Uint8Array; + let that = new util.Base64Helper(); + resultCallback(that.encodeToStringSync(cipherData)); + }).catch((err: Error)=>{ + Logger.error(TAG, `send message failed, ${JSON.stringify(err)}: ${JSON.stringify(err.message)}`); + promptAction.showToast({ + message: `send message failed, ${JSON.stringify(err)}: ${JSON.stringify(err.message)}`, + duration: 6500, + }); + }); + + // 加密完成删除本地密钥 + let emptyOptions: huks.HuksOptions = { + properties: [] + }; + await huks.deleteKeyItem(device1KeyAlias, emptyOptions).then((data) => { + Logger.info(TAG, `delete key success, data: ${JSON.stringify(data)}`); + }).catch((err: Error)=>{ + Logger.error(TAG, `delete key failed, ${JSON.stringify(err)}: ${JSON.stringify(err.message)}`); + }); + } + + // 模拟设备2导入设备1中的旧密钥 + async importKey(): Promise { + let keyAlias = 'import_device_1_key_alias'; + let importOptions: HuksProperties[] = new Array(); + getImportKeyProperties(importOptions); + let huksoptions: huks.HuksOptions = { + properties: importOptions, + inData: PLAIN_TEXT_SIZE_16 + }; + Logger.info(TAG, `key plain text: ${JSON.stringify(PLAIN_TEXT_SIZE_16)}`); + await huks.importKeyItem(keyAlias, huksoptions).then((data) => { + Logger.info(TAG, `import key success, data: ${JSON.stringify(data)}`); + promptAction.showToast({ + message: 'import old key success', + duration: 1000, + }); + }).catch((err: Error)=>{ + Logger.error(TAG, `import old key failed, ${JSON.stringify(err)}: ${JSON.stringify(err.message)}`); + promptAction.showToast({ + message: `import old key failed, ${JSON.stringify(err)}: ${JSON.stringify(err.message)}`, + duration: 1000, + }); + }); + } + + // 模拟设备2使用导入的设备1中的旧密钥进行解密 + async decryptDataUserOldKey(resultCallback: Function): Promise { + let handle: number = 0; + let keyAlias = 'import_device_1_key_alias'; + let decryptProperties: HuksProperties[] = new Array(); + getSm4DeryptProperties(decryptProperties); + let decryptOptions: huks.HuksOptions = { + properties: decryptProperties, + inData: cipherData + }; + + // 解密 + await huks.initSession(keyAlias, decryptOptions).then((data) => { + Logger.info(TAG, `decrypt initSession success, data: ${JSON.stringify(data)}`); + handle = data.handle; + }).catch((err: Error) => { + Logger.error(TAG, `decrypt initSession failed, ${JSON.stringify(err)}: ${JSON.stringify(err.message)}`); + }); + await huks.finishSession(handle, decryptOptions).then((data) => { + Logger.info(TAG, `decrypt finishSession success, data: ${JSON.stringify(data)}`); + resultCallback(uint8ArrayToString(data.outData as Uint8Array)); + }).catch((err: Error) => { + Logger.error(TAG, `receive message failed, ${JSON.stringify(err)}: ${JSON.stringify(err.message)}`); + promptAction.showToast({ + message: `receive message failed, ${JSON.stringify(err)}: ${JSON.stringify(err.message)}`, + duration: 6500, + }); + }); + + // 解密完成删除本地密钥 + let emptyOptions: huks.HuksOptions = { + properties: [] + }; + await huks.deleteKeyItem(keyAlias, emptyOptions).then((data) => { + Logger.info(TAG, `delete key success, data: ${JSON.stringify(data)}`); + }).catch((err: Error)=>{ + Logger.error(TAG, `delete key failed, ${JSON.stringify(err)}: ${JSON.stringify(err.message)}`); + }); + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Security/Huks/entry/src/main/ets/model/Logger.ets b/HarmonyOS_NEXT/Security/Huks/entry/src/main/ets/model/Logger.ets new file mode 100644 index 0000000000000000000000000000000000000000..1941e3482691971124058e6c064adf787c12e953 --- /dev/null +++ b/HarmonyOS_NEXT/Security/Huks/entry/src/main/ets/model/Logger.ets @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import hilog from '@ohos.hilog'; + +class Logger { + private domain: number; + private prefix: string; + private format: string = '%{public}s, %{public}s'; + + constructor(prefix: string) { + this.prefix = prefix; + this.domain = 0xF811; + } + + debug(...args: string[]): void { + hilog.debug(this.domain, this.prefix, this.format, args); + return; + } + + info(...args: string[]): void { + hilog.info(this.domain, this.prefix, this.format, args); + return; + } + + warn(...args: string[]): void { + hilog.warn(this.domain, this.prefix, this.format, args); + return; + } + + error(...args: string[]): void { + hilog.error(this.domain, this.prefix, this.format, args); + return; + } + + fatal(...args: string[]): void { + hilog.fatal(this.domain, this.prefix, this.format, args); + return; + } + + isLoggable(level: number): void { + hilog.isLoggable(this.domain, this.prefix, level); + return; + } +} + +export default new Logger('[Sample_Huks]'); \ No newline at end of file diff --git a/HarmonyOS_NEXT/Security/Huks/entry/src/main/ets/pages/Index.ets b/HarmonyOS_NEXT/Security/Huks/entry/src/main/ets/pages/Index.ets new file mode 100644 index 0000000000000000000000000000000000000000..2833994ea5c880ba1771c4396bb1d517c89d1321 --- /dev/null +++ b/HarmonyOS_NEXT/Security/Huks/entry/src/main/ets/pages/Index.ets @@ -0,0 +1,120 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import router from '@ohos.router'; + +export class Flag { + public static value : number = 0; + public static set(v : number): void { + Flag.value = v; + } +} +@Entry +@Component +struct Index { + @Builder NavigationTitle() { + Column() { + Text($r('app.string.module_desc')) + .fontColor('#182431') + .fontSize(20) + .lineHeight(25) + .fontWeight(700) + } + .alignItems(HorizontalAlign.Start) + } + + build() { + Column() { + Navigation() { + Stack({ alignContent: Alignment.Center }) { + Column() { + GridRow() { + GridCol({ span: { xs: 12, sm: 12, md: 12, lg: 12 } }) { + Column() { + Button() { + Text($r('app.string.new_key')).fontSize(16).fontWeight(500) + .lineHeight(22) + .fontColor('#FFFFFF') + } + .id('new_key') + .borderRadius(20) + .type(ButtonType.Capsule) + .width('100%') + .height('40vp') + .margin({ bottom: 16 }) + .backgroundColor('#007DFF') + .onClick(() => { + Flag.set(1); + router.pushUrl({ + url: 'pages/SelectPage' + }) + }); + Button() { + Text($r('app.string.old_key')).fontSize(16).fontWeight(500) + .lineHeight(22) + .fontColor('#FFFFFF') + } + .borderRadius(20) + .id('old_key') + .type(ButtonType.Capsule) + .margin({ left: 24, right: 24 }) + .margin({ bottom: 16 }) + .width('100%') + .height('40vp') + .backgroundColor('#007DFF') + .onClick(() => { + Flag.set(2); + router.pushUrl({ + url: 'pages/SelectPage' + }) + }); + + Button() { + Text($r('app.string.min_access_control')).fontSize(16).fontWeight(500) + .lineHeight(22) + .fontColor('#FFFFFF') + } + .borderRadius(20) + .id('min_access_control') + .type(ButtonType.Capsule) + .margin({ left: 24, right: 24 }) + .margin({ bottom: 16 }) + .width('100%') + .height('40vp') + .backgroundColor('#007DFF') + .onClick(() => { + Flag.set(3); + router.pushUrl({ + url: 'pages/SelectPage' + }) + }); + } + } + }.margin({ left: 24, right: 24 }) + }.width('100%').height('296vp').justifyContent(FlexAlign.End) + } + .height('94%') + } + .title({ builder: this.NavigationTitle, height: 56 }) + .titleMode(NavigationTitleMode.Mini) + .hideTitleBar(false) + .hideToolBar(true) + .hideBackButton(true) + } + .width('100%') + .height('100%') + .backgroundColor('#F1F1F1') + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Security/Huks/entry/src/main/ets/pages/SelectPage.ets b/HarmonyOS_NEXT/Security/Huks/entry/src/main/ets/pages/SelectPage.ets new file mode 100644 index 0000000000000000000000000000000000000000..d59409284972138ce040576de4391eaa58cfac71 --- /dev/null +++ b/HarmonyOS_NEXT/Security/Huks/entry/src/main/ets/pages/SelectPage.ets @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import router from '@ohos.router' +import { NewKey } from '../common/NewKey' +import { OldKey } from '../common/OldKey' +import { MinAccessControl } from '../common/MinAccessControl' +import { Flag } from '../pages/Index' + +@Entry +@Component +struct SelectPage { + @State Params: number = Flag.value; + @Builder NavigationTitle() { + Column() { + } + .alignItems(HorizontalAlign.Start) + } + + build() { + Column() { + Navigation() { + if (this.Params === 1) { + NewKey() + } else if (this.Params === 2) { + OldKey() + } else { + MinAccessControl() + } + } + .title({ builder: this.NavigationTitle, height: 56 }) + .titleMode(NavigationTitleMode.Mini) + .hideTitleBar(false) + .hideToolBar(true) + } + .width('100%') + .height('100%') + .backgroundColor('#F1F1F1') + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Security/Huks/entry/src/main/module.json5 b/HarmonyOS_NEXT/Security/Huks/entry/src/main/module.json5 new file mode 100644 index 0000000000000000000000000000000000000000..ab59c4a7e2e0da343c7ec9aad6f979df8228f885 --- /dev/null +++ b/HarmonyOS_NEXT/Security/Huks/entry/src/main/module.json5 @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "module": { + "name": "entry", + "type": "entry", + "description": "$string:module_desc", + "mainElement": "EntryAbility", + "deviceTypes": [ + "default", + "tablet" + ], + "metadata": [ + { + "name": "ArkTSPartialUpdate", + "value": "true" + }, + { + "name": "partialUpdateStrictCheck", + "value": "all" + } + ], + "requestPermissions": [ + { + "name": "ohos.permission.ACCESS_BIOMETRIC" + } + ], + "deliveryWithInstall": true, + "installationFree": false, + "pages": "$profile:main_pages", + "abilities": [ + { + "name": "EntryAbility", + "srcEntrance": "./ets/entryability/EntryAbility.ets", + "description": "$string:EntryAbility_desc", + "icon": "$media:icon", + "label": "$string:EntryAbility_label", + "startWindowIcon": "$media:icon", + "startWindowBackground": "$color:start_window_background", + "visible": true, + "skills": [ + { + "entities": [ + "entity.system.home" + ], + "actions": [ + "action.system.home" + ] + } + ] + } + ] + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Security/Huks/entry/src/main/resources/base/element/color.json b/HarmonyOS_NEXT/Security/Huks/entry/src/main/resources/base/element/color.json new file mode 100644 index 0000000000000000000000000000000000000000..3c712962da3c2751c2b9ddb53559afcbd2b54a02 --- /dev/null +++ b/HarmonyOS_NEXT/Security/Huks/entry/src/main/resources/base/element/color.json @@ -0,0 +1,8 @@ +{ + "color": [ + { + "name": "start_window_background", + "value": "#FFFFFF" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Security/Huks/entry/src/main/resources/base/element/string.json b/HarmonyOS_NEXT/Security/Huks/entry/src/main/resources/base/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..0f27af231f4e48ad0839f1016d72aa1a132cdb23 --- /dev/null +++ b/HarmonyOS_NEXT/Security/Huks/entry/src/main/resources/base/element/string.json @@ -0,0 +1,72 @@ +{ + "string": [ + { + "name": "module_desc", + "value": "HUKS" + }, + { + "name": "EntryAbility_desc", + "value": "Harmony Universal Keystore Service" + }, + { + "name": "EntryAbility_label", + "value": "HUKS" + }, + { + "name": "send_message", + "value": "Send Message" + }, + { + "name": "recieve_message", + "value": "Recieve Message" + }, + { + "name": "import_key", + "value": "Import key" + }, + { + "name": "new_key", + "value": "New Key" + }, + { + "name": "old_key", + "value": "Old Key" + }, + { + "name": "back", + "value": "Back" + }, + { + "name": "input_message", + "value": "Input the message you want to send" + }, + { + "name": "input_save_password", + "value": "Input the password you want to save" + }, + { + "name": "min_access_control", + "value": "Minimum Access Control" + }, + { + "name": "save_password", + "value": "Save Password" + }, + { + "name": "read_password", + "value": "Read Password" + }, + { + "name": "cipher_text", + "value": "Cipher_Text" + }, + { + "name": "plain_text", + "value": "Plain Text" + }, + { + "name": "pinInput", + "value": "Please Input Pin" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Security/Huks/entry/src/main/resources/base/media/icon.png b/HarmonyOS_NEXT/Security/Huks/entry/src/main/resources/base/media/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ce307a8827bd75456441ceb57d530e4c8d45d36c Binary files /dev/null and b/HarmonyOS_NEXT/Security/Huks/entry/src/main/resources/base/media/icon.png differ diff --git a/HarmonyOS_NEXT/Security/Huks/entry/src/main/resources/base/profile/main_pages.json b/HarmonyOS_NEXT/Security/Huks/entry/src/main/resources/base/profile/main_pages.json new file mode 100644 index 0000000000000000000000000000000000000000..c5c215fd2b7519ce52b643ce0cc8c07e2a14e621 --- /dev/null +++ b/HarmonyOS_NEXT/Security/Huks/entry/src/main/resources/base/profile/main_pages.json @@ -0,0 +1,6 @@ +{ + "src": [ + "pages/Index", + "pages/SelectPage" + ] +} diff --git a/HarmonyOS_NEXT/Security/Huks/entry/src/main/resources/en_US/element/string.json b/HarmonyOS_NEXT/Security/Huks/entry/src/main/resources/en_US/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..63087cee9027f1e96f3dff209687d73ed652640e --- /dev/null +++ b/HarmonyOS_NEXT/Security/Huks/entry/src/main/resources/en_US/element/string.json @@ -0,0 +1,72 @@ +{ + "string": [ + { + "name": "module_desc", + "value": "HUKS" + }, + { + "name": "EntryAbility_desc", + "value": "Harmony Universal Keystore Service" + }, + { + "name": "EntryAbility_label", + "value": "HUKS" + }, + { + "name": "send_message", + "value": "Send Message" + }, + { + "name": "recieve_message", + "value": "Recieve Message" + }, + { + "name": "import_key", + "value": "Import Key" + }, + { + "name": "new_key", + "value": "New Key" + }, + { + "name": "old_key", + "value": "Old Key" + }, + { + "name": "back", + "value": "Back" + }, + { + "name": "input_message", + "value": "Input the message you want to send" + }, + { + "name": "input_save_password", + "value": "Input the password you want to save" + }, + { + "name": "min_access_control", + "value": "Minimum Access Control" + }, + { + "name": "save_password", + "value": "Save Password" + }, + { + "name": "read_password", + "value": "Read Password" + }, + { + "name": "cipher_text", + "value": "Cipher_Text" + }, + { + "name": "plain_text", + "value": "Plain Text" + }, + { + "name": "pinInput", + "value": "Please Input Pin" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Security/Huks/entry/src/main/resources/zh_CN/element/string.json b/HarmonyOS_NEXT/Security/Huks/entry/src/main/resources/zh_CN/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..463b811700b1aa9eadf8b2f543136ed38fbf22f9 --- /dev/null +++ b/HarmonyOS_NEXT/Security/Huks/entry/src/main/resources/zh_CN/element/string.json @@ -0,0 +1,73 @@ +{ + "string": [ + { + "name": "module_desc", + "value": "通用密钥库系统" + }, + { + "name": "EntryAbility_desc", + "value": "通用密钥库系统" + }, + { + "name": "EntryAbility_label", + "value": "通用密钥库系统" + }, + { + "name": "send_message", + "value": "发送消息" + }, + { + "name": "recieve_message", + "value": "接收消息" + }, + { + "name": "import_key", + "value": "导入密钥" + }, + { + "name": "new_key", + "value": "新密钥" + }, + { + "name": "old_key", + "value": "旧密钥" + }, + { + "name": "back", + "value": "返回" + }, + { + "name": "input_message", + "value": "输入您要发送的消息" + }, + { + "name": "input_save_password", + "value": "输入需要保存到的密码" + }, + { + "name": "min_access_control", + "value": "低安访问控制" + }, + { + "name": "save_password", + "value": "保存密码" + }, + { + "name": "read_password", + "value": "读取密码" + }, + { + "name": "cipher_text", + "value": "密码密文" + }, + { + "name": "plain_text", + "value": "密码明文" + }, + { + "name": "pinInput", + "value": "PIN" + } + + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Security/Huks/entry/src/ohosTest/ets/TestRunner/OpenHarmonyTestRunner.ts b/HarmonyOS_NEXT/Security/Huks/entry/src/ohosTest/ets/TestRunner/OpenHarmonyTestRunner.ts new file mode 100644 index 0000000000000000000000000000000000000000..7036f13d725925420a70cd295c9a8314f37a1802 --- /dev/null +++ b/HarmonyOS_NEXT/Security/Huks/entry/src/ohosTest/ets/TestRunner/OpenHarmonyTestRunner.ts @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import Logger from '../../../main/ets/model/Logger'; +import TestRunner from '@ohos.application.testRunner'; +import AbilityDelegatorRegistry from '@ohos.app.ability.abilityDelegatorRegistry'; + +let abilityDelegator = undefined; +let abilityDelegatorArguments = undefined; + +async function onAbilityCreateCallback() { + Logger.info('testTag', 'onAbilityCreateCallback'); +} + +async function addAbilityMonitorCallback(err: any) { + Logger.info('testTag', `addAbilityMonitorCallback : ${JSON.stringify(err) ?? ''}`); +} + +export default class OpenHarmonyTestRunner implements TestRunner { + constructor() { + } + + onPrepare() { + Logger.info('testTag', 'OpenHarmonyTestRunner OnPrepare '); + } + + async onRun() { + Logger.info('testTag', 'OpenHarmonyTestRunner onRun run'); + abilityDelegatorArguments = AbilityDelegatorRegistry.getArguments(); + abilityDelegator = AbilityDelegatorRegistry.getAbilityDelegator(); + let testAbilityName = abilityDelegatorArguments.bundleName + '.TestAbility'; + let lMonitor = { + abilityName: testAbilityName, + onAbilityCreate: onAbilityCreateCallback, + }; + abilityDelegator.addAbilityMonitor(lMonitor, addAbilityMonitorCallback); + let cmd = 'aa start -d 0 -a TestAbility' + ' -b ' + abilityDelegatorArguments.bundleName; + let debug = abilityDelegatorArguments.parameters['-D']; + if (debug == 'true') { + cmd += ' -D' + }; + Logger.info('testTag', `cmd : ${cmd}`); + abilityDelegator.executeShellCommand(cmd, (err, data) => { + Logger.info('testTag', `executeShellCommand : err : ${JSON.stringify(err) ?? ''}`); + Logger.info('testTag', `executeShellCommand : data : ${data.stdResult ?? ''}`); + Logger.info('testTag', `executeShellCommand : data : ${data.exitCode ?? ''}`); + }); + Logger.info('testTag', 'OpenHarmonyTestRunner onRun end'); + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Security/Huks/entry/src/ohosTest/ets/test/Ability.test.ets b/HarmonyOS_NEXT/Security/Huks/entry/src/ohosTest/ets/test/Ability.test.ets new file mode 100644 index 0000000000000000000000000000000000000000..39cccb95af0e31262468685bb572d9d2af50cc67 --- /dev/null +++ b/HarmonyOS_NEXT/Security/Huks/entry/src/ohosTest/ets/test/Ability.test.ets @@ -0,0 +1,221 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { describe, it, expect } from '@ohos/hypium' +import { Driver, ON } from '@ohos.UiTest' +import AbilityDelegatorRegistry from '@ohos.app.ability.abilityDelegatorRegistry' +import Logger from '../../../main/ets/model/Logger' + +const TAG = '[Sample_Huks]' +const BUNDLE = 'Huks_' + +// 返回首页 +async function backToIndexPage(driver: Driver) { + Logger.info(TAG, BUNDLE + 'backToIndexPage begin') + await driver.pressBack(); + await driver.delayMs(500) + await driver.assertComponentExist(ON.id('new_key')) + await driver.assertComponentExist(ON.id('old_key')) + Logger.info(TAG, BUNDLE + 'backToIndexPage end') +} + +export default function abilityTest() { + let driver = Driver.create(); + describe('ActsAbilityTest', () => { + /** + * 拉起应用 + */ + it(BUNDLE + 'StartAbility_001', 0, async (done: Function) => { + Logger.info(TAG, BUNDLE + 'StartAbility_001 begin'); + let abilityDelegator = AbilityDelegatorRegistry.getAbilityDelegator(); + try { + await abilityDelegator.startAbility({ + bundleName: 'com.samples.huks', + abilityName: 'EntryAbility' + }); + done(); + } catch (exception) { + Logger.info(TAG, `StartAbility_001 exception = ${JSON.stringify(exception)}`); + expect().assertFail(); + } + Logger.info(TAG, 'StartAbility_001 end'); + }) + + /** + * 使用HUKS生成的新密钥进行加密 + */ + it(BUNDLE + 'CipherByNewKeyFunction_001', 0, async (done: Function) => { + Logger.info(TAG, BUNDLE + 'CipherByNewKeyFunction_001 begin'); + // 点击新密钥按钮,跳转至使用新密钥进行加解密页面 + Logger.info(TAG, BUNDLE + 'CipherByNewKeyFunction_001 encryption'); + await driver.delayMs(1000); + await driver.assertComponentExist(ON.id('new_key')); + let encryption = await driver.findComponent(ON.id('new_key')); + await encryption.click(); + // 未输入发送的消息内容时,点击发送按钮,弹出toast弹窗提示信息:This message is null,toast弹窗信息暂不支持测试 + await driver.assertComponentExist(ON.id('encryptionBtn')); + let encryptionBtn = await driver.findComponent(ON.id('encryptionBtn')); + await encryptionBtn.click(); + // 输入要发送的消息内容进行加密 + Logger.info(TAG, BUNDLE + 'CipherByNewKeyFunction_001 input encryption content'); + await driver.assertComponentExist(ON.id('encryptionInput')); + let encryptionInput = await driver.findComponent(ON.id('encryptionInput')); + await encryptionInput.inputText('test'); + let encryptionContent = await encryptionInput.getText(); + Logger.info(TAG, BUNDLE + `CipherByNewKeyFunction_001 select encryptionContent:${encryptionContent}`); + expect(encryptionContent).assertEqual('test'); + // 点击发送按钮进行加密并发送密文消息 + await encryptionBtn.click(); + // 文本框显示加密后的消息内容 + Logger.info(TAG, BUNDLE + 'CipherByNewKeyFunction_001 show encryption content'); + await driver.assertComponentExist(ON.id('encryptionInfo')); + let encryptionInfo = await driver.findComponent(ON.id('encryptionInfo')); + let encryptionMessage = await encryptionInfo.getText(); + Logger.info(TAG, BUNDLE + `CipherByNewKeyFunction_001 select encryptionMessage:${encryptionMessage}`); + expect(encryptionMessage === 'test').assertFalse(); + Logger.info(TAG, BUNDLE + 'CipherByNewKeyFunction_001 end'); + done(); + }) + + /** + * 使用HUKS生成的新密钥进行解密 + */ + it(BUNDLE + 'CipherByNewKeyFunction_002', 0, async (done: Function) => { + Logger.info(TAG, BUNDLE + 'CipherByNewKeyFunction_002 begin'); + // 点击接收消息对发送的消息密文进行解密 + Logger.info(TAG, BUNDLE + 'CipherByNewKeyFunction_001 decryption'); + await driver.assertComponentExist(ON.id('decryptionBtn')); + let decryptBtn = await driver.findComponent(ON.id('decryptionBtn')); + await decryptBtn.click(); + // 文本框显示解密后的消息内容 + Logger.info(TAG, BUNDLE + 'CipherByNewKeyFunction_002 show decrypt message'); + await driver.assertComponentExist(ON.id('decryptionInfo')); + let decryptInfo = await driver.findComponent(ON.id('decryptionInfo')); + let decryptMessage = await decryptInfo.getText(); + Logger.info(TAG, BUNDLE + `CipherByNewKeyFunction_002 select decryptMessage:${decryptMessage}`); + expect(decryptMessage).assertEqual('test'); + // 返回首页 + await backToIndexPage(driver); + Logger.info(TAG, BUNDLE + 'CipherByNewKeyFunction_002 end'); + done(); + }) + + /** + * 使用HUKS导入的旧密钥进行加密 + */ + it(BUNDLE + 'CipherByOldKeyFunction_001', 0, async (done: Function) => { + Logger.info(TAG, BUNDLE + 'CipherByOldKeyFunction_001 begin'); + // 点击新密钥按钮,跳转至使用新密钥进行加解密页面 + Logger.info(TAG, BUNDLE + 'CipherByOldKeyFunction_001 encryption'); + await driver.delayMs(500); + await driver.assertComponentExist(ON.id('old_key')); + let encryption = await driver.findComponent(ON.id('old_key')); + await encryption.click(); + // 未输入发送的消息内容时,点击发送按钮,弹出toast弹窗提示信息:This message is null,toast弹窗信息暂不支持测试 + await driver.assertComponentExist(ON.id('encryptionBtn')); + let encryptionBtn = await driver.findComponent(ON.id('encryptionBtn')); + await encryptionBtn.click(); + // 输入要发送的消息内容进行加密 + Logger.info(TAG, BUNDLE + 'CipherByOldKeyFunction_001 input encryption content'); + await driver.assertComponentExist(ON.id('encryptionInput')); + let encryptionInput = await driver.findComponent(ON.id('encryptionInput')); + await encryptionInput.inputText('test'); + let encryptionContent = await encryptionInput.getText(); + Logger.info(TAG, BUNDLE + `CipherByOldKeyFunction_001 select encryptionContent:${encryptionContent}`); + expect(encryptionContent).assertEqual('test'); + // 点击发送按钮进行加密并发送密文消息 + await encryptionBtn.click(); + // 文本框显示加密后的消息内容 + Logger.info(TAG, BUNDLE + 'CipherByOldKeyFunction_001 show encryption content'); + await driver.assertComponentExist(ON.id('encryptionInfo')); + let encryptionInfo = await driver.findComponent(ON.id('encryptionInfo')); + let encryptionMessage = await encryptionInfo.getText(); + Logger.info(TAG, BUNDLE + `CipherByOldKeyFunction_001 select encryptionMessage:${encryptionMessage}`); + expect(encryptionMessage === 'test').assertFalse(); + Logger.info(TAG, BUNDLE + 'CipherByOldKeyFunction_001 end'); + done(); + }) + + /** + * 使用HUKS导入的旧密钥进行解密 + */ + it(BUNDLE + 'CipherByOldKeyFunction_002', 0, async (done: Function) => { + Logger.info(TAG, BUNDLE + 'CipherByOldKeyFunction_002 begin'); + // 点击新密钥按钮,跳转至使用新密钥进行加解密页面 + Logger.info(TAG, BUNDLE + 'CipherByOldKeyFunction_002 decryption'); + // 点击导入按钮导入旧密钥 + await driver.assertComponentExist(ON.id('importKeyBtn')); + let importKeyBtn = await driver.findComponent(ON.id('importKeyBtn')); + await importKeyBtn.click(); + await driver.delayMs(500); + // 点击接收消息对发送的消息密文进行解密 + await driver.assertComponentExist(ON.id('decryptionBtn')); + let decryptBtn = await driver.findComponent(ON.id('decryptionBtn')); + await decryptBtn.click(); + await driver.delayMs(500); + // 文本框显示解密后的消息内容 + Logger.info(TAG, BUNDLE + 'CipherByOldKeyFunction_002 show decrypt message'); + await driver.assertComponentExist(ON.id('decryptionInfo')); + let decryptInfo = await driver.findComponent(ON.id('decryptionInfo')); + let decryptMessage = await decryptInfo.getText(); + Logger.info(TAG, BUNDLE + `CipherByOldKeyFunction_002 select decryptMessage:${decryptMessage}`); + expect(decryptMessage).assertEqual('test'); + // 返回首页 + await backToIndexPage(driver); + Logger.info(TAG, BUNDLE + 'CipherByOldKeyFunction_002 end'); + done(); + }) + + /** + * 使用HUKS进行低安访问控制加密 + */ + it(BUNDLE + 'MinAccessControlFunction_001', 0, async (done: Function) => { + Logger.info(TAG, BUNDLE + 'MinAccessControlFunction_001 begin'); + // 点击低安访问控制按钮,跳转至使用低安访问控制页面 + Logger.info(TAG, BUNDLE + 'MinAccessControlFunction_001 encryption'); + await driver.delayMs(1000); + await driver.assertComponentExist(ON.id('min_access_control')); + let encryption = await driver.findComponent(ON.id('min_access_control')); + await encryption.click(); + await driver.delayMs(1000); + // 未输入发送的消息内容时,点击发送按钮,弹出toast弹窗提示信息:This message is null,toast弹窗信息暂不支持测试 + await driver.assertComponentExist(ON.id('save_password')); + let encryptionBtn = await driver.findComponent(ON.id('save_password')); + await encryptionBtn.click(); + await driver.delayMs(1000); + Logger.info(TAG, BUNDLE + 'MinAccessControlFunction_001 input encryption content'); + await driver.assertComponentExist(ON.id('passwordInput')); + let encryptionInput = await driver.findComponent(ON.id('passwordInput')); + await encryptionInput.inputText('test'); + await driver.delayMs(1000); + let encryptionContent = await encryptionInput.getText(); + Logger.info(TAG, BUNDLE + `MinAccessControlFunction_001 select encryptionContent:${encryptionContent}`); + expect(encryptionContent).assertEqual('test'); + // 点击发送按钮进行加密并发送密文消息 + await encryptionBtn.click(); + await driver.delayMs(1000); + // 文本框显示加密后的消息内容 + Logger.info(TAG, BUNDLE + 'MinAccessControlFunction_001 show encryption content'); + await driver.assertComponentExist(ON.id('cipherTextinfo')); + let encryptionInfo = await driver.findComponent(ON.id('cipherTextinfo')); + let encryptionMessage = await encryptionInfo.getText(); + Logger.info(TAG, BUNDLE + `MinAccessControlFunction_001 select encryptionMessage:${encryptionMessage}`); + expect(encryptionMessage === 'test').assertFalse(); + Logger.info(TAG, BUNDLE + 'MinAccessControlFunction_001 end'); + done(); + }) + + }) +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Security/Huks/entry/src/ohosTest/ets/test/List.test.ets b/HarmonyOS_NEXT/Security/Huks/entry/src/ohosTest/ets/test/List.test.ets new file mode 100644 index 0000000000000000000000000000000000000000..27c07a1a174f6862ea84c4bb5f45bc1789234441 --- /dev/null +++ b/HarmonyOS_NEXT/Security/Huks/entry/src/ohosTest/ets/test/List.test.ets @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import abilityTest from './Ability.test' + +export default function testsuite() { + abilityTest() +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Security/Huks/entry/src/ohosTest/ets/testability/TestAbility.ets b/HarmonyOS_NEXT/Security/Huks/entry/src/ohosTest/ets/testability/TestAbility.ets new file mode 100644 index 0000000000000000000000000000000000000000..bd1703649ad1f960228f99689738bd3502917849 --- /dev/null +++ b/HarmonyOS_NEXT/Security/Huks/entry/src/ohosTest/ets/testability/TestAbility.ets @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import UIAbility from '@ohos.app.ability.UIAbility'; +import AbilityDelegatorRegistry from '@ohos.app.ability.abilityDelegatorRegistry'; +import AbilityConstant from '@ohos.app.ability.AbilityConstant'; +import Logger from '../../../main/ets/model/Logger'; +import { Hypium } from '@ohos/hypium'; +import testsuite from '../test/List.test'; +import window from '@ohos.window'; +import Want from '@ohos.app.ability.Want'; + +export default class TestAbility extends UIAbility { + onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) { + Logger.info('testTag', 'TestAbility onCreate'); + Logger.info('testTag', 'want param:' + JSON.stringify(want) ?? ''); + Logger.info('testTag', 'launchParam:'+ JSON.stringify(launchParam) ?? ''); + let abilityDelegator: AbilityDelegatorRegistry.AbilityDelegator + abilityDelegator = AbilityDelegatorRegistry.getAbilityDelegator() + let abilityDelegatorArguments: AbilityDelegatorRegistry.AbilityDelegatorArgs + abilityDelegatorArguments = AbilityDelegatorRegistry.getArguments() + Logger.info('testTag', 'start run testcase!!!'); + Hypium.hypiumTest(abilityDelegator, abilityDelegatorArguments, testsuite) + } + + onDestroy() { + Logger.info('testTag', 'TestAbility onDestroy'); + } + + onWindowStageCreate(windowStage: window.WindowStage) { + Logger.info('testTag', 'TestAbility onWindowStageCreate'); + windowStage.loadContent('testability/pages/Index', (err, data) => { + if (err.code) { + Logger.error('testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? ''); + return; + } + Logger.info('testTag', 'Succeeded in loading the content. Data: %{public}s', + JSON.stringify(data) ?? ''); + }); + } + + onWindowStageDestroy() { + Logger.info('testTag', 'TestAbility onWindowStageDestroy'); + } + + onForeground() { + Logger.info('testTag', 'TestAbility onForeground'); + } + + onBackground() { + Logger.info('testTag', 'TestAbility onBackground'); + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Security/Huks/entry/src/ohosTest/ets/testability/pages/Index.ets b/HarmonyOS_NEXT/Security/Huks/entry/src/ohosTest/ets/testability/pages/Index.ets new file mode 100644 index 0000000000000000000000000000000000000000..0b21eddaab8f43054435f18b21a32e22bf99bbb2 --- /dev/null +++ b/HarmonyOS_NEXT/Security/Huks/entry/src/ohosTest/ets/testability/pages/Index.ets @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +@Entry +@Component +struct Index { + @State message: string = 'Hello World' + build() { + Row() { + Column() { + Text(this.message) + .fontSize(50) + .fontWeight(FontWeight.Bold) + Button() { + Text('next page') + .fontSize(20) + .fontWeight(FontWeight.Bold) + } + .type(ButtonType.Capsule) + .margin({ + top: 20 + }) + .backgroundColor('#0D9FFB') + .width('35%') + .height('5%') + .onClick(()=>{ + }) + } + .width('100%') + } + .height('100%') + } + } \ No newline at end of file diff --git a/HarmonyOS_NEXT/Security/Huks/entry/src/ohosTest/module.json5 b/HarmonyOS_NEXT/Security/Huks/entry/src/ohosTest/module.json5 new file mode 100644 index 0000000000000000000000000000000000000000..22e2c611f379dbb0fddf452b259ef27c508d058b --- /dev/null +++ b/HarmonyOS_NEXT/Security/Huks/entry/src/ohosTest/module.json5 @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "module": { + "name": "entry_test", + "type": "feature", + "description": "$string:module_test_desc", + "mainElement": "TestAbility", + "deviceTypes": [ + "default", + "tablet" + ], + "deliveryWithInstall": true, + "installationFree": false, + "pages": "$profile:test_pages", + "abilities": [ + { + "name": "TestAbility", + "srcEntrance": "./ets/testability/TestAbility.ets", + "description": "$string:TestAbility_desc", + "icon": "$media:icon", + "label": "$string:TestAbility_label", + "visible": true, + "startWindowIcon": "$media:icon", + "startWindowBackground": "$color:start_window_background", + "skills": [ + { + "actions": [ + "action.system.home" + ], + "entities": [ + "entity.system.home" + ] + } + ] + } + ] + } +} diff --git a/HarmonyOS_NEXT/Security/Huks/entry/src/ohosTest/resources/base/element/color.json b/HarmonyOS_NEXT/Security/Huks/entry/src/ohosTest/resources/base/element/color.json new file mode 100644 index 0000000000000000000000000000000000000000..3c712962da3c2751c2b9ddb53559afcbd2b54a02 --- /dev/null +++ b/HarmonyOS_NEXT/Security/Huks/entry/src/ohosTest/resources/base/element/color.json @@ -0,0 +1,8 @@ +{ + "color": [ + { + "name": "start_window_background", + "value": "#FFFFFF" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Security/Huks/entry/src/ohosTest/resources/base/element/string.json b/HarmonyOS_NEXT/Security/Huks/entry/src/ohosTest/resources/base/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..65d8fa5a7cf54aa3943dcd0214f58d1771bc1f6c --- /dev/null +++ b/HarmonyOS_NEXT/Security/Huks/entry/src/ohosTest/resources/base/element/string.json @@ -0,0 +1,16 @@ +{ + "string": [ + { + "name": "module_test_desc", + "value": "test ability description" + }, + { + "name": "TestAbility_desc", + "value": "the test ability" + }, + { + "name": "TestAbility_label", + "value": "test label" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Security/Huks/entry/src/ohosTest/resources/base/media/icon.png b/HarmonyOS_NEXT/Security/Huks/entry/src/ohosTest/resources/base/media/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ce307a8827bd75456441ceb57d530e4c8d45d36c Binary files /dev/null and b/HarmonyOS_NEXT/Security/Huks/entry/src/ohosTest/resources/base/media/icon.png differ diff --git a/HarmonyOS_NEXT/Security/Huks/entry/src/ohosTest/resources/base/profile/test_pages.json b/HarmonyOS_NEXT/Security/Huks/entry/src/ohosTest/resources/base/profile/test_pages.json new file mode 100644 index 0000000000000000000000000000000000000000..b7e7343cacb32ce982a45e76daad86e435e054fe --- /dev/null +++ b/HarmonyOS_NEXT/Security/Huks/entry/src/ohosTest/resources/base/profile/test_pages.json @@ -0,0 +1,5 @@ +{ + "src": [ + "testability/pages/Index" + ] +} diff --git a/HarmonyOS_NEXT/Security/Huks/hvigor/hvigor-config.json5 b/HarmonyOS_NEXT/Security/Huks/hvigor/hvigor-config.json5 new file mode 100644 index 0000000000000000000000000000000000000000..76d1e89d6c40687e43ac19c7c20f035f92f830e4 --- /dev/null +++ b/HarmonyOS_NEXT/Security/Huks/hvigor/hvigor-config.json5 @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "hvigorVersion": "3.0.9-s", + "dependencies": { + "@ohos/hvigor-ohos-plugin": "3.0.9-s" + }, + "execution": { + // "daemon": true, /* Enable daemon compilation. Default: true */ + // "incremental": true, /* Enable incremental compilation. Default: true */ + // "parallel": true, /* Enable parallel compilation. Default: true */ + // "typeCheck": false, /* Enable typeCheck. Default: false */ + }, + "logging": { + // "level": "info" /* Define the log level. Value: [ "debug" | "info" | "warn" | "error" ]. Default: "info" */ + }, + "debugging": { + // "stacktrace": false /* Disable stacktrace compilation. Default: false */ + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Security/Huks/hvigor/hvigor-wrapper.js b/HarmonyOS_NEXT/Security/Huks/hvigor/hvigor-wrapper.js new file mode 100644 index 0000000000000000000000000000000000000000..372eae8eb4a124095936f9cd78df5c6756746f3f --- /dev/null +++ b/HarmonyOS_NEXT/Security/Huks/hvigor/hvigor-wrapper.js @@ -0,0 +1 @@ +"use strict";var u=require("path"),D=require("os"),e=require("fs"),t=require("crypto"),r=require("child_process"),n="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},i={},C={},F=n&&n.__importDefault||function(u){return u&&u.__esModule?u:{default:u}};Object.defineProperty(C,"__esModule",{value:!0}),C.maxPathLength=C.isMac=C.isLinux=C.isWindows=void 0;const E=F(D),A="Windows_NT",o="Darwin";function a(){return E.default.type()===A}function c(){return E.default.type()===o}C.isWindows=a,C.isLinux=function(){return"Linux"===E.default.type()},C.isMac=c,C.maxPathLength=function(){return c()?1016:a()?259:4095},function(e){var t=n&&n.__createBinding||(Object.create?function(u,D,e,t){void 0===t&&(t=e);var r=Object.getOwnPropertyDescriptor(D,e);r&&!("get"in r?!D.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return D[e]}}),Object.defineProperty(u,t,r)}:function(u,D,e,t){void 0===t&&(t=e),u[t]=D[e]}),r=n&&n.__setModuleDefault||(Object.create?function(u,D){Object.defineProperty(u,"default",{enumerable:!0,value:D})}:function(u,D){u.default=D}),i=n&&n.__importStar||function(u){if(u&&u.__esModule)return u;var D={};if(null!=u)for(var e in u)"default"!==e&&Object.prototype.hasOwnProperty.call(u,e)&&t(D,u,e);return r(D,u),D};Object.defineProperty(e,"__esModule",{value:!0}),e.WORK_SPACE=e.HVIGOR_PROJECT_WRAPPER_HOME=e.HVIGOR_PROJECT_ROOT_DIR=e.HVIGOR_PROJECT_CACHES_HOME=e.HVIGOR_PNPM_STORE_PATH=e.HVIGOR_WRAPPER_PNPM_SCRIPT_PATH=e.PROJECT_CACHES=e.HVIGOR_WRAPPER_TOOLS_HOME=e.HVIGOR_USER_HOME=e.DEFAULT_PACKAGE_JSON=e.DEFAULT_HVIGOR_CONFIG_JSON_FILE_NAME=e.PNPM=e.HVIGOR=e.NPM_TOOL=e.PNPM_TOOL=e.HVIGOR_ENGINE_PACKAGE_NAME=void 0;const F=i(D),E=i(u),A=C;e.HVIGOR_ENGINE_PACKAGE_NAME="@ohos/hvigor",e.PNPM_TOOL=(0,A.isWindows)()?"pnpm.cmd":"pnpm",e.NPM_TOOL=(0,A.isWindows)()?"npm.cmd":"npm",e.HVIGOR="hvigor",e.PNPM="pnpm",e.DEFAULT_HVIGOR_CONFIG_JSON_FILE_NAME="hvigor-config.json5",e.DEFAULT_PACKAGE_JSON="package.json",e.HVIGOR_USER_HOME=E.resolve(F.homedir(),".hvigor"),e.HVIGOR_WRAPPER_TOOLS_HOME=E.resolve(e.HVIGOR_USER_HOME,"wrapper","tools"),e.PROJECT_CACHES="project_caches",e.HVIGOR_WRAPPER_PNPM_SCRIPT_PATH=E.resolve(e.HVIGOR_WRAPPER_TOOLS_HOME,"node_modules",".bin",e.PNPM_TOOL),e.HVIGOR_PNPM_STORE_PATH=E.resolve(e.HVIGOR_USER_HOME,"caches"),e.HVIGOR_PROJECT_CACHES_HOME=E.resolve(e.HVIGOR_USER_HOME,e.PROJECT_CACHES),e.HVIGOR_PROJECT_ROOT_DIR=process.cwd(),e.HVIGOR_PROJECT_WRAPPER_HOME=E.resolve(e.HVIGOR_PROJECT_ROOT_DIR,e.HVIGOR),e.WORK_SPACE="workspace"}(i);var s={},l={};Object.defineProperty(l,"__esModule",{value:!0}),l.logInfoPrintConsole=l.logErrorAndExit=void 0,l.logErrorAndExit=function(u){u instanceof Error?console.error(u.message):console.error(u),process.exit(-1)},l.logInfoPrintConsole=function(u){console.log(u)};var B=n&&n.__createBinding||(Object.create?function(u,D,e,t){void 0===t&&(t=e);var r=Object.getOwnPropertyDescriptor(D,e);r&&!("get"in r?!D.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return D[e]}}),Object.defineProperty(u,t,r)}:function(u,D,e,t){void 0===t&&(t=e),u[t]=D[e]}),d=n&&n.__setModuleDefault||(Object.create?function(u,D){Object.defineProperty(u,"default",{enumerable:!0,value:D})}:function(u,D){u.default=D}),f=n&&n.__importStar||function(u){if(u&&u.__esModule)return u;var D={};if(null!=u)for(var e in u)"default"!==e&&Object.prototype.hasOwnProperty.call(u,e)&&B(D,u,e);return d(D,u),D};Object.defineProperty(s,"__esModule",{value:!0});var _=s.executeBuild=void 0;const p=f(e),O=f(u),h=l;_=s.executeBuild=function(u){const D=O.resolve(u,"node_modules","@ohos","hvigor","bin","hvigor.js");try{const u=p.realpathSync(D);require(u)}catch(e){(0,h.logErrorAndExit)(`Error: ENOENT: no such file ${D},delete ${u} and retry.`)}};var P={},v={};!function(u){var D=n&&n.__importDefault||function(u){return u&&u.__esModule?u:{default:u}};Object.defineProperty(u,"__esModule",{value:!0}),u.hashFile=u.hash=u.createHash=void 0;const r=D(t),i=D(e);u.createHash=(u="MD5")=>r.default.createHash(u);u.hash=(D,e)=>(0,u.createHash)(e).update(D).digest("hex");u.hashFile=(D,e)=>{if(i.default.existsSync(D))return(0,u.hash)(i.default.readFileSync(D,"utf-8"),e)}}(v);var g={},m={},R={};Object.defineProperty(R,"__esModule",{value:!0}),R.Unicode=void 0;class y{}R.Unicode=y,y.SPACE_SEPARATOR=/[\u1680\u2000-\u200A\u202F\u205F\u3000]/,y.ID_START=/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/,y.ID_CONTINUE=/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDE00-\uDE3E\uDE47\uDE50-\uDE83\uDE86-\uDE99\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/,Object.defineProperty(m,"__esModule",{value:!0}),m.JudgeUtil=void 0;const I=R;m.JudgeUtil=class{static isIgnoreChar(u){return"string"==typeof u&&("\t"===u||"\v"===u||"\f"===u||" "===u||" "===u||"\ufeff"===u||"\n"===u||"\r"===u||"\u2028"===u||"\u2029"===u)}static isSpaceSeparator(u){return"string"==typeof u&&I.Unicode.SPACE_SEPARATOR.test(u)}static isIdStartChar(u){return"string"==typeof u&&(u>="a"&&u<="z"||u>="A"&&u<="Z"||"$"===u||"_"===u||I.Unicode.ID_START.test(u))}static isIdContinueChar(u){return"string"==typeof u&&(u>="a"&&u<="z"||u>="A"&&u<="Z"||u>="0"&&u<="9"||"$"===u||"_"===u||"‌"===u||"‍"===u||I.Unicode.ID_CONTINUE.test(u))}static isDigitWithoutZero(u){return/[1-9]/.test(u)}static isDigit(u){return"string"==typeof u&&/[0-9]/.test(u)}static isHexDigit(u){return"string"==typeof u&&/[0-9A-Fa-f]/.test(u)}};var N=n&&n.__importDefault||function(u){return u&&u.__esModule?u:{default:u}};Object.defineProperty(g,"__esModule",{value:!0}),g.parseJsonText=g.parseJsonFile=void 0;const b=N(e),S=N(D),w=N(u),H=m;var x;!function(u){u[u.Char=0]="Char",u[u.EOF=1]="EOF",u[u.Identifier=2]="Identifier"}(x||(x={}));let M,T,V,G,j,J,W="start",U=[],L=0,$=1,k=0,K=!1,z="default",q="'",Z=1;function X(u,D=!1){T=String(u),W="start",U=[],L=0,$=1,k=0,G=void 0,K=D;do{M=Q(),nu[W]()}while("eof"!==M.type);return G}function Q(){for(z="default",j="",q="'",Z=1;;){J=Y();const u=Du[z]();if(u)return u}}function Y(){if(T[L])return String.fromCodePoint(T.codePointAt(L))}function uu(){const u=Y();return"\n"===u?($++,k=0):u?k+=u.length:k++,u&&(L+=u.length),u}g.parseJsonFile=function(u,D=!1,e="utf-8"){const t=b.default.readFileSync(w.default.resolve(u),{encoding:e});try{return X(t,D)}catch(D){if(D instanceof SyntaxError){const e=D.message.split("at");if(2===e.length)throw new Error(`${e[0].trim()}${S.default.EOL}\t at ${u}:${e[1].trim()}`)}throw new Error(`${u} is not in valid JSON/JSON5 format.`)}},g.parseJsonText=X;const Du={default(){switch(J){case"/":return uu(),void(z="comment");case void 0:return uu(),eu("eof")}if(!H.JudgeUtil.isIgnoreChar(J)&&!H.JudgeUtil.isSpaceSeparator(J))return Du[W]();uu()},start(){z="value"},beforePropertyName(){switch(J){case"$":case"_":return j=uu(),void(z="identifierName");case"\\":return uu(),void(z="identifierNameStartEscape");case"}":return eu("punctuator",uu());case'"':case"'":return q=J,uu(),void(z="string")}if(H.JudgeUtil.isIdStartChar(J))return j+=uu(),void(z="identifierName");throw Eu(x.Char,uu())},afterPropertyName(){if(":"===J)return eu("punctuator",uu());throw Eu(x.Char,uu())},beforePropertyValue(){z="value"},afterPropertyValue(){switch(J){case",":case"}":return eu("punctuator",uu())}throw Eu(x.Char,uu())},beforeArrayValue(){if("]"===J)return eu("punctuator",uu());z="value"},afterArrayValue(){switch(J){case",":case"]":return eu("punctuator",uu())}throw Eu(x.Char,uu())},end(){throw Eu(x.Char,uu())},comment(){switch(J){case"*":return uu(),void(z="multiLineComment");case"/":return uu(),void(z="singleLineComment")}throw Eu(x.Char,uu())},multiLineComment(){switch(J){case"*":return uu(),void(z="multiLineCommentAsterisk");case void 0:throw Eu(x.Char,uu())}uu()},multiLineCommentAsterisk(){switch(J){case"*":return void uu();case"/":return uu(),void(z="default");case void 0:throw Eu(x.Char,uu())}uu(),z="multiLineComment"},singleLineComment(){switch(J){case"\n":case"\r":case"\u2028":case"\u2029":return uu(),void(z="default");case void 0:return uu(),eu("eof")}uu()},value(){switch(J){case"{":case"[":return eu("punctuator",uu());case"n":return uu(),tu("ull"),eu("null",null);case"t":return uu(),tu("rue"),eu("boolean",!0);case"f":return uu(),tu("alse"),eu("boolean",!1);case"-":case"+":return"-"===uu()&&(Z=-1),void(z="numerical");case".":case"0":case"I":case"N":return void(z="numerical");case'"':case"'":return q=J,uu(),j="",void(z="string")}if(void 0===J||!H.JudgeUtil.isDigitWithoutZero(J))throw Eu(x.Char,uu());z="numerical"},numerical(){switch(J){case".":return j=uu(),void(z="decimalPointLeading");case"0":return j=uu(),void(z="zero");case"I":return uu(),tu("nfinity"),eu("numeric",Z*(1/0));case"N":return uu(),tu("aN"),eu("numeric",NaN)}if(void 0!==J&&H.JudgeUtil.isDigitWithoutZero(J))return j=uu(),void(z="decimalInteger");throw Eu(x.Char,uu())},zero(){switch(J){case".":case"e":case"E":return void(z="decimal");case"x":case"X":return j+=uu(),void(z="hexadecimal")}return eu("numeric",0)},decimalInteger(){switch(J){case".":case"e":case"E":return void(z="decimal")}if(!H.JudgeUtil.isDigit(J))return eu("numeric",Z*Number(j));j+=uu()},decimal(){switch(J){case".":j+=uu(),z="decimalFraction";break;case"e":case"E":j+=uu(),z="decimalExponent"}},decimalPointLeading(){if(H.JudgeUtil.isDigit(J))return j+=uu(),void(z="decimalFraction");throw Eu(x.Char,uu())},decimalFraction(){switch(J){case"e":case"E":return j+=uu(),void(z="decimalExponent")}if(!H.JudgeUtil.isDigit(J))return eu("numeric",Z*Number(j));j+=uu()},decimalExponent(){switch(J){case"+":case"-":return j+=uu(),void(z="decimalExponentSign")}if(H.JudgeUtil.isDigit(J))return j+=uu(),void(z="decimalExponentInteger");throw Eu(x.Char,uu())},decimalExponentSign(){if(H.JudgeUtil.isDigit(J))return j+=uu(),void(z="decimalExponentInteger");throw Eu(x.Char,uu())},decimalExponentInteger(){if(!H.JudgeUtil.isDigit(J))return eu("numeric",Z*Number(j));j+=uu()},hexadecimal(){if(H.JudgeUtil.isHexDigit(J))return j+=uu(),void(z="hexadecimalInteger");throw Eu(x.Char,uu())},hexadecimalInteger(){if(!H.JudgeUtil.isHexDigit(J))return eu("numeric",Z*Number(j));j+=uu()},identifierNameStartEscape(){if("u"!==J)throw Eu(x.Char,uu());uu();const u=ru();switch(u){case"$":case"_":break;default:if(!H.JudgeUtil.isIdStartChar(u))throw Eu(x.Identifier)}j+=u,z="identifierName"},identifierName(){switch(J){case"$":case"_":case"‌":case"‍":return void(j+=uu());case"\\":return uu(),void(z="identifierNameEscape")}if(!H.JudgeUtil.isIdContinueChar(J))return eu("identifier",j);j+=uu()},identifierNameEscape(){if("u"!==J)throw Eu(x.Char,uu());uu();const u=ru();switch(u){case"$":case"_":case"‌":case"‍":break;default:if(!H.JudgeUtil.isIdContinueChar(u))throw Eu(x.Identifier)}j+=u,z="identifierName"},string(){switch(J){case"\\":return uu(),void(j+=function(){const u=Y(),D=function(){switch(Y()){case"b":return uu(),"\b";case"f":return uu(),"\f";case"n":return uu(),"\n";case"r":return uu(),"\r";case"t":return uu(),"\t";case"v":return uu(),"\v"}return}();if(D)return D;switch(u){case"0":if(uu(),H.JudgeUtil.isDigit(Y()))throw Eu(x.Char,uu());return"\0";case"x":return uu(),function(){let u="",D=Y();if(!H.JudgeUtil.isHexDigit(D))throw Eu(x.Char,uu());if(u+=uu(),D=Y(),!H.JudgeUtil.isHexDigit(D))throw Eu(x.Char,uu());return u+=uu(),String.fromCodePoint(parseInt(u,16))}();case"u":return uu(),ru();case"\n":case"\u2028":case"\u2029":return uu(),"";case"\r":return uu(),"\n"===Y()&&uu(),""}if(void 0===u||H.JudgeUtil.isDigitWithoutZero(u))throw Eu(x.Char,uu());return uu()}());case'"':case"'":if(J===q){const u=eu("string",j);return uu(),u}return void(j+=uu());case"\n":case"\r":case void 0:throw Eu(x.Char,uu());case"\u2028":case"\u2029":!function(u){console.warn(`JSON5: '${Fu(u)}' in strings is not valid ECMAScript; consider escaping.`)}(J)}j+=uu()}};function eu(u,D){return{type:u,value:D,line:$,column:k}}function tu(u){for(const D of u){if(Y()!==D)throw Eu(x.Char,uu());uu()}}function ru(){let u="",D=4;for(;D-- >0;){const D=Y();if(!H.JudgeUtil.isHexDigit(D))throw Eu(x.Char,uu());u+=uu()}return String.fromCodePoint(parseInt(u,16))}const nu={start(){if("eof"===M.type)throw Eu(x.EOF);iu()},beforePropertyName(){switch(M.type){case"identifier":case"string":return V=M.value,void(W="afterPropertyName");case"punctuator":return void Cu();case"eof":throw Eu(x.EOF)}},afterPropertyName(){if("eof"===M.type)throw Eu(x.EOF);W="beforePropertyValue"},beforePropertyValue(){if("eof"===M.type)throw Eu(x.EOF);iu()},afterPropertyValue(){if("eof"===M.type)throw Eu(x.EOF);switch(M.value){case",":return void(W="beforePropertyName");case"}":Cu()}},beforeArrayValue(){if("eof"===M.type)throw Eu(x.EOF);"punctuator"!==M.type||"]"!==M.value?iu():Cu()},afterArrayValue(){if("eof"===M.type)throw Eu(x.EOF);switch(M.value){case",":return void(W="beforeArrayValue");case"]":Cu()}},end(){}};function iu(){const u=function(){let u;switch(M.type){case"punctuator":switch(M.value){case"{":u={};break;case"[":u=[]}break;case"null":case"boolean":case"numeric":case"string":u=M.value}return u}();if(K&&"object"==typeof u&&(u._line=$,u._column=k),void 0===G)G=u;else{const D=U[U.length-1];Array.isArray(D)?K&&"object"!=typeof u?D.push({value:u,_line:$,_column:k}):D.push(u):D[V]=K&&"object"!=typeof u?{value:u,_line:$,_column:k}:u}!function(u){if(u&&"object"==typeof u)U.push(u),W=Array.isArray(u)?"beforeArrayValue":"beforePropertyName";else{const u=U[U.length-1];W=u?Array.isArray(u)?"afterArrayValue":"afterPropertyValue":"end"}}(u)}function Cu(){U.pop();const u=U[U.length-1];W=u?Array.isArray(u)?"afterArrayValue":"afterPropertyValue":"end"}function Fu(u){const D={"'":"\\'",'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\v":"\\v","\0":"\\0","\u2028":"\\u2028","\u2029":"\\u2029"};if(D[u])return D[u];if(u<" "){const D=u.charCodeAt(0).toString(16);return`\\x${`00${D}`.substring(D.length)}`}return u}function Eu(u,D){let e="";switch(u){case x.Char:e=void 0===D?`JSON5: invalid end of input at ${$}:${k}`:`JSON5: invalid character '${Fu(D)}' at ${$}:${k}`;break;case x.EOF:e=`JSON5: invalid end of input at ${$}:${k}`;break;case x.Identifier:k-=5,e=`JSON5: invalid identifier character at ${$}:${k}`}const t=new Au(e);return t.lineNumber=$,t.columnNumber=k,t}class Au extends SyntaxError{}var ou={},au=n&&n.__createBinding||(Object.create?function(u,D,e,t){void 0===t&&(t=e);var r=Object.getOwnPropertyDescriptor(D,e);r&&!("get"in r?!D.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return D[e]}}),Object.defineProperty(u,t,r)}:function(u,D,e,t){void 0===t&&(t=e),u[t]=D[e]}),cu=n&&n.__setModuleDefault||(Object.create?function(u,D){Object.defineProperty(u,"default",{enumerable:!0,value:D})}:function(u,D){u.default=D}),su=n&&n.__importStar||function(u){if(u&&u.__esModule)return u;var D={};if(null!=u)for(var e in u)"default"!==e&&Object.prototype.hasOwnProperty.call(u,e)&&au(D,u,e);return cu(D,u),D},lu=n&&n.__importDefault||function(u){return u&&u.__esModule?u:{default:u}};Object.defineProperty(ou,"__esModule",{value:!0}),ou.isFileExists=ou.offlinePluginConversion=ou.executeCommand=ou.getNpmPath=ou.hasNpmPackInPaths=void 0;const Bu=r,du=lu(e),fu=su(u),_u=i,pu=l;ou.hasNpmPackInPaths=function(u,D){try{return require.resolve(u,{paths:[...D]}),!0}catch(u){return!1}},ou.getNpmPath=function(){const u=process.execPath;return fu.join(fu.dirname(u),_u.NPM_TOOL)},ou.executeCommand=function(u,D,e){0!==(0,Bu.spawnSync)(u,D,e).status&&(0,pu.logErrorAndExit)(`Error: ${u} ${D} execute failed.See above for details.`)},ou.offlinePluginConversion=function(u,D){return D.startsWith("file:")||D.endsWith(".tgz")?fu.resolve(u,_u.HVIGOR,D.replace("file:","")):D},ou.isFileExists=function(u){return du.default.existsSync(u)&&du.default.statSync(u).isFile()};var Ou=n&&n.__createBinding||(Object.create?function(u,D,e,t){void 0===t&&(t=e);var r=Object.getOwnPropertyDescriptor(D,e);r&&!("get"in r?!D.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return D[e]}}),Object.defineProperty(u,t,r)}:function(u,D,e,t){void 0===t&&(t=e),u[t]=D[e]}),hu=n&&n.__setModuleDefault||(Object.create?function(u,D){Object.defineProperty(u,"default",{enumerable:!0,value:D})}:function(u,D){u.default=D}),Pu=n&&n.__importStar||function(u){if(u&&u.__esModule)return u;var D={};if(null!=u)for(var e in u)"default"!==e&&Object.prototype.hasOwnProperty.call(u,e)&&Ou(D,u,e);return hu(D,u),D},vu=n&&n.__importDefault||function(u){return u&&u.__esModule?u:{default:u}};Object.defineProperty(P,"__esModule",{value:!0});var gu=P.initProjectWorkSpace=void 0;const mu=Pu(e),Ru=vu(D),yu=Pu(u),Iu=v,Nu=i,bu=g,Su=l,wu=ou;let Hu,xu,Mu;function Tu(u,D,e){return void 0!==e.dependencies&&(0,wu.offlinePluginConversion)(Nu.HVIGOR_PROJECT_ROOT_DIR,D.dependencies[u])===yu.normalize(e.dependencies[u])}function Vu(){const u=yu.join(Mu,Nu.WORK_SPACE);if((0,Su.logInfoPrintConsole)("Hvigor cleaning..."),!mu.existsSync(u))return;const D=mu.readdirSync(u);if(!D||0===D.length)return;const e=yu.resolve(Mu,"node_modules","@ohos","hvigor","bin","hvigor.js");mu.existsSync(e)&&(0,wu.executeCommand)(process.argv[0],[e,"--stop-daemon"],{});try{D.forEach((D=>{mu.rmSync(yu.resolve(u,D),{recursive:!0})}))}catch(D){(0,Su.logErrorAndExit)(`The hvigor build tool cannot be installed. Please manually clear the workspace directory and synchronize the project again.\n\n Workspace Path: ${u}.`)}}gu=P.initProjectWorkSpace=function(){if(Hu=function(){const u=yu.resolve(Nu.HVIGOR_PROJECT_WRAPPER_HOME,Nu.DEFAULT_HVIGOR_CONFIG_JSON_FILE_NAME);mu.existsSync(u)||(0,Su.logErrorAndExit)(`Error: Hvigor config file ${u} does not exist.`);return(0,bu.parseJsonFile)(u)}(),Mu=function(u){let D;D=function(u){let D=u.hvigorVersion;if(D.startsWith("file:")||D.endsWith(".tgz"))return!1;const e=u.dependencies,t=Object.getOwnPropertyNames(e);for(const u of t){const D=e[u];if(D.startsWith("file:")||D.endsWith(".tgz"))return!1}if(1===t.length&&"@ohos/hvigor-ohos-plugin"===t[0])return D>"2.5.0";return!1}(u)?function(u){let D=`${Nu.HVIGOR_ENGINE_PACKAGE_NAME}@${u.hvigorVersion}`;const e=u.dependencies;if(e){Object.getOwnPropertyNames(e).sort().forEach((u=>{D+=`,${u}@${e[u]}`}))}return(0,Iu.hash)(D)}(u):(0,Iu.hash)(process.cwd());return yu.resolve(Ru.default.homedir(),".hvigor","project_caches",D)}(Hu),xu=function(){const u=yu.resolve(Mu,Nu.WORK_SPACE,Nu.DEFAULT_PACKAGE_JSON);return mu.existsSync(u)?(0,bu.parseJsonFile)(u):{dependencies:{}}}(),!(0,wu.hasNpmPackInPaths)(Nu.HVIGOR_ENGINE_PACKAGE_NAME,[yu.join(Mu,Nu.WORK_SPACE)])||(0,wu.offlinePluginConversion)(Nu.HVIGOR_PROJECT_ROOT_DIR,Hu.hvigorVersion)!==xu.dependencies[Nu.HVIGOR_ENGINE_PACKAGE_NAME]||!function(){function u(u){const D=null==u?void 0:u.dependencies;return void 0===D?0:Object.getOwnPropertyNames(D).length}const D=u(Hu),e=u(xu);if(D+1!==e)return!1;for(const u in null==Hu?void 0:Hu.dependencies)if(!(0,wu.hasNpmPackInPaths)(u,[yu.join(Mu,Nu.WORK_SPACE)])||!Tu(u,Hu,xu))return!1;return!0}()){Vu();try{!function(){(0,Su.logInfoPrintConsole)("Hvigor installing...");for(const u in Hu.dependencies)Hu.dependencies[u]&&(Hu.dependencies[u]=(0,wu.offlinePluginConversion)(Nu.HVIGOR_PROJECT_ROOT_DIR,Hu.dependencies[u]));const u={dependencies:{...Hu.dependencies}};u.dependencies[Nu.HVIGOR_ENGINE_PACKAGE_NAME]=(0,wu.offlinePluginConversion)(Nu.HVIGOR_PROJECT_ROOT_DIR,Hu.hvigorVersion);const D=yu.join(Mu,Nu.WORK_SPACE);try{mu.mkdirSync(D,{recursive:!0});const e=yu.resolve(D,Nu.DEFAULT_PACKAGE_JSON);mu.writeFileSync(e,JSON.stringify(u))}catch(u){(0,Su.logErrorAndExit)(u)}(function(){const u=["config","set","store-dir",Nu.HVIGOR_PNPM_STORE_PATH],D={cwd:yu.join(Mu,Nu.WORK_SPACE),stdio:["inherit","inherit","inherit"]};(0,wu.executeCommand)(Nu.HVIGOR_WRAPPER_PNPM_SCRIPT_PATH,u,D)})(),function(){const u=["install"],D={cwd:yu.join(Mu,Nu.WORK_SPACE),stdio:["inherit","inherit","inherit"]};(0,wu.executeCommand)(Nu.HVIGOR_WRAPPER_PNPM_SCRIPT_PATH,u,D)}(),(0,Su.logInfoPrintConsole)("Hvigor install success.")}()}catch(u){Vu()}}return Mu};var Gu={};!function(t){var C=n&&n.__createBinding||(Object.create?function(u,D,e,t){void 0===t&&(t=e);var r=Object.getOwnPropertyDescriptor(D,e);r&&!("get"in r?!D.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return D[e]}}),Object.defineProperty(u,t,r)}:function(u,D,e,t){void 0===t&&(t=e),u[t]=D[e]}),F=n&&n.__setModuleDefault||(Object.create?function(u,D){Object.defineProperty(u,"default",{enumerable:!0,value:D})}:function(u,D){u.default=D}),E=n&&n.__importStar||function(u){if(u&&u.__esModule)return u;var D={};if(null!=u)for(var e in u)"default"!==e&&Object.prototype.hasOwnProperty.call(u,e)&&C(D,u,e);return F(D,u),D},A=n&&n.__importDefault||function(u){return u&&u.__esModule?u:{default:u}};Object.defineProperty(t,"__esModule",{value:!0}),t.executeInstallPnpm=t.isPnpmInstalled=t.environmentHandler=t.checkNpmConifg=t.PNPM_VERSION=void 0;const o=r,a=E(e),c=A(D),s=E(u),B=i,d=l,f=ou;t.PNPM_VERSION="7.30.0",t.checkNpmConifg=function(){const u=s.resolve(B.HVIGOR_PROJECT_ROOT_DIR,".npmrc"),D=s.resolve(c.default.homedir(),".npmrc");if((0,f.isFileExists)(u)||(0,f.isFileExists)(D))return;const e=(0,f.getNpmPath)(),t=(0,o.spawnSync)(e,["config","get","prefix"],{cwd:B.HVIGOR_PROJECT_ROOT_DIR});if(0!==t.status||!t.stdout)return void(0,d.logErrorAndExit)("Error: The hvigor depends on the npmrc file. Configure the npmrc file first.");const r=s.resolve(`${t.stdout}`.replace(/[\r\n]/gi,""),".npmrc");(0,f.isFileExists)(r)||(0,d.logErrorAndExit)("Error: The hvigor depends on the npmrc file. Configure the npmrc file first.")},t.environmentHandler=function(){process.env["npm_config_update-notifier"]="false"},t.isPnpmInstalled=function(){return!!a.existsSync(B.HVIGOR_WRAPPER_PNPM_SCRIPT_PATH)&&(0,f.hasNpmPackInPaths)("pnpm",[B.HVIGOR_WRAPPER_TOOLS_HOME])},t.executeInstallPnpm=function(){(0,d.logInfoPrintConsole)(`Installing pnpm@${t.PNPM_VERSION}...`);const u=(0,f.getNpmPath)();!function(){const u=s.resolve(B.HVIGOR_WRAPPER_TOOLS_HOME,B.DEFAULT_PACKAGE_JSON);try{a.existsSync(B.HVIGOR_WRAPPER_TOOLS_HOME)||a.mkdirSync(B.HVIGOR_WRAPPER_TOOLS_HOME,{recursive:!0});const D={dependencies:{}};D.dependencies[B.PNPM]=t.PNPM_VERSION,a.writeFileSync(u,JSON.stringify(D))}catch(D){(0,d.logErrorAndExit)(`Error: EPERM: operation not permitted,create ${u} failed.`)}}(),(0,f.executeCommand)(u,["install","pnpm"],{cwd:B.HVIGOR_WRAPPER_TOOLS_HOME,stdio:["inherit","inherit","inherit"],env:process.env}),(0,d.logInfoPrintConsole)("Pnpm install success.")}}(Gu),function(){Gu.checkNpmConifg(),Gu.environmentHandler(),Gu.isPnpmInstalled()||Gu.executeInstallPnpm();const D=gu();_(u.join(D,i.WORK_SPACE))}(); \ No newline at end of file diff --git a/HarmonyOS_NEXT/Security/Huks/hvigorfile.ts b/HarmonyOS_NEXT/Security/Huks/hvigorfile.ts new file mode 100644 index 0000000000000000000000000000000000000000..de76d0675bc13811fab0d07317942dc5efef4b54 --- /dev/null +++ b/HarmonyOS_NEXT/Security/Huks/hvigorfile.ts @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// Script for compiling build behavior. It is built in the build plug-in and cannot be modified currently. +export { appTasks } from '@ohos/hvigor-ohos-plugin'; \ No newline at end of file diff --git a/HarmonyOS_NEXT/Security/Huks/hvigorw b/HarmonyOS_NEXT/Security/Huks/hvigorw new file mode 100644 index 0000000000000000000000000000000000000000..b4d7760e72934718fc616fcef2806a1c7f04ba34 --- /dev/null +++ b/HarmonyOS_NEXT/Security/Huks/hvigorw @@ -0,0 +1,61 @@ +# Copyright (c) 2023 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +#!/bin/bash + +# ---------------------------------------------------------------------------- +# Hvigor startup script, version 1.0.0 +# +# Required ENV vars: +# ------------------ +# NODE_HOME - location of a Node home dir +# or +# Add /usr/local/nodejs/bin to the PATH environment variable +# ---------------------------------------------------------------------------- + +HVIGOR_APP_HOME=$(dirname $(readlink -f $0)) +HVIGOR_WRAPPER_SCRIPT=${HVIGOR_APP_HOME}/hvigor/hvigor-wrapper.js +warn() { + echo "" + echo -e "\033[1;33m`date '+[%Y-%m-%d %H:%M:%S]'`$@\033[0m" +} + +error() { + echo "" + echo -e "\033[1;31m`date '+[%Y-%m-%d %H:%M:%S]'`$@\033[0m" +} + +fail() { + error "$@" + exit 1 +} + +# Determine node to start hvigor wrapper script +if [ -n "${NODE_HOME}" ];then + EXECUTABLE_NODE="${NODE_HOME}/bin/node" + if [ ! -x "$EXECUTABLE_NODE" ];then + fail "ERROR: NODE_HOME is set to an invalid directory,check $NODE_HOME\n\nPlease set NODE_HOME in your environment to the location where your nodejs installed" + fi +else + EXECUTABLE_NODE="node" + which ${EXECUTABLE_NODE} > /dev/null 2>&1 || fail "ERROR: NODE_HOME is not set and not 'node' command found in your path" +fi + +# Check hvigor wrapper script +if [ ! -r "$HVIGOR_WRAPPER_SCRIPT" ];then + fail "ERROR: Couldn't find hvigor/hvigor-wrapper.js in ${HVIGOR_APP_HOME}" +fi + +# start hvigor-wrapper script +exec "${EXECUTABLE_NODE}" \ + "${HVIGOR_WRAPPER_SCRIPT}" "$@" diff --git a/HarmonyOS_NEXT/Security/Huks/hvigorw.bat b/HarmonyOS_NEXT/Security/Huks/hvigorw.bat new file mode 100644 index 0000000000000000000000000000000000000000..f4b8e7c86d4c0c4789e9931a1d14e6cffb7d6d58 --- /dev/null +++ b/HarmonyOS_NEXT/Security/Huks/hvigorw.bat @@ -0,0 +1,72 @@ +:: Copyright (c) 2023 Huawei Device Co., Ltd. +:: Licensed under the Apache License, Version 2.0 (the "License"); +:: you may not use this file except in compliance with the License. +:: You may obtain a copy of the License at +:: +:: http://www.apache.org/licenses/LICENSE-2.0 +:: +:: Unless required by applicable law or agreed to in writing, software +:: distributed under the License is distributed on an "AS IS" BASIS, +:: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +:: See the License for the specific language governing permissions and +:: limitations under the License. + +@echo off + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Hvigor startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +set WRAPPER_MODULE_PATH=%APP_HOME%\hvigor\hvigor-wrapper.js +set NODE_EXE=node.exe + +goto start + +:start +@rem Find node.exe +if defined NODE_HOME goto findNodeFromNodeHome + +%NODE_EXE% --version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: NODE_HOME is not set and no 'node' command could be found in your PATH. +echo. +echo Please set the NODE_HOME variable in your environment to match the +echo location of your NodeJs installation. + +goto fail + +:findNodeFromNodeHome +set NODE_HOME=%NODE_HOME:"=% +set NODE_EXE_PATH=%NODE_HOME%/%NODE_EXE% + +if exist "%NODE_EXE_PATH%" goto execute +echo. +echo ERROR: NODE_HOME is not set and no 'node' command could be found in your PATH. +echo. +echo Please set the NODE_HOME variable in your environment to match the +echo location of your NodeJs installation. + +goto fail + +:execute +@rem Execute hvigor +"%NODE_EXE%" %WRAPPER_MODULE_PATH% %* + +:fail +exit /b 1 diff --git a/HarmonyOS_NEXT/Security/Huks/oh-package.json5 b/HarmonyOS_NEXT/Security/Huks/oh-package.json5 new file mode 100644 index 0000000000000000000000000000000000000000..27888292f2e50782e45ee069934a29ec8d14cf21 --- /dev/null +++ b/HarmonyOS_NEXT/Security/Huks/oh-package.json5 @@ -0,0 +1,11 @@ +{ + "license": "ISC", + "devDependencies": { + "@ohos/hypium": "1.0.6" + }, + "name": "huks", + "description": "example description", + "repository": {}, + "version": "1.0.0", + "dependencies": {} +} diff --git a/HarmonyOS_NEXT/Security/Huks/screenshots/device/index.png b/HarmonyOS_NEXT/Security/Huks/screenshots/device/index.png new file mode 100644 index 0000000000000000000000000000000000000000..c2894209f3b033c6a75c7dbe53dfef35971696fd Binary files /dev/null and b/HarmonyOS_NEXT/Security/Huks/screenshots/device/index.png differ diff --git a/HarmonyOS_NEXT/Security/Huks/screenshots/device/minAccessControl.png b/HarmonyOS_NEXT/Security/Huks/screenshots/device/minAccessControl.png new file mode 100644 index 0000000000000000000000000000000000000000..dad4be90b6713eadedf1a98df3d498c490111b8d Binary files /dev/null and b/HarmonyOS_NEXT/Security/Huks/screenshots/device/minAccessControl.png differ diff --git a/HarmonyOS_NEXT/Security/Huks/screenshots/device/newKey.png b/HarmonyOS_NEXT/Security/Huks/screenshots/device/newKey.png new file mode 100644 index 0000000000000000000000000000000000000000..ba2aed6d0f7a4d1f6715bb86116211453ab43b1f Binary files /dev/null and b/HarmonyOS_NEXT/Security/Huks/screenshots/device/newKey.png differ diff --git a/HarmonyOS_NEXT/Security/Huks/screenshots/device/oldKey.png b/HarmonyOS_NEXT/Security/Huks/screenshots/device/oldKey.png new file mode 100644 index 0000000000000000000000000000000000000000..67ba95df982f321bf2e6f640c49a347471eb4424 Binary files /dev/null and b/HarmonyOS_NEXT/Security/Huks/screenshots/device/oldKey.png differ diff --git a/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/.gitignore b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..42904af5b47e3e3d92fc65587d8ce8df0c459281 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/.gitignore @@ -0,0 +1,10 @@ +/node_modules +/local.properties +/.idea +**/build +/.hvigor +.cxx +/.clangd +/.clang-format +/.clang-tidy +/oh_modules \ No newline at end of file diff --git a/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/AppScope/app.json5 b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/AppScope/app.json5 new file mode 100644 index 0000000000000000000000000000000000000000..663a925642cbc49c92db9b1650b3ccdaa9413b26 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/AppScope/app.json5 @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2021-2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "app": { + "bundleName": "ohos.samples.adaptiveservicewidget", + "vendor": "samples", + "versionCode": 1000000, + "versionName": "1.0.0", + "icon": "$media:app_icon", + "label": "$string:app_name", + "distributedNotificationEnabled": true + } +} diff --git a/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/AppScope/resources/base/element/string.json b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/AppScope/resources/base/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..cea5cf3f55f0a16974047d7e2ef93bde5522d61d --- /dev/null +++ b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/AppScope/resources/base/element/string.json @@ -0,0 +1,8 @@ +{ + "string": [ + { + "name": "app_name", + "value": "AdaptiveServiceWidget" + } + ] +} diff --git a/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/AppScope/resources/base/media/app_icon.png b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/AppScope/resources/base/media/app_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ce307a8827bd75456441ceb57d530e4c8d45d36c Binary files /dev/null and b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/AppScope/resources/base/media/app_icon.png differ diff --git a/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/build-profile.json5 b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/build-profile.json5 new file mode 100644 index 0000000000000000000000000000000000000000..ee19c795a5ba3951d206a6224529368323461846 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/build-profile.json5 @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2022-2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "app": { + "products": [ + { + "name": "default", + "signingConfig": "default", + "compileSdkVersion": "4.0.0(10)", + "compatibleSdkVersion": "4.0.0(10)", + "runtimeOS": "HarmonyOS" + } + ], + "signingConfigs": [ + ] + }, + "modules": [ + { + "name": "entry", + "srcPath": "./entry", + "targets": [ + { + "name": "default", + "applyToProducts": [ + "default" + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/.gitignore b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..5a6ba80fa3d9498a23ae8ae7d9518f8743fa8a96 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/.gitignore @@ -0,0 +1,4 @@ +/node_modules +/.preview +/build +/.cxx \ No newline at end of file diff --git a/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/build-profile.json5 b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/build-profile.json5 new file mode 100644 index 0000000000000000000000000000000000000000..73714cebf63c4ffca3e761dad0bda4bbcc6a55b0 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/build-profile.json5 @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2022-2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "apiType": 'stageMode', + "buildOption": { + "arkOptions": { + // "apPath": "./modules.ap" /* Profile used for profile-guided optimization (PGO), a compiler optimization technique to improve app runtime performance. */ + } + }, + "targets": [ + { + "name": "default" + }, + { + "name": "ohosTest", + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/hvigorfile.ts b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/hvigorfile.ts new file mode 100644 index 0000000000000000000000000000000000000000..7a95b202bdb317b3e7a7a6a1113895be31e88962 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/hvigorfile.ts @@ -0,0 +1,2 @@ +// Script for compiling build behavior. It is built in the build plug-in and cannot be modified currently. +export { hapTasks } from '@ohos/hvigor-ohos-plugin' diff --git a/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/oh-package.json5 b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/oh-package.json5 new file mode 100644 index 0000000000000000000000000000000000000000..a7afd4ec1017198e9d8017e9f28e8e1d786a9e39 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/oh-package.json5 @@ -0,0 +1,9 @@ +{ + "license": "ISC", + "devDependencies": {}, + "name": "entry", + "description": "example description", + "repository": {}, + "version": "1.0.0", + "dependencies": {} +} diff --git a/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/ets/entryability/EntryAbility.ets b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/ets/entryability/EntryAbility.ets new file mode 100644 index 0000000000000000000000000000000000000000..c3a5ad83b91fbb9527ffc6edf3a3f962cf7ab18e --- /dev/null +++ b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/ets/entryability/EntryAbility.ets @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2021-2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import UIAbility from '@ohos.app.ability.UIAbility'; +import Window from '@ohos.window'; +import Logger from '../utils/Logger'; +import Want from '@ohos.app.ability.Want'; +import AbilityConstant from '@ohos.app.ability.AbilityConstant'; + +export default class EntryAbility extends UIAbility { + onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) { + Logger.info('Ability onCreate'); + } + + onDestroy() { + Logger.info('Ability onDestroy') + } + + onWindowStageCreate(windowStage: Window.WindowStage) { + // Main window is created, set main page for this ability + Logger.info('Ability onWindowStageCreate') + windowStage.loadContent('pages/Index', (err, data) => { + if (err.code) { + Logger.error(`Failed to load the content.Cause: ${JSON.stringify(err)}`) + return + } + Logger.info(`Succeeded in loading the content. Data: ${JSON.stringify(data)}`) + }) + } + + onWindowStageDestroy() { + // Main window is destroyed, release UI related resources + Logger.info('Ability onWindowStageDestroy') + } + + onForeground() { + // Ability has brought to foreground + Logger.info('Ability onForeground') + } + + onBackground() { + // Ability has back to background + Logger.info('Ability onBackground') + } +} diff --git a/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/ets/entryformability/EntryFormAbility.ets b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/ets/entryformability/EntryFormAbility.ets new file mode 100644 index 0000000000000000000000000000000000000000..6b4ebf3e721f49c5220a2c0b7300c4896a1fbc2e --- /dev/null +++ b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/ets/entryformability/EntryFormAbility.ets @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import FormExtensionAbility from '@ohos.app.form.FormExtensionAbility'; +import formBindingData from '@ohos.application.formBindingData'; +import formInfo from '@ohos.application.formInfo'; +import Want from '@ohos.app.ability.Want'; + +export default class EntryFormAbility extends FormExtensionAbility { + onCreate(want: Want): formBindingData.FormBindingData { + // Called to return a FormBindingData object. + let formData = new Object(); + return formBindingData.createFormBindingData(formData); + } + + onCastToNormal(formId: string): void { + // Called when the form provider is notified that a temporary form is successfully + // converted to a normal form. + } + + onUpdate(formId: string): void { + // Called to notify the form provider to update a specified form. + } + + onVisibilityChange(newStatus: string): void { + // Called when the form provider receives form events from the system. + } + + onEvent(formId: string, message: string): void { + // Called when a specified message event defined by the form provider is triggered. + } + + onDestroy(formId: string): void { + // Called to notify the form provider that a specified form has been destroyed. + } + + onAcquireFormState(want: Want): formInfo.FormState { + // Called to return a {@link FormState} object. + return formInfo.FormState.READY; + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/ets/pages/Index.ets b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/ets/pages/Index.ets new file mode 100644 index 0000000000000000000000000000000000000000..16cf84bf8f36a87ce5a9d8023aedf267fe9f06d4 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/ets/pages/Index.ets @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +@Entry +@Component +struct Index { + build() { + Column() { + Row() { + Text($r('app.string.index_title')) + .fontSize(18) + .fontColor(Color.White) + } + .height(60) + .width('100%') + .padding({ left: 20 }) + .backgroundColor($r('app.color.title_bg')) + + Column({ space: 20 }) { + Text($r('app.string.title')) + .fontSize(20) + + Text($r('app.string.content1')) + .fontSize(20) + + Text($r('app.string.content2')) + .fontSize(20) + } + .alignItems(HorizontalAlign.Start) + .padding(20) + } + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/ets/utils/Logger.ets b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/ets/utils/Logger.ets new file mode 100644 index 0000000000000000000000000000000000000000..6867a8894c68ed85260802f370b53f9219425403 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/ets/utils/Logger.ets @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2022-2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +class Logger { + prefix: string = ''; + + constructor(prefix: string) { + this.prefix = prefix; + } + + debug(...args: string[]): void { + console.debug(this.prefix + args); + } + + info(...args: string[]): void { + console.info(this.prefix + args); + } + + warn(...args: string[]): void { + console.warn(this.prefix + args); + } + + error(...args: string[]): void { + console.error(this.prefix + args); + } +} + +export default new Logger('[Sample_AdaptiveServiceWidget]'); \ No newline at end of file diff --git a/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/common/envelope.png b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/common/envelope.png new file mode 100644 index 0000000000000000000000000000000000000000..8c25c4aaecedee3eed8aad54a9be701f7ee201b2 Binary files /dev/null and b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/common/envelope.png differ diff --git a/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/common/ic_add.svg b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/common/ic_add.svg new file mode 100644 index 0000000000000000000000000000000000000000..83801893cd9710f18016d347ec2b962488751133 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/common/ic_add.svg @@ -0,0 +1,30 @@ + + + Public/ic_public_add_norm_filled + + + + + + + + + + \ No newline at end of file diff --git a/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/common/ic_app.svg b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/common/ic_app.svg new file mode 100644 index 0000000000000000000000000000000000000000..cabb1c4f3e64d96d2f910725907aa09bf6407f9d --- /dev/null +++ b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/common/ic_app.svg @@ -0,0 +1,8 @@ + + + ic_1 + + + + + \ No newline at end of file diff --git a/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/common/ic_app_img.svg b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/common/ic_app_img.svg new file mode 100644 index 0000000000000000000000000000000000000000..52e38085b88e900690a4a9fc989251874d82c452 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/common/ic_app_img.svg @@ -0,0 +1,8 @@ + + + ic_2 + + + + + \ No newline at end of file diff --git a/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/common/ic_gift.svg b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/common/ic_gift.svg new file mode 100644 index 0000000000000000000000000000000000000000..6f809af9b8d593e0a44d09a53dc2c3b5a12db93c --- /dev/null +++ b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/common/ic_gift.svg @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + diff --git a/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/common/image.png b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/common/image.png new file mode 100644 index 0000000000000000000000000000000000000000..e1b755789ae81660ad15eb2869496afa40dcd3d4 Binary files /dev/null and b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/common/image.png differ diff --git a/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/common/poster1.png b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/common/poster1.png new file mode 100644 index 0000000000000000000000000000000000000000..ecc0b7831969dfaec8fcf6b2971aaeb69295926f Binary files /dev/null and b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/common/poster1.png differ diff --git a/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/common/poster2.png b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/common/poster2.png new file mode 100644 index 0000000000000000000000000000000000000000..94d8f9816ceecaf622ca141a3ab3fffde849e5ea Binary files /dev/null and b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/common/poster2.png differ diff --git a/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/common/widget.png b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/common/widget.png new file mode 100644 index 0000000000000000000000000000000000000000..c13bb4d340435b2e8d8fd90660ffc9916e1f6d68 Binary files /dev/null and b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/common/widget.png differ diff --git a/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/complex/pages/index/index.css b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/complex/pages/index/index.css new file mode 100644 index 0000000000000000000000000000000000000000..cc8a1683f16b1c1c2cdc033df9568b9717c385de --- /dev/null +++ b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/complex/pages/index/index.css @@ -0,0 +1,253 @@ +/* + * Copyright (c) 2021 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +.container { + flex-direction: column; + margin: 12px; + overflow:hidden; +} + +.region-title { + display: flex; + flex-direction: row; + width: 100%; + position: relative; + flex-shrink: 0; +} + +.left-image { + width: 20px; + height: 20px; +} + +.left-text { + font-size: 14px; + margin-left: 5px; + color: coral; + font-weight: bold; +} + +.region-plates { + margin-top: 5px; + flex-direction: row; + justify-content: space-between; + height: 60px; + align-content: center; + flex-shrink: 0; +} + +.exponent-left { + padding: 6px; + margin-right: 4px; + border-radius: 10px; + flex-direction: column; + background-color: #FFF8F8; + justify-content: space-evenly; +} + +.exponent-text { + prefer-font-sizes: 12px,10px; + text-overflow: ellipsis; + max-lines: 1; + flex-grow: 1; + width: 80%; + font-weight: bold; + opacity: 0.8; +} + +.exponent-num-red { + font-size: 10px; + margin-top: 3px; + margin-bottom: 3px; + color: #FE3D3B; + font-weight: bold; + opacity: 0.8; +} + +.exponent-div { + flex-direction: row; +} + +.row-div { + flex-direction: row; + position: relative; + height: 20px; +} + +.region-row-div { + flex-direction: row; + height: 50px; + position: relative; +} + +.exponent-float-red { + font-size: 10px; + color: #FE3D3B; + font-weight: bold; + opacity: 0.8; +} + +.exponent-per-red { + font-size: 9px; + color: #FE3D3B; + font-weight: bold; + opacity: 0.8; + margin-left: 7px; +} + +.exponent-mid { + padding: 6px; + margin-right: 2px; + margin-left: 2px; + border-radius: 10px; + flex-direction: column; + background-color: #F4FDF4; + justify-content: space-evenly; +} + +.fund-text { + font-size: 10px; + opacity: 0.6; + position: absolute; +} + +.time-text-front { + font-size: 10px; + opacity: 0.6; + position: absolute; + right: 40px; +} + +.time-text-after { + font-size: 10px; + opacity: 0.6; + position: absolute; + right: 0px; +} + +.exponent-num-green { + font-size: 10px; + margin-top: 3px; + margin-bottom: 3px; + color: #52C45E; + font-weight: bold; + opacity: 0.8; +} + +.exponent-float-green { + font-size: 10px; + color: #52C45E; + font-weight: bold; + opacity: 0.8; +} + +.exponent-per-green { + font-size: 9px; + color: #52C45E; + font-weight: bold; + opacity: 0.8; + margin-left: 7px; +} + +.exponent-right { + padding: 6px; + margin-left: 4px; + border-radius: 10px; + flex-direction: column; + background-color: #F4FDF4; + justify-content: space-evenly; +} + +.region-fund { + flex-direction: column; + margin-top: 10px; +} + +.region-fund-item { + flex-direction: column; + justify-content: space-evenly; +} + +.column-div { + flex-direction: column; + min-width: 25%; + max-width: 80%; +} + +.coded-text { + font-size: 10px; + opacity: 0.6; + padding-top: 5px; +} + +.per-text { + font-size: 10px; + color: #FE3D3B; + font-weight: bold; + opacity: 0.8; + position: absolute; + right: 40px; + top: 10px; +} + +.per-text-red { + font-size: 10px; + color: #FE3D3B; + font-weight: bold; + opacity: 0.8; + position: absolute; + right: 0px; + top: 10px; +} + +.per-text-green { + font-size: 10px; + color: #52C45E; + font-weight: bold; + opacity: 0.8; + position: absolute; + right: 0px; + top: 10px; +} + +.region-bottom { + flex-direction: row; + padding-top: 5px; + height: 60px; + flex-shrink: 0; + min-height: 0px; + justify-content: space-evenly; +} + +.region-bottom-item { + flex-direction: column; + flex-wrap: wrap; + justify-content: center; +} + +.region-bottom-image { + height: 24px; + width: 24px; + flex-shrink: 0; +} + +.region-bottom-text { + margin-top: 3px; + font-size: 10px; + font-weight: bold; + opacity: 0.8; + flex-shrink: 0; + left: 2px; +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/complex/pages/index/index.hml b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/complex/pages/index/index.hml new file mode 100644 index 0000000000000000000000000000000000000000..8d65fb2c48f2fb7289841068650510c2c89ce37b --- /dev/null +++ b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/complex/pages/index/index.hml @@ -0,0 +1,54 @@ + + +
+
+ + {{ title }} +
+
+
+ {{ $item.name }} + {{ $item.num }} +
+ {{ $item.float }} + {{ $item.per }} +
+
+
+
+
+ {{ fundText }} + {{ timeText }} + {{ timeText }} +
+
+
+
+ {{ $item.name }} + {{ $item.coded }} +
+ {{ $item.perFront }} + {{ $item.perAfter }} +
+
+
+
+
+ + {{ $item.text }} +
+
+
\ No newline at end of file diff --git a/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/complex/pages/index/index.json b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/complex/pages/index/index.json new file mode 100644 index 0000000000000000000000000000000000000000..ca09191136761167cea1a61049b5c4e4a57496ca --- /dev/null +++ b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/complex/pages/index/index.json @@ -0,0 +1,113 @@ +{ + "data": { + "title": "天天基金", + "fundText": "基金名称", + "timeText": "近一周", + "arrayPlates": [ + { + "id": 1, + "name": "上证指数", + "num": 3000.00, + "float": 36.12, + "per": "1.03%", + "exponent": "exponent-left", + "exponentNum": "exponent-float-red", + "exponentFloat": "exponent-float-red", + "exponentPer": "exponent-per-red" + }, + { + "id": 2, + "name": "深圳成指", + "num": 3000.00, + "float": -36.12, + "per": "-1.03%", + "exponent": "exponent-mid", + "exponentNum": "exponent-num-green", + "exponentFloat": "exponent-float-green", + "exponentPer": "exponent-per-green" + }, + { + "id": 3, + "name": "创业板指", + "num": 3000.00, + "float": -36.12, + "per": "-1.03%", + "exponent": "exponent-right", + "exponentNum": "exponent-num-green", + "exponentFloat": "exponent-float-green", + "exponentPer": "exponent-per-green" + } + ], + "array": [ + { + "id": 1, + "name": "某某投资集团内需精选混合(LOF)", + "coded": 161810, + "perFront": "2.87%", + "perAfter": "2.87%", + "displayIndex": 4, + "perTextAfter": "per-text-red" + }, + { + "id": 2, + "name": "银华内需精选混合(LOF)", + "coded": 161810, + "perFront": "2.87%", + "perAfter": "-2.87%", + "displayIndex": 4, + "perTextAfter": "per-text-green" + }, + { + "id": 3, + "name": "银华内需精选混合(LOF)", + "coded": 161810, + "perFront": "2.87%", + "perAfter": "-2.87%", + "displayIndex": 3, + "perTextAfter": "per-text-green" + }, + { + "id": 4, + "name": "银华内需精选混合(LOF)", + "coded": 161810, + "perFront": "2.87%", + "perAfter": "-2.87%", + "displayIndex": 2, + "perTextAfter": "per-text-green" + }, + { + "id": 5, + "name": "银华内需精选混合(LOF)", + "coded": 161810, + "perFront": "2.87%", + "perAfter": "-2.87%", + "displayIndex": 1, + "perTextAfter": "per-text-green" + } + ], + "arrayImage": [ + { + "id": 1, + "text": "排行" + }, + { + "id": 2, + "text": "榜单" + }, + { + "id": 3, + "text": "学堂" + } + ] + }, + "actions": { + "routerEvent": { + "action": "router", + "bundleName": "ohos.samples.adaptiveservicewidget", + "abilityName": "ohos.samples.adaptiveservicewidget.MainAbility", + "params": { + "message": "add detail" + } + } + } +} diff --git a/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/grid/pages/index/index.css b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/grid/pages/index/index.css new file mode 100644 index 0000000000000000000000000000000000000000..eba60130a517d9df4e2915e50bd2424c3a03b386 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/grid/pages/index/index.css @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2021 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +.container { + flex-direction: column; + justify-content: center; + align-items: center; + margin: 12px; +} + +.header-div { + width: 100%; + height: 20px; + align-content: center; + align-items: center; +} + +.image-up { + width: 20px; + height: 20px; + border-radius: 10px; +} + +.text-up { + margin-left: 8px; + color: #F58508; + font-size: 12px; + min-font-size: 10px; + font-weight: normal; +} + +.main-div { + margin-top: 7.5px; + justify-content: space-evenly; + align-items: center; + width: 100%; + height: 51.5px; + flex-direction: row; + flex-shrink: 1; + flex-grow: 0; +} + +.image-radius { + border-radius: 4px; +} + +.text-down { + background-color: aliceblue; + text-color: black; + font-size: 10px; + min-font-size: 8px; + font-weight: normal; + height: 14px; + width: 36px; + border-radius: 4px; + text-align: center; +} + +.stack-left { + margin-right: 5%; + justify-content: flex-end; + align-items: flex-end; + align-content: flex-end; +} + +.stack-right { + margin-left: 5%; + justify-content: flex-end; + align-items: flex-end; + align-content: flex-end; +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/grid/pages/index/index.hml b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/grid/pages/index/index.hml new file mode 100644 index 0000000000000000000000000000000000000000..8243f9694985196443ff1bdc7e5337f3433edb06 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/grid/pages/index/index.hml @@ -0,0 +1,31 @@ + + +
+
+ + {{ $t('strings.title') }} +
+
+ + + 0.33 + + + + 0.33 + +
+
\ No newline at end of file diff --git a/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/grid/pages/index/index.json b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/grid/pages/index/index.json new file mode 100644 index 0000000000000000000000000000000000000000..ea66244e37648f58c84bdaecaaaf7b9f15081982 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/grid/pages/index/index.json @@ -0,0 +1,18 @@ +{ + "data": { + "title": "Title", + "detail": "Text", + "iconTitle": "Picture" + }, + "actions": { + "routerEvents": { + "action": "router", + "bundleName": "ohos.samples.adaptiveservicewidget", + "abilityName": "ohos.samples.adaptiveservicewidget.MainAbility", + "params": { + "message": "add detail" + } + } + } +} + diff --git a/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/i18n/en-US.json b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/i18n/en-US.json new file mode 100644 index 0000000000000000000000000000000000000000..783974d39b18a11fbcadcf0ee8e233cfc3de2eb0 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/i18n/en-US.json @@ -0,0 +1,7 @@ +{ + "strings": { + "title": "Hello·World", + "title_immersive": "Today's delicious food", + "detail_immersive": "A bowl of fragrant fried noodles, back to childhood memories" + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/i18n/zh-CN.json b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/i18n/zh-CN.json new file mode 100644 index 0000000000000000000000000000000000000000..f01df9f3019304c33105c91c6dfd80e839a9f953 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/i18n/zh-CN.json @@ -0,0 +1,11 @@ +{ + "strings": { + "title": "你好·世界", + "title_immersive": "今日美食推荐", + "detail_immersive": "一碗香喷喷的炸酱面,回到儿时的青涩回忆" + }, + "strings2": { + "title": "AdaptiveServiceWidget", + "text": "使用说明\n\n\n长按示例应用,等待出现服务卡片字样,点击后选择需要的卡片尺寸,添加到屏幕。\n\n\n可以将此应用安装到不同类型的设备上,查看自适应效果。\n" + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/imgText/pages/index/index.css b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/imgText/pages/index/index.css new file mode 100644 index 0000000000000000000000000000000000000000..c5b3772216d579e10218e8f79ef059c3154d0a89 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/imgText/pages/index/index.css @@ -0,0 +1,96 @@ +/* + * Copyright (c) 2021 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +.container { + flex-direction: column; + width: 100%; + height: 100%; + margin: 12px; + overflow:hidden; +} + +.header-div { + width: 100%; + margin-right: 12px; +} + +.image-div { + justify-content: flex-start; +} + +.image-up { + width: 60px; + height: 20px; +} + +.text-div { + justify-content: flex-end; +} + +.text-right-up { + height: 20px; + margin-top: 3px; + margin-bottom: 3px; + margin-left: 4px; + min-font-size: 10px; + color: black; + font-size: 10px; + font-weight: normal; +} + +.main-div { + margin-top: 4px; + justify-content: space-around; + flex-wrap: wrap; + width: 100%; + overflow:hidden; + display: flex; +} + +.item-div { + flex-direction: column; + display: flex; + width: 90px; + overflow:hidden; +} + +.item-image { + width: 100%; + height: 70px; + border-radius: 14px; + flex-grow: 0; + flex-shrink: 0; +} + +.item-title-up { + font-size: 12px; + min-font-size: 10px; + margin-top: 2px; + font-weight: bold; + opacity: 0.9; + color: black; + text-overflow: ellipsis; + max-lines: 1; +} + +.item-title-down { + font-size: 10px; + margin-top: 2px; + font-weight: normal; + opacity: 0.6; + color: black; + text-overflow: ellipsis; + max-lines: 1; +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/imgText/pages/index/index.hml b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/imgText/pages/index/index.hml new file mode 100644 index 0000000000000000000000000000000000000000..8398dfd3d055df1e74d99a994077d15fc74a984d --- /dev/null +++ b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/imgText/pages/index/index.hml @@ -0,0 +1,32 @@ + + +
+ +
+ +
+
+ {{ title }} +
+
+
+
+ + {{ $item.title }} + {{ $item.detail }} +
+
+
\ No newline at end of file diff --git a/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/imgText/pages/index/index.json b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/imgText/pages/index/index.json new file mode 100644 index 0000000000000000000000000000000000000000..211fc62d00ac785bb6ecbecf2df315116229ff23 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/imgText/pages/index/index.json @@ -0,0 +1,59 @@ +{ + "data": { + "title": "完整推荐", + "list": [ + { + "id": 1, + "title": "今日美食推荐", + "detail": "一碗香喷喷的油泼面,回到儿时的青涩回忆", + "poster": "/common/poster1.png", + "displayIndex": 3 + }, + { + "id": 2, + "title": "今日电影推荐", + "detail": "好看的电影,每一步都令人深刻", + "poster": "/common/poster2.png", + "displayIndex": 3 + }, + { + "id": 3, + "title": "今日音乐推荐", + "detail": "一缕美妙的歌声,令人念念不忘", + "poster": "/common/poster2.png", + "displayIndex": 2 + }, + { + "id": 4, + "title": "今日美食推荐", + "detail": "一碗香喷喷的油泼面,回到儿时的青涩回忆", + "poster": "/common/poster2.png", + "displayIndex": 1 + }, + { + "id": 5, + "title": "今日美食推荐", + "detail": "一碗香喷喷的油泼面,回到儿时的青涩回忆", + "poster": "/common/poster2.png", + "displayIndex": 1 + }, + { + "id": 6, + "title": "今日美食推荐", + "detail": "一碗香喷喷的油泼面,回到儿时的青涩回忆", + "poster": "/common/poster2.png", + "displayIndex": 1 + } + ] + }, + "actions": { + "routerEvent": { + "action": "router", + "bundleName": "ohos.samples.adaptiveservicewidget", + "abilityName": "ohos.samples.adaptiveservicewidget.MainAbility", + "params": { + "message": "add detail" + } + } + } +} diff --git a/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/immersive/pages/index/index.css b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/immersive/pages/index/index.css new file mode 100644 index 0000000000000000000000000000000000000000..10f45c928940cb8619806284d27d579cfecaae6a --- /dev/null +++ b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/immersive/pages/index/index.css @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2021 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +.container { + flex-direction: column; + background-color: #F3D4B4; +} + +.image-div { + height: 70%; + display: flex; +} + +.image { + object-fit: contain; +} + +.button-div { + justify-content: center; + align-items: center; +} + +.button { + background-color: #E5A466; + width: 84%; + height: 32px; +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/immersive/pages/index/index.hml b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/immersive/pages/index/index.hml new file mode 100644 index 0000000000000000000000000000000000000000..4ce2593b3b47ff9e9c951c1bcb636c4f641c2943 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/immersive/pages/index/index.hml @@ -0,0 +1,23 @@ + + +
+
+ +
+
+ +
+
\ No newline at end of file diff --git a/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/immersive/pages/index/index.json b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/immersive/pages/index/index.json new file mode 100644 index 0000000000000000000000000000000000000000..c9ec294686b5e856b800743e6035377f8d8ce332 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/immersive/pages/index/index.json @@ -0,0 +1,18 @@ +{ + "data": { + "title": "Title", + "detail": "Text", + "iconTitle": "Picture" + }, + "actions": { + "routerEvent": { + "action": "router", + "bundleName": "ohos.samples.adaptiveservicewidget", + "abilityName": "ohos.samples.adaptiveservicewidget.MainAbility", + "params": { + "message": "add detail" + } + } + } +} + diff --git a/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/test/pages/index/index.css b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/test/pages/index/index.css new file mode 100644 index 0000000000000000000000000000000000000000..ea5b509d6ac2e5bb21ffdaf2cdfa3c904a570c5d --- /dev/null +++ b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/test/pages/index/index.css @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2021 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +.container { + flex-direction: column; + margin: 6px; +} + +.main-div { + display: flex; + flex-direction: column; + justify-content: space-evenly; + padding: 5%; +} + +.display-div { + display: flex; +} + +.exponent-div { + prefer-font-sizes: 15px, 20px; + text-overflow: ellipsis; + max-lines: 1; + flex-grow: 1; + opacity: 0.8; +} + +.exponent { + prefer-font-sizes: 15px, 20px; + text-overflow: ellipsis; + max-lines: 1; + opacity: 0.8; + align-items: flex-end; + text-align: right; +} + +.coded-div { + prefer-font-sizes: 10px, 15px; + text-overflow: ellipsis; + max-lines: 1; + flex-grow: 1; + opacity: 0.6; +} + +.per-div { + prefer-font-sizes: 10px, 15px; + text-overflow: ellipsis; + max-lines: 1; + color: crimson; + align-items: flex-end; +} diff --git a/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/test/pages/index/index.hml b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/test/pages/index/index.hml new file mode 100644 index 0000000000000000000000000000000000000000..1c23ccaad3979f990661a18342423ea48988f554 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/test/pages/index/index.hml @@ -0,0 +1,27 @@ + + +
+
+
+ {{ $item.name }} + {{ $item.exponent }} +
+
+ {{ $item.coded }} + {{ $item.per }} +
+
+
\ No newline at end of file diff --git a/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/test/pages/index/index.json b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/test/pages/index/index.json new file mode 100644 index 0000000000000000000000000000000000000000..7c774a45b9fa1f26b7c60b3a9430bb63ed65c967 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/js/test/pages/index/index.json @@ -0,0 +1,37 @@ +{ + "data": { + "array": [ + { + "id": 1, + "name": "上证指数", + "exponent": "3599.54", + "coded": "000001", + "per": "0.21%" + }, + { + "id": 2, + "name": "上证指数", + "exponent": "3599.54", + "coded": "000001", + "per": "0.21%" + }, + { + "id": 3, + "name": "上证指数", + "exponent": "3599.54", + "coded": "000001", + "per": "0.21%" + } + ] + }, + "actions": { + "routerEvent": { + "action": "router", + "bundleName": "ohos.samples.adaptiveservicewidget", + "abilityName": "ohos.samples.adaptiveservicewidget.MainAbility", + "params": { + "message": "add detail" + } + } + } +} diff --git a/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/module.json5 b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/module.json5 new file mode 100644 index 0000000000000000000000000000000000000000..3a8fc9de6c70dc9037fd384a9564c9e5f988a9fe --- /dev/null +++ b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/module.json5 @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "module": { + "name": "entry", + "type": "entry", + "description": "$string:module_desc", + "mainElement": "EntryAbility", + "deviceTypes": [ + "default", + "tablet" + ], + "deliveryWithInstall": true, + "installationFree": false, + "pages": "$profile:main_pages", + "abilities": [ + { + "name": "EntryAbility", + "srcEntry": "./ets/entryability/EntryAbility.ets", + "description": "$string:EntryAbility_desc", + "icon": "$media:icon", + "label": "$string:EntryAbility_label", + "startWindowIcon": "$media:icon", + "startWindowBackground": "$color:start_window_background", + "exported": true, + "skills": [ + { + "entities": [ + "entity.system.home" + ], + "actions": [ + "action.system.home" + ] + } + ] + } + ], + "extensionAbilities": [ + { + "name": "EntryFormAbility", + "srcEntry": "./ets/entryformability/EntryFormAbility.ets", + "label": "$string:EntryFormAbility_label", + "description": "$string:EntryFormAbility_desc", + "type": "form", + "metadata": [ + { + "name": "ohos.extension.form", + "resource": "$profile:form_config" + } + ] + } + ] + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/resources/base/element/color.json b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/resources/base/element/color.json new file mode 100644 index 0000000000000000000000000000000000000000..3a3c2e1561762bbe6b59b2eb1da7c01183599de9 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/resources/base/element/color.json @@ -0,0 +1,12 @@ +{ + "color": [ + { + "name": "start_window_background", + "value": "#FFFFFF" + }, + { + "name": "title_bg", + "value": "#FF00BFFF" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/resources/base/element/string.json b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/resources/base/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..97d24926b3364a52671931abbf835592976daaca --- /dev/null +++ b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/resources/base/element/string.json @@ -0,0 +1,40 @@ +{ + "string": [ + { + "name": "module_desc", + "value": "module description" + }, + { + "name": "EntryAbility_desc", + "value": "description" + }, + { + "name": "EntryAbility_label", + "value": "AdaptiveServiceWidget" + }, + { + "name": "EntryFormAbility_desc", + "value": "form_description" + }, + { + "name": "EntryFormAbility_label", + "value": "form_label" + }, + { + "name": "title", + "value": "direction for use" + }, + { + "name": "content1", + "value": "长按示例应用,等待出现服务卡片字样,点击后选择需要的卡片尺寸,添加到屏幕。" + }, + { + "name": "content2", + "value": "You can install this application on different types of devices to see the adaptive effect." + }, + { + "name": "index_title", + "value": "AdaptiveServiceWidget" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/resources/base/media/icon.png b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/resources/base/media/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ce307a8827bd75456441ceb57d530e4c8d45d36c Binary files /dev/null and b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/resources/base/media/icon.png differ diff --git a/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/resources/base/profile/form_config.json b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/resources/base/profile/form_config.json new file mode 100644 index 0000000000000000000000000000000000000000..8891bebe139b10cc0a920e1fb3ca0f55350aaff7 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/resources/base/profile/form_config.json @@ -0,0 +1,96 @@ +{ + "forms": [ + { + "name": "complex", + "description": "This is a service widget.", + "src": "./js/complex/pages/index/index", + "window": { + "designWidth": 720, + "autoDesignWidth": true + }, + "colorMode": "auto", + "isDefault": true, + "updateEnabled": true, + "scheduledUpdateTime": "10:30", + "updateDuration": 1, + "defaultDimension": "2*2", + "supportDimensions": [ + "2*2", + "4*4" + ] + }, + { + "name": "test", + "description": "This is a service widget.", + "src": "./js/test/pages/index/index", + "window": { + "designWidth": 720, + "autoDesignWidth": true + }, + "colorMode": "auto", + "isDefault": false, + "updateEnabled": true, + "scheduledUpdateTime": "10:30", + "updateDuration": 1, + "defaultDimension": "2*2", + "supportDimensions": [ + "2*2" + ] + }, + { + "name": "immersive", + "description": "This is a service widget.", + "src": "./js/immersive/pages/index/index", + "window": { + "designWidth": 720, + "autoDesignWidth": true + }, + "colorMode": "auto", + "isDefault": false, + "updateEnabled": true, + "scheduledUpdateTime": "10:30", + "updateDuration": 1, + "defaultDimension": "2*2", + "supportDimensions": [ + "2*2" + ] + }, + { + "name": "grid", + "description": "This is a service widget.", + "src": "./js/grid/pages/index/index", + "window": { + "designWidth": 720, + "autoDesignWidth": true + }, + "colorMode": "auto", + "isDefault": false, + "updateEnabled": true, + "scheduledUpdateTime": "10:30", + "updateDuration": 1, + "defaultDimension": "2*2", + "supportDimensions": [ + "2*2" + ] + }, + { + "name": "imgText", + "description": "This is a service widget.", + "src": "./js/imgText/pages/index/index", + "window": { + "designWidth": 720, + "autoDesignWidth": true + }, + "colorMode": "auto", + "isDefault": false, + "updateEnabled": true, + "scheduledUpdateTime": "10:30", + "updateDuration": 1, + "defaultDimension": "2*2", + "supportDimensions": [ + "2*2", + "2*4" + ] + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/resources/base/profile/main_pages.json b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/resources/base/profile/main_pages.json new file mode 100644 index 0000000000000000000000000000000000000000..1898d94f58d6128ab712be2c68acc7c98e9ab9ce --- /dev/null +++ b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/resources/base/profile/main_pages.json @@ -0,0 +1,5 @@ +{ + "src": [ + "pages/Index" + ] +} diff --git a/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/resources/en_US/element/string.json b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/resources/en_US/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..b788c0f8c073b19f47928e8266bb19c8d2fb59da --- /dev/null +++ b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/resources/en_US/element/string.json @@ -0,0 +1,40 @@ +{ + "string": [ + { + "name": "module_desc", + "value": "module description" + }, + { + "name": "EntryAbility_desc", + "value": "description" + }, + { + "name": "EntryAbility_label", + "value": "AdaptiveServiceWidget" + }, + { + "name": "EntryFormAbility_desc", + "value": "form_description" + }, + { + "name": "EntryFormAbility_label", + "value": "form_label" + }, + { + "name": "title", + "value": "direction for use" + }, + { + "name": "content1", + "value": "Long press the sample application, wait for the word 'service card' to appear, click and select the required card size to add to the screen." + }, + { + "name": "content2", + "value": "You can install this application on different types of devices to see the adaptive effect." + }, + { + "name": "index_title", + "value": "AdaptiveServiceWidget" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/resources/zh_CN/element/string.json b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/resources/zh_CN/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..5351db68b7ad6e6f93a2e188d7751741b1da2234 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/main/resources/zh_CN/element/string.json @@ -0,0 +1,24 @@ +{ + "string": [ + { + "name": "module_desc", + "value": "模块描述" + }, + { + "name": "title", + "value": "使用说明" + }, + { + "name": "content1", + "value": "长按示例应用,等待出现服务卡片字样,点击后选择需要的卡片尺寸,添加到屏幕。" + }, + { + "name": "content2", + "value": "可以将此应用安装到不同类型的设备上,查看自适应效果。" + }, + { + "name": "index_title", + "value": "卡片" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/ohosTest/ets/TestRunner/OpenHarmonyTestRunner.ts b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/ohosTest/ets/TestRunner/OpenHarmonyTestRunner.ts new file mode 100644 index 0000000000000000000000000000000000000000..1d4cc0e938b8aa073872903ba4cf4bcaab6e37a7 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/ohosTest/ets/TestRunner/OpenHarmonyTestRunner.ts @@ -0,0 +1,85 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import hilog from '@ohos.hilog' +import TestRunner from '@ohos.application.testRunner' +import AbilityDelegatorRegistry from '@ohos.application.abilityDelegatorRegistry' + +var abilityDelegator = undefined +var abilityDelegatorArguments = undefined + +function translateParamsToString(parameters) { + const keySet = new Set([ + '-s class', '-s notClass', '-s suite', '-s it', + '-s level', '-s testType', '-s size', '-s timeout', + '-s dryRun' + ]) + let targetParams = '' + for (const key in parameters) { + if (keySet.has(key)) { + targetParams = `${targetParams} ${key} ${parameters[key]}` + } + } + return targetParams.trim() +} + +async function onAbilityCreateCallback() { + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO) + hilog.info(0x0000, 'testTag', '%{public}s', 'onAbilityCreateCallback') +} + +async function addAbilityMonitorCallback(err: any) { + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO) + hilog.info(0x0000, 'testTag', 'addAbilityMonitorCallback : %{public}s', JSON.stringify(err) ?? '') +} + +export default class OpenHarmonyTestRunner implements TestRunner { + constructor() { + } + + onPrepare() { + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO) + hilog.info(0x0000, 'testTag', '%{public}s', 'OpenHarmonyTestRunner OnPrepare ') + } + + async onRun() { + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO) + hilog.info(0x0000, 'testTag', '%{public}s', 'OpenHarmonyTestRunner onRun run') + abilityDelegatorArguments = AbilityDelegatorRegistry.getArguments() + abilityDelegator = AbilityDelegatorRegistry.getAbilityDelegator() + var testAbilityName = abilityDelegatorArguments.bundleName + '.TestAbility' + let lMonitor = { + abilityName: testAbilityName, + onAbilityCreate: onAbilityCreateCallback, + } + abilityDelegator.addAbilityMonitor(lMonitor, addAbilityMonitorCallback) + var cmd = 'aa start -d 0 -a TestAbility' + ' -b ' + abilityDelegatorArguments.bundleName + cmd += ' ' + translateParamsToString(abilityDelegatorArguments.parameters) + var debug = abilityDelegatorArguments.parameters['-D'] + if (debug == 'true') { + cmd += ' -D' + } + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO) + hilog.info(0x0000, 'testTag', 'cmd : %{public}s', cmd) + abilityDelegator.executeShellCommand(cmd, + (err: any, d: any) => { + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO) + hilog.info(0x0000, 'testTag', 'executeShellCommand : err : %{public}s', JSON.stringify(err) ?? '') + hilog.info(0x0000, 'testTag', 'executeShellCommand : data : %{public}s', d.stdResult ?? '') + hilog.info(0x0000, 'testTag', 'executeShellCommand : data : %{public}s', d.exitCode ?? '') + }) + hilog.info(0x0000, 'testTag', '%{public}s', 'OpenHarmonyTestRunner onRun end') + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/ohosTest/ets/test/Ability.test.ets b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/ohosTest/ets/test/Ability.test.ets new file mode 100644 index 0000000000000000000000000000000000000000..967f96bf4de472a30fbfd81da81559f8a7285b01 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/ohosTest/ets/test/Ability.test.ets @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import hilog from '@ohos.hilog' +import { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from '@ohos/hypium' + +export default function abilityTest() { + describe('ActsAbilityTest', () => { + // Defines a test suite. Two parameters are supported: test suite name and test suite function. + beforeAll(() => { + // Presets an action, which is performed only once before all test cases of the test suite start. + // This API supports only one parameter: preset action function. + }) + beforeEach(() => { + // Presets an action, which is performed before each unit test case starts. + // The number of execution times is the same as the number of test cases defined by **it**. + // This API supports only one parameter: preset action function. + }) + afterEach(() => { + // Presets a clear action, which is performed after each unit test case ends. + // The number of execution times is the same as the number of test cases defined by **it**. + // This API supports only one parameter: clear action function. + }) + afterAll(() => { + // Presets a clear action, which is performed after all test cases of the test suite end. + // This API supports only one parameter: clear action function. + }) + it('assertContain', 0, () => { + // Defines a test case. This API supports three parameters: test case name, filter parameter, and test case function. + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO); + hilog.info(0x0000, 'testTag', '%{public}s', 'it begin'); + let a = 'abc'; + let b = 'b'; + // Defines a variety of assertion methods, which are used to declare expected boolean conditions. + expect(a).assertContain(b); + expect(a).assertEqual(a); + }) + }) +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/ohosTest/ets/test/App.test.ets b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/ohosTest/ets/test/App.test.ets new file mode 100644 index 0000000000000000000000000000000000000000..42bf9d9ee745e3c839e87166ed52121324bb9ce3 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/ohosTest/ets/test/App.test.ets @@ -0,0 +1,102 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { describe, it, expect } from '@ohos/hypium'; +import { Driver, ON, Component } from '@ohos.UiTest'; +import AbilityDelegatorRegistry from '@ohos.app.ability.abilityDelegatorRegistry'; +import Logger from '../util/Logger'; +import Want from '@ohos.app.ability.Want'; + + +const BUNDLE = 'AdaptiveServiceWidget_'; +const TAG = 'AppTestPage'; + +export default function appTest() { + describe('appTest', () => { + // 打开应用 + it(BUNDLE + 'StartAbility', 0, (done: Function) => { + Logger.info(TAG, 'StartAbility start'); + let want: Want = { + bundleName: "ohos.samples.adaptiveservicewidget", + abilityName: "EntryAbility" + }; + let abilityDelegator: AbilityDelegatorRegistry.AbilityDelegator = AbilityDelegatorRegistry.getAbilityDelegator(); + abilityDelegator.startAbility(want, (err) => { + Logger.info(TAG, `_startAbility get err ${JSON.stringify(err)}`); + done(); + Logger.info(TAG, '_startAbility end'); + }); + Logger.info(TAG, 'StartAbility end'); + }) + /** + * 返回桌面 + */ + it(`${BUNDLE}ReturnToDesktop_001`, 0, async () => { + Logger.info(TAG, BUNDLE + 'ReturnToDesktop begin'); + let driver: Driver = Driver.create(); + await driver.delayMs(500); + await driver.click(360, 1244); + await driver.delayMs(500); + Logger.info(TAG, BUNDLE + 'ReturnToDesktop end'); + }) + /** + * 进入服务卡片 + */ + it(`${BUNDLE}EnterServiceCard_001`, 0, async () => { + Logger.info(TAG, BUNDLE + 'EnterServiceCard_001 begin'); + let driver: Driver = Driver.create(); + await driver.delayMs(500); + await driver.assertComponentExist(ON.text('AdaptiveServiceWidget')); + let adaptiveServiceWidget: Component = await driver.findComponent(ON.text('AdaptiveServiceWidget')); + // 获取文件控件边框 + let rect = await adaptiveServiceWidget.getBounds(); + // 计算文字控件高度 + let height = rect.bottom - rect.top; + // 获取文字控件中心点 + let point = await adaptiveServiceWidget.getBoundsCenter(); + await driver.longClick(point.x, point.y - height); + await driver.assertComponentExist(ON.text('服务卡片')); + let serviceCard: Component = await driver.findComponent(ON.text('服务卡片')); + await serviceCard.click(); + await driver.delayMs(1000); + Logger.info(TAG, BUNDLE + 'EnterServiceCard_001 end'); + }); + /** + * 选取卡片并添加到桌面 + */ + it(`${BUNDLE}GetServiceCard_001`, 0, async () => { + Logger.info(TAG, BUNDLE + 'GetServiceCard_001 begin'); + let driver: Driver = Driver.create(); + await driver.delayMs(1000); + await driver.swipe(430, 516, 320, 516, 600); + await driver.delayMs(1000); + await driver.swipe(430, 516, 320, 516, 600); + await driver.delayMs(1000); + await driver.assertComponentExist(ON.text('添加到桌面')); + let addDesk: Component = await driver.findComponent(ON.text('添加到桌面')); + await addDesk.click(); + await driver.delayMs(1000); + //校验是否添加成功 + await driver.assertComponentExist(ON.text('AdaptiveServiceWidget')); + let adaptiveServiceWidgets = await driver.findComponents(ON.text('AdaptiveServiceWidget')); + await driver.delayMs(1000); + if (adaptiveServiceWidgets.length <= 1) { + expect().assertFail(); + } + await driver.delayMs(500); + Logger.info(TAG, BUNDLE + 'GetServiceCard_001 end'); + }); + }) +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/ohosTest/ets/test/List.test.ets b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/ohosTest/ets/test/List.test.ets new file mode 100644 index 0000000000000000000000000000000000000000..df44755872947fb545131d52bda334250beb432b --- /dev/null +++ b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/ohosTest/ets/test/List.test.ets @@ -0,0 +1,22 @@ +/* + * Copyright (c) 2021-2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import abilityTest from './Ability.test'; +import appTest from './App.test'; + +export default function testsuite() { + abilityTest(); + appTest(); +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/ohosTest/ets/testability/TestAbility.ets b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/ohosTest/ets/testability/TestAbility.ets new file mode 100644 index 0000000000000000000000000000000000000000..52c24a45b02525eeaa6a6f9912543da7d31a265d --- /dev/null +++ b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/ohosTest/ets/testability/TestAbility.ets @@ -0,0 +1,72 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import hilog from '@ohos.hilog'; +import Ability from '@ohos.app.ability.UIAbility'; +import AbilityDelegatorRegistry from '@ohos.application.abilityDelegatorRegistry'; +import { Hypium } from '@ohos/hypium'; +import testsuite from '../test/List.test'; +import Window from '@ohos.window'; +import Want from '@ohos.app.ability.Want'; +import AbilityConstant from '@ohos.app.ability.AbilityConstant'; + +export default class TestAbility extends Ability { + onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) { + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO); + hilog.info(0x0000, 'testTag', '%{public}s', 'TestAbility onCreate'); + hilog.info(0x0000, 'testTag', '%{public}s', 'want param:' + JSON.stringify(want) ?? ''); + hilog.info(0x0000, 'testTag', '%{public}s', 'launchParam:' + JSON.stringify(launchParam) ?? ''); + let abilityDelegator = AbilityDelegatorRegistry.getAbilityDelegator(); + let abilityDelegatorArguments = AbilityDelegatorRegistry.getArguments(); + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO); + hilog.info(0x0000, 'testTag', '%{public}s', 'start run testcase!!!'); + Hypium.hypiumTest(abilityDelegator, abilityDelegatorArguments, testsuite); + } + + onDestroy() { + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO) + hilog.info(0x0000, 'testTag', '%{public}s', 'TestAbility onDestroy') + } + + onWindowStageCreate(windowStage: Window.WindowStage) { + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO) + hilog.info(0x0000, 'testTag', '%{public}s', 'TestAbility onWindowStageCreate') + windowStage.loadContent('testability/pages/Index', (err, data) => { + if (err.code) { + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.ERROR) + hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? '') + return + } + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO) + hilog.info(0x0000, 'testTag', 'Succeeded in loading the content. Data: %{public}s', + JSON.stringify(data) ?? '') + }) + } + + onWindowStageDestroy() { + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO) + hilog.info(0x0000, 'testTag', '%{public}s', 'TestAbility onWindowStageDestroy') + } + + onForeground() { + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO) + hilog.info(0x0000, 'testTag', '%{public}s', 'TestAbility onForeground') + } + + onBackground() { + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO) + hilog.info(0x0000, 'testTag', '%{public}s', 'TestAbility onBackground') + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/ohosTest/ets/testability/pages/Index.ets b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/ohosTest/ets/testability/pages/Index.ets new file mode 100644 index 0000000000000000000000000000000000000000..838863ec18f69a85b2124570fe8f21230bfc48ba --- /dev/null +++ b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/ohosTest/ets/testability/pages/Index.ets @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import hilog from '@ohos.hilog' + +@Entry +@Component +struct Index { + aboutToAppear() { + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO) + hilog.info(0x0000, 'testTag', '%{public}s', 'TestAbility index aboutToAppear') + } + + @State message: string = 'Hello World' + + build() { + Row() { + Column() { + Text(this.message) + .fontSize(50) + .fontWeight(FontWeight.Bold) + Button() { + Text('next page') + .fontSize(20) + .fontWeight(FontWeight.Bold) + } + .type(ButtonType.Capsule) + .margin({ + top: 20 + }) + .backgroundColor('#0D9FFB') + .width('35%') + .height('5%') + .onClick(() => { + }) + } + .width('100%') + } + .height('100%') + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/ohosTest/ets/util/Logger.ts b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/ohosTest/ets/util/Logger.ts new file mode 100644 index 0000000000000000000000000000000000000000..30016ae636fbd2499546c05724e4b19847a97fd6 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/ohosTest/ets/util/Logger.ts @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import hilog from '@ohos.hilog'; + +class Logger { + private domain: number; + private prefix: string; + private format: string = '%{public}s, %{public}s'; + + constructor(prefix: string) { + this.prefix = prefix; + this.domain = 0xF811; + } + + debug(...args: string[]): void { + hilog.debug(this.domain, this.prefix, this.format, args); + } + + info(...args: string[]): void { + hilog.info(this.domain, this.prefix, this.format, args); + } + + warn(...args: string[]): void { + hilog.warn(this.domain, this.prefix, this.format, args); + } + + error(...args: string[]): void { + hilog.error(this.domain, this.prefix, this.format, args); + } +} + +export default new Logger('[Sample_AdaptiveServiceWidget]'); \ No newline at end of file diff --git a/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/ohosTest/module.json5 b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/ohosTest/module.json5 new file mode 100644 index 0000000000000000000000000000000000000000..22e2c611f379dbb0fddf452b259ef27c508d058b --- /dev/null +++ b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/ohosTest/module.json5 @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "module": { + "name": "entry_test", + "type": "feature", + "description": "$string:module_test_desc", + "mainElement": "TestAbility", + "deviceTypes": [ + "default", + "tablet" + ], + "deliveryWithInstall": true, + "installationFree": false, + "pages": "$profile:test_pages", + "abilities": [ + { + "name": "TestAbility", + "srcEntrance": "./ets/testability/TestAbility.ets", + "description": "$string:TestAbility_desc", + "icon": "$media:icon", + "label": "$string:TestAbility_label", + "visible": true, + "startWindowIcon": "$media:icon", + "startWindowBackground": "$color:start_window_background", + "skills": [ + { + "actions": [ + "action.system.home" + ], + "entities": [ + "entity.system.home" + ] + } + ] + } + ] + } +} diff --git a/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/ohosTest/resources/base/element/color.json b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/ohosTest/resources/base/element/color.json new file mode 100644 index 0000000000000000000000000000000000000000..3c712962da3c2751c2b9ddb53559afcbd2b54a02 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/ohosTest/resources/base/element/color.json @@ -0,0 +1,8 @@ +{ + "color": [ + { + "name": "start_window_background", + "value": "#FFFFFF" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/ohosTest/resources/base/element/string.json b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/ohosTest/resources/base/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..65d8fa5a7cf54aa3943dcd0214f58d1771bc1f6c --- /dev/null +++ b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/ohosTest/resources/base/element/string.json @@ -0,0 +1,16 @@ +{ + "string": [ + { + "name": "module_test_desc", + "value": "test ability description" + }, + { + "name": "TestAbility_desc", + "value": "the test ability" + }, + { + "name": "TestAbility_label", + "value": "test label" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/ohosTest/resources/base/media/icon.png b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/ohosTest/resources/base/media/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ce307a8827bd75456441ceb57d530e4c8d45d36c Binary files /dev/null and b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/ohosTest/resources/base/media/icon.png differ diff --git a/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/ohosTest/resources/base/profile/test_pages.json b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/ohosTest/resources/base/profile/test_pages.json new file mode 100644 index 0000000000000000000000000000000000000000..b7e7343cacb32ce982a45e76daad86e435e054fe --- /dev/null +++ b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/entry/src/ohosTest/resources/base/profile/test_pages.json @@ -0,0 +1,5 @@ +{ + "src": [ + "testability/pages/Index" + ] +} diff --git a/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/hvigor/hvigor-config.json5 b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/hvigor/hvigor-config.json5 new file mode 100644 index 0000000000000000000000000000000000000000..1346fb04f0abdee84bb800a07b22813ad3c2ebce --- /dev/null +++ b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/hvigor/hvigor-config.json5 @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2022-2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "hvigorVersion": "3.0.9-s", + "dependencies": { + "@ohos/hvigor-ohos-plugin": "3.0.9-s" + } +} diff --git a/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/hvigor/hvigor-wrapper.js b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/hvigor/hvigor-wrapper.js new file mode 100644 index 0000000000000000000000000000000000000000..372eae8eb4a124095936f9cd78df5c6756746f3f --- /dev/null +++ b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/hvigor/hvigor-wrapper.js @@ -0,0 +1 @@ +"use strict";var u=require("path"),D=require("os"),e=require("fs"),t=require("crypto"),r=require("child_process"),n="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},i={},C={},F=n&&n.__importDefault||function(u){return u&&u.__esModule?u:{default:u}};Object.defineProperty(C,"__esModule",{value:!0}),C.maxPathLength=C.isMac=C.isLinux=C.isWindows=void 0;const E=F(D),A="Windows_NT",o="Darwin";function a(){return E.default.type()===A}function c(){return E.default.type()===o}C.isWindows=a,C.isLinux=function(){return"Linux"===E.default.type()},C.isMac=c,C.maxPathLength=function(){return c()?1016:a()?259:4095},function(e){var t=n&&n.__createBinding||(Object.create?function(u,D,e,t){void 0===t&&(t=e);var r=Object.getOwnPropertyDescriptor(D,e);r&&!("get"in r?!D.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return D[e]}}),Object.defineProperty(u,t,r)}:function(u,D,e,t){void 0===t&&(t=e),u[t]=D[e]}),r=n&&n.__setModuleDefault||(Object.create?function(u,D){Object.defineProperty(u,"default",{enumerable:!0,value:D})}:function(u,D){u.default=D}),i=n&&n.__importStar||function(u){if(u&&u.__esModule)return u;var D={};if(null!=u)for(var e in u)"default"!==e&&Object.prototype.hasOwnProperty.call(u,e)&&t(D,u,e);return r(D,u),D};Object.defineProperty(e,"__esModule",{value:!0}),e.WORK_SPACE=e.HVIGOR_PROJECT_WRAPPER_HOME=e.HVIGOR_PROJECT_ROOT_DIR=e.HVIGOR_PROJECT_CACHES_HOME=e.HVIGOR_PNPM_STORE_PATH=e.HVIGOR_WRAPPER_PNPM_SCRIPT_PATH=e.PROJECT_CACHES=e.HVIGOR_WRAPPER_TOOLS_HOME=e.HVIGOR_USER_HOME=e.DEFAULT_PACKAGE_JSON=e.DEFAULT_HVIGOR_CONFIG_JSON_FILE_NAME=e.PNPM=e.HVIGOR=e.NPM_TOOL=e.PNPM_TOOL=e.HVIGOR_ENGINE_PACKAGE_NAME=void 0;const F=i(D),E=i(u),A=C;e.HVIGOR_ENGINE_PACKAGE_NAME="@ohos/hvigor",e.PNPM_TOOL=(0,A.isWindows)()?"pnpm.cmd":"pnpm",e.NPM_TOOL=(0,A.isWindows)()?"npm.cmd":"npm",e.HVIGOR="hvigor",e.PNPM="pnpm",e.DEFAULT_HVIGOR_CONFIG_JSON_FILE_NAME="hvigor-config.json5",e.DEFAULT_PACKAGE_JSON="package.json",e.HVIGOR_USER_HOME=E.resolve(F.homedir(),".hvigor"),e.HVIGOR_WRAPPER_TOOLS_HOME=E.resolve(e.HVIGOR_USER_HOME,"wrapper","tools"),e.PROJECT_CACHES="project_caches",e.HVIGOR_WRAPPER_PNPM_SCRIPT_PATH=E.resolve(e.HVIGOR_WRAPPER_TOOLS_HOME,"node_modules",".bin",e.PNPM_TOOL),e.HVIGOR_PNPM_STORE_PATH=E.resolve(e.HVIGOR_USER_HOME,"caches"),e.HVIGOR_PROJECT_CACHES_HOME=E.resolve(e.HVIGOR_USER_HOME,e.PROJECT_CACHES),e.HVIGOR_PROJECT_ROOT_DIR=process.cwd(),e.HVIGOR_PROJECT_WRAPPER_HOME=E.resolve(e.HVIGOR_PROJECT_ROOT_DIR,e.HVIGOR),e.WORK_SPACE="workspace"}(i);var s={},l={};Object.defineProperty(l,"__esModule",{value:!0}),l.logInfoPrintConsole=l.logErrorAndExit=void 0,l.logErrorAndExit=function(u){u instanceof Error?console.error(u.message):console.error(u),process.exit(-1)},l.logInfoPrintConsole=function(u){console.log(u)};var B=n&&n.__createBinding||(Object.create?function(u,D,e,t){void 0===t&&(t=e);var r=Object.getOwnPropertyDescriptor(D,e);r&&!("get"in r?!D.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return D[e]}}),Object.defineProperty(u,t,r)}:function(u,D,e,t){void 0===t&&(t=e),u[t]=D[e]}),d=n&&n.__setModuleDefault||(Object.create?function(u,D){Object.defineProperty(u,"default",{enumerable:!0,value:D})}:function(u,D){u.default=D}),f=n&&n.__importStar||function(u){if(u&&u.__esModule)return u;var D={};if(null!=u)for(var e in u)"default"!==e&&Object.prototype.hasOwnProperty.call(u,e)&&B(D,u,e);return d(D,u),D};Object.defineProperty(s,"__esModule",{value:!0});var _=s.executeBuild=void 0;const p=f(e),O=f(u),h=l;_=s.executeBuild=function(u){const D=O.resolve(u,"node_modules","@ohos","hvigor","bin","hvigor.js");try{const u=p.realpathSync(D);require(u)}catch(e){(0,h.logErrorAndExit)(`Error: ENOENT: no such file ${D},delete ${u} and retry.`)}};var P={},v={};!function(u){var D=n&&n.__importDefault||function(u){return u&&u.__esModule?u:{default:u}};Object.defineProperty(u,"__esModule",{value:!0}),u.hashFile=u.hash=u.createHash=void 0;const r=D(t),i=D(e);u.createHash=(u="MD5")=>r.default.createHash(u);u.hash=(D,e)=>(0,u.createHash)(e).update(D).digest("hex");u.hashFile=(D,e)=>{if(i.default.existsSync(D))return(0,u.hash)(i.default.readFileSync(D,"utf-8"),e)}}(v);var g={},m={},R={};Object.defineProperty(R,"__esModule",{value:!0}),R.Unicode=void 0;class y{}R.Unicode=y,y.SPACE_SEPARATOR=/[\u1680\u2000-\u200A\u202F\u205F\u3000]/,y.ID_START=/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/,y.ID_CONTINUE=/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDE00-\uDE3E\uDE47\uDE50-\uDE83\uDE86-\uDE99\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/,Object.defineProperty(m,"__esModule",{value:!0}),m.JudgeUtil=void 0;const I=R;m.JudgeUtil=class{static isIgnoreChar(u){return"string"==typeof u&&("\t"===u||"\v"===u||"\f"===u||" "===u||" "===u||"\ufeff"===u||"\n"===u||"\r"===u||"\u2028"===u||"\u2029"===u)}static isSpaceSeparator(u){return"string"==typeof u&&I.Unicode.SPACE_SEPARATOR.test(u)}static isIdStartChar(u){return"string"==typeof u&&(u>="a"&&u<="z"||u>="A"&&u<="Z"||"$"===u||"_"===u||I.Unicode.ID_START.test(u))}static isIdContinueChar(u){return"string"==typeof u&&(u>="a"&&u<="z"||u>="A"&&u<="Z"||u>="0"&&u<="9"||"$"===u||"_"===u||"‌"===u||"‍"===u||I.Unicode.ID_CONTINUE.test(u))}static isDigitWithoutZero(u){return/[1-9]/.test(u)}static isDigit(u){return"string"==typeof u&&/[0-9]/.test(u)}static isHexDigit(u){return"string"==typeof u&&/[0-9A-Fa-f]/.test(u)}};var N=n&&n.__importDefault||function(u){return u&&u.__esModule?u:{default:u}};Object.defineProperty(g,"__esModule",{value:!0}),g.parseJsonText=g.parseJsonFile=void 0;const b=N(e),S=N(D),w=N(u),H=m;var x;!function(u){u[u.Char=0]="Char",u[u.EOF=1]="EOF",u[u.Identifier=2]="Identifier"}(x||(x={}));let M,T,V,G,j,J,W="start",U=[],L=0,$=1,k=0,K=!1,z="default",q="'",Z=1;function X(u,D=!1){T=String(u),W="start",U=[],L=0,$=1,k=0,G=void 0,K=D;do{M=Q(),nu[W]()}while("eof"!==M.type);return G}function Q(){for(z="default",j="",q="'",Z=1;;){J=Y();const u=Du[z]();if(u)return u}}function Y(){if(T[L])return String.fromCodePoint(T.codePointAt(L))}function uu(){const u=Y();return"\n"===u?($++,k=0):u?k+=u.length:k++,u&&(L+=u.length),u}g.parseJsonFile=function(u,D=!1,e="utf-8"){const t=b.default.readFileSync(w.default.resolve(u),{encoding:e});try{return X(t,D)}catch(D){if(D instanceof SyntaxError){const e=D.message.split("at");if(2===e.length)throw new Error(`${e[0].trim()}${S.default.EOL}\t at ${u}:${e[1].trim()}`)}throw new Error(`${u} is not in valid JSON/JSON5 format.`)}},g.parseJsonText=X;const Du={default(){switch(J){case"/":return uu(),void(z="comment");case void 0:return uu(),eu("eof")}if(!H.JudgeUtil.isIgnoreChar(J)&&!H.JudgeUtil.isSpaceSeparator(J))return Du[W]();uu()},start(){z="value"},beforePropertyName(){switch(J){case"$":case"_":return j=uu(),void(z="identifierName");case"\\":return uu(),void(z="identifierNameStartEscape");case"}":return eu("punctuator",uu());case'"':case"'":return q=J,uu(),void(z="string")}if(H.JudgeUtil.isIdStartChar(J))return j+=uu(),void(z="identifierName");throw Eu(x.Char,uu())},afterPropertyName(){if(":"===J)return eu("punctuator",uu());throw Eu(x.Char,uu())},beforePropertyValue(){z="value"},afterPropertyValue(){switch(J){case",":case"}":return eu("punctuator",uu())}throw Eu(x.Char,uu())},beforeArrayValue(){if("]"===J)return eu("punctuator",uu());z="value"},afterArrayValue(){switch(J){case",":case"]":return eu("punctuator",uu())}throw Eu(x.Char,uu())},end(){throw Eu(x.Char,uu())},comment(){switch(J){case"*":return uu(),void(z="multiLineComment");case"/":return uu(),void(z="singleLineComment")}throw Eu(x.Char,uu())},multiLineComment(){switch(J){case"*":return uu(),void(z="multiLineCommentAsterisk");case void 0:throw Eu(x.Char,uu())}uu()},multiLineCommentAsterisk(){switch(J){case"*":return void uu();case"/":return uu(),void(z="default");case void 0:throw Eu(x.Char,uu())}uu(),z="multiLineComment"},singleLineComment(){switch(J){case"\n":case"\r":case"\u2028":case"\u2029":return uu(),void(z="default");case void 0:return uu(),eu("eof")}uu()},value(){switch(J){case"{":case"[":return eu("punctuator",uu());case"n":return uu(),tu("ull"),eu("null",null);case"t":return uu(),tu("rue"),eu("boolean",!0);case"f":return uu(),tu("alse"),eu("boolean",!1);case"-":case"+":return"-"===uu()&&(Z=-1),void(z="numerical");case".":case"0":case"I":case"N":return void(z="numerical");case'"':case"'":return q=J,uu(),j="",void(z="string")}if(void 0===J||!H.JudgeUtil.isDigitWithoutZero(J))throw Eu(x.Char,uu());z="numerical"},numerical(){switch(J){case".":return j=uu(),void(z="decimalPointLeading");case"0":return j=uu(),void(z="zero");case"I":return uu(),tu("nfinity"),eu("numeric",Z*(1/0));case"N":return uu(),tu("aN"),eu("numeric",NaN)}if(void 0!==J&&H.JudgeUtil.isDigitWithoutZero(J))return j=uu(),void(z="decimalInteger");throw Eu(x.Char,uu())},zero(){switch(J){case".":case"e":case"E":return void(z="decimal");case"x":case"X":return j+=uu(),void(z="hexadecimal")}return eu("numeric",0)},decimalInteger(){switch(J){case".":case"e":case"E":return void(z="decimal")}if(!H.JudgeUtil.isDigit(J))return eu("numeric",Z*Number(j));j+=uu()},decimal(){switch(J){case".":j+=uu(),z="decimalFraction";break;case"e":case"E":j+=uu(),z="decimalExponent"}},decimalPointLeading(){if(H.JudgeUtil.isDigit(J))return j+=uu(),void(z="decimalFraction");throw Eu(x.Char,uu())},decimalFraction(){switch(J){case"e":case"E":return j+=uu(),void(z="decimalExponent")}if(!H.JudgeUtil.isDigit(J))return eu("numeric",Z*Number(j));j+=uu()},decimalExponent(){switch(J){case"+":case"-":return j+=uu(),void(z="decimalExponentSign")}if(H.JudgeUtil.isDigit(J))return j+=uu(),void(z="decimalExponentInteger");throw Eu(x.Char,uu())},decimalExponentSign(){if(H.JudgeUtil.isDigit(J))return j+=uu(),void(z="decimalExponentInteger");throw Eu(x.Char,uu())},decimalExponentInteger(){if(!H.JudgeUtil.isDigit(J))return eu("numeric",Z*Number(j));j+=uu()},hexadecimal(){if(H.JudgeUtil.isHexDigit(J))return j+=uu(),void(z="hexadecimalInteger");throw Eu(x.Char,uu())},hexadecimalInteger(){if(!H.JudgeUtil.isHexDigit(J))return eu("numeric",Z*Number(j));j+=uu()},identifierNameStartEscape(){if("u"!==J)throw Eu(x.Char,uu());uu();const u=ru();switch(u){case"$":case"_":break;default:if(!H.JudgeUtil.isIdStartChar(u))throw Eu(x.Identifier)}j+=u,z="identifierName"},identifierName(){switch(J){case"$":case"_":case"‌":case"‍":return void(j+=uu());case"\\":return uu(),void(z="identifierNameEscape")}if(!H.JudgeUtil.isIdContinueChar(J))return eu("identifier",j);j+=uu()},identifierNameEscape(){if("u"!==J)throw Eu(x.Char,uu());uu();const u=ru();switch(u){case"$":case"_":case"‌":case"‍":break;default:if(!H.JudgeUtil.isIdContinueChar(u))throw Eu(x.Identifier)}j+=u,z="identifierName"},string(){switch(J){case"\\":return uu(),void(j+=function(){const u=Y(),D=function(){switch(Y()){case"b":return uu(),"\b";case"f":return uu(),"\f";case"n":return uu(),"\n";case"r":return uu(),"\r";case"t":return uu(),"\t";case"v":return uu(),"\v"}return}();if(D)return D;switch(u){case"0":if(uu(),H.JudgeUtil.isDigit(Y()))throw Eu(x.Char,uu());return"\0";case"x":return uu(),function(){let u="",D=Y();if(!H.JudgeUtil.isHexDigit(D))throw Eu(x.Char,uu());if(u+=uu(),D=Y(),!H.JudgeUtil.isHexDigit(D))throw Eu(x.Char,uu());return u+=uu(),String.fromCodePoint(parseInt(u,16))}();case"u":return uu(),ru();case"\n":case"\u2028":case"\u2029":return uu(),"";case"\r":return uu(),"\n"===Y()&&uu(),""}if(void 0===u||H.JudgeUtil.isDigitWithoutZero(u))throw Eu(x.Char,uu());return uu()}());case'"':case"'":if(J===q){const u=eu("string",j);return uu(),u}return void(j+=uu());case"\n":case"\r":case void 0:throw Eu(x.Char,uu());case"\u2028":case"\u2029":!function(u){console.warn(`JSON5: '${Fu(u)}' in strings is not valid ECMAScript; consider escaping.`)}(J)}j+=uu()}};function eu(u,D){return{type:u,value:D,line:$,column:k}}function tu(u){for(const D of u){if(Y()!==D)throw Eu(x.Char,uu());uu()}}function ru(){let u="",D=4;for(;D-- >0;){const D=Y();if(!H.JudgeUtil.isHexDigit(D))throw Eu(x.Char,uu());u+=uu()}return String.fromCodePoint(parseInt(u,16))}const nu={start(){if("eof"===M.type)throw Eu(x.EOF);iu()},beforePropertyName(){switch(M.type){case"identifier":case"string":return V=M.value,void(W="afterPropertyName");case"punctuator":return void Cu();case"eof":throw Eu(x.EOF)}},afterPropertyName(){if("eof"===M.type)throw Eu(x.EOF);W="beforePropertyValue"},beforePropertyValue(){if("eof"===M.type)throw Eu(x.EOF);iu()},afterPropertyValue(){if("eof"===M.type)throw Eu(x.EOF);switch(M.value){case",":return void(W="beforePropertyName");case"}":Cu()}},beforeArrayValue(){if("eof"===M.type)throw Eu(x.EOF);"punctuator"!==M.type||"]"!==M.value?iu():Cu()},afterArrayValue(){if("eof"===M.type)throw Eu(x.EOF);switch(M.value){case",":return void(W="beforeArrayValue");case"]":Cu()}},end(){}};function iu(){const u=function(){let u;switch(M.type){case"punctuator":switch(M.value){case"{":u={};break;case"[":u=[]}break;case"null":case"boolean":case"numeric":case"string":u=M.value}return u}();if(K&&"object"==typeof u&&(u._line=$,u._column=k),void 0===G)G=u;else{const D=U[U.length-1];Array.isArray(D)?K&&"object"!=typeof u?D.push({value:u,_line:$,_column:k}):D.push(u):D[V]=K&&"object"!=typeof u?{value:u,_line:$,_column:k}:u}!function(u){if(u&&"object"==typeof u)U.push(u),W=Array.isArray(u)?"beforeArrayValue":"beforePropertyName";else{const u=U[U.length-1];W=u?Array.isArray(u)?"afterArrayValue":"afterPropertyValue":"end"}}(u)}function Cu(){U.pop();const u=U[U.length-1];W=u?Array.isArray(u)?"afterArrayValue":"afterPropertyValue":"end"}function Fu(u){const D={"'":"\\'",'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\v":"\\v","\0":"\\0","\u2028":"\\u2028","\u2029":"\\u2029"};if(D[u])return D[u];if(u<" "){const D=u.charCodeAt(0).toString(16);return`\\x${`00${D}`.substring(D.length)}`}return u}function Eu(u,D){let e="";switch(u){case x.Char:e=void 0===D?`JSON5: invalid end of input at ${$}:${k}`:`JSON5: invalid character '${Fu(D)}' at ${$}:${k}`;break;case x.EOF:e=`JSON5: invalid end of input at ${$}:${k}`;break;case x.Identifier:k-=5,e=`JSON5: invalid identifier character at ${$}:${k}`}const t=new Au(e);return t.lineNumber=$,t.columnNumber=k,t}class Au extends SyntaxError{}var ou={},au=n&&n.__createBinding||(Object.create?function(u,D,e,t){void 0===t&&(t=e);var r=Object.getOwnPropertyDescriptor(D,e);r&&!("get"in r?!D.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return D[e]}}),Object.defineProperty(u,t,r)}:function(u,D,e,t){void 0===t&&(t=e),u[t]=D[e]}),cu=n&&n.__setModuleDefault||(Object.create?function(u,D){Object.defineProperty(u,"default",{enumerable:!0,value:D})}:function(u,D){u.default=D}),su=n&&n.__importStar||function(u){if(u&&u.__esModule)return u;var D={};if(null!=u)for(var e in u)"default"!==e&&Object.prototype.hasOwnProperty.call(u,e)&&au(D,u,e);return cu(D,u),D},lu=n&&n.__importDefault||function(u){return u&&u.__esModule?u:{default:u}};Object.defineProperty(ou,"__esModule",{value:!0}),ou.isFileExists=ou.offlinePluginConversion=ou.executeCommand=ou.getNpmPath=ou.hasNpmPackInPaths=void 0;const Bu=r,du=lu(e),fu=su(u),_u=i,pu=l;ou.hasNpmPackInPaths=function(u,D){try{return require.resolve(u,{paths:[...D]}),!0}catch(u){return!1}},ou.getNpmPath=function(){const u=process.execPath;return fu.join(fu.dirname(u),_u.NPM_TOOL)},ou.executeCommand=function(u,D,e){0!==(0,Bu.spawnSync)(u,D,e).status&&(0,pu.logErrorAndExit)(`Error: ${u} ${D} execute failed.See above for details.`)},ou.offlinePluginConversion=function(u,D){return D.startsWith("file:")||D.endsWith(".tgz")?fu.resolve(u,_u.HVIGOR,D.replace("file:","")):D},ou.isFileExists=function(u){return du.default.existsSync(u)&&du.default.statSync(u).isFile()};var Ou=n&&n.__createBinding||(Object.create?function(u,D,e,t){void 0===t&&(t=e);var r=Object.getOwnPropertyDescriptor(D,e);r&&!("get"in r?!D.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return D[e]}}),Object.defineProperty(u,t,r)}:function(u,D,e,t){void 0===t&&(t=e),u[t]=D[e]}),hu=n&&n.__setModuleDefault||(Object.create?function(u,D){Object.defineProperty(u,"default",{enumerable:!0,value:D})}:function(u,D){u.default=D}),Pu=n&&n.__importStar||function(u){if(u&&u.__esModule)return u;var D={};if(null!=u)for(var e in u)"default"!==e&&Object.prototype.hasOwnProperty.call(u,e)&&Ou(D,u,e);return hu(D,u),D},vu=n&&n.__importDefault||function(u){return u&&u.__esModule?u:{default:u}};Object.defineProperty(P,"__esModule",{value:!0});var gu=P.initProjectWorkSpace=void 0;const mu=Pu(e),Ru=vu(D),yu=Pu(u),Iu=v,Nu=i,bu=g,Su=l,wu=ou;let Hu,xu,Mu;function Tu(u,D,e){return void 0!==e.dependencies&&(0,wu.offlinePluginConversion)(Nu.HVIGOR_PROJECT_ROOT_DIR,D.dependencies[u])===yu.normalize(e.dependencies[u])}function Vu(){const u=yu.join(Mu,Nu.WORK_SPACE);if((0,Su.logInfoPrintConsole)("Hvigor cleaning..."),!mu.existsSync(u))return;const D=mu.readdirSync(u);if(!D||0===D.length)return;const e=yu.resolve(Mu,"node_modules","@ohos","hvigor","bin","hvigor.js");mu.existsSync(e)&&(0,wu.executeCommand)(process.argv[0],[e,"--stop-daemon"],{});try{D.forEach((D=>{mu.rmSync(yu.resolve(u,D),{recursive:!0})}))}catch(D){(0,Su.logErrorAndExit)(`The hvigor build tool cannot be installed. Please manually clear the workspace directory and synchronize the project again.\n\n Workspace Path: ${u}.`)}}gu=P.initProjectWorkSpace=function(){if(Hu=function(){const u=yu.resolve(Nu.HVIGOR_PROJECT_WRAPPER_HOME,Nu.DEFAULT_HVIGOR_CONFIG_JSON_FILE_NAME);mu.existsSync(u)||(0,Su.logErrorAndExit)(`Error: Hvigor config file ${u} does not exist.`);return(0,bu.parseJsonFile)(u)}(),Mu=function(u){let D;D=function(u){let D=u.hvigorVersion;if(D.startsWith("file:")||D.endsWith(".tgz"))return!1;const e=u.dependencies,t=Object.getOwnPropertyNames(e);for(const u of t){const D=e[u];if(D.startsWith("file:")||D.endsWith(".tgz"))return!1}if(1===t.length&&"@ohos/hvigor-ohos-plugin"===t[0])return D>"2.5.0";return!1}(u)?function(u){let D=`${Nu.HVIGOR_ENGINE_PACKAGE_NAME}@${u.hvigorVersion}`;const e=u.dependencies;if(e){Object.getOwnPropertyNames(e).sort().forEach((u=>{D+=`,${u}@${e[u]}`}))}return(0,Iu.hash)(D)}(u):(0,Iu.hash)(process.cwd());return yu.resolve(Ru.default.homedir(),".hvigor","project_caches",D)}(Hu),xu=function(){const u=yu.resolve(Mu,Nu.WORK_SPACE,Nu.DEFAULT_PACKAGE_JSON);return mu.existsSync(u)?(0,bu.parseJsonFile)(u):{dependencies:{}}}(),!(0,wu.hasNpmPackInPaths)(Nu.HVIGOR_ENGINE_PACKAGE_NAME,[yu.join(Mu,Nu.WORK_SPACE)])||(0,wu.offlinePluginConversion)(Nu.HVIGOR_PROJECT_ROOT_DIR,Hu.hvigorVersion)!==xu.dependencies[Nu.HVIGOR_ENGINE_PACKAGE_NAME]||!function(){function u(u){const D=null==u?void 0:u.dependencies;return void 0===D?0:Object.getOwnPropertyNames(D).length}const D=u(Hu),e=u(xu);if(D+1!==e)return!1;for(const u in null==Hu?void 0:Hu.dependencies)if(!(0,wu.hasNpmPackInPaths)(u,[yu.join(Mu,Nu.WORK_SPACE)])||!Tu(u,Hu,xu))return!1;return!0}()){Vu();try{!function(){(0,Su.logInfoPrintConsole)("Hvigor installing...");for(const u in Hu.dependencies)Hu.dependencies[u]&&(Hu.dependencies[u]=(0,wu.offlinePluginConversion)(Nu.HVIGOR_PROJECT_ROOT_DIR,Hu.dependencies[u]));const u={dependencies:{...Hu.dependencies}};u.dependencies[Nu.HVIGOR_ENGINE_PACKAGE_NAME]=(0,wu.offlinePluginConversion)(Nu.HVIGOR_PROJECT_ROOT_DIR,Hu.hvigorVersion);const D=yu.join(Mu,Nu.WORK_SPACE);try{mu.mkdirSync(D,{recursive:!0});const e=yu.resolve(D,Nu.DEFAULT_PACKAGE_JSON);mu.writeFileSync(e,JSON.stringify(u))}catch(u){(0,Su.logErrorAndExit)(u)}(function(){const u=["config","set","store-dir",Nu.HVIGOR_PNPM_STORE_PATH],D={cwd:yu.join(Mu,Nu.WORK_SPACE),stdio:["inherit","inherit","inherit"]};(0,wu.executeCommand)(Nu.HVIGOR_WRAPPER_PNPM_SCRIPT_PATH,u,D)})(),function(){const u=["install"],D={cwd:yu.join(Mu,Nu.WORK_SPACE),stdio:["inherit","inherit","inherit"]};(0,wu.executeCommand)(Nu.HVIGOR_WRAPPER_PNPM_SCRIPT_PATH,u,D)}(),(0,Su.logInfoPrintConsole)("Hvigor install success.")}()}catch(u){Vu()}}return Mu};var Gu={};!function(t){var C=n&&n.__createBinding||(Object.create?function(u,D,e,t){void 0===t&&(t=e);var r=Object.getOwnPropertyDescriptor(D,e);r&&!("get"in r?!D.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return D[e]}}),Object.defineProperty(u,t,r)}:function(u,D,e,t){void 0===t&&(t=e),u[t]=D[e]}),F=n&&n.__setModuleDefault||(Object.create?function(u,D){Object.defineProperty(u,"default",{enumerable:!0,value:D})}:function(u,D){u.default=D}),E=n&&n.__importStar||function(u){if(u&&u.__esModule)return u;var D={};if(null!=u)for(var e in u)"default"!==e&&Object.prototype.hasOwnProperty.call(u,e)&&C(D,u,e);return F(D,u),D},A=n&&n.__importDefault||function(u){return u&&u.__esModule?u:{default:u}};Object.defineProperty(t,"__esModule",{value:!0}),t.executeInstallPnpm=t.isPnpmInstalled=t.environmentHandler=t.checkNpmConifg=t.PNPM_VERSION=void 0;const o=r,a=E(e),c=A(D),s=E(u),B=i,d=l,f=ou;t.PNPM_VERSION="7.30.0",t.checkNpmConifg=function(){const u=s.resolve(B.HVIGOR_PROJECT_ROOT_DIR,".npmrc"),D=s.resolve(c.default.homedir(),".npmrc");if((0,f.isFileExists)(u)||(0,f.isFileExists)(D))return;const e=(0,f.getNpmPath)(),t=(0,o.spawnSync)(e,["config","get","prefix"],{cwd:B.HVIGOR_PROJECT_ROOT_DIR});if(0!==t.status||!t.stdout)return void(0,d.logErrorAndExit)("Error: The hvigor depends on the npmrc file. Configure the npmrc file first.");const r=s.resolve(`${t.stdout}`.replace(/[\r\n]/gi,""),".npmrc");(0,f.isFileExists)(r)||(0,d.logErrorAndExit)("Error: The hvigor depends on the npmrc file. Configure the npmrc file first.")},t.environmentHandler=function(){process.env["npm_config_update-notifier"]="false"},t.isPnpmInstalled=function(){return!!a.existsSync(B.HVIGOR_WRAPPER_PNPM_SCRIPT_PATH)&&(0,f.hasNpmPackInPaths)("pnpm",[B.HVIGOR_WRAPPER_TOOLS_HOME])},t.executeInstallPnpm=function(){(0,d.logInfoPrintConsole)(`Installing pnpm@${t.PNPM_VERSION}...`);const u=(0,f.getNpmPath)();!function(){const u=s.resolve(B.HVIGOR_WRAPPER_TOOLS_HOME,B.DEFAULT_PACKAGE_JSON);try{a.existsSync(B.HVIGOR_WRAPPER_TOOLS_HOME)||a.mkdirSync(B.HVIGOR_WRAPPER_TOOLS_HOME,{recursive:!0});const D={dependencies:{}};D.dependencies[B.PNPM]=t.PNPM_VERSION,a.writeFileSync(u,JSON.stringify(D))}catch(D){(0,d.logErrorAndExit)(`Error: EPERM: operation not permitted,create ${u} failed.`)}}(),(0,f.executeCommand)(u,["install","pnpm"],{cwd:B.HVIGOR_WRAPPER_TOOLS_HOME,stdio:["inherit","inherit","inherit"],env:process.env}),(0,d.logInfoPrintConsole)("Pnpm install success.")}}(Gu),function(){Gu.checkNpmConifg(),Gu.environmentHandler(),Gu.isPnpmInstalled()||Gu.executeInstallPnpm();const D=gu();_(u.join(D,i.WORK_SPACE))}(); \ No newline at end of file diff --git a/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/hvigorfile.ts b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/hvigorfile.ts new file mode 100644 index 0000000000000000000000000000000000000000..6cd8f6e8e58efaa479d295cfc29090fd0d73a765 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/hvigorfile.ts @@ -0,0 +1,2 @@ +// Script for compiling build behavior. It is built in the build plug-in and cannot be modified currently. +export { appTasks } from '@ohos/hvigor-ohos-plugin' \ No newline at end of file diff --git a/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/hvigorw b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/hvigorw new file mode 100644 index 0000000000000000000000000000000000000000..ff6a29a2ac9e13860657c8e33464123f4da4b7ed --- /dev/null +++ b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/hvigorw @@ -0,0 +1,48 @@ +#!/bin/bash + +# ---------------------------------------------------------------------------- +# Hvigor startup script, version 1.0.0 +# +# Required ENV vars: +# ------------------ +# NODE_HOME - location of a Node home dir +# or +# Add /usr/local/nodejs/bin to the PATH environment variable +# ---------------------------------------------------------------------------- + +HVIGOR_APP_HOME="`pwd -P`" +HVIGOR_WRAPPER_SCRIPT=${HVIGOR_APP_HOME}/hvigor/hvigor-wrapper.js +warn() { + echo "" + echo -e "\033[1;33m`date '+[%Y-%m-%d %H:%M:%S]'`$@\033[0m" +} + +error() { + echo "" + echo -e "\033[1;31m`date '+[%Y-%m-%d %H:%M:%S]'`$@\033[0m" +} + +fail() { + error "$@" + exit 1 +} + +# Determine node to start hvigor wrapper script +if [ -n "${NODE_HOME}" ];then + EXECUTABLE_NODE="${NODE_HOME}/bin/node" + if [ ! -x "$EXECUTABLE_NODE" ];then + fail "ERROR: NODE_HOME is set to an invalid directory,check $NODE_HOME\n\nPlease set NODE_HOME in your environment to the location where your nodejs installed" + fi +else + EXECUTABLE_NODE="node" + which ${EXECUTABLE_NODE} > /dev/null 2>&1 || fail "ERROR: NODE_HOME is not set and not 'node' command found in your path" +fi + +# Check hvigor wrapper script +if [ ! -r "$HVIGOR_WRAPPER_SCRIPT" ];then + fail "ERROR: Couldn't find hvigor/hvigor-wrapper.js in ${HVIGOR_APP_HOME}" +fi + +# start hvigor-wrapper script +exec "${EXECUTABLE_NODE}" \ + "${HVIGOR_WRAPPER_SCRIPT}" "$@" diff --git a/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/hvigorw.bat b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/hvigorw.bat new file mode 100644 index 0000000000000000000000000000000000000000..d570007e8a178639a230d95b94a09dcda89969d8 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/hvigorw.bat @@ -0,0 +1,64 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Hvigor startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +set WRAPPER_MODULE_PATH=%APP_HOME%\hvigor\hvigor-wrapper.js +set NODE_EXE=node.exe + +goto start + +:start +@rem Find node.exe +if defined NODE_HOME goto findNodeFromNodeHome + +%NODE_EXE% --version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: NODE_HOME is not set and no 'node' command could be found in your PATH. +echo. +echo Please set the NODE_HOME variable in your environment to match the +echo location of your NodeJs installation. + +goto fail + +:findNodeFromNodeHome +set NODE_HOME=%NODE_HOME:"=% +set NODE_EXE_PATH=%NODE_HOME%/%NODE_EXE% + +if exist "%NODE_EXE_PATH%" goto execute +echo. +echo ERROR: NODE_HOME is not set and no 'node' command could be found in your PATH. +echo. +echo Please set the NODE_HOME variable in your environment to match the +echo location of your NodeJs installation. + +goto fail + +:execute +@rem Execute hvigor +"%NODE_EXE%" "%WRAPPER_MODULE_PATH%" %* + +if "%ERRORLEVEL%" == "0" goto hvigorwEnd + +:fail +exit /b 1 + +:hvigorwEnd +if "%OS%" == "Windows_NT" endlocal + +:end diff --git a/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/oh-package.json5 b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/oh-package.json5 new file mode 100644 index 0000000000000000000000000000000000000000..94e853747443bdf30d721ca612ec75dc3d23defd --- /dev/null +++ b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/oh-package.json5 @@ -0,0 +1,11 @@ +{ + "license": "ISC", + "devDependencies": { + "@ohos/hypium": "1.0.6" + }, + "name": "adaptiveservicewidget", + "description": "example description", + "repository": {}, + "version": "1.0.0", + "dependencies": {} +} diff --git a/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/screenshots/device/card.png b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/screenshots/device/card.png new file mode 100644 index 0000000000000000000000000000000000000000..01cec39ae837ac320f89da93ada644b8f6a6fc93 Binary files /dev/null and b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/screenshots/device/card.png differ diff --git a/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/screenshots/device/main.png b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/screenshots/device/main.png new file mode 100644 index 0000000000000000000000000000000000000000..d09b8e5ac7ee0b067ab44dd2992965da869aa587 Binary files /dev/null and b/HarmonyOS_NEXT/Widget/AdaptiveServiceWidget/screenshots/device/main.png differ diff --git a/HarmonyOS_NEXT/Widget/FormGame/.clang-tidy b/HarmonyOS_NEXT/Widget/FormGame/.clang-tidy new file mode 100644 index 0000000000000000000000000000000000000000..c35fd9801934820f90c1e4f2b3ca3edce7b456f7 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/.clang-tidy @@ -0,0 +1 @@ +Checks: 'misc-unused-parameters,misc-unused-local-variable,misc-napi-module-name' diff --git a/HarmonyOS_NEXT/Widget/FormGame/.clangd b/HarmonyOS_NEXT/Widget/FormGame/.clangd new file mode 100644 index 0000000000000000000000000000000000000000..3a8f55db8817943595fe03e8910e9721936e75df --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/.clangd @@ -0,0 +1,11 @@ +CompileFlags: + Add: [-Wunreachable-code-aggressive] +Diagnostics: + ClangTidy: + Add: [misc-unused-parameters,misc-unused-local-variable] + Remove: [] + CheckOptions: + misc-unused-parameters.StrictMode: 1 + + UnusedIncludes: Strict + UnusedFunctions: Check \ No newline at end of file diff --git a/HarmonyOS_NEXT/Widget/FormGame/.gitignore b/HarmonyOS_NEXT/Widget/FormGame/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..633fd8e3e28103c4eb652b5ce4591d068ba99f05 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/.gitignore @@ -0,0 +1,7 @@ +/node_modules +/local.properties +/.idea +**/build +/.hvigor +/package-lock.json +/entry/package-lock.json diff --git a/HarmonyOS_NEXT/Widget/FormGame/AppScope/app.json5 b/HarmonyOS_NEXT/Widget/FormGame/AppScope/app.json5 new file mode 100644 index 0000000000000000000000000000000000000000..f2dd3ba7e826d3874c5f385c5c15d37ba8567d5d --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/AppScope/app.json5 @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "app": { + "bundleName": "ohos.samples.formgameability", + "vendor": "samples", + "versionCode": 1000000, + "versionName": "1.0.0", + "icon": "$media:app_icon", + "label": "$string:app_name", + "distributedNotificationEnabled": true, + "minAPIVersion": 9, + "targetAPIVersion": 9 + } +} diff --git a/HarmonyOS_NEXT/Widget/FormGame/AppScope/resources/base/element/string.json b/HarmonyOS_NEXT/Widget/FormGame/AppScope/resources/base/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..f57f59f5345916c7f416e811235c6d706384b040 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/AppScope/resources/base/element/string.json @@ -0,0 +1,8 @@ +{ + "string": [ + { + "name": "app_name", + "value": "FormApplication" + } + ] +} diff --git a/HarmonyOS_NEXT/Widget/FormGame/AppScope/resources/base/media/app_icon.png b/HarmonyOS_NEXT/Widget/FormGame/AppScope/resources/base/media/app_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ce307a8827bd75456441ceb57d530e4c8d45d36c Binary files /dev/null and b/HarmonyOS_NEXT/Widget/FormGame/AppScope/resources/base/media/app_icon.png differ diff --git a/HarmonyOS_NEXT/Widget/FormGame/EntryCard/entry/base/snapshot/widget-2x2.png b/HarmonyOS_NEXT/Widget/FormGame/EntryCard/entry/base/snapshot/widget-2x2.png new file mode 100644 index 0000000000000000000000000000000000000000..16311262261a7a3cb3195a0e6051beeec5e9ece0 Binary files /dev/null and b/HarmonyOS_NEXT/Widget/FormGame/EntryCard/entry/base/snapshot/widget-2x2.png differ diff --git a/HarmonyOS_NEXT/Widget/FormGame/build-profile.json5 b/HarmonyOS_NEXT/Widget/FormGame/build-profile.json5 new file mode 100644 index 0000000000000000000000000000000000000000..7274036d67bffb8e652566a4630c8282f7875e43 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/build-profile.json5 @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2022-2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "app": { + "signingConfigs": [ + ], + "products": [ + { + "name": "default", + "signingConfig": "default", + "compileSdkVersion": "4.0.0(10)", + "compatibleSdkVersion": "4.0.0(10)", + "runtimeOS": "HarmonyOS" + } + ] + }, + "modules": [ + { + "name": "entry", + "srcPath": "./entry", + "targets": [ + { + "name": "default", + "applyToProducts": [ + "default" + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/.cmake/api/v1/reply/codemodel-v2-3caaed9ab16332d45167.json b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/.cmake/api/v1/reply/codemodel-v2-3caaed9ab16332d45167.json new file mode 100644 index 0000000000000000000000000000000000000000..f1438d5afdb69ae48c9be5ccab09cc92ec417cc4 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/.cmake/api/v1/reply/codemodel-v2-3caaed9ab16332d45167.json @@ -0,0 +1,59 @@ +{ + "configurations" : + [ + { + "directories" : + [ + { + "build" : ".", + "minimumCMakeVersion" : + { + "string" : "3.6.0" + }, + "projectIndex" : 0, + "source" : ".", + "targetIndexes" : + [ + 0 + ] + } + ], + "name" : "Release", + "projects" : + [ + { + "directoryIndexes" : + [ + 0 + ], + "name" : "XComponent", + "targetIndexes" : + [ + 0 + ] + } + ], + "targets" : + [ + { + "directoryIndex" : 0, + "id" : "infoutil::@6890427a1f51a3e7e1df", + "jsonFile" : "target-infoutil-Release-e3153186697a6135d06a.json", + "name" : "infoutil", + "projectIndex" : 0 + } + ] + } + ], + "kind" : "codemodel", + "paths" : + { + "build" : "D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/arm64-v8a", + "source" : "D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/src/main/cpp" + }, + "version" : + { + "major" : 2, + "minor" : 0 + } +} diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/.cmake/api/v1/reply/index-2023-11-02T03-12-29-0328.json b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/.cmake/api/v1/reply/index-2023-11-02T03-12-29-0328.json new file mode 100644 index 0000000000000000000000000000000000000000..f8f290608db977079c2424b9748f914aa6e8388c --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/.cmake/api/v1/reply/index-2023-11-02T03-12-29-0328.json @@ -0,0 +1,69 @@ +{ + "cmake" : + { + "generator" : + { + "name" : "Ninja" + }, + "paths" : + { + "cmake" : "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/bin/cmake.exe", + "cpack" : "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/bin/cpack.exe", + "ctest" : "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/bin/ctest.exe", + "root" : "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16" + }, + "version" : + { + "isDirty" : false, + "major" : 3, + "minor" : 16, + "patch" : 5, + "string" : "3.16.5", + "suffix" : "" + } + }, + "objects" : + [ + { + "jsonFile" : "codemodel-v2-3caaed9ab16332d45167.json", + "kind" : "codemodel", + "version" : + { + "major" : 2, + "minor" : 0 + } + }, + { + "jsonFile" : "cmakeFiles-v1-dcaed3fd26975a84a0c6.json", + "kind" : "cmakeFiles", + "version" : + { + "major" : 1, + "minor" : 0 + } + } + ], + "reply" : + { + "cmakeFiles-v1" : + { + "jsonFile" : "cmakeFiles-v1-dcaed3fd26975a84a0c6.json", + "kind" : "cmakeFiles", + "version" : + { + "major" : 1, + "minor" : 0 + } + }, + "codemodel-v2" : + { + "jsonFile" : "codemodel-v2-3caaed9ab16332d45167.json", + "kind" : "codemodel", + "version" : + { + "major" : 2, + "minor" : 0 + } + } + } +} diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/.cmake/api/v1/reply/target-infoutil-Release-e3153186697a6135d06a.json b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/.cmake/api/v1/reply/target-infoutil-Release-e3153186697a6135d06a.json new file mode 100644 index 0000000000000000000000000000000000000000..fdc951209660ee9eae4d2d5c2d69552d415ad003 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/.cmake/api/v1/reply/target-infoutil-Release-e3153186697a6135d06a.json @@ -0,0 +1,182 @@ +{ + "artifacts" : + [ + { + "path" : "D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/build/default/intermediates/cmake/default/obj/arm64-v8a/libinfoutil.so" + } + ], + "backtrace" : 1, + "backtraceGraph" : + { + "commands" : + [ + "add_library", + "target_link_libraries", + "include_directories", + "include", + "project" + ], + "files" : + [ + "CMakeLists.txt", + "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/hmscore/4.0.0/native/build/cmake/hmos.toolchain.cmake", + "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeDetermineSystem.cmake" + ], + "nodes" : + [ + { + "file" : 0 + }, + { + "command" : 0, + "file" : 0, + "line" : 23, + "parent" : 0 + }, + { + "command" : 1, + "file" : 0, + "line" : 24, + "parent" : 0 + }, + { + "command" : 4, + "file" : 0, + "line" : 16, + "parent" : 0 + }, + { + "file" : 2, + "parent" : 3 + }, + { + "command" : 3, + "file" : 2, + "line" : 93, + "parent" : 4 + }, + { + "file" : 1, + "parent" : 5 + }, + { + "command" : 2, + "file" : 1, + "line" : 25, + "parent" : 6 + }, + { + "command" : 2, + "file" : 0, + "line" : 20, + "parent" : 0 + } + ] + }, + "compileGroups" : + [ + { + "compileCommandFragments" : + [ + { + "fragment" : "-fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -fno-addrsig -Wa,--noexecstack -Wformat -Werror=format-security -D__MUSL__ -O2 -DNDEBUG -fPIC " + } + ], + "defines" : + [ + { + "define" : "infoutil_EXPORTS" + } + ], + "includes" : + [ + { + "backtrace" : 7, + "path" : "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/hmscore/4.0.0/native/sysroot/usr/include" + }, + { + "backtrace" : 8, + "path" : "D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/src/main/cpp" + }, + { + "backtrace" : 8, + "path" : "D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/src/main/cpp/include" + } + ], + "language" : "CXX", + "sourceIndexes" : + [ + 0, + 1 + ], + "sysroot" : + { + "path" : "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot" + } + } + ], + "id" : "infoutil::@6890427a1f51a3e7e1df", + "link" : + { + "commandFragments" : + [ + { + "fragment" : "--rtlib=compiler-rt -fuse-ld=lld -static-libstdc++ -Wl,--build-id=sha1 -Wl,--warn-shared-textrel -Wl,--fatal-warnings -lunwind -Wl,--no-undefined -Qunused-arguments -Wl,-z,noexecstack", + "role" : "flags" + }, + { + "backtrace" : 2, + "fragment" : "-lace_napi.z", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "-lhilog_ndk.z", + "role" : "libraries" + }, + { + "fragment" : "-lm", + "role" : "libraries" + } + ], + "language" : "CXX", + "sysroot" : + { + "path" : "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot" + } + }, + "name" : "infoutil", + "nameOnDisk" : "libinfoutil.so", + "paths" : + { + "build" : ".", + "source" : "." + }, + "sourceGroups" : + [ + { + "name" : "Source Files", + "sourceIndexes" : + [ + 0, + 1 + ] + } + ], + "sources" : + [ + { + "backtrace" : 1, + "compileGroupIndex" : 0, + "path" : "native_module.cpp", + "sourceGroupIndex" : 0 + }, + { + "backtrace" : 1, + "compileGroupIndex" : 0, + "path" : "napi_info_util.cpp", + "sourceGroupIndex" : 0 + } + ], + "type" : "SHARED_LIBRARY" +} diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/.ninja_deps b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/.ninja_deps new file mode 100644 index 0000000000000000000000000000000000000000..37396302c666995c1b0e890a56bbc4f90a7c6ab8 Binary files /dev/null and b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/.ninja_deps differ diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/.ninja_log b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/.ninja_log new file mode 100644 index 0000000000000000000000000000000000000000..a99baf7ab9445d2ef764466c13ccd1e176e709e6 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/.ninja_log @@ -0,0 +1,7 @@ +# ninja log v5 +1 282 7205943483257547 CMakeFiles/infoutil.dir/native_module.cpp.o f4359b51fcd40b13 +6 575 7205943486285498 CMakeFiles/infoutil.dir/napi_info_util.cpp.o 63347cea85e9f26a +581 917 7205943489635038 D:/Program/OpenHarmony/AAS1026/applications_app_samples/code/SuperFeature/Widget/FormGame/FormGame/entry/build/default/intermediates/cmake/default/obj/arm64-v8a/libinfoutil.so c9ffa66ba0332ac9 +3 273 7205979540226049 CMakeFiles/infoutil.dir/native_module.cpp.o d327bb1e1026c928 +27 630 7205979543965331 CMakeFiles/infoutil.dir/napi_info_util.cpp.o 15669db1689b64e5 +631 973 7205979547315241 D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/build/default/intermediates/cmake/default/obj/arm64-v8a/libinfoutil.so 72a0ae90a282f982 diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeCache.txt b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeCache.txt new file mode 100644 index 0000000000000000000000000000000000000000..766cfc8e1d214581c4dee78df17d32bb180ca37c --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeCache.txt @@ -0,0 +1,387 @@ +# This is the CMakeCache file. +# For build in directory: d:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/arm64-v8a +# It was generated by CMake: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/bin/cmake.exe +# You can edit this file to change values found and used by cmake. +# If you do not want to change any of the values, simply exit the editor. +# If you do want to change a value, simply edit, save, and exit the editor. +# The syntax for the file is as follows: +# KEY:TYPE=VALUE +# KEY is the name of a variable in the cache. +# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!. +# VALUE is the current value for the KEY. + +######################## +# EXTERNAL cache entries +######################## + +//Path to a program. +CMAKE_ADDR2LINE:FILEPATH=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/llvm-addr2line.exe + +//Archiver +CMAKE_AR:FILEPATH=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/llvm-ar.exe + +//Flags for all build types. +CMAKE_ASM_FLAGS:STRING= + +//Flags for debug variant builds. +CMAKE_ASM_FLAGS_DEBUG:STRING= + +//Flags for release variant builds. +CMAKE_ASM_FLAGS_RELEASE:STRING= + +//Choose the type of build, options are: None Debug Release RelWithDebInfo +// MinSizeRel ... +CMAKE_BUILD_TYPE:STRING=Release + +//LLVM archiver +CMAKE_CXX_COMPILER_AR:FILEPATH=CMAKE_CXX_COMPILER_AR-NOTFOUND + +//Generate index for LLVM archive +CMAKE_CXX_COMPILER_RANLIB:FILEPATH=CMAKE_CXX_COMPILER_RANLIB-NOTFOUND + +//Flags for all build types. +CMAKE_CXX_FLAGS:STRING= + +//Flags for debug variant builds. +CMAKE_CXX_FLAGS_DEBUG:STRING= + +//Flags used by the CXX compiler during MINSIZEREL builds. +CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG + +//Flags for release variant builds. +CMAKE_CXX_FLAGS_RELEASE:STRING= + +//Flags used by the CXX compiler during RELWITHDEBINFO builds. +CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG + +//Libraries linked by default with all C++ applications. +CMAKE_CXX_STANDARD_LIBRARIES:STRING=-lm + +//LLVM archiver +CMAKE_C_COMPILER_AR:FILEPATH=CMAKE_C_COMPILER_AR-NOTFOUND + +//Generate index for LLVM archive +CMAKE_C_COMPILER_RANLIB:FILEPATH=CMAKE_C_COMPILER_RANLIB-NOTFOUND + +//Flags for all build types. +CMAKE_C_FLAGS:STRING= + +//Flags for debug variant builds. +CMAKE_C_FLAGS_DEBUG:STRING= + +//Flags used by the C compiler during MINSIZEREL builds. +CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG + +//Flags for release variant builds. +CMAKE_C_FLAGS_RELEASE:STRING= + +//Flags used by the C compiler during RELWITHDEBINFO builds. +CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG + +//Libraries linked by default with all C applications. +CMAKE_C_STANDARD_LIBRARIES:STRING=-lm + +//Path to a program. +CMAKE_DLLTOOL:FILEPATH=CMAKE_DLLTOOL-NOTFOUND + +//Linker flags to be used to create executables. +CMAKE_EXE_LINKER_FLAGS:STRING= + +//Flags used by the linker during DEBUG builds. +CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during MINSIZEREL builds. +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during RELEASE builds. +CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during RELWITHDEBINFO builds. +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Enable/Disable output of compile commands during generation. +CMAKE_EXPORT_COMPILE_COMMANDS:BOOL=ON + +//Install path prefix, prepended onto install directories. +CMAKE_INSTALL_PREFIX:PATH=C:/Program Files (x86)/XComponent + +//No help, variable specified on the command line. +CMAKE_LIBRARY_OUTPUT_DIRECTORY:UNINITIALIZED=D:\Program\OpenHarmony\HarmonyOS_Codelab1027git\HarmonyOS_Codelab\Samples\FormGame\entry\build\default\intermediates\cmake\default\obj\arm64-v8a + +//Path to a program. +CMAKE_LINKER:FILEPATH=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/ld.lld.exe + +//No help, variable specified on the command line. +CMAKE_MAKE_PROGRAM:UNINITIALIZED=C:\Users\h30053725\AppData\Local\Huawei\SDK1026\openharmony\10\native\build-tools\cmake\bin\ninja.exe + +//Linker flags to be used to create modules. +CMAKE_MODULE_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of modules during +// DEBUG builds. +CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of modules during +// MINSIZEREL builds. +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of modules during +// RELEASE builds. +CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of modules during +// RELWITHDEBINFO builds. +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +CMAKE_NM:FILEPATH=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/llvm-nm.exe + +//Path to a program. +CMAKE_OBJCOPY:FILEPATH=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/llvm-objcopy.exe + +//Path to a program. +CMAKE_OBJDUMP:FILEPATH=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/llvm-objdump.exe + +//No help, variable specified on the command line. +CMAKE_OHOS_ARCH_ABI:UNINITIALIZED=arm64-v8a + +//Value Computed by CMake +CMAKE_PROJECT_DESCRIPTION:STATIC= + +//Value Computed by CMake +CMAKE_PROJECT_HOMEPAGE_URL:STATIC= + +//Value Computed by CMake +CMAKE_PROJECT_NAME:STATIC=XComponent + +//Ranlib +CMAKE_RANLIB:FILEPATH=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/llvm-ranlib.exe + +//Path to a program. +CMAKE_READELF:FILEPATH=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/llvm-readelf.exe + +//Linker flags to be used to create shared libraries. +CMAKE_SHARED_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of shared libraries +// during DEBUG builds. +CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of shared libraries +// during MINSIZEREL builds. +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELEASE builds. +CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELWITHDEBINFO builds. +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//If set, runtime paths are not added when installing shared libraries, +// but are added when building. +CMAKE_SKIP_INSTALL_RPATH:BOOL=NO + +//If set, runtime paths are not added when using shared libraries. +CMAKE_SKIP_RPATH:BOOL=NO + +//Flags used by the linker during the creation of static libraries +// during all build types. +CMAKE_STATIC_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of static libraries +// during DEBUG builds. +CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of static libraries +// during MINSIZEREL builds. +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of static libraries +// during RELEASE builds. +CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of static libraries +// during RELWITHDEBINFO builds. +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +CMAKE_STRIP:FILEPATH=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/llvm-strip.exe + +//No help, variable specified on the command line. +CMAKE_SYSTEM_NAME:UNINITIALIZED=OHOS + +//The CMake toolchain file +CMAKE_TOOLCHAIN_FILE:FILEPATH=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/hmscore/4.0.0/native/build/cmake/hmos.toolchain.cmake + +//If this value is on, makefiles will be generated without the +// .SILENT directive, and all commands will be echoed to the console +// during the make. This is useful for debugging only. With Visual +// Studio IDE projects all commands are done without /nologo. +CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE + +//No help, variable specified on the command line. +HMOS_SDK_NATIVE:UNINITIALIZED=C:\Users\h30053725\AppData\Local\Huawei\SDK1026\hmscore\4.0.0\native + +//No help, variable specified on the command line. +OHOS_ARCH:UNINITIALIZED=arm64-v8a + +//No help, variable specified on the command line. +OHOS_SDK_NATIVE:UNINITIALIZED=C:\Users\h30053725\AppData\Local\Huawei\SDK1026\openharmony\10\native + +//No help, variable specified on the command line. +OHOS_STL:UNINITIALIZED=c++_static + +//Value Computed by CMake +XComponent_BINARY_DIR:STATIC=D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/arm64-v8a + +//Value Computed by CMake +XComponent_SOURCE_DIR:STATIC=D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/src/main/cpp + +//Dependencies for the target +infoutil_LIB_DEPENDS:STATIC=general;libace_napi.z.so;general;libhilog_ndk.z.so; + + +######################## +# INTERNAL cache entries +######################## + +//ADVANCED property for variable: CMAKE_ADDR2LINE +CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_AR +CMAKE_AR-ADVANCED:INTERNAL=1 +//This is the directory where this CMakeCache.txt was created +CMAKE_CACHEFILE_DIR:INTERNAL=d:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/arm64-v8a +//Major version of cmake used to create the current loaded cache +CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3 +//Minor version of cmake used to create the current loaded cache +CMAKE_CACHE_MINOR_VERSION:INTERNAL=16 +//Patch version of cmake used to create the current loaded cache +CMAKE_CACHE_PATCH_VERSION:INTERNAL=5 +//Path to CMake executable. +CMAKE_COMMAND:INTERNAL=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/bin/cmake.exe +//Path to cpack program executable. +CMAKE_CPACK_COMMAND:INTERNAL=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/bin/cpack.exe +//Path to ctest program executable. +CMAKE_CTEST_COMMAND:INTERNAL=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/bin/ctest.exe +//ADVANCED property for variable: CMAKE_CXX_COMPILER_AR +CMAKE_CXX_COMPILER_AR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_COMPILER_RANLIB +CMAKE_CXX_COMPILER_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS +CMAKE_CXX_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_DEBUG +CMAKE_CXX_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_MINSIZEREL +CMAKE_CXX_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELEASE +CMAKE_CXX_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELWITHDEBINFO +CMAKE_CXX_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_STANDARD_LIBRARIES +CMAKE_CXX_STANDARD_LIBRARIES-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_COMPILER_AR +CMAKE_C_COMPILER_AR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_COMPILER_RANLIB +CMAKE_C_COMPILER_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS +CMAKE_C_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG +CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL +CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE +CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO +CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_STANDARD_LIBRARIES +CMAKE_C_STANDARD_LIBRARIES-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_DLLTOOL +CMAKE_DLLTOOL-ADVANCED:INTERNAL=1 +//Executable file format +CMAKE_EXECUTABLE_FORMAT:INTERNAL=Unknown +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS +CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG +CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE +CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXPORT_COMPILE_COMMANDS +CMAKE_EXPORT_COMPILE_COMMANDS-ADVANCED:INTERNAL=1 +//Name of external makefile project generator. +CMAKE_EXTRA_GENERATOR:INTERNAL= +//Name of generator. +CMAKE_GENERATOR:INTERNAL=Ninja +//Generator instance identifier. +CMAKE_GENERATOR_INSTANCE:INTERNAL= +//Name of generator platform. +CMAKE_GENERATOR_PLATFORM:INTERNAL= +//Name of generator toolset. +CMAKE_GENERATOR_TOOLSET:INTERNAL= +//Source directory with the top level CMakeLists.txt file for this +// project +CMAKE_HOME_DIRECTORY:INTERNAL=D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/src/main/cpp +//Install .so files without execute permission. +CMAKE_INSTALL_SO_NO_EXE:INTERNAL=0 +//ADVANCED property for variable: CMAKE_LINKER +CMAKE_LINKER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS +CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG +CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE +CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_NM +CMAKE_NM-ADVANCED:INTERNAL=1 +//number of local generators +CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJCOPY +CMAKE_OBJCOPY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJDUMP +CMAKE_OBJDUMP-ADVANCED:INTERNAL=1 +//Platform information initialized +CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_RANLIB +CMAKE_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_READELF +CMAKE_READELF-ADVANCED:INTERNAL=1 +//Path to CMake installation. +CMAKE_ROOT:INTERNAL=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS +CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG +CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE +CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH +CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_RPATH +CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS +CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG +CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE +CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STRIP +CMAKE_STRIP-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE +CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1 + diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/3.16.5/CMakeCCompiler.cmake b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/3.16.5/CMakeCCompiler.cmake new file mode 100644 index 0000000000000000000000000000000000000000..8745b3aafe0fbea40ee9ba01bb7706a78e3fbda9 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/3.16.5/CMakeCCompiler.cmake @@ -0,0 +1,76 @@ +set(CMAKE_C_COMPILER "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang.exe") +set(CMAKE_C_COMPILER_ARG1 "") +set(CMAKE_C_COMPILER_ID "Clang") +set(CMAKE_C_COMPILER_VERSION "15.0.4") +set(CMAKE_C_COMPILER_VERSION_INTERNAL "") +set(CMAKE_C_COMPILER_WRAPPER "") +set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "11") +set(CMAKE_C_COMPILE_FEATURES "c_std_90;c_function_prototypes;c_std_99;c_restrict;c_variadic_macros;c_std_11;c_static_assert") +set(CMAKE_C90_COMPILE_FEATURES "c_std_90;c_function_prototypes") +set(CMAKE_C99_COMPILE_FEATURES "c_std_99;c_restrict;c_variadic_macros") +set(CMAKE_C11_COMPILE_FEATURES "c_std_11;c_static_assert") + +set(CMAKE_C_PLATFORM_ID "MinGW") +set(CMAKE_C_SIMULATE_ID "") +set(CMAKE_C_COMPILER_FRONTEND_VARIANT "GNU") +set(CMAKE_C_SIMULATE_VERSION "") + + + +set(CMAKE_AR "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/llvm-ar.exe") +set(CMAKE_C_COMPILER_AR "CMAKE_C_COMPILER_AR-NOTFOUND") +set(CMAKE_RANLIB "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/llvm-ranlib.exe") +set(CMAKE_C_COMPILER_RANLIB "CMAKE_C_COMPILER_RANLIB-NOTFOUND") +set(CMAKE_LINKER "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/ld.lld.exe") +set(CMAKE_MT "") +set(CMAKE_COMPILER_IS_GNUCC ) +set(CMAKE_C_COMPILER_LOADED 1) +set(CMAKE_C_COMPILER_WORKS TRUE) +set(CMAKE_C_ABI_COMPILED TRUE) +set(CMAKE_COMPILER_IS_MINGW 1) +set(CMAKE_COMPILER_IS_CYGWIN ) +if(CMAKE_COMPILER_IS_CYGWIN) + set(CYGWIN 1) + set(UNIX 1) +endif() + +set(CMAKE_C_COMPILER_ENV_VAR "CC") + +if(CMAKE_COMPILER_IS_MINGW) + set(MINGW 1) +endif() +set(CMAKE_C_COMPILER_ID_RUN 1) +set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m) +set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC) +set(CMAKE_C_LINKER_PREFERENCE 10) + +# Save compiler ABI information. +set(CMAKE_C_SIZEOF_DATA_PTR "8") +set(CMAKE_C_COMPILER_ABI "ELF") +set(CMAKE_C_LIBRARY_ARCHITECTURE "") + +if(CMAKE_C_SIZEOF_DATA_PTR) + set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}") +endif() + +if(CMAKE_C_COMPILER_ABI) + set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}") +endif() + +if(CMAKE_C_LIBRARY_ARCHITECTURE) + set(CMAKE_LIBRARY_ARCHITECTURE "") +endif() + +set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "") +if(CMAKE_C_CL_SHOWINCLUDES_PREFIX) + set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}") +endif() + + + + + +set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/aarch64-linux-ohos;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include") +set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "unwind;-l:libunwind.a;c;-l:libunwind.a") +set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/aarch64-linux-ohos;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos") +set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "") diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/3.16.5/CMakeCXXCompiler.cmake b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/3.16.5/CMakeCXXCompiler.cmake new file mode 100644 index 0000000000000000000000000000000000000000..211ad016a364112544013cd5b1844e9670146678 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/3.16.5/CMakeCXXCompiler.cmake @@ -0,0 +1,88 @@ +set(CMAKE_CXX_COMPILER "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang++.exe") +set(CMAKE_CXX_COMPILER_ARG1 "") +set(CMAKE_CXX_COMPILER_ID "Clang") +set(CMAKE_CXX_COMPILER_VERSION "15.0.4") +set(CMAKE_CXX_COMPILER_VERSION_INTERNAL "") +set(CMAKE_CXX_COMPILER_WRAPPER "") +set(CMAKE_CXX_STANDARD_COMPUTED_DEFAULT "14") +set(CMAKE_CXX_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters;cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates;cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates;cxx_std_17;cxx_std_20") +set(CMAKE_CXX98_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters") +set(CMAKE_CXX11_COMPILE_FEATURES "cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates") +set(CMAKE_CXX14_COMPILE_FEATURES "cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates") +set(CMAKE_CXX17_COMPILE_FEATURES "cxx_std_17") +set(CMAKE_CXX20_COMPILE_FEATURES "cxx_std_20") + +set(CMAKE_CXX_PLATFORM_ID "MinGW") +set(CMAKE_CXX_SIMULATE_ID "") +set(CMAKE_CXX_COMPILER_FRONTEND_VARIANT "GNU") +set(CMAKE_CXX_SIMULATE_VERSION "") + + + +set(CMAKE_AR "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/llvm-ar.exe") +set(CMAKE_CXX_COMPILER_AR "CMAKE_CXX_COMPILER_AR-NOTFOUND") +set(CMAKE_RANLIB "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/llvm-ranlib.exe") +set(CMAKE_CXX_COMPILER_RANLIB "CMAKE_CXX_COMPILER_RANLIB-NOTFOUND") +set(CMAKE_LINKER "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/ld.lld.exe") +set(CMAKE_MT "") +set(CMAKE_COMPILER_IS_GNUCXX ) +set(CMAKE_CXX_COMPILER_LOADED 1) +set(CMAKE_CXX_COMPILER_WORKS TRUE) +set(CMAKE_CXX_ABI_COMPILED TRUE) +set(CMAKE_COMPILER_IS_MINGW 1) +set(CMAKE_COMPILER_IS_CYGWIN ) +if(CMAKE_COMPILER_IS_CYGWIN) + set(CYGWIN 1) + set(UNIX 1) +endif() + +set(CMAKE_CXX_COMPILER_ENV_VAR "CXX") + +if(CMAKE_COMPILER_IS_MINGW) + set(MINGW 1) +endif() +set(CMAKE_CXX_COMPILER_ID_RUN 1) +set(CMAKE_CXX_SOURCE_FILE_EXTENSIONS C;M;c++;cc;cpp;cxx;m;mm;CPP) +set(CMAKE_CXX_IGNORE_EXTENSIONS inl;h;hpp;HPP;H;o;O;obj;OBJ;def;DEF;rc;RC) + +foreach (lang C OBJC OBJCXX) + if (CMAKE_${lang}_COMPILER_ID_RUN) + foreach(extension IN LISTS CMAKE_${lang}_SOURCE_FILE_EXTENSIONS) + list(REMOVE_ITEM CMAKE_CXX_SOURCE_FILE_EXTENSIONS ${extension}) + endforeach() + endif() +endforeach() + +set(CMAKE_CXX_LINKER_PREFERENCE 30) +set(CMAKE_CXX_LINKER_PREFERENCE_PROPAGATES 1) + +# Save compiler ABI information. +set(CMAKE_CXX_SIZEOF_DATA_PTR "8") +set(CMAKE_CXX_COMPILER_ABI "ELF") +set(CMAKE_CXX_LIBRARY_ARCHITECTURE "") + +if(CMAKE_CXX_SIZEOF_DATA_PTR) + set(CMAKE_SIZEOF_VOID_P "${CMAKE_CXX_SIZEOF_DATA_PTR}") +endif() + +if(CMAKE_CXX_COMPILER_ABI) + set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_CXX_COMPILER_ABI}") +endif() + +if(CMAKE_CXX_LIBRARY_ARCHITECTURE) + set(CMAKE_LIBRARY_ARCHITECTURE "") +endif() + +set(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX "") +if(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX) + set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_CXX_CL_SHOWINCLUDES_PREFIX}") +endif() + + + + + +set(CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/include/libcxx-ohos/include/c++/v1;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/aarch64-linux-ohos;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include") +set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "unwind;c++;c++abi;unwind;m;-l:libunwind.a;c;-l:libunwind.a") +set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/aarch64-linux-ohos;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos") +set(CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "") diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/3.16.5/CMakeDetermineCompilerABI_C.bin b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/3.16.5/CMakeDetermineCompilerABI_C.bin new file mode 100644 index 0000000000000000000000000000000000000000..7f9e4a425915ab27b58df57ded70ff165cc5172b Binary files /dev/null and b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/3.16.5/CMakeDetermineCompilerABI_C.bin differ diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/3.16.5/CMakeDetermineCompilerABI_CXX.bin b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/3.16.5/CMakeDetermineCompilerABI_CXX.bin new file mode 100644 index 0000000000000000000000000000000000000000..578ab79cb5059d17450c17a293696123e07f60b7 Binary files /dev/null and b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/3.16.5/CMakeDetermineCompilerABI_CXX.bin differ diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/3.16.5/CMakeSystem.cmake b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/3.16.5/CMakeSystem.cmake new file mode 100644 index 0000000000000000000000000000000000000000..e062b9225a36de2ad1368d69390f0f801c247b8f --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/3.16.5/CMakeSystem.cmake @@ -0,0 +1,15 @@ +set(CMAKE_HOST_SYSTEM "Windows-10.0.22621") +set(CMAKE_HOST_SYSTEM_NAME "Windows") +set(CMAKE_HOST_SYSTEM_VERSION "10.0.22621") +set(CMAKE_HOST_SYSTEM_PROCESSOR "AMD64") + +include("C:/Users/h30053725/AppData/Local/Huawei/SDK1026/hmscore/4.0.0/native/build/cmake/hmos.toolchain.cmake") + +set(CMAKE_SYSTEM "OHOS-1") +set(CMAKE_SYSTEM_NAME "OHOS") +set(CMAKE_SYSTEM_VERSION "1") +set(CMAKE_SYSTEM_PROCESSOR "aarch64") + +set(CMAKE_CROSSCOMPILING "TRUE") + +set(CMAKE_SYSTEM_LOADED 1) diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/3.16.5/CompilerIdC/CMakeCCompilerId.c b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/3.16.5/CompilerIdC/CMakeCCompilerId.c new file mode 100644 index 0000000000000000000000000000000000000000..d884b50908c9852aad6d3b60781f4e529edc4d50 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/3.16.5/CompilerIdC/CMakeCCompilerId.c @@ -0,0 +1,671 @@ +#ifdef __cplusplus +# error "A C++ compiler has been selected for C." +#endif + +#if defined(__18CXX) +# define ID_VOID_MAIN +#endif +#if defined(__CLASSIC_C__) +/* cv-qualifiers did not exist in K&R C */ +# define const +# define volatile +#endif + + +/* Version number components: V=Version, R=Revision, P=Patch + Version date components: YYYY=Year, MM=Month, DD=Day */ + +#if defined(__INTEL_COMPILER) || defined(__ICC) +# define COMPILER_ID "Intel" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# if defined(__GNUC__) +# define SIMULATE_ID "GNU" +# endif + /* __INTEL_COMPILER = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) +# if defined(__INTEL_COMPILER_UPDATE) +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE) +# else +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) +# endif +# if defined(__INTEL_COMPILER_BUILD_DATE) + /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ +# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) +# endif +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(__PATHCC__) +# define COMPILER_ID "PathScale" +# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) +# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) +# if defined(__PATHCC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) +# endif + +#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) +# define COMPILER_ID "Embarcadero" +# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) +# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) +# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) + +#elif defined(__BORLANDC__) +# define COMPILER_ID "Borland" + /* __BORLANDC__ = 0xVRR */ +# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) +# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) + +#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 +# define COMPILER_ID "Watcom" + /* __WATCOMC__ = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__WATCOMC__) +# define COMPILER_ID "OpenWatcom" + /* __WATCOMC__ = VVRP + 1100 */ +# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__SUNPRO_C) +# define COMPILER_ID "SunPro" +# if __SUNPRO_C >= 0x5100 + /* __SUNPRO_C = 0xVRRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>12) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) +# else + /* __SUNPRO_CC = 0xVRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>8) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) +# endif + +#elif defined(__HP_cc) +# define COMPILER_ID "HP" + /* __HP_cc = VVRRPP */ +# define COMPILER_VERSION_MAJOR DEC(__HP_cc/10000) +# define COMPILER_VERSION_MINOR DEC(__HP_cc/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__HP_cc % 100) + +#elif defined(__DECC) +# define COMPILER_ID "Compaq" + /* __DECC_VER = VVRRTPPPP */ +# define COMPILER_VERSION_MAJOR DEC(__DECC_VER/10000000) +# define COMPILER_VERSION_MINOR DEC(__DECC_VER/100000 % 100) +# define COMPILER_VERSION_PATCH DEC(__DECC_VER % 10000) + +#elif defined(__IBMC__) && defined(__COMPILER_VER__) +# define COMPILER_ID "zOS" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__ibmxl__) && defined(__clang__) +# define COMPILER_ID "XLClang" +# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) +# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) +# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) + + +#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ >= 800 +# define COMPILER_ID "XL" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ < 800 +# define COMPILER_ID "VisualAge" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__PGI) +# define COMPILER_ID "PGI" +# define COMPILER_VERSION_MAJOR DEC(__PGIC__) +# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) +# if defined(__PGIC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) +# endif + +#elif defined(_CRAYC) +# define COMPILER_ID "Cray" +# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) +# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) + +#elif defined(__TI_COMPILER_VERSION__) +# define COMPILER_ID "TI" + /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ +# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) +# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) +# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) + +#elif defined(__FUJITSU) || defined(__FCC_VERSION) || defined(__fcc_version) +# define COMPILER_ID "Fujitsu" + +#elif defined(__ghs__) +# define COMPILER_ID "GHS" +/* __GHS_VERSION_NUMBER = VVVVRP */ +# ifdef __GHS_VERSION_NUMBER +# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100) +# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10) +# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10) +# endif + +#elif defined(__TINYC__) +# define COMPILER_ID "TinyCC" + +#elif defined(__BCC__) +# define COMPILER_ID "Bruce" + +#elif defined(__SCO_VERSION__) +# define COMPILER_ID "SCO" + +#elif defined(__ARMCC_VERSION) && !defined(__clang__) +# define COMPILER_ID "ARMCC" +#if __ARMCC_VERSION >= 1000000 + /* __ARMCC_VERSION = VRRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#else + /* __ARMCC_VERSION = VRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#endif + + +#elif defined(__clang__) && defined(__apple_build_version__) +# define COMPILER_ID "AppleClang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) + +#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION) +# define COMPILER_ID "ARMClang" + # define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION % 10000) +# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION) + +#elif defined(__clang__) +# define COMPILER_ID "Clang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif + +#elif defined(__GNUC__) +# define COMPILER_ID "GNU" +# define COMPILER_VERSION_MAJOR DEC(__GNUC__) +# if defined(__GNUC_MINOR__) +# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(_MSC_VER) +# define COMPILER_ID "MSVC" + /* _MSC_VER = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) +# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) +# if defined(_MSC_FULL_VER) +# if _MSC_VER >= 1400 + /* _MSC_FULL_VER = VVRRPPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) +# else + /* _MSC_FULL_VER = VVRRPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) +# endif +# endif +# if defined(_MSC_BUILD) +# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) +# endif + +#elif defined(__VISUALDSPVERSION__) || defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__) +# define COMPILER_ID "ADSP" +#if defined(__VISUALDSPVERSION__) + /* __VISUALDSPVERSION__ = 0xVVRRPP00 */ +# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24) +# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8 & 0xFF) +#endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# define COMPILER_ID "IAR" +# if defined(__VER__) && defined(__ICCARM__) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000) +# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000) +# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__)) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100) +# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100)) +# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# endif + +#elif defined(__SDCC_VERSION_MAJOR) || defined(SDCC) +# define COMPILER_ID "SDCC" +# if defined(__SDCC_VERSION_MAJOR) +# define COMPILER_VERSION_MAJOR DEC(__SDCC_VERSION_MAJOR) +# define COMPILER_VERSION_MINOR DEC(__SDCC_VERSION_MINOR) +# define COMPILER_VERSION_PATCH DEC(__SDCC_VERSION_PATCH) +# else + /* SDCC = VRP */ +# define COMPILER_VERSION_MAJOR DEC(SDCC/100) +# define COMPILER_VERSION_MINOR DEC(SDCC/10 % 10) +# define COMPILER_VERSION_PATCH DEC(SDCC % 10) +# endif + + +/* These compilers are either not known or too old to define an + identification macro. Try to identify the platform and guess that + it is the native compiler. */ +#elif defined(__hpux) || defined(__hpua) +# define COMPILER_ID "HP" + +#else /* unknown compiler */ +# define COMPILER_ID "" +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; +#ifdef SIMULATE_ID +char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; +#endif + +#ifdef __QNXNTO__ +char const* qnxnto = "INFO" ":" "qnxnto[]"; +#endif + +#if defined(__CRAYXE) || defined(__CRAYXC) +char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; +#endif + +#define STRINGIFY_HELPER(X) #X +#define STRINGIFY(X) STRINGIFY_HELPER(X) + +/* Identify known platforms by name. */ +#if defined(__linux) || defined(__linux__) || defined(linux) +# define PLATFORM_ID "Linux" + +#elif defined(__CYGWIN__) +# define PLATFORM_ID "Cygwin" + +#elif defined(__MINGW32__) +# define PLATFORM_ID "MinGW" + +#elif defined(__APPLE__) +# define PLATFORM_ID "Darwin" + +#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) +# define PLATFORM_ID "Windows" + +#elif defined(__FreeBSD__) || defined(__FreeBSD) +# define PLATFORM_ID "FreeBSD" + +#elif defined(__NetBSD__) || defined(__NetBSD) +# define PLATFORM_ID "NetBSD" + +#elif defined(__OpenBSD__) || defined(__OPENBSD) +# define PLATFORM_ID "OpenBSD" + +#elif defined(__sun) || defined(sun) +# define PLATFORM_ID "SunOS" + +#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) +# define PLATFORM_ID "AIX" + +#elif defined(__hpux) || defined(__hpux__) +# define PLATFORM_ID "HP-UX" + +#elif defined(__HAIKU__) +# define PLATFORM_ID "Haiku" + +#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) +# define PLATFORM_ID "BeOS" + +#elif defined(__QNX__) || defined(__QNXNTO__) +# define PLATFORM_ID "QNX" + +#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) +# define PLATFORM_ID "Tru64" + +#elif defined(__riscos) || defined(__riscos__) +# define PLATFORM_ID "RISCos" + +#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) +# define PLATFORM_ID "SINIX" + +#elif defined(__UNIX_SV__) +# define PLATFORM_ID "UNIX_SV" + +#elif defined(__bsdos__) +# define PLATFORM_ID "BSDOS" + +#elif defined(_MPRAS) || defined(MPRAS) +# define PLATFORM_ID "MP-RAS" + +#elif defined(__osf) || defined(__osf__) +# define PLATFORM_ID "OSF1" + +#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) +# define PLATFORM_ID "SCO_SV" + +#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) +# define PLATFORM_ID "ULTRIX" + +#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) +# define PLATFORM_ID "Xenix" + +#elif defined(__WATCOMC__) +# if defined(__LINUX__) +# define PLATFORM_ID "Linux" + +# elif defined(__DOS__) +# define PLATFORM_ID "DOS" + +# elif defined(__OS2__) +# define PLATFORM_ID "OS2" + +# elif defined(__WINDOWS__) +# define PLATFORM_ID "Windows3x" + +# else /* unknown platform */ +# define PLATFORM_ID +# endif + +#elif defined(__INTEGRITY) +# if defined(INT_178B) +# define PLATFORM_ID "Integrity178" + +# else /* regular Integrity */ +# define PLATFORM_ID "Integrity" +# endif + +#else /* unknown platform */ +# define PLATFORM_ID + +#endif + +/* For windows compilers MSVC and Intel we can determine + the architecture of the compiler being used. This is because + the compilers do not have flags that can change the architecture, + but rather depend on which compiler is being used +*/ +#if defined(_WIN32) && defined(_MSC_VER) +# if defined(_M_IA64) +# define ARCHITECTURE_ID "IA64" + +# elif defined(_M_X64) || defined(_M_AMD64) +# define ARCHITECTURE_ID "x64" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# elif defined(_M_ARM64) +# define ARCHITECTURE_ID "ARM64" + +# elif defined(_M_ARM) +# if _M_ARM == 4 +# define ARCHITECTURE_ID "ARMV4I" +# elif _M_ARM == 5 +# define ARCHITECTURE_ID "ARMV5I" +# else +# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) +# endif + +# elif defined(_M_MIPS) +# define ARCHITECTURE_ID "MIPS" + +# elif defined(_M_SH) +# define ARCHITECTURE_ID "SHx" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__WATCOMC__) +# if defined(_M_I86) +# define ARCHITECTURE_ID "I86" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# if defined(__ICCARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__ICCRX__) +# define ARCHITECTURE_ID "RX" + +# elif defined(__ICCRH850__) +# define ARCHITECTURE_ID "RH850" + +# elif defined(__ICCRL78__) +# define ARCHITECTURE_ID "RL78" + +# elif defined(__ICCRISCV__) +# define ARCHITECTURE_ID "RISCV" + +# elif defined(__ICCAVR__) +# define ARCHITECTURE_ID "AVR" + +# elif defined(__ICC430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__ICCV850__) +# define ARCHITECTURE_ID "V850" + +# elif defined(__ICC8051__) +# define ARCHITECTURE_ID "8051" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__ghs__) +# if defined(__PPC64__) +# define ARCHITECTURE_ID "PPC64" + +# elif defined(__ppc__) +# define ARCHITECTURE_ID "PPC" + +# elif defined(__ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__x86_64__) +# define ARCHITECTURE_ID "x64" + +# elif defined(__i386__) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif +#else +# define ARCHITECTURE_ID +#endif + +/* Convert integer to decimal digit literals. */ +#define DEC(n) \ + ('0' + (((n) / 10000000)%10)), \ + ('0' + (((n) / 1000000)%10)), \ + ('0' + (((n) / 100000)%10)), \ + ('0' + (((n) / 10000)%10)), \ + ('0' + (((n) / 1000)%10)), \ + ('0' + (((n) / 100)%10)), \ + ('0' + (((n) / 10)%10)), \ + ('0' + ((n) % 10)) + +/* Convert integer to hex digit literals. */ +#define HEX(n) \ + ('0' + ((n)>>28 & 0xF)), \ + ('0' + ((n)>>24 & 0xF)), \ + ('0' + ((n)>>20 & 0xF)), \ + ('0' + ((n)>>16 & 0xF)), \ + ('0' + ((n)>>12 & 0xF)), \ + ('0' + ((n)>>8 & 0xF)), \ + ('0' + ((n)>>4 & 0xF)), \ + ('0' + ((n) & 0xF)) + +/* Construct a string literal encoding the version number components. */ +#ifdef COMPILER_VERSION_MAJOR +char const info_version[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', + COMPILER_VERSION_MAJOR, +# ifdef COMPILER_VERSION_MINOR + '.', COMPILER_VERSION_MINOR, +# ifdef COMPILER_VERSION_PATCH + '.', COMPILER_VERSION_PATCH, +# ifdef COMPILER_VERSION_TWEAK + '.', COMPILER_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct a string literal encoding the internal version number. */ +#ifdef COMPILER_VERSION_INTERNAL +char const info_version_internal[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_', + 'i','n','t','e','r','n','a','l','[', + COMPILER_VERSION_INTERNAL,']','\0'}; +#endif + +/* Construct a string literal encoding the version number components. */ +#ifdef SIMULATE_VERSION_MAJOR +char const info_simulate_version[] = { + 'I', 'N', 'F', 'O', ':', + 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', + SIMULATE_VERSION_MAJOR, +# ifdef SIMULATE_VERSION_MINOR + '.', SIMULATE_VERSION_MINOR, +# ifdef SIMULATE_VERSION_PATCH + '.', SIMULATE_VERSION_PATCH, +# ifdef SIMULATE_VERSION_TWEAK + '.', SIMULATE_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; +char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; + + + + +#if !defined(__STDC__) +# if (defined(_MSC_VER) && !defined(__clang__)) \ + || (defined(__ibmxl__) || defined(__IBMC__)) +# define C_DIALECT "90" +# else +# define C_DIALECT +# endif +#elif __STDC_VERSION__ >= 201000L +# define C_DIALECT "11" +#elif __STDC_VERSION__ >= 199901L +# define C_DIALECT "99" +#else +# define C_DIALECT "90" +#endif +const char* info_language_dialect_default = + "INFO" ":" "dialect_default[" C_DIALECT "]"; + +/*--------------------------------------------------------------------------*/ + +#ifdef ID_VOID_MAIN +void main() {} +#else +# if defined(__CLASSIC_C__) +int main(argc, argv) int argc; char *argv[]; +# else +int main(int argc, char* argv[]) +# endif +{ + int require = 0; + require += info_compiler[argc]; + require += info_platform[argc]; + require += info_arch[argc]; +#ifdef COMPILER_VERSION_MAJOR + require += info_version[argc]; +#endif +#ifdef COMPILER_VERSION_INTERNAL + require += info_version_internal[argc]; +#endif +#ifdef SIMULATE_ID + require += info_simulate[argc]; +#endif +#ifdef SIMULATE_VERSION_MAJOR + require += info_simulate_version[argc]; +#endif +#if defined(__CRAYXE) || defined(__CRAYXC) + require += info_cray[argc]; +#endif + require += info_language_dialect_default[argc]; + (void)argv; + return require; +} +#endif diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/3.16.5/CompilerIdC/CMakeCCompilerId.o b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/3.16.5/CompilerIdC/CMakeCCompilerId.o new file mode 100644 index 0000000000000000000000000000000000000000..2544984d9abedbf90b24bbdf9e0fccfacd3d7512 Binary files /dev/null and b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/3.16.5/CompilerIdC/CMakeCCompilerId.o differ diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/3.16.5/CompilerIdCXX/CMakeCXXCompilerId.cpp b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/3.16.5/CompilerIdCXX/CMakeCXXCompilerId.cpp new file mode 100644 index 0000000000000000000000000000000000000000..69cfdba6bc7bccb09bf234388908de035caa0969 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/3.16.5/CompilerIdCXX/CMakeCXXCompilerId.cpp @@ -0,0 +1,660 @@ +/* This source file must have a .cpp extension so that all C++ compilers + recognize the extension without flags. Borland does not know .cxx for + example. */ +#ifndef __cplusplus +# error "A C compiler has been selected for C++." +#endif + + +/* Version number components: V=Version, R=Revision, P=Patch + Version date components: YYYY=Year, MM=Month, DD=Day */ + +#if defined(__COMO__) +# define COMPILER_ID "Comeau" + /* __COMO_VERSION__ = VRR */ +# define COMPILER_VERSION_MAJOR DEC(__COMO_VERSION__ / 100) +# define COMPILER_VERSION_MINOR DEC(__COMO_VERSION__ % 100) + +#elif defined(__INTEL_COMPILER) || defined(__ICC) +# define COMPILER_ID "Intel" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# if defined(__GNUC__) +# define SIMULATE_ID "GNU" +# endif + /* __INTEL_COMPILER = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) +# if defined(__INTEL_COMPILER_UPDATE) +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE) +# else +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) +# endif +# if defined(__INTEL_COMPILER_BUILD_DATE) + /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ +# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) +# endif +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(__PATHCC__) +# define COMPILER_ID "PathScale" +# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) +# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) +# if defined(__PATHCC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) +# endif + +#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) +# define COMPILER_ID "Embarcadero" +# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) +# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) +# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) + +#elif defined(__BORLANDC__) +# define COMPILER_ID "Borland" + /* __BORLANDC__ = 0xVRR */ +# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) +# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) + +#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 +# define COMPILER_ID "Watcom" + /* __WATCOMC__ = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__WATCOMC__) +# define COMPILER_ID "OpenWatcom" + /* __WATCOMC__ = VVRP + 1100 */ +# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__SUNPRO_CC) +# define COMPILER_ID "SunPro" +# if __SUNPRO_CC >= 0x5100 + /* __SUNPRO_CC = 0xVRRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>12) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) +# else + /* __SUNPRO_CC = 0xVRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>8) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) +# endif + +#elif defined(__HP_aCC) +# define COMPILER_ID "HP" + /* __HP_aCC = VVRRPP */ +# define COMPILER_VERSION_MAJOR DEC(__HP_aCC/10000) +# define COMPILER_VERSION_MINOR DEC(__HP_aCC/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__HP_aCC % 100) + +#elif defined(__DECCXX) +# define COMPILER_ID "Compaq" + /* __DECCXX_VER = VVRRTPPPP */ +# define COMPILER_VERSION_MAJOR DEC(__DECCXX_VER/10000000) +# define COMPILER_VERSION_MINOR DEC(__DECCXX_VER/100000 % 100) +# define COMPILER_VERSION_PATCH DEC(__DECCXX_VER % 10000) + +#elif defined(__IBMCPP__) && defined(__COMPILER_VER__) +# define COMPILER_ID "zOS" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__ibmxl__) && defined(__clang__) +# define COMPILER_ID "XLClang" +# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) +# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) +# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) + + +#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ >= 800 +# define COMPILER_ID "XL" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ < 800 +# define COMPILER_ID "VisualAge" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__PGI) +# define COMPILER_ID "PGI" +# define COMPILER_VERSION_MAJOR DEC(__PGIC__) +# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) +# if defined(__PGIC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) +# endif + +#elif defined(_CRAYC) +# define COMPILER_ID "Cray" +# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) +# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) + +#elif defined(__TI_COMPILER_VERSION__) +# define COMPILER_ID "TI" + /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ +# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) +# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) +# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) + +#elif defined(__FUJITSU) || defined(__FCC_VERSION) || defined(__fcc_version) +# define COMPILER_ID "Fujitsu" + +#elif defined(__ghs__) +# define COMPILER_ID "GHS" +/* __GHS_VERSION_NUMBER = VVVVRP */ +# ifdef __GHS_VERSION_NUMBER +# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100) +# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10) +# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10) +# endif + +#elif defined(__SCO_VERSION__) +# define COMPILER_ID "SCO" + +#elif defined(__ARMCC_VERSION) && !defined(__clang__) +# define COMPILER_ID "ARMCC" +#if __ARMCC_VERSION >= 1000000 + /* __ARMCC_VERSION = VRRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#else + /* __ARMCC_VERSION = VRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#endif + + +#elif defined(__clang__) && defined(__apple_build_version__) +# define COMPILER_ID "AppleClang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) + +#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION) +# define COMPILER_ID "ARMClang" + # define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION % 10000) +# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION) + +#elif defined(__clang__) +# define COMPILER_ID "Clang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif + +#elif defined(__GNUC__) || defined(__GNUG__) +# define COMPILER_ID "GNU" +# if defined(__GNUC__) +# define COMPILER_VERSION_MAJOR DEC(__GNUC__) +# else +# define COMPILER_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(_MSC_VER) +# define COMPILER_ID "MSVC" + /* _MSC_VER = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) +# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) +# if defined(_MSC_FULL_VER) +# if _MSC_VER >= 1400 + /* _MSC_FULL_VER = VVRRPPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) +# else + /* _MSC_FULL_VER = VVRRPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) +# endif +# endif +# if defined(_MSC_BUILD) +# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) +# endif + +#elif defined(__VISUALDSPVERSION__) || defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__) +# define COMPILER_ID "ADSP" +#if defined(__VISUALDSPVERSION__) + /* __VISUALDSPVERSION__ = 0xVVRRPP00 */ +# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24) +# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8 & 0xFF) +#endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# define COMPILER_ID "IAR" +# if defined(__VER__) && defined(__ICCARM__) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000) +# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000) +# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__)) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100) +# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100)) +# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# endif + + +/* These compilers are either not known or too old to define an + identification macro. Try to identify the platform and guess that + it is the native compiler. */ +#elif defined(__hpux) || defined(__hpua) +# define COMPILER_ID "HP" + +#else /* unknown compiler */ +# define COMPILER_ID "" +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; +#ifdef SIMULATE_ID +char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; +#endif + +#ifdef __QNXNTO__ +char const* qnxnto = "INFO" ":" "qnxnto[]"; +#endif + +#if defined(__CRAYXE) || defined(__CRAYXC) +char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; +#endif + +#define STRINGIFY_HELPER(X) #X +#define STRINGIFY(X) STRINGIFY_HELPER(X) + +/* Identify known platforms by name. */ +#if defined(__linux) || defined(__linux__) || defined(linux) +# define PLATFORM_ID "Linux" + +#elif defined(__CYGWIN__) +# define PLATFORM_ID "Cygwin" + +#elif defined(__MINGW32__) +# define PLATFORM_ID "MinGW" + +#elif defined(__APPLE__) +# define PLATFORM_ID "Darwin" + +#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) +# define PLATFORM_ID "Windows" + +#elif defined(__FreeBSD__) || defined(__FreeBSD) +# define PLATFORM_ID "FreeBSD" + +#elif defined(__NetBSD__) || defined(__NetBSD) +# define PLATFORM_ID "NetBSD" + +#elif defined(__OpenBSD__) || defined(__OPENBSD) +# define PLATFORM_ID "OpenBSD" + +#elif defined(__sun) || defined(sun) +# define PLATFORM_ID "SunOS" + +#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) +# define PLATFORM_ID "AIX" + +#elif defined(__hpux) || defined(__hpux__) +# define PLATFORM_ID "HP-UX" + +#elif defined(__HAIKU__) +# define PLATFORM_ID "Haiku" + +#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) +# define PLATFORM_ID "BeOS" + +#elif defined(__QNX__) || defined(__QNXNTO__) +# define PLATFORM_ID "QNX" + +#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) +# define PLATFORM_ID "Tru64" + +#elif defined(__riscos) || defined(__riscos__) +# define PLATFORM_ID "RISCos" + +#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) +# define PLATFORM_ID "SINIX" + +#elif defined(__UNIX_SV__) +# define PLATFORM_ID "UNIX_SV" + +#elif defined(__bsdos__) +# define PLATFORM_ID "BSDOS" + +#elif defined(_MPRAS) || defined(MPRAS) +# define PLATFORM_ID "MP-RAS" + +#elif defined(__osf) || defined(__osf__) +# define PLATFORM_ID "OSF1" + +#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) +# define PLATFORM_ID "SCO_SV" + +#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) +# define PLATFORM_ID "ULTRIX" + +#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) +# define PLATFORM_ID "Xenix" + +#elif defined(__WATCOMC__) +# if defined(__LINUX__) +# define PLATFORM_ID "Linux" + +# elif defined(__DOS__) +# define PLATFORM_ID "DOS" + +# elif defined(__OS2__) +# define PLATFORM_ID "OS2" + +# elif defined(__WINDOWS__) +# define PLATFORM_ID "Windows3x" + +# else /* unknown platform */ +# define PLATFORM_ID +# endif + +#elif defined(__INTEGRITY) +# if defined(INT_178B) +# define PLATFORM_ID "Integrity178" + +# else /* regular Integrity */ +# define PLATFORM_ID "Integrity" +# endif + +#else /* unknown platform */ +# define PLATFORM_ID + +#endif + +/* For windows compilers MSVC and Intel we can determine + the architecture of the compiler being used. This is because + the compilers do not have flags that can change the architecture, + but rather depend on which compiler is being used +*/ +#if defined(_WIN32) && defined(_MSC_VER) +# if defined(_M_IA64) +# define ARCHITECTURE_ID "IA64" + +# elif defined(_M_X64) || defined(_M_AMD64) +# define ARCHITECTURE_ID "x64" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# elif defined(_M_ARM64) +# define ARCHITECTURE_ID "ARM64" + +# elif defined(_M_ARM) +# if _M_ARM == 4 +# define ARCHITECTURE_ID "ARMV4I" +# elif _M_ARM == 5 +# define ARCHITECTURE_ID "ARMV5I" +# else +# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) +# endif + +# elif defined(_M_MIPS) +# define ARCHITECTURE_ID "MIPS" + +# elif defined(_M_SH) +# define ARCHITECTURE_ID "SHx" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__WATCOMC__) +# if defined(_M_I86) +# define ARCHITECTURE_ID "I86" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# if defined(__ICCARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__ICCRX__) +# define ARCHITECTURE_ID "RX" + +# elif defined(__ICCRH850__) +# define ARCHITECTURE_ID "RH850" + +# elif defined(__ICCRL78__) +# define ARCHITECTURE_ID "RL78" + +# elif defined(__ICCRISCV__) +# define ARCHITECTURE_ID "RISCV" + +# elif defined(__ICCAVR__) +# define ARCHITECTURE_ID "AVR" + +# elif defined(__ICC430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__ICCV850__) +# define ARCHITECTURE_ID "V850" + +# elif defined(__ICC8051__) +# define ARCHITECTURE_ID "8051" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__ghs__) +# if defined(__PPC64__) +# define ARCHITECTURE_ID "PPC64" + +# elif defined(__ppc__) +# define ARCHITECTURE_ID "PPC" + +# elif defined(__ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__x86_64__) +# define ARCHITECTURE_ID "x64" + +# elif defined(__i386__) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif +#else +# define ARCHITECTURE_ID +#endif + +/* Convert integer to decimal digit literals. */ +#define DEC(n) \ + ('0' + (((n) / 10000000)%10)), \ + ('0' + (((n) / 1000000)%10)), \ + ('0' + (((n) / 100000)%10)), \ + ('0' + (((n) / 10000)%10)), \ + ('0' + (((n) / 1000)%10)), \ + ('0' + (((n) / 100)%10)), \ + ('0' + (((n) / 10)%10)), \ + ('0' + ((n) % 10)) + +/* Convert integer to hex digit literals. */ +#define HEX(n) \ + ('0' + ((n)>>28 & 0xF)), \ + ('0' + ((n)>>24 & 0xF)), \ + ('0' + ((n)>>20 & 0xF)), \ + ('0' + ((n)>>16 & 0xF)), \ + ('0' + ((n)>>12 & 0xF)), \ + ('0' + ((n)>>8 & 0xF)), \ + ('0' + ((n)>>4 & 0xF)), \ + ('0' + ((n) & 0xF)) + +/* Construct a string literal encoding the version number components. */ +#ifdef COMPILER_VERSION_MAJOR +char const info_version[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', + COMPILER_VERSION_MAJOR, +# ifdef COMPILER_VERSION_MINOR + '.', COMPILER_VERSION_MINOR, +# ifdef COMPILER_VERSION_PATCH + '.', COMPILER_VERSION_PATCH, +# ifdef COMPILER_VERSION_TWEAK + '.', COMPILER_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct a string literal encoding the internal version number. */ +#ifdef COMPILER_VERSION_INTERNAL +char const info_version_internal[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_', + 'i','n','t','e','r','n','a','l','[', + COMPILER_VERSION_INTERNAL,']','\0'}; +#endif + +/* Construct a string literal encoding the version number components. */ +#ifdef SIMULATE_VERSION_MAJOR +char const info_simulate_version[] = { + 'I', 'N', 'F', 'O', ':', + 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', + SIMULATE_VERSION_MAJOR, +# ifdef SIMULATE_VERSION_MINOR + '.', SIMULATE_VERSION_MINOR, +# ifdef SIMULATE_VERSION_PATCH + '.', SIMULATE_VERSION_PATCH, +# ifdef SIMULATE_VERSION_TWEAK + '.', SIMULATE_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; +char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; + + + + +#if defined(__INTEL_COMPILER) && defined(_MSVC_LANG) && _MSVC_LANG < 201403L +# if defined(__INTEL_CXX11_MODE__) +# if defined(__cpp_aggregate_nsdmi) +# define CXX_STD 201402L +# else +# define CXX_STD 201103L +# endif +# else +# define CXX_STD 199711L +# endif +#elif defined(_MSC_VER) && defined(_MSVC_LANG) +# define CXX_STD _MSVC_LANG +#else +# define CXX_STD __cplusplus +#endif + +const char* info_language_dialect_default = "INFO" ":" "dialect_default[" +#if CXX_STD > 201703L + "20" +#elif CXX_STD >= 201703L + "17" +#elif CXX_STD >= 201402L + "14" +#elif CXX_STD >= 201103L + "11" +#else + "98" +#endif +"]"; + +/*--------------------------------------------------------------------------*/ + +int main(int argc, char* argv[]) +{ + int require = 0; + require += info_compiler[argc]; + require += info_platform[argc]; +#ifdef COMPILER_VERSION_MAJOR + require += info_version[argc]; +#endif +#ifdef COMPILER_VERSION_INTERNAL + require += info_version_internal[argc]; +#endif +#ifdef SIMULATE_ID + require += info_simulate[argc]; +#endif +#ifdef SIMULATE_VERSION_MAJOR + require += info_simulate_version[argc]; +#endif +#if defined(__CRAYXE) || defined(__CRAYXC) + require += info_cray[argc]; +#endif + require += info_language_dialect_default[argc]; + (void)argv; + return require; +} diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/3.16.5/CompilerIdCXX/CMakeCXXCompilerId.o b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/3.16.5/CompilerIdCXX/CMakeCXXCompilerId.o new file mode 100644 index 0000000000000000000000000000000000000000..c6fbabc101d9248ffbdd8618b982fa69fc90f420 Binary files /dev/null and b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/3.16.5/CompilerIdCXX/CMakeCXXCompilerId.o differ diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/CMakeError.log b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/CMakeError.log new file mode 100644 index 0000000000000000000000000000000000000000..e0321d672d4db95e4acf60e0bda635b4ce642c3c --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/CMakeError.log @@ -0,0 +1,66 @@ +Compiling the C compiler identification source file "CMakeCCompilerId.c" failed. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang.exe +Build flags: -fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-fno-addrsig;-Wa,--noexecstack;-Wformat;-Werror=format-security;;-D__MUSL__ +Id flags: + +The output was: +1 +clang: error: unable to execute command: program not executable +clang: error: linker command failed with exit code 1 (use -v to see invocation) + + +Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang++.exe +Build flags: -fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-fno-addrsig;-Wa,--noexecstack;-Wformat;-Werror=format-security;;;-D__MUSL__ +Id flags: + +The output was: +1 +clang++: error: unable to execute command: program not executable +clang++: error: linker command failed with exit code 1 (use -v to see invocation) + + +Compiling the C compiler identification source file "CMakeCCompilerId.c" failed. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang.exe +Build flags: -fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-fno-addrsig;-Wa,--noexecstack;-Wformat;-Werror=format-security;;-D__MUSL__ +Id flags: + +The output was: +1 +clang: error: unable to execute command: program not executable +clang: error: linker command failed with exit code 1 (use -v to see invocation) + + +Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang++.exe +Build flags: -fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-fno-addrsig;-Wa,--noexecstack;-Wformat;-Werror=format-security;;;-D__MUSL__ +Id flags: + +The output was: +1 +clang++: error: unable to execute command: program not executable +clang++: error: linker command failed with exit code 1 (use -v to see invocation) + + +Compiling the C compiler identification source file "CMakeCCompilerId.c" failed. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang.exe +Build flags: -fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-fno-addrsig;-Wa,--noexecstack;-Wformat;-Werror=format-security;;-D__MUSL__ +Id flags: + +The output was: +1 +clang: error: unable to execute command: program not executable +clang: error: linker command failed with exit code 1 (use -v to see invocation) + + +Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang++.exe +Build flags: -fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-fno-addrsig;-Wa,--noexecstack;-Wformat;-Werror=format-security;;;-D__MUSL__ +Id flags: + +The output was: +1 +clang++: error: unable to execute command: program not executable +clang++: error: linker command failed with exit code 1 (use -v to see invocation) + + diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/CMakeOutput.log b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/CMakeOutput.log new file mode 100644 index 0000000000000000000000000000000000000000..37d4850837a7f63e91d092bea1b71056e13efb68 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/CMakeOutput.log @@ -0,0 +1,876 @@ +The target system is: OHOS - 1 - aarch64 +The host system is: Windows - 10.0.22621 - AMD64 +Compiling the C compiler identification source file "CMakeCCompilerId.c" succeeded. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang.exe +Build flags: -fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-fno-addrsig;-Wa,--noexecstack;-Wformat;-Werror=format-security;;-D__MUSL__ +Id flags: -c + +The output was: +0 + + +Compilation of the C compiler identification source "CMakeCCompilerId.c" produced "CMakeCCompilerId.o" + +The C compiler identification is Clang, found in "D:/Program/OpenHarmony/AAS1026/applications_app_samples/code/SuperFeature/Widget/FormGame/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/3.16.5/CompilerIdC/CMakeCCompilerId.o" + +Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" succeeded. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang++.exe +Build flags: -fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-fno-addrsig;-Wa,--noexecstack;-Wformat;-Werror=format-security;;;-D__MUSL__ +Id flags: -c + +The output was: +0 + + +Compilation of the CXX compiler identification source "CMakeCXXCompilerId.cpp" produced "CMakeCXXCompilerId.o" + +The CXX compiler identification is Clang, found in "D:/Program/OpenHarmony/AAS1026/applications_app_samples/code/SuperFeature/Widget/FormGame/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/3.16.5/CompilerIdCXX/CMakeCXXCompilerId.o" + +Determining if the C compiler works passed with the following output: +Change Dir: D:/Program/OpenHarmony/AAS1026/applications_app_samples/code/SuperFeature/Widget/FormGame/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/CMakeTmp + +Run Build Command(s):C:\Users\h30053725\AppData\Local\Huawei\SDK1026\openharmony\10\native\build-tools\cmake\bin\ninja.exe cmTC_e2289 && [1/2] Building C object CMakeFiles/cmTC_e2289.dir/testCCompiler.c.o +clang: warning: argument unused during compilation: '--gcc-toolchain=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm' [-Wunused-command-line-argument] +[2/2] Linking C executable cmTC_e2289 + + + +Detecting C compiler ABI info compiled with the following output: +Change Dir: D:/Program/OpenHarmony/AAS1026/applications_app_samples/code/SuperFeature/Widget/FormGame/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/CMakeTmp + +Run Build Command(s):C:\Users\h30053725\AppData\Local\Huawei\SDK1026\openharmony\10\native\build-tools\cmake\bin\ninja.exe cmTC_5981f && [1/2] Building C object CMakeFiles/cmTC_5981f.dir/CMakeCCompilerABI.c.o +OHOS (dev) clang version 15.0.4 (llvm-project d1aa604d90b55a96aa22af9992d170fccbd41938) +Target: aarch64-unknown-linux-ohos +Thread model: posix +InstalledDir: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin +clang: warning: argument unused during compilation: '--gcc-toolchain=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm' [-Wunused-command-line-argument] + (in-process) + "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang.exe" -cc1 -triple aarch64-unknown-linux-ohos -emit-obj -mrelax-all -mnoexecstack -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCCompilerABI.c -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=non-leaf -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=1 -target-cpu generic -target-feature +neon -target-feature +v8a -target-feature +fix-cortex-a53-835769 -target-abi aapcs -fallow-half-arguments-and-returns -mllvm -treat-scalable-fixed-error-as-warning -debugger-tuning=gdb -v -ffunction-sections -fdata-sections -fcoverage-compilation-dir=D:/Program/OpenHarmony/AAS1026/applications_app_samples/code/SuperFeature/Widget/FormGame/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/CMakeTmp -resource-dir C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4 -D __MUSL__ -isysroot C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot -internal-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/aarch64-linux-ohos -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/include -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include -Wformat -Werror=format-security -fdebug-compilation-dir=D:/Program/OpenHarmony/AAS1026/applications_app_samples/code/SuperFeature/Widget/FormGame/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/CMakeTmp -ferror-limit 19 -stack-protector 2 -fno-signed-char -fgnuc-version=4.2.1 -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_5981f.dir/CMakeCCompilerABI.c.o -x c C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeCCompilerABI.c +clang -cc1 version 15.0.4 based upon LLVM 15.0.4 default target x86_64-w64-windows-gnu +ignoring nonexistent directory "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/include" +#include "..." search starts here: +#include <...> search starts here: + C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include + C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/aarch64-linux-ohos + C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include +End of search list. +[2/2] Linking C executable cmTC_5981f +OHOS (dev) clang version 15.0.4 (llvm-project d1aa604d90b55a96aa22af9992d170fccbd41938) +Target: aarch64-unknown-linux-ohos +Thread model: posix +InstalledDir: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin + "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/ld.lld" --sysroot=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot -pie -EL --fix-cortex-a53-843419 -z now -z relro -z max-page-size=4096 --hash-style=gnu --hash-style=both --enable-new-dtags --eh-frame-hdr -m aarch64linux -dynamic-linker /lib/ld-musl-aarch64.so.1 -o cmTC_5981f C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/Scrt1.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/crti.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/clang_rt.crtbegin.o -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/ -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/aarch64-linux-ohos/ -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/ --build-id=sha1 --warn-shared-textrel --fatal-warnings -lunwind --no-undefined -z noexecstack --gc-sections CMakeFiles/cmTC_5981f.dir/CMakeCCompilerABI.c.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/libclang_rt.builtins.a -l:libunwind.a -lc C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/libclang_rt.builtins.a -l:libunwind.a C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/clang_rt.crtend.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/crtn.o + + + +Parsed C implicit include dir info from above output: rv=done + found start of include info + found start of implicit include info + add: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include] + add: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/aarch64-linux-ohos] + add: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] + end of search list found + collapse include dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include] + collapse include dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/aarch64-linux-ohos] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/aarch64-linux-ohos] + collapse include dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] + implicit include dirs: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/aarch64-linux-ohos;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] + + +Parsed C implicit link information from above output: + link line regex: [^( *|.*[/\])(ld\.lld\.exe|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] + ignore line: [Change Dir: D:/Program/OpenHarmony/AAS1026/applications_app_samples/code/SuperFeature/Widget/FormGame/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/CMakeTmp] + ignore line: [] + ignore line: [Run Build Command(s):C:\Users\h30053725\AppData\Local\Huawei\SDK1026\openharmony\10\native\build-tools\cmake\bin\ninja.exe cmTC_5981f && [1/2] Building C object CMakeFiles/cmTC_5981f.dir/CMakeCCompilerABI.c.o] + ignore line: [OHOS (dev) clang version 15.0.4 (llvm-project d1aa604d90b55a96aa22af9992d170fccbd41938)] + ignore line: [Target: aarch64-unknown-linux-ohos] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin] + ignore line: [clang: warning: argument unused during compilation: '--gcc-toolchain=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm' [-Wunused-command-line-argument]] + ignore line: [ (in-process)] + ignore line: [ "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang.exe" -cc1 -triple aarch64-unknown-linux-ohos -emit-obj -mrelax-all -mnoexecstack -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCCompilerABI.c -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=non-leaf -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=1 -target-cpu generic -target-feature +neon -target-feature +v8a -target-feature +fix-cortex-a53-835769 -target-abi aapcs -fallow-half-arguments-and-returns -mllvm -treat-scalable-fixed-error-as-warning -debugger-tuning=gdb -v -ffunction-sections -fdata-sections -fcoverage-compilation-dir=D:/Program/OpenHarmony/AAS1026/applications_app_samples/code/SuperFeature/Widget/FormGame/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/CMakeTmp -resource-dir C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4 -D __MUSL__ -isysroot C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot -internal-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/aarch64-linux-ohos -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/include -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include -Wformat -Werror=format-security -fdebug-compilation-dir=D:/Program/OpenHarmony/AAS1026/applications_app_samples/code/SuperFeature/Widget/FormGame/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/CMakeTmp -ferror-limit 19 -stack-protector 2 -fno-signed-char -fgnuc-version=4.2.1 -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_5981f.dir/CMakeCCompilerABI.c.o -x c C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeCCompilerABI.c] + ignore line: [clang -cc1 version 15.0.4 based upon LLVM 15.0.4 default target x86_64-w64-windows-gnu] + ignore line: [ignoring nonexistent directory "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/include"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include] + ignore line: [ C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/aarch64-linux-ohos] + ignore line: [ C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] + ignore line: [End of search list.] + ignore line: [[2/2] Linking C executable cmTC_5981f] + ignore line: [OHOS (dev) clang version 15.0.4 (llvm-project d1aa604d90b55a96aa22af9992d170fccbd41938)] + ignore line: [Target: aarch64-unknown-linux-ohos] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin] + link line: [ "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/ld.lld" --sysroot=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot -pie -EL --fix-cortex-a53-843419 -z now -z relro -z max-page-size=4096 --hash-style=gnu --hash-style=both --enable-new-dtags --eh-frame-hdr -m aarch64linux -dynamic-linker /lib/ld-musl-aarch64.so.1 -o cmTC_5981f C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/Scrt1.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/crti.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/clang_rt.crtbegin.o -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/ -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/aarch64-linux-ohos/ -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/ --build-id=sha1 --warn-shared-textrel --fatal-warnings -lunwind --no-undefined -z noexecstack --gc-sections CMakeFiles/cmTC_5981f.dir/CMakeCCompilerABI.c.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/libclang_rt.builtins.a -l:libunwind.a -lc C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/libclang_rt.builtins.a -l:libunwind.a C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/clang_rt.crtend.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/crtn.o] + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/ld.lld] ==> ignore + arg [--sysroot=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot] ==> ignore + arg [-pie] ==> ignore + arg [-EL] ==> ignore + arg [--fix-cortex-a53-843419] ==> ignore + arg [-znow] ==> ignore + arg [-zrelro] ==> ignore + arg [-zmax-page-size=4096] ==> ignore + arg [--hash-style=gnu] ==> ignore + arg [--hash-style=both] ==> ignore + arg [--enable-new-dtags] ==> ignore + arg [--eh-frame-hdr] ==> ignore + arg [-m] ==> ignore + arg [aarch64linux] ==> ignore + arg [-dynamic-linker] ==> ignore + arg [/lib/ld-musl-aarch64.so.1] ==> ignore + arg [-o] ==> ignore + arg [cmTC_5981f] ==> ignore + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/Scrt1.o] ==> ignore + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/crti.o] ==> ignore + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/clang_rt.crtbegin.o] ==> ignore + arg [-LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos] ==> dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos] + arg [-LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/] ==> dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/] + arg [-LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/aarch64-linux-ohos/] ==> dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/aarch64-linux-ohos/] + arg [-LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/] ==> dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/] + arg [--build-id=sha1] ==> ignore + arg [--warn-shared-textrel] ==> ignore + arg [--fatal-warnings] ==> ignore + arg [-lunwind] ==> lib [unwind] + arg [--no-undefined] ==> ignore + arg [-znoexecstack] ==> ignore + arg [--gc-sections] ==> ignore + arg [CMakeFiles/cmTC_5981f.dir/CMakeCCompilerABI.c.o] ==> ignore + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/libclang_rt.builtins.a] ==> lib [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/libclang_rt.builtins.a] + arg [-l:libunwind.a] ==> lib [-l:libunwind.a] + arg [-lc] ==> lib [c] + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/libclang_rt.builtins.a] ==> lib [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/libclang_rt.builtins.a] + arg [-l:libunwind.a] ==> lib [-l:libunwind.a] + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/clang_rt.crtend.o] ==> ignore + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/crtn.o] ==> ignore + remove lib [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/libclang_rt.builtins.a] + remove lib [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/libclang_rt.builtins.a] + collapse library dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos] + collapse library dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib] + collapse library dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/aarch64-linux-ohos/] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/aarch64-linux-ohos] + collapse library dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos] + implicit libs: [unwind;-l:libunwind.a;c;-l:libunwind.a] + implicit dirs: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/aarch64-linux-ohos;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos] + implicit fwks: [] + + +Determining if the CXX compiler works passed with the following output: +Change Dir: D:/Program/OpenHarmony/AAS1026/applications_app_samples/code/SuperFeature/Widget/FormGame/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/CMakeTmp + +Run Build Command(s):C:\Users\h30053725\AppData\Local\Huawei\SDK1026\openharmony\10\native\build-tools\cmake\bin\ninja.exe cmTC_32c9a && [1/2] Building CXX object CMakeFiles/cmTC_32c9a.dir/testCXXCompiler.cxx.o +clang++: warning: argument unused during compilation: '--gcc-toolchain=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm' [-Wunused-command-line-argument] +[2/2] Linking CXX executable cmTC_32c9a + + + +Detecting CXX compiler ABI info compiled with the following output: +Change Dir: D:/Program/OpenHarmony/AAS1026/applications_app_samples/code/SuperFeature/Widget/FormGame/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/CMakeTmp + +Run Build Command(s):C:\Users\h30053725\AppData\Local\Huawei\SDK1026\openharmony\10\native\build-tools\cmake\bin\ninja.exe cmTC_a8f65 && [1/2] Building CXX object CMakeFiles/cmTC_a8f65.dir/CMakeCXXCompilerABI.cpp.o +OHOS (dev) clang version 15.0.4 (llvm-project d1aa604d90b55a96aa22af9992d170fccbd41938) +Target: aarch64-unknown-linux-ohos +Thread model: posix +InstalledDir: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin +clang++: warning: argument unused during compilation: '--gcc-toolchain=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm' [-Wunused-command-line-argument] + (in-process) + "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang++.exe" -cc1 -triple aarch64-unknown-linux-ohos -emit-obj -mrelax-all -mnoexecstack -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCXXCompilerABI.cpp -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=non-leaf -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=1 -target-cpu generic -target-feature +neon -target-feature +v8a -target-feature +fix-cortex-a53-835769 -target-abi aapcs -fallow-half-arguments-and-returns -mllvm -treat-scalable-fixed-error-as-warning -debugger-tuning=gdb -v -ffunction-sections -fdata-sections -fcoverage-compilation-dir=D:/Program/OpenHarmony/AAS1026/applications_app_samples/code/SuperFeature/Widget/FormGame/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/CMakeTmp -resource-dir C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4 -D __MUSL__ -isysroot C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot -internal-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../include/libcxx-ohos/include/c++/v1 -internal-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/aarch64-linux-ohos -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/include -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include -Wformat -Werror=format-security -fdeprecated-macro -fdebug-compilation-dir=D:/Program/OpenHarmony/AAS1026/applications_app_samples/code/SuperFeature/Widget/FormGame/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/CMakeTmp -ferror-limit 19 -stack-protector 2 -fno-signed-char -fgnuc-version=4.2.1 -fcxx-exceptions -fexceptions -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_a8f65.dir/CMakeCXXCompilerABI.cpp.o -x c++ C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeCXXCompilerABI.cpp +clang -cc1 version 15.0.4 based upon LLVM 15.0.4 default target x86_64-w64-windows-gnu +ignoring nonexistent directory "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/include" +#include "..." search starts here: +#include <...> search starts here: + C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../include/libcxx-ohos/include/c++/v1 + C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include + C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/aarch64-linux-ohos + C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include +End of search list. +[2/2] Linking CXX executable cmTC_a8f65 +OHOS (dev) clang version 15.0.4 (llvm-project d1aa604d90b55a96aa22af9992d170fccbd41938) +Target: aarch64-unknown-linux-ohos +Thread model: posix +InstalledDir: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin + "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/ld.lld" --sysroot=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot -pie -EL --fix-cortex-a53-843419 -z now -z relro -z max-page-size=4096 --hash-style=gnu --hash-style=both --enable-new-dtags --eh-frame-hdr -m aarch64linux -dynamic-linker /lib/ld-musl-aarch64.so.1 -o cmTC_a8f65 C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/Scrt1.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/crti.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/clang_rt.crtbegin.o -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/ -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/aarch64-linux-ohos/ -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/ --build-id=sha1 --warn-shared-textrel --fatal-warnings -lunwind --no-undefined -z noexecstack --gc-sections CMakeFiles/cmTC_a8f65.dir/CMakeCXXCompilerABI.cpp.o -Bstatic -lc++ -lc++abi -lunwind -Bdynamic -lm C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/libclang_rt.builtins.a -l:libunwind.a -lc C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/libclang_rt.builtins.a -l:libunwind.a C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/clang_rt.crtend.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/crtn.o + + + +Parsed CXX implicit include dir info from above output: rv=done + found start of include info + found start of implicit include info + add: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../include/libcxx-ohos/include/c++/v1] + add: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include] + add: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/aarch64-linux-ohos] + add: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] + end of search list found + collapse include dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../include/libcxx-ohos/include/c++/v1] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/include/libcxx-ohos/include/c++/v1] + collapse include dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include] + collapse include dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/aarch64-linux-ohos] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/aarch64-linux-ohos] + collapse include dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] + implicit include dirs: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/include/libcxx-ohos/include/c++/v1;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/aarch64-linux-ohos;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] + + +Parsed CXX implicit link information from above output: + link line regex: [^( *|.*[/\])(ld\.lld\.exe|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] + ignore line: [Change Dir: D:/Program/OpenHarmony/AAS1026/applications_app_samples/code/SuperFeature/Widget/FormGame/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/CMakeTmp] + ignore line: [] + ignore line: [Run Build Command(s):C:\Users\h30053725\AppData\Local\Huawei\SDK1026\openharmony\10\native\build-tools\cmake\bin\ninja.exe cmTC_a8f65 && [1/2] Building CXX object CMakeFiles/cmTC_a8f65.dir/CMakeCXXCompilerABI.cpp.o] + ignore line: [OHOS (dev) clang version 15.0.4 (llvm-project d1aa604d90b55a96aa22af9992d170fccbd41938)] + ignore line: [Target: aarch64-unknown-linux-ohos] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin] + ignore line: [clang++: warning: argument unused during compilation: '--gcc-toolchain=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm' [-Wunused-command-line-argument]] + ignore line: [ (in-process)] + ignore line: [ "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang++.exe" -cc1 -triple aarch64-unknown-linux-ohos -emit-obj -mrelax-all -mnoexecstack -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCXXCompilerABI.cpp -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=non-leaf -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=1 -target-cpu generic -target-feature +neon -target-feature +v8a -target-feature +fix-cortex-a53-835769 -target-abi aapcs -fallow-half-arguments-and-returns -mllvm -treat-scalable-fixed-error-as-warning -debugger-tuning=gdb -v -ffunction-sections -fdata-sections -fcoverage-compilation-dir=D:/Program/OpenHarmony/AAS1026/applications_app_samples/code/SuperFeature/Widget/FormGame/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/CMakeTmp -resource-dir C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4 -D __MUSL__ -isysroot C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot -internal-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../include/libcxx-ohos/include/c++/v1 -internal-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/aarch64-linux-ohos -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/include -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include -Wformat -Werror=format-security -fdeprecated-macro -fdebug-compilation-dir=D:/Program/OpenHarmony/AAS1026/applications_app_samples/code/SuperFeature/Widget/FormGame/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/CMakeTmp -ferror-limit 19 -stack-protector 2 -fno-signed-char -fgnuc-version=4.2.1 -fcxx-exceptions -fexceptions -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_a8f65.dir/CMakeCXXCompilerABI.cpp.o -x c++ C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeCXXCompilerABI.cpp] + ignore line: [clang -cc1 version 15.0.4 based upon LLVM 15.0.4 default target x86_64-w64-windows-gnu] + ignore line: [ignoring nonexistent directory "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/include"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../include/libcxx-ohos/include/c++/v1] + ignore line: [ C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include] + ignore line: [ C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/aarch64-linux-ohos] + ignore line: [ C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] + ignore line: [End of search list.] + ignore line: [[2/2] Linking CXX executable cmTC_a8f65] + ignore line: [OHOS (dev) clang version 15.0.4 (llvm-project d1aa604d90b55a96aa22af9992d170fccbd41938)] + ignore line: [Target: aarch64-unknown-linux-ohos] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin] + link line: [ "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/ld.lld" --sysroot=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot -pie -EL --fix-cortex-a53-843419 -z now -z relro -z max-page-size=4096 --hash-style=gnu --hash-style=both --enable-new-dtags --eh-frame-hdr -m aarch64linux -dynamic-linker /lib/ld-musl-aarch64.so.1 -o cmTC_a8f65 C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/Scrt1.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/crti.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/clang_rt.crtbegin.o -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/ -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/aarch64-linux-ohos/ -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/ --build-id=sha1 --warn-shared-textrel --fatal-warnings -lunwind --no-undefined -z noexecstack --gc-sections CMakeFiles/cmTC_a8f65.dir/CMakeCXXCompilerABI.cpp.o -Bstatic -lc++ -lc++abi -lunwind -Bdynamic -lm C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/libclang_rt.builtins.a -l:libunwind.a -lc C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/libclang_rt.builtins.a -l:libunwind.a C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/clang_rt.crtend.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/crtn.o] + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/ld.lld] ==> ignore + arg [--sysroot=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot] ==> ignore + arg [-pie] ==> ignore + arg [-EL] ==> ignore + arg [--fix-cortex-a53-843419] ==> ignore + arg [-znow] ==> ignore + arg [-zrelro] ==> ignore + arg [-zmax-page-size=4096] ==> ignore + arg [--hash-style=gnu] ==> ignore + arg [--hash-style=both] ==> ignore + arg [--enable-new-dtags] ==> ignore + arg [--eh-frame-hdr] ==> ignore + arg [-m] ==> ignore + arg [aarch64linux] ==> ignore + arg [-dynamic-linker] ==> ignore + arg [/lib/ld-musl-aarch64.so.1] ==> ignore + arg [-o] ==> ignore + arg [cmTC_a8f65] ==> ignore + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/Scrt1.o] ==> ignore + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/crti.o] ==> ignore + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/clang_rt.crtbegin.o] ==> ignore + arg [-LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos] ==> dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos] + arg [-LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/] ==> dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/] + arg [-LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/aarch64-linux-ohos/] ==> dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/aarch64-linux-ohos/] + arg [-LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/] ==> dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/] + arg [--build-id=sha1] ==> ignore + arg [--warn-shared-textrel] ==> ignore + arg [--fatal-warnings] ==> ignore + arg [-lunwind] ==> lib [unwind] + arg [--no-undefined] ==> ignore + arg [-znoexecstack] ==> ignore + arg [--gc-sections] ==> ignore + arg [CMakeFiles/cmTC_a8f65.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore + arg [-Bstatic] ==> ignore + arg [-lc++] ==> lib [c++] + arg [-lc++abi] ==> lib [c++abi] + arg [-lunwind] ==> lib [unwind] + arg [-Bdynamic] ==> ignore + arg [-lm] ==> lib [m] + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/libclang_rt.builtins.a] ==> lib [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/libclang_rt.builtins.a] + arg [-l:libunwind.a] ==> lib [-l:libunwind.a] + arg [-lc] ==> lib [c] + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/libclang_rt.builtins.a] ==> lib [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/libclang_rt.builtins.a] + arg [-l:libunwind.a] ==> lib [-l:libunwind.a] + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/clang_rt.crtend.o] ==> ignore + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/crtn.o] ==> ignore + remove lib [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/libclang_rt.builtins.a] + remove lib [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/libclang_rt.builtins.a] + collapse library dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos] + collapse library dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib] + collapse library dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/aarch64-linux-ohos/] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/aarch64-linux-ohos] + collapse library dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos] + implicit libs: [unwind;c++;c++abi;unwind;m;-l:libunwind.a;c;-l:libunwind.a] + implicit dirs: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/aarch64-linux-ohos;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos] + implicit fwks: [] + + +The target system is: OHOS - 1 - aarch64 +The host system is: Windows - 10.0.22621 - AMD64 +Compiling the C compiler identification source file "CMakeCCompilerId.c" succeeded. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang.exe +Build flags: -fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-fno-addrsig;-Wa,--noexecstack;-Wformat;-Werror=format-security;;-D__MUSL__ +Id flags: -c + +The output was: +0 + + +Compilation of the C compiler identification source "CMakeCCompilerId.c" produced "CMakeCCompilerId.o" + +The C compiler identification is Clang, found in "D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/3.16.5/CompilerIdC/CMakeCCompilerId.o" + +Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" succeeded. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang++.exe +Build flags: -fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-fno-addrsig;-Wa,--noexecstack;-Wformat;-Werror=format-security;;;-D__MUSL__ +Id flags: -c + +The output was: +0 + + +Compilation of the CXX compiler identification source "CMakeCXXCompilerId.cpp" produced "CMakeCXXCompilerId.o" + +The CXX compiler identification is Clang, found in "D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/3.16.5/CompilerIdCXX/CMakeCXXCompilerId.o" + +Determining if the C compiler works passed with the following output: +Change Dir: D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/CMakeTmp + +Run Build Command(s):C:\Users\h30053725\AppData\Local\Huawei\SDK1026\openharmony\10\native\build-tools\cmake\bin\ninja.exe cmTC_402df && [1/2] Building C object CMakeFiles/cmTC_402df.dir/testCCompiler.c.o +clang: warning: argument unused during compilation: '--gcc-toolchain=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm' [-Wunused-command-line-argument] +[2/2] Linking C executable cmTC_402df + + + +Detecting C compiler ABI info compiled with the following output: +Change Dir: D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/CMakeTmp + +Run Build Command(s):C:\Users\h30053725\AppData\Local\Huawei\SDK1026\openharmony\10\native\build-tools\cmake\bin\ninja.exe cmTC_a6b19 && [1/2] Building C object CMakeFiles/cmTC_a6b19.dir/CMakeCCompilerABI.c.o +OHOS (dev) clang version 15.0.4 (llvm-project d1aa604d90b55a96aa22af9992d170fccbd41938) +Target: aarch64-unknown-linux-ohos +Thread model: posix +InstalledDir: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin +clang: warning: argument unused during compilation: '--gcc-toolchain=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm' [-Wunused-command-line-argument] + (in-process) + "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang.exe" -cc1 -triple aarch64-unknown-linux-ohos -emit-obj -mrelax-all -mnoexecstack -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCCompilerABI.c -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=non-leaf -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=1 -target-cpu generic -target-feature +neon -target-feature +v8a -target-feature +fix-cortex-a53-835769 -target-abi aapcs -fallow-half-arguments-and-returns -mllvm -treat-scalable-fixed-error-as-warning -debugger-tuning=gdb -v -ffunction-sections -fdata-sections -fcoverage-compilation-dir=D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/CMakeTmp -resource-dir C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4 -D __MUSL__ -isysroot C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot -internal-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/aarch64-linux-ohos -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/include -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include -Wformat -Werror=format-security -fdebug-compilation-dir=D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/CMakeTmp -ferror-limit 19 -stack-protector 2 -fno-signed-char -fgnuc-version=4.2.1 -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_a6b19.dir/CMakeCCompilerABI.c.o -x c C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeCCompilerABI.c +clang -cc1 version 15.0.4 based upon LLVM 15.0.4 default target x86_64-w64-windows-gnu +ignoring nonexistent directory "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/include" +#include "..." search starts here: +#include <...> search starts here: + C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include + C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/aarch64-linux-ohos + C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include +End of search list. +[2/2] Linking C executable cmTC_a6b19 +OHOS (dev) clang version 15.0.4 (llvm-project d1aa604d90b55a96aa22af9992d170fccbd41938) +Target: aarch64-unknown-linux-ohos +Thread model: posix +InstalledDir: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin + "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/ld.lld" --sysroot=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot -pie -EL --fix-cortex-a53-843419 -z now -z relro -z max-page-size=4096 --hash-style=gnu --hash-style=both --enable-new-dtags --eh-frame-hdr -m aarch64linux -dynamic-linker /lib/ld-musl-aarch64.so.1 -o cmTC_a6b19 C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/Scrt1.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/crti.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/clang_rt.crtbegin.o -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/ -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/aarch64-linux-ohos/ -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/ --build-id=sha1 --warn-shared-textrel --fatal-warnings -lunwind --no-undefined -z noexecstack --gc-sections CMakeFiles/cmTC_a6b19.dir/CMakeCCompilerABI.c.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/libclang_rt.builtins.a -l:libunwind.a -lc C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/libclang_rt.builtins.a -l:libunwind.a C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/clang_rt.crtend.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/crtn.o + + + +Parsed C implicit include dir info from above output: rv=done + found start of include info + found start of implicit include info + add: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include] + add: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/aarch64-linux-ohos] + add: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] + end of search list found + collapse include dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include] + collapse include dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/aarch64-linux-ohos] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/aarch64-linux-ohos] + collapse include dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] + implicit include dirs: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/aarch64-linux-ohos;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] + + +Parsed C implicit link information from above output: + link line regex: [^( *|.*[/\])(ld\.lld\.exe|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] + ignore line: [Change Dir: D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/CMakeTmp] + ignore line: [] + ignore line: [Run Build Command(s):C:\Users\h30053725\AppData\Local\Huawei\SDK1026\openharmony\10\native\build-tools\cmake\bin\ninja.exe cmTC_a6b19 && [1/2] Building C object CMakeFiles/cmTC_a6b19.dir/CMakeCCompilerABI.c.o] + ignore line: [OHOS (dev) clang version 15.0.4 (llvm-project d1aa604d90b55a96aa22af9992d170fccbd41938)] + ignore line: [Target: aarch64-unknown-linux-ohos] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin] + ignore line: [clang: warning: argument unused during compilation: '--gcc-toolchain=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm' [-Wunused-command-line-argument]] + ignore line: [ (in-process)] + ignore line: [ "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang.exe" -cc1 -triple aarch64-unknown-linux-ohos -emit-obj -mrelax-all -mnoexecstack -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCCompilerABI.c -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=non-leaf -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=1 -target-cpu generic -target-feature +neon -target-feature +v8a -target-feature +fix-cortex-a53-835769 -target-abi aapcs -fallow-half-arguments-and-returns -mllvm -treat-scalable-fixed-error-as-warning -debugger-tuning=gdb -v -ffunction-sections -fdata-sections -fcoverage-compilation-dir=D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/CMakeTmp -resource-dir C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4 -D __MUSL__ -isysroot C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot -internal-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/aarch64-linux-ohos -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/include -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include -Wformat -Werror=format-security -fdebug-compilation-dir=D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/CMakeTmp -ferror-limit 19 -stack-protector 2 -fno-signed-char -fgnuc-version=4.2.1 -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_a6b19.dir/CMakeCCompilerABI.c.o -x c C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeCCompilerABI.c] + ignore line: [clang -cc1 version 15.0.4 based upon LLVM 15.0.4 default target x86_64-w64-windows-gnu] + ignore line: [ignoring nonexistent directory "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/include"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include] + ignore line: [ C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/aarch64-linux-ohos] + ignore line: [ C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] + ignore line: [End of search list.] + ignore line: [[2/2] Linking C executable cmTC_a6b19] + ignore line: [OHOS (dev) clang version 15.0.4 (llvm-project d1aa604d90b55a96aa22af9992d170fccbd41938)] + ignore line: [Target: aarch64-unknown-linux-ohos] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin] + link line: [ "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/ld.lld" --sysroot=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot -pie -EL --fix-cortex-a53-843419 -z now -z relro -z max-page-size=4096 --hash-style=gnu --hash-style=both --enable-new-dtags --eh-frame-hdr -m aarch64linux -dynamic-linker /lib/ld-musl-aarch64.so.1 -o cmTC_a6b19 C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/Scrt1.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/crti.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/clang_rt.crtbegin.o -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/ -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/aarch64-linux-ohos/ -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/ --build-id=sha1 --warn-shared-textrel --fatal-warnings -lunwind --no-undefined -z noexecstack --gc-sections CMakeFiles/cmTC_a6b19.dir/CMakeCCompilerABI.c.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/libclang_rt.builtins.a -l:libunwind.a -lc C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/libclang_rt.builtins.a -l:libunwind.a C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/clang_rt.crtend.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/crtn.o] + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/ld.lld] ==> ignore + arg [--sysroot=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot] ==> ignore + arg [-pie] ==> ignore + arg [-EL] ==> ignore + arg [--fix-cortex-a53-843419] ==> ignore + arg [-znow] ==> ignore + arg [-zrelro] ==> ignore + arg [-zmax-page-size=4096] ==> ignore + arg [--hash-style=gnu] ==> ignore + arg [--hash-style=both] ==> ignore + arg [--enable-new-dtags] ==> ignore + arg [--eh-frame-hdr] ==> ignore + arg [-m] ==> ignore + arg [aarch64linux] ==> ignore + arg [-dynamic-linker] ==> ignore + arg [/lib/ld-musl-aarch64.so.1] ==> ignore + arg [-o] ==> ignore + arg [cmTC_a6b19] ==> ignore + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/Scrt1.o] ==> ignore + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/crti.o] ==> ignore + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/clang_rt.crtbegin.o] ==> ignore + arg [-LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos] ==> dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos] + arg [-LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/] ==> dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/] + arg [-LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/aarch64-linux-ohos/] ==> dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/aarch64-linux-ohos/] + arg [-LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/] ==> dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/] + arg [--build-id=sha1] ==> ignore + arg [--warn-shared-textrel] ==> ignore + arg [--fatal-warnings] ==> ignore + arg [-lunwind] ==> lib [unwind] + arg [--no-undefined] ==> ignore + arg [-znoexecstack] ==> ignore + arg [--gc-sections] ==> ignore + arg [CMakeFiles/cmTC_a6b19.dir/CMakeCCompilerABI.c.o] ==> ignore + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/libclang_rt.builtins.a] ==> lib [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/libclang_rt.builtins.a] + arg [-l:libunwind.a] ==> lib [-l:libunwind.a] + arg [-lc] ==> lib [c] + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/libclang_rt.builtins.a] ==> lib [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/libclang_rt.builtins.a] + arg [-l:libunwind.a] ==> lib [-l:libunwind.a] + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/clang_rt.crtend.o] ==> ignore + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/crtn.o] ==> ignore + remove lib [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/libclang_rt.builtins.a] + remove lib [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/libclang_rt.builtins.a] + collapse library dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos] + collapse library dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib] + collapse library dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/aarch64-linux-ohos/] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/aarch64-linux-ohos] + collapse library dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos] + implicit libs: [unwind;-l:libunwind.a;c;-l:libunwind.a] + implicit dirs: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/aarch64-linux-ohos;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos] + implicit fwks: [] + + +Determining if the CXX compiler works passed with the following output: +Change Dir: D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/CMakeTmp + +Run Build Command(s):C:\Users\h30053725\AppData\Local\Huawei\SDK1026\openharmony\10\native\build-tools\cmake\bin\ninja.exe cmTC_d2024 && [1/2] Building CXX object CMakeFiles/cmTC_d2024.dir/testCXXCompiler.cxx.o +clang++: warning: argument unused during compilation: '--gcc-toolchain=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm' [-Wunused-command-line-argument] +[2/2] Linking CXX executable cmTC_d2024 + + + +Detecting CXX compiler ABI info compiled with the following output: +Change Dir: D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/CMakeTmp + +Run Build Command(s):C:\Users\h30053725\AppData\Local\Huawei\SDK1026\openharmony\10\native\build-tools\cmake\bin\ninja.exe cmTC_97474 && [1/2] Building CXX object CMakeFiles/cmTC_97474.dir/CMakeCXXCompilerABI.cpp.o +OHOS (dev) clang version 15.0.4 (llvm-project d1aa604d90b55a96aa22af9992d170fccbd41938) +Target: aarch64-unknown-linux-ohos +Thread model: posix +InstalledDir: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin +clang++: warning: argument unused during compilation: '--gcc-toolchain=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm' [-Wunused-command-line-argument] + (in-process) + "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang++.exe" -cc1 -triple aarch64-unknown-linux-ohos -emit-obj -mrelax-all -mnoexecstack -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCXXCompilerABI.cpp -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=non-leaf -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=1 -target-cpu generic -target-feature +neon -target-feature +v8a -target-feature +fix-cortex-a53-835769 -target-abi aapcs -fallow-half-arguments-and-returns -mllvm -treat-scalable-fixed-error-as-warning -debugger-tuning=gdb -v -ffunction-sections -fdata-sections -fcoverage-compilation-dir=D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/CMakeTmp -resource-dir C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4 -D __MUSL__ -isysroot C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot -internal-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../include/libcxx-ohos/include/c++/v1 -internal-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/aarch64-linux-ohos -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/include -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include -Wformat -Werror=format-security -fdeprecated-macro -fdebug-compilation-dir=D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/CMakeTmp -ferror-limit 19 -stack-protector 2 -fno-signed-char -fgnuc-version=4.2.1 -fcxx-exceptions -fexceptions -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_97474.dir/CMakeCXXCompilerABI.cpp.o -x c++ C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeCXXCompilerABI.cpp +clang -cc1 version 15.0.4 based upon LLVM 15.0.4 default target x86_64-w64-windows-gnu +ignoring nonexistent directory "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/include" +#include "..." search starts here: +#include <...> search starts here: + C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../include/libcxx-ohos/include/c++/v1 + C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include + C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/aarch64-linux-ohos + C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include +End of search list. +[2/2] Linking CXX executable cmTC_97474 +OHOS (dev) clang version 15.0.4 (llvm-project d1aa604d90b55a96aa22af9992d170fccbd41938) +Target: aarch64-unknown-linux-ohos +Thread model: posix +InstalledDir: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin + "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/ld.lld" --sysroot=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot -pie -EL --fix-cortex-a53-843419 -z now -z relro -z max-page-size=4096 --hash-style=gnu --hash-style=both --enable-new-dtags --eh-frame-hdr -m aarch64linux -dynamic-linker /lib/ld-musl-aarch64.so.1 -o cmTC_97474 C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/Scrt1.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/crti.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/clang_rt.crtbegin.o -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/ -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/aarch64-linux-ohos/ -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/ --build-id=sha1 --warn-shared-textrel --fatal-warnings -lunwind --no-undefined -z noexecstack --gc-sections CMakeFiles/cmTC_97474.dir/CMakeCXXCompilerABI.cpp.o -Bstatic -lc++ -lc++abi -lunwind -Bdynamic -lm C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/libclang_rt.builtins.a -l:libunwind.a -lc C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/libclang_rt.builtins.a -l:libunwind.a C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/clang_rt.crtend.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/crtn.o + + + +Parsed CXX implicit include dir info from above output: rv=done + found start of include info + found start of implicit include info + add: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../include/libcxx-ohos/include/c++/v1] + add: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include] + add: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/aarch64-linux-ohos] + add: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] + end of search list found + collapse include dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../include/libcxx-ohos/include/c++/v1] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/include/libcxx-ohos/include/c++/v1] + collapse include dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include] + collapse include dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/aarch64-linux-ohos] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/aarch64-linux-ohos] + collapse include dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] + implicit include dirs: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/include/libcxx-ohos/include/c++/v1;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/aarch64-linux-ohos;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] + + +Parsed CXX implicit link information from above output: + link line regex: [^( *|.*[/\])(ld\.lld\.exe|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] + ignore line: [Change Dir: D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/CMakeTmp] + ignore line: [] + ignore line: [Run Build Command(s):C:\Users\h30053725\AppData\Local\Huawei\SDK1026\openharmony\10\native\build-tools\cmake\bin\ninja.exe cmTC_97474 && [1/2] Building CXX object CMakeFiles/cmTC_97474.dir/CMakeCXXCompilerABI.cpp.o] + ignore line: [OHOS (dev) clang version 15.0.4 (llvm-project d1aa604d90b55a96aa22af9992d170fccbd41938)] + ignore line: [Target: aarch64-unknown-linux-ohos] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin] + ignore line: [clang++: warning: argument unused during compilation: '--gcc-toolchain=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm' [-Wunused-command-line-argument]] + ignore line: [ (in-process)] + ignore line: [ "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang++.exe" -cc1 -triple aarch64-unknown-linux-ohos -emit-obj -mrelax-all -mnoexecstack -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCXXCompilerABI.cpp -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=non-leaf -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=1 -target-cpu generic -target-feature +neon -target-feature +v8a -target-feature +fix-cortex-a53-835769 -target-abi aapcs -fallow-half-arguments-and-returns -mllvm -treat-scalable-fixed-error-as-warning -debugger-tuning=gdb -v -ffunction-sections -fdata-sections -fcoverage-compilation-dir=D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/CMakeTmp -resource-dir C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4 -D __MUSL__ -isysroot C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot -internal-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../include/libcxx-ohos/include/c++/v1 -internal-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/aarch64-linux-ohos -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/include -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include -Wformat -Werror=format-security -fdeprecated-macro -fdebug-compilation-dir=D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/CMakeTmp -ferror-limit 19 -stack-protector 2 -fno-signed-char -fgnuc-version=4.2.1 -fcxx-exceptions -fexceptions -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_97474.dir/CMakeCXXCompilerABI.cpp.o -x c++ C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeCXXCompilerABI.cpp] + ignore line: [clang -cc1 version 15.0.4 based upon LLVM 15.0.4 default target x86_64-w64-windows-gnu] + ignore line: [ignoring nonexistent directory "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/include"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../include/libcxx-ohos/include/c++/v1] + ignore line: [ C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include] + ignore line: [ C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/aarch64-linux-ohos] + ignore line: [ C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] + ignore line: [End of search list.] + ignore line: [[2/2] Linking CXX executable cmTC_97474] + ignore line: [OHOS (dev) clang version 15.0.4 (llvm-project d1aa604d90b55a96aa22af9992d170fccbd41938)] + ignore line: [Target: aarch64-unknown-linux-ohos] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin] + link line: [ "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/ld.lld" --sysroot=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot -pie -EL --fix-cortex-a53-843419 -z now -z relro -z max-page-size=4096 --hash-style=gnu --hash-style=both --enable-new-dtags --eh-frame-hdr -m aarch64linux -dynamic-linker /lib/ld-musl-aarch64.so.1 -o cmTC_97474 C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/Scrt1.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/crti.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/clang_rt.crtbegin.o -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/ -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/aarch64-linux-ohos/ -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/ --build-id=sha1 --warn-shared-textrel --fatal-warnings -lunwind --no-undefined -z noexecstack --gc-sections CMakeFiles/cmTC_97474.dir/CMakeCXXCompilerABI.cpp.o -Bstatic -lc++ -lc++abi -lunwind -Bdynamic -lm C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/libclang_rt.builtins.a -l:libunwind.a -lc C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/libclang_rt.builtins.a -l:libunwind.a C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/clang_rt.crtend.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/crtn.o] + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/ld.lld] ==> ignore + arg [--sysroot=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot] ==> ignore + arg [-pie] ==> ignore + arg [-EL] ==> ignore + arg [--fix-cortex-a53-843419] ==> ignore + arg [-znow] ==> ignore + arg [-zrelro] ==> ignore + arg [-zmax-page-size=4096] ==> ignore + arg [--hash-style=gnu] ==> ignore + arg [--hash-style=both] ==> ignore + arg [--enable-new-dtags] ==> ignore + arg [--eh-frame-hdr] ==> ignore + arg [-m] ==> ignore + arg [aarch64linux] ==> ignore + arg [-dynamic-linker] ==> ignore + arg [/lib/ld-musl-aarch64.so.1] ==> ignore + arg [-o] ==> ignore + arg [cmTC_97474] ==> ignore + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/Scrt1.o] ==> ignore + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/crti.o] ==> ignore + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/clang_rt.crtbegin.o] ==> ignore + arg [-LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos] ==> dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos] + arg [-LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/] ==> dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/] + arg [-LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/aarch64-linux-ohos/] ==> dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/aarch64-linux-ohos/] + arg [-LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/] ==> dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/] + arg [--build-id=sha1] ==> ignore + arg [--warn-shared-textrel] ==> ignore + arg [--fatal-warnings] ==> ignore + arg [-lunwind] ==> lib [unwind] + arg [--no-undefined] ==> ignore + arg [-znoexecstack] ==> ignore + arg [--gc-sections] ==> ignore + arg [CMakeFiles/cmTC_97474.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore + arg [-Bstatic] ==> ignore + arg [-lc++] ==> lib [c++] + arg [-lc++abi] ==> lib [c++abi] + arg [-lunwind] ==> lib [unwind] + arg [-Bdynamic] ==> ignore + arg [-lm] ==> lib [m] + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/libclang_rt.builtins.a] ==> lib [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/libclang_rt.builtins.a] + arg [-l:libunwind.a] ==> lib [-l:libunwind.a] + arg [-lc] ==> lib [c] + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/libclang_rt.builtins.a] ==> lib [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/libclang_rt.builtins.a] + arg [-l:libunwind.a] ==> lib [-l:libunwind.a] + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/clang_rt.crtend.o] ==> ignore + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/crtn.o] ==> ignore + remove lib [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/libclang_rt.builtins.a] + remove lib [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/libclang_rt.builtins.a] + collapse library dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos] + collapse library dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib] + collapse library dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/aarch64-linux-ohos/] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/aarch64-linux-ohos] + collapse library dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos] + implicit libs: [unwind;c++;c++abi;unwind;m;-l:libunwind.a;c;-l:libunwind.a] + implicit dirs: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/aarch64-linux-ohos;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos] + implicit fwks: [] + + +The target system is: OHOS - 1 - aarch64 +The host system is: Windows - 10.0.22621 - AMD64 +Compiling the C compiler identification source file "CMakeCCompilerId.c" succeeded. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang.exe +Build flags: -fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-fno-addrsig;-Wa,--noexecstack;-Wformat;-Werror=format-security;;-D__MUSL__ +Id flags: -c + +The output was: +0 + + +Compilation of the C compiler identification source "CMakeCCompilerId.c" produced "CMakeCCompilerId.o" + +The C compiler identification is Clang, found in "D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/3.16.5/CompilerIdC/CMakeCCompilerId.o" + +Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" succeeded. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang++.exe +Build flags: -fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-fno-addrsig;-Wa,--noexecstack;-Wformat;-Werror=format-security;;;-D__MUSL__ +Id flags: -c + +The output was: +0 + + +Compilation of the CXX compiler identification source "CMakeCXXCompilerId.cpp" produced "CMakeCXXCompilerId.o" + +The CXX compiler identification is Clang, found in "D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/3.16.5/CompilerIdCXX/CMakeCXXCompilerId.o" + +Determining if the C compiler works passed with the following output: +Change Dir: D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/CMakeTmp + +Run Build Command(s):C:\Users\h30053725\AppData\Local\Huawei\SDK1026\openharmony\10\native\build-tools\cmake\bin\ninja.exe cmTC_d998a && [1/2] Building C object CMakeFiles/cmTC_d998a.dir/testCCompiler.c.o +clang: warning: argument unused during compilation: '--gcc-toolchain=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm' [-Wunused-command-line-argument] +[2/2] Linking C executable cmTC_d998a + + + +Detecting C compiler ABI info compiled with the following output: +Change Dir: D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/CMakeTmp + +Run Build Command(s):C:\Users\h30053725\AppData\Local\Huawei\SDK1026\openharmony\10\native\build-tools\cmake\bin\ninja.exe cmTC_37f75 && [1/2] Building C object CMakeFiles/cmTC_37f75.dir/CMakeCCompilerABI.c.o +OHOS (dev) clang version 15.0.4 (llvm-project d1aa604d90b55a96aa22af9992d170fccbd41938) +Target: aarch64-unknown-linux-ohos +Thread model: posix +InstalledDir: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin +clang: warning: argument unused during compilation: '--gcc-toolchain=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm' [-Wunused-command-line-argument] + (in-process) + "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang.exe" -cc1 -triple aarch64-unknown-linux-ohos -emit-obj -mrelax-all -mnoexecstack -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCCompilerABI.c -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=non-leaf -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=1 -target-cpu generic -target-feature +neon -target-feature +v8a -target-feature +fix-cortex-a53-835769 -target-abi aapcs -fallow-half-arguments-and-returns -mllvm -treat-scalable-fixed-error-as-warning -debugger-tuning=gdb -v -ffunction-sections -fdata-sections -fcoverage-compilation-dir=D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/CMakeTmp -resource-dir C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4 -D __MUSL__ -isysroot C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot -internal-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/aarch64-linux-ohos -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/include -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include -Wformat -Werror=format-security -fdebug-compilation-dir=D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/CMakeTmp -ferror-limit 19 -stack-protector 2 -fno-signed-char -fgnuc-version=4.2.1 -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_37f75.dir/CMakeCCompilerABI.c.o -x c C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeCCompilerABI.c +clang -cc1 version 15.0.4 based upon LLVM 15.0.4 default target x86_64-w64-windows-gnu +ignoring nonexistent directory "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/include" +#include "..." search starts here: +#include <...> search starts here: + C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include + C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/aarch64-linux-ohos + C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include +End of search list. +[2/2] Linking C executable cmTC_37f75 +OHOS (dev) clang version 15.0.4 (llvm-project d1aa604d90b55a96aa22af9992d170fccbd41938) +Target: aarch64-unknown-linux-ohos +Thread model: posix +InstalledDir: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin + "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/ld.lld" --sysroot=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot -pie -EL --fix-cortex-a53-843419 -z now -z relro -z max-page-size=4096 --hash-style=gnu --hash-style=both --enable-new-dtags --eh-frame-hdr -m aarch64linux -dynamic-linker /lib/ld-musl-aarch64.so.1 -o cmTC_37f75 C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/Scrt1.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/crti.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/clang_rt.crtbegin.o -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/ -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/aarch64-linux-ohos/ -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/ --build-id=sha1 --warn-shared-textrel --fatal-warnings -lunwind --no-undefined -z noexecstack --gc-sections CMakeFiles/cmTC_37f75.dir/CMakeCCompilerABI.c.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/libclang_rt.builtins.a -l:libunwind.a -lc C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/libclang_rt.builtins.a -l:libunwind.a C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/clang_rt.crtend.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/crtn.o + + + +Parsed C implicit include dir info from above output: rv=done + found start of include info + found start of implicit include info + add: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include] + add: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/aarch64-linux-ohos] + add: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] + end of search list found + collapse include dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include] + collapse include dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/aarch64-linux-ohos] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/aarch64-linux-ohos] + collapse include dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] + implicit include dirs: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/aarch64-linux-ohos;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] + + +Parsed C implicit link information from above output: + link line regex: [^( *|.*[/\])(ld\.lld\.exe|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] + ignore line: [Change Dir: D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/CMakeTmp] + ignore line: [] + ignore line: [Run Build Command(s):C:\Users\h30053725\AppData\Local\Huawei\SDK1026\openharmony\10\native\build-tools\cmake\bin\ninja.exe cmTC_37f75 && [1/2] Building C object CMakeFiles/cmTC_37f75.dir/CMakeCCompilerABI.c.o] + ignore line: [OHOS (dev) clang version 15.0.4 (llvm-project d1aa604d90b55a96aa22af9992d170fccbd41938)] + ignore line: [Target: aarch64-unknown-linux-ohos] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin] + ignore line: [clang: warning: argument unused during compilation: '--gcc-toolchain=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm' [-Wunused-command-line-argument]] + ignore line: [ (in-process)] + ignore line: [ "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang.exe" -cc1 -triple aarch64-unknown-linux-ohos -emit-obj -mrelax-all -mnoexecstack -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCCompilerABI.c -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=non-leaf -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=1 -target-cpu generic -target-feature +neon -target-feature +v8a -target-feature +fix-cortex-a53-835769 -target-abi aapcs -fallow-half-arguments-and-returns -mllvm -treat-scalable-fixed-error-as-warning -debugger-tuning=gdb -v -ffunction-sections -fdata-sections -fcoverage-compilation-dir=D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/CMakeTmp -resource-dir C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4 -D __MUSL__ -isysroot C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot -internal-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/aarch64-linux-ohos -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/include -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include -Wformat -Werror=format-security -fdebug-compilation-dir=D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/CMakeTmp -ferror-limit 19 -stack-protector 2 -fno-signed-char -fgnuc-version=4.2.1 -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_37f75.dir/CMakeCCompilerABI.c.o -x c C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeCCompilerABI.c] + ignore line: [clang -cc1 version 15.0.4 based upon LLVM 15.0.4 default target x86_64-w64-windows-gnu] + ignore line: [ignoring nonexistent directory "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/include"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include] + ignore line: [ C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/aarch64-linux-ohos] + ignore line: [ C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] + ignore line: [End of search list.] + ignore line: [[2/2] Linking C executable cmTC_37f75] + ignore line: [OHOS (dev) clang version 15.0.4 (llvm-project d1aa604d90b55a96aa22af9992d170fccbd41938)] + ignore line: [Target: aarch64-unknown-linux-ohos] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin] + link line: [ "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/ld.lld" --sysroot=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot -pie -EL --fix-cortex-a53-843419 -z now -z relro -z max-page-size=4096 --hash-style=gnu --hash-style=both --enable-new-dtags --eh-frame-hdr -m aarch64linux -dynamic-linker /lib/ld-musl-aarch64.so.1 -o cmTC_37f75 C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/Scrt1.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/crti.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/clang_rt.crtbegin.o -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/ -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/aarch64-linux-ohos/ -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/ --build-id=sha1 --warn-shared-textrel --fatal-warnings -lunwind --no-undefined -z noexecstack --gc-sections CMakeFiles/cmTC_37f75.dir/CMakeCCompilerABI.c.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/libclang_rt.builtins.a -l:libunwind.a -lc C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/libclang_rt.builtins.a -l:libunwind.a C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/clang_rt.crtend.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/crtn.o] + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/ld.lld] ==> ignore + arg [--sysroot=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot] ==> ignore + arg [-pie] ==> ignore + arg [-EL] ==> ignore + arg [--fix-cortex-a53-843419] ==> ignore + arg [-znow] ==> ignore + arg [-zrelro] ==> ignore + arg [-zmax-page-size=4096] ==> ignore + arg [--hash-style=gnu] ==> ignore + arg [--hash-style=both] ==> ignore + arg [--enable-new-dtags] ==> ignore + arg [--eh-frame-hdr] ==> ignore + arg [-m] ==> ignore + arg [aarch64linux] ==> ignore + arg [-dynamic-linker] ==> ignore + arg [/lib/ld-musl-aarch64.so.1] ==> ignore + arg [-o] ==> ignore + arg [cmTC_37f75] ==> ignore + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/Scrt1.o] ==> ignore + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/crti.o] ==> ignore + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/clang_rt.crtbegin.o] ==> ignore + arg [-LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos] ==> dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos] + arg [-LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/] ==> dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/] + arg [-LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/aarch64-linux-ohos/] ==> dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/aarch64-linux-ohos/] + arg [-LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/] ==> dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/] + arg [--build-id=sha1] ==> ignore + arg [--warn-shared-textrel] ==> ignore + arg [--fatal-warnings] ==> ignore + arg [-lunwind] ==> lib [unwind] + arg [--no-undefined] ==> ignore + arg [-znoexecstack] ==> ignore + arg [--gc-sections] ==> ignore + arg [CMakeFiles/cmTC_37f75.dir/CMakeCCompilerABI.c.o] ==> ignore + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/libclang_rt.builtins.a] ==> lib [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/libclang_rt.builtins.a] + arg [-l:libunwind.a] ==> lib [-l:libunwind.a] + arg [-lc] ==> lib [c] + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/libclang_rt.builtins.a] ==> lib [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/libclang_rt.builtins.a] + arg [-l:libunwind.a] ==> lib [-l:libunwind.a] + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/clang_rt.crtend.o] ==> ignore + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/crtn.o] ==> ignore + remove lib [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/libclang_rt.builtins.a] + remove lib [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/libclang_rt.builtins.a] + collapse library dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos] + collapse library dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib] + collapse library dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/aarch64-linux-ohos/] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/aarch64-linux-ohos] + collapse library dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos] + implicit libs: [unwind;-l:libunwind.a;c;-l:libunwind.a] + implicit dirs: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/aarch64-linux-ohos;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos] + implicit fwks: [] + + +Determining if the CXX compiler works passed with the following output: +Change Dir: D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/CMakeTmp + +Run Build Command(s):C:\Users\h30053725\AppData\Local\Huawei\SDK1026\openharmony\10\native\build-tools\cmake\bin\ninja.exe cmTC_16fe9 && [1/2] Building CXX object CMakeFiles/cmTC_16fe9.dir/testCXXCompiler.cxx.o +clang++: warning: argument unused during compilation: '--gcc-toolchain=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm' [-Wunused-command-line-argument] +[2/2] Linking CXX executable cmTC_16fe9 + + + +Detecting CXX compiler ABI info compiled with the following output: +Change Dir: D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/CMakeTmp + +Run Build Command(s):C:\Users\h30053725\AppData\Local\Huawei\SDK1026\openharmony\10\native\build-tools\cmake\bin\ninja.exe cmTC_1c759 && [1/2] Building CXX object CMakeFiles/cmTC_1c759.dir/CMakeCXXCompilerABI.cpp.o +OHOS (dev) clang version 15.0.4 (llvm-project d1aa604d90b55a96aa22af9992d170fccbd41938) +Target: aarch64-unknown-linux-ohos +Thread model: posix +InstalledDir: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin +clang++: warning: argument unused during compilation: '--gcc-toolchain=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm' [-Wunused-command-line-argument] + (in-process) + "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang++.exe" -cc1 -triple aarch64-unknown-linux-ohos -emit-obj -mrelax-all -mnoexecstack -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCXXCompilerABI.cpp -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=non-leaf -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=1 -target-cpu generic -target-feature +neon -target-feature +v8a -target-feature +fix-cortex-a53-835769 -target-abi aapcs -fallow-half-arguments-and-returns -mllvm -treat-scalable-fixed-error-as-warning -debugger-tuning=gdb -v -ffunction-sections -fdata-sections -fcoverage-compilation-dir=D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/CMakeTmp -resource-dir C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4 -D __MUSL__ -isysroot C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot -internal-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../include/libcxx-ohos/include/c++/v1 -internal-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/aarch64-linux-ohos -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/include -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include -Wformat -Werror=format-security -fdeprecated-macro -fdebug-compilation-dir=D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/CMakeTmp -ferror-limit 19 -stack-protector 2 -fno-signed-char -fgnuc-version=4.2.1 -fcxx-exceptions -fexceptions -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_1c759.dir/CMakeCXXCompilerABI.cpp.o -x c++ C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeCXXCompilerABI.cpp +clang -cc1 version 15.0.4 based upon LLVM 15.0.4 default target x86_64-w64-windows-gnu +ignoring nonexistent directory "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/include" +#include "..." search starts here: +#include <...> search starts here: + C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../include/libcxx-ohos/include/c++/v1 + C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include + C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/aarch64-linux-ohos + C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include +End of search list. +[2/2] Linking CXX executable cmTC_1c759 +OHOS (dev) clang version 15.0.4 (llvm-project d1aa604d90b55a96aa22af9992d170fccbd41938) +Target: aarch64-unknown-linux-ohos +Thread model: posix +InstalledDir: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin + "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/ld.lld" --sysroot=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot -pie -EL --fix-cortex-a53-843419 -z now -z relro -z max-page-size=4096 --hash-style=gnu --hash-style=both --enable-new-dtags --eh-frame-hdr -m aarch64linux -dynamic-linker /lib/ld-musl-aarch64.so.1 -o cmTC_1c759 C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/Scrt1.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/crti.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/clang_rt.crtbegin.o -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/ -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/aarch64-linux-ohos/ -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/ --build-id=sha1 --warn-shared-textrel --fatal-warnings -lunwind --no-undefined -z noexecstack --gc-sections CMakeFiles/cmTC_1c759.dir/CMakeCXXCompilerABI.cpp.o -Bstatic -lc++ -lc++abi -lunwind -Bdynamic -lm C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/libclang_rt.builtins.a -l:libunwind.a -lc C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/libclang_rt.builtins.a -l:libunwind.a C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/clang_rt.crtend.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/crtn.o + + + +Parsed CXX implicit include dir info from above output: rv=done + found start of include info + found start of implicit include info + add: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../include/libcxx-ohos/include/c++/v1] + add: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include] + add: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/aarch64-linux-ohos] + add: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] + end of search list found + collapse include dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../include/libcxx-ohos/include/c++/v1] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/include/libcxx-ohos/include/c++/v1] + collapse include dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include] + collapse include dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/aarch64-linux-ohos] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/aarch64-linux-ohos] + collapse include dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] + implicit include dirs: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/include/libcxx-ohos/include/c++/v1;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/aarch64-linux-ohos;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] + + +Parsed CXX implicit link information from above output: + link line regex: [^( *|.*[/\])(ld\.lld\.exe|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] + ignore line: [Change Dir: D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/CMakeTmp] + ignore line: [] + ignore line: [Run Build Command(s):C:\Users\h30053725\AppData\Local\Huawei\SDK1026\openharmony\10\native\build-tools\cmake\bin\ninja.exe cmTC_1c759 && [1/2] Building CXX object CMakeFiles/cmTC_1c759.dir/CMakeCXXCompilerABI.cpp.o] + ignore line: [OHOS (dev) clang version 15.0.4 (llvm-project d1aa604d90b55a96aa22af9992d170fccbd41938)] + ignore line: [Target: aarch64-unknown-linux-ohos] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin] + ignore line: [clang++: warning: argument unused during compilation: '--gcc-toolchain=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm' [-Wunused-command-line-argument]] + ignore line: [ (in-process)] + ignore line: [ "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang++.exe" -cc1 -triple aarch64-unknown-linux-ohos -emit-obj -mrelax-all -mnoexecstack -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCXXCompilerABI.cpp -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=non-leaf -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=1 -target-cpu generic -target-feature +neon -target-feature +v8a -target-feature +fix-cortex-a53-835769 -target-abi aapcs -fallow-half-arguments-and-returns -mllvm -treat-scalable-fixed-error-as-warning -debugger-tuning=gdb -v -ffunction-sections -fdata-sections -fcoverage-compilation-dir=D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/CMakeTmp -resource-dir C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4 -D __MUSL__ -isysroot C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot -internal-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../include/libcxx-ohos/include/c++/v1 -internal-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/aarch64-linux-ohos -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/include -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include -Wformat -Werror=format-security -fdeprecated-macro -fdebug-compilation-dir=D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/CMakeTmp -ferror-limit 19 -stack-protector 2 -fno-signed-char -fgnuc-version=4.2.1 -fcxx-exceptions -fexceptions -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_1c759.dir/CMakeCXXCompilerABI.cpp.o -x c++ C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeCXXCompilerABI.cpp] + ignore line: [clang -cc1 version 15.0.4 based upon LLVM 15.0.4 default target x86_64-w64-windows-gnu] + ignore line: [ignoring nonexistent directory "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/include"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../include/libcxx-ohos/include/c++/v1] + ignore line: [ C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include] + ignore line: [ C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/aarch64-linux-ohos] + ignore line: [ C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] + ignore line: [End of search list.] + ignore line: [[2/2] Linking CXX executable cmTC_1c759] + ignore line: [OHOS (dev) clang version 15.0.4 (llvm-project d1aa604d90b55a96aa22af9992d170fccbd41938)] + ignore line: [Target: aarch64-unknown-linux-ohos] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin] + link line: [ "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/ld.lld" --sysroot=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot -pie -EL --fix-cortex-a53-843419 -z now -z relro -z max-page-size=4096 --hash-style=gnu --hash-style=both --enable-new-dtags --eh-frame-hdr -m aarch64linux -dynamic-linker /lib/ld-musl-aarch64.so.1 -o cmTC_1c759 C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/Scrt1.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/crti.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/clang_rt.crtbegin.o -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/ -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/aarch64-linux-ohos/ -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/ --build-id=sha1 --warn-shared-textrel --fatal-warnings -lunwind --no-undefined -z noexecstack --gc-sections CMakeFiles/cmTC_1c759.dir/CMakeCXXCompilerABI.cpp.o -Bstatic -lc++ -lc++abi -lunwind -Bdynamic -lm C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/libclang_rt.builtins.a -l:libunwind.a -lc C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/libclang_rt.builtins.a -l:libunwind.a C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/clang_rt.crtend.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/crtn.o] + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/ld.lld] ==> ignore + arg [--sysroot=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot] ==> ignore + arg [-pie] ==> ignore + arg [-EL] ==> ignore + arg [--fix-cortex-a53-843419] ==> ignore + arg [-znow] ==> ignore + arg [-zrelro] ==> ignore + arg [-zmax-page-size=4096] ==> ignore + arg [--hash-style=gnu] ==> ignore + arg [--hash-style=both] ==> ignore + arg [--enable-new-dtags] ==> ignore + arg [--eh-frame-hdr] ==> ignore + arg [-m] ==> ignore + arg [aarch64linux] ==> ignore + arg [-dynamic-linker] ==> ignore + arg [/lib/ld-musl-aarch64.so.1] ==> ignore + arg [-o] ==> ignore + arg [cmTC_1c759] ==> ignore + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/Scrt1.o] ==> ignore + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/crti.o] ==> ignore + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/clang_rt.crtbegin.o] ==> ignore + arg [-LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos] ==> dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos] + arg [-LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/] ==> dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/] + arg [-LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/aarch64-linux-ohos/] ==> dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/aarch64-linux-ohos/] + arg [-LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/] ==> dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/] + arg [--build-id=sha1] ==> ignore + arg [--warn-shared-textrel] ==> ignore + arg [--fatal-warnings] ==> ignore + arg [-lunwind] ==> lib [unwind] + arg [--no-undefined] ==> ignore + arg [-znoexecstack] ==> ignore + arg [--gc-sections] ==> ignore + arg [CMakeFiles/cmTC_1c759.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore + arg [-Bstatic] ==> ignore + arg [-lc++] ==> lib [c++] + arg [-lc++abi] ==> lib [c++abi] + arg [-lunwind] ==> lib [unwind] + arg [-Bdynamic] ==> ignore + arg [-lm] ==> lib [m] + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/libclang_rt.builtins.a] ==> lib [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/libclang_rt.builtins.a] + arg [-l:libunwind.a] ==> lib [-l:libunwind.a] + arg [-lc] ==> lib [c] + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/libclang_rt.builtins.a] ==> lib [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/libclang_rt.builtins.a] + arg [-l:libunwind.a] ==> lib [-l:libunwind.a] + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/clang_rt.crtend.o] ==> ignore + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/crtn.o] ==> ignore + remove lib [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/libclang_rt.builtins.a] + remove lib [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos/libclang_rt.builtins.a] + collapse library dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos] + collapse library dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib] + collapse library dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/aarch64-linux-ohos/] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/aarch64-linux-ohos] + collapse library dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos/] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos] + implicit libs: [unwind;c++;c++abi;unwind;m;-l:libunwind.a;c;-l:libunwind.a] + implicit dirs: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/aarch64-linux-ohos;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/aarch64-linux-ohos;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/aarch64-linux-ohos] + implicit fwks: [] + + diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/TargetDirectories.txt b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/TargetDirectories.txt new file mode 100644 index 0000000000000000000000000000000000000000..fffb8b48f3e48b122d2d790f73ada005097e3ad4 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/TargetDirectories.txt @@ -0,0 +1,3 @@ +D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/infoutil.dir +D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/edit_cache.dir +D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/rebuild_cache.dir diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/cmake.check_cache b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/cmake.check_cache new file mode 100644 index 0000000000000000000000000000000000000000..3dccd731726d7faa8b29d8d7dba3b981a53ca497 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/cmake.check_cache @@ -0,0 +1 @@ +# This file is generated by cmake for dependency checking of the CMakeCache.txt file diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/infoutil.dir/napi_info_util.cpp.o b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/infoutil.dir/napi_info_util.cpp.o new file mode 100644 index 0000000000000000000000000000000000000000..5fd71a9b8ee1af0faf48ad159898997d94a1c74d Binary files /dev/null and b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/infoutil.dir/napi_info_util.cpp.o differ diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/infoutil.dir/native_module.cpp.o b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/infoutil.dir/native_module.cpp.o new file mode 100644 index 0000000000000000000000000000000000000000..fd5dbaa44367fc65b46227796dfc2eb9df17b65e Binary files /dev/null and b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/CMakeFiles/infoutil.dir/native_module.cpp.o differ diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/build.ninja b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/build.ninja new file mode 100644 index 0000000000000000000000000000000000000000..c2487f67be003898ca123677f23e4c18c5ba1044 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/build.ninja @@ -0,0 +1,155 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Ninja" Generator, CMake Version 3.16 + +# This file contains all the build statements describing the +# compilation DAG. + +# ============================================================================= +# Write statements declared in CMakeLists.txt: +# +# Which is the root file. +# ============================================================================= + +# ============================================================================= +# Project: XComponent +# Configuration: Release +# ============================================================================= + +############################################# +# Minimal version of Ninja required by this file + +ninja_required_version = 1.5 + +# ============================================================================= +# Include auxiliary files. + + +############################################# +# Include rules file. + +include rules.ninja + +# ============================================================================= +# Object build statements for SHARED_LIBRARY target infoutil + + +############################################# +# Order-only phony target for infoutil + +build cmake_object_order_depends_target_infoutil: phony || CMakeFiles/infoutil.dir + +build CMakeFiles/infoutil.dir/native_module.cpp.o: CXX_COMPILER__infoutil D$:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/src/main/cpp/native_module.cpp || cmake_object_order_depends_target_infoutil + DEFINES = -Dinfoutil_EXPORTS + DEP_FILE = CMakeFiles\infoutil.dir\native_module.cpp.o.d + FLAGS = -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -fno-addrsig -Wa,--noexecstack -Wformat -Werror=format-security -D__MUSL__ -O2 -DNDEBUG -fPIC + INCLUDES = -IC:/Users/h30053725/AppData/Local/Huawei/SDK1026/hmscore/4.0.0/native/sysroot/usr/include -ID:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/src/main/cpp -ID:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/src/main/cpp/include + OBJECT_DIR = CMakeFiles\infoutil.dir + OBJECT_FILE_DIR = CMakeFiles\infoutil.dir + TARGET_COMPILE_PDB = CMakeFiles\infoutil.dir\ + TARGET_PDB = D:\Program\OpenHarmony\HarmonyOS_Codelab1027git\HarmonyOS_Codelab\Samples\FormGame\entry\build\default\intermediates\cmake\default\obj\arm64-v8a\libinfoutil.pdb + +build CMakeFiles/infoutil.dir/napi_info_util.cpp.o: CXX_COMPILER__infoutil D$:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/src/main/cpp/napi_info_util.cpp || cmake_object_order_depends_target_infoutil + DEFINES = -Dinfoutil_EXPORTS + DEP_FILE = CMakeFiles\infoutil.dir\napi_info_util.cpp.o.d + FLAGS = -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -fno-addrsig -Wa,--noexecstack -Wformat -Werror=format-security -D__MUSL__ -O2 -DNDEBUG -fPIC + INCLUDES = -IC:/Users/h30053725/AppData/Local/Huawei/SDK1026/hmscore/4.0.0/native/sysroot/usr/include -ID:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/src/main/cpp -ID:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/src/main/cpp/include + OBJECT_DIR = CMakeFiles\infoutil.dir + OBJECT_FILE_DIR = CMakeFiles\infoutil.dir + TARGET_COMPILE_PDB = CMakeFiles\infoutil.dir\ + TARGET_PDB = D:\Program\OpenHarmony\HarmonyOS_Codelab1027git\HarmonyOS_Codelab\Samples\FormGame\entry\build\default\intermediates\cmake\default\obj\arm64-v8a\libinfoutil.pdb + + +# ============================================================================= +# Link build statements for SHARED_LIBRARY target infoutil + + +############################################# +# Link the shared library D:\Program\OpenHarmony\HarmonyOS_Codelab1027git\HarmonyOS_Codelab\Samples\FormGame\entry\build\default\intermediates\cmake\default\obj\arm64-v8a\libinfoutil.so + +build D$:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/build/default/intermediates/cmake/default/obj/arm64-v8a/libinfoutil.so: CXX_SHARED_LIBRARY_LINKER__infoutil CMakeFiles/infoutil.dir/native_module.cpp.o CMakeFiles/infoutil.dir/napi_info_util.cpp.o + LANGUAGE_COMPILE_FLAGS = -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -fno-addrsig -Wa,--noexecstack -Wformat -Werror=format-security -D__MUSL__ -O2 -DNDEBUG + LINK_FLAGS = --rtlib=compiler-rt -fuse-ld=lld -static-libstdc++ -Wl,--build-id=sha1 -Wl,--warn-shared-textrel -Wl,--fatal-warnings -lunwind -Wl,--no-undefined -Qunused-arguments -Wl,-z,noexecstack + LINK_LIBRARIES = -lace_napi.z -lhilog_ndk.z -lm + OBJECT_DIR = CMakeFiles\infoutil.dir + POST_BUILD = cd . + PRE_LINK = cd . + SONAME = libinfoutil.so + SONAME_FLAG = -Wl,-soname, + TARGET_COMPILE_PDB = CMakeFiles\infoutil.dir\ + TARGET_FILE = D:\Program\OpenHarmony\HarmonyOS_Codelab1027git\HarmonyOS_Codelab\Samples\FormGame\entry\build\default\intermediates\cmake\default\obj\arm64-v8a\libinfoutil.so + TARGET_PDB = D:\Program\OpenHarmony\HarmonyOS_Codelab1027git\HarmonyOS_Codelab\Samples\FormGame\entry\build\default\intermediates\cmake\default\obj\arm64-v8a\libinfoutil.pdb + + +############################################# +# Utility command for edit_cache + +build CMakeFiles/edit_cache.util: CUSTOM_COMMAND + COMMAND = cmd.exe /C "cd /D D:\Program\OpenHarmony\HarmonyOS_Codelab1027git\HarmonyOS_Codelab\Samples\FormGame\entry\.cxx\default\default\arm64-v8a && C:\Users\h30053725\AppData\Local\Huawei\SDK1026\openharmony\10\native\build-tools\cmake\bin\cmake-gui.exe -SD:\Program\OpenHarmony\HarmonyOS_Codelab1027git\HarmonyOS_Codelab\Samples\FormGame\entry\src\main\cpp -BD:\Program\OpenHarmony\HarmonyOS_Codelab1027git\HarmonyOS_Codelab\Samples\FormGame\entry\.cxx\default\default\arm64-v8a" + DESC = Running CMake cache editor... + pool = console + restat = 1 + +build edit_cache: phony CMakeFiles/edit_cache.util + + +############################################# +# Utility command for rebuild_cache + +build CMakeFiles/rebuild_cache.util: CUSTOM_COMMAND + COMMAND = cmd.exe /C "cd /D D:\Program\OpenHarmony\HarmonyOS_Codelab1027git\HarmonyOS_Codelab\Samples\FormGame\entry\.cxx\default\default\arm64-v8a && C:\Users\h30053725\AppData\Local\Huawei\SDK1026\openharmony\10\native\build-tools\cmake\bin\cmake.exe -SD:\Program\OpenHarmony\HarmonyOS_Codelab1027git\HarmonyOS_Codelab\Samples\FormGame\entry\src\main\cpp -BD:\Program\OpenHarmony\HarmonyOS_Codelab1027git\HarmonyOS_Codelab\Samples\FormGame\entry\.cxx\default\default\arm64-v8a" + DESC = Running CMake to regenerate build system... + pool = console + restat = 1 + +build rebuild_cache: phony CMakeFiles/rebuild_cache.util + +# ============================================================================= +# Target aliases. + +build infoutil: phony D$:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/build/default/intermediates/cmake/default/obj/arm64-v8a/libinfoutil.so + +build libinfoutil.so: phony D$:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/build/default/intermediates/cmake/default/obj/arm64-v8a/libinfoutil.so + +# ============================================================================= +# Folder targets. + +# ============================================================================= + +############################################# +# Folder: D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/arm64-v8a + +build all: phony D$:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/build/default/intermediates/cmake/default/obj/arm64-v8a/libinfoutil.so + +# ============================================================================= +# Built-in targets + + +############################################# +# Make the all target the default. + +default all + +############################################# +# Re-run CMake if any of its inputs changed. + +build build.ninja: RERUN_CMAKE | C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/hmscore/4.0.0/native/build/cmake/hmos.toolchain.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeCCompiler.cmake.in C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeCCompilerABI.c C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeCInformation.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeCXXCompiler.cmake.in C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeCXXCompilerABI.cpp C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeCXXInformation.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeCommonLanguageInclude.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeCompilerIdDetection.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeDetermineCCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeDetermineCXXCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeDetermineCompileFeatures.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeDetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeDetermineCompilerABI.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeDetermineCompilerId.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeDetermineSystem.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeFindBinUtils.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeGenericSystem.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeInitializeConfigs.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeLanguageInformation.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeParseImplicitIncludeInfo.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeParseImplicitLinkInfo.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeSystem.cmake.in C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeSystemSpecificInformation.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeSystemSpecificInitialize.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeTestCCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeTestCXXCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeTestCompilerCommon.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/ADSP-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/ARMCC-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/ARMClang-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/AppleClang-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/Borland-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/Bruce-C-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/CMakeCommonCompilerMacros.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/Clang-C.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/Clang-CXX.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/Clang-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/Clang-DetermineCompilerInternal.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/Clang-FindBinUtils.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/Clang.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/Comeau-CXX-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/Compaq-C-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/Cray-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/Embarcadero-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/Fujitsu-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/GHS-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/GNU-C-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/GNU.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/HP-C-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/HP-CXX-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/IAR-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/Intel-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/MSVC-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/NVIDIA-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/PGI-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/PathScale-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/SCO-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/SDCC-C-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/SunPro-C-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/TI-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/TinyCC-C-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/VisualAge-C-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/Watcom-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/XL-C-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/XL-CXX-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/XLClang-C-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/zOS-C-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Internal/CMakeCheckCompilerFlag.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Internal/FeatureTesting.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Platform/Linux.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Platform/OHOS.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Platform/UnixPaths.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build/cmake/ohos.toolchain.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build/cmake/sdk_native_platforms.cmake CMakeCache.txt CMakeFiles/3.16.5/CMakeCCompiler.cmake CMakeFiles/3.16.5/CMakeCXXCompiler.cmake CMakeFiles/3.16.5/CMakeSystem.cmake D$:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/src/main/cpp/CMakeLists.txt + pool = console + + +############################################# +# A missing CMake input file is not an error. + +build C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/hmscore/4.0.0/native/build/cmake/hmos.toolchain.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeCCompiler.cmake.in C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeCCompilerABI.c C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeCInformation.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeCXXCompiler.cmake.in C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeCXXCompilerABI.cpp C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeCXXInformation.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeCommonLanguageInclude.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeCompilerIdDetection.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeDetermineCCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeDetermineCXXCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeDetermineCompileFeatures.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeDetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeDetermineCompilerABI.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeDetermineCompilerId.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeDetermineSystem.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeFindBinUtils.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeGenericSystem.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeInitializeConfigs.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeLanguageInformation.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeParseImplicitIncludeInfo.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeParseImplicitLinkInfo.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeSystem.cmake.in C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeSystemSpecificInformation.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeSystemSpecificInitialize.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeTestCCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeTestCXXCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeTestCompilerCommon.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/ADSP-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/ARMCC-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/ARMClang-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/AppleClang-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/Borland-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/Bruce-C-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/CMakeCommonCompilerMacros.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/Clang-C.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/Clang-CXX.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/Clang-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/Clang-DetermineCompilerInternal.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/Clang-FindBinUtils.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/Clang.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/Comeau-CXX-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/Compaq-C-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/Cray-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/Embarcadero-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/Fujitsu-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/GHS-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/GNU-C-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/GNU.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/HP-C-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/HP-CXX-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/IAR-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/Intel-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/MSVC-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/NVIDIA-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/PGI-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/PathScale-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/SCO-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/SDCC-C-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/SunPro-C-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/TI-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/TinyCC-C-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/VisualAge-C-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/Watcom-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/XL-C-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/XL-CXX-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/XLClang-C-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/zOS-C-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Internal/CMakeCheckCompilerFlag.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Internal/FeatureTesting.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Platform/Linux.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Platform/OHOS.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Platform/UnixPaths.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build/cmake/ohos.toolchain.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build/cmake/sdk_native_platforms.cmake CMakeCache.txt CMakeFiles/3.16.5/CMakeCCompiler.cmake CMakeFiles/3.16.5/CMakeCXXCompiler.cmake CMakeFiles/3.16.5/CMakeSystem.cmake D$:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/src/main/cpp/CMakeLists.txt: phony + + +############################################# +# Clean all the built files. + +build clean: CLEAN + + +############################################# +# Print all primary targets available. + +build help: HELP + diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/cmake_install.cmake b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/cmake_install.cmake new file mode 100644 index 0000000000000000000000000000000000000000..d8b705da5d8372869109033de08f3be1ce6b9554 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/cmake_install.cmake @@ -0,0 +1,49 @@ +# Install script for directory: D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/src/main/cpp + +# Set the install prefix +if(NOT DEFINED CMAKE_INSTALL_PREFIX) + set(CMAKE_INSTALL_PREFIX "C:/Program Files (x86)/XComponent") +endif() +string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") + +# Set the install configuration name. +if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + if(BUILD_TYPE) + string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" + CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") + else() + set(CMAKE_INSTALL_CONFIG_NAME "Release") + endif() + message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") +endif() + +# Set the component getting installed. +if(NOT CMAKE_INSTALL_COMPONENT) + if(COMPONENT) + message(STATUS "Install component: \"${COMPONENT}\"") + set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") + else() + set(CMAKE_INSTALL_COMPONENT) + endif() +endif() + +# Install shared libraries without execute permission? +if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) + set(CMAKE_INSTALL_SO_NO_EXE "0") +endif() + +# Is this installation the result of a crosscompile? +if(NOT DEFINED CMAKE_CROSSCOMPILING) + set(CMAKE_CROSSCOMPILING "TRUE") +endif() + +if(CMAKE_INSTALL_COMPONENT) + set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt") +else() + set(CMAKE_INSTALL_MANIFEST "install_manifest.txt") +endif() + +string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT + "${CMAKE_INSTALL_MANIFEST_FILES}") +file(WRITE "D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/arm64-v8a/${CMAKE_INSTALL_MANIFEST}" + "${CMAKE_INSTALL_MANIFEST_CONTENT}") diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/compile_commands.json b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/compile_commands.json new file mode 100644 index 0000000000000000000000000000000000000000..2c393ef33560f42455d8c04750f8f48390b937ca --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/compile_commands.json @@ -0,0 +1,13 @@ +[ +{ + "directory": "D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/arm64-v8a", + "command": "C:\\Users\\h30053725\\AppData\\Local\\Huawei\\SDK1026\\openharmony\\10\\native\\llvm\\bin\\clang++.exe --target=aarch64-linux-ohos --gcc-toolchain=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm --sysroot=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot -Dinfoutil_EXPORTS -IC:/Users/h30053725/AppData/Local/Huawei/SDK1026/hmscore/4.0.0/native/sysroot/usr/include -ID:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/src/main/cpp -ID:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/src/main/cpp/include -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -fno-addrsig -Wa,--noexecstack -Wformat -Werror=format-security -D__MUSL__ -O2 -DNDEBUG -fPIC -o CMakeFiles\\infoutil.dir\\native_module.cpp.o -c D:\\Program\\OpenHarmony\\HarmonyOS_Codelab1027git\\HarmonyOS_Codelab\\Samples\\FormGame\\entry\\src\\main\\cpp\\native_module.cpp", + "file": "D:\\Program\\OpenHarmony\\HarmonyOS_Codelab1027git\\HarmonyOS_Codelab\\Samples\\FormGame\\entry\\src\\main\\cpp\\native_module.cpp" +}, + +{ + "directory": "D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/arm64-v8a", + "command": "C:\\Users\\h30053725\\AppData\\Local\\Huawei\\SDK1026\\openharmony\\10\\native\\llvm\\bin\\clang++.exe --target=aarch64-linux-ohos --gcc-toolchain=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm --sysroot=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot -Dinfoutil_EXPORTS -IC:/Users/h30053725/AppData/Local/Huawei/SDK1026/hmscore/4.0.0/native/sysroot/usr/include -ID:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/src/main/cpp -ID:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/src/main/cpp/include -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -fno-addrsig -Wa,--noexecstack -Wformat -Werror=format-security -D__MUSL__ -O2 -DNDEBUG -fPIC -o CMakeFiles\\infoutil.dir\\napi_info_util.cpp.o -c D:\\Program\\OpenHarmony\\HarmonyOS_Codelab1027git\\HarmonyOS_Codelab\\Samples\\FormGame\\entry\\src\\main\\cpp\\napi_info_util.cpp", + "file": "D:\\Program\\OpenHarmony\\HarmonyOS_Codelab1027git\\HarmonyOS_Codelab\\Samples\\FormGame\\entry\\src\\main\\cpp\\napi_info_util.cpp" +} +] \ No newline at end of file diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/configure_fingerprint b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/configure_fingerprint new file mode 100644 index 0000000000000000000000000000000000000000..58997143f0ff3f0534ea69c5f7211dfb196ecd89 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/configure_fingerprint @@ -0,0 +1 @@ +0485a32c3e7c4515c602cb59afd0e843339fdd87153eeb4386eb560a737941a0 \ No newline at end of file diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/rules.ninja b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/rules.ninja new file mode 100644 index 0000000000000000000000000000000000000000..4962551c1e64d58a62c68a769e65ccd73844774f --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/arm64-v8a/rules.ninja @@ -0,0 +1,64 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Ninja" Generator, CMake Version 3.16 + +# This file contains all the rules used to get the outputs files +# built from the input files. +# It is included in the main 'build.ninja'. + +# ============================================================================= +# Project: XComponent +# Configuration: Release +# ============================================================================= +# ============================================================================= + +############################################# +# Rule for compiling CXX files. + +rule CXX_COMPILER__infoutil + depfile = $DEP_FILE + deps = gcc + command = C:\Users\h30053725\AppData\Local\Huawei\SDK1026\openharmony\10\native\llvm\bin\clang++.exe --target=aarch64-linux-ohos --gcc-toolchain=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm --sysroot=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot $DEFINES $INCLUDES $FLAGS -MD -MT $out -MF $DEP_FILE -o $out -c $in + description = Building CXX object $out + + +############################################# +# Rule for linking CXX shared library. + +rule CXX_SHARED_LIBRARY_LINKER__infoutil + command = cmd.exe /C "$PRE_LINK && C:\Users\h30053725\AppData\Local\Huawei\SDK1026\openharmony\10\native\llvm\bin\clang++.exe --target=aarch64-linux-ohos --gcc-toolchain=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm --sysroot=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot -fPIC $LANGUAGE_COMPILE_FLAGS $ARCH_FLAGS $LINK_FLAGS -shared $SONAME_FLAG$SONAME -o $TARGET_FILE $in $LINK_PATH $LINK_LIBRARIES && $POST_BUILD" + description = Linking CXX shared library $TARGET_FILE + restat = $RESTAT + + +############################################# +# Rule for running custom commands. + +rule CUSTOM_COMMAND + command = $COMMAND + description = $DESC + + +############################################# +# Rule for re-running cmake. + +rule RERUN_CMAKE + command = C:\Users\h30053725\AppData\Local\Huawei\SDK1026\openharmony\10\native\build-tools\cmake\bin\cmake.exe -SD:\Program\OpenHarmony\HarmonyOS_Codelab1027git\HarmonyOS_Codelab\Samples\FormGame\entry\src\main\cpp -BD:\Program\OpenHarmony\HarmonyOS_Codelab1027git\HarmonyOS_Codelab\Samples\FormGame\entry\.cxx\default\default\arm64-v8a + description = Re-running CMake... + generator = 1 + + +############################################# +# Rule for cleaning all built files. + +rule CLEAN + command = C:\Users\h30053725\AppData\Local\Huawei\SDK1026\openharmony\10\native\build-tools\cmake\bin\ninja.exe -t clean + description = Cleaning all built files... + + +############################################# +# Rule for printing all primary targets available. + +rule HELP + command = C:\Users\h30053725\AppData\Local\Huawei\SDK1026\openharmony\10\native\build-tools\cmake\bin\ninja.exe -t targets + description = All primary targets available: + diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/.cmake/api/v1/reply/codemodel-v2-33edaa3311b66d1f3a36.json b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/.cmake/api/v1/reply/codemodel-v2-33edaa3311b66d1f3a36.json new file mode 100644 index 0000000000000000000000000000000000000000..f5d7887e8b9c9884f75a11e0f0bb6e4e779f43ff --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/.cmake/api/v1/reply/codemodel-v2-33edaa3311b66d1f3a36.json @@ -0,0 +1,59 @@ +{ + "configurations" : + [ + { + "directories" : + [ + { + "build" : ".", + "minimumCMakeVersion" : + { + "string" : "3.6.0" + }, + "projectIndex" : 0, + "source" : ".", + "targetIndexes" : + [ + 0 + ] + } + ], + "name" : "Release", + "projects" : + [ + { + "directoryIndexes" : + [ + 0 + ], + "name" : "XComponent", + "targetIndexes" : + [ + 0 + ] + } + ], + "targets" : + [ + { + "directoryIndex" : 0, + "id" : "infoutil::@6890427a1f51a3e7e1df", + "jsonFile" : "target-infoutil-Release-12482f8aa6b7a9d4cd9f.json", + "name" : "infoutil", + "projectIndex" : 0 + } + ] + } + ], + "kind" : "codemodel", + "paths" : + { + "build" : "D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/armeabi-v7a", + "source" : "D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/src/main/cpp" + }, + "version" : + { + "major" : 2, + "minor" : 0 + } +} diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/.cmake/api/v1/reply/index-2023-11-02T03-12-32-0648.json b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/.cmake/api/v1/reply/index-2023-11-02T03-12-32-0648.json new file mode 100644 index 0000000000000000000000000000000000000000..ac45c6f04c83d68b8709bd8eaed0a0dcbc587018 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/.cmake/api/v1/reply/index-2023-11-02T03-12-32-0648.json @@ -0,0 +1,69 @@ +{ + "cmake" : + { + "generator" : + { + "name" : "Ninja" + }, + "paths" : + { + "cmake" : "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/bin/cmake.exe", + "cpack" : "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/bin/cpack.exe", + "ctest" : "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/bin/ctest.exe", + "root" : "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16" + }, + "version" : + { + "isDirty" : false, + "major" : 3, + "minor" : 16, + "patch" : 5, + "string" : "3.16.5", + "suffix" : "" + } + }, + "objects" : + [ + { + "jsonFile" : "codemodel-v2-33edaa3311b66d1f3a36.json", + "kind" : "codemodel", + "version" : + { + "major" : 2, + "minor" : 0 + } + }, + { + "jsonFile" : "cmakeFiles-v1-bd42318860b1a39b7a69.json", + "kind" : "cmakeFiles", + "version" : + { + "major" : 1, + "minor" : 0 + } + } + ], + "reply" : + { + "cmakeFiles-v1" : + { + "jsonFile" : "cmakeFiles-v1-bd42318860b1a39b7a69.json", + "kind" : "cmakeFiles", + "version" : + { + "major" : 1, + "minor" : 0 + } + }, + "codemodel-v2" : + { + "jsonFile" : "codemodel-v2-33edaa3311b66d1f3a36.json", + "kind" : "codemodel", + "version" : + { + "major" : 2, + "minor" : 0 + } + } + } +} diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/.cmake/api/v1/reply/target-infoutil-Release-12482f8aa6b7a9d4cd9f.json b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/.cmake/api/v1/reply/target-infoutil-Release-12482f8aa6b7a9d4cd9f.json new file mode 100644 index 0000000000000000000000000000000000000000..a277e687e433c250bff6de84df341503b5eaf720 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/.cmake/api/v1/reply/target-infoutil-Release-12482f8aa6b7a9d4cd9f.json @@ -0,0 +1,182 @@ +{ + "artifacts" : + [ + { + "path" : "D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/build/default/intermediates/cmake/default/obj/armeabi-v7a/libinfoutil.so" + } + ], + "backtrace" : 1, + "backtraceGraph" : + { + "commands" : + [ + "add_library", + "target_link_libraries", + "include_directories", + "include", + "project" + ], + "files" : + [ + "CMakeLists.txt", + "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/hmscore/4.0.0/native/build/cmake/hmos.toolchain.cmake", + "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeDetermineSystem.cmake" + ], + "nodes" : + [ + { + "file" : 0 + }, + { + "command" : 0, + "file" : 0, + "line" : 23, + "parent" : 0 + }, + { + "command" : 1, + "file" : 0, + "line" : 24, + "parent" : 0 + }, + { + "command" : 4, + "file" : 0, + "line" : 16, + "parent" : 0 + }, + { + "file" : 2, + "parent" : 3 + }, + { + "command" : 3, + "file" : 2, + "line" : 93, + "parent" : 4 + }, + { + "file" : 1, + "parent" : 5 + }, + { + "command" : 2, + "file" : 1, + "line" : 25, + "parent" : 6 + }, + { + "command" : 2, + "file" : 0, + "line" : 20, + "parent" : 0 + } + ] + }, + "compileGroups" : + [ + { + "compileCommandFragments" : + [ + { + "fragment" : "-fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -fno-addrsig -Wa,--noexecstack -Wformat -Werror=format-security -march=armv7a -D__MUSL__ -O2 -DNDEBUG -fPIC " + } + ], + "defines" : + [ + { + "define" : "infoutil_EXPORTS" + } + ], + "includes" : + [ + { + "backtrace" : 7, + "path" : "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/hmscore/4.0.0/native/sysroot/usr/include" + }, + { + "backtrace" : 8, + "path" : "D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/src/main/cpp" + }, + { + "backtrace" : 8, + "path" : "D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/src/main/cpp/include" + } + ], + "language" : "CXX", + "sourceIndexes" : + [ + 0, + 1 + ], + "sysroot" : + { + "path" : "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot" + } + } + ], + "id" : "infoutil::@6890427a1f51a3e7e1df", + "link" : + { + "commandFragments" : + [ + { + "fragment" : "--rtlib=compiler-rt -fuse-ld=lld -static-libstdc++ -Wl,--build-id=sha1 -Wl,--warn-shared-textrel -Wl,--fatal-warnings -lunwind -Wl,--no-undefined -Qunused-arguments -Wl,-z,noexecstack", + "role" : "flags" + }, + { + "backtrace" : 2, + "fragment" : "-lace_napi.z", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "-lhilog_ndk.z", + "role" : "libraries" + }, + { + "fragment" : "-lm", + "role" : "libraries" + } + ], + "language" : "CXX", + "sysroot" : + { + "path" : "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot" + } + }, + "name" : "infoutil", + "nameOnDisk" : "libinfoutil.so", + "paths" : + { + "build" : ".", + "source" : "." + }, + "sourceGroups" : + [ + { + "name" : "Source Files", + "sourceIndexes" : + [ + 0, + 1 + ] + } + ], + "sources" : + [ + { + "backtrace" : 1, + "compileGroupIndex" : 0, + "path" : "native_module.cpp", + "sourceGroupIndex" : 0 + }, + { + "backtrace" : 1, + "compileGroupIndex" : 0, + "path" : "napi_info_util.cpp", + "sourceGroupIndex" : 0 + } + ], + "type" : "SHARED_LIBRARY" +} diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/.ninja_deps b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/.ninja_deps new file mode 100644 index 0000000000000000000000000000000000000000..8c1c419b2e410de5e9d9e8f3812a2189cc12be91 Binary files /dev/null and b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/.ninja_deps differ diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/.ninja_log b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/.ninja_log new file mode 100644 index 0000000000000000000000000000000000000000..604ac7abb3bd6e24eb4aa002a2fae41a80818799 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/.ninja_log @@ -0,0 +1,49 @@ +# ninja log v5 +0 127 7205132655043504 CMakeFiles/infoutil.dir/native_module.cpp.o 8c542ef0636564cc +3 697 7205132660712848 CMakeFiles/infoutil.dir/napi_info_util.cpp.o f6e72b790f00b7d6 +703 879 7205132662513012 D:/sample_code/applications_app_samples/code/SuperFeature/Widget/FormGame/entry/build/default/intermediates/cmake/default/obj/armeabi-v7a/libinfoutil.so f67688ca19ece907 +4 200 7205136434755040 D:/sample_code/applications_app_samples/code/SuperFeature/Widget/FormGame/entry/build/default/intermediates/cmake/default/obj/armeabi-v7a/libinfoutil.so f67688ca19ece907 +3 171 7205139592340372 D:/sample_code/applications_app_samples/code/SuperFeature/Widget/FormGame/entry/build/default/intermediates/cmake/default/obj/armeabi-v7a/libinfoutil.so f67688ca19ece907 +4 188 7205140415944878 D:/sample_code/applications_app_samples/code/SuperFeature/Widget/FormGame/entry/build/default/intermediates/cmake/default/obj/armeabi-v7a/libinfoutil.so f67688ca19ece907 +3 182 7205141115991356 D:/sample_code/applications_app_samples/code/SuperFeature/Widget/FormGame/entry/build/default/intermediates/cmake/default/obj/armeabi-v7a/libinfoutil.so f67688ca19ece907 +3 177 7205141556831100 D:/sample_code/applications_app_samples/code/SuperFeature/Widget/FormGame/entry/build/default/intermediates/cmake/default/obj/armeabi-v7a/libinfoutil.so f67688ca19ece907 +4 198 7205142224127642 D:/sample_code/applications_app_samples/code/SuperFeature/Widget/FormGame/entry/build/default/intermediates/cmake/default/obj/armeabi-v7a/libinfoutil.so f67688ca19ece907 +4 207 7205232161048142 D:/sample_code/applications_app_samples/code/SuperFeature/Widget/FormGame/entry/build/default/intermediates/cmake/default/obj/armeabi-v7a/libinfoutil.so f67688ca19ece907 +4 183 7205242065651849 D:/sample_code/applications_app_samples/code/SuperFeature/Widget/FormGame/entry/build/default/intermediates/cmake/default/obj/armeabi-v7a/libinfoutil.so f67688ca19ece907 +4 211 7205243909008840 D:/sample_code/applications_app_samples/code/SuperFeature/Widget/FormGame/entry/build/default/intermediates/cmake/default/obj/armeabi-v7a/libinfoutil.so f67688ca19ece907 +4 199 7205247030054349 D:/sample_code/applications_app_samples/code/SuperFeature/Widget/FormGame/entry/build/default/intermediates/cmake/default/obj/armeabi-v7a/libinfoutil.so f67688ca19ece907 +4 194 7205249809748168 D:/sample_code/applications_app_samples/code/SuperFeature/Widget/FormGame/entry/build/default/intermediates/cmake/default/obj/armeabi-v7a/libinfoutil.so f67688ca19ece907 +3 176 7205251217824238 D:/sample_code/applications_app_samples/code/SuperFeature/Widget/FormGame/entry/build/default/intermediates/cmake/default/obj/armeabi-v7a/libinfoutil.so f67688ca19ece907 +3 191 7205252199737252 D:/sample_code/applications_app_samples/code/SuperFeature/Widget/FormGame/entry/build/default/intermediates/cmake/default/obj/armeabi-v7a/libinfoutil.so f67688ca19ece907 +4 204 7205254900594595 D:/sample_code/applications_app_samples/code/SuperFeature/Widget/FormGame/entry/build/default/intermediates/cmake/default/obj/armeabi-v7a/libinfoutil.so f67688ca19ece907 +3 175 7205256426964674 D:/sample_code/applications_app_samples/code/SuperFeature/Widget/FormGame/entry/build/default/intermediates/cmake/default/obj/armeabi-v7a/libinfoutil.so f67688ca19ece907 +3 207 7205256888886911 D:/sample_code/applications_app_samples/code/SuperFeature/Widget/FormGame/entry/build/default/intermediates/cmake/default/obj/armeabi-v7a/libinfoutil.so f67688ca19ece907 +3 194 7205258751253952 D:/sample_code/applications_app_samples/code/SuperFeature/Widget/FormGame/entry/build/default/intermediates/cmake/default/obj/armeabi-v7a/libinfoutil.so f67688ca19ece907 +4 196 7205260267831300 D:/sample_code/applications_app_samples/code/SuperFeature/Widget/FormGame/entry/build/default/intermediates/cmake/default/obj/armeabi-v7a/libinfoutil.so f67688ca19ece907 +3 189 7205266113757014 D:/sample_code/applications_app_samples/code/SuperFeature/Widget/FormGame/entry/build/default/intermediates/cmake/default/obj/armeabi-v7a/libinfoutil.so f67688ca19ece907 +3 190 7205271879345765 D:/sample_code/applications_app_samples/code/SuperFeature/Widget/FormGame/entry/build/default/intermediates/cmake/default/obj/armeabi-v7a/libinfoutil.so f67688ca19ece907 +4 188 7205274275124593 D:/sample_code/applications_app_samples/code/SuperFeature/Widget/FormGame/entry/build/default/intermediates/cmake/default/obj/armeabi-v7a/libinfoutil.so f67688ca19ece907 +3 188 7205276013593123 D:/sample_code/applications_app_samples/code/SuperFeature/Widget/FormGame/entry/build/default/intermediates/cmake/default/obj/armeabi-v7a/libinfoutil.so f67688ca19ece907 +3 191 7205276142404121 D:/sample_code/applications_app_samples/code/SuperFeature/Widget/FormGame/entry/build/default/intermediates/cmake/default/obj/armeabi-v7a/libinfoutil.so f67688ca19ece907 +3 184 7205279458948097 D:/sample_code/applications_app_samples/code/SuperFeature/Widget/FormGame/entry/build/default/intermediates/cmake/default/obj/armeabi-v7a/libinfoutil.so f67688ca19ece907 +3 223 7205280410513037 D:/sample_code/applications_app_samples/code/SuperFeature/Widget/FormGame/entry/build/default/intermediates/cmake/default/obj/armeabi-v7a/libinfoutil.so f67688ca19ece907 +4 195 7205285367982254 D:/sample_code/applications_app_samples/code/SuperFeature/Widget/FormGame/entry/build/default/intermediates/cmake/default/obj/armeabi-v7a/libinfoutil.so f67688ca19ece907 +3 177 7205289310081133 D:/sample_code/applications_app_samples/code/SuperFeature/Widget/FormGame/entry/build/default/intermediates/cmake/default/obj/armeabi-v7a/libinfoutil.so f67688ca19ece907 +4 198 7205304277948319 D:/sample_code/applications_app_samples/code/SuperFeature/Widget/FormGame/entry/build/default/intermediates/cmake/default/obj/armeabi-v7a/libinfoutil.so f67688ca19ece907 +4 196 7205306797085706 D:/sample_code/applications_app_samples/code/SuperFeature/Widget/FormGame/entry/build/default/intermediates/cmake/default/obj/armeabi-v7a/libinfoutil.so f67688ca19ece907 +4 195 7205318163213750 D:/sample_code/applications_app_samples/code/SuperFeature/Widget/FormGame/entry/build/default/intermediates/cmake/default/obj/armeabi-v7a/libinfoutil.so f67688ca19ece907 +3 121 7205323692165831 CMakeFiles/infoutil.dir/native_module.cpp.o 8c542ef0636564cc +6 684 7205323697766056 CMakeFiles/infoutil.dir/napi_info_util.cpp.o f6e72b790f00b7d6 +684 866 7205323699581167 D:/sample_code/applications_app_samples/code/SuperFeature/Widget/FormGame/entry/build/default/intermediates/cmake/default/obj/armeabi-v7a/libinfoutil.so f67688ca19ece907 +7 196 7205345296526292 CMakeFiles/infoutil.dir/native_module.cpp.o 59c5c10823c2e422 +0 527 7205345299814125 CMakeFiles/infoutil.dir/napi_info_util.cpp.o 7ee881804fefee12 +532 860 7205345303068431 D:/Program/OpenHarmony/AAS1026/applications_app_samples/code/SuperFeature/Widget/FormGame/FormGame/entry/build/default/intermediates/cmake/default/obj/armeabi-v7a/libinfoutil.so 37901b71008a4411 +9 201 7205942364672214 CMakeFiles/infoutil.dir/native_module.cpp.o 84446b5492f6c6c6 +4 613 7205942368742955 CMakeFiles/infoutil.dir/napi_info_util.cpp.o 3fcc7b4029e0d7cf +613 951 7205942372077283 D:/Program/OpenHarmony/AAS1026/applications_app_samples/code/SuperFeature/Widget/FormGame/FormGame/entry/build/default/intermediates/cmake/default/obj/armeabi-v7a/libinfoutil.so 1d1d53c86ce655e4 +2 325 7205942608187984 D:/Program/OpenHarmony/AAS1026/applications_app_samples/code/SuperFeature/Widget/FormGame/FormGame/entry/build/default/intermediates/cmake/default/obj/armeabi-v7a/libinfoutil.so 1d1d53c86ce655e4 +3 322 7205942791282033 D:/Program/OpenHarmony/AAS1026/applications_app_samples/code/SuperFeature/Widget/FormGame/FormGame/entry/build/default/intermediates/cmake/default/obj/armeabi-v7a/libinfoutil.so 1d1d53c86ce655e4 +3 335 7205943483807221 D:/Program/OpenHarmony/AAS1026/applications_app_samples/code/SuperFeature/Widget/FormGame/FormGame/entry/build/default/intermediates/cmake/default/obj/armeabi-v7a/libinfoutil.so 1d1d53c86ce655e4 +11 214 7205979529814943 CMakeFiles/infoutil.dir/native_module.cpp.o 59ec35a7d133e397 +3 584 7205979533463306 CMakeFiles/infoutil.dir/napi_info_util.cpp.o 256ea70aa60d0319 +584 953 7205979536964970 D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/build/default/intermediates/cmake/default/obj/armeabi-v7a/libinfoutil.so abe52240a74ced93 diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeCache.txt b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeCache.txt new file mode 100644 index 0000000000000000000000000000000000000000..546c12acc20e10efb50f31ed287c985cab0d0a58 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeCache.txt @@ -0,0 +1,387 @@ +# This is the CMakeCache file. +# For build in directory: d:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/armeabi-v7a +# It was generated by CMake: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/bin/cmake.exe +# You can edit this file to change values found and used by cmake. +# If you do not want to change any of the values, simply exit the editor. +# If you do want to change a value, simply edit, save, and exit the editor. +# The syntax for the file is as follows: +# KEY:TYPE=VALUE +# KEY is the name of a variable in the cache. +# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!. +# VALUE is the current value for the KEY. + +######################## +# EXTERNAL cache entries +######################## + +//Path to a program. +CMAKE_ADDR2LINE:FILEPATH=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/llvm-addr2line.exe + +//Archiver +CMAKE_AR:FILEPATH=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/llvm-ar.exe + +//Flags for all build types. +CMAKE_ASM_FLAGS:STRING= + +//Flags for debug variant builds. +CMAKE_ASM_FLAGS_DEBUG:STRING= + +//Flags for release variant builds. +CMAKE_ASM_FLAGS_RELEASE:STRING= + +//Choose the type of build, options are: None Debug Release RelWithDebInfo +// MinSizeRel ... +CMAKE_BUILD_TYPE:STRING=Release + +//LLVM archiver +CMAKE_CXX_COMPILER_AR:FILEPATH=CMAKE_CXX_COMPILER_AR-NOTFOUND + +//Generate index for LLVM archive +CMAKE_CXX_COMPILER_RANLIB:FILEPATH=CMAKE_CXX_COMPILER_RANLIB-NOTFOUND + +//Flags for all build types. +CMAKE_CXX_FLAGS:STRING= + +//Flags for debug variant builds. +CMAKE_CXX_FLAGS_DEBUG:STRING= + +//Flags used by the CXX compiler during MINSIZEREL builds. +CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG + +//Flags for release variant builds. +CMAKE_CXX_FLAGS_RELEASE:STRING= + +//Flags used by the CXX compiler during RELWITHDEBINFO builds. +CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG + +//Libraries linked by default with all C++ applications. +CMAKE_CXX_STANDARD_LIBRARIES:STRING=-lm + +//LLVM archiver +CMAKE_C_COMPILER_AR:FILEPATH=CMAKE_C_COMPILER_AR-NOTFOUND + +//Generate index for LLVM archive +CMAKE_C_COMPILER_RANLIB:FILEPATH=CMAKE_C_COMPILER_RANLIB-NOTFOUND + +//Flags for all build types. +CMAKE_C_FLAGS:STRING= + +//Flags for debug variant builds. +CMAKE_C_FLAGS_DEBUG:STRING= + +//Flags used by the C compiler during MINSIZEREL builds. +CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG + +//Flags for release variant builds. +CMAKE_C_FLAGS_RELEASE:STRING= + +//Flags used by the C compiler during RELWITHDEBINFO builds. +CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG + +//Libraries linked by default with all C applications. +CMAKE_C_STANDARD_LIBRARIES:STRING=-lm + +//Path to a program. +CMAKE_DLLTOOL:FILEPATH=CMAKE_DLLTOOL-NOTFOUND + +//Linker flags to be used to create executables. +CMAKE_EXE_LINKER_FLAGS:STRING= + +//Flags used by the linker during DEBUG builds. +CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during MINSIZEREL builds. +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during RELEASE builds. +CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during RELWITHDEBINFO builds. +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Enable/Disable output of compile commands during generation. +CMAKE_EXPORT_COMPILE_COMMANDS:BOOL=ON + +//Install path prefix, prepended onto install directories. +CMAKE_INSTALL_PREFIX:PATH=C:/Program Files (x86)/XComponent + +//No help, variable specified on the command line. +CMAKE_LIBRARY_OUTPUT_DIRECTORY:UNINITIALIZED=D:\Program\OpenHarmony\HarmonyOS_Codelab1027git\HarmonyOS_Codelab\Samples\FormGame\entry\build\default\intermediates\cmake\default\obj\armeabi-v7a + +//Path to a program. +CMAKE_LINKER:FILEPATH=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/ld.lld.exe + +//No help, variable specified on the command line. +CMAKE_MAKE_PROGRAM:UNINITIALIZED=C:\Users\h30053725\AppData\Local\Huawei\SDK1026\openharmony\10\native\build-tools\cmake\bin\ninja.exe + +//Linker flags to be used to create modules. +CMAKE_MODULE_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of modules during +// DEBUG builds. +CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of modules during +// MINSIZEREL builds. +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of modules during +// RELEASE builds. +CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of modules during +// RELWITHDEBINFO builds. +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +CMAKE_NM:FILEPATH=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/llvm-nm.exe + +//Path to a program. +CMAKE_OBJCOPY:FILEPATH=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/llvm-objcopy.exe + +//Path to a program. +CMAKE_OBJDUMP:FILEPATH=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/llvm-objdump.exe + +//No help, variable specified on the command line. +CMAKE_OHOS_ARCH_ABI:UNINITIALIZED=armeabi-v7a + +//Value Computed by CMake +CMAKE_PROJECT_DESCRIPTION:STATIC= + +//Value Computed by CMake +CMAKE_PROJECT_HOMEPAGE_URL:STATIC= + +//Value Computed by CMake +CMAKE_PROJECT_NAME:STATIC=XComponent + +//Ranlib +CMAKE_RANLIB:FILEPATH=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/llvm-ranlib.exe + +//Path to a program. +CMAKE_READELF:FILEPATH=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/llvm-readelf.exe + +//Linker flags to be used to create shared libraries. +CMAKE_SHARED_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of shared libraries +// during DEBUG builds. +CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of shared libraries +// during MINSIZEREL builds. +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELEASE builds. +CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELWITHDEBINFO builds. +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//If set, runtime paths are not added when installing shared libraries, +// but are added when building. +CMAKE_SKIP_INSTALL_RPATH:BOOL=NO + +//If set, runtime paths are not added when using shared libraries. +CMAKE_SKIP_RPATH:BOOL=NO + +//Flags used by the linker during the creation of static libraries +// during all build types. +CMAKE_STATIC_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of static libraries +// during DEBUG builds. +CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of static libraries +// during MINSIZEREL builds. +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of static libraries +// during RELEASE builds. +CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of static libraries +// during RELWITHDEBINFO builds. +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +CMAKE_STRIP:FILEPATH=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/llvm-strip.exe + +//No help, variable specified on the command line. +CMAKE_SYSTEM_NAME:UNINITIALIZED=OHOS + +//The CMake toolchain file +CMAKE_TOOLCHAIN_FILE:FILEPATH=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/hmscore/4.0.0/native/build/cmake/hmos.toolchain.cmake + +//If this value is on, makefiles will be generated without the +// .SILENT directive, and all commands will be echoed to the console +// during the make. This is useful for debugging only. With Visual +// Studio IDE projects all commands are done without /nologo. +CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE + +//No help, variable specified on the command line. +HMOS_SDK_NATIVE:UNINITIALIZED=C:\Users\h30053725\AppData\Local\Huawei\SDK1026\hmscore\4.0.0\native + +//No help, variable specified on the command line. +OHOS_ARCH:UNINITIALIZED=armeabi-v7a + +//No help, variable specified on the command line. +OHOS_SDK_NATIVE:UNINITIALIZED=C:\Users\h30053725\AppData\Local\Huawei\SDK1026\openharmony\10\native + +//No help, variable specified on the command line. +OHOS_STL:UNINITIALIZED=c++_static + +//Value Computed by CMake +XComponent_BINARY_DIR:STATIC=D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/armeabi-v7a + +//Value Computed by CMake +XComponent_SOURCE_DIR:STATIC=D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/src/main/cpp + +//Dependencies for the target +infoutil_LIB_DEPENDS:STATIC=general;libace_napi.z.so;general;libhilog_ndk.z.so; + + +######################## +# INTERNAL cache entries +######################## + +//ADVANCED property for variable: CMAKE_ADDR2LINE +CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_AR +CMAKE_AR-ADVANCED:INTERNAL=1 +//This is the directory where this CMakeCache.txt was created +CMAKE_CACHEFILE_DIR:INTERNAL=d:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/armeabi-v7a +//Major version of cmake used to create the current loaded cache +CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3 +//Minor version of cmake used to create the current loaded cache +CMAKE_CACHE_MINOR_VERSION:INTERNAL=16 +//Patch version of cmake used to create the current loaded cache +CMAKE_CACHE_PATCH_VERSION:INTERNAL=5 +//Path to CMake executable. +CMAKE_COMMAND:INTERNAL=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/bin/cmake.exe +//Path to cpack program executable. +CMAKE_CPACK_COMMAND:INTERNAL=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/bin/cpack.exe +//Path to ctest program executable. +CMAKE_CTEST_COMMAND:INTERNAL=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/bin/ctest.exe +//ADVANCED property for variable: CMAKE_CXX_COMPILER_AR +CMAKE_CXX_COMPILER_AR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_COMPILER_RANLIB +CMAKE_CXX_COMPILER_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS +CMAKE_CXX_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_DEBUG +CMAKE_CXX_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_MINSIZEREL +CMAKE_CXX_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELEASE +CMAKE_CXX_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELWITHDEBINFO +CMAKE_CXX_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_STANDARD_LIBRARIES +CMAKE_CXX_STANDARD_LIBRARIES-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_COMPILER_AR +CMAKE_C_COMPILER_AR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_COMPILER_RANLIB +CMAKE_C_COMPILER_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS +CMAKE_C_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG +CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL +CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE +CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO +CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_STANDARD_LIBRARIES +CMAKE_C_STANDARD_LIBRARIES-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_DLLTOOL +CMAKE_DLLTOOL-ADVANCED:INTERNAL=1 +//Executable file format +CMAKE_EXECUTABLE_FORMAT:INTERNAL=Unknown +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS +CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG +CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE +CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXPORT_COMPILE_COMMANDS +CMAKE_EXPORT_COMPILE_COMMANDS-ADVANCED:INTERNAL=1 +//Name of external makefile project generator. +CMAKE_EXTRA_GENERATOR:INTERNAL= +//Name of generator. +CMAKE_GENERATOR:INTERNAL=Ninja +//Generator instance identifier. +CMAKE_GENERATOR_INSTANCE:INTERNAL= +//Name of generator platform. +CMAKE_GENERATOR_PLATFORM:INTERNAL= +//Name of generator toolset. +CMAKE_GENERATOR_TOOLSET:INTERNAL= +//Source directory with the top level CMakeLists.txt file for this +// project +CMAKE_HOME_DIRECTORY:INTERNAL=D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/src/main/cpp +//Install .so files without execute permission. +CMAKE_INSTALL_SO_NO_EXE:INTERNAL=0 +//ADVANCED property for variable: CMAKE_LINKER +CMAKE_LINKER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS +CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG +CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE +CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_NM +CMAKE_NM-ADVANCED:INTERNAL=1 +//number of local generators +CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJCOPY +CMAKE_OBJCOPY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJDUMP +CMAKE_OBJDUMP-ADVANCED:INTERNAL=1 +//Platform information initialized +CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_RANLIB +CMAKE_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_READELF +CMAKE_READELF-ADVANCED:INTERNAL=1 +//Path to CMake installation. +CMAKE_ROOT:INTERNAL=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS +CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG +CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE +CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH +CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_RPATH +CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS +CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG +CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE +CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STRIP +CMAKE_STRIP-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE +CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1 + diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/3.16.5/CMakeCCompiler.cmake b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/3.16.5/CMakeCCompiler.cmake new file mode 100644 index 0000000000000000000000000000000000000000..540de3d77f22ddc7657e9d68532dd120a7d64077 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/3.16.5/CMakeCCompiler.cmake @@ -0,0 +1,76 @@ +set(CMAKE_C_COMPILER "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang.exe") +set(CMAKE_C_COMPILER_ARG1 "") +set(CMAKE_C_COMPILER_ID "Clang") +set(CMAKE_C_COMPILER_VERSION "15.0.4") +set(CMAKE_C_COMPILER_VERSION_INTERNAL "") +set(CMAKE_C_COMPILER_WRAPPER "") +set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "11") +set(CMAKE_C_COMPILE_FEATURES "c_std_90;c_function_prototypes;c_std_99;c_restrict;c_variadic_macros;c_std_11;c_static_assert") +set(CMAKE_C90_COMPILE_FEATURES "c_std_90;c_function_prototypes") +set(CMAKE_C99_COMPILE_FEATURES "c_std_99;c_restrict;c_variadic_macros") +set(CMAKE_C11_COMPILE_FEATURES "c_std_11;c_static_assert") + +set(CMAKE_C_PLATFORM_ID "MinGW") +set(CMAKE_C_SIMULATE_ID "") +set(CMAKE_C_COMPILER_FRONTEND_VARIANT "GNU") +set(CMAKE_C_SIMULATE_VERSION "") + + + +set(CMAKE_AR "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/llvm-ar.exe") +set(CMAKE_C_COMPILER_AR "CMAKE_C_COMPILER_AR-NOTFOUND") +set(CMAKE_RANLIB "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/llvm-ranlib.exe") +set(CMAKE_C_COMPILER_RANLIB "CMAKE_C_COMPILER_RANLIB-NOTFOUND") +set(CMAKE_LINKER "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/ld.lld.exe") +set(CMAKE_MT "") +set(CMAKE_COMPILER_IS_GNUCC ) +set(CMAKE_C_COMPILER_LOADED 1) +set(CMAKE_C_COMPILER_WORKS TRUE) +set(CMAKE_C_ABI_COMPILED TRUE) +set(CMAKE_COMPILER_IS_MINGW 1) +set(CMAKE_COMPILER_IS_CYGWIN ) +if(CMAKE_COMPILER_IS_CYGWIN) + set(CYGWIN 1) + set(UNIX 1) +endif() + +set(CMAKE_C_COMPILER_ENV_VAR "CC") + +if(CMAKE_COMPILER_IS_MINGW) + set(MINGW 1) +endif() +set(CMAKE_C_COMPILER_ID_RUN 1) +set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m) +set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC) +set(CMAKE_C_LINKER_PREFERENCE 10) + +# Save compiler ABI information. +set(CMAKE_C_SIZEOF_DATA_PTR "4") +set(CMAKE_C_COMPILER_ABI "ELF") +set(CMAKE_C_LIBRARY_ARCHITECTURE "") + +if(CMAKE_C_SIZEOF_DATA_PTR) + set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}") +endif() + +if(CMAKE_C_COMPILER_ABI) + set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}") +endif() + +if(CMAKE_C_LIBRARY_ARCHITECTURE) + set(CMAKE_LIBRARY_ARCHITECTURE "") +endif() + +set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "") +if(CMAKE_C_CL_SHOWINCLUDES_PREFIX) + set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}") +endif() + + + + + +set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include") +set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "unwind;-l:libunwind.a;c;-l:libunwind.a") +set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/arm-linux-ohos;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos") +set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "") diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/3.16.5/CMakeCXXCompiler.cmake b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/3.16.5/CMakeCXXCompiler.cmake new file mode 100644 index 0000000000000000000000000000000000000000..3fbb5e9a2b0fd5efba2f0f0da962d8b55523bc52 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/3.16.5/CMakeCXXCompiler.cmake @@ -0,0 +1,88 @@ +set(CMAKE_CXX_COMPILER "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang++.exe") +set(CMAKE_CXX_COMPILER_ARG1 "") +set(CMAKE_CXX_COMPILER_ID "Clang") +set(CMAKE_CXX_COMPILER_VERSION "15.0.4") +set(CMAKE_CXX_COMPILER_VERSION_INTERNAL "") +set(CMAKE_CXX_COMPILER_WRAPPER "") +set(CMAKE_CXX_STANDARD_COMPUTED_DEFAULT "14") +set(CMAKE_CXX_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters;cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates;cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates;cxx_std_17;cxx_std_20") +set(CMAKE_CXX98_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters") +set(CMAKE_CXX11_COMPILE_FEATURES "cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates") +set(CMAKE_CXX14_COMPILE_FEATURES "cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates") +set(CMAKE_CXX17_COMPILE_FEATURES "cxx_std_17") +set(CMAKE_CXX20_COMPILE_FEATURES "cxx_std_20") + +set(CMAKE_CXX_PLATFORM_ID "MinGW") +set(CMAKE_CXX_SIMULATE_ID "") +set(CMAKE_CXX_COMPILER_FRONTEND_VARIANT "GNU") +set(CMAKE_CXX_SIMULATE_VERSION "") + + + +set(CMAKE_AR "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/llvm-ar.exe") +set(CMAKE_CXX_COMPILER_AR "CMAKE_CXX_COMPILER_AR-NOTFOUND") +set(CMAKE_RANLIB "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/llvm-ranlib.exe") +set(CMAKE_CXX_COMPILER_RANLIB "CMAKE_CXX_COMPILER_RANLIB-NOTFOUND") +set(CMAKE_LINKER "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/ld.lld.exe") +set(CMAKE_MT "") +set(CMAKE_COMPILER_IS_GNUCXX ) +set(CMAKE_CXX_COMPILER_LOADED 1) +set(CMAKE_CXX_COMPILER_WORKS TRUE) +set(CMAKE_CXX_ABI_COMPILED TRUE) +set(CMAKE_COMPILER_IS_MINGW 1) +set(CMAKE_COMPILER_IS_CYGWIN ) +if(CMAKE_COMPILER_IS_CYGWIN) + set(CYGWIN 1) + set(UNIX 1) +endif() + +set(CMAKE_CXX_COMPILER_ENV_VAR "CXX") + +if(CMAKE_COMPILER_IS_MINGW) + set(MINGW 1) +endif() +set(CMAKE_CXX_COMPILER_ID_RUN 1) +set(CMAKE_CXX_SOURCE_FILE_EXTENSIONS C;M;c++;cc;cpp;cxx;m;mm;CPP) +set(CMAKE_CXX_IGNORE_EXTENSIONS inl;h;hpp;HPP;H;o;O;obj;OBJ;def;DEF;rc;RC) + +foreach (lang C OBJC OBJCXX) + if (CMAKE_${lang}_COMPILER_ID_RUN) + foreach(extension IN LISTS CMAKE_${lang}_SOURCE_FILE_EXTENSIONS) + list(REMOVE_ITEM CMAKE_CXX_SOURCE_FILE_EXTENSIONS ${extension}) + endforeach() + endif() +endforeach() + +set(CMAKE_CXX_LINKER_PREFERENCE 30) +set(CMAKE_CXX_LINKER_PREFERENCE_PROPAGATES 1) + +# Save compiler ABI information. +set(CMAKE_CXX_SIZEOF_DATA_PTR "4") +set(CMAKE_CXX_COMPILER_ABI "ELF") +set(CMAKE_CXX_LIBRARY_ARCHITECTURE "") + +if(CMAKE_CXX_SIZEOF_DATA_PTR) + set(CMAKE_SIZEOF_VOID_P "${CMAKE_CXX_SIZEOF_DATA_PTR}") +endif() + +if(CMAKE_CXX_COMPILER_ABI) + set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_CXX_COMPILER_ABI}") +endif() + +if(CMAKE_CXX_LIBRARY_ARCHITECTURE) + set(CMAKE_LIBRARY_ARCHITECTURE "") +endif() + +set(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX "") +if(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX) + set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_CXX_CL_SHOWINCLUDES_PREFIX}") +endif() + + + + + +set(CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/include/libcxx-ohos/include/c++/v1;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include") +set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "unwind;c++;c++abi;unwind;m;-l:libunwind.a;c;-l:libunwind.a") +set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/arm-linux-ohos;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos") +set(CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "") diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/3.16.5/CMakeDetermineCompilerABI_C.bin b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/3.16.5/CMakeDetermineCompilerABI_C.bin new file mode 100644 index 0000000000000000000000000000000000000000..ded0f101344094062e6400fe36075cd82e70bfe2 Binary files /dev/null and b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/3.16.5/CMakeDetermineCompilerABI_C.bin differ diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/3.16.5/CMakeDetermineCompilerABI_CXX.bin b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/3.16.5/CMakeDetermineCompilerABI_CXX.bin new file mode 100644 index 0000000000000000000000000000000000000000..3579d7bc8bb35d7ced8b091e9bc6f2ba9771c3d9 Binary files /dev/null and b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/3.16.5/CMakeDetermineCompilerABI_CXX.bin differ diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/3.16.5/CMakeSystem.cmake b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/3.16.5/CMakeSystem.cmake new file mode 100644 index 0000000000000000000000000000000000000000..12d910f9240b9bce0a925741e731f8f2c3dd8b88 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/3.16.5/CMakeSystem.cmake @@ -0,0 +1,15 @@ +set(CMAKE_HOST_SYSTEM "Windows-10.0.22621") +set(CMAKE_HOST_SYSTEM_NAME "Windows") +set(CMAKE_HOST_SYSTEM_VERSION "10.0.22621") +set(CMAKE_HOST_SYSTEM_PROCESSOR "AMD64") + +include("C:/Users/h30053725/AppData/Local/Huawei/SDK1026/hmscore/4.0.0/native/build/cmake/hmos.toolchain.cmake") + +set(CMAKE_SYSTEM "OHOS-1") +set(CMAKE_SYSTEM_NAME "OHOS") +set(CMAKE_SYSTEM_VERSION "1") +set(CMAKE_SYSTEM_PROCESSOR "arm") + +set(CMAKE_CROSSCOMPILING "TRUE") + +set(CMAKE_SYSTEM_LOADED 1) diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/3.16.5/CompilerIdC/CMakeCCompilerId.c b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/3.16.5/CompilerIdC/CMakeCCompilerId.c new file mode 100644 index 0000000000000000000000000000000000000000..d884b50908c9852aad6d3b60781f4e529edc4d50 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/3.16.5/CompilerIdC/CMakeCCompilerId.c @@ -0,0 +1,671 @@ +#ifdef __cplusplus +# error "A C++ compiler has been selected for C." +#endif + +#if defined(__18CXX) +# define ID_VOID_MAIN +#endif +#if defined(__CLASSIC_C__) +/* cv-qualifiers did not exist in K&R C */ +# define const +# define volatile +#endif + + +/* Version number components: V=Version, R=Revision, P=Patch + Version date components: YYYY=Year, MM=Month, DD=Day */ + +#if defined(__INTEL_COMPILER) || defined(__ICC) +# define COMPILER_ID "Intel" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# if defined(__GNUC__) +# define SIMULATE_ID "GNU" +# endif + /* __INTEL_COMPILER = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) +# if defined(__INTEL_COMPILER_UPDATE) +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE) +# else +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) +# endif +# if defined(__INTEL_COMPILER_BUILD_DATE) + /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ +# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) +# endif +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(__PATHCC__) +# define COMPILER_ID "PathScale" +# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) +# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) +# if defined(__PATHCC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) +# endif + +#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) +# define COMPILER_ID "Embarcadero" +# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) +# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) +# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) + +#elif defined(__BORLANDC__) +# define COMPILER_ID "Borland" + /* __BORLANDC__ = 0xVRR */ +# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) +# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) + +#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 +# define COMPILER_ID "Watcom" + /* __WATCOMC__ = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__WATCOMC__) +# define COMPILER_ID "OpenWatcom" + /* __WATCOMC__ = VVRP + 1100 */ +# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__SUNPRO_C) +# define COMPILER_ID "SunPro" +# if __SUNPRO_C >= 0x5100 + /* __SUNPRO_C = 0xVRRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>12) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) +# else + /* __SUNPRO_CC = 0xVRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>8) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) +# endif + +#elif defined(__HP_cc) +# define COMPILER_ID "HP" + /* __HP_cc = VVRRPP */ +# define COMPILER_VERSION_MAJOR DEC(__HP_cc/10000) +# define COMPILER_VERSION_MINOR DEC(__HP_cc/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__HP_cc % 100) + +#elif defined(__DECC) +# define COMPILER_ID "Compaq" + /* __DECC_VER = VVRRTPPPP */ +# define COMPILER_VERSION_MAJOR DEC(__DECC_VER/10000000) +# define COMPILER_VERSION_MINOR DEC(__DECC_VER/100000 % 100) +# define COMPILER_VERSION_PATCH DEC(__DECC_VER % 10000) + +#elif defined(__IBMC__) && defined(__COMPILER_VER__) +# define COMPILER_ID "zOS" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__ibmxl__) && defined(__clang__) +# define COMPILER_ID "XLClang" +# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) +# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) +# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) + + +#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ >= 800 +# define COMPILER_ID "XL" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ < 800 +# define COMPILER_ID "VisualAge" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__PGI) +# define COMPILER_ID "PGI" +# define COMPILER_VERSION_MAJOR DEC(__PGIC__) +# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) +# if defined(__PGIC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) +# endif + +#elif defined(_CRAYC) +# define COMPILER_ID "Cray" +# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) +# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) + +#elif defined(__TI_COMPILER_VERSION__) +# define COMPILER_ID "TI" + /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ +# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) +# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) +# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) + +#elif defined(__FUJITSU) || defined(__FCC_VERSION) || defined(__fcc_version) +# define COMPILER_ID "Fujitsu" + +#elif defined(__ghs__) +# define COMPILER_ID "GHS" +/* __GHS_VERSION_NUMBER = VVVVRP */ +# ifdef __GHS_VERSION_NUMBER +# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100) +# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10) +# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10) +# endif + +#elif defined(__TINYC__) +# define COMPILER_ID "TinyCC" + +#elif defined(__BCC__) +# define COMPILER_ID "Bruce" + +#elif defined(__SCO_VERSION__) +# define COMPILER_ID "SCO" + +#elif defined(__ARMCC_VERSION) && !defined(__clang__) +# define COMPILER_ID "ARMCC" +#if __ARMCC_VERSION >= 1000000 + /* __ARMCC_VERSION = VRRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#else + /* __ARMCC_VERSION = VRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#endif + + +#elif defined(__clang__) && defined(__apple_build_version__) +# define COMPILER_ID "AppleClang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) + +#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION) +# define COMPILER_ID "ARMClang" + # define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION % 10000) +# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION) + +#elif defined(__clang__) +# define COMPILER_ID "Clang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif + +#elif defined(__GNUC__) +# define COMPILER_ID "GNU" +# define COMPILER_VERSION_MAJOR DEC(__GNUC__) +# if defined(__GNUC_MINOR__) +# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(_MSC_VER) +# define COMPILER_ID "MSVC" + /* _MSC_VER = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) +# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) +# if defined(_MSC_FULL_VER) +# if _MSC_VER >= 1400 + /* _MSC_FULL_VER = VVRRPPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) +# else + /* _MSC_FULL_VER = VVRRPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) +# endif +# endif +# if defined(_MSC_BUILD) +# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) +# endif + +#elif defined(__VISUALDSPVERSION__) || defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__) +# define COMPILER_ID "ADSP" +#if defined(__VISUALDSPVERSION__) + /* __VISUALDSPVERSION__ = 0xVVRRPP00 */ +# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24) +# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8 & 0xFF) +#endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# define COMPILER_ID "IAR" +# if defined(__VER__) && defined(__ICCARM__) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000) +# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000) +# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__)) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100) +# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100)) +# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# endif + +#elif defined(__SDCC_VERSION_MAJOR) || defined(SDCC) +# define COMPILER_ID "SDCC" +# if defined(__SDCC_VERSION_MAJOR) +# define COMPILER_VERSION_MAJOR DEC(__SDCC_VERSION_MAJOR) +# define COMPILER_VERSION_MINOR DEC(__SDCC_VERSION_MINOR) +# define COMPILER_VERSION_PATCH DEC(__SDCC_VERSION_PATCH) +# else + /* SDCC = VRP */ +# define COMPILER_VERSION_MAJOR DEC(SDCC/100) +# define COMPILER_VERSION_MINOR DEC(SDCC/10 % 10) +# define COMPILER_VERSION_PATCH DEC(SDCC % 10) +# endif + + +/* These compilers are either not known or too old to define an + identification macro. Try to identify the platform and guess that + it is the native compiler. */ +#elif defined(__hpux) || defined(__hpua) +# define COMPILER_ID "HP" + +#else /* unknown compiler */ +# define COMPILER_ID "" +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; +#ifdef SIMULATE_ID +char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; +#endif + +#ifdef __QNXNTO__ +char const* qnxnto = "INFO" ":" "qnxnto[]"; +#endif + +#if defined(__CRAYXE) || defined(__CRAYXC) +char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; +#endif + +#define STRINGIFY_HELPER(X) #X +#define STRINGIFY(X) STRINGIFY_HELPER(X) + +/* Identify known platforms by name. */ +#if defined(__linux) || defined(__linux__) || defined(linux) +# define PLATFORM_ID "Linux" + +#elif defined(__CYGWIN__) +# define PLATFORM_ID "Cygwin" + +#elif defined(__MINGW32__) +# define PLATFORM_ID "MinGW" + +#elif defined(__APPLE__) +# define PLATFORM_ID "Darwin" + +#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) +# define PLATFORM_ID "Windows" + +#elif defined(__FreeBSD__) || defined(__FreeBSD) +# define PLATFORM_ID "FreeBSD" + +#elif defined(__NetBSD__) || defined(__NetBSD) +# define PLATFORM_ID "NetBSD" + +#elif defined(__OpenBSD__) || defined(__OPENBSD) +# define PLATFORM_ID "OpenBSD" + +#elif defined(__sun) || defined(sun) +# define PLATFORM_ID "SunOS" + +#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) +# define PLATFORM_ID "AIX" + +#elif defined(__hpux) || defined(__hpux__) +# define PLATFORM_ID "HP-UX" + +#elif defined(__HAIKU__) +# define PLATFORM_ID "Haiku" + +#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) +# define PLATFORM_ID "BeOS" + +#elif defined(__QNX__) || defined(__QNXNTO__) +# define PLATFORM_ID "QNX" + +#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) +# define PLATFORM_ID "Tru64" + +#elif defined(__riscos) || defined(__riscos__) +# define PLATFORM_ID "RISCos" + +#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) +# define PLATFORM_ID "SINIX" + +#elif defined(__UNIX_SV__) +# define PLATFORM_ID "UNIX_SV" + +#elif defined(__bsdos__) +# define PLATFORM_ID "BSDOS" + +#elif defined(_MPRAS) || defined(MPRAS) +# define PLATFORM_ID "MP-RAS" + +#elif defined(__osf) || defined(__osf__) +# define PLATFORM_ID "OSF1" + +#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) +# define PLATFORM_ID "SCO_SV" + +#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) +# define PLATFORM_ID "ULTRIX" + +#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) +# define PLATFORM_ID "Xenix" + +#elif defined(__WATCOMC__) +# if defined(__LINUX__) +# define PLATFORM_ID "Linux" + +# elif defined(__DOS__) +# define PLATFORM_ID "DOS" + +# elif defined(__OS2__) +# define PLATFORM_ID "OS2" + +# elif defined(__WINDOWS__) +# define PLATFORM_ID "Windows3x" + +# else /* unknown platform */ +# define PLATFORM_ID +# endif + +#elif defined(__INTEGRITY) +# if defined(INT_178B) +# define PLATFORM_ID "Integrity178" + +# else /* regular Integrity */ +# define PLATFORM_ID "Integrity" +# endif + +#else /* unknown platform */ +# define PLATFORM_ID + +#endif + +/* For windows compilers MSVC and Intel we can determine + the architecture of the compiler being used. This is because + the compilers do not have flags that can change the architecture, + but rather depend on which compiler is being used +*/ +#if defined(_WIN32) && defined(_MSC_VER) +# if defined(_M_IA64) +# define ARCHITECTURE_ID "IA64" + +# elif defined(_M_X64) || defined(_M_AMD64) +# define ARCHITECTURE_ID "x64" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# elif defined(_M_ARM64) +# define ARCHITECTURE_ID "ARM64" + +# elif defined(_M_ARM) +# if _M_ARM == 4 +# define ARCHITECTURE_ID "ARMV4I" +# elif _M_ARM == 5 +# define ARCHITECTURE_ID "ARMV5I" +# else +# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) +# endif + +# elif defined(_M_MIPS) +# define ARCHITECTURE_ID "MIPS" + +# elif defined(_M_SH) +# define ARCHITECTURE_ID "SHx" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__WATCOMC__) +# if defined(_M_I86) +# define ARCHITECTURE_ID "I86" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# if defined(__ICCARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__ICCRX__) +# define ARCHITECTURE_ID "RX" + +# elif defined(__ICCRH850__) +# define ARCHITECTURE_ID "RH850" + +# elif defined(__ICCRL78__) +# define ARCHITECTURE_ID "RL78" + +# elif defined(__ICCRISCV__) +# define ARCHITECTURE_ID "RISCV" + +# elif defined(__ICCAVR__) +# define ARCHITECTURE_ID "AVR" + +# elif defined(__ICC430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__ICCV850__) +# define ARCHITECTURE_ID "V850" + +# elif defined(__ICC8051__) +# define ARCHITECTURE_ID "8051" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__ghs__) +# if defined(__PPC64__) +# define ARCHITECTURE_ID "PPC64" + +# elif defined(__ppc__) +# define ARCHITECTURE_ID "PPC" + +# elif defined(__ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__x86_64__) +# define ARCHITECTURE_ID "x64" + +# elif defined(__i386__) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif +#else +# define ARCHITECTURE_ID +#endif + +/* Convert integer to decimal digit literals. */ +#define DEC(n) \ + ('0' + (((n) / 10000000)%10)), \ + ('0' + (((n) / 1000000)%10)), \ + ('0' + (((n) / 100000)%10)), \ + ('0' + (((n) / 10000)%10)), \ + ('0' + (((n) / 1000)%10)), \ + ('0' + (((n) / 100)%10)), \ + ('0' + (((n) / 10)%10)), \ + ('0' + ((n) % 10)) + +/* Convert integer to hex digit literals. */ +#define HEX(n) \ + ('0' + ((n)>>28 & 0xF)), \ + ('0' + ((n)>>24 & 0xF)), \ + ('0' + ((n)>>20 & 0xF)), \ + ('0' + ((n)>>16 & 0xF)), \ + ('0' + ((n)>>12 & 0xF)), \ + ('0' + ((n)>>8 & 0xF)), \ + ('0' + ((n)>>4 & 0xF)), \ + ('0' + ((n) & 0xF)) + +/* Construct a string literal encoding the version number components. */ +#ifdef COMPILER_VERSION_MAJOR +char const info_version[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', + COMPILER_VERSION_MAJOR, +# ifdef COMPILER_VERSION_MINOR + '.', COMPILER_VERSION_MINOR, +# ifdef COMPILER_VERSION_PATCH + '.', COMPILER_VERSION_PATCH, +# ifdef COMPILER_VERSION_TWEAK + '.', COMPILER_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct a string literal encoding the internal version number. */ +#ifdef COMPILER_VERSION_INTERNAL +char const info_version_internal[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_', + 'i','n','t','e','r','n','a','l','[', + COMPILER_VERSION_INTERNAL,']','\0'}; +#endif + +/* Construct a string literal encoding the version number components. */ +#ifdef SIMULATE_VERSION_MAJOR +char const info_simulate_version[] = { + 'I', 'N', 'F', 'O', ':', + 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', + SIMULATE_VERSION_MAJOR, +# ifdef SIMULATE_VERSION_MINOR + '.', SIMULATE_VERSION_MINOR, +# ifdef SIMULATE_VERSION_PATCH + '.', SIMULATE_VERSION_PATCH, +# ifdef SIMULATE_VERSION_TWEAK + '.', SIMULATE_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; +char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; + + + + +#if !defined(__STDC__) +# if (defined(_MSC_VER) && !defined(__clang__)) \ + || (defined(__ibmxl__) || defined(__IBMC__)) +# define C_DIALECT "90" +# else +# define C_DIALECT +# endif +#elif __STDC_VERSION__ >= 201000L +# define C_DIALECT "11" +#elif __STDC_VERSION__ >= 199901L +# define C_DIALECT "99" +#else +# define C_DIALECT "90" +#endif +const char* info_language_dialect_default = + "INFO" ":" "dialect_default[" C_DIALECT "]"; + +/*--------------------------------------------------------------------------*/ + +#ifdef ID_VOID_MAIN +void main() {} +#else +# if defined(__CLASSIC_C__) +int main(argc, argv) int argc; char *argv[]; +# else +int main(int argc, char* argv[]) +# endif +{ + int require = 0; + require += info_compiler[argc]; + require += info_platform[argc]; + require += info_arch[argc]; +#ifdef COMPILER_VERSION_MAJOR + require += info_version[argc]; +#endif +#ifdef COMPILER_VERSION_INTERNAL + require += info_version_internal[argc]; +#endif +#ifdef SIMULATE_ID + require += info_simulate[argc]; +#endif +#ifdef SIMULATE_VERSION_MAJOR + require += info_simulate_version[argc]; +#endif +#if defined(__CRAYXE) || defined(__CRAYXC) + require += info_cray[argc]; +#endif + require += info_language_dialect_default[argc]; + (void)argv; + return require; +} +#endif diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/3.16.5/CompilerIdC/CMakeCCompilerId.o b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/3.16.5/CompilerIdC/CMakeCCompilerId.o new file mode 100644 index 0000000000000000000000000000000000000000..59bffbbdaa90acd2a8ee1e03ac8d8aa0fd3f73a0 Binary files /dev/null and b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/3.16.5/CompilerIdC/CMakeCCompilerId.o differ diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/3.16.5/CompilerIdCXX/CMakeCXXCompilerId.cpp b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/3.16.5/CompilerIdCXX/CMakeCXXCompilerId.cpp new file mode 100644 index 0000000000000000000000000000000000000000..69cfdba6bc7bccb09bf234388908de035caa0969 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/3.16.5/CompilerIdCXX/CMakeCXXCompilerId.cpp @@ -0,0 +1,660 @@ +/* This source file must have a .cpp extension so that all C++ compilers + recognize the extension without flags. Borland does not know .cxx for + example. */ +#ifndef __cplusplus +# error "A C compiler has been selected for C++." +#endif + + +/* Version number components: V=Version, R=Revision, P=Patch + Version date components: YYYY=Year, MM=Month, DD=Day */ + +#if defined(__COMO__) +# define COMPILER_ID "Comeau" + /* __COMO_VERSION__ = VRR */ +# define COMPILER_VERSION_MAJOR DEC(__COMO_VERSION__ / 100) +# define COMPILER_VERSION_MINOR DEC(__COMO_VERSION__ % 100) + +#elif defined(__INTEL_COMPILER) || defined(__ICC) +# define COMPILER_ID "Intel" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# if defined(__GNUC__) +# define SIMULATE_ID "GNU" +# endif + /* __INTEL_COMPILER = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) +# if defined(__INTEL_COMPILER_UPDATE) +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE) +# else +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) +# endif +# if defined(__INTEL_COMPILER_BUILD_DATE) + /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ +# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) +# endif +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(__PATHCC__) +# define COMPILER_ID "PathScale" +# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) +# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) +# if defined(__PATHCC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) +# endif + +#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) +# define COMPILER_ID "Embarcadero" +# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) +# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) +# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) + +#elif defined(__BORLANDC__) +# define COMPILER_ID "Borland" + /* __BORLANDC__ = 0xVRR */ +# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) +# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) + +#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 +# define COMPILER_ID "Watcom" + /* __WATCOMC__ = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__WATCOMC__) +# define COMPILER_ID "OpenWatcom" + /* __WATCOMC__ = VVRP + 1100 */ +# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__SUNPRO_CC) +# define COMPILER_ID "SunPro" +# if __SUNPRO_CC >= 0x5100 + /* __SUNPRO_CC = 0xVRRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>12) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) +# else + /* __SUNPRO_CC = 0xVRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>8) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) +# endif + +#elif defined(__HP_aCC) +# define COMPILER_ID "HP" + /* __HP_aCC = VVRRPP */ +# define COMPILER_VERSION_MAJOR DEC(__HP_aCC/10000) +# define COMPILER_VERSION_MINOR DEC(__HP_aCC/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__HP_aCC % 100) + +#elif defined(__DECCXX) +# define COMPILER_ID "Compaq" + /* __DECCXX_VER = VVRRTPPPP */ +# define COMPILER_VERSION_MAJOR DEC(__DECCXX_VER/10000000) +# define COMPILER_VERSION_MINOR DEC(__DECCXX_VER/100000 % 100) +# define COMPILER_VERSION_PATCH DEC(__DECCXX_VER % 10000) + +#elif defined(__IBMCPP__) && defined(__COMPILER_VER__) +# define COMPILER_ID "zOS" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__ibmxl__) && defined(__clang__) +# define COMPILER_ID "XLClang" +# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) +# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) +# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) + + +#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ >= 800 +# define COMPILER_ID "XL" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ < 800 +# define COMPILER_ID "VisualAge" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__PGI) +# define COMPILER_ID "PGI" +# define COMPILER_VERSION_MAJOR DEC(__PGIC__) +# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) +# if defined(__PGIC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) +# endif + +#elif defined(_CRAYC) +# define COMPILER_ID "Cray" +# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) +# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) + +#elif defined(__TI_COMPILER_VERSION__) +# define COMPILER_ID "TI" + /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ +# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) +# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) +# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) + +#elif defined(__FUJITSU) || defined(__FCC_VERSION) || defined(__fcc_version) +# define COMPILER_ID "Fujitsu" + +#elif defined(__ghs__) +# define COMPILER_ID "GHS" +/* __GHS_VERSION_NUMBER = VVVVRP */ +# ifdef __GHS_VERSION_NUMBER +# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100) +# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10) +# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10) +# endif + +#elif defined(__SCO_VERSION__) +# define COMPILER_ID "SCO" + +#elif defined(__ARMCC_VERSION) && !defined(__clang__) +# define COMPILER_ID "ARMCC" +#if __ARMCC_VERSION >= 1000000 + /* __ARMCC_VERSION = VRRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#else + /* __ARMCC_VERSION = VRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#endif + + +#elif defined(__clang__) && defined(__apple_build_version__) +# define COMPILER_ID "AppleClang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) + +#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION) +# define COMPILER_ID "ARMClang" + # define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION % 10000) +# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION) + +#elif defined(__clang__) +# define COMPILER_ID "Clang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif + +#elif defined(__GNUC__) || defined(__GNUG__) +# define COMPILER_ID "GNU" +# if defined(__GNUC__) +# define COMPILER_VERSION_MAJOR DEC(__GNUC__) +# else +# define COMPILER_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(_MSC_VER) +# define COMPILER_ID "MSVC" + /* _MSC_VER = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) +# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) +# if defined(_MSC_FULL_VER) +# if _MSC_VER >= 1400 + /* _MSC_FULL_VER = VVRRPPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) +# else + /* _MSC_FULL_VER = VVRRPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) +# endif +# endif +# if defined(_MSC_BUILD) +# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) +# endif + +#elif defined(__VISUALDSPVERSION__) || defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__) +# define COMPILER_ID "ADSP" +#if defined(__VISUALDSPVERSION__) + /* __VISUALDSPVERSION__ = 0xVVRRPP00 */ +# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24) +# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8 & 0xFF) +#endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# define COMPILER_ID "IAR" +# if defined(__VER__) && defined(__ICCARM__) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000) +# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000) +# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__)) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100) +# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100)) +# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# endif + + +/* These compilers are either not known or too old to define an + identification macro. Try to identify the platform and guess that + it is the native compiler. */ +#elif defined(__hpux) || defined(__hpua) +# define COMPILER_ID "HP" + +#else /* unknown compiler */ +# define COMPILER_ID "" +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; +#ifdef SIMULATE_ID +char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; +#endif + +#ifdef __QNXNTO__ +char const* qnxnto = "INFO" ":" "qnxnto[]"; +#endif + +#if defined(__CRAYXE) || defined(__CRAYXC) +char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; +#endif + +#define STRINGIFY_HELPER(X) #X +#define STRINGIFY(X) STRINGIFY_HELPER(X) + +/* Identify known platforms by name. */ +#if defined(__linux) || defined(__linux__) || defined(linux) +# define PLATFORM_ID "Linux" + +#elif defined(__CYGWIN__) +# define PLATFORM_ID "Cygwin" + +#elif defined(__MINGW32__) +# define PLATFORM_ID "MinGW" + +#elif defined(__APPLE__) +# define PLATFORM_ID "Darwin" + +#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) +# define PLATFORM_ID "Windows" + +#elif defined(__FreeBSD__) || defined(__FreeBSD) +# define PLATFORM_ID "FreeBSD" + +#elif defined(__NetBSD__) || defined(__NetBSD) +# define PLATFORM_ID "NetBSD" + +#elif defined(__OpenBSD__) || defined(__OPENBSD) +# define PLATFORM_ID "OpenBSD" + +#elif defined(__sun) || defined(sun) +# define PLATFORM_ID "SunOS" + +#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) +# define PLATFORM_ID "AIX" + +#elif defined(__hpux) || defined(__hpux__) +# define PLATFORM_ID "HP-UX" + +#elif defined(__HAIKU__) +# define PLATFORM_ID "Haiku" + +#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) +# define PLATFORM_ID "BeOS" + +#elif defined(__QNX__) || defined(__QNXNTO__) +# define PLATFORM_ID "QNX" + +#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) +# define PLATFORM_ID "Tru64" + +#elif defined(__riscos) || defined(__riscos__) +# define PLATFORM_ID "RISCos" + +#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) +# define PLATFORM_ID "SINIX" + +#elif defined(__UNIX_SV__) +# define PLATFORM_ID "UNIX_SV" + +#elif defined(__bsdos__) +# define PLATFORM_ID "BSDOS" + +#elif defined(_MPRAS) || defined(MPRAS) +# define PLATFORM_ID "MP-RAS" + +#elif defined(__osf) || defined(__osf__) +# define PLATFORM_ID "OSF1" + +#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) +# define PLATFORM_ID "SCO_SV" + +#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) +# define PLATFORM_ID "ULTRIX" + +#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) +# define PLATFORM_ID "Xenix" + +#elif defined(__WATCOMC__) +# if defined(__LINUX__) +# define PLATFORM_ID "Linux" + +# elif defined(__DOS__) +# define PLATFORM_ID "DOS" + +# elif defined(__OS2__) +# define PLATFORM_ID "OS2" + +# elif defined(__WINDOWS__) +# define PLATFORM_ID "Windows3x" + +# else /* unknown platform */ +# define PLATFORM_ID +# endif + +#elif defined(__INTEGRITY) +# if defined(INT_178B) +# define PLATFORM_ID "Integrity178" + +# else /* regular Integrity */ +# define PLATFORM_ID "Integrity" +# endif + +#else /* unknown platform */ +# define PLATFORM_ID + +#endif + +/* For windows compilers MSVC and Intel we can determine + the architecture of the compiler being used. This is because + the compilers do not have flags that can change the architecture, + but rather depend on which compiler is being used +*/ +#if defined(_WIN32) && defined(_MSC_VER) +# if defined(_M_IA64) +# define ARCHITECTURE_ID "IA64" + +# elif defined(_M_X64) || defined(_M_AMD64) +# define ARCHITECTURE_ID "x64" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# elif defined(_M_ARM64) +# define ARCHITECTURE_ID "ARM64" + +# elif defined(_M_ARM) +# if _M_ARM == 4 +# define ARCHITECTURE_ID "ARMV4I" +# elif _M_ARM == 5 +# define ARCHITECTURE_ID "ARMV5I" +# else +# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) +# endif + +# elif defined(_M_MIPS) +# define ARCHITECTURE_ID "MIPS" + +# elif defined(_M_SH) +# define ARCHITECTURE_ID "SHx" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__WATCOMC__) +# if defined(_M_I86) +# define ARCHITECTURE_ID "I86" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# if defined(__ICCARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__ICCRX__) +# define ARCHITECTURE_ID "RX" + +# elif defined(__ICCRH850__) +# define ARCHITECTURE_ID "RH850" + +# elif defined(__ICCRL78__) +# define ARCHITECTURE_ID "RL78" + +# elif defined(__ICCRISCV__) +# define ARCHITECTURE_ID "RISCV" + +# elif defined(__ICCAVR__) +# define ARCHITECTURE_ID "AVR" + +# elif defined(__ICC430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__ICCV850__) +# define ARCHITECTURE_ID "V850" + +# elif defined(__ICC8051__) +# define ARCHITECTURE_ID "8051" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__ghs__) +# if defined(__PPC64__) +# define ARCHITECTURE_ID "PPC64" + +# elif defined(__ppc__) +# define ARCHITECTURE_ID "PPC" + +# elif defined(__ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__x86_64__) +# define ARCHITECTURE_ID "x64" + +# elif defined(__i386__) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif +#else +# define ARCHITECTURE_ID +#endif + +/* Convert integer to decimal digit literals. */ +#define DEC(n) \ + ('0' + (((n) / 10000000)%10)), \ + ('0' + (((n) / 1000000)%10)), \ + ('0' + (((n) / 100000)%10)), \ + ('0' + (((n) / 10000)%10)), \ + ('0' + (((n) / 1000)%10)), \ + ('0' + (((n) / 100)%10)), \ + ('0' + (((n) / 10)%10)), \ + ('0' + ((n) % 10)) + +/* Convert integer to hex digit literals. */ +#define HEX(n) \ + ('0' + ((n)>>28 & 0xF)), \ + ('0' + ((n)>>24 & 0xF)), \ + ('0' + ((n)>>20 & 0xF)), \ + ('0' + ((n)>>16 & 0xF)), \ + ('0' + ((n)>>12 & 0xF)), \ + ('0' + ((n)>>8 & 0xF)), \ + ('0' + ((n)>>4 & 0xF)), \ + ('0' + ((n) & 0xF)) + +/* Construct a string literal encoding the version number components. */ +#ifdef COMPILER_VERSION_MAJOR +char const info_version[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', + COMPILER_VERSION_MAJOR, +# ifdef COMPILER_VERSION_MINOR + '.', COMPILER_VERSION_MINOR, +# ifdef COMPILER_VERSION_PATCH + '.', COMPILER_VERSION_PATCH, +# ifdef COMPILER_VERSION_TWEAK + '.', COMPILER_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct a string literal encoding the internal version number. */ +#ifdef COMPILER_VERSION_INTERNAL +char const info_version_internal[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_', + 'i','n','t','e','r','n','a','l','[', + COMPILER_VERSION_INTERNAL,']','\0'}; +#endif + +/* Construct a string literal encoding the version number components. */ +#ifdef SIMULATE_VERSION_MAJOR +char const info_simulate_version[] = { + 'I', 'N', 'F', 'O', ':', + 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', + SIMULATE_VERSION_MAJOR, +# ifdef SIMULATE_VERSION_MINOR + '.', SIMULATE_VERSION_MINOR, +# ifdef SIMULATE_VERSION_PATCH + '.', SIMULATE_VERSION_PATCH, +# ifdef SIMULATE_VERSION_TWEAK + '.', SIMULATE_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; +char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; + + + + +#if defined(__INTEL_COMPILER) && defined(_MSVC_LANG) && _MSVC_LANG < 201403L +# if defined(__INTEL_CXX11_MODE__) +# if defined(__cpp_aggregate_nsdmi) +# define CXX_STD 201402L +# else +# define CXX_STD 201103L +# endif +# else +# define CXX_STD 199711L +# endif +#elif defined(_MSC_VER) && defined(_MSVC_LANG) +# define CXX_STD _MSVC_LANG +#else +# define CXX_STD __cplusplus +#endif + +const char* info_language_dialect_default = "INFO" ":" "dialect_default[" +#if CXX_STD > 201703L + "20" +#elif CXX_STD >= 201703L + "17" +#elif CXX_STD >= 201402L + "14" +#elif CXX_STD >= 201103L + "11" +#else + "98" +#endif +"]"; + +/*--------------------------------------------------------------------------*/ + +int main(int argc, char* argv[]) +{ + int require = 0; + require += info_compiler[argc]; + require += info_platform[argc]; +#ifdef COMPILER_VERSION_MAJOR + require += info_version[argc]; +#endif +#ifdef COMPILER_VERSION_INTERNAL + require += info_version_internal[argc]; +#endif +#ifdef SIMULATE_ID + require += info_simulate[argc]; +#endif +#ifdef SIMULATE_VERSION_MAJOR + require += info_simulate_version[argc]; +#endif +#if defined(__CRAYXE) || defined(__CRAYXC) + require += info_cray[argc]; +#endif + require += info_language_dialect_default[argc]; + (void)argv; + return require; +} diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/3.16.5/CompilerIdCXX/CMakeCXXCompilerId.o b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/3.16.5/CompilerIdCXX/CMakeCXXCompilerId.o new file mode 100644 index 0000000000000000000000000000000000000000..ca31e1f27b4b4b79f52f989cab278c9b3785858f Binary files /dev/null and b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/3.16.5/CompilerIdCXX/CMakeCXXCompilerId.o differ diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeError.log b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeError.log new file mode 100644 index 0000000000000000000000000000000000000000..5e0128df1c11bf00732c3788f16824ba73a46369 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeError.log @@ -0,0 +1,828 @@ +Compiling the C compiler identification source file "CMakeCCompilerId.c" failed. +Compiler: E:/OHSDKnew/10/native/llvm/bin/clang.exe +Build flags: -fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-fno-addrsig;-Wa,--noexecstack;-Wformat;-Werror=format-security;-march=armv7a;;-D__MUSL__ +Id flags: + +The output was: +1 +error: unknown target CPU 'armv7a' +note: valid target CPU values are: nocona, core2, penryn, bonnell, atom, silvermont, slm, goldmont, goldmont-plus, tremont, nehalem, corei7, westmere, sandybridge, corei7-avx, ivybridge, core-avx-i, haswell, core-avx2, broadwell, skylake, skylake-avx512, skx, cascadelake, cooperlake, cannonlake, icelake-client, rocketlake, icelake-server, tigerlake, sapphirerapids, alderlake, knl, knm, k8, athlon64, athlon-fx, opteron, k8-sse3, athlon64-sse3, opteron-sse3, amdfam10, barcelona, btver1, btver2, bdver1, bdver2, bdver3, bdver4, znver1, znver2, znver3, x86-64, x86-64-v2, x86-64-v3, x86-64-v4 + + +Compiling the C compiler identification source file "CMakeCCompilerId.c" failed. +Compiler: E:/OHSDKnew/10/native/llvm/bin/clang.exe +Build flags: -fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-fno-addrsig;-Wa,--noexecstack;-Wformat;-Werror=format-security;-march=armv7a;;-D__MUSL__ +Id flags: -c + +The output was: +1 +error: unknown target CPU 'armv7a' +note: valid target CPU values are: nocona, core2, penryn, bonnell, atom, silvermont, slm, goldmont, goldmont-plus, tremont, nehalem, corei7, westmere, sandybridge, corei7-avx, ivybridge, core-avx-i, haswell, core-avx2, broadwell, skylake, skylake-avx512, skx, cascadelake, cooperlake, cannonlake, icelake-client, rocketlake, icelake-server, tigerlake, sapphirerapids, alderlake, knl, knm, k8, athlon64, athlon-fx, opteron, k8-sse3, athlon64-sse3, opteron-sse3, amdfam10, barcelona, btver1, btver2, bdver1, bdver2, bdver3, bdver4, znver1, znver2, znver3, x86-64, x86-64-v2, x86-64-v3, x86-64-v4 + + +Compiling the C compiler identification source file "CMakeCCompilerId.c" failed. +Compiler: E:/OHSDKnew/10/native/llvm/bin/clang.exe +Build flags: -fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-fno-addrsig;-Wa,--noexecstack;-Wformat;-Werror=format-security;-march=armv7a;;-D__MUSL__ +Id flags: -Aa + +The output was: +1 +clang: warning: argument unused during compilation: '-Aa' [-Wunused-command-line-argument] +error: unknown target CPU 'armv7a' +note: valid target CPU values are: nocona, core2, penryn, bonnell, atom, silvermont, slm, goldmont, goldmont-plus, tremont, nehalem, corei7, westmere, sandybridge, corei7-avx, ivybridge, core-avx-i, haswell, core-avx2, broadwell, skylake, skylake-avx512, skx, cascadelake, cooperlake, cannonlake, icelake-client, rocketlake, icelake-server, tigerlake, sapphirerapids, alderlake, knl, knm, k8, athlon64, athlon-fx, opteron, k8-sse3, athlon64-sse3, opteron-sse3, amdfam10, barcelona, btver1, btver2, bdver1, bdver2, bdver3, bdver4, znver1, znver2, znver3, x86-64, x86-64-v2, x86-64-v3, x86-64-v4 + + +Compiling the C compiler identification source file "CMakeCCompilerId.c" failed. +Compiler: E:/OHSDKnew/10/native/llvm/bin/clang.exe +Build flags: -fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-fno-addrsig;-Wa,--noexecstack;-Wformat;-Werror=format-security;-march=armv7a;;-D__MUSL__ +Id flags: -D__CLASSIC_C__ + +The output was: +1 +error: unknown target CPU 'armv7a' +note: valid target CPU values are: nocona, core2, penryn, bonnell, atom, silvermont, slm, goldmont, goldmont-plus, tremont, nehalem, corei7, westmere, sandybridge, corei7-avx, ivybridge, core-avx-i, haswell, core-avx2, broadwell, skylake, skylake-avx512, skx, cascadelake, cooperlake, cannonlake, icelake-client, rocketlake, icelake-server, tigerlake, sapphirerapids, alderlake, knl, knm, k8, athlon64, athlon-fx, opteron, k8-sse3, athlon64-sse3, opteron-sse3, amdfam10, barcelona, btver1, btver2, bdver1, bdver2, bdver3, bdver4, znver1, znver2, znver3, x86-64, x86-64-v2, x86-64-v3, x86-64-v4 + + +Compiling the C compiler identification source file "CMakeCCompilerId.c" failed. +Compiler: E:/OHSDKnew/10/native/llvm/bin/clang.exe +Build flags: -fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-fno-addrsig;-Wa,--noexecstack;-Wformat;-Werror=format-security;-march=armv7a;;-D__MUSL__ +Id flags: --target=arm-arm-none-eabi;-mcpu=cortex-m3 + +The output was: +1 +ld.lld: error: unable to find library -lc +ld.lld: error: unable to find library -lm +ld.lld: error: unable to find library -lclang_rt.builtins-arm +clang: error: ld.lld command failed with exit code 1 (use -v to see invocation) + + +Compiling the C compiler identification source file "CMakeCCompilerId.c" failed. +Compiler: E:/OHSDKnew/10/native/llvm/bin/clang.exe +Build flags: +Id flags: + +The output was: +1 +clang: error: unable to execute command: program not executable +clang: error: linker command failed with exit code 1 (use -v to see invocation) + + +Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed. +Compiler: E:/OHSDKnew/10/native/llvm/bin/clang++.exe +Build flags: -fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-fno-addrsig;-Wa,--noexecstack;-Wformat;-Werror=format-security;-march=armv7a;;;-D__MUSL__ +Id flags: + +The output was: +1 +error: unknown target CPU 'armv7a' +note: valid target CPU values are: nocona, core2, penryn, bonnell, atom, silvermont, slm, goldmont, goldmont-plus, tremont, nehalem, corei7, westmere, sandybridge, corei7-avx, ivybridge, core-avx-i, haswell, core-avx2, broadwell, skylake, skylake-avx512, skx, cascadelake, cooperlake, cannonlake, icelake-client, rocketlake, icelake-server, tigerlake, sapphirerapids, alderlake, knl, knm, k8, athlon64, athlon-fx, opteron, k8-sse3, athlon64-sse3, opteron-sse3, amdfam10, barcelona, btver1, btver2, bdver1, bdver2, bdver3, bdver4, znver1, znver2, znver3, x86-64, x86-64-v2, x86-64-v3, x86-64-v4 + + +Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed. +Compiler: E:/OHSDKnew/10/native/llvm/bin/clang++.exe +Build flags: -fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-fno-addrsig;-Wa,--noexecstack;-Wformat;-Werror=format-security;-march=armv7a;;;-D__MUSL__ +Id flags: -c + +The output was: +1 +error: unknown target CPU 'armv7a' +note: valid target CPU values are: nocona, core2, penryn, bonnell, atom, silvermont, slm, goldmont, goldmont-plus, tremont, nehalem, corei7, westmere, sandybridge, corei7-avx, ivybridge, core-avx-i, haswell, core-avx2, broadwell, skylake, skylake-avx512, skx, cascadelake, cooperlake, cannonlake, icelake-client, rocketlake, icelake-server, tigerlake, sapphirerapids, alderlake, knl, knm, k8, athlon64, athlon-fx, opteron, k8-sse3, athlon64-sse3, opteron-sse3, amdfam10, barcelona, btver1, btver2, bdver1, bdver2, bdver3, bdver4, znver1, znver2, znver3, x86-64, x86-64-v2, x86-64-v3, x86-64-v4 + + +Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed. +Compiler: E:/OHSDKnew/10/native/llvm/bin/clang++.exe +Build flags: -fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-fno-addrsig;-Wa,--noexecstack;-Wformat;-Werror=format-security;-march=armv7a;;;-D__MUSL__ +Id flags: --c++ + +The output was: +1 +clang++: error: unsupported option '--c++' + + +Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed. +Compiler: E:/OHSDKnew/10/native/llvm/bin/clang++.exe +Build flags: -fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-fno-addrsig;-Wa,--noexecstack;-Wformat;-Werror=format-security;-march=armv7a;;;-D__MUSL__ +Id flags: --ec++ + +The output was: +1 +clang++: error: unsupported option '--ec++' + + +Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed. +Compiler: E:/OHSDKnew/10/native/llvm/bin/clang++.exe +Build flags: -fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-fno-addrsig;-Wa,--noexecstack;-Wformat;-Werror=format-security;-march=armv7a;;;-D__MUSL__ +Id flags: --target=arm-arm-none-eabi;-mcpu=cortex-m3 + +The output was: +1 +ld.lld: error: unable to find library -lc++ +ld.lld: error: unable to find library -lc++abi +ld.lld: error: unable to find library -lunwind +ld.lld: error: unable to find library -lc +ld.lld: error: unable to find library -lm +ld.lld: error: unable to find library -lclang_rt.builtins-arm +clang++: error: ld.lld command failed with exit code 1 (use -v to see invocation) + + +Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed. +Compiler: E:/OHSDKnew/10/native/llvm/bin/clang++.exe +Build flags: +Id flags: + +The output was: +1 +clang++: error: unable to execute command: program not executable +clang++: error: linker command failed with exit code 1 (use -v to see invocation) + + +Compiling the C compiler identification source file "CMakeCCompilerId.c" failed. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang.exe +Build flags: -fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-fno-addrsig;-Wa,--noexecstack;-Wformat;-Werror=format-security;-march=armv7a;;-D__MUSL__ +Id flags: + +The output was: +1 +error: unknown target CPU 'armv7a' +note: valid target CPU values are: nocona, core2, penryn, bonnell, atom, silvermont, slm, goldmont, goldmont-plus, tremont, nehalem, corei7, westmere, sandybridge, corei7-avx, ivybridge, core-avx-i, haswell, core-avx2, broadwell, skylake, skylake-avx512, skx, cascadelake, cooperlake, cannonlake, icelake-client, rocketlake, icelake-server, tigerlake, sapphirerapids, alderlake, knl, knm, k8, athlon64, athlon-fx, opteron, k8-sse3, athlon64-sse3, opteron-sse3, amdfam10, barcelona, btver1, btver2, bdver1, bdver2, bdver3, bdver4, znver1, znver2, znver3, x86-64, x86-64-v2, x86-64-v3, x86-64-v4 + + +Compiling the C compiler identification source file "CMakeCCompilerId.c" failed. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang.exe +Build flags: -fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-fno-addrsig;-Wa,--noexecstack;-Wformat;-Werror=format-security;-march=armv7a;;-D__MUSL__ +Id flags: -c + +The output was: +1 +error: unknown target CPU 'armv7a' +note: valid target CPU values are: nocona, core2, penryn, bonnell, atom, silvermont, slm, goldmont, goldmont-plus, tremont, nehalem, corei7, westmere, sandybridge, corei7-avx, ivybridge, core-avx-i, haswell, core-avx2, broadwell, skylake, skylake-avx512, skx, cascadelake, cooperlake, cannonlake, icelake-client, rocketlake, icelake-server, tigerlake, sapphirerapids, alderlake, knl, knm, k8, athlon64, athlon-fx, opteron, k8-sse3, athlon64-sse3, opteron-sse3, amdfam10, barcelona, btver1, btver2, bdver1, bdver2, bdver3, bdver4, znver1, znver2, znver3, x86-64, x86-64-v2, x86-64-v3, x86-64-v4 + + +Compiling the C compiler identification source file "CMakeCCompilerId.c" failed. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang.exe +Build flags: -fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-fno-addrsig;-Wa,--noexecstack;-Wformat;-Werror=format-security;-march=armv7a;;-D__MUSL__ +Id flags: -Aa + +The output was: +1 +clang: warning: argument unused during compilation: '-Aa' [-Wunused-command-line-argument] +error: unknown target CPU 'armv7a' +note: valid target CPU values are: nocona, core2, penryn, bonnell, atom, silvermont, slm, goldmont, goldmont-plus, tremont, nehalem, corei7, westmere, sandybridge, corei7-avx, ivybridge, core-avx-i, haswell, core-avx2, broadwell, skylake, skylake-avx512, skx, cascadelake, cooperlake, cannonlake, icelake-client, rocketlake, icelake-server, tigerlake, sapphirerapids, alderlake, knl, knm, k8, athlon64, athlon-fx, opteron, k8-sse3, athlon64-sse3, opteron-sse3, amdfam10, barcelona, btver1, btver2, bdver1, bdver2, bdver3, bdver4, znver1, znver2, znver3, x86-64, x86-64-v2, x86-64-v3, x86-64-v4 + + +Compiling the C compiler identification source file "CMakeCCompilerId.c" failed. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang.exe +Build flags: -fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-fno-addrsig;-Wa,--noexecstack;-Wformat;-Werror=format-security;-march=armv7a;;-D__MUSL__ +Id flags: -D__CLASSIC_C__ + +The output was: +1 +error: unknown target CPU 'armv7a' +note: valid target CPU values are: nocona, core2, penryn, bonnell, atom, silvermont, slm, goldmont, goldmont-plus, tremont, nehalem, corei7, westmere, sandybridge, corei7-avx, ivybridge, core-avx-i, haswell, core-avx2, broadwell, skylake, skylake-avx512, skx, cascadelake, cooperlake, cannonlake, icelake-client, rocketlake, icelake-server, tigerlake, sapphirerapids, alderlake, knl, knm, k8, athlon64, athlon-fx, opteron, k8-sse3, athlon64-sse3, opteron-sse3, amdfam10, barcelona, btver1, btver2, bdver1, bdver2, bdver3, bdver4, znver1, znver2, znver3, x86-64, x86-64-v2, x86-64-v3, x86-64-v4 + + +Compiling the C compiler identification source file "CMakeCCompilerId.c" failed. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang.exe +Build flags: -fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-fno-addrsig;-Wa,--noexecstack;-Wformat;-Werror=format-security;-march=armv7a;;-D__MUSL__ +Id flags: --target=arm-arm-none-eabi;-mcpu=cortex-m3 + +The output was: +1 +ld.lld: error: unable to find library -lc +ld.lld: error: unable to find library -lm +ld.lld: error: unable to find library -lclang_rt.builtins-arm +clang: error: ld.lld command failed with exit code 1 (use -v to see invocation) + + +Compiling the C compiler identification source file "CMakeCCompilerId.c" failed. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang.exe +Build flags: +Id flags: + +The output was: +1 +clang: error: unable to execute command: program not executable +clang: error: linker command failed with exit code 1 (use -v to see invocation) + + +Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang++.exe +Build flags: -fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-fno-addrsig;-Wa,--noexecstack;-Wformat;-Werror=format-security;-march=armv7a;;;-D__MUSL__ +Id flags: + +The output was: +1 +error: unknown target CPU 'armv7a' +note: valid target CPU values are: nocona, core2, penryn, bonnell, atom, silvermont, slm, goldmont, goldmont-plus, tremont, nehalem, corei7, westmere, sandybridge, corei7-avx, ivybridge, core-avx-i, haswell, core-avx2, broadwell, skylake, skylake-avx512, skx, cascadelake, cooperlake, cannonlake, icelake-client, rocketlake, icelake-server, tigerlake, sapphirerapids, alderlake, knl, knm, k8, athlon64, athlon-fx, opteron, k8-sse3, athlon64-sse3, opteron-sse3, amdfam10, barcelona, btver1, btver2, bdver1, bdver2, bdver3, bdver4, znver1, znver2, znver3, x86-64, x86-64-v2, x86-64-v3, x86-64-v4 + + +Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang++.exe +Build flags: -fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-fno-addrsig;-Wa,--noexecstack;-Wformat;-Werror=format-security;-march=armv7a;;;-D__MUSL__ +Id flags: -c + +The output was: +1 +error: unknown target CPU 'armv7a' +note: valid target CPU values are: nocona, core2, penryn, bonnell, atom, silvermont, slm, goldmont, goldmont-plus, tremont, nehalem, corei7, westmere, sandybridge, corei7-avx, ivybridge, core-avx-i, haswell, core-avx2, broadwell, skylake, skylake-avx512, skx, cascadelake, cooperlake, cannonlake, icelake-client, rocketlake, icelake-server, tigerlake, sapphirerapids, alderlake, knl, knm, k8, athlon64, athlon-fx, opteron, k8-sse3, athlon64-sse3, opteron-sse3, amdfam10, barcelona, btver1, btver2, bdver1, bdver2, bdver3, bdver4, znver1, znver2, znver3, x86-64, x86-64-v2, x86-64-v3, x86-64-v4 + + +Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang++.exe +Build flags: -fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-fno-addrsig;-Wa,--noexecstack;-Wformat;-Werror=format-security;-march=armv7a;;;-D__MUSL__ +Id flags: --c++ + +The output was: +1 +clang++: error: unsupported option '--c++' + + +Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang++.exe +Build flags: -fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-fno-addrsig;-Wa,--noexecstack;-Wformat;-Werror=format-security;-march=armv7a;;;-D__MUSL__ +Id flags: --ec++ + +The output was: +1 +clang++: error: unsupported option '--ec++' + + +Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang++.exe +Build flags: -fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-fno-addrsig;-Wa,--noexecstack;-Wformat;-Werror=format-security;-march=armv7a;;;-D__MUSL__ +Id flags: --target=arm-arm-none-eabi;-mcpu=cortex-m3 + +The output was: +1 +ld.lld: error: unable to find library -lc++ +ld.lld: error: unable to find library -lc++abi +ld.lld: error: unable to find library -lunwind +ld.lld: error: unable to find library -lc +ld.lld: error: unable to find library -lm +ld.lld: error: unable to find library -lclang_rt.builtins-arm +clang++: error: ld.lld command failed with exit code 1 (use -v to see invocation) + + +Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang++.exe +Build flags: +Id flags: + +The output was: +1 +clang++: error: unable to execute command: program not executable +clang++: error: linker command failed with exit code 1 (use -v to see invocation) + + +Compiling the C compiler identification source file "CMakeCCompilerId.c" failed. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang.exe +Build flags: -fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-fno-addrsig;-Wa,--noexecstack;-Wformat;-Werror=format-security;-march=armv7a;;-D__MUSL__ +Id flags: + +The output was: +1 +error: unknown target CPU 'armv7a' +note: valid target CPU values are: nocona, core2, penryn, bonnell, atom, silvermont, slm, goldmont, goldmont-plus, tremont, nehalem, corei7, westmere, sandybridge, corei7-avx, ivybridge, core-avx-i, haswell, core-avx2, broadwell, skylake, skylake-avx512, skx, cascadelake, cooperlake, cannonlake, icelake-client, rocketlake, icelake-server, tigerlake, sapphirerapids, alderlake, knl, knm, k8, athlon64, athlon-fx, opteron, k8-sse3, athlon64-sse3, opteron-sse3, amdfam10, barcelona, btver1, btver2, bdver1, bdver2, bdver3, bdver4, znver1, znver2, znver3, x86-64, x86-64-v2, x86-64-v3, x86-64-v4 + + +Compiling the C compiler identification source file "CMakeCCompilerId.c" failed. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang.exe +Build flags: -fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-fno-addrsig;-Wa,--noexecstack;-Wformat;-Werror=format-security;-march=armv7a;;-D__MUSL__ +Id flags: -c + +The output was: +1 +error: unknown target CPU 'armv7a' +note: valid target CPU values are: nocona, core2, penryn, bonnell, atom, silvermont, slm, goldmont, goldmont-plus, tremont, nehalem, corei7, westmere, sandybridge, corei7-avx, ivybridge, core-avx-i, haswell, core-avx2, broadwell, skylake, skylake-avx512, skx, cascadelake, cooperlake, cannonlake, icelake-client, rocketlake, icelake-server, tigerlake, sapphirerapids, alderlake, knl, knm, k8, athlon64, athlon-fx, opteron, k8-sse3, athlon64-sse3, opteron-sse3, amdfam10, barcelona, btver1, btver2, bdver1, bdver2, bdver3, bdver4, znver1, znver2, znver3, x86-64, x86-64-v2, x86-64-v3, x86-64-v4 + + +Compiling the C compiler identification source file "CMakeCCompilerId.c" failed. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang.exe +Build flags: -fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-fno-addrsig;-Wa,--noexecstack;-Wformat;-Werror=format-security;-march=armv7a;;-D__MUSL__ +Id flags: -Aa + +The output was: +1 +clang: warning: argument unused during compilation: '-Aa' [-Wunused-command-line-argument] +error: unknown target CPU 'armv7a' +note: valid target CPU values are: nocona, core2, penryn, bonnell, atom, silvermont, slm, goldmont, goldmont-plus, tremont, nehalem, corei7, westmere, sandybridge, corei7-avx, ivybridge, core-avx-i, haswell, core-avx2, broadwell, skylake, skylake-avx512, skx, cascadelake, cooperlake, cannonlake, icelake-client, rocketlake, icelake-server, tigerlake, sapphirerapids, alderlake, knl, knm, k8, athlon64, athlon-fx, opteron, k8-sse3, athlon64-sse3, opteron-sse3, amdfam10, barcelona, btver1, btver2, bdver1, bdver2, bdver3, bdver4, znver1, znver2, znver3, x86-64, x86-64-v2, x86-64-v3, x86-64-v4 + + +Compiling the C compiler identification source file "CMakeCCompilerId.c" failed. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang.exe +Build flags: -fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-fno-addrsig;-Wa,--noexecstack;-Wformat;-Werror=format-security;-march=armv7a;;-D__MUSL__ +Id flags: -D__CLASSIC_C__ + +The output was: +1 +error: unknown target CPU 'armv7a' +note: valid target CPU values are: nocona, core2, penryn, bonnell, atom, silvermont, slm, goldmont, goldmont-plus, tremont, nehalem, corei7, westmere, sandybridge, corei7-avx, ivybridge, core-avx-i, haswell, core-avx2, broadwell, skylake, skylake-avx512, skx, cascadelake, cooperlake, cannonlake, icelake-client, rocketlake, icelake-server, tigerlake, sapphirerapids, alderlake, knl, knm, k8, athlon64, athlon-fx, opteron, k8-sse3, athlon64-sse3, opteron-sse3, amdfam10, barcelona, btver1, btver2, bdver1, bdver2, bdver3, bdver4, znver1, znver2, znver3, x86-64, x86-64-v2, x86-64-v3, x86-64-v4 + + +Compiling the C compiler identification source file "CMakeCCompilerId.c" failed. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang.exe +Build flags: -fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-fno-addrsig;-Wa,--noexecstack;-Wformat;-Werror=format-security;-march=armv7a;;-D__MUSL__ +Id flags: --target=arm-arm-none-eabi;-mcpu=cortex-m3 + +The output was: +1 +ld.lld: error: unable to find library -lc +ld.lld: error: unable to find library -lm +ld.lld: error: unable to find library -lclang_rt.builtins-arm +clang: error: ld.lld command failed with exit code 1 (use -v to see invocation) + + +Compiling the C compiler identification source file "CMakeCCompilerId.c" failed. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang.exe +Build flags: +Id flags: + +The output was: +1 +clang: error: unable to execute command: program not executable +clang: error: linker command failed with exit code 1 (use -v to see invocation) + + +Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang++.exe +Build flags: -fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-fno-addrsig;-Wa,--noexecstack;-Wformat;-Werror=format-security;-march=armv7a;;;-D__MUSL__ +Id flags: + +The output was: +1 +error: unknown target CPU 'armv7a' +note: valid target CPU values are: nocona, core2, penryn, bonnell, atom, silvermont, slm, goldmont, goldmont-plus, tremont, nehalem, corei7, westmere, sandybridge, corei7-avx, ivybridge, core-avx-i, haswell, core-avx2, broadwell, skylake, skylake-avx512, skx, cascadelake, cooperlake, cannonlake, icelake-client, rocketlake, icelake-server, tigerlake, sapphirerapids, alderlake, knl, knm, k8, athlon64, athlon-fx, opteron, k8-sse3, athlon64-sse3, opteron-sse3, amdfam10, barcelona, btver1, btver2, bdver1, bdver2, bdver3, bdver4, znver1, znver2, znver3, x86-64, x86-64-v2, x86-64-v3, x86-64-v4 + + +Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang++.exe +Build flags: -fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-fno-addrsig;-Wa,--noexecstack;-Wformat;-Werror=format-security;-march=armv7a;;;-D__MUSL__ +Id flags: -c + +The output was: +1 +error: unknown target CPU 'armv7a' +note: valid target CPU values are: nocona, core2, penryn, bonnell, atom, silvermont, slm, goldmont, goldmont-plus, tremont, nehalem, corei7, westmere, sandybridge, corei7-avx, ivybridge, core-avx-i, haswell, core-avx2, broadwell, skylake, skylake-avx512, skx, cascadelake, cooperlake, cannonlake, icelake-client, rocketlake, icelake-server, tigerlake, sapphirerapids, alderlake, knl, knm, k8, athlon64, athlon-fx, opteron, k8-sse3, athlon64-sse3, opteron-sse3, amdfam10, barcelona, btver1, btver2, bdver1, bdver2, bdver3, bdver4, znver1, znver2, znver3, x86-64, x86-64-v2, x86-64-v3, x86-64-v4 + + +Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang++.exe +Build flags: -fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-fno-addrsig;-Wa,--noexecstack;-Wformat;-Werror=format-security;-march=armv7a;;;-D__MUSL__ +Id flags: --c++ + +The output was: +1 +clang++: error: unsupported option '--c++' + + +Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang++.exe +Build flags: -fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-fno-addrsig;-Wa,--noexecstack;-Wformat;-Werror=format-security;-march=armv7a;;;-D__MUSL__ +Id flags: --ec++ + +The output was: +1 +clang++: error: unsupported option '--ec++' + + +Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang++.exe +Build flags: -fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-fno-addrsig;-Wa,--noexecstack;-Wformat;-Werror=format-security;-march=armv7a;;;-D__MUSL__ +Id flags: --target=arm-arm-none-eabi;-mcpu=cortex-m3 + +The output was: +1 +ld.lld: error: unable to find library -lc++ +ld.lld: error: unable to find library -lc++abi +ld.lld: error: unable to find library -lunwind +ld.lld: error: unable to find library -lc +ld.lld: error: unable to find library -lm +ld.lld: error: unable to find library -lclang_rt.builtins-arm +clang++: error: ld.lld command failed with exit code 1 (use -v to see invocation) + + +Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang++.exe +Build flags: +Id flags: + +The output was: +1 +clang++: error: unable to execute command: program not executable +clang++: error: linker command failed with exit code 1 (use -v to see invocation) + + +Compiling the C compiler identification source file "CMakeCCompilerId.c" failed. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang.exe +Build flags: -fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-fno-addrsig;-Wa,--noexecstack;-Wformat;-Werror=format-security;-march=armv7a;;-D__MUSL__ +Id flags: + +The output was: +1 +error: unknown target CPU 'armv7a' +note: valid target CPU values are: nocona, core2, penryn, bonnell, atom, silvermont, slm, goldmont, goldmont-plus, tremont, nehalem, corei7, westmere, sandybridge, corei7-avx, ivybridge, core-avx-i, haswell, core-avx2, broadwell, skylake, skylake-avx512, skx, cascadelake, cooperlake, cannonlake, icelake-client, rocketlake, icelake-server, tigerlake, sapphirerapids, alderlake, knl, knm, k8, athlon64, athlon-fx, opteron, k8-sse3, athlon64-sse3, opteron-sse3, amdfam10, barcelona, btver1, btver2, bdver1, bdver2, bdver3, bdver4, znver1, znver2, znver3, x86-64, x86-64-v2, x86-64-v3, x86-64-v4 + + +Compiling the C compiler identification source file "CMakeCCompilerId.c" failed. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang.exe +Build flags: -fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-fno-addrsig;-Wa,--noexecstack;-Wformat;-Werror=format-security;-march=armv7a;;-D__MUSL__ +Id flags: -c + +The output was: +1 +error: unknown target CPU 'armv7a' +note: valid target CPU values are: nocona, core2, penryn, bonnell, atom, silvermont, slm, goldmont, goldmont-plus, tremont, nehalem, corei7, westmere, sandybridge, corei7-avx, ivybridge, core-avx-i, haswell, core-avx2, broadwell, skylake, skylake-avx512, skx, cascadelake, cooperlake, cannonlake, icelake-client, rocketlake, icelake-server, tigerlake, sapphirerapids, alderlake, knl, knm, k8, athlon64, athlon-fx, opteron, k8-sse3, athlon64-sse3, opteron-sse3, amdfam10, barcelona, btver1, btver2, bdver1, bdver2, bdver3, bdver4, znver1, znver2, znver3, x86-64, x86-64-v2, x86-64-v3, x86-64-v4 + + +Compiling the C compiler identification source file "CMakeCCompilerId.c" failed. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang.exe +Build flags: -fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-fno-addrsig;-Wa,--noexecstack;-Wformat;-Werror=format-security;-march=armv7a;;-D__MUSL__ +Id flags: -Aa + +The output was: +1 +clang: warning: argument unused during compilation: '-Aa' [-Wunused-command-line-argument] +error: unknown target CPU 'armv7a' +note: valid target CPU values are: nocona, core2, penryn, bonnell, atom, silvermont, slm, goldmont, goldmont-plus, tremont, nehalem, corei7, westmere, sandybridge, corei7-avx, ivybridge, core-avx-i, haswell, core-avx2, broadwell, skylake, skylake-avx512, skx, cascadelake, cooperlake, cannonlake, icelake-client, rocketlake, icelake-server, tigerlake, sapphirerapids, alderlake, knl, knm, k8, athlon64, athlon-fx, opteron, k8-sse3, athlon64-sse3, opteron-sse3, amdfam10, barcelona, btver1, btver2, bdver1, bdver2, bdver3, bdver4, znver1, znver2, znver3, x86-64, x86-64-v2, x86-64-v3, x86-64-v4 + + +Compiling the C compiler identification source file "CMakeCCompilerId.c" failed. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang.exe +Build flags: -fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-fno-addrsig;-Wa,--noexecstack;-Wformat;-Werror=format-security;-march=armv7a;;-D__MUSL__ +Id flags: -D__CLASSIC_C__ + +The output was: +1 +error: unknown target CPU 'armv7a' +note: valid target CPU values are: nocona, core2, penryn, bonnell, atom, silvermont, slm, goldmont, goldmont-plus, tremont, nehalem, corei7, westmere, sandybridge, corei7-avx, ivybridge, core-avx-i, haswell, core-avx2, broadwell, skylake, skylake-avx512, skx, cascadelake, cooperlake, cannonlake, icelake-client, rocketlake, icelake-server, tigerlake, sapphirerapids, alderlake, knl, knm, k8, athlon64, athlon-fx, opteron, k8-sse3, athlon64-sse3, opteron-sse3, amdfam10, barcelona, btver1, btver2, bdver1, bdver2, bdver3, bdver4, znver1, znver2, znver3, x86-64, x86-64-v2, x86-64-v3, x86-64-v4 + + +Compiling the C compiler identification source file "CMakeCCompilerId.c" failed. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang.exe +Build flags: -fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-fno-addrsig;-Wa,--noexecstack;-Wformat;-Werror=format-security;-march=armv7a;;-D__MUSL__ +Id flags: --target=arm-arm-none-eabi;-mcpu=cortex-m3 + +The output was: +1 +ld.lld: error: unable to find library -lc +ld.lld: error: unable to find library -lm +ld.lld: error: unable to find library -lclang_rt.builtins-arm +clang: error: ld.lld command failed with exit code 1 (use -v to see invocation) + + +Compiling the C compiler identification source file "CMakeCCompilerId.c" failed. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang.exe +Build flags: +Id flags: + +The output was: +1 +clang: error: unable to execute command: program not executable +clang: error: linker command failed with exit code 1 (use -v to see invocation) + + +Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang++.exe +Build flags: -fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-fno-addrsig;-Wa,--noexecstack;-Wformat;-Werror=format-security;-march=armv7a;;;-D__MUSL__ +Id flags: + +The output was: +1 +error: unknown target CPU 'armv7a' +note: valid target CPU values are: nocona, core2, penryn, bonnell, atom, silvermont, slm, goldmont, goldmont-plus, tremont, nehalem, corei7, westmere, sandybridge, corei7-avx, ivybridge, core-avx-i, haswell, core-avx2, broadwell, skylake, skylake-avx512, skx, cascadelake, cooperlake, cannonlake, icelake-client, rocketlake, icelake-server, tigerlake, sapphirerapids, alderlake, knl, knm, k8, athlon64, athlon-fx, opteron, k8-sse3, athlon64-sse3, opteron-sse3, amdfam10, barcelona, btver1, btver2, bdver1, bdver2, bdver3, bdver4, znver1, znver2, znver3, x86-64, x86-64-v2, x86-64-v3, x86-64-v4 + + +Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang++.exe +Build flags: -fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-fno-addrsig;-Wa,--noexecstack;-Wformat;-Werror=format-security;-march=armv7a;;;-D__MUSL__ +Id flags: -c + +The output was: +1 +error: unknown target CPU 'armv7a' +note: valid target CPU values are: nocona, core2, penryn, bonnell, atom, silvermont, slm, goldmont, goldmont-plus, tremont, nehalem, corei7, westmere, sandybridge, corei7-avx, ivybridge, core-avx-i, haswell, core-avx2, broadwell, skylake, skylake-avx512, skx, cascadelake, cooperlake, cannonlake, icelake-client, rocketlake, icelake-server, tigerlake, sapphirerapids, alderlake, knl, knm, k8, athlon64, athlon-fx, opteron, k8-sse3, athlon64-sse3, opteron-sse3, amdfam10, barcelona, btver1, btver2, bdver1, bdver2, bdver3, bdver4, znver1, znver2, znver3, x86-64, x86-64-v2, x86-64-v3, x86-64-v4 + + +Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang++.exe +Build flags: -fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-fno-addrsig;-Wa,--noexecstack;-Wformat;-Werror=format-security;-march=armv7a;;;-D__MUSL__ +Id flags: --c++ + +The output was: +1 +clang++: error: unsupported option '--c++' + + +Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang++.exe +Build flags: -fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-fno-addrsig;-Wa,--noexecstack;-Wformat;-Werror=format-security;-march=armv7a;;;-D__MUSL__ +Id flags: --ec++ + +The output was: +1 +clang++: error: unsupported option '--ec++' + + +Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang++.exe +Build flags: -fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-fno-addrsig;-Wa,--noexecstack;-Wformat;-Werror=format-security;-march=armv7a;;;-D__MUSL__ +Id flags: --target=arm-arm-none-eabi;-mcpu=cortex-m3 + +The output was: +1 +ld.lld: error: unable to find library -lc++ +ld.lld: error: unable to find library -lc++abi +ld.lld: error: unable to find library -lunwind +ld.lld: error: unable to find library -lc +ld.lld: error: unable to find library -lm +ld.lld: error: unable to find library -lclang_rt.builtins-arm +clang++: error: ld.lld command failed with exit code 1 (use -v to see invocation) + + +Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang++.exe +Build flags: +Id flags: + +The output was: +1 +clang++: error: unable to execute command: program not executable +clang++: error: linker command failed with exit code 1 (use -v to see invocation) + + +Compiling the C compiler identification source file "CMakeCCompilerId.c" failed. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang.exe +Build flags: -fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-fno-addrsig;-Wa,--noexecstack;-Wformat;-Werror=format-security;-march=armv7a;;-D__MUSL__ +Id flags: + +The output was: +1 +error: unknown target CPU 'armv7a' +note: valid target CPU values are: nocona, core2, penryn, bonnell, atom, silvermont, slm, goldmont, goldmont-plus, tremont, nehalem, corei7, westmere, sandybridge, corei7-avx, ivybridge, core-avx-i, haswell, core-avx2, broadwell, skylake, skylake-avx512, skx, cascadelake, cooperlake, cannonlake, icelake-client, rocketlake, icelake-server, tigerlake, sapphirerapids, alderlake, knl, knm, k8, athlon64, athlon-fx, opteron, k8-sse3, athlon64-sse3, opteron-sse3, amdfam10, barcelona, btver1, btver2, bdver1, bdver2, bdver3, bdver4, znver1, znver2, znver3, x86-64, x86-64-v2, x86-64-v3, x86-64-v4 + + +Compiling the C compiler identification source file "CMakeCCompilerId.c" failed. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang.exe +Build flags: -fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-fno-addrsig;-Wa,--noexecstack;-Wformat;-Werror=format-security;-march=armv7a;;-D__MUSL__ +Id flags: -c + +The output was: +1 +error: unknown target CPU 'armv7a' +note: valid target CPU values are: nocona, core2, penryn, bonnell, atom, silvermont, slm, goldmont, goldmont-plus, tremont, nehalem, corei7, westmere, sandybridge, corei7-avx, ivybridge, core-avx-i, haswell, core-avx2, broadwell, skylake, skylake-avx512, skx, cascadelake, cooperlake, cannonlake, icelake-client, rocketlake, icelake-server, tigerlake, sapphirerapids, alderlake, knl, knm, k8, athlon64, athlon-fx, opteron, k8-sse3, athlon64-sse3, opteron-sse3, amdfam10, barcelona, btver1, btver2, bdver1, bdver2, bdver3, bdver4, znver1, znver2, znver3, x86-64, x86-64-v2, x86-64-v3, x86-64-v4 + + +Compiling the C compiler identification source file "CMakeCCompilerId.c" failed. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang.exe +Build flags: -fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-fno-addrsig;-Wa,--noexecstack;-Wformat;-Werror=format-security;-march=armv7a;;-D__MUSL__ +Id flags: -Aa + +The output was: +1 +clang: warning: argument unused during compilation: '-Aa' [-Wunused-command-line-argument] +error: unknown target CPU 'armv7a' +note: valid target CPU values are: nocona, core2, penryn, bonnell, atom, silvermont, slm, goldmont, goldmont-plus, tremont, nehalem, corei7, westmere, sandybridge, corei7-avx, ivybridge, core-avx-i, haswell, core-avx2, broadwell, skylake, skylake-avx512, skx, cascadelake, cooperlake, cannonlake, icelake-client, rocketlake, icelake-server, tigerlake, sapphirerapids, alderlake, knl, knm, k8, athlon64, athlon-fx, opteron, k8-sse3, athlon64-sse3, opteron-sse3, amdfam10, barcelona, btver1, btver2, bdver1, bdver2, bdver3, bdver4, znver1, znver2, znver3, x86-64, x86-64-v2, x86-64-v3, x86-64-v4 + + +Compiling the C compiler identification source file "CMakeCCompilerId.c" failed. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang.exe +Build flags: -fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-fno-addrsig;-Wa,--noexecstack;-Wformat;-Werror=format-security;-march=armv7a;;-D__MUSL__ +Id flags: -D__CLASSIC_C__ + +The output was: +1 +error: unknown target CPU 'armv7a' +note: valid target CPU values are: nocona, core2, penryn, bonnell, atom, silvermont, slm, goldmont, goldmont-plus, tremont, nehalem, corei7, westmere, sandybridge, corei7-avx, ivybridge, core-avx-i, haswell, core-avx2, broadwell, skylake, skylake-avx512, skx, cascadelake, cooperlake, cannonlake, icelake-client, rocketlake, icelake-server, tigerlake, sapphirerapids, alderlake, knl, knm, k8, athlon64, athlon-fx, opteron, k8-sse3, athlon64-sse3, opteron-sse3, amdfam10, barcelona, btver1, btver2, bdver1, bdver2, bdver3, bdver4, znver1, znver2, znver3, x86-64, x86-64-v2, x86-64-v3, x86-64-v4 + + +Compiling the C compiler identification source file "CMakeCCompilerId.c" failed. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang.exe +Build flags: -fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-fno-addrsig;-Wa,--noexecstack;-Wformat;-Werror=format-security;-march=armv7a;;-D__MUSL__ +Id flags: --target=arm-arm-none-eabi;-mcpu=cortex-m3 + +The output was: +1 +ld.lld: error: unable to find library -lc +ld.lld: error: unable to find library -lm +ld.lld: error: unable to find library -lclang_rt.builtins-arm +clang: error: ld.lld command failed with exit code 1 (use -v to see invocation) + + +Compiling the C compiler identification source file "CMakeCCompilerId.c" failed. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang.exe +Build flags: +Id flags: + +The output was: +1 +clang: error: unable to execute command: program not executable +clang: error: linker command failed with exit code 1 (use -v to see invocation) + + +Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang++.exe +Build flags: -fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-fno-addrsig;-Wa,--noexecstack;-Wformat;-Werror=format-security;-march=armv7a;;;-D__MUSL__ +Id flags: + +The output was: +1 +error: unknown target CPU 'armv7a' +note: valid target CPU values are: nocona, core2, penryn, bonnell, atom, silvermont, slm, goldmont, goldmont-plus, tremont, nehalem, corei7, westmere, sandybridge, corei7-avx, ivybridge, core-avx-i, haswell, core-avx2, broadwell, skylake, skylake-avx512, skx, cascadelake, cooperlake, cannonlake, icelake-client, rocketlake, icelake-server, tigerlake, sapphirerapids, alderlake, knl, knm, k8, athlon64, athlon-fx, opteron, k8-sse3, athlon64-sse3, opteron-sse3, amdfam10, barcelona, btver1, btver2, bdver1, bdver2, bdver3, bdver4, znver1, znver2, znver3, x86-64, x86-64-v2, x86-64-v3, x86-64-v4 + + +Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang++.exe +Build flags: -fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-fno-addrsig;-Wa,--noexecstack;-Wformat;-Werror=format-security;-march=armv7a;;;-D__MUSL__ +Id flags: -c + +The output was: +1 +error: unknown target CPU 'armv7a' +note: valid target CPU values are: nocona, core2, penryn, bonnell, atom, silvermont, slm, goldmont, goldmont-plus, tremont, nehalem, corei7, westmere, sandybridge, corei7-avx, ivybridge, core-avx-i, haswell, core-avx2, broadwell, skylake, skylake-avx512, skx, cascadelake, cooperlake, cannonlake, icelake-client, rocketlake, icelake-server, tigerlake, sapphirerapids, alderlake, knl, knm, k8, athlon64, athlon-fx, opteron, k8-sse3, athlon64-sse3, opteron-sse3, amdfam10, barcelona, btver1, btver2, bdver1, bdver2, bdver3, bdver4, znver1, znver2, znver3, x86-64, x86-64-v2, x86-64-v3, x86-64-v4 + + +Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang++.exe +Build flags: -fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-fno-addrsig;-Wa,--noexecstack;-Wformat;-Werror=format-security;-march=armv7a;;;-D__MUSL__ +Id flags: --c++ + +The output was: +1 +clang++: error: unsupported option '--c++' + + +Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang++.exe +Build flags: -fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-fno-addrsig;-Wa,--noexecstack;-Wformat;-Werror=format-security;-march=armv7a;;;-D__MUSL__ +Id flags: --ec++ + +The output was: +1 +clang++: error: unsupported option '--ec++' + + +Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang++.exe +Build flags: -fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-fno-addrsig;-Wa,--noexecstack;-Wformat;-Werror=format-security;-march=armv7a;;;-D__MUSL__ +Id flags: --target=arm-arm-none-eabi;-mcpu=cortex-m3 + +The output was: +1 +ld.lld: error: unable to find library -lc++ +ld.lld: error: unable to find library -lc++abi +ld.lld: error: unable to find library -lunwind +ld.lld: error: unable to find library -lc +ld.lld: error: unable to find library -lm +ld.lld: error: unable to find library -lclang_rt.builtins-arm +clang++: error: ld.lld command failed with exit code 1 (use -v to see invocation) + + +Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang++.exe +Build flags: +Id flags: + +The output was: +1 +clang++: error: unable to execute command: program not executable +clang++: error: linker command failed with exit code 1 (use -v to see invocation) + + +Compiling the C compiler identification source file "CMakeCCompilerId.c" failed. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang.exe +Build flags: -fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-fno-addrsig;-Wa,--noexecstack;-Wformat;-Werror=format-security;-march=armv7a;;-D__MUSL__ +Id flags: + +The output was: +1 +error: unknown target CPU 'armv7a' +note: valid target CPU values are: nocona, core2, penryn, bonnell, atom, silvermont, slm, goldmont, goldmont-plus, tremont, nehalem, corei7, westmere, sandybridge, corei7-avx, ivybridge, core-avx-i, haswell, core-avx2, broadwell, skylake, skylake-avx512, skx, cascadelake, cooperlake, cannonlake, icelake-client, rocketlake, icelake-server, tigerlake, sapphirerapids, alderlake, knl, knm, k8, athlon64, athlon-fx, opteron, k8-sse3, athlon64-sse3, opteron-sse3, amdfam10, barcelona, btver1, btver2, bdver1, bdver2, bdver3, bdver4, znver1, znver2, znver3, x86-64, x86-64-v2, x86-64-v3, x86-64-v4 + + +Compiling the C compiler identification source file "CMakeCCompilerId.c" failed. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang.exe +Build flags: -fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-fno-addrsig;-Wa,--noexecstack;-Wformat;-Werror=format-security;-march=armv7a;;-D__MUSL__ +Id flags: -c + +The output was: +1 +error: unknown target CPU 'armv7a' +note: valid target CPU values are: nocona, core2, penryn, bonnell, atom, silvermont, slm, goldmont, goldmont-plus, tremont, nehalem, corei7, westmere, sandybridge, corei7-avx, ivybridge, core-avx-i, haswell, core-avx2, broadwell, skylake, skylake-avx512, skx, cascadelake, cooperlake, cannonlake, icelake-client, rocketlake, icelake-server, tigerlake, sapphirerapids, alderlake, knl, knm, k8, athlon64, athlon-fx, opteron, k8-sse3, athlon64-sse3, opteron-sse3, amdfam10, barcelona, btver1, btver2, bdver1, bdver2, bdver3, bdver4, znver1, znver2, znver3, x86-64, x86-64-v2, x86-64-v3, x86-64-v4 + + +Compiling the C compiler identification source file "CMakeCCompilerId.c" failed. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang.exe +Build flags: -fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-fno-addrsig;-Wa,--noexecstack;-Wformat;-Werror=format-security;-march=armv7a;;-D__MUSL__ +Id flags: -Aa + +The output was: +1 +clang: warning: argument unused during compilation: '-Aa' [-Wunused-command-line-argument] +error: unknown target CPU 'armv7a' +note: valid target CPU values are: nocona, core2, penryn, bonnell, atom, silvermont, slm, goldmont, goldmont-plus, tremont, nehalem, corei7, westmere, sandybridge, corei7-avx, ivybridge, core-avx-i, haswell, core-avx2, broadwell, skylake, skylake-avx512, skx, cascadelake, cooperlake, cannonlake, icelake-client, rocketlake, icelake-server, tigerlake, sapphirerapids, alderlake, knl, knm, k8, athlon64, athlon-fx, opteron, k8-sse3, athlon64-sse3, opteron-sse3, amdfam10, barcelona, btver1, btver2, bdver1, bdver2, bdver3, bdver4, znver1, znver2, znver3, x86-64, x86-64-v2, x86-64-v3, x86-64-v4 + + +Compiling the C compiler identification source file "CMakeCCompilerId.c" failed. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang.exe +Build flags: -fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-fno-addrsig;-Wa,--noexecstack;-Wformat;-Werror=format-security;-march=armv7a;;-D__MUSL__ +Id flags: -D__CLASSIC_C__ + +The output was: +1 +error: unknown target CPU 'armv7a' +note: valid target CPU values are: nocona, core2, penryn, bonnell, atom, silvermont, slm, goldmont, goldmont-plus, tremont, nehalem, corei7, westmere, sandybridge, corei7-avx, ivybridge, core-avx-i, haswell, core-avx2, broadwell, skylake, skylake-avx512, skx, cascadelake, cooperlake, cannonlake, icelake-client, rocketlake, icelake-server, tigerlake, sapphirerapids, alderlake, knl, knm, k8, athlon64, athlon-fx, opteron, k8-sse3, athlon64-sse3, opteron-sse3, amdfam10, barcelona, btver1, btver2, bdver1, bdver2, bdver3, bdver4, znver1, znver2, znver3, x86-64, x86-64-v2, x86-64-v3, x86-64-v4 + + +Compiling the C compiler identification source file "CMakeCCompilerId.c" failed. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang.exe +Build flags: -fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-fno-addrsig;-Wa,--noexecstack;-Wformat;-Werror=format-security;-march=armv7a;;-D__MUSL__ +Id flags: --target=arm-arm-none-eabi;-mcpu=cortex-m3 + +The output was: +1 +ld.lld: error: unable to find library -lc +ld.lld: error: unable to find library -lm +ld.lld: error: unable to find library -lclang_rt.builtins-arm +clang: error: ld.lld command failed with exit code 1 (use -v to see invocation) + + +Compiling the C compiler identification source file "CMakeCCompilerId.c" failed. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang.exe +Build flags: +Id flags: + +The output was: +1 +clang: error: unable to execute command: program not executable +clang: error: linker command failed with exit code 1 (use -v to see invocation) + + +Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang++.exe +Build flags: -fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-fno-addrsig;-Wa,--noexecstack;-Wformat;-Werror=format-security;-march=armv7a;;;-D__MUSL__ +Id flags: + +The output was: +1 +error: unknown target CPU 'armv7a' +note: valid target CPU values are: nocona, core2, penryn, bonnell, atom, silvermont, slm, goldmont, goldmont-plus, tremont, nehalem, corei7, westmere, sandybridge, corei7-avx, ivybridge, core-avx-i, haswell, core-avx2, broadwell, skylake, skylake-avx512, skx, cascadelake, cooperlake, cannonlake, icelake-client, rocketlake, icelake-server, tigerlake, sapphirerapids, alderlake, knl, knm, k8, athlon64, athlon-fx, opteron, k8-sse3, athlon64-sse3, opteron-sse3, amdfam10, barcelona, btver1, btver2, bdver1, bdver2, bdver3, bdver4, znver1, znver2, znver3, x86-64, x86-64-v2, x86-64-v3, x86-64-v4 + + +Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang++.exe +Build flags: -fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-fno-addrsig;-Wa,--noexecstack;-Wformat;-Werror=format-security;-march=armv7a;;;-D__MUSL__ +Id flags: -c + +The output was: +1 +error: unknown target CPU 'armv7a' +note: valid target CPU values are: nocona, core2, penryn, bonnell, atom, silvermont, slm, goldmont, goldmont-plus, tremont, nehalem, corei7, westmere, sandybridge, corei7-avx, ivybridge, core-avx-i, haswell, core-avx2, broadwell, skylake, skylake-avx512, skx, cascadelake, cooperlake, cannonlake, icelake-client, rocketlake, icelake-server, tigerlake, sapphirerapids, alderlake, knl, knm, k8, athlon64, athlon-fx, opteron, k8-sse3, athlon64-sse3, opteron-sse3, amdfam10, barcelona, btver1, btver2, bdver1, bdver2, bdver3, bdver4, znver1, znver2, znver3, x86-64, x86-64-v2, x86-64-v3, x86-64-v4 + + +Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang++.exe +Build flags: -fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-fno-addrsig;-Wa,--noexecstack;-Wformat;-Werror=format-security;-march=armv7a;;;-D__MUSL__ +Id flags: --c++ + +The output was: +1 +clang++: error: unsupported option '--c++' + + +Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang++.exe +Build flags: -fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-fno-addrsig;-Wa,--noexecstack;-Wformat;-Werror=format-security;-march=armv7a;;;-D__MUSL__ +Id flags: --ec++ + +The output was: +1 +clang++: error: unsupported option '--ec++' + + +Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang++.exe +Build flags: -fdata-sections;-ffunction-sections;-funwind-tables;-fstack-protector-strong;-no-canonical-prefixes;-fno-addrsig;-Wa,--noexecstack;-Wformat;-Werror=format-security;-march=armv7a;;;-D__MUSL__ +Id flags: --target=arm-arm-none-eabi;-mcpu=cortex-m3 + +The output was: +1 +ld.lld: error: unable to find library -lc++ +ld.lld: error: unable to find library -lc++abi +ld.lld: error: unable to find library -lunwind +ld.lld: error: unable to find library -lc +ld.lld: error: unable to find library -lm +ld.lld: error: unable to find library -lclang_rt.builtins-arm +clang++: error: ld.lld command failed with exit code 1 (use -v to see invocation) + + +Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang++.exe +Build flags: +Id flags: + +The output was: +1 +clang++: error: unable to execute command: program not executable +clang++: error: linker command failed with exit code 1 (use -v to see invocation) + + diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeOutput.log b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeOutput.log new file mode 100644 index 0000000000000000000000000000000000000000..e65b9ae7e208ed3f285f048ac82454ab2c217226 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeOutput.log @@ -0,0 +1,1740 @@ +The target system is: OHOS - 1 - arm +The host system is: Windows - 10.0.19045 - AMD64 +Compiling the C compiler identification source file "CMakeCCompilerId.c" succeeded. +Compiler: E:/OHSDKnew/10/native/llvm/bin/clang.exe +Build flags: +Id flags: -c + +The output was: +0 + + +Compilation of the C compiler identification source "CMakeCCompilerId.c" produced "CMakeCCompilerId.o" + +The C compiler identification is Clang, found in "D:/sample_code/applications_app_samples/code/SuperFeature/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/3.16.5/CompilerIdC/CMakeCCompilerId.o" + +Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" succeeded. +Compiler: E:/OHSDKnew/10/native/llvm/bin/clang++.exe +Build flags: +Id flags: -c + +The output was: +0 + + +Compilation of the CXX compiler identification source "CMakeCXXCompilerId.cpp" produced "CMakeCXXCompilerId.o" + +The CXX compiler identification is Clang, found in "D:/sample_code/applications_app_samples/code/SuperFeature/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/3.16.5/CompilerIdCXX/CMakeCXXCompilerId.o" + +Determining if the C compiler works passed with the following output: +Change Dir: D:/sample_code/applications_app_samples/code/SuperFeature/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp + +Run Build Command(s):E:\OHSDKnew\10\native\build-tools\cmake\bin\ninja.exe cmTC_8df71 && [1/2] Building C object CMakeFiles/cmTC_8df71.dir/testCCompiler.c.o +clang: warning: argument unused during compilation: '--gcc-toolchain=E:/OHSDKnew/10/native/llvm' [-Wunused-command-line-argument] +[2/2] Linking C executable cmTC_8df71 + + + +Detecting C compiler ABI info compiled with the following output: +Change Dir: D:/sample_code/applications_app_samples/code/SuperFeature/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp + +Run Build Command(s):E:\OHSDKnew\10\native\build-tools\cmake\bin\ninja.exe cmTC_65045 && [1/2] Building C object CMakeFiles/cmTC_65045.dir/CMakeCCompilerABI.c.o +OHOS (dev) clang version 15.0.4 (llvm-project d1aa604d90b55a96aa22af9992d170fccbd41938) +Target: arm-unknown-linux-ohos +Thread model: posix +InstalledDir: E:/OHSDKnew/10/native/llvm/bin +clang: warning: argument unused during compilation: '--gcc-toolchain=E:/OHSDKnew/10/native/llvm' [-Wunused-command-line-argument] + (in-process) + "E:/OHSDKnew/10/native/llvm/bin/clang.exe" -cc1 -triple armv7-unknown-linux-ohos -emit-obj -mrelax-all -mnoexecstack -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCCompilerABI.c -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=1 -target-cpu generic -target-feature +soft-float -target-feature +soft-float-abi -target-feature -vfp2 -target-feature -vfp2sp -target-feature -vfp3 -target-feature -vfp3d16 -target-feature -vfp3d16sp -target-feature -vfp3sp -target-feature -fp16 -target-feature -vfp4 -target-feature -vfp4d16 -target-feature -vfp4d16sp -target-feature -vfp4sp -target-feature -fp-armv8 -target-feature -fp-armv8d16 -target-feature -fp-armv8d16sp -target-feature -fp-armv8sp -target-feature -fullfp16 -target-feature -fp64 -target-feature -d32 -target-feature -neon -target-feature -sha2 -target-feature -aes -target-feature -dotprod -target-feature -fp16fml -target-feature -bf16 -target-feature -mve -target-feature -mve.fp -target-feature -fpregs -target-abi aapcs-linux -msoft-float -mfloat-abi soft -fallow-half-arguments-and-returns -mllvm -treat-scalable-fixed-error-as-warning -debugger-tuning=gdb -v -ffunction-sections -fdata-sections -fcoverage-compilation-dir=D:/sample_code/applications_app_samples/code/SuperFeature/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp -resource-dir E:/OHSDKnew/10/native/llvm/lib/clang/15.0.4 -D __MUSL__ -isysroot E:/OHSDKnew/10/native/sysroot -internal-isystem E:/OHSDKnew/10/native/llvm/lib/clang/15.0.4/include -internal-externc-isystem E:/OHSDKnew/10/native/sysroot/usr/include/arm-linux-ohos -internal-externc-isystem E:/OHSDKnew/10/native/sysroot/include -internal-externc-isystem E:/OHSDKnew/10/native/sysroot/usr/include -Wformat -Werror=format-security -fdebug-compilation-dir=D:/sample_code/applications_app_samples/code/SuperFeature/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp -ferror-limit 19 -stack-protector 2 -fno-signed-char -fgnuc-version=4.2.1 -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_65045.dir/CMakeCCompilerABI.c.o -x c E:/OHSDKnew/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeCCompilerABI.c +clang -cc1 version 15.0.4 based upon LLVM 15.0.4 default target x86_64-w64-windows-gnu +ignoring nonexistent directory "E:/OHSDKnew/10/native/sysroot/include" +#include "..." search starts here: +#include <...> search starts here: + E:/OHSDKnew/10/native/llvm/lib/clang/15.0.4/include + E:/OHSDKnew/10/native/sysroot/usr/include/arm-linux-ohos + E:/OHSDKnew/10/native/sysroot/usr/include +End of search list. +[2/2] Linking C executable cmTC_65045 +OHOS (dev) clang version 15.0.4 (llvm-project d1aa604d90b55a96aa22af9992d170fccbd41938) +Target: arm-unknown-linux-ohos +Thread model: posix +InstalledDir: E:/OHSDKnew/10/native/llvm/bin + "E:/OHSDKnew/10/native/llvm/bin/ld.lld" --sysroot=E:/OHSDKnew/10/native/sysroot -pie -EL -z now -z relro -z max-page-size=4096 --hash-style=gnu --hash-style=both --enable-new-dtags --eh-frame-hdr -m armelf_linux_eabi -dynamic-linker /lib/ld-musl-arm.so.1 -o cmTC_65045 E:/OHSDKnew/10/native/sysroot/usr/lib/arm-linux-ohos/Scrt1.o E:/OHSDKnew/10/native/sysroot/usr/lib/arm-linux-ohos/crti.o E:/OHSDKnew/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/clang_rt.crtbegin.o -LE:/OHSDKnew/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos -LE:/OHSDKnew/10/native/sysroot/usr/lib/ -LE:/OHSDKnew/10/native/llvm/bin/../lib/arm-linux-ohos/ -LE:/OHSDKnew/10/native/sysroot/usr/lib/arm-linux-ohos/ --build-id=sha1 --warn-shared-textrel --fatal-warnings -lunwind --no-undefined -z noexecstack --gc-sections CMakeFiles/cmTC_65045.dir/CMakeCCompilerABI.c.o E:/OHSDKnew/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a -l:libunwind.a -lc E:/OHSDKnew/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a -l:libunwind.a E:/OHSDKnew/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/clang_rt.crtend.o E:/OHSDKnew/10/native/sysroot/usr/lib/arm-linux-ohos/crtn.o + + + +Parsed C implicit include dir info from above output: rv=done + found start of include info + found start of implicit include info + add: [E:/OHSDKnew/10/native/llvm/lib/clang/15.0.4/include] + add: [E:/OHSDKnew/10/native/sysroot/usr/include/arm-linux-ohos] + add: [E:/OHSDKnew/10/native/sysroot/usr/include] + end of search list found + collapse include dir [E:/OHSDKnew/10/native/llvm/lib/clang/15.0.4/include] ==> [E:/OHSDKnew/10/native/llvm/lib/clang/15.0.4/include] + collapse include dir [E:/OHSDKnew/10/native/sysroot/usr/include/arm-linux-ohos] ==> [E:/OHSDKnew/10/native/sysroot/usr/include/arm-linux-ohos] + collapse include dir [E:/OHSDKnew/10/native/sysroot/usr/include] ==> [E:/OHSDKnew/10/native/sysroot/usr/include] + implicit include dirs: [E:/OHSDKnew/10/native/llvm/lib/clang/15.0.4/include;E:/OHSDKnew/10/native/sysroot/usr/include/arm-linux-ohos;E:/OHSDKnew/10/native/sysroot/usr/include] + + +Parsed C implicit link information from above output: + link line regex: [^( *|.*[/\])(ld\.lld\.exe|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] + ignore line: [Change Dir: D:/sample_code/applications_app_samples/code/SuperFeature/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp] + ignore line: [] + ignore line: [Run Build Command(s):E:\OHSDKnew\10\native\build-tools\cmake\bin\ninja.exe cmTC_65045 && [1/2] Building C object CMakeFiles/cmTC_65045.dir/CMakeCCompilerABI.c.o] + ignore line: [OHOS (dev) clang version 15.0.4 (llvm-project d1aa604d90b55a96aa22af9992d170fccbd41938)] + ignore line: [Target: arm-unknown-linux-ohos] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: E:/OHSDKnew/10/native/llvm/bin] + ignore line: [clang: warning: argument unused during compilation: '--gcc-toolchain=E:/OHSDKnew/10/native/llvm' [-Wunused-command-line-argument]] + ignore line: [ (in-process)] + ignore line: [ "E:/OHSDKnew/10/native/llvm/bin/clang.exe" -cc1 -triple armv7-unknown-linux-ohos -emit-obj -mrelax-all -mnoexecstack -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCCompilerABI.c -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=1 -target-cpu generic -target-feature +soft-float -target-feature +soft-float-abi -target-feature -vfp2 -target-feature -vfp2sp -target-feature -vfp3 -target-feature -vfp3d16 -target-feature -vfp3d16sp -target-feature -vfp3sp -target-feature -fp16 -target-feature -vfp4 -target-feature -vfp4d16 -target-feature -vfp4d16sp -target-feature -vfp4sp -target-feature -fp-armv8 -target-feature -fp-armv8d16 -target-feature -fp-armv8d16sp -target-feature -fp-armv8sp -target-feature -fullfp16 -target-feature -fp64 -target-feature -d32 -target-feature -neon -target-feature -sha2 -target-feature -aes -target-feature -dotprod -target-feature -fp16fml -target-feature -bf16 -target-feature -mve -target-feature -mve.fp -target-feature -fpregs -target-abi aapcs-linux -msoft-float -mfloat-abi soft -fallow-half-arguments-and-returns -mllvm -treat-scalable-fixed-error-as-warning -debugger-tuning=gdb -v -ffunction-sections -fdata-sections -fcoverage-compilation-dir=D:/sample_code/applications_app_samples/code/SuperFeature/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp -resource-dir E:/OHSDKnew/10/native/llvm/lib/clang/15.0.4 -D __MUSL__ -isysroot E:/OHSDKnew/10/native/sysroot -internal-isystem E:/OHSDKnew/10/native/llvm/lib/clang/15.0.4/include -internal-externc-isystem E:/OHSDKnew/10/native/sysroot/usr/include/arm-linux-ohos -internal-externc-isystem E:/OHSDKnew/10/native/sysroot/include -internal-externc-isystem E:/OHSDKnew/10/native/sysroot/usr/include -Wformat -Werror=format-security -fdebug-compilation-dir=D:/sample_code/applications_app_samples/code/SuperFeature/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp -ferror-limit 19 -stack-protector 2 -fno-signed-char -fgnuc-version=4.2.1 -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_65045.dir/CMakeCCompilerABI.c.o -x c E:/OHSDKnew/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeCCompilerABI.c] + ignore line: [clang -cc1 version 15.0.4 based upon LLVM 15.0.4 default target x86_64-w64-windows-gnu] + ignore line: [ignoring nonexistent directory "E:/OHSDKnew/10/native/sysroot/include"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ E:/OHSDKnew/10/native/llvm/lib/clang/15.0.4/include] + ignore line: [ E:/OHSDKnew/10/native/sysroot/usr/include/arm-linux-ohos] + ignore line: [ E:/OHSDKnew/10/native/sysroot/usr/include] + ignore line: [End of search list.] + ignore line: [[2/2] Linking C executable cmTC_65045] + ignore line: [OHOS (dev) clang version 15.0.4 (llvm-project d1aa604d90b55a96aa22af9992d170fccbd41938)] + ignore line: [Target: arm-unknown-linux-ohos] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: E:/OHSDKnew/10/native/llvm/bin] + link line: [ "E:/OHSDKnew/10/native/llvm/bin/ld.lld" --sysroot=E:/OHSDKnew/10/native/sysroot -pie -EL -z now -z relro -z max-page-size=4096 --hash-style=gnu --hash-style=both --enable-new-dtags --eh-frame-hdr -m armelf_linux_eabi -dynamic-linker /lib/ld-musl-arm.so.1 -o cmTC_65045 E:/OHSDKnew/10/native/sysroot/usr/lib/arm-linux-ohos/Scrt1.o E:/OHSDKnew/10/native/sysroot/usr/lib/arm-linux-ohos/crti.o E:/OHSDKnew/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/clang_rt.crtbegin.o -LE:/OHSDKnew/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos -LE:/OHSDKnew/10/native/sysroot/usr/lib/ -LE:/OHSDKnew/10/native/llvm/bin/../lib/arm-linux-ohos/ -LE:/OHSDKnew/10/native/sysroot/usr/lib/arm-linux-ohos/ --build-id=sha1 --warn-shared-textrel --fatal-warnings -lunwind --no-undefined -z noexecstack --gc-sections CMakeFiles/cmTC_65045.dir/CMakeCCompilerABI.c.o E:/OHSDKnew/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a -l:libunwind.a -lc E:/OHSDKnew/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a -l:libunwind.a E:/OHSDKnew/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/clang_rt.crtend.o E:/OHSDKnew/10/native/sysroot/usr/lib/arm-linux-ohos/crtn.o] + arg [E:/OHSDKnew/10/native/llvm/bin/ld.lld] ==> ignore + arg [--sysroot=E:/OHSDKnew/10/native/sysroot] ==> ignore + arg [-pie] ==> ignore + arg [-EL] ==> ignore + arg [-znow] ==> ignore + arg [-zrelro] ==> ignore + arg [-zmax-page-size=4096] ==> ignore + arg [--hash-style=gnu] ==> ignore + arg [--hash-style=both] ==> ignore + arg [--enable-new-dtags] ==> ignore + arg [--eh-frame-hdr] ==> ignore + arg [-m] ==> ignore + arg [armelf_linux_eabi] ==> ignore + arg [-dynamic-linker] ==> ignore + arg [/lib/ld-musl-arm.so.1] ==> ignore + arg [-o] ==> ignore + arg [cmTC_65045] ==> ignore + arg [E:/OHSDKnew/10/native/sysroot/usr/lib/arm-linux-ohos/Scrt1.o] ==> ignore + arg [E:/OHSDKnew/10/native/sysroot/usr/lib/arm-linux-ohos/crti.o] ==> ignore + arg [E:/OHSDKnew/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/clang_rt.crtbegin.o] ==> ignore + arg [-LE:/OHSDKnew/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos] ==> dir [E:/OHSDKnew/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos] + arg [-LE:/OHSDKnew/10/native/sysroot/usr/lib/] ==> dir [E:/OHSDKnew/10/native/sysroot/usr/lib/] + arg [-LE:/OHSDKnew/10/native/llvm/bin/../lib/arm-linux-ohos/] ==> dir [E:/OHSDKnew/10/native/llvm/bin/../lib/arm-linux-ohos/] + arg [-LE:/OHSDKnew/10/native/sysroot/usr/lib/arm-linux-ohos/] ==> dir [E:/OHSDKnew/10/native/sysroot/usr/lib/arm-linux-ohos/] + arg [--build-id=sha1] ==> ignore + arg [--warn-shared-textrel] ==> ignore + arg [--fatal-warnings] ==> ignore + arg [-lunwind] ==> lib [unwind] + arg [--no-undefined] ==> ignore + arg [-znoexecstack] ==> ignore + arg [--gc-sections] ==> ignore + arg [CMakeFiles/cmTC_65045.dir/CMakeCCompilerABI.c.o] ==> ignore + arg [E:/OHSDKnew/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a] ==> lib [E:/OHSDKnew/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a] + arg [-l:libunwind.a] ==> lib [-l:libunwind.a] + arg [-lc] ==> lib [c] + arg [E:/OHSDKnew/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a] ==> lib [E:/OHSDKnew/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a] + arg [-l:libunwind.a] ==> lib [-l:libunwind.a] + arg [E:/OHSDKnew/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/clang_rt.crtend.o] ==> ignore + arg [E:/OHSDKnew/10/native/sysroot/usr/lib/arm-linux-ohos/crtn.o] ==> ignore + remove lib [E:/OHSDKnew/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a] + remove lib [E:/OHSDKnew/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a] + collapse library dir [E:/OHSDKnew/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos] ==> [E:/OHSDKnew/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos] + collapse library dir [E:/OHSDKnew/10/native/sysroot/usr/lib/] ==> [E:/OHSDKnew/10/native/sysroot/usr/lib] + collapse library dir [E:/OHSDKnew/10/native/llvm/bin/../lib/arm-linux-ohos/] ==> [E:/OHSDKnew/10/native/llvm/lib/arm-linux-ohos] + collapse library dir [E:/OHSDKnew/10/native/sysroot/usr/lib/arm-linux-ohos/] ==> [E:/OHSDKnew/10/native/sysroot/usr/lib/arm-linux-ohos] + implicit libs: [unwind;-l:libunwind.a;c;-l:libunwind.a] + implicit dirs: [E:/OHSDKnew/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos;E:/OHSDKnew/10/native/sysroot/usr/lib;E:/OHSDKnew/10/native/llvm/lib/arm-linux-ohos;E:/OHSDKnew/10/native/sysroot/usr/lib/arm-linux-ohos] + implicit fwks: [] + + +Determining if the CXX compiler works passed with the following output: +Change Dir: D:/sample_code/applications_app_samples/code/SuperFeature/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp + +Run Build Command(s):E:\OHSDKnew\10\native\build-tools\cmake\bin\ninja.exe cmTC_86e71 && [1/2] Building CXX object CMakeFiles/cmTC_86e71.dir/testCXXCompiler.cxx.o +clang++: warning: argument unused during compilation: '--gcc-toolchain=E:/OHSDKnew/10/native/llvm' [-Wunused-command-line-argument] +[2/2] Linking CXX executable cmTC_86e71 + + + +Detecting CXX compiler ABI info compiled with the following output: +Change Dir: D:/sample_code/applications_app_samples/code/SuperFeature/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp + +Run Build Command(s):E:\OHSDKnew\10\native\build-tools\cmake\bin\ninja.exe cmTC_bca4d && [1/2] Building CXX object CMakeFiles/cmTC_bca4d.dir/CMakeCXXCompilerABI.cpp.o +OHOS (dev) clang version 15.0.4 (llvm-project d1aa604d90b55a96aa22af9992d170fccbd41938) +Target: arm-unknown-linux-ohos +Thread model: posix +InstalledDir: E:/OHSDKnew/10/native/llvm/bin +clang++: warning: argument unused during compilation: '--gcc-toolchain=E:/OHSDKnew/10/native/llvm' [-Wunused-command-line-argument] + (in-process) + "E:/OHSDKnew/10/native/llvm/bin/clang++.exe" -cc1 -triple armv7-unknown-linux-ohos -emit-obj -mrelax-all -mnoexecstack -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCXXCompilerABI.cpp -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=1 -target-cpu generic -target-feature +soft-float -target-feature +soft-float-abi -target-feature -vfp2 -target-feature -vfp2sp -target-feature -vfp3 -target-feature -vfp3d16 -target-feature -vfp3d16sp -target-feature -vfp3sp -target-feature -fp16 -target-feature -vfp4 -target-feature -vfp4d16 -target-feature -vfp4d16sp -target-feature -vfp4sp -target-feature -fp-armv8 -target-feature -fp-armv8d16 -target-feature -fp-armv8d16sp -target-feature -fp-armv8sp -target-feature -fullfp16 -target-feature -fp64 -target-feature -d32 -target-feature -neon -target-feature -sha2 -target-feature -aes -target-feature -dotprod -target-feature -fp16fml -target-feature -bf16 -target-feature -mve -target-feature -mve.fp -target-feature -fpregs -target-abi aapcs-linux -msoft-float -mfloat-abi soft -fallow-half-arguments-and-returns -mllvm -treat-scalable-fixed-error-as-warning -debugger-tuning=gdb -v -ffunction-sections -fdata-sections -fcoverage-compilation-dir=D:/sample_code/applications_app_samples/code/SuperFeature/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp -resource-dir E:/OHSDKnew/10/native/llvm/lib/clang/15.0.4 -D __MUSL__ -isysroot E:/OHSDKnew/10/native/sysroot -internal-isystem E:/OHSDKnew/10/native/llvm/bin/../include/libcxx-ohos/include/c++/v1 -internal-isystem E:/OHSDKnew/10/native/llvm/lib/clang/15.0.4/include -internal-externc-isystem E:/OHSDKnew/10/native/sysroot/usr/include/arm-linux-ohos -internal-externc-isystem E:/OHSDKnew/10/native/sysroot/include -internal-externc-isystem E:/OHSDKnew/10/native/sysroot/usr/include -Wformat -Werror=format-security -fdeprecated-macro -fdebug-compilation-dir=D:/sample_code/applications_app_samples/code/SuperFeature/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp -ferror-limit 19 -stack-protector 2 -fno-signed-char -fgnuc-version=4.2.1 -fcxx-exceptions -fexceptions -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_bca4d.dir/CMakeCXXCompilerABI.cpp.o -x c++ E:/OHSDKnew/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeCXXCompilerABI.cpp +clang -cc1 version 15.0.4 based upon LLVM 15.0.4 default target x86_64-w64-windows-gnu +ignoring nonexistent directory "E:/OHSDKnew/10/native/sysroot/include" +#include "..." search starts here: +#include <...> search starts here: + E:/OHSDKnew/10/native/llvm/bin/../include/libcxx-ohos/include/c++/v1 + E:/OHSDKnew/10/native/llvm/lib/clang/15.0.4/include + E:/OHSDKnew/10/native/sysroot/usr/include/arm-linux-ohos + E:/OHSDKnew/10/native/sysroot/usr/include +End of search list. +[2/2] Linking CXX executable cmTC_bca4d +OHOS (dev) clang version 15.0.4 (llvm-project d1aa604d90b55a96aa22af9992d170fccbd41938) +Target: arm-unknown-linux-ohos +Thread model: posix +InstalledDir: E:/OHSDKnew/10/native/llvm/bin + "E:/OHSDKnew/10/native/llvm/bin/ld.lld" --sysroot=E:/OHSDKnew/10/native/sysroot -pie -EL -z now -z relro -z max-page-size=4096 --hash-style=gnu --hash-style=both --enable-new-dtags --eh-frame-hdr -m armelf_linux_eabi -dynamic-linker /lib/ld-musl-arm.so.1 -o cmTC_bca4d E:/OHSDKnew/10/native/sysroot/usr/lib/arm-linux-ohos/Scrt1.o E:/OHSDKnew/10/native/sysroot/usr/lib/arm-linux-ohos/crti.o E:/OHSDKnew/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/clang_rt.crtbegin.o -LE:/OHSDKnew/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos -LE:/OHSDKnew/10/native/sysroot/usr/lib/ -LE:/OHSDKnew/10/native/llvm/bin/../lib/arm-linux-ohos/ -LE:/OHSDKnew/10/native/sysroot/usr/lib/arm-linux-ohos/ --build-id=sha1 --warn-shared-textrel --fatal-warnings -lunwind --no-undefined -z noexecstack --gc-sections CMakeFiles/cmTC_bca4d.dir/CMakeCXXCompilerABI.cpp.o -Bstatic -lc++ -lc++abi -lunwind -Bdynamic -lm E:/OHSDKnew/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a -l:libunwind.a -lc E:/OHSDKnew/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a -l:libunwind.a E:/OHSDKnew/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/clang_rt.crtend.o E:/OHSDKnew/10/native/sysroot/usr/lib/arm-linux-ohos/crtn.o + + + +Parsed CXX implicit include dir info from above output: rv=done + found start of include info + found start of implicit include info + add: [E:/OHSDKnew/10/native/llvm/bin/../include/libcxx-ohos/include/c++/v1] + add: [E:/OHSDKnew/10/native/llvm/lib/clang/15.0.4/include] + add: [E:/OHSDKnew/10/native/sysroot/usr/include/arm-linux-ohos] + add: [E:/OHSDKnew/10/native/sysroot/usr/include] + end of search list found + collapse include dir [E:/OHSDKnew/10/native/llvm/bin/../include/libcxx-ohos/include/c++/v1] ==> [E:/OHSDKnew/10/native/llvm/include/libcxx-ohos/include/c++/v1] + collapse include dir [E:/OHSDKnew/10/native/llvm/lib/clang/15.0.4/include] ==> [E:/OHSDKnew/10/native/llvm/lib/clang/15.0.4/include] + collapse include dir [E:/OHSDKnew/10/native/sysroot/usr/include/arm-linux-ohos] ==> [E:/OHSDKnew/10/native/sysroot/usr/include/arm-linux-ohos] + collapse include dir [E:/OHSDKnew/10/native/sysroot/usr/include] ==> [E:/OHSDKnew/10/native/sysroot/usr/include] + implicit include dirs: [E:/OHSDKnew/10/native/llvm/include/libcxx-ohos/include/c++/v1;E:/OHSDKnew/10/native/llvm/lib/clang/15.0.4/include;E:/OHSDKnew/10/native/sysroot/usr/include/arm-linux-ohos;E:/OHSDKnew/10/native/sysroot/usr/include] + + +Parsed CXX implicit link information from above output: + link line regex: [^( *|.*[/\])(ld\.lld\.exe|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] + ignore line: [Change Dir: D:/sample_code/applications_app_samples/code/SuperFeature/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp] + ignore line: [] + ignore line: [Run Build Command(s):E:\OHSDKnew\10\native\build-tools\cmake\bin\ninja.exe cmTC_bca4d && [1/2] Building CXX object CMakeFiles/cmTC_bca4d.dir/CMakeCXXCompilerABI.cpp.o] + ignore line: [OHOS (dev) clang version 15.0.4 (llvm-project d1aa604d90b55a96aa22af9992d170fccbd41938)] + ignore line: [Target: arm-unknown-linux-ohos] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: E:/OHSDKnew/10/native/llvm/bin] + ignore line: [clang++: warning: argument unused during compilation: '--gcc-toolchain=E:/OHSDKnew/10/native/llvm' [-Wunused-command-line-argument]] + ignore line: [ (in-process)] + ignore line: [ "E:/OHSDKnew/10/native/llvm/bin/clang++.exe" -cc1 -triple armv7-unknown-linux-ohos -emit-obj -mrelax-all -mnoexecstack -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCXXCompilerABI.cpp -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=1 -target-cpu generic -target-feature +soft-float -target-feature +soft-float-abi -target-feature -vfp2 -target-feature -vfp2sp -target-feature -vfp3 -target-feature -vfp3d16 -target-feature -vfp3d16sp -target-feature -vfp3sp -target-feature -fp16 -target-feature -vfp4 -target-feature -vfp4d16 -target-feature -vfp4d16sp -target-feature -vfp4sp -target-feature -fp-armv8 -target-feature -fp-armv8d16 -target-feature -fp-armv8d16sp -target-feature -fp-armv8sp -target-feature -fullfp16 -target-feature -fp64 -target-feature -d32 -target-feature -neon -target-feature -sha2 -target-feature -aes -target-feature -dotprod -target-feature -fp16fml -target-feature -bf16 -target-feature -mve -target-feature -mve.fp -target-feature -fpregs -target-abi aapcs-linux -msoft-float -mfloat-abi soft -fallow-half-arguments-and-returns -mllvm -treat-scalable-fixed-error-as-warning -debugger-tuning=gdb -v -ffunction-sections -fdata-sections -fcoverage-compilation-dir=D:/sample_code/applications_app_samples/code/SuperFeature/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp -resource-dir E:/OHSDKnew/10/native/llvm/lib/clang/15.0.4 -D __MUSL__ -isysroot E:/OHSDKnew/10/native/sysroot -internal-isystem E:/OHSDKnew/10/native/llvm/bin/../include/libcxx-ohos/include/c++/v1 -internal-isystem E:/OHSDKnew/10/native/llvm/lib/clang/15.0.4/include -internal-externc-isystem E:/OHSDKnew/10/native/sysroot/usr/include/arm-linux-ohos -internal-externc-isystem E:/OHSDKnew/10/native/sysroot/include -internal-externc-isystem E:/OHSDKnew/10/native/sysroot/usr/include -Wformat -Werror=format-security -fdeprecated-macro -fdebug-compilation-dir=D:/sample_code/applications_app_samples/code/SuperFeature/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp -ferror-limit 19 -stack-protector 2 -fno-signed-char -fgnuc-version=4.2.1 -fcxx-exceptions -fexceptions -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_bca4d.dir/CMakeCXXCompilerABI.cpp.o -x c++ E:/OHSDKnew/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeCXXCompilerABI.cpp] + ignore line: [clang -cc1 version 15.0.4 based upon LLVM 15.0.4 default target x86_64-w64-windows-gnu] + ignore line: [ignoring nonexistent directory "E:/OHSDKnew/10/native/sysroot/include"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ E:/OHSDKnew/10/native/llvm/bin/../include/libcxx-ohos/include/c++/v1] + ignore line: [ E:/OHSDKnew/10/native/llvm/lib/clang/15.0.4/include] + ignore line: [ E:/OHSDKnew/10/native/sysroot/usr/include/arm-linux-ohos] + ignore line: [ E:/OHSDKnew/10/native/sysroot/usr/include] + ignore line: [End of search list.] + ignore line: [[2/2] Linking CXX executable cmTC_bca4d] + ignore line: [OHOS (dev) clang version 15.0.4 (llvm-project d1aa604d90b55a96aa22af9992d170fccbd41938)] + ignore line: [Target: arm-unknown-linux-ohos] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: E:/OHSDKnew/10/native/llvm/bin] + link line: [ "E:/OHSDKnew/10/native/llvm/bin/ld.lld" --sysroot=E:/OHSDKnew/10/native/sysroot -pie -EL -z now -z relro -z max-page-size=4096 --hash-style=gnu --hash-style=both --enable-new-dtags --eh-frame-hdr -m armelf_linux_eabi -dynamic-linker /lib/ld-musl-arm.so.1 -o cmTC_bca4d E:/OHSDKnew/10/native/sysroot/usr/lib/arm-linux-ohos/Scrt1.o E:/OHSDKnew/10/native/sysroot/usr/lib/arm-linux-ohos/crti.o E:/OHSDKnew/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/clang_rt.crtbegin.o -LE:/OHSDKnew/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos -LE:/OHSDKnew/10/native/sysroot/usr/lib/ -LE:/OHSDKnew/10/native/llvm/bin/../lib/arm-linux-ohos/ -LE:/OHSDKnew/10/native/sysroot/usr/lib/arm-linux-ohos/ --build-id=sha1 --warn-shared-textrel --fatal-warnings -lunwind --no-undefined -z noexecstack --gc-sections CMakeFiles/cmTC_bca4d.dir/CMakeCXXCompilerABI.cpp.o -Bstatic -lc++ -lc++abi -lunwind -Bdynamic -lm E:/OHSDKnew/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a -l:libunwind.a -lc E:/OHSDKnew/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a -l:libunwind.a E:/OHSDKnew/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/clang_rt.crtend.o E:/OHSDKnew/10/native/sysroot/usr/lib/arm-linux-ohos/crtn.o] + arg [E:/OHSDKnew/10/native/llvm/bin/ld.lld] ==> ignore + arg [--sysroot=E:/OHSDKnew/10/native/sysroot] ==> ignore + arg [-pie] ==> ignore + arg [-EL] ==> ignore + arg [-znow] ==> ignore + arg [-zrelro] ==> ignore + arg [-zmax-page-size=4096] ==> ignore + arg [--hash-style=gnu] ==> ignore + arg [--hash-style=both] ==> ignore + arg [--enable-new-dtags] ==> ignore + arg [--eh-frame-hdr] ==> ignore + arg [-m] ==> ignore + arg [armelf_linux_eabi] ==> ignore + arg [-dynamic-linker] ==> ignore + arg [/lib/ld-musl-arm.so.1] ==> ignore + arg [-o] ==> ignore + arg [cmTC_bca4d] ==> ignore + arg [E:/OHSDKnew/10/native/sysroot/usr/lib/arm-linux-ohos/Scrt1.o] ==> ignore + arg [E:/OHSDKnew/10/native/sysroot/usr/lib/arm-linux-ohos/crti.o] ==> ignore + arg [E:/OHSDKnew/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/clang_rt.crtbegin.o] ==> ignore + arg [-LE:/OHSDKnew/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos] ==> dir [E:/OHSDKnew/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos] + arg [-LE:/OHSDKnew/10/native/sysroot/usr/lib/] ==> dir [E:/OHSDKnew/10/native/sysroot/usr/lib/] + arg [-LE:/OHSDKnew/10/native/llvm/bin/../lib/arm-linux-ohos/] ==> dir [E:/OHSDKnew/10/native/llvm/bin/../lib/arm-linux-ohos/] + arg [-LE:/OHSDKnew/10/native/sysroot/usr/lib/arm-linux-ohos/] ==> dir [E:/OHSDKnew/10/native/sysroot/usr/lib/arm-linux-ohos/] + arg [--build-id=sha1] ==> ignore + arg [--warn-shared-textrel] ==> ignore + arg [--fatal-warnings] ==> ignore + arg [-lunwind] ==> lib [unwind] + arg [--no-undefined] ==> ignore + arg [-znoexecstack] ==> ignore + arg [--gc-sections] ==> ignore + arg [CMakeFiles/cmTC_bca4d.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore + arg [-Bstatic] ==> ignore + arg [-lc++] ==> lib [c++] + arg [-lc++abi] ==> lib [c++abi] + arg [-lunwind] ==> lib [unwind] + arg [-Bdynamic] ==> ignore + arg [-lm] ==> lib [m] + arg [E:/OHSDKnew/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a] ==> lib [E:/OHSDKnew/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a] + arg [-l:libunwind.a] ==> lib [-l:libunwind.a] + arg [-lc] ==> lib [c] + arg [E:/OHSDKnew/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a] ==> lib [E:/OHSDKnew/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a] + arg [-l:libunwind.a] ==> lib [-l:libunwind.a] + arg [E:/OHSDKnew/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/clang_rt.crtend.o] ==> ignore + arg [E:/OHSDKnew/10/native/sysroot/usr/lib/arm-linux-ohos/crtn.o] ==> ignore + remove lib [E:/OHSDKnew/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a] + remove lib [E:/OHSDKnew/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a] + collapse library dir [E:/OHSDKnew/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos] ==> [E:/OHSDKnew/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos] + collapse library dir [E:/OHSDKnew/10/native/sysroot/usr/lib/] ==> [E:/OHSDKnew/10/native/sysroot/usr/lib] + collapse library dir [E:/OHSDKnew/10/native/llvm/bin/../lib/arm-linux-ohos/] ==> [E:/OHSDKnew/10/native/llvm/lib/arm-linux-ohos] + collapse library dir [E:/OHSDKnew/10/native/sysroot/usr/lib/arm-linux-ohos/] ==> [E:/OHSDKnew/10/native/sysroot/usr/lib/arm-linux-ohos] + implicit libs: [unwind;c++;c++abi;unwind;m;-l:libunwind.a;c;-l:libunwind.a] + implicit dirs: [E:/OHSDKnew/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos;E:/OHSDKnew/10/native/sysroot/usr/lib;E:/OHSDKnew/10/native/llvm/lib/arm-linux-ohos;E:/OHSDKnew/10/native/sysroot/usr/lib/arm-linux-ohos] + implicit fwks: [] + + +The target system is: OHOS - 1 - arm +The host system is: Windows - 10.0.22621 - AMD64 +Compiling the C compiler identification source file "CMakeCCompilerId.c" succeeded. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang.exe +Build flags: +Id flags: -c + +The output was: +0 + + +Compilation of the C compiler identification source "CMakeCCompilerId.c" produced "CMakeCCompilerId.o" + +The C compiler identification is Clang, found in "D:/Program/OpenHarmony/AAS1026/applications_app_samples/code/SuperFeature/Widget/FormGame/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/3.16.5/CompilerIdC/CMakeCCompilerId.o" + +Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" succeeded. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang++.exe +Build flags: +Id flags: -c + +The output was: +0 + + +Compilation of the CXX compiler identification source "CMakeCXXCompilerId.cpp" produced "CMakeCXXCompilerId.o" + +The CXX compiler identification is Clang, found in "D:/Program/OpenHarmony/AAS1026/applications_app_samples/code/SuperFeature/Widget/FormGame/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/3.16.5/CompilerIdCXX/CMakeCXXCompilerId.o" + +Determining if the C compiler works passed with the following output: +Change Dir: D:/Program/OpenHarmony/AAS1026/applications_app_samples/code/SuperFeature/Widget/FormGame/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp + +Run Build Command(s):C:\Users\h30053725\AppData\Local\Huawei\SDK1026\openharmony\10\native\build-tools\cmake\bin\ninja.exe cmTC_9f4c7 && [1/2] Building C object CMakeFiles/cmTC_9f4c7.dir/testCCompiler.c.o +clang: warning: argument unused during compilation: '--gcc-toolchain=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm' [-Wunused-command-line-argument] +[2/2] Linking C executable cmTC_9f4c7 + + + +Detecting C compiler ABI info compiled with the following output: +Change Dir: D:/Program/OpenHarmony/AAS1026/applications_app_samples/code/SuperFeature/Widget/FormGame/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp + +Run Build Command(s):C:\Users\h30053725\AppData\Local\Huawei\SDK1026\openharmony\10\native\build-tools\cmake\bin\ninja.exe cmTC_c8393 && [1/2] Building C object CMakeFiles/cmTC_c8393.dir/CMakeCCompilerABI.c.o +OHOS (dev) clang version 15.0.4 (llvm-project d1aa604d90b55a96aa22af9992d170fccbd41938) +Target: arm-unknown-linux-ohos +Thread model: posix +InstalledDir: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin +clang: warning: argument unused during compilation: '--gcc-toolchain=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm' [-Wunused-command-line-argument] + (in-process) + "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang.exe" -cc1 -triple armv7-unknown-linux-ohos -emit-obj -mrelax-all -mnoexecstack -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCCompilerABI.c -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=1 -target-cpu generic -target-feature +soft-float -target-feature +soft-float-abi -target-feature -vfp2 -target-feature -vfp2sp -target-feature -vfp3 -target-feature -vfp3d16 -target-feature -vfp3d16sp -target-feature -vfp3sp -target-feature -fp16 -target-feature -vfp4 -target-feature -vfp4d16 -target-feature -vfp4d16sp -target-feature -vfp4sp -target-feature -fp-armv8 -target-feature -fp-armv8d16 -target-feature -fp-armv8d16sp -target-feature -fp-armv8sp -target-feature -fullfp16 -target-feature -fp64 -target-feature -d32 -target-feature -neon -target-feature -sha2 -target-feature -aes -target-feature -dotprod -target-feature -fp16fml -target-feature -bf16 -target-feature -mve -target-feature -mve.fp -target-feature -fpregs -target-abi aapcs-linux -msoft-float -mfloat-abi soft -fallow-half-arguments-and-returns -mllvm -treat-scalable-fixed-error-as-warning -debugger-tuning=gdb -v -ffunction-sections -fdata-sections -fcoverage-compilation-dir=D:/Program/OpenHarmony/AAS1026/applications_app_samples/code/SuperFeature/Widget/FormGame/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp -resource-dir C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4 -D __MUSL__ -isysroot C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot -internal-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/include -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include -Wformat -Werror=format-security -fdebug-compilation-dir=D:/Program/OpenHarmony/AAS1026/applications_app_samples/code/SuperFeature/Widget/FormGame/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp -ferror-limit 19 -stack-protector 2 -fno-signed-char -fgnuc-version=4.2.1 -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_c8393.dir/CMakeCCompilerABI.c.o -x c C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeCCompilerABI.c +clang -cc1 version 15.0.4 based upon LLVM 15.0.4 default target x86_64-w64-windows-gnu +ignoring nonexistent directory "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/include" +#include "..." search starts here: +#include <...> search starts here: + C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include + C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos + C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include +End of search list. +[2/2] Linking C executable cmTC_c8393 +OHOS (dev) clang version 15.0.4 (llvm-project d1aa604d90b55a96aa22af9992d170fccbd41938) +Target: arm-unknown-linux-ohos +Thread model: posix +InstalledDir: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin + "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/ld.lld" --sysroot=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot -pie -EL -z now -z relro -z max-page-size=4096 --hash-style=gnu --hash-style=both --enable-new-dtags --eh-frame-hdr -m armelf_linux_eabi -dynamic-linker /lib/ld-musl-arm.so.1 -o cmTC_c8393 C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/Scrt1.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/crti.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/clang_rt.crtbegin.o -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/ -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/arm-linux-ohos/ -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/ --build-id=sha1 --warn-shared-textrel --fatal-warnings -lunwind --no-undefined -z noexecstack --gc-sections CMakeFiles/cmTC_c8393.dir/CMakeCCompilerABI.c.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a -l:libunwind.a -lc C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a -l:libunwind.a C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/clang_rt.crtend.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/crtn.o + + + +Parsed C implicit include dir info from above output: rv=done + found start of include info + found start of implicit include info + add: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include] + add: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos] + add: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] + end of search list found + collapse include dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include] + collapse include dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos] + collapse include dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] + implicit include dirs: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] + + +Parsed C implicit link information from above output: + link line regex: [^( *|.*[/\])(ld\.lld\.exe|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] + ignore line: [Change Dir: D:/Program/OpenHarmony/AAS1026/applications_app_samples/code/SuperFeature/Widget/FormGame/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp] + ignore line: [] + ignore line: [Run Build Command(s):C:\Users\h30053725\AppData\Local\Huawei\SDK1026\openharmony\10\native\build-tools\cmake\bin\ninja.exe cmTC_c8393 && [1/2] Building C object CMakeFiles/cmTC_c8393.dir/CMakeCCompilerABI.c.o] + ignore line: [OHOS (dev) clang version 15.0.4 (llvm-project d1aa604d90b55a96aa22af9992d170fccbd41938)] + ignore line: [Target: arm-unknown-linux-ohos] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin] + ignore line: [clang: warning: argument unused during compilation: '--gcc-toolchain=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm' [-Wunused-command-line-argument]] + ignore line: [ (in-process)] + ignore line: [ "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang.exe" -cc1 -triple armv7-unknown-linux-ohos -emit-obj -mrelax-all -mnoexecstack -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCCompilerABI.c -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=1 -target-cpu generic -target-feature +soft-float -target-feature +soft-float-abi -target-feature -vfp2 -target-feature -vfp2sp -target-feature -vfp3 -target-feature -vfp3d16 -target-feature -vfp3d16sp -target-feature -vfp3sp -target-feature -fp16 -target-feature -vfp4 -target-feature -vfp4d16 -target-feature -vfp4d16sp -target-feature -vfp4sp -target-feature -fp-armv8 -target-feature -fp-armv8d16 -target-feature -fp-armv8d16sp -target-feature -fp-armv8sp -target-feature -fullfp16 -target-feature -fp64 -target-feature -d32 -target-feature -neon -target-feature -sha2 -target-feature -aes -target-feature -dotprod -target-feature -fp16fml -target-feature -bf16 -target-feature -mve -target-feature -mve.fp -target-feature -fpregs -target-abi aapcs-linux -msoft-float -mfloat-abi soft -fallow-half-arguments-and-returns -mllvm -treat-scalable-fixed-error-as-warning -debugger-tuning=gdb -v -ffunction-sections -fdata-sections -fcoverage-compilation-dir=D:/Program/OpenHarmony/AAS1026/applications_app_samples/code/SuperFeature/Widget/FormGame/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp -resource-dir C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4 -D __MUSL__ -isysroot C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot -internal-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/include -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include -Wformat -Werror=format-security -fdebug-compilation-dir=D:/Program/OpenHarmony/AAS1026/applications_app_samples/code/SuperFeature/Widget/FormGame/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp -ferror-limit 19 -stack-protector 2 -fno-signed-char -fgnuc-version=4.2.1 -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_c8393.dir/CMakeCCompilerABI.c.o -x c C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeCCompilerABI.c] + ignore line: [clang -cc1 version 15.0.4 based upon LLVM 15.0.4 default target x86_64-w64-windows-gnu] + ignore line: [ignoring nonexistent directory "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/include"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include] + ignore line: [ C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos] + ignore line: [ C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] + ignore line: [End of search list.] + ignore line: [[2/2] Linking C executable cmTC_c8393] + ignore line: [OHOS (dev) clang version 15.0.4 (llvm-project d1aa604d90b55a96aa22af9992d170fccbd41938)] + ignore line: [Target: arm-unknown-linux-ohos] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin] + link line: [ "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/ld.lld" --sysroot=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot -pie -EL -z now -z relro -z max-page-size=4096 --hash-style=gnu --hash-style=both --enable-new-dtags --eh-frame-hdr -m armelf_linux_eabi -dynamic-linker /lib/ld-musl-arm.so.1 -o cmTC_c8393 C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/Scrt1.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/crti.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/clang_rt.crtbegin.o -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/ -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/arm-linux-ohos/ -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/ --build-id=sha1 --warn-shared-textrel --fatal-warnings -lunwind --no-undefined -z noexecstack --gc-sections CMakeFiles/cmTC_c8393.dir/CMakeCCompilerABI.c.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a -l:libunwind.a -lc C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a -l:libunwind.a C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/clang_rt.crtend.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/crtn.o] + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/ld.lld] ==> ignore + arg [--sysroot=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot] ==> ignore + arg [-pie] ==> ignore + arg [-EL] ==> ignore + arg [-znow] ==> ignore + arg [-zrelro] ==> ignore + arg [-zmax-page-size=4096] ==> ignore + arg [--hash-style=gnu] ==> ignore + arg [--hash-style=both] ==> ignore + arg [--enable-new-dtags] ==> ignore + arg [--eh-frame-hdr] ==> ignore + arg [-m] ==> ignore + arg [armelf_linux_eabi] ==> ignore + arg [-dynamic-linker] ==> ignore + arg [/lib/ld-musl-arm.so.1] ==> ignore + arg [-o] ==> ignore + arg [cmTC_c8393] ==> ignore + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/Scrt1.o] ==> ignore + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/crti.o] ==> ignore + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/clang_rt.crtbegin.o] ==> ignore + arg [-LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos] ==> dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos] + arg [-LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/] ==> dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/] + arg [-LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/arm-linux-ohos/] ==> dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/arm-linux-ohos/] + arg [-LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/] ==> dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/] + arg [--build-id=sha1] ==> ignore + arg [--warn-shared-textrel] ==> ignore + arg [--fatal-warnings] ==> ignore + arg [-lunwind] ==> lib [unwind] + arg [--no-undefined] ==> ignore + arg [-znoexecstack] ==> ignore + arg [--gc-sections] ==> ignore + arg [CMakeFiles/cmTC_c8393.dir/CMakeCCompilerABI.c.o] ==> ignore + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a] ==> lib [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a] + arg [-l:libunwind.a] ==> lib [-l:libunwind.a] + arg [-lc] ==> lib [c] + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a] ==> lib [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a] + arg [-l:libunwind.a] ==> lib [-l:libunwind.a] + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/clang_rt.crtend.o] ==> ignore + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/crtn.o] ==> ignore + remove lib [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a] + remove lib [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a] + collapse library dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos] + collapse library dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib] + collapse library dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/arm-linux-ohos/] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/arm-linux-ohos] + collapse library dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos] + implicit libs: [unwind;-l:libunwind.a;c;-l:libunwind.a] + implicit dirs: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/arm-linux-ohos;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos] + implicit fwks: [] + + +Determining if the CXX compiler works passed with the following output: +Change Dir: D:/Program/OpenHarmony/AAS1026/applications_app_samples/code/SuperFeature/Widget/FormGame/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp + +Run Build Command(s):C:\Users\h30053725\AppData\Local\Huawei\SDK1026\openharmony\10\native\build-tools\cmake\bin\ninja.exe cmTC_a2f30 && [1/2] Building CXX object CMakeFiles/cmTC_a2f30.dir/testCXXCompiler.cxx.o +clang++: warning: argument unused during compilation: '--gcc-toolchain=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm' [-Wunused-command-line-argument] +[2/2] Linking CXX executable cmTC_a2f30 + + + +Detecting CXX compiler ABI info compiled with the following output: +Change Dir: D:/Program/OpenHarmony/AAS1026/applications_app_samples/code/SuperFeature/Widget/FormGame/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp + +Run Build Command(s):C:\Users\h30053725\AppData\Local\Huawei\SDK1026\openharmony\10\native\build-tools\cmake\bin\ninja.exe cmTC_4724b && [1/2] Building CXX object CMakeFiles/cmTC_4724b.dir/CMakeCXXCompilerABI.cpp.o +OHOS (dev) clang version 15.0.4 (llvm-project d1aa604d90b55a96aa22af9992d170fccbd41938) +Target: arm-unknown-linux-ohos +Thread model: posix +InstalledDir: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin +clang++: warning: argument unused during compilation: '--gcc-toolchain=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm' [-Wunused-command-line-argument] + (in-process) + "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang++.exe" -cc1 -triple armv7-unknown-linux-ohos -emit-obj -mrelax-all -mnoexecstack -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCXXCompilerABI.cpp -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=1 -target-cpu generic -target-feature +soft-float -target-feature +soft-float-abi -target-feature -vfp2 -target-feature -vfp2sp -target-feature -vfp3 -target-feature -vfp3d16 -target-feature -vfp3d16sp -target-feature -vfp3sp -target-feature -fp16 -target-feature -vfp4 -target-feature -vfp4d16 -target-feature -vfp4d16sp -target-feature -vfp4sp -target-feature -fp-armv8 -target-feature -fp-armv8d16 -target-feature -fp-armv8d16sp -target-feature -fp-armv8sp -target-feature -fullfp16 -target-feature -fp64 -target-feature -d32 -target-feature -neon -target-feature -sha2 -target-feature -aes -target-feature -dotprod -target-feature -fp16fml -target-feature -bf16 -target-feature -mve -target-feature -mve.fp -target-feature -fpregs -target-abi aapcs-linux -msoft-float -mfloat-abi soft -fallow-half-arguments-and-returns -mllvm -treat-scalable-fixed-error-as-warning -debugger-tuning=gdb -v -ffunction-sections -fdata-sections -fcoverage-compilation-dir=D:/Program/OpenHarmony/AAS1026/applications_app_samples/code/SuperFeature/Widget/FormGame/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp -resource-dir C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4 -D __MUSL__ -isysroot C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot -internal-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../include/libcxx-ohos/include/c++/v1 -internal-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/include -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include -Wformat -Werror=format-security -fdeprecated-macro -fdebug-compilation-dir=D:/Program/OpenHarmony/AAS1026/applications_app_samples/code/SuperFeature/Widget/FormGame/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp -ferror-limit 19 -stack-protector 2 -fno-signed-char -fgnuc-version=4.2.1 -fcxx-exceptions -fexceptions -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_4724b.dir/CMakeCXXCompilerABI.cpp.o -x c++ C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeCXXCompilerABI.cpp +clang -cc1 version 15.0.4 based upon LLVM 15.0.4 default target x86_64-w64-windows-gnu +ignoring nonexistent directory "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/include" +#include "..." search starts here: +#include <...> search starts here: + C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../include/libcxx-ohos/include/c++/v1 + C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include + C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos + C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include +End of search list. +[2/2] Linking CXX executable cmTC_4724b +OHOS (dev) clang version 15.0.4 (llvm-project d1aa604d90b55a96aa22af9992d170fccbd41938) +Target: arm-unknown-linux-ohos +Thread model: posix +InstalledDir: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin + "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/ld.lld" --sysroot=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot -pie -EL -z now -z relro -z max-page-size=4096 --hash-style=gnu --hash-style=both --enable-new-dtags --eh-frame-hdr -m armelf_linux_eabi -dynamic-linker /lib/ld-musl-arm.so.1 -o cmTC_4724b C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/Scrt1.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/crti.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/clang_rt.crtbegin.o -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/ -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/arm-linux-ohos/ -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/ --build-id=sha1 --warn-shared-textrel --fatal-warnings -lunwind --no-undefined -z noexecstack --gc-sections CMakeFiles/cmTC_4724b.dir/CMakeCXXCompilerABI.cpp.o -Bstatic -lc++ -lc++abi -lunwind -Bdynamic -lm C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a -l:libunwind.a -lc C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a -l:libunwind.a C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/clang_rt.crtend.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/crtn.o + + + +Parsed CXX implicit include dir info from above output: rv=done + found start of include info + found start of implicit include info + add: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../include/libcxx-ohos/include/c++/v1] + add: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include] + add: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos] + add: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] + end of search list found + collapse include dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../include/libcxx-ohos/include/c++/v1] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/include/libcxx-ohos/include/c++/v1] + collapse include dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include] + collapse include dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos] + collapse include dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] + implicit include dirs: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/include/libcxx-ohos/include/c++/v1;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] + + +Parsed CXX implicit link information from above output: + link line regex: [^( *|.*[/\])(ld\.lld\.exe|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] + ignore line: [Change Dir: D:/Program/OpenHarmony/AAS1026/applications_app_samples/code/SuperFeature/Widget/FormGame/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp] + ignore line: [] + ignore line: [Run Build Command(s):C:\Users\h30053725\AppData\Local\Huawei\SDK1026\openharmony\10\native\build-tools\cmake\bin\ninja.exe cmTC_4724b && [1/2] Building CXX object CMakeFiles/cmTC_4724b.dir/CMakeCXXCompilerABI.cpp.o] + ignore line: [OHOS (dev) clang version 15.0.4 (llvm-project d1aa604d90b55a96aa22af9992d170fccbd41938)] + ignore line: [Target: arm-unknown-linux-ohos] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin] + ignore line: [clang++: warning: argument unused during compilation: '--gcc-toolchain=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm' [-Wunused-command-line-argument]] + ignore line: [ (in-process)] + ignore line: [ "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang++.exe" -cc1 -triple armv7-unknown-linux-ohos -emit-obj -mrelax-all -mnoexecstack -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCXXCompilerABI.cpp -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=1 -target-cpu generic -target-feature +soft-float -target-feature +soft-float-abi -target-feature -vfp2 -target-feature -vfp2sp -target-feature -vfp3 -target-feature -vfp3d16 -target-feature -vfp3d16sp -target-feature -vfp3sp -target-feature -fp16 -target-feature -vfp4 -target-feature -vfp4d16 -target-feature -vfp4d16sp -target-feature -vfp4sp -target-feature -fp-armv8 -target-feature -fp-armv8d16 -target-feature -fp-armv8d16sp -target-feature -fp-armv8sp -target-feature -fullfp16 -target-feature -fp64 -target-feature -d32 -target-feature -neon -target-feature -sha2 -target-feature -aes -target-feature -dotprod -target-feature -fp16fml -target-feature -bf16 -target-feature -mve -target-feature -mve.fp -target-feature -fpregs -target-abi aapcs-linux -msoft-float -mfloat-abi soft -fallow-half-arguments-and-returns -mllvm -treat-scalable-fixed-error-as-warning -debugger-tuning=gdb -v -ffunction-sections -fdata-sections -fcoverage-compilation-dir=D:/Program/OpenHarmony/AAS1026/applications_app_samples/code/SuperFeature/Widget/FormGame/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp -resource-dir C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4 -D __MUSL__ -isysroot C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot -internal-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../include/libcxx-ohos/include/c++/v1 -internal-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/include -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include -Wformat -Werror=format-security -fdeprecated-macro -fdebug-compilation-dir=D:/Program/OpenHarmony/AAS1026/applications_app_samples/code/SuperFeature/Widget/FormGame/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp -ferror-limit 19 -stack-protector 2 -fno-signed-char -fgnuc-version=4.2.1 -fcxx-exceptions -fexceptions -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_4724b.dir/CMakeCXXCompilerABI.cpp.o -x c++ C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeCXXCompilerABI.cpp] + ignore line: [clang -cc1 version 15.0.4 based upon LLVM 15.0.4 default target x86_64-w64-windows-gnu] + ignore line: [ignoring nonexistent directory "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/include"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../include/libcxx-ohos/include/c++/v1] + ignore line: [ C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include] + ignore line: [ C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos] + ignore line: [ C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] + ignore line: [End of search list.] + ignore line: [[2/2] Linking CXX executable cmTC_4724b] + ignore line: [OHOS (dev) clang version 15.0.4 (llvm-project d1aa604d90b55a96aa22af9992d170fccbd41938)] + ignore line: [Target: arm-unknown-linux-ohos] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin] + link line: [ "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/ld.lld" --sysroot=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot -pie -EL -z now -z relro -z max-page-size=4096 --hash-style=gnu --hash-style=both --enable-new-dtags --eh-frame-hdr -m armelf_linux_eabi -dynamic-linker /lib/ld-musl-arm.so.1 -o cmTC_4724b C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/Scrt1.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/crti.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/clang_rt.crtbegin.o -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/ -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/arm-linux-ohos/ -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/ --build-id=sha1 --warn-shared-textrel --fatal-warnings -lunwind --no-undefined -z noexecstack --gc-sections CMakeFiles/cmTC_4724b.dir/CMakeCXXCompilerABI.cpp.o -Bstatic -lc++ -lc++abi -lunwind -Bdynamic -lm C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a -l:libunwind.a -lc C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a -l:libunwind.a C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/clang_rt.crtend.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/crtn.o] + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/ld.lld] ==> ignore + arg [--sysroot=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot] ==> ignore + arg [-pie] ==> ignore + arg [-EL] ==> ignore + arg [-znow] ==> ignore + arg [-zrelro] ==> ignore + arg [-zmax-page-size=4096] ==> ignore + arg [--hash-style=gnu] ==> ignore + arg [--hash-style=both] ==> ignore + arg [--enable-new-dtags] ==> ignore + arg [--eh-frame-hdr] ==> ignore + arg [-m] ==> ignore + arg [armelf_linux_eabi] ==> ignore + arg [-dynamic-linker] ==> ignore + arg [/lib/ld-musl-arm.so.1] ==> ignore + arg [-o] ==> ignore + arg [cmTC_4724b] ==> ignore + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/Scrt1.o] ==> ignore + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/crti.o] ==> ignore + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/clang_rt.crtbegin.o] ==> ignore + arg [-LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos] ==> dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos] + arg [-LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/] ==> dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/] + arg [-LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/arm-linux-ohos/] ==> dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/arm-linux-ohos/] + arg [-LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/] ==> dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/] + arg [--build-id=sha1] ==> ignore + arg [--warn-shared-textrel] ==> ignore + arg [--fatal-warnings] ==> ignore + arg [-lunwind] ==> lib [unwind] + arg [--no-undefined] ==> ignore + arg [-znoexecstack] ==> ignore + arg [--gc-sections] ==> ignore + arg [CMakeFiles/cmTC_4724b.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore + arg [-Bstatic] ==> ignore + arg [-lc++] ==> lib [c++] + arg [-lc++abi] ==> lib [c++abi] + arg [-lunwind] ==> lib [unwind] + arg [-Bdynamic] ==> ignore + arg [-lm] ==> lib [m] + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a] ==> lib [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a] + arg [-l:libunwind.a] ==> lib [-l:libunwind.a] + arg [-lc] ==> lib [c] + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a] ==> lib [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a] + arg [-l:libunwind.a] ==> lib [-l:libunwind.a] + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/clang_rt.crtend.o] ==> ignore + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/crtn.o] ==> ignore + remove lib [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a] + remove lib [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a] + collapse library dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos] + collapse library dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib] + collapse library dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/arm-linux-ohos/] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/arm-linux-ohos] + collapse library dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos] + implicit libs: [unwind;c++;c++abi;unwind;m;-l:libunwind.a;c;-l:libunwind.a] + implicit dirs: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/arm-linux-ohos;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos] + implicit fwks: [] + + +The target system is: OHOS - 1 - arm +The host system is: Windows - 10.0.22621 - AMD64 +Compiling the C compiler identification source file "CMakeCCompilerId.c" succeeded. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang.exe +Build flags: +Id flags: -c + +The output was: +0 + + +Compilation of the C compiler identification source "CMakeCCompilerId.c" produced "CMakeCCompilerId.o" + +The C compiler identification is Clang, found in "D:/Program/OpenHarmony/AAS1026/applications_app_samples/code/SuperFeature/Widget/FormGame/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/3.16.5/CompilerIdC/CMakeCCompilerId.o" + +Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" succeeded. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang++.exe +Build flags: +Id flags: -c + +The output was: +0 + + +Compilation of the CXX compiler identification source "CMakeCXXCompilerId.cpp" produced "CMakeCXXCompilerId.o" + +The CXX compiler identification is Clang, found in "D:/Program/OpenHarmony/AAS1026/applications_app_samples/code/SuperFeature/Widget/FormGame/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/3.16.5/CompilerIdCXX/CMakeCXXCompilerId.o" + +Determining if the C compiler works passed with the following output: +Change Dir: D:/Program/OpenHarmony/AAS1026/applications_app_samples/code/SuperFeature/Widget/FormGame/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp + +Run Build Command(s):C:\Users\h30053725\AppData\Local\Huawei\SDK1026\openharmony\10\native\build-tools\cmake\bin\ninja.exe cmTC_7d1b5 && [1/2] Building C object CMakeFiles/cmTC_7d1b5.dir/testCCompiler.c.o +clang: warning: argument unused during compilation: '--gcc-toolchain=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm' [-Wunused-command-line-argument] +[2/2] Linking C executable cmTC_7d1b5 + + + +Detecting C compiler ABI info compiled with the following output: +Change Dir: D:/Program/OpenHarmony/AAS1026/applications_app_samples/code/SuperFeature/Widget/FormGame/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp + +Run Build Command(s):C:\Users\h30053725\AppData\Local\Huawei\SDK1026\openharmony\10\native\build-tools\cmake\bin\ninja.exe cmTC_7a393 && [1/2] Building C object CMakeFiles/cmTC_7a393.dir/CMakeCCompilerABI.c.o +OHOS (dev) clang version 15.0.4 (llvm-project d1aa604d90b55a96aa22af9992d170fccbd41938) +Target: arm-unknown-linux-ohos +Thread model: posix +InstalledDir: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin +clang: warning: argument unused during compilation: '--gcc-toolchain=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm' [-Wunused-command-line-argument] + (in-process) + "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang.exe" -cc1 -triple armv7-unknown-linux-ohos -emit-obj -mrelax-all -mnoexecstack -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCCompilerABI.c -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=1 -target-cpu generic -target-feature +soft-float -target-feature +soft-float-abi -target-feature -vfp2 -target-feature -vfp2sp -target-feature -vfp3 -target-feature -vfp3d16 -target-feature -vfp3d16sp -target-feature -vfp3sp -target-feature -fp16 -target-feature -vfp4 -target-feature -vfp4d16 -target-feature -vfp4d16sp -target-feature -vfp4sp -target-feature -fp-armv8 -target-feature -fp-armv8d16 -target-feature -fp-armv8d16sp -target-feature -fp-armv8sp -target-feature -fullfp16 -target-feature -fp64 -target-feature -d32 -target-feature -neon -target-feature -sha2 -target-feature -aes -target-feature -dotprod -target-feature -fp16fml -target-feature -bf16 -target-feature -mve -target-feature -mve.fp -target-feature -fpregs -target-abi aapcs-linux -msoft-float -mfloat-abi soft -fallow-half-arguments-and-returns -mllvm -treat-scalable-fixed-error-as-warning -debugger-tuning=gdb -v -ffunction-sections -fdata-sections -fcoverage-compilation-dir=D:/Program/OpenHarmony/AAS1026/applications_app_samples/code/SuperFeature/Widget/FormGame/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp -resource-dir C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4 -D __MUSL__ -isysroot C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot -internal-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/include -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include -Wformat -Werror=format-security -fdebug-compilation-dir=D:/Program/OpenHarmony/AAS1026/applications_app_samples/code/SuperFeature/Widget/FormGame/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp -ferror-limit 19 -stack-protector 2 -fno-signed-char -fgnuc-version=4.2.1 -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_7a393.dir/CMakeCCompilerABI.c.o -x c C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeCCompilerABI.c +clang -cc1 version 15.0.4 based upon LLVM 15.0.4 default target x86_64-w64-windows-gnu +ignoring nonexistent directory "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/include" +#include "..." search starts here: +#include <...> search starts here: + C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include + C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos + C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include +End of search list. +[2/2] Linking C executable cmTC_7a393 +OHOS (dev) clang version 15.0.4 (llvm-project d1aa604d90b55a96aa22af9992d170fccbd41938) +Target: arm-unknown-linux-ohos +Thread model: posix +InstalledDir: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin + "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/ld.lld" --sysroot=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot -pie -EL -z now -z relro -z max-page-size=4096 --hash-style=gnu --hash-style=both --enable-new-dtags --eh-frame-hdr -m armelf_linux_eabi -dynamic-linker /lib/ld-musl-arm.so.1 -o cmTC_7a393 C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/Scrt1.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/crti.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/clang_rt.crtbegin.o -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/ -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/arm-linux-ohos/ -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/ --build-id=sha1 --warn-shared-textrel --fatal-warnings -lunwind --no-undefined -z noexecstack --gc-sections CMakeFiles/cmTC_7a393.dir/CMakeCCompilerABI.c.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a -l:libunwind.a -lc C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a -l:libunwind.a C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/clang_rt.crtend.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/crtn.o + + + +Parsed C implicit include dir info from above output: rv=done + found start of include info + found start of implicit include info + add: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include] + add: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos] + add: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] + end of search list found + collapse include dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include] + collapse include dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos] + collapse include dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] + implicit include dirs: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] + + +Parsed C implicit link information from above output: + link line regex: [^( *|.*[/\])(ld\.lld\.exe|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] + ignore line: [Change Dir: D:/Program/OpenHarmony/AAS1026/applications_app_samples/code/SuperFeature/Widget/FormGame/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp] + ignore line: [] + ignore line: [Run Build Command(s):C:\Users\h30053725\AppData\Local\Huawei\SDK1026\openharmony\10\native\build-tools\cmake\bin\ninja.exe cmTC_7a393 && [1/2] Building C object CMakeFiles/cmTC_7a393.dir/CMakeCCompilerABI.c.o] + ignore line: [OHOS (dev) clang version 15.0.4 (llvm-project d1aa604d90b55a96aa22af9992d170fccbd41938)] + ignore line: [Target: arm-unknown-linux-ohos] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin] + ignore line: [clang: warning: argument unused during compilation: '--gcc-toolchain=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm' [-Wunused-command-line-argument]] + ignore line: [ (in-process)] + ignore line: [ "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang.exe" -cc1 -triple armv7-unknown-linux-ohos -emit-obj -mrelax-all -mnoexecstack -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCCompilerABI.c -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=1 -target-cpu generic -target-feature +soft-float -target-feature +soft-float-abi -target-feature -vfp2 -target-feature -vfp2sp -target-feature -vfp3 -target-feature -vfp3d16 -target-feature -vfp3d16sp -target-feature -vfp3sp -target-feature -fp16 -target-feature -vfp4 -target-feature -vfp4d16 -target-feature -vfp4d16sp -target-feature -vfp4sp -target-feature -fp-armv8 -target-feature -fp-armv8d16 -target-feature -fp-armv8d16sp -target-feature -fp-armv8sp -target-feature -fullfp16 -target-feature -fp64 -target-feature -d32 -target-feature -neon -target-feature -sha2 -target-feature -aes -target-feature -dotprod -target-feature -fp16fml -target-feature -bf16 -target-feature -mve -target-feature -mve.fp -target-feature -fpregs -target-abi aapcs-linux -msoft-float -mfloat-abi soft -fallow-half-arguments-and-returns -mllvm -treat-scalable-fixed-error-as-warning -debugger-tuning=gdb -v -ffunction-sections -fdata-sections -fcoverage-compilation-dir=D:/Program/OpenHarmony/AAS1026/applications_app_samples/code/SuperFeature/Widget/FormGame/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp -resource-dir C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4 -D __MUSL__ -isysroot C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot -internal-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/include -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include -Wformat -Werror=format-security -fdebug-compilation-dir=D:/Program/OpenHarmony/AAS1026/applications_app_samples/code/SuperFeature/Widget/FormGame/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp -ferror-limit 19 -stack-protector 2 -fno-signed-char -fgnuc-version=4.2.1 -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_7a393.dir/CMakeCCompilerABI.c.o -x c C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeCCompilerABI.c] + ignore line: [clang -cc1 version 15.0.4 based upon LLVM 15.0.4 default target x86_64-w64-windows-gnu] + ignore line: [ignoring nonexistent directory "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/include"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include] + ignore line: [ C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos] + ignore line: [ C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] + ignore line: [End of search list.] + ignore line: [[2/2] Linking C executable cmTC_7a393] + ignore line: [OHOS (dev) clang version 15.0.4 (llvm-project d1aa604d90b55a96aa22af9992d170fccbd41938)] + ignore line: [Target: arm-unknown-linux-ohos] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin] + link line: [ "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/ld.lld" --sysroot=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot -pie -EL -z now -z relro -z max-page-size=4096 --hash-style=gnu --hash-style=both --enable-new-dtags --eh-frame-hdr -m armelf_linux_eabi -dynamic-linker /lib/ld-musl-arm.so.1 -o cmTC_7a393 C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/Scrt1.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/crti.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/clang_rt.crtbegin.o -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/ -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/arm-linux-ohos/ -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/ --build-id=sha1 --warn-shared-textrel --fatal-warnings -lunwind --no-undefined -z noexecstack --gc-sections CMakeFiles/cmTC_7a393.dir/CMakeCCompilerABI.c.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a -l:libunwind.a -lc C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a -l:libunwind.a C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/clang_rt.crtend.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/crtn.o] + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/ld.lld] ==> ignore + arg [--sysroot=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot] ==> ignore + arg [-pie] ==> ignore + arg [-EL] ==> ignore + arg [-znow] ==> ignore + arg [-zrelro] ==> ignore + arg [-zmax-page-size=4096] ==> ignore + arg [--hash-style=gnu] ==> ignore + arg [--hash-style=both] ==> ignore + arg [--enable-new-dtags] ==> ignore + arg [--eh-frame-hdr] ==> ignore + arg [-m] ==> ignore + arg [armelf_linux_eabi] ==> ignore + arg [-dynamic-linker] ==> ignore + arg [/lib/ld-musl-arm.so.1] ==> ignore + arg [-o] ==> ignore + arg [cmTC_7a393] ==> ignore + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/Scrt1.o] ==> ignore + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/crti.o] ==> ignore + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/clang_rt.crtbegin.o] ==> ignore + arg [-LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos] ==> dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos] + arg [-LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/] ==> dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/] + arg [-LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/arm-linux-ohos/] ==> dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/arm-linux-ohos/] + arg [-LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/] ==> dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/] + arg [--build-id=sha1] ==> ignore + arg [--warn-shared-textrel] ==> ignore + arg [--fatal-warnings] ==> ignore + arg [-lunwind] ==> lib [unwind] + arg [--no-undefined] ==> ignore + arg [-znoexecstack] ==> ignore + arg [--gc-sections] ==> ignore + arg [CMakeFiles/cmTC_7a393.dir/CMakeCCompilerABI.c.o] ==> ignore + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a] ==> lib [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a] + arg [-l:libunwind.a] ==> lib [-l:libunwind.a] + arg [-lc] ==> lib [c] + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a] ==> lib [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a] + arg [-l:libunwind.a] ==> lib [-l:libunwind.a] + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/clang_rt.crtend.o] ==> ignore + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/crtn.o] ==> ignore + remove lib [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a] + remove lib [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a] + collapse library dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos] + collapse library dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib] + collapse library dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/arm-linux-ohos/] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/arm-linux-ohos] + collapse library dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos] + implicit libs: [unwind;-l:libunwind.a;c;-l:libunwind.a] + implicit dirs: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/arm-linux-ohos;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos] + implicit fwks: [] + + +Determining if the CXX compiler works passed with the following output: +Change Dir: D:/Program/OpenHarmony/AAS1026/applications_app_samples/code/SuperFeature/Widget/FormGame/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp + +Run Build Command(s):C:\Users\h30053725\AppData\Local\Huawei\SDK1026\openharmony\10\native\build-tools\cmake\bin\ninja.exe cmTC_f3383 && [1/2] Building CXX object CMakeFiles/cmTC_f3383.dir/testCXXCompiler.cxx.o +clang++: warning: argument unused during compilation: '--gcc-toolchain=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm' [-Wunused-command-line-argument] +[2/2] Linking CXX executable cmTC_f3383 + + + +Detecting CXX compiler ABI info compiled with the following output: +Change Dir: D:/Program/OpenHarmony/AAS1026/applications_app_samples/code/SuperFeature/Widget/FormGame/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp + +Run Build Command(s):C:\Users\h30053725\AppData\Local\Huawei\SDK1026\openharmony\10\native\build-tools\cmake\bin\ninja.exe cmTC_1a7cb && [1/2] Building CXX object CMakeFiles/cmTC_1a7cb.dir/CMakeCXXCompilerABI.cpp.o +OHOS (dev) clang version 15.0.4 (llvm-project d1aa604d90b55a96aa22af9992d170fccbd41938) +Target: arm-unknown-linux-ohos +Thread model: posix +InstalledDir: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin +clang++: warning: argument unused during compilation: '--gcc-toolchain=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm' [-Wunused-command-line-argument] + (in-process) + "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang++.exe" -cc1 -triple armv7-unknown-linux-ohos -emit-obj -mrelax-all -mnoexecstack -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCXXCompilerABI.cpp -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=1 -target-cpu generic -target-feature +soft-float -target-feature +soft-float-abi -target-feature -vfp2 -target-feature -vfp2sp -target-feature -vfp3 -target-feature -vfp3d16 -target-feature -vfp3d16sp -target-feature -vfp3sp -target-feature -fp16 -target-feature -vfp4 -target-feature -vfp4d16 -target-feature -vfp4d16sp -target-feature -vfp4sp -target-feature -fp-armv8 -target-feature -fp-armv8d16 -target-feature -fp-armv8d16sp -target-feature -fp-armv8sp -target-feature -fullfp16 -target-feature -fp64 -target-feature -d32 -target-feature -neon -target-feature -sha2 -target-feature -aes -target-feature -dotprod -target-feature -fp16fml -target-feature -bf16 -target-feature -mve -target-feature -mve.fp -target-feature -fpregs -target-abi aapcs-linux -msoft-float -mfloat-abi soft -fallow-half-arguments-and-returns -mllvm -treat-scalable-fixed-error-as-warning -debugger-tuning=gdb -v -ffunction-sections -fdata-sections -fcoverage-compilation-dir=D:/Program/OpenHarmony/AAS1026/applications_app_samples/code/SuperFeature/Widget/FormGame/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp -resource-dir C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4 -D __MUSL__ -isysroot C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot -internal-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../include/libcxx-ohos/include/c++/v1 -internal-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/include -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include -Wformat -Werror=format-security -fdeprecated-macro -fdebug-compilation-dir=D:/Program/OpenHarmony/AAS1026/applications_app_samples/code/SuperFeature/Widget/FormGame/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp -ferror-limit 19 -stack-protector 2 -fno-signed-char -fgnuc-version=4.2.1 -fcxx-exceptions -fexceptions -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_1a7cb.dir/CMakeCXXCompilerABI.cpp.o -x c++ C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeCXXCompilerABI.cpp +clang -cc1 version 15.0.4 based upon LLVM 15.0.4 default target x86_64-w64-windows-gnu +ignoring nonexistent directory "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/include" +#include "..." search starts here: +#include <...> search starts here: + C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../include/libcxx-ohos/include/c++/v1 + C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include + C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos + C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include +End of search list. +[2/2] Linking CXX executable cmTC_1a7cb +OHOS (dev) clang version 15.0.4 (llvm-project d1aa604d90b55a96aa22af9992d170fccbd41938) +Target: arm-unknown-linux-ohos +Thread model: posix +InstalledDir: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin + "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/ld.lld" --sysroot=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot -pie -EL -z now -z relro -z max-page-size=4096 --hash-style=gnu --hash-style=both --enable-new-dtags --eh-frame-hdr -m armelf_linux_eabi -dynamic-linker /lib/ld-musl-arm.so.1 -o cmTC_1a7cb C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/Scrt1.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/crti.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/clang_rt.crtbegin.o -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/ -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/arm-linux-ohos/ -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/ --build-id=sha1 --warn-shared-textrel --fatal-warnings -lunwind --no-undefined -z noexecstack --gc-sections CMakeFiles/cmTC_1a7cb.dir/CMakeCXXCompilerABI.cpp.o -Bstatic -lc++ -lc++abi -lunwind -Bdynamic -lm C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a -l:libunwind.a -lc C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a -l:libunwind.a C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/clang_rt.crtend.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/crtn.o + + + +Parsed CXX implicit include dir info from above output: rv=done + found start of include info + found start of implicit include info + add: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../include/libcxx-ohos/include/c++/v1] + add: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include] + add: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos] + add: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] + end of search list found + collapse include dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../include/libcxx-ohos/include/c++/v1] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/include/libcxx-ohos/include/c++/v1] + collapse include dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include] + collapse include dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos] + collapse include dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] + implicit include dirs: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/include/libcxx-ohos/include/c++/v1;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] + + +Parsed CXX implicit link information from above output: + link line regex: [^( *|.*[/\])(ld\.lld\.exe|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] + ignore line: [Change Dir: D:/Program/OpenHarmony/AAS1026/applications_app_samples/code/SuperFeature/Widget/FormGame/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp] + ignore line: [] + ignore line: [Run Build Command(s):C:\Users\h30053725\AppData\Local\Huawei\SDK1026\openharmony\10\native\build-tools\cmake\bin\ninja.exe cmTC_1a7cb && [1/2] Building CXX object CMakeFiles/cmTC_1a7cb.dir/CMakeCXXCompilerABI.cpp.o] + ignore line: [OHOS (dev) clang version 15.0.4 (llvm-project d1aa604d90b55a96aa22af9992d170fccbd41938)] + ignore line: [Target: arm-unknown-linux-ohos] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin] + ignore line: [clang++: warning: argument unused during compilation: '--gcc-toolchain=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm' [-Wunused-command-line-argument]] + ignore line: [ (in-process)] + ignore line: [ "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang++.exe" -cc1 -triple armv7-unknown-linux-ohos -emit-obj -mrelax-all -mnoexecstack -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCXXCompilerABI.cpp -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=1 -target-cpu generic -target-feature +soft-float -target-feature +soft-float-abi -target-feature -vfp2 -target-feature -vfp2sp -target-feature -vfp3 -target-feature -vfp3d16 -target-feature -vfp3d16sp -target-feature -vfp3sp -target-feature -fp16 -target-feature -vfp4 -target-feature -vfp4d16 -target-feature -vfp4d16sp -target-feature -vfp4sp -target-feature -fp-armv8 -target-feature -fp-armv8d16 -target-feature -fp-armv8d16sp -target-feature -fp-armv8sp -target-feature -fullfp16 -target-feature -fp64 -target-feature -d32 -target-feature -neon -target-feature -sha2 -target-feature -aes -target-feature -dotprod -target-feature -fp16fml -target-feature -bf16 -target-feature -mve -target-feature -mve.fp -target-feature -fpregs -target-abi aapcs-linux -msoft-float -mfloat-abi soft -fallow-half-arguments-and-returns -mllvm -treat-scalable-fixed-error-as-warning -debugger-tuning=gdb -v -ffunction-sections -fdata-sections -fcoverage-compilation-dir=D:/Program/OpenHarmony/AAS1026/applications_app_samples/code/SuperFeature/Widget/FormGame/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp -resource-dir C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4 -D __MUSL__ -isysroot C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot -internal-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../include/libcxx-ohos/include/c++/v1 -internal-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/include -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include -Wformat -Werror=format-security -fdeprecated-macro -fdebug-compilation-dir=D:/Program/OpenHarmony/AAS1026/applications_app_samples/code/SuperFeature/Widget/FormGame/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp -ferror-limit 19 -stack-protector 2 -fno-signed-char -fgnuc-version=4.2.1 -fcxx-exceptions -fexceptions -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_1a7cb.dir/CMakeCXXCompilerABI.cpp.o -x c++ C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeCXXCompilerABI.cpp] + ignore line: [clang -cc1 version 15.0.4 based upon LLVM 15.0.4 default target x86_64-w64-windows-gnu] + ignore line: [ignoring nonexistent directory "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/include"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../include/libcxx-ohos/include/c++/v1] + ignore line: [ C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include] + ignore line: [ C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos] + ignore line: [ C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] + ignore line: [End of search list.] + ignore line: [[2/2] Linking CXX executable cmTC_1a7cb] + ignore line: [OHOS (dev) clang version 15.0.4 (llvm-project d1aa604d90b55a96aa22af9992d170fccbd41938)] + ignore line: [Target: arm-unknown-linux-ohos] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin] + link line: [ "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/ld.lld" --sysroot=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot -pie -EL -z now -z relro -z max-page-size=4096 --hash-style=gnu --hash-style=both --enable-new-dtags --eh-frame-hdr -m armelf_linux_eabi -dynamic-linker /lib/ld-musl-arm.so.1 -o cmTC_1a7cb C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/Scrt1.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/crti.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/clang_rt.crtbegin.o -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/ -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/arm-linux-ohos/ -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/ --build-id=sha1 --warn-shared-textrel --fatal-warnings -lunwind --no-undefined -z noexecstack --gc-sections CMakeFiles/cmTC_1a7cb.dir/CMakeCXXCompilerABI.cpp.o -Bstatic -lc++ -lc++abi -lunwind -Bdynamic -lm C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a -l:libunwind.a -lc C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a -l:libunwind.a C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/clang_rt.crtend.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/crtn.o] + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/ld.lld] ==> ignore + arg [--sysroot=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot] ==> ignore + arg [-pie] ==> ignore + arg [-EL] ==> ignore + arg [-znow] ==> ignore + arg [-zrelro] ==> ignore + arg [-zmax-page-size=4096] ==> ignore + arg [--hash-style=gnu] ==> ignore + arg [--hash-style=both] ==> ignore + arg [--enable-new-dtags] ==> ignore + arg [--eh-frame-hdr] ==> ignore + arg [-m] ==> ignore + arg [armelf_linux_eabi] ==> ignore + arg [-dynamic-linker] ==> ignore + arg [/lib/ld-musl-arm.so.1] ==> ignore + arg [-o] ==> ignore + arg [cmTC_1a7cb] ==> ignore + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/Scrt1.o] ==> ignore + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/crti.o] ==> ignore + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/clang_rt.crtbegin.o] ==> ignore + arg [-LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos] ==> dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos] + arg [-LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/] ==> dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/] + arg [-LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/arm-linux-ohos/] ==> dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/arm-linux-ohos/] + arg [-LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/] ==> dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/] + arg [--build-id=sha1] ==> ignore + arg [--warn-shared-textrel] ==> ignore + arg [--fatal-warnings] ==> ignore + arg [-lunwind] ==> lib [unwind] + arg [--no-undefined] ==> ignore + arg [-znoexecstack] ==> ignore + arg [--gc-sections] ==> ignore + arg [CMakeFiles/cmTC_1a7cb.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore + arg [-Bstatic] ==> ignore + arg [-lc++] ==> lib [c++] + arg [-lc++abi] ==> lib [c++abi] + arg [-lunwind] ==> lib [unwind] + arg [-Bdynamic] ==> ignore + arg [-lm] ==> lib [m] + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a] ==> lib [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a] + arg [-l:libunwind.a] ==> lib [-l:libunwind.a] + arg [-lc] ==> lib [c] + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a] ==> lib [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a] + arg [-l:libunwind.a] ==> lib [-l:libunwind.a] + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/clang_rt.crtend.o] ==> ignore + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/crtn.o] ==> ignore + remove lib [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a] + remove lib [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a] + collapse library dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos] + collapse library dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib] + collapse library dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/arm-linux-ohos/] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/arm-linux-ohos] + collapse library dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos] + implicit libs: [unwind;c++;c++abi;unwind;m;-l:libunwind.a;c;-l:libunwind.a] + implicit dirs: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/arm-linux-ohos;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos] + implicit fwks: [] + + +The target system is: OHOS - 1 - arm +The host system is: Windows - 10.0.22621 - AMD64 +Compiling the C compiler identification source file "CMakeCCompilerId.c" succeeded. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang.exe +Build flags: +Id flags: -c + +The output was: +0 + + +Compilation of the C compiler identification source "CMakeCCompilerId.c" produced "CMakeCCompilerId.o" + +The C compiler identification is Clang, found in "D:/Program/OpenHarmony/AAS1026/applications_app_samples/code/SuperFeature/Widget/FormGame/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/3.16.5/CompilerIdC/CMakeCCompilerId.o" + +Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" succeeded. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang++.exe +Build flags: +Id flags: -c + +The output was: +0 + + +Compilation of the CXX compiler identification source "CMakeCXXCompilerId.cpp" produced "CMakeCXXCompilerId.o" + +The CXX compiler identification is Clang, found in "D:/Program/OpenHarmony/AAS1026/applications_app_samples/code/SuperFeature/Widget/FormGame/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/3.16.5/CompilerIdCXX/CMakeCXXCompilerId.o" + +Determining if the C compiler works passed with the following output: +Change Dir: D:/Program/OpenHarmony/AAS1026/applications_app_samples/code/SuperFeature/Widget/FormGame/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp + +Run Build Command(s):C:\Users\h30053725\AppData\Local\Huawei\SDK1026\openharmony\10\native\build-tools\cmake\bin\ninja.exe cmTC_c86c6 && [1/2] Building C object CMakeFiles/cmTC_c86c6.dir/testCCompiler.c.o +clang: warning: argument unused during compilation: '--gcc-toolchain=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm' [-Wunused-command-line-argument] +[2/2] Linking C executable cmTC_c86c6 + + + +Detecting C compiler ABI info compiled with the following output: +Change Dir: D:/Program/OpenHarmony/AAS1026/applications_app_samples/code/SuperFeature/Widget/FormGame/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp + +Run Build Command(s):C:\Users\h30053725\AppData\Local\Huawei\SDK1026\openharmony\10\native\build-tools\cmake\bin\ninja.exe cmTC_8ee24 && [1/2] Building C object CMakeFiles/cmTC_8ee24.dir/CMakeCCompilerABI.c.o +OHOS (dev) clang version 15.0.4 (llvm-project d1aa604d90b55a96aa22af9992d170fccbd41938) +Target: arm-unknown-linux-ohos +Thread model: posix +InstalledDir: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin +clang: warning: argument unused during compilation: '--gcc-toolchain=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm' [-Wunused-command-line-argument] + (in-process) + "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang.exe" -cc1 -triple armv7-unknown-linux-ohos -emit-obj -mrelax-all -mnoexecstack -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCCompilerABI.c -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=1 -target-cpu generic -target-feature +soft-float -target-feature +soft-float-abi -target-feature -vfp2 -target-feature -vfp2sp -target-feature -vfp3 -target-feature -vfp3d16 -target-feature -vfp3d16sp -target-feature -vfp3sp -target-feature -fp16 -target-feature -vfp4 -target-feature -vfp4d16 -target-feature -vfp4d16sp -target-feature -vfp4sp -target-feature -fp-armv8 -target-feature -fp-armv8d16 -target-feature -fp-armv8d16sp -target-feature -fp-armv8sp -target-feature -fullfp16 -target-feature -fp64 -target-feature -d32 -target-feature -neon -target-feature -sha2 -target-feature -aes -target-feature -dotprod -target-feature -fp16fml -target-feature -bf16 -target-feature -mve -target-feature -mve.fp -target-feature -fpregs -target-abi aapcs-linux -msoft-float -mfloat-abi soft -fallow-half-arguments-and-returns -mllvm -treat-scalable-fixed-error-as-warning -debugger-tuning=gdb -v -ffunction-sections -fdata-sections -fcoverage-compilation-dir=D:/Program/OpenHarmony/AAS1026/applications_app_samples/code/SuperFeature/Widget/FormGame/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp -resource-dir C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4 -D __MUSL__ -isysroot C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot -internal-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/include -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include -Wformat -Werror=format-security -fdebug-compilation-dir=D:/Program/OpenHarmony/AAS1026/applications_app_samples/code/SuperFeature/Widget/FormGame/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp -ferror-limit 19 -stack-protector 2 -fno-signed-char -fgnuc-version=4.2.1 -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_8ee24.dir/CMakeCCompilerABI.c.o -x c C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeCCompilerABI.c +clang -cc1 version 15.0.4 based upon LLVM 15.0.4 default target x86_64-w64-windows-gnu +ignoring nonexistent directory "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/include" +#include "..." search starts here: +#include <...> search starts here: + C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include + C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos + C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include +End of search list. +[2/2] Linking C executable cmTC_8ee24 +OHOS (dev) clang version 15.0.4 (llvm-project d1aa604d90b55a96aa22af9992d170fccbd41938) +Target: arm-unknown-linux-ohos +Thread model: posix +InstalledDir: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin + "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/ld.lld" --sysroot=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot -pie -EL -z now -z relro -z max-page-size=4096 --hash-style=gnu --hash-style=both --enable-new-dtags --eh-frame-hdr -m armelf_linux_eabi -dynamic-linker /lib/ld-musl-arm.so.1 -o cmTC_8ee24 C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/Scrt1.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/crti.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/clang_rt.crtbegin.o -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/ -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/arm-linux-ohos/ -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/ --build-id=sha1 --warn-shared-textrel --fatal-warnings -lunwind --no-undefined -z noexecstack --gc-sections CMakeFiles/cmTC_8ee24.dir/CMakeCCompilerABI.c.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a -l:libunwind.a -lc C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a -l:libunwind.a C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/clang_rt.crtend.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/crtn.o + + + +Parsed C implicit include dir info from above output: rv=done + found start of include info + found start of implicit include info + add: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include] + add: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos] + add: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] + end of search list found + collapse include dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include] + collapse include dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos] + collapse include dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] + implicit include dirs: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] + + +Parsed C implicit link information from above output: + link line regex: [^( *|.*[/\])(ld\.lld\.exe|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] + ignore line: [Change Dir: D:/Program/OpenHarmony/AAS1026/applications_app_samples/code/SuperFeature/Widget/FormGame/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp] + ignore line: [] + ignore line: [Run Build Command(s):C:\Users\h30053725\AppData\Local\Huawei\SDK1026\openharmony\10\native\build-tools\cmake\bin\ninja.exe cmTC_8ee24 && [1/2] Building C object CMakeFiles/cmTC_8ee24.dir/CMakeCCompilerABI.c.o] + ignore line: [OHOS (dev) clang version 15.0.4 (llvm-project d1aa604d90b55a96aa22af9992d170fccbd41938)] + ignore line: [Target: arm-unknown-linux-ohos] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin] + ignore line: [clang: warning: argument unused during compilation: '--gcc-toolchain=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm' [-Wunused-command-line-argument]] + ignore line: [ (in-process)] + ignore line: [ "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang.exe" -cc1 -triple armv7-unknown-linux-ohos -emit-obj -mrelax-all -mnoexecstack -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCCompilerABI.c -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=1 -target-cpu generic -target-feature +soft-float -target-feature +soft-float-abi -target-feature -vfp2 -target-feature -vfp2sp -target-feature -vfp3 -target-feature -vfp3d16 -target-feature -vfp3d16sp -target-feature -vfp3sp -target-feature -fp16 -target-feature -vfp4 -target-feature -vfp4d16 -target-feature -vfp4d16sp -target-feature -vfp4sp -target-feature -fp-armv8 -target-feature -fp-armv8d16 -target-feature -fp-armv8d16sp -target-feature -fp-armv8sp -target-feature -fullfp16 -target-feature -fp64 -target-feature -d32 -target-feature -neon -target-feature -sha2 -target-feature -aes -target-feature -dotprod -target-feature -fp16fml -target-feature -bf16 -target-feature -mve -target-feature -mve.fp -target-feature -fpregs -target-abi aapcs-linux -msoft-float -mfloat-abi soft -fallow-half-arguments-and-returns -mllvm -treat-scalable-fixed-error-as-warning -debugger-tuning=gdb -v -ffunction-sections -fdata-sections -fcoverage-compilation-dir=D:/Program/OpenHarmony/AAS1026/applications_app_samples/code/SuperFeature/Widget/FormGame/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp -resource-dir C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4 -D __MUSL__ -isysroot C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot -internal-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/include -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include -Wformat -Werror=format-security -fdebug-compilation-dir=D:/Program/OpenHarmony/AAS1026/applications_app_samples/code/SuperFeature/Widget/FormGame/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp -ferror-limit 19 -stack-protector 2 -fno-signed-char -fgnuc-version=4.2.1 -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_8ee24.dir/CMakeCCompilerABI.c.o -x c C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeCCompilerABI.c] + ignore line: [clang -cc1 version 15.0.4 based upon LLVM 15.0.4 default target x86_64-w64-windows-gnu] + ignore line: [ignoring nonexistent directory "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/include"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include] + ignore line: [ C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos] + ignore line: [ C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] + ignore line: [End of search list.] + ignore line: [[2/2] Linking C executable cmTC_8ee24] + ignore line: [OHOS (dev) clang version 15.0.4 (llvm-project d1aa604d90b55a96aa22af9992d170fccbd41938)] + ignore line: [Target: arm-unknown-linux-ohos] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin] + link line: [ "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/ld.lld" --sysroot=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot -pie -EL -z now -z relro -z max-page-size=4096 --hash-style=gnu --hash-style=both --enable-new-dtags --eh-frame-hdr -m armelf_linux_eabi -dynamic-linker /lib/ld-musl-arm.so.1 -o cmTC_8ee24 C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/Scrt1.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/crti.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/clang_rt.crtbegin.o -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/ -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/arm-linux-ohos/ -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/ --build-id=sha1 --warn-shared-textrel --fatal-warnings -lunwind --no-undefined -z noexecstack --gc-sections CMakeFiles/cmTC_8ee24.dir/CMakeCCompilerABI.c.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a -l:libunwind.a -lc C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a -l:libunwind.a C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/clang_rt.crtend.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/crtn.o] + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/ld.lld] ==> ignore + arg [--sysroot=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot] ==> ignore + arg [-pie] ==> ignore + arg [-EL] ==> ignore + arg [-znow] ==> ignore + arg [-zrelro] ==> ignore + arg [-zmax-page-size=4096] ==> ignore + arg [--hash-style=gnu] ==> ignore + arg [--hash-style=both] ==> ignore + arg [--enable-new-dtags] ==> ignore + arg [--eh-frame-hdr] ==> ignore + arg [-m] ==> ignore + arg [armelf_linux_eabi] ==> ignore + arg [-dynamic-linker] ==> ignore + arg [/lib/ld-musl-arm.so.1] ==> ignore + arg [-o] ==> ignore + arg [cmTC_8ee24] ==> ignore + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/Scrt1.o] ==> ignore + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/crti.o] ==> ignore + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/clang_rt.crtbegin.o] ==> ignore + arg [-LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos] ==> dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos] + arg [-LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/] ==> dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/] + arg [-LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/arm-linux-ohos/] ==> dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/arm-linux-ohos/] + arg [-LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/] ==> dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/] + arg [--build-id=sha1] ==> ignore + arg [--warn-shared-textrel] ==> ignore + arg [--fatal-warnings] ==> ignore + arg [-lunwind] ==> lib [unwind] + arg [--no-undefined] ==> ignore + arg [-znoexecstack] ==> ignore + arg [--gc-sections] ==> ignore + arg [CMakeFiles/cmTC_8ee24.dir/CMakeCCompilerABI.c.o] ==> ignore + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a] ==> lib [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a] + arg [-l:libunwind.a] ==> lib [-l:libunwind.a] + arg [-lc] ==> lib [c] + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a] ==> lib [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a] + arg [-l:libunwind.a] ==> lib [-l:libunwind.a] + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/clang_rt.crtend.o] ==> ignore + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/crtn.o] ==> ignore + remove lib [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a] + remove lib [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a] + collapse library dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos] + collapse library dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib] + collapse library dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/arm-linux-ohos/] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/arm-linux-ohos] + collapse library dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos] + implicit libs: [unwind;-l:libunwind.a;c;-l:libunwind.a] + implicit dirs: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/arm-linux-ohos;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos] + implicit fwks: [] + + +Determining if the CXX compiler works passed with the following output: +Change Dir: D:/Program/OpenHarmony/AAS1026/applications_app_samples/code/SuperFeature/Widget/FormGame/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp + +Run Build Command(s):C:\Users\h30053725\AppData\Local\Huawei\SDK1026\openharmony\10\native\build-tools\cmake\bin\ninja.exe cmTC_be60d && [1/2] Building CXX object CMakeFiles/cmTC_be60d.dir/testCXXCompiler.cxx.o +clang++: warning: argument unused during compilation: '--gcc-toolchain=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm' [-Wunused-command-line-argument] +[2/2] Linking CXX executable cmTC_be60d + + + +Detecting CXX compiler ABI info compiled with the following output: +Change Dir: D:/Program/OpenHarmony/AAS1026/applications_app_samples/code/SuperFeature/Widget/FormGame/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp + +Run Build Command(s):C:\Users\h30053725\AppData\Local\Huawei\SDK1026\openharmony\10\native\build-tools\cmake\bin\ninja.exe cmTC_9918c && [1/2] Building CXX object CMakeFiles/cmTC_9918c.dir/CMakeCXXCompilerABI.cpp.o +OHOS (dev) clang version 15.0.4 (llvm-project d1aa604d90b55a96aa22af9992d170fccbd41938) +Target: arm-unknown-linux-ohos +Thread model: posix +InstalledDir: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin +clang++: warning: argument unused during compilation: '--gcc-toolchain=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm' [-Wunused-command-line-argument] + (in-process) + "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang++.exe" -cc1 -triple armv7-unknown-linux-ohos -emit-obj -mrelax-all -mnoexecstack -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCXXCompilerABI.cpp -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=1 -target-cpu generic -target-feature +soft-float -target-feature +soft-float-abi -target-feature -vfp2 -target-feature -vfp2sp -target-feature -vfp3 -target-feature -vfp3d16 -target-feature -vfp3d16sp -target-feature -vfp3sp -target-feature -fp16 -target-feature -vfp4 -target-feature -vfp4d16 -target-feature -vfp4d16sp -target-feature -vfp4sp -target-feature -fp-armv8 -target-feature -fp-armv8d16 -target-feature -fp-armv8d16sp -target-feature -fp-armv8sp -target-feature -fullfp16 -target-feature -fp64 -target-feature -d32 -target-feature -neon -target-feature -sha2 -target-feature -aes -target-feature -dotprod -target-feature -fp16fml -target-feature -bf16 -target-feature -mve -target-feature -mve.fp -target-feature -fpregs -target-abi aapcs-linux -msoft-float -mfloat-abi soft -fallow-half-arguments-and-returns -mllvm -treat-scalable-fixed-error-as-warning -debugger-tuning=gdb -v -ffunction-sections -fdata-sections -fcoverage-compilation-dir=D:/Program/OpenHarmony/AAS1026/applications_app_samples/code/SuperFeature/Widget/FormGame/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp -resource-dir C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4 -D __MUSL__ -isysroot C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot -internal-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../include/libcxx-ohos/include/c++/v1 -internal-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/include -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include -Wformat -Werror=format-security -fdeprecated-macro -fdebug-compilation-dir=D:/Program/OpenHarmony/AAS1026/applications_app_samples/code/SuperFeature/Widget/FormGame/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp -ferror-limit 19 -stack-protector 2 -fno-signed-char -fgnuc-version=4.2.1 -fcxx-exceptions -fexceptions -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_9918c.dir/CMakeCXXCompilerABI.cpp.o -x c++ C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeCXXCompilerABI.cpp +clang -cc1 version 15.0.4 based upon LLVM 15.0.4 default target x86_64-w64-windows-gnu +ignoring nonexistent directory "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/include" +#include "..." search starts here: +#include <...> search starts here: + C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../include/libcxx-ohos/include/c++/v1 + C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include + C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos + C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include +End of search list. +[2/2] Linking CXX executable cmTC_9918c +OHOS (dev) clang version 15.0.4 (llvm-project d1aa604d90b55a96aa22af9992d170fccbd41938) +Target: arm-unknown-linux-ohos +Thread model: posix +InstalledDir: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin + "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/ld.lld" --sysroot=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot -pie -EL -z now -z relro -z max-page-size=4096 --hash-style=gnu --hash-style=both --enable-new-dtags --eh-frame-hdr -m armelf_linux_eabi -dynamic-linker /lib/ld-musl-arm.so.1 -o cmTC_9918c C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/Scrt1.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/crti.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/clang_rt.crtbegin.o -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/ -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/arm-linux-ohos/ -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/ --build-id=sha1 --warn-shared-textrel --fatal-warnings -lunwind --no-undefined -z noexecstack --gc-sections CMakeFiles/cmTC_9918c.dir/CMakeCXXCompilerABI.cpp.o -Bstatic -lc++ -lc++abi -lunwind -Bdynamic -lm C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a -l:libunwind.a -lc C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a -l:libunwind.a C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/clang_rt.crtend.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/crtn.o + + + +Parsed CXX implicit include dir info from above output: rv=done + found start of include info + found start of implicit include info + add: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../include/libcxx-ohos/include/c++/v1] + add: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include] + add: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos] + add: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] + end of search list found + collapse include dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../include/libcxx-ohos/include/c++/v1] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/include/libcxx-ohos/include/c++/v1] + collapse include dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include] + collapse include dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos] + collapse include dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] + implicit include dirs: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/include/libcxx-ohos/include/c++/v1;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] + + +Parsed CXX implicit link information from above output: + link line regex: [^( *|.*[/\])(ld\.lld\.exe|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] + ignore line: [Change Dir: D:/Program/OpenHarmony/AAS1026/applications_app_samples/code/SuperFeature/Widget/FormGame/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp] + ignore line: [] + ignore line: [Run Build Command(s):C:\Users\h30053725\AppData\Local\Huawei\SDK1026\openharmony\10\native\build-tools\cmake\bin\ninja.exe cmTC_9918c && [1/2] Building CXX object CMakeFiles/cmTC_9918c.dir/CMakeCXXCompilerABI.cpp.o] + ignore line: [OHOS (dev) clang version 15.0.4 (llvm-project d1aa604d90b55a96aa22af9992d170fccbd41938)] + ignore line: [Target: arm-unknown-linux-ohos] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin] + ignore line: [clang++: warning: argument unused during compilation: '--gcc-toolchain=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm' [-Wunused-command-line-argument]] + ignore line: [ (in-process)] + ignore line: [ "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang++.exe" -cc1 -triple armv7-unknown-linux-ohos -emit-obj -mrelax-all -mnoexecstack -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCXXCompilerABI.cpp -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=1 -target-cpu generic -target-feature +soft-float -target-feature +soft-float-abi -target-feature -vfp2 -target-feature -vfp2sp -target-feature -vfp3 -target-feature -vfp3d16 -target-feature -vfp3d16sp -target-feature -vfp3sp -target-feature -fp16 -target-feature -vfp4 -target-feature -vfp4d16 -target-feature -vfp4d16sp -target-feature -vfp4sp -target-feature -fp-armv8 -target-feature -fp-armv8d16 -target-feature -fp-armv8d16sp -target-feature -fp-armv8sp -target-feature -fullfp16 -target-feature -fp64 -target-feature -d32 -target-feature -neon -target-feature -sha2 -target-feature -aes -target-feature -dotprod -target-feature -fp16fml -target-feature -bf16 -target-feature -mve -target-feature -mve.fp -target-feature -fpregs -target-abi aapcs-linux -msoft-float -mfloat-abi soft -fallow-half-arguments-and-returns -mllvm -treat-scalable-fixed-error-as-warning -debugger-tuning=gdb -v -ffunction-sections -fdata-sections -fcoverage-compilation-dir=D:/Program/OpenHarmony/AAS1026/applications_app_samples/code/SuperFeature/Widget/FormGame/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp -resource-dir C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4 -D __MUSL__ -isysroot C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot -internal-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../include/libcxx-ohos/include/c++/v1 -internal-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/include -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include -Wformat -Werror=format-security -fdeprecated-macro -fdebug-compilation-dir=D:/Program/OpenHarmony/AAS1026/applications_app_samples/code/SuperFeature/Widget/FormGame/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp -ferror-limit 19 -stack-protector 2 -fno-signed-char -fgnuc-version=4.2.1 -fcxx-exceptions -fexceptions -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_9918c.dir/CMakeCXXCompilerABI.cpp.o -x c++ C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeCXXCompilerABI.cpp] + ignore line: [clang -cc1 version 15.0.4 based upon LLVM 15.0.4 default target x86_64-w64-windows-gnu] + ignore line: [ignoring nonexistent directory "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/include"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../include/libcxx-ohos/include/c++/v1] + ignore line: [ C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include] + ignore line: [ C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos] + ignore line: [ C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] + ignore line: [End of search list.] + ignore line: [[2/2] Linking CXX executable cmTC_9918c] + ignore line: [OHOS (dev) clang version 15.0.4 (llvm-project d1aa604d90b55a96aa22af9992d170fccbd41938)] + ignore line: [Target: arm-unknown-linux-ohos] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin] + link line: [ "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/ld.lld" --sysroot=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot -pie -EL -z now -z relro -z max-page-size=4096 --hash-style=gnu --hash-style=both --enable-new-dtags --eh-frame-hdr -m armelf_linux_eabi -dynamic-linker /lib/ld-musl-arm.so.1 -o cmTC_9918c C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/Scrt1.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/crti.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/clang_rt.crtbegin.o -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/ -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/arm-linux-ohos/ -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/ --build-id=sha1 --warn-shared-textrel --fatal-warnings -lunwind --no-undefined -z noexecstack --gc-sections CMakeFiles/cmTC_9918c.dir/CMakeCXXCompilerABI.cpp.o -Bstatic -lc++ -lc++abi -lunwind -Bdynamic -lm C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a -l:libunwind.a -lc C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a -l:libunwind.a C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/clang_rt.crtend.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/crtn.o] + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/ld.lld] ==> ignore + arg [--sysroot=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot] ==> ignore + arg [-pie] ==> ignore + arg [-EL] ==> ignore + arg [-znow] ==> ignore + arg [-zrelro] ==> ignore + arg [-zmax-page-size=4096] ==> ignore + arg [--hash-style=gnu] ==> ignore + arg [--hash-style=both] ==> ignore + arg [--enable-new-dtags] ==> ignore + arg [--eh-frame-hdr] ==> ignore + arg [-m] ==> ignore + arg [armelf_linux_eabi] ==> ignore + arg [-dynamic-linker] ==> ignore + arg [/lib/ld-musl-arm.so.1] ==> ignore + arg [-o] ==> ignore + arg [cmTC_9918c] ==> ignore + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/Scrt1.o] ==> ignore + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/crti.o] ==> ignore + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/clang_rt.crtbegin.o] ==> ignore + arg [-LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos] ==> dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos] + arg [-LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/] ==> dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/] + arg [-LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/arm-linux-ohos/] ==> dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/arm-linux-ohos/] + arg [-LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/] ==> dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/] + arg [--build-id=sha1] ==> ignore + arg [--warn-shared-textrel] ==> ignore + arg [--fatal-warnings] ==> ignore + arg [-lunwind] ==> lib [unwind] + arg [--no-undefined] ==> ignore + arg [-znoexecstack] ==> ignore + arg [--gc-sections] ==> ignore + arg [CMakeFiles/cmTC_9918c.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore + arg [-Bstatic] ==> ignore + arg [-lc++] ==> lib [c++] + arg [-lc++abi] ==> lib [c++abi] + arg [-lunwind] ==> lib [unwind] + arg [-Bdynamic] ==> ignore + arg [-lm] ==> lib [m] + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a] ==> lib [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a] + arg [-l:libunwind.a] ==> lib [-l:libunwind.a] + arg [-lc] ==> lib [c] + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a] ==> lib [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a] + arg [-l:libunwind.a] ==> lib [-l:libunwind.a] + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/clang_rt.crtend.o] ==> ignore + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/crtn.o] ==> ignore + remove lib [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a] + remove lib [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a] + collapse library dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos] + collapse library dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib] + collapse library dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/arm-linux-ohos/] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/arm-linux-ohos] + collapse library dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos] + implicit libs: [unwind;c++;c++abi;unwind;m;-l:libunwind.a;c;-l:libunwind.a] + implicit dirs: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/arm-linux-ohos;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos] + implicit fwks: [] + + +The target system is: OHOS - 1 - arm +The host system is: Windows - 10.0.22621 - AMD64 +Compiling the C compiler identification source file "CMakeCCompilerId.c" succeeded. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang.exe +Build flags: +Id flags: -c + +The output was: +0 + + +Compilation of the C compiler identification source "CMakeCCompilerId.c" produced "CMakeCCompilerId.o" + +The C compiler identification is Clang, found in "D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/3.16.5/CompilerIdC/CMakeCCompilerId.o" + +Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" succeeded. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang++.exe +Build flags: +Id flags: -c + +The output was: +0 + + +Compilation of the CXX compiler identification source "CMakeCXXCompilerId.cpp" produced "CMakeCXXCompilerId.o" + +The CXX compiler identification is Clang, found in "D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/3.16.5/CompilerIdCXX/CMakeCXXCompilerId.o" + +Determining if the C compiler works passed with the following output: +Change Dir: D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp + +Run Build Command(s):C:\Users\h30053725\AppData\Local\Huawei\SDK1026\openharmony\10\native\build-tools\cmake\bin\ninja.exe cmTC_b1174 && [1/2] Building C object CMakeFiles/cmTC_b1174.dir/testCCompiler.c.o +clang: warning: argument unused during compilation: '--gcc-toolchain=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm' [-Wunused-command-line-argument] +[2/2] Linking C executable cmTC_b1174 + + + +Detecting C compiler ABI info compiled with the following output: +Change Dir: D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp + +Run Build Command(s):C:\Users\h30053725\AppData\Local\Huawei\SDK1026\openharmony\10\native\build-tools\cmake\bin\ninja.exe cmTC_911d7 && [1/2] Building C object CMakeFiles/cmTC_911d7.dir/CMakeCCompilerABI.c.o +OHOS (dev) clang version 15.0.4 (llvm-project d1aa604d90b55a96aa22af9992d170fccbd41938) +Target: arm-unknown-linux-ohos +Thread model: posix +InstalledDir: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin +clang: warning: argument unused during compilation: '--gcc-toolchain=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm' [-Wunused-command-line-argument] + (in-process) + "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang.exe" -cc1 -triple armv7-unknown-linux-ohos -emit-obj -mrelax-all -mnoexecstack -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCCompilerABI.c -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=1 -target-cpu generic -target-feature +soft-float -target-feature +soft-float-abi -target-feature -vfp2 -target-feature -vfp2sp -target-feature -vfp3 -target-feature -vfp3d16 -target-feature -vfp3d16sp -target-feature -vfp3sp -target-feature -fp16 -target-feature -vfp4 -target-feature -vfp4d16 -target-feature -vfp4d16sp -target-feature -vfp4sp -target-feature -fp-armv8 -target-feature -fp-armv8d16 -target-feature -fp-armv8d16sp -target-feature -fp-armv8sp -target-feature -fullfp16 -target-feature -fp64 -target-feature -d32 -target-feature -neon -target-feature -sha2 -target-feature -aes -target-feature -dotprod -target-feature -fp16fml -target-feature -bf16 -target-feature -mve -target-feature -mve.fp -target-feature -fpregs -target-abi aapcs-linux -msoft-float -mfloat-abi soft -fallow-half-arguments-and-returns -mllvm -treat-scalable-fixed-error-as-warning -debugger-tuning=gdb -v -ffunction-sections -fdata-sections -fcoverage-compilation-dir=D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp -resource-dir C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4 -D __MUSL__ -isysroot C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot -internal-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/include -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include -Wformat -Werror=format-security -fdebug-compilation-dir=D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp -ferror-limit 19 -stack-protector 2 -fno-signed-char -fgnuc-version=4.2.1 -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_911d7.dir/CMakeCCompilerABI.c.o -x c C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeCCompilerABI.c +clang -cc1 version 15.0.4 based upon LLVM 15.0.4 default target x86_64-w64-windows-gnu +ignoring nonexistent directory "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/include" +#include "..." search starts here: +#include <...> search starts here: + C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include + C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos + C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include +End of search list. +[2/2] Linking C executable cmTC_911d7 +OHOS (dev) clang version 15.0.4 (llvm-project d1aa604d90b55a96aa22af9992d170fccbd41938) +Target: arm-unknown-linux-ohos +Thread model: posix +InstalledDir: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin + "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/ld.lld" --sysroot=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot -pie -EL -z now -z relro -z max-page-size=4096 --hash-style=gnu --hash-style=both --enable-new-dtags --eh-frame-hdr -m armelf_linux_eabi -dynamic-linker /lib/ld-musl-arm.so.1 -o cmTC_911d7 C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/Scrt1.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/crti.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/clang_rt.crtbegin.o -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/ -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/arm-linux-ohos/ -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/ --build-id=sha1 --warn-shared-textrel --fatal-warnings -lunwind --no-undefined -z noexecstack --gc-sections CMakeFiles/cmTC_911d7.dir/CMakeCCompilerABI.c.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a -l:libunwind.a -lc C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a -l:libunwind.a C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/clang_rt.crtend.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/crtn.o + + + +Parsed C implicit include dir info from above output: rv=done + found start of include info + found start of implicit include info + add: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include] + add: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos] + add: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] + end of search list found + collapse include dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include] + collapse include dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos] + collapse include dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] + implicit include dirs: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] + + +Parsed C implicit link information from above output: + link line regex: [^( *|.*[/\])(ld\.lld\.exe|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] + ignore line: [Change Dir: D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp] + ignore line: [] + ignore line: [Run Build Command(s):C:\Users\h30053725\AppData\Local\Huawei\SDK1026\openharmony\10\native\build-tools\cmake\bin\ninja.exe cmTC_911d7 && [1/2] Building C object CMakeFiles/cmTC_911d7.dir/CMakeCCompilerABI.c.o] + ignore line: [OHOS (dev) clang version 15.0.4 (llvm-project d1aa604d90b55a96aa22af9992d170fccbd41938)] + ignore line: [Target: arm-unknown-linux-ohos] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin] + ignore line: [clang: warning: argument unused during compilation: '--gcc-toolchain=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm' [-Wunused-command-line-argument]] + ignore line: [ (in-process)] + ignore line: [ "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang.exe" -cc1 -triple armv7-unknown-linux-ohos -emit-obj -mrelax-all -mnoexecstack -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCCompilerABI.c -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=1 -target-cpu generic -target-feature +soft-float -target-feature +soft-float-abi -target-feature -vfp2 -target-feature -vfp2sp -target-feature -vfp3 -target-feature -vfp3d16 -target-feature -vfp3d16sp -target-feature -vfp3sp -target-feature -fp16 -target-feature -vfp4 -target-feature -vfp4d16 -target-feature -vfp4d16sp -target-feature -vfp4sp -target-feature -fp-armv8 -target-feature -fp-armv8d16 -target-feature -fp-armv8d16sp -target-feature -fp-armv8sp -target-feature -fullfp16 -target-feature -fp64 -target-feature -d32 -target-feature -neon -target-feature -sha2 -target-feature -aes -target-feature -dotprod -target-feature -fp16fml -target-feature -bf16 -target-feature -mve -target-feature -mve.fp -target-feature -fpregs -target-abi aapcs-linux -msoft-float -mfloat-abi soft -fallow-half-arguments-and-returns -mllvm -treat-scalable-fixed-error-as-warning -debugger-tuning=gdb -v -ffunction-sections -fdata-sections -fcoverage-compilation-dir=D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp -resource-dir C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4 -D __MUSL__ -isysroot C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot -internal-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/include -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include -Wformat -Werror=format-security -fdebug-compilation-dir=D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp -ferror-limit 19 -stack-protector 2 -fno-signed-char -fgnuc-version=4.2.1 -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_911d7.dir/CMakeCCompilerABI.c.o -x c C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeCCompilerABI.c] + ignore line: [clang -cc1 version 15.0.4 based upon LLVM 15.0.4 default target x86_64-w64-windows-gnu] + ignore line: [ignoring nonexistent directory "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/include"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include] + ignore line: [ C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos] + ignore line: [ C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] + ignore line: [End of search list.] + ignore line: [[2/2] Linking C executable cmTC_911d7] + ignore line: [OHOS (dev) clang version 15.0.4 (llvm-project d1aa604d90b55a96aa22af9992d170fccbd41938)] + ignore line: [Target: arm-unknown-linux-ohos] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin] + link line: [ "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/ld.lld" --sysroot=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot -pie -EL -z now -z relro -z max-page-size=4096 --hash-style=gnu --hash-style=both --enable-new-dtags --eh-frame-hdr -m armelf_linux_eabi -dynamic-linker /lib/ld-musl-arm.so.1 -o cmTC_911d7 C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/Scrt1.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/crti.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/clang_rt.crtbegin.o -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/ -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/arm-linux-ohos/ -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/ --build-id=sha1 --warn-shared-textrel --fatal-warnings -lunwind --no-undefined -z noexecstack --gc-sections CMakeFiles/cmTC_911d7.dir/CMakeCCompilerABI.c.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a -l:libunwind.a -lc C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a -l:libunwind.a C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/clang_rt.crtend.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/crtn.o] + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/ld.lld] ==> ignore + arg [--sysroot=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot] ==> ignore + arg [-pie] ==> ignore + arg [-EL] ==> ignore + arg [-znow] ==> ignore + arg [-zrelro] ==> ignore + arg [-zmax-page-size=4096] ==> ignore + arg [--hash-style=gnu] ==> ignore + arg [--hash-style=both] ==> ignore + arg [--enable-new-dtags] ==> ignore + arg [--eh-frame-hdr] ==> ignore + arg [-m] ==> ignore + arg [armelf_linux_eabi] ==> ignore + arg [-dynamic-linker] ==> ignore + arg [/lib/ld-musl-arm.so.1] ==> ignore + arg [-o] ==> ignore + arg [cmTC_911d7] ==> ignore + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/Scrt1.o] ==> ignore + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/crti.o] ==> ignore + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/clang_rt.crtbegin.o] ==> ignore + arg [-LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos] ==> dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos] + arg [-LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/] ==> dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/] + arg [-LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/arm-linux-ohos/] ==> dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/arm-linux-ohos/] + arg [-LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/] ==> dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/] + arg [--build-id=sha1] ==> ignore + arg [--warn-shared-textrel] ==> ignore + arg [--fatal-warnings] ==> ignore + arg [-lunwind] ==> lib [unwind] + arg [--no-undefined] ==> ignore + arg [-znoexecstack] ==> ignore + arg [--gc-sections] ==> ignore + arg [CMakeFiles/cmTC_911d7.dir/CMakeCCompilerABI.c.o] ==> ignore + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a] ==> lib [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a] + arg [-l:libunwind.a] ==> lib [-l:libunwind.a] + arg [-lc] ==> lib [c] + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a] ==> lib [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a] + arg [-l:libunwind.a] ==> lib [-l:libunwind.a] + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/clang_rt.crtend.o] ==> ignore + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/crtn.o] ==> ignore + remove lib [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a] + remove lib [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a] + collapse library dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos] + collapse library dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib] + collapse library dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/arm-linux-ohos/] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/arm-linux-ohos] + collapse library dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos] + implicit libs: [unwind;-l:libunwind.a;c;-l:libunwind.a] + implicit dirs: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/arm-linux-ohos;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos] + implicit fwks: [] + + +Determining if the CXX compiler works passed with the following output: +Change Dir: D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp + +Run Build Command(s):C:\Users\h30053725\AppData\Local\Huawei\SDK1026\openharmony\10\native\build-tools\cmake\bin\ninja.exe cmTC_0d1fe && [1/2] Building CXX object CMakeFiles/cmTC_0d1fe.dir/testCXXCompiler.cxx.o +clang++: warning: argument unused during compilation: '--gcc-toolchain=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm' [-Wunused-command-line-argument] +[2/2] Linking CXX executable cmTC_0d1fe + + + +Detecting CXX compiler ABI info compiled with the following output: +Change Dir: D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp + +Run Build Command(s):C:\Users\h30053725\AppData\Local\Huawei\SDK1026\openharmony\10\native\build-tools\cmake\bin\ninja.exe cmTC_a14ee && [1/2] Building CXX object CMakeFiles/cmTC_a14ee.dir/CMakeCXXCompilerABI.cpp.o +OHOS (dev) clang version 15.0.4 (llvm-project d1aa604d90b55a96aa22af9992d170fccbd41938) +Target: arm-unknown-linux-ohos +Thread model: posix +InstalledDir: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin +clang++: warning: argument unused during compilation: '--gcc-toolchain=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm' [-Wunused-command-line-argument] + (in-process) + "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang++.exe" -cc1 -triple armv7-unknown-linux-ohos -emit-obj -mrelax-all -mnoexecstack -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCXXCompilerABI.cpp -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=1 -target-cpu generic -target-feature +soft-float -target-feature +soft-float-abi -target-feature -vfp2 -target-feature -vfp2sp -target-feature -vfp3 -target-feature -vfp3d16 -target-feature -vfp3d16sp -target-feature -vfp3sp -target-feature -fp16 -target-feature -vfp4 -target-feature -vfp4d16 -target-feature -vfp4d16sp -target-feature -vfp4sp -target-feature -fp-armv8 -target-feature -fp-armv8d16 -target-feature -fp-armv8d16sp -target-feature -fp-armv8sp -target-feature -fullfp16 -target-feature -fp64 -target-feature -d32 -target-feature -neon -target-feature -sha2 -target-feature -aes -target-feature -dotprod -target-feature -fp16fml -target-feature -bf16 -target-feature -mve -target-feature -mve.fp -target-feature -fpregs -target-abi aapcs-linux -msoft-float -mfloat-abi soft -fallow-half-arguments-and-returns -mllvm -treat-scalable-fixed-error-as-warning -debugger-tuning=gdb -v -ffunction-sections -fdata-sections -fcoverage-compilation-dir=D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp -resource-dir C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4 -D __MUSL__ -isysroot C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot -internal-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../include/libcxx-ohos/include/c++/v1 -internal-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/include -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include -Wformat -Werror=format-security -fdeprecated-macro -fdebug-compilation-dir=D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp -ferror-limit 19 -stack-protector 2 -fno-signed-char -fgnuc-version=4.2.1 -fcxx-exceptions -fexceptions -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_a14ee.dir/CMakeCXXCompilerABI.cpp.o -x c++ C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeCXXCompilerABI.cpp +clang -cc1 version 15.0.4 based upon LLVM 15.0.4 default target x86_64-w64-windows-gnu +ignoring nonexistent directory "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/include" +#include "..." search starts here: +#include <...> search starts here: + C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../include/libcxx-ohos/include/c++/v1 + C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include + C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos + C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include +End of search list. +[2/2] Linking CXX executable cmTC_a14ee +OHOS (dev) clang version 15.0.4 (llvm-project d1aa604d90b55a96aa22af9992d170fccbd41938) +Target: arm-unknown-linux-ohos +Thread model: posix +InstalledDir: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin + "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/ld.lld" --sysroot=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot -pie -EL -z now -z relro -z max-page-size=4096 --hash-style=gnu --hash-style=both --enable-new-dtags --eh-frame-hdr -m armelf_linux_eabi -dynamic-linker /lib/ld-musl-arm.so.1 -o cmTC_a14ee C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/Scrt1.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/crti.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/clang_rt.crtbegin.o -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/ -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/arm-linux-ohos/ -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/ --build-id=sha1 --warn-shared-textrel --fatal-warnings -lunwind --no-undefined -z noexecstack --gc-sections CMakeFiles/cmTC_a14ee.dir/CMakeCXXCompilerABI.cpp.o -Bstatic -lc++ -lc++abi -lunwind -Bdynamic -lm C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a -l:libunwind.a -lc C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a -l:libunwind.a C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/clang_rt.crtend.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/crtn.o + + + +Parsed CXX implicit include dir info from above output: rv=done + found start of include info + found start of implicit include info + add: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../include/libcxx-ohos/include/c++/v1] + add: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include] + add: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos] + add: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] + end of search list found + collapse include dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../include/libcxx-ohos/include/c++/v1] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/include/libcxx-ohos/include/c++/v1] + collapse include dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include] + collapse include dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos] + collapse include dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] + implicit include dirs: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/include/libcxx-ohos/include/c++/v1;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] + + +Parsed CXX implicit link information from above output: + link line regex: [^( *|.*[/\])(ld\.lld\.exe|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] + ignore line: [Change Dir: D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp] + ignore line: [] + ignore line: [Run Build Command(s):C:\Users\h30053725\AppData\Local\Huawei\SDK1026\openharmony\10\native\build-tools\cmake\bin\ninja.exe cmTC_a14ee && [1/2] Building CXX object CMakeFiles/cmTC_a14ee.dir/CMakeCXXCompilerABI.cpp.o] + ignore line: [OHOS (dev) clang version 15.0.4 (llvm-project d1aa604d90b55a96aa22af9992d170fccbd41938)] + ignore line: [Target: arm-unknown-linux-ohos] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin] + ignore line: [clang++: warning: argument unused during compilation: '--gcc-toolchain=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm' [-Wunused-command-line-argument]] + ignore line: [ (in-process)] + ignore line: [ "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang++.exe" -cc1 -triple armv7-unknown-linux-ohos -emit-obj -mrelax-all -mnoexecstack -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCXXCompilerABI.cpp -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=1 -target-cpu generic -target-feature +soft-float -target-feature +soft-float-abi -target-feature -vfp2 -target-feature -vfp2sp -target-feature -vfp3 -target-feature -vfp3d16 -target-feature -vfp3d16sp -target-feature -vfp3sp -target-feature -fp16 -target-feature -vfp4 -target-feature -vfp4d16 -target-feature -vfp4d16sp -target-feature -vfp4sp -target-feature -fp-armv8 -target-feature -fp-armv8d16 -target-feature -fp-armv8d16sp -target-feature -fp-armv8sp -target-feature -fullfp16 -target-feature -fp64 -target-feature -d32 -target-feature -neon -target-feature -sha2 -target-feature -aes -target-feature -dotprod -target-feature -fp16fml -target-feature -bf16 -target-feature -mve -target-feature -mve.fp -target-feature -fpregs -target-abi aapcs-linux -msoft-float -mfloat-abi soft -fallow-half-arguments-and-returns -mllvm -treat-scalable-fixed-error-as-warning -debugger-tuning=gdb -v -ffunction-sections -fdata-sections -fcoverage-compilation-dir=D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp -resource-dir C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4 -D __MUSL__ -isysroot C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot -internal-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../include/libcxx-ohos/include/c++/v1 -internal-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/include -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include -Wformat -Werror=format-security -fdeprecated-macro -fdebug-compilation-dir=D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp -ferror-limit 19 -stack-protector 2 -fno-signed-char -fgnuc-version=4.2.1 -fcxx-exceptions -fexceptions -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_a14ee.dir/CMakeCXXCompilerABI.cpp.o -x c++ C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeCXXCompilerABI.cpp] + ignore line: [clang -cc1 version 15.0.4 based upon LLVM 15.0.4 default target x86_64-w64-windows-gnu] + ignore line: [ignoring nonexistent directory "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/include"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../include/libcxx-ohos/include/c++/v1] + ignore line: [ C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include] + ignore line: [ C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos] + ignore line: [ C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] + ignore line: [End of search list.] + ignore line: [[2/2] Linking CXX executable cmTC_a14ee] + ignore line: [OHOS (dev) clang version 15.0.4 (llvm-project d1aa604d90b55a96aa22af9992d170fccbd41938)] + ignore line: [Target: arm-unknown-linux-ohos] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin] + link line: [ "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/ld.lld" --sysroot=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot -pie -EL -z now -z relro -z max-page-size=4096 --hash-style=gnu --hash-style=both --enable-new-dtags --eh-frame-hdr -m armelf_linux_eabi -dynamic-linker /lib/ld-musl-arm.so.1 -o cmTC_a14ee C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/Scrt1.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/crti.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/clang_rt.crtbegin.o -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/ -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/arm-linux-ohos/ -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/ --build-id=sha1 --warn-shared-textrel --fatal-warnings -lunwind --no-undefined -z noexecstack --gc-sections CMakeFiles/cmTC_a14ee.dir/CMakeCXXCompilerABI.cpp.o -Bstatic -lc++ -lc++abi -lunwind -Bdynamic -lm C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a -l:libunwind.a -lc C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a -l:libunwind.a C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/clang_rt.crtend.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/crtn.o] + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/ld.lld] ==> ignore + arg [--sysroot=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot] ==> ignore + arg [-pie] ==> ignore + arg [-EL] ==> ignore + arg [-znow] ==> ignore + arg [-zrelro] ==> ignore + arg [-zmax-page-size=4096] ==> ignore + arg [--hash-style=gnu] ==> ignore + arg [--hash-style=both] ==> ignore + arg [--enable-new-dtags] ==> ignore + arg [--eh-frame-hdr] ==> ignore + arg [-m] ==> ignore + arg [armelf_linux_eabi] ==> ignore + arg [-dynamic-linker] ==> ignore + arg [/lib/ld-musl-arm.so.1] ==> ignore + arg [-o] ==> ignore + arg [cmTC_a14ee] ==> ignore + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/Scrt1.o] ==> ignore + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/crti.o] ==> ignore + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/clang_rt.crtbegin.o] ==> ignore + arg [-LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos] ==> dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos] + arg [-LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/] ==> dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/] + arg [-LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/arm-linux-ohos/] ==> dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/arm-linux-ohos/] + arg [-LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/] ==> dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/] + arg [--build-id=sha1] ==> ignore + arg [--warn-shared-textrel] ==> ignore + arg [--fatal-warnings] ==> ignore + arg [-lunwind] ==> lib [unwind] + arg [--no-undefined] ==> ignore + arg [-znoexecstack] ==> ignore + arg [--gc-sections] ==> ignore + arg [CMakeFiles/cmTC_a14ee.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore + arg [-Bstatic] ==> ignore + arg [-lc++] ==> lib [c++] + arg [-lc++abi] ==> lib [c++abi] + arg [-lunwind] ==> lib [unwind] + arg [-Bdynamic] ==> ignore + arg [-lm] ==> lib [m] + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a] ==> lib [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a] + arg [-l:libunwind.a] ==> lib [-l:libunwind.a] + arg [-lc] ==> lib [c] + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a] ==> lib [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a] + arg [-l:libunwind.a] ==> lib [-l:libunwind.a] + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/clang_rt.crtend.o] ==> ignore + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/crtn.o] ==> ignore + remove lib [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a] + remove lib [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a] + collapse library dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos] + collapse library dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib] + collapse library dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/arm-linux-ohos/] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/arm-linux-ohos] + collapse library dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos] + implicit libs: [unwind;c++;c++abi;unwind;m;-l:libunwind.a;c;-l:libunwind.a] + implicit dirs: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/arm-linux-ohos;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos] + implicit fwks: [] + + +The target system is: OHOS - 1 - arm +The host system is: Windows - 10.0.22621 - AMD64 +Compiling the C compiler identification source file "CMakeCCompilerId.c" succeeded. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang.exe +Build flags: +Id flags: -c + +The output was: +0 + + +Compilation of the C compiler identification source "CMakeCCompilerId.c" produced "CMakeCCompilerId.o" + +The C compiler identification is Clang, found in "D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/3.16.5/CompilerIdC/CMakeCCompilerId.o" + +Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" succeeded. +Compiler: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang++.exe +Build flags: +Id flags: -c + +The output was: +0 + + +Compilation of the CXX compiler identification source "CMakeCXXCompilerId.cpp" produced "CMakeCXXCompilerId.o" + +The CXX compiler identification is Clang, found in "D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/3.16.5/CompilerIdCXX/CMakeCXXCompilerId.o" + +Determining if the C compiler works passed with the following output: +Change Dir: D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp + +Run Build Command(s):C:\Users\h30053725\AppData\Local\Huawei\SDK1026\openharmony\10\native\build-tools\cmake\bin\ninja.exe cmTC_a9b32 && [1/2] Building C object CMakeFiles/cmTC_a9b32.dir/testCCompiler.c.o +clang: warning: argument unused during compilation: '--gcc-toolchain=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm' [-Wunused-command-line-argument] +[2/2] Linking C executable cmTC_a9b32 + + + +Detecting C compiler ABI info compiled with the following output: +Change Dir: D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp + +Run Build Command(s):C:\Users\h30053725\AppData\Local\Huawei\SDK1026\openharmony\10\native\build-tools\cmake\bin\ninja.exe cmTC_93f9b && [1/2] Building C object CMakeFiles/cmTC_93f9b.dir/CMakeCCompilerABI.c.o +OHOS (dev) clang version 15.0.4 (llvm-project d1aa604d90b55a96aa22af9992d170fccbd41938) +Target: arm-unknown-linux-ohos +Thread model: posix +InstalledDir: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin +clang: warning: argument unused during compilation: '--gcc-toolchain=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm' [-Wunused-command-line-argument] + (in-process) + "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang.exe" -cc1 -triple armv7-unknown-linux-ohos -emit-obj -mrelax-all -mnoexecstack -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCCompilerABI.c -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=1 -target-cpu generic -target-feature +soft-float -target-feature +soft-float-abi -target-feature -vfp2 -target-feature -vfp2sp -target-feature -vfp3 -target-feature -vfp3d16 -target-feature -vfp3d16sp -target-feature -vfp3sp -target-feature -fp16 -target-feature -vfp4 -target-feature -vfp4d16 -target-feature -vfp4d16sp -target-feature -vfp4sp -target-feature -fp-armv8 -target-feature -fp-armv8d16 -target-feature -fp-armv8d16sp -target-feature -fp-armv8sp -target-feature -fullfp16 -target-feature -fp64 -target-feature -d32 -target-feature -neon -target-feature -sha2 -target-feature -aes -target-feature -dotprod -target-feature -fp16fml -target-feature -bf16 -target-feature -mve -target-feature -mve.fp -target-feature -fpregs -target-abi aapcs-linux -msoft-float -mfloat-abi soft -fallow-half-arguments-and-returns -mllvm -treat-scalable-fixed-error-as-warning -debugger-tuning=gdb -v -ffunction-sections -fdata-sections -fcoverage-compilation-dir=D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp -resource-dir C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4 -D __MUSL__ -isysroot C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot -internal-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/include -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include -Wformat -Werror=format-security -fdebug-compilation-dir=D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp -ferror-limit 19 -stack-protector 2 -fno-signed-char -fgnuc-version=4.2.1 -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_93f9b.dir/CMakeCCompilerABI.c.o -x c C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeCCompilerABI.c +clang -cc1 version 15.0.4 based upon LLVM 15.0.4 default target x86_64-w64-windows-gnu +ignoring nonexistent directory "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/include" +#include "..." search starts here: +#include <...> search starts here: + C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include + C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos + C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include +End of search list. +[2/2] Linking C executable cmTC_93f9b +OHOS (dev) clang version 15.0.4 (llvm-project d1aa604d90b55a96aa22af9992d170fccbd41938) +Target: arm-unknown-linux-ohos +Thread model: posix +InstalledDir: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin + "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/ld.lld" --sysroot=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot -pie -EL -z now -z relro -z max-page-size=4096 --hash-style=gnu --hash-style=both --enable-new-dtags --eh-frame-hdr -m armelf_linux_eabi -dynamic-linker /lib/ld-musl-arm.so.1 -o cmTC_93f9b C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/Scrt1.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/crti.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/clang_rt.crtbegin.o -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/ -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/arm-linux-ohos/ -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/ --build-id=sha1 --warn-shared-textrel --fatal-warnings -lunwind --no-undefined -z noexecstack --gc-sections CMakeFiles/cmTC_93f9b.dir/CMakeCCompilerABI.c.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a -l:libunwind.a -lc C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a -l:libunwind.a C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/clang_rt.crtend.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/crtn.o + + + +Parsed C implicit include dir info from above output: rv=done + found start of include info + found start of implicit include info + add: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include] + add: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos] + add: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] + end of search list found + collapse include dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include] + collapse include dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos] + collapse include dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] + implicit include dirs: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] + + +Parsed C implicit link information from above output: + link line regex: [^( *|.*[/\])(ld\.lld\.exe|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] + ignore line: [Change Dir: D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp] + ignore line: [] + ignore line: [Run Build Command(s):C:\Users\h30053725\AppData\Local\Huawei\SDK1026\openharmony\10\native\build-tools\cmake\bin\ninja.exe cmTC_93f9b && [1/2] Building C object CMakeFiles/cmTC_93f9b.dir/CMakeCCompilerABI.c.o] + ignore line: [OHOS (dev) clang version 15.0.4 (llvm-project d1aa604d90b55a96aa22af9992d170fccbd41938)] + ignore line: [Target: arm-unknown-linux-ohos] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin] + ignore line: [clang: warning: argument unused during compilation: '--gcc-toolchain=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm' [-Wunused-command-line-argument]] + ignore line: [ (in-process)] + ignore line: [ "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang.exe" -cc1 -triple armv7-unknown-linux-ohos -emit-obj -mrelax-all -mnoexecstack -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCCompilerABI.c -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=1 -target-cpu generic -target-feature +soft-float -target-feature +soft-float-abi -target-feature -vfp2 -target-feature -vfp2sp -target-feature -vfp3 -target-feature -vfp3d16 -target-feature -vfp3d16sp -target-feature -vfp3sp -target-feature -fp16 -target-feature -vfp4 -target-feature -vfp4d16 -target-feature -vfp4d16sp -target-feature -vfp4sp -target-feature -fp-armv8 -target-feature -fp-armv8d16 -target-feature -fp-armv8d16sp -target-feature -fp-armv8sp -target-feature -fullfp16 -target-feature -fp64 -target-feature -d32 -target-feature -neon -target-feature -sha2 -target-feature -aes -target-feature -dotprod -target-feature -fp16fml -target-feature -bf16 -target-feature -mve -target-feature -mve.fp -target-feature -fpregs -target-abi aapcs-linux -msoft-float -mfloat-abi soft -fallow-half-arguments-and-returns -mllvm -treat-scalable-fixed-error-as-warning -debugger-tuning=gdb -v -ffunction-sections -fdata-sections -fcoverage-compilation-dir=D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp -resource-dir C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4 -D __MUSL__ -isysroot C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot -internal-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/include -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include -Wformat -Werror=format-security -fdebug-compilation-dir=D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp -ferror-limit 19 -stack-protector 2 -fno-signed-char -fgnuc-version=4.2.1 -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_93f9b.dir/CMakeCCompilerABI.c.o -x c C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeCCompilerABI.c] + ignore line: [clang -cc1 version 15.0.4 based upon LLVM 15.0.4 default target x86_64-w64-windows-gnu] + ignore line: [ignoring nonexistent directory "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/include"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include] + ignore line: [ C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos] + ignore line: [ C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] + ignore line: [End of search list.] + ignore line: [[2/2] Linking C executable cmTC_93f9b] + ignore line: [OHOS (dev) clang version 15.0.4 (llvm-project d1aa604d90b55a96aa22af9992d170fccbd41938)] + ignore line: [Target: arm-unknown-linux-ohos] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin] + link line: [ "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/ld.lld" --sysroot=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot -pie -EL -z now -z relro -z max-page-size=4096 --hash-style=gnu --hash-style=both --enable-new-dtags --eh-frame-hdr -m armelf_linux_eabi -dynamic-linker /lib/ld-musl-arm.so.1 -o cmTC_93f9b C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/Scrt1.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/crti.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/clang_rt.crtbegin.o -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/ -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/arm-linux-ohos/ -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/ --build-id=sha1 --warn-shared-textrel --fatal-warnings -lunwind --no-undefined -z noexecstack --gc-sections CMakeFiles/cmTC_93f9b.dir/CMakeCCompilerABI.c.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a -l:libunwind.a -lc C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a -l:libunwind.a C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/clang_rt.crtend.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/crtn.o] + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/ld.lld] ==> ignore + arg [--sysroot=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot] ==> ignore + arg [-pie] ==> ignore + arg [-EL] ==> ignore + arg [-znow] ==> ignore + arg [-zrelro] ==> ignore + arg [-zmax-page-size=4096] ==> ignore + arg [--hash-style=gnu] ==> ignore + arg [--hash-style=both] ==> ignore + arg [--enable-new-dtags] ==> ignore + arg [--eh-frame-hdr] ==> ignore + arg [-m] ==> ignore + arg [armelf_linux_eabi] ==> ignore + arg [-dynamic-linker] ==> ignore + arg [/lib/ld-musl-arm.so.1] ==> ignore + arg [-o] ==> ignore + arg [cmTC_93f9b] ==> ignore + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/Scrt1.o] ==> ignore + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/crti.o] ==> ignore + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/clang_rt.crtbegin.o] ==> ignore + arg [-LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos] ==> dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos] + arg [-LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/] ==> dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/] + arg [-LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/arm-linux-ohos/] ==> dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/arm-linux-ohos/] + arg [-LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/] ==> dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/] + arg [--build-id=sha1] ==> ignore + arg [--warn-shared-textrel] ==> ignore + arg [--fatal-warnings] ==> ignore + arg [-lunwind] ==> lib [unwind] + arg [--no-undefined] ==> ignore + arg [-znoexecstack] ==> ignore + arg [--gc-sections] ==> ignore + arg [CMakeFiles/cmTC_93f9b.dir/CMakeCCompilerABI.c.o] ==> ignore + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a] ==> lib [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a] + arg [-l:libunwind.a] ==> lib [-l:libunwind.a] + arg [-lc] ==> lib [c] + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a] ==> lib [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a] + arg [-l:libunwind.a] ==> lib [-l:libunwind.a] + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/clang_rt.crtend.o] ==> ignore + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/crtn.o] ==> ignore + remove lib [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a] + remove lib [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a] + collapse library dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos] + collapse library dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib] + collapse library dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/arm-linux-ohos/] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/arm-linux-ohos] + collapse library dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos] + implicit libs: [unwind;-l:libunwind.a;c;-l:libunwind.a] + implicit dirs: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/arm-linux-ohos;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos] + implicit fwks: [] + + +Determining if the CXX compiler works passed with the following output: +Change Dir: D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp + +Run Build Command(s):C:\Users\h30053725\AppData\Local\Huawei\SDK1026\openharmony\10\native\build-tools\cmake\bin\ninja.exe cmTC_353dc && [1/2] Building CXX object CMakeFiles/cmTC_353dc.dir/testCXXCompiler.cxx.o +clang++: warning: argument unused during compilation: '--gcc-toolchain=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm' [-Wunused-command-line-argument] +[2/2] Linking CXX executable cmTC_353dc + + + +Detecting CXX compiler ABI info compiled with the following output: +Change Dir: D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp + +Run Build Command(s):C:\Users\h30053725\AppData\Local\Huawei\SDK1026\openharmony\10\native\build-tools\cmake\bin\ninja.exe cmTC_c8086 && [1/2] Building CXX object CMakeFiles/cmTC_c8086.dir/CMakeCXXCompilerABI.cpp.o +OHOS (dev) clang version 15.0.4 (llvm-project d1aa604d90b55a96aa22af9992d170fccbd41938) +Target: arm-unknown-linux-ohos +Thread model: posix +InstalledDir: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin +clang++: warning: argument unused during compilation: '--gcc-toolchain=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm' [-Wunused-command-line-argument] + (in-process) + "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang++.exe" -cc1 -triple armv7-unknown-linux-ohos -emit-obj -mrelax-all -mnoexecstack -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCXXCompilerABI.cpp -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=1 -target-cpu generic -target-feature +soft-float -target-feature +soft-float-abi -target-feature -vfp2 -target-feature -vfp2sp -target-feature -vfp3 -target-feature -vfp3d16 -target-feature -vfp3d16sp -target-feature -vfp3sp -target-feature -fp16 -target-feature -vfp4 -target-feature -vfp4d16 -target-feature -vfp4d16sp -target-feature -vfp4sp -target-feature -fp-armv8 -target-feature -fp-armv8d16 -target-feature -fp-armv8d16sp -target-feature -fp-armv8sp -target-feature -fullfp16 -target-feature -fp64 -target-feature -d32 -target-feature -neon -target-feature -sha2 -target-feature -aes -target-feature -dotprod -target-feature -fp16fml -target-feature -bf16 -target-feature -mve -target-feature -mve.fp -target-feature -fpregs -target-abi aapcs-linux -msoft-float -mfloat-abi soft -fallow-half-arguments-and-returns -mllvm -treat-scalable-fixed-error-as-warning -debugger-tuning=gdb -v -ffunction-sections -fdata-sections -fcoverage-compilation-dir=D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp -resource-dir C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4 -D __MUSL__ -isysroot C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot -internal-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../include/libcxx-ohos/include/c++/v1 -internal-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/include -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include -Wformat -Werror=format-security -fdeprecated-macro -fdebug-compilation-dir=D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp -ferror-limit 19 -stack-protector 2 -fno-signed-char -fgnuc-version=4.2.1 -fcxx-exceptions -fexceptions -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_c8086.dir/CMakeCXXCompilerABI.cpp.o -x c++ C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeCXXCompilerABI.cpp +clang -cc1 version 15.0.4 based upon LLVM 15.0.4 default target x86_64-w64-windows-gnu +ignoring nonexistent directory "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/include" +#include "..." search starts here: +#include <...> search starts here: + C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../include/libcxx-ohos/include/c++/v1 + C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include + C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos + C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include +End of search list. +[2/2] Linking CXX executable cmTC_c8086 +OHOS (dev) clang version 15.0.4 (llvm-project d1aa604d90b55a96aa22af9992d170fccbd41938) +Target: arm-unknown-linux-ohos +Thread model: posix +InstalledDir: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin + "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/ld.lld" --sysroot=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot -pie -EL -z now -z relro -z max-page-size=4096 --hash-style=gnu --hash-style=both --enable-new-dtags --eh-frame-hdr -m armelf_linux_eabi -dynamic-linker /lib/ld-musl-arm.so.1 -o cmTC_c8086 C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/Scrt1.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/crti.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/clang_rt.crtbegin.o -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/ -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/arm-linux-ohos/ -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/ --build-id=sha1 --warn-shared-textrel --fatal-warnings -lunwind --no-undefined -z noexecstack --gc-sections CMakeFiles/cmTC_c8086.dir/CMakeCXXCompilerABI.cpp.o -Bstatic -lc++ -lc++abi -lunwind -Bdynamic -lm C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a -l:libunwind.a -lc C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a -l:libunwind.a C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/clang_rt.crtend.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/crtn.o + + + +Parsed CXX implicit include dir info from above output: rv=done + found start of include info + found start of implicit include info + add: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../include/libcxx-ohos/include/c++/v1] + add: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include] + add: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos] + add: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] + end of search list found + collapse include dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../include/libcxx-ohos/include/c++/v1] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/include/libcxx-ohos/include/c++/v1] + collapse include dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include] + collapse include dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos] + collapse include dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] + implicit include dirs: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/include/libcxx-ohos/include/c++/v1;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] + + +Parsed CXX implicit link information from above output: + link line regex: [^( *|.*[/\])(ld\.lld\.exe|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] + ignore line: [Change Dir: D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp] + ignore line: [] + ignore line: [Run Build Command(s):C:\Users\h30053725\AppData\Local\Huawei\SDK1026\openharmony\10\native\build-tools\cmake\bin\ninja.exe cmTC_c8086 && [1/2] Building CXX object CMakeFiles/cmTC_c8086.dir/CMakeCXXCompilerABI.cpp.o] + ignore line: [OHOS (dev) clang version 15.0.4 (llvm-project d1aa604d90b55a96aa22af9992d170fccbd41938)] + ignore line: [Target: arm-unknown-linux-ohos] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin] + ignore line: [clang++: warning: argument unused during compilation: '--gcc-toolchain=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm' [-Wunused-command-line-argument]] + ignore line: [ (in-process)] + ignore line: [ "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/clang++.exe" -cc1 -triple armv7-unknown-linux-ohos -emit-obj -mrelax-all -mnoexecstack -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCXXCompilerABI.cpp -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=1 -target-cpu generic -target-feature +soft-float -target-feature +soft-float-abi -target-feature -vfp2 -target-feature -vfp2sp -target-feature -vfp3 -target-feature -vfp3d16 -target-feature -vfp3d16sp -target-feature -vfp3sp -target-feature -fp16 -target-feature -vfp4 -target-feature -vfp4d16 -target-feature -vfp4d16sp -target-feature -vfp4sp -target-feature -fp-armv8 -target-feature -fp-armv8d16 -target-feature -fp-armv8d16sp -target-feature -fp-armv8sp -target-feature -fullfp16 -target-feature -fp64 -target-feature -d32 -target-feature -neon -target-feature -sha2 -target-feature -aes -target-feature -dotprod -target-feature -fp16fml -target-feature -bf16 -target-feature -mve -target-feature -mve.fp -target-feature -fpregs -target-abi aapcs-linux -msoft-float -mfloat-abi soft -fallow-half-arguments-and-returns -mllvm -treat-scalable-fixed-error-as-warning -debugger-tuning=gdb -v -ffunction-sections -fdata-sections -fcoverage-compilation-dir=D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp -resource-dir C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4 -D __MUSL__ -isysroot C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot -internal-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../include/libcxx-ohos/include/c++/v1 -internal-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/include -internal-externc-isystem C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include -Wformat -Werror=format-security -fdeprecated-macro -fdebug-compilation-dir=D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/CMakeTmp -ferror-limit 19 -stack-protector 2 -fno-signed-char -fgnuc-version=4.2.1 -fcxx-exceptions -fexceptions -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_c8086.dir/CMakeCXXCompilerABI.cpp.o -x c++ C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeCXXCompilerABI.cpp] + ignore line: [clang -cc1 version 15.0.4 based upon LLVM 15.0.4 default target x86_64-w64-windows-gnu] + ignore line: [ignoring nonexistent directory "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/include"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../include/libcxx-ohos/include/c++/v1] + ignore line: [ C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/include] + ignore line: [ C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include/arm-linux-ohos] + ignore line: [ C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/include] + ignore line: [End of search list.] + ignore line: [[2/2] Linking CXX executable cmTC_c8086] + ignore line: [OHOS (dev) clang version 15.0.4 (llvm-project d1aa604d90b55a96aa22af9992d170fccbd41938)] + ignore line: [Target: arm-unknown-linux-ohos] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin] + link line: [ "C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/ld.lld" --sysroot=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot -pie -EL -z now -z relro -z max-page-size=4096 --hash-style=gnu --hash-style=both --enable-new-dtags --eh-frame-hdr -m armelf_linux_eabi -dynamic-linker /lib/ld-musl-arm.so.1 -o cmTC_c8086 C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/Scrt1.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/crti.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/clang_rt.crtbegin.o -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/ -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/arm-linux-ohos/ -LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/ --build-id=sha1 --warn-shared-textrel --fatal-warnings -lunwind --no-undefined -z noexecstack --gc-sections CMakeFiles/cmTC_c8086.dir/CMakeCXXCompilerABI.cpp.o -Bstatic -lc++ -lc++abi -lunwind -Bdynamic -lm C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a -l:libunwind.a -lc C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a -l:libunwind.a C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/clang_rt.crtend.o C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/crtn.o] + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/ld.lld] ==> ignore + arg [--sysroot=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot] ==> ignore + arg [-pie] ==> ignore + arg [-EL] ==> ignore + arg [-znow] ==> ignore + arg [-zrelro] ==> ignore + arg [-zmax-page-size=4096] ==> ignore + arg [--hash-style=gnu] ==> ignore + arg [--hash-style=both] ==> ignore + arg [--enable-new-dtags] ==> ignore + arg [--eh-frame-hdr] ==> ignore + arg [-m] ==> ignore + arg [armelf_linux_eabi] ==> ignore + arg [-dynamic-linker] ==> ignore + arg [/lib/ld-musl-arm.so.1] ==> ignore + arg [-o] ==> ignore + arg [cmTC_c8086] ==> ignore + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/Scrt1.o] ==> ignore + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/crti.o] ==> ignore + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/clang_rt.crtbegin.o] ==> ignore + arg [-LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos] ==> dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos] + arg [-LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/] ==> dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/] + arg [-LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/arm-linux-ohos/] ==> dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/arm-linux-ohos/] + arg [-LC:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/] ==> dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/] + arg [--build-id=sha1] ==> ignore + arg [--warn-shared-textrel] ==> ignore + arg [--fatal-warnings] ==> ignore + arg [-lunwind] ==> lib [unwind] + arg [--no-undefined] ==> ignore + arg [-znoexecstack] ==> ignore + arg [--gc-sections] ==> ignore + arg [CMakeFiles/cmTC_c8086.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore + arg [-Bstatic] ==> ignore + arg [-lc++] ==> lib [c++] + arg [-lc++abi] ==> lib [c++abi] + arg [-lunwind] ==> lib [unwind] + arg [-Bdynamic] ==> ignore + arg [-lm] ==> lib [m] + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a] ==> lib [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a] + arg [-l:libunwind.a] ==> lib [-l:libunwind.a] + arg [-lc] ==> lib [c] + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a] ==> lib [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a] + arg [-l:libunwind.a] ==> lib [-l:libunwind.a] + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/clang_rt.crtend.o] ==> ignore + arg [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/crtn.o] ==> ignore + remove lib [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a] + remove lib [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos/libclang_rt.builtins.a] + collapse library dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos] + collapse library dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib] + collapse library dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/bin/../lib/arm-linux-ohos/] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/arm-linux-ohos] + collapse library dir [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos/] ==> [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos] + implicit libs: [unwind;c++;c++abi;unwind;m;-l:libunwind.a;c;-l:libunwind.a] + implicit dirs: [C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/clang/15.0.4/lib/arm-linux-ohos;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm/lib/arm-linux-ohos;C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot/usr/lib/arm-linux-ohos] + implicit fwks: [] + + diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/TargetDirectories.txt b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/TargetDirectories.txt new file mode 100644 index 0000000000000000000000000000000000000000..647f400c73e5e6f6d1ea60044268f533887c4979 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/TargetDirectories.txt @@ -0,0 +1,3 @@ +D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/infoutil.dir +D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/edit_cache.dir +D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/rebuild_cache.dir diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/cmake.check_cache b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/cmake.check_cache new file mode 100644 index 0000000000000000000000000000000000000000..3dccd731726d7faa8b29d8d7dba3b981a53ca497 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/cmake.check_cache @@ -0,0 +1 @@ +# This file is generated by cmake for dependency checking of the CMakeCache.txt file diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/infoutil.dir/napi_info_util.cpp.o b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/infoutil.dir/napi_info_util.cpp.o new file mode 100644 index 0000000000000000000000000000000000000000..e2f0bba3fc48e83995bdb862ec73b18b1ad73638 Binary files /dev/null and b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/infoutil.dir/napi_info_util.cpp.o differ diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/infoutil.dir/native_module.cpp.o b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/infoutil.dir/native_module.cpp.o new file mode 100644 index 0000000000000000000000000000000000000000..a459b04667fbf9e40702adc521b6ea553ff49df5 Binary files /dev/null and b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/CMakeFiles/infoutil.dir/native_module.cpp.o differ diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/build.ninja b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/build.ninja new file mode 100644 index 0000000000000000000000000000000000000000..dce88b62875b8ae3704650c3b407f87f9bcd406f --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/build.ninja @@ -0,0 +1,155 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Ninja" Generator, CMake Version 3.16 + +# This file contains all the build statements describing the +# compilation DAG. + +# ============================================================================= +# Write statements declared in CMakeLists.txt: +# +# Which is the root file. +# ============================================================================= + +# ============================================================================= +# Project: XComponent +# Configuration: Release +# ============================================================================= + +############################################# +# Minimal version of Ninja required by this file + +ninja_required_version = 1.5 + +# ============================================================================= +# Include auxiliary files. + + +############################################# +# Include rules file. + +include rules.ninja + +# ============================================================================= +# Object build statements for SHARED_LIBRARY target infoutil + + +############################################# +# Order-only phony target for infoutil + +build cmake_object_order_depends_target_infoutil: phony || CMakeFiles/infoutil.dir + +build CMakeFiles/infoutil.dir/native_module.cpp.o: CXX_COMPILER__infoutil D$:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/src/main/cpp/native_module.cpp || cmake_object_order_depends_target_infoutil + DEFINES = -Dinfoutil_EXPORTS + DEP_FILE = CMakeFiles\infoutil.dir\native_module.cpp.o.d + FLAGS = -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -fno-addrsig -Wa,--noexecstack -Wformat -Werror=format-security -march=armv7a -D__MUSL__ -O2 -DNDEBUG -fPIC + INCLUDES = -IC:/Users/h30053725/AppData/Local/Huawei/SDK1026/hmscore/4.0.0/native/sysroot/usr/include -ID:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/src/main/cpp -ID:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/src/main/cpp/include + OBJECT_DIR = CMakeFiles\infoutil.dir + OBJECT_FILE_DIR = CMakeFiles\infoutil.dir + TARGET_COMPILE_PDB = CMakeFiles\infoutil.dir\ + TARGET_PDB = D:\Program\OpenHarmony\HarmonyOS_Codelab1027git\HarmonyOS_Codelab\Samples\FormGame\entry\build\default\intermediates\cmake\default\obj\armeabi-v7a\libinfoutil.pdb + +build CMakeFiles/infoutil.dir/napi_info_util.cpp.o: CXX_COMPILER__infoutil D$:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/src/main/cpp/napi_info_util.cpp || cmake_object_order_depends_target_infoutil + DEFINES = -Dinfoutil_EXPORTS + DEP_FILE = CMakeFiles\infoutil.dir\napi_info_util.cpp.o.d + FLAGS = -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -fno-addrsig -Wa,--noexecstack -Wformat -Werror=format-security -march=armv7a -D__MUSL__ -O2 -DNDEBUG -fPIC + INCLUDES = -IC:/Users/h30053725/AppData/Local/Huawei/SDK1026/hmscore/4.0.0/native/sysroot/usr/include -ID:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/src/main/cpp -ID:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/src/main/cpp/include + OBJECT_DIR = CMakeFiles\infoutil.dir + OBJECT_FILE_DIR = CMakeFiles\infoutil.dir + TARGET_COMPILE_PDB = CMakeFiles\infoutil.dir\ + TARGET_PDB = D:\Program\OpenHarmony\HarmonyOS_Codelab1027git\HarmonyOS_Codelab\Samples\FormGame\entry\build\default\intermediates\cmake\default\obj\armeabi-v7a\libinfoutil.pdb + + +# ============================================================================= +# Link build statements for SHARED_LIBRARY target infoutil + + +############################################# +# Link the shared library D:\Program\OpenHarmony\HarmonyOS_Codelab1027git\HarmonyOS_Codelab\Samples\FormGame\entry\build\default\intermediates\cmake\default\obj\armeabi-v7a\libinfoutil.so + +build D$:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/build/default/intermediates/cmake/default/obj/armeabi-v7a/libinfoutil.so: CXX_SHARED_LIBRARY_LINKER__infoutil CMakeFiles/infoutil.dir/native_module.cpp.o CMakeFiles/infoutil.dir/napi_info_util.cpp.o + LANGUAGE_COMPILE_FLAGS = -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -fno-addrsig -Wa,--noexecstack -Wformat -Werror=format-security -march=armv7a -D__MUSL__ -O2 -DNDEBUG + LINK_FLAGS = --rtlib=compiler-rt -fuse-ld=lld -static-libstdc++ -Wl,--build-id=sha1 -Wl,--warn-shared-textrel -Wl,--fatal-warnings -lunwind -Wl,--no-undefined -Qunused-arguments -Wl,-z,noexecstack + LINK_LIBRARIES = -lace_napi.z -lhilog_ndk.z -lm + OBJECT_DIR = CMakeFiles\infoutil.dir + POST_BUILD = cd . + PRE_LINK = cd . + SONAME = libinfoutil.so + SONAME_FLAG = -Wl,-soname, + TARGET_COMPILE_PDB = CMakeFiles\infoutil.dir\ + TARGET_FILE = D:\Program\OpenHarmony\HarmonyOS_Codelab1027git\HarmonyOS_Codelab\Samples\FormGame\entry\build\default\intermediates\cmake\default\obj\armeabi-v7a\libinfoutil.so + TARGET_PDB = D:\Program\OpenHarmony\HarmonyOS_Codelab1027git\HarmonyOS_Codelab\Samples\FormGame\entry\build\default\intermediates\cmake\default\obj\armeabi-v7a\libinfoutil.pdb + + +############################################# +# Utility command for edit_cache + +build CMakeFiles/edit_cache.util: CUSTOM_COMMAND + COMMAND = cmd.exe /C "cd /D D:\Program\OpenHarmony\HarmonyOS_Codelab1027git\HarmonyOS_Codelab\Samples\FormGame\entry\.cxx\default\default\armeabi-v7a && C:\Users\h30053725\AppData\Local\Huawei\SDK1026\openharmony\10\native\build-tools\cmake\bin\cmake-gui.exe -SD:\Program\OpenHarmony\HarmonyOS_Codelab1027git\HarmonyOS_Codelab\Samples\FormGame\entry\src\main\cpp -BD:\Program\OpenHarmony\HarmonyOS_Codelab1027git\HarmonyOS_Codelab\Samples\FormGame\entry\.cxx\default\default\armeabi-v7a" + DESC = Running CMake cache editor... + pool = console + restat = 1 + +build edit_cache: phony CMakeFiles/edit_cache.util + + +############################################# +# Utility command for rebuild_cache + +build CMakeFiles/rebuild_cache.util: CUSTOM_COMMAND + COMMAND = cmd.exe /C "cd /D D:\Program\OpenHarmony\HarmonyOS_Codelab1027git\HarmonyOS_Codelab\Samples\FormGame\entry\.cxx\default\default\armeabi-v7a && C:\Users\h30053725\AppData\Local\Huawei\SDK1026\openharmony\10\native\build-tools\cmake\bin\cmake.exe -SD:\Program\OpenHarmony\HarmonyOS_Codelab1027git\HarmonyOS_Codelab\Samples\FormGame\entry\src\main\cpp -BD:\Program\OpenHarmony\HarmonyOS_Codelab1027git\HarmonyOS_Codelab\Samples\FormGame\entry\.cxx\default\default\armeabi-v7a" + DESC = Running CMake to regenerate build system... + pool = console + restat = 1 + +build rebuild_cache: phony CMakeFiles/rebuild_cache.util + +# ============================================================================= +# Target aliases. + +build infoutil: phony D$:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/build/default/intermediates/cmake/default/obj/armeabi-v7a/libinfoutil.so + +build libinfoutil.so: phony D$:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/build/default/intermediates/cmake/default/obj/armeabi-v7a/libinfoutil.so + +# ============================================================================= +# Folder targets. + +# ============================================================================= + +############################################# +# Folder: D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/armeabi-v7a + +build all: phony D$:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/build/default/intermediates/cmake/default/obj/armeabi-v7a/libinfoutil.so + +# ============================================================================= +# Built-in targets + + +############################################# +# Make the all target the default. + +default all + +############################################# +# Re-run CMake if any of its inputs changed. + +build build.ninja: RERUN_CMAKE | C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/hmscore/4.0.0/native/build/cmake/hmos.toolchain.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeCCompiler.cmake.in C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeCCompilerABI.c C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeCInformation.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeCXXCompiler.cmake.in C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeCXXCompilerABI.cpp C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeCXXInformation.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeCommonLanguageInclude.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeCompilerIdDetection.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeDetermineCCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeDetermineCXXCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeDetermineCompileFeatures.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeDetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeDetermineCompilerABI.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeDetermineCompilerId.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeDetermineSystem.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeFindBinUtils.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeGenericSystem.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeInitializeConfigs.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeLanguageInformation.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeParseImplicitIncludeInfo.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeParseImplicitLinkInfo.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeSystem.cmake.in C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeSystemSpecificInformation.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeSystemSpecificInitialize.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeTestCCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeTestCXXCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeTestCompilerCommon.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/ADSP-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/ARMCC-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/ARMClang-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/AppleClang-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/Borland-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/Bruce-C-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/CMakeCommonCompilerMacros.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/Clang-C.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/Clang-CXX.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/Clang-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/Clang-DetermineCompilerInternal.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/Clang-FindBinUtils.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/Clang.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/Comeau-CXX-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/Compaq-C-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/Cray-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/Embarcadero-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/Fujitsu-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/GHS-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/GNU-C-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/GNU.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/HP-C-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/HP-CXX-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/IAR-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/Intel-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/MSVC-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/NVIDIA-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/PGI-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/PathScale-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/SCO-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/SDCC-C-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/SunPro-C-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/TI-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/TinyCC-C-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/VisualAge-C-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/Watcom-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/XL-C-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/XL-CXX-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/XLClang-C-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/zOS-C-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Internal/CMakeCheckCompilerFlag.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Internal/FeatureTesting.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Platform/Linux.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Platform/OHOS.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Platform/UnixPaths.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build/cmake/ohos.toolchain.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build/cmake/sdk_native_platforms.cmake CMakeCache.txt CMakeFiles/3.16.5/CMakeCCompiler.cmake CMakeFiles/3.16.5/CMakeCXXCompiler.cmake CMakeFiles/3.16.5/CMakeSystem.cmake D$:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/src/main/cpp/CMakeLists.txt + pool = console + + +############################################# +# A missing CMake input file is not an error. + +build C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/hmscore/4.0.0/native/build/cmake/hmos.toolchain.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeCCompiler.cmake.in C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeCCompilerABI.c C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeCInformation.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeCXXCompiler.cmake.in C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeCXXCompilerABI.cpp C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeCXXInformation.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeCommonLanguageInclude.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeCompilerIdDetection.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeDetermineCCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeDetermineCXXCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeDetermineCompileFeatures.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeDetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeDetermineCompilerABI.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeDetermineCompilerId.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeDetermineSystem.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeFindBinUtils.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeGenericSystem.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeInitializeConfigs.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeLanguageInformation.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeParseImplicitIncludeInfo.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeParseImplicitLinkInfo.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeSystem.cmake.in C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeSystemSpecificInformation.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeSystemSpecificInitialize.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeTestCCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeTestCXXCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/CMakeTestCompilerCommon.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/ADSP-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/ARMCC-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/ARMClang-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/AppleClang-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/Borland-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/Bruce-C-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/CMakeCommonCompilerMacros.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/Clang-C.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/Clang-CXX.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/Clang-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/Clang-DetermineCompilerInternal.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/Clang-FindBinUtils.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/Clang.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/Comeau-CXX-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/Compaq-C-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/Cray-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/Embarcadero-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/Fujitsu-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/GHS-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/GNU-C-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/GNU.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/HP-C-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/HP-CXX-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/IAR-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/Intel-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/MSVC-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/NVIDIA-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/PGI-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/PathScale-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/SCO-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/SDCC-C-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/SunPro-C-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/TI-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/TinyCC-C-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/VisualAge-C-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/Watcom-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/XL-C-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/XL-CXX-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/XLClang-C-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/zOS-C-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Internal/CMakeCheckCompilerFlag.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Internal/FeatureTesting.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Platform/Linux.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Platform/OHOS.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build-tools/cmake/share/cmake-3.16/Modules/Platform/UnixPaths.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build/cmake/ohos.toolchain.cmake C$:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/build/cmake/sdk_native_platforms.cmake CMakeCache.txt CMakeFiles/3.16.5/CMakeCCompiler.cmake CMakeFiles/3.16.5/CMakeCXXCompiler.cmake CMakeFiles/3.16.5/CMakeSystem.cmake D$:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/src/main/cpp/CMakeLists.txt: phony + + +############################################# +# Clean all the built files. + +build clean: CLEAN + + +############################################# +# Print all primary targets available. + +build help: HELP + diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/cmake_install.cmake b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/cmake_install.cmake new file mode 100644 index 0000000000000000000000000000000000000000..4761c88c6c6e8721484a860e97625686958e5d88 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/cmake_install.cmake @@ -0,0 +1,49 @@ +# Install script for directory: D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/src/main/cpp + +# Set the install prefix +if(NOT DEFINED CMAKE_INSTALL_PREFIX) + set(CMAKE_INSTALL_PREFIX "C:/Program Files (x86)/XComponent") +endif() +string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") + +# Set the install configuration name. +if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + if(BUILD_TYPE) + string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" + CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") + else() + set(CMAKE_INSTALL_CONFIG_NAME "Release") + endif() + message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") +endif() + +# Set the component getting installed. +if(NOT CMAKE_INSTALL_COMPONENT) + if(COMPONENT) + message(STATUS "Install component: \"${COMPONENT}\"") + set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") + else() + set(CMAKE_INSTALL_COMPONENT) + endif() +endif() + +# Install shared libraries without execute permission? +if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) + set(CMAKE_INSTALL_SO_NO_EXE "0") +endif() + +# Is this installation the result of a crosscompile? +if(NOT DEFINED CMAKE_CROSSCOMPILING) + set(CMAKE_CROSSCOMPILING "TRUE") +endif() + +if(CMAKE_INSTALL_COMPONENT) + set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt") +else() + set(CMAKE_INSTALL_MANIFEST "install_manifest.txt") +endif() + +string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT + "${CMAKE_INSTALL_MANIFEST_FILES}") +file(WRITE "D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/armeabi-v7a/${CMAKE_INSTALL_MANIFEST}" + "${CMAKE_INSTALL_MANIFEST_CONTENT}") diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/compile_commands.json b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/compile_commands.json new file mode 100644 index 0000000000000000000000000000000000000000..55f79676c70dbd484f414124b0a9baf764ff9135 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/compile_commands.json @@ -0,0 +1,13 @@ +[ +{ + "directory": "D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/armeabi-v7a", + "command": "C:\\Users\\h30053725\\AppData\\Local\\Huawei\\SDK1026\\openharmony\\10\\native\\llvm\\bin\\clang++.exe --target=arm-linux-ohos --gcc-toolchain=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm --sysroot=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot -Dinfoutil_EXPORTS -IC:/Users/h30053725/AppData/Local/Huawei/SDK1026/hmscore/4.0.0/native/sysroot/usr/include -ID:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/src/main/cpp -ID:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/src/main/cpp/include -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -fno-addrsig -Wa,--noexecstack -Wformat -Werror=format-security -march=armv7a -D__MUSL__ -O2 -DNDEBUG -fPIC -o CMakeFiles\\infoutil.dir\\native_module.cpp.o -c D:\\Program\\OpenHarmony\\HarmonyOS_Codelab1027git\\HarmonyOS_Codelab\\Samples\\FormGame\\entry\\src\\main\\cpp\\native_module.cpp", + "file": "D:\\Program\\OpenHarmony\\HarmonyOS_Codelab1027git\\HarmonyOS_Codelab\\Samples\\FormGame\\entry\\src\\main\\cpp\\native_module.cpp" +}, + +{ + "directory": "D:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/.cxx/default/default/armeabi-v7a", + "command": "C:\\Users\\h30053725\\AppData\\Local\\Huawei\\SDK1026\\openharmony\\10\\native\\llvm\\bin\\clang++.exe --target=arm-linux-ohos --gcc-toolchain=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm --sysroot=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot -Dinfoutil_EXPORTS -IC:/Users/h30053725/AppData/Local/Huawei/SDK1026/hmscore/4.0.0/native/sysroot/usr/include -ID:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/src/main/cpp -ID:/Program/OpenHarmony/HarmonyOS_Codelab1027git/HarmonyOS_Codelab/Samples/FormGame/entry/src/main/cpp/include -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -fno-addrsig -Wa,--noexecstack -Wformat -Werror=format-security -march=armv7a -D__MUSL__ -O2 -DNDEBUG -fPIC -o CMakeFiles\\infoutil.dir\\napi_info_util.cpp.o -c D:\\Program\\OpenHarmony\\HarmonyOS_Codelab1027git\\HarmonyOS_Codelab\\Samples\\FormGame\\entry\\src\\main\\cpp\\napi_info_util.cpp", + "file": "D:\\Program\\OpenHarmony\\HarmonyOS_Codelab1027git\\HarmonyOS_Codelab\\Samples\\FormGame\\entry\\src\\main\\cpp\\napi_info_util.cpp" +} +] \ No newline at end of file diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/configure_fingerprint b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/configure_fingerprint new file mode 100644 index 0000000000000000000000000000000000000000..09d99610571c5f23ef5c65a31316a8facccd7bd3 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/configure_fingerprint @@ -0,0 +1 @@ +797ba7c20729be33f873ef40db31806c3c336d8b29ee7562bb4af50516fb68c8 \ No newline at end of file diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/rules.ninja b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/rules.ninja new file mode 100644 index 0000000000000000000000000000000000000000..054d625cd0360c5238d4682524677311c8a496cd --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/.cxx/default/default/armeabi-v7a/rules.ninja @@ -0,0 +1,64 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Ninja" Generator, CMake Version 3.16 + +# This file contains all the rules used to get the outputs files +# built from the input files. +# It is included in the main 'build.ninja'. + +# ============================================================================= +# Project: XComponent +# Configuration: Release +# ============================================================================= +# ============================================================================= + +############################################# +# Rule for compiling CXX files. + +rule CXX_COMPILER__infoutil + depfile = $DEP_FILE + deps = gcc + command = C:\Users\h30053725\AppData\Local\Huawei\SDK1026\openharmony\10\native\llvm\bin\clang++.exe --target=arm-linux-ohos --gcc-toolchain=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm --sysroot=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot $DEFINES $INCLUDES $FLAGS -MD -MT $out -MF $DEP_FILE -o $out -c $in + description = Building CXX object $out + + +############################################# +# Rule for linking CXX shared library. + +rule CXX_SHARED_LIBRARY_LINKER__infoutil + command = cmd.exe /C "$PRE_LINK && C:\Users\h30053725\AppData\Local\Huawei\SDK1026\openharmony\10\native\llvm\bin\clang++.exe --target=arm-linux-ohos --gcc-toolchain=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/llvm --sysroot=C:/Users/h30053725/AppData/Local/Huawei/SDK1026/openharmony/10/native/sysroot -fPIC $LANGUAGE_COMPILE_FLAGS $ARCH_FLAGS $LINK_FLAGS -shared $SONAME_FLAG$SONAME -o $TARGET_FILE $in $LINK_PATH $LINK_LIBRARIES && $POST_BUILD" + description = Linking CXX shared library $TARGET_FILE + restat = $RESTAT + + +############################################# +# Rule for running custom commands. + +rule CUSTOM_COMMAND + command = $COMMAND + description = $DESC + + +############################################# +# Rule for re-running cmake. + +rule RERUN_CMAKE + command = C:\Users\h30053725\AppData\Local\Huawei\SDK1026\openharmony\10\native\build-tools\cmake\bin\cmake.exe -SD:\Program\OpenHarmony\HarmonyOS_Codelab1027git\HarmonyOS_Codelab\Samples\FormGame\entry\src\main\cpp -BD:\Program\OpenHarmony\HarmonyOS_Codelab1027git\HarmonyOS_Codelab\Samples\FormGame\entry\.cxx\default\default\armeabi-v7a + description = Re-running CMake... + generator = 1 + + +############################################# +# Rule for cleaning all built files. + +rule CLEAN + command = C:\Users\h30053725\AppData\Local\Huawei\SDK1026\openharmony\10\native\build-tools\cmake\bin\ninja.exe -t clean + description = Cleaning all built files... + + +############################################# +# Rule for printing all primary targets available. + +rule HELP + command = C:\Users\h30053725\AppData\Local\Huawei\SDK1026\openharmony\10\native\build-tools\cmake\bin\ninja.exe -t targets + description = All primary targets available: + diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/build-profile.json5 b/HarmonyOS_NEXT/Widget/FormGame/entry/build-profile.json5 new file mode 100644 index 0000000000000000000000000000000000000000..7712801fb82147ad1d46f6750f9f14a20389f8c9 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/build-profile.json5 @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2022-2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "apiType": 'stageMode', + "showInServiceCenter": true, + "buildOption": { + "compileMode": "esmodule", + "externalNativeOptions": { + "path": "./src/main/cpp/CMakeLists.txt", + "arguments": "-v -DOHOS_STL=c++_static", + "abiFilters": [ + "armeabi-v7a", + "arm64-v8a" + ], + "cppFlags": "", + } + }, + "targets": [ + { + "name": "default", + }, + { + "name": "ohosTest", + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/hvigorfile.js b/HarmonyOS_NEXT/Widget/FormGame/entry/hvigorfile.js new file mode 100644 index 0000000000000000000000000000000000000000..d7720ee6a7aad5c617d1fd2f6fc8c87067bfa32c --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/hvigorfile.js @@ -0,0 +1,2 @@ +// Script for compiling build behavior. It is built in the build plug-in and cannot be modified currently. +module.exports = require('@ohos/hvigor-ohos-plugin').hapTasks diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/oh-package.json5 b/HarmonyOS_NEXT/Widget/FormGame/entry/oh-package.json5 new file mode 100644 index 0000000000000000000000000000000000000000..48c69be1583354b4ffd32e09ebe0966aa8669071 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/oh-package.json5 @@ -0,0 +1,7 @@ +{ + "devDependencies": {}, + "name": "entry", + "description": "", + "version": "1.0.0", + "dependencies": {} +} diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/src/main/cpp/CMakeLists.txt b/HarmonyOS_NEXT/Widget/FormGame/entry/src/main/cpp/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..a652f5d8df6f5ba08c51dae5e4b03ca971789b2f --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/src/main/cpp/CMakeLists.txt @@ -0,0 +1,24 @@ +# Copyright (c) 2022 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# the minimum version of CMake. +cmake_minimum_required(VERSION 3.4.1) +project(XComponent) + +set(NATIVERENDER_ROOT_PATH ${CMAKE_CURRENT_SOURCE_DIR}) + +include_directories(${NATIVERENDER_ROOT_PATH} + ${NATIVERENDER_ROOT_PATH}/include + ) +add_library(infoutil SHARED native_module.cpp napi_info_util.cpp) +target_link_libraries(infoutil PUBLIC libace_napi.z.so libhilog_ndk.z.so) diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/src/main/cpp/napi_info_util.cpp b/HarmonyOS_NEXT/Widget/FormGame/entry/src/main/cpp/napi_info_util.cpp new file mode 100644 index 0000000000000000000000000000000000000000..05c299baf255da65774e60e6f7a7c09d85d582f7 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/src/main/cpp/napi_info_util.cpp @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "napi_info_util.h" + +#include +#include + +#include "hilog/log.h" +#include "napi/native_api.h" + +#define LOG_TAG "InfoUtil" + +namespace OHOS { +napi_value NAPI_GetRandomNumber(napi_env env, napi_callback_info info) +{ + napi_value ret = nullptr; + OH_LOG_INFO(LOG_APP, "%{public}s called", __func__); + size_t requireArgc = 2; + size_t argc = 2; + napi_value args[2] = { nullptr }; + napi_get_cb_info(env, info, &argc, args, nullptr, nullptr); + napi_valuetype valueType0; + napi_typeof(env, args[0], &valueType0); + napi_valuetype valueType1; + napi_typeof(env, args[1], &valueType1); + if (valueType0 != napi_number || valueType1 != napi_number) { + OH_LOG_ERROR(LOG_APP, "Error value type for args"); + return ret; + } + int32_t startNum = 0; + napi_get_value_int32(env, args[0], &startNum); + int32_t endNum = 0; + napi_get_value_int32(env, args[1], &endNum); + auto current = time(nullptr); + if (current < 0) { + current = 0; + } + srand(current); + int32_t randSeed = rand(); + int32_t randomNumber = startNum + randSeed % (endNum - startNum + 1); + napi_create_int32(env, randomNumber, &ret); + OH_LOG_INFO(LOG_APP, "[%{public}d %{public}d] -> %{public}d %{public}d", + startNum, endNum, randomNumber, randSeed); + return ret; +} +} // namespace OHOS \ No newline at end of file diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/src/main/cpp/napi_info_util.h b/HarmonyOS_NEXT/Widget/FormGame/entry/src/main/cpp/napi_info_util.h new file mode 100644 index 0000000000000000000000000000000000000000..ee76150906533866b32e6999117932363fda90dd --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/src/main/cpp/napi_info_util.h @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2021 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef NAPI_INFO_UTIL_H_ +#define NAPI_INFO_UTIL_H_ + +#include "napi/native_api.h" + +namespace OHOS { +napi_value NAPI_GetRandomNumber(napi_env env, napi_callback_info info); +} // namespace OHOS + +#endif /* NAPI_INFO_UTIL_H_ */ \ No newline at end of file diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/src/main/cpp/native_module.cpp b/HarmonyOS_NEXT/Widget/FormGame/entry/src/main/cpp/native_module.cpp new file mode 100644 index 0000000000000000000000000000000000000000..157a0523b90bdb727891fdb2ca771051fecbdc3a --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/src/main/cpp/native_module.cpp @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2021 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "hilog/log.h" +#include "napi/native_api.h" +#include "napi_info_util.h" + +EXTERN_C_START + +/** + * @brief For N-API modules registration + * + * @param[in] env The environment that the Node-API call is invoked under + * @param[in] exports An empty object via the exports parameter as a convenience + * + * @return The return value from Init is treated as the exports object for the module + */ +static napi_value Init(napi_env env, napi_value exports) +{ + OH_LOG_INFO(LOG_APP, "napi_moudule Init start..."); + napi_property_descriptor properties[] = { + { "getRandomNumber", nullptr, OHOS::NAPI_GetRandomNumber, nullptr, nullptr, nullptr, napi_default, nullptr } + }; + napi_define_properties(env, exports, sizeof(properties) / sizeof(properties[0]), properties); + OH_LOG_INFO(LOG_APP, "napi_moudule Init end..."); + return exports; +} + +EXTERN_C_END + +// Define a Node-API module. +static napi_module _module = { + .nm_version = 1, + .nm_flags = 0, + .nm_filename = nullptr, + .nm_register_func = Init, + .nm_modname = "infoutil", + .nm_priv = ((void *)0), + .reserved = {0} +}; + +// Registers a Node-API module. +extern "C" __attribute__((constructor)) void RegisterModule(void) +{ + napi_module_register(&_module); +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/src/main/cpp/types/libinfoutil/index.d.ts b/HarmonyOS_NEXT/Widget/FormGame/entry/src/main/cpp/types/libinfoutil/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..32a0ecd0f1f453f789d97fb02957191fd1fd0566 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/src/main/cpp/types/libinfoutil/index.d.ts @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2020 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +declare namespace infoUtil { + function getRandomNumber(a: number, b: number): number; +} +export default infoUtil; \ No newline at end of file diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/src/main/cpp/types/libinfoutil/oh-package.json5 b/HarmonyOS_NEXT/Widget/FormGame/entry/src/main/cpp/types/libinfoutil/oh-package.json5 new file mode 100644 index 0000000000000000000000000000000000000000..0183c725f37dbefc451b512f01d3882d52039296 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/src/main/cpp/types/libinfoutil/oh-package.json5 @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +{ + "types": "./index.d.ts", + "name": "libinfoutil.so", + "description": "", + "version": "" +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/src/main/ets/Application/AbilityStage.ts b/HarmonyOS_NEXT/Widget/FormGame/entry/src/main/ets/Application/AbilityStage.ts new file mode 100644 index 0000000000000000000000000000000000000000..da8804718ed24aebb6509a444d963f264a8fe7a2 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/src/main/ets/Application/AbilityStage.ts @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2022-2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import Logger from '../Utils/Logger'; +import AbilityStage from "@ohos.app.ability.AbilityStage"; + +export default class MyAbilityStage extends AbilityStage { + onCreate() { + Logger.info("[Demo] MyAbilityStage onCreate") + } +} diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/src/main/ets/FormAbility/FormAbility.ts b/HarmonyOS_NEXT/Widget/FormGame/entry/src/main/ets/FormAbility/FormAbility.ts new file mode 100644 index 0000000000000000000000000000000000000000..0db39d06a1967b312c7f57febd98b4b8bd7e765f --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/src/main/ets/FormAbility/FormAbility.ts @@ -0,0 +1,247 @@ +/* + * Copyright (c) 2022-2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import Logger from '../Utils/Logger'; +import FormExtensionAbility from '@ohos.app.form.FormExtensionAbility'; +import formBindingData from '@ohos.app.form.formBindingData'; +import formInfo from '@ohos.app.form.formInfo'; +import formProvider from '@ohos.app.form.formProvider'; +import dataStorage from '@ohos.data.storage'; +import infoUtil from "libinfoutil.so"; + +// source max length +const SOURCE_MAX_LENGTH: number = 3; +// target max length +const TARGET_MAX_LENGTH: number = 7; +// single word length +const WORD_LENGTH: number = 4; + +export default class FormAbility extends FormExtensionAbility { + private storeDB: dataStorage.Storage = undefined; + private allWordArray: Array = [ + "与时俱进", "与虎谋皮", "天下兴亡", "天天向上", "一心一意", + "三心二意", "无法无天", "狐假虎威", "前程似锦", "姹紫嫣红", + "魑魅魍魉", "锦瑟华年", "相濡以沫", "朝思暮想", "山清水秀", + "前所未有", "新陈代谢", "不可思议", "与众不同", "洞若观火", + "平易近人", "丰富多彩", "名副其实", "迫不及待", "可想而知", + "意想不到", "毫不犹豫", "拭目以待", "毋庸置疑", "如火如荼", + "小心翼翼", "坚定不移", "想方设法", "当之无愧", "乱七八糟", + "顾名思义", "大街小巷", "心甘情愿", "因地制宜", "轻而易举" + ]; + private backupWordStr: string; + private sourceWordStr: string; + private targetWordStr: string; + + onAddForm(want) { + Logger.info('FormAbility onCreate init storeDB: ' + this.context.filesDir); + // Init database for store word info. + this.storeDB = dataStorage.getStorageSync(this.context.filesDir + 'myStore'); + this.storeDB.putSync('sourceWord', this.allWordArray[0]); + this.storeDB.putSync('targetWord', ' '); + Logger.info('FormAbility onCreate init storeDB finish.'); + let begin = infoUtil.getRandomNumber(0, this.allWordArray.length); + this.sourceWordStr = this.storeDB.getSync('sourceWord', this.allWordArray[begin]).toString(); + this.targetWordStr = this.storeDB.getSync('targetWord', ' ').toString(); + this.backupWordStr = this.sourceWordStr; + this.disorderSourceWord(); + // Called to return a FormBindingData object. + return this.getCurrentFormData(); + } + + onCastToNormalForm(formId) { + // Called when the form provider is notified that a temporary form is successfully + // converted to a normal form. + } + + onUpdateForm(formId) { + // Called to notify the form provider to update a specified form. + } + + onChangeFormVisibility(newStatus) { + // Called when the form provider receives form events from the system. + } + + updateWordStr(index) { + if (index === NaN || index < 0 || index > TARGET_MAX_LENGTH) { + Logger.info('FormAbility updateWordStr failed for invalid eventIndex:' + index); + return; + } + const updateString = (str, index, char) => { + const strArray = str.split(''); + strArray[index] = char; + return strArray.join(''); + } + const fillSpace = (str, char) => { + const strArray = str.split(''); + for (let i = 0; i < strArray.length; i++) { + if (strArray[i] === ' ') { + strArray[i] = char; + break; + } + } + return strArray.join(''); + } + if (index <= SOURCE_MAX_LENGTH) { // Select the source word + let selectChar = this.sourceWordStr.charAt(index); + this.sourceWordStr = updateString(this.sourceWordStr, index, ' '); + this.targetWordStr = fillSpace(this.targetWordStr, selectChar); + } else { // Select the target word + let selectChar = this.targetWordStr.charAt(index - WORD_LENGTH); + this.sourceWordStr = fillSpace(this.sourceWordStr, selectChar); + this.targetWordStr = updateString(this.targetWordStr, index - WORD_LENGTH, ' '); + } + this.flushToStoreDB(); + } + + flushToStoreDB() { + this.storeDB.putSync('sourceWord', this.sourceWordStr); + this.storeDB.putSync('targetWord', this.targetWordStr); + this.storeDB.flushSync(); + } + + updateNextWord(formId) { + let next = infoUtil.getRandomNumber(0, this.allWordArray.length); + this.sourceWordStr = this.allWordArray[next]; + this.backupWordStr = this.sourceWordStr; + this.targetWordStr = ' '; + this.disorderSourceWord(); + this.updateFormDisplay(formId); + this.flushToStoreDB(); + } + + resetCurrentWord(formId) { + this.sourceWordStr = this.backupWordStr; + this.targetWordStr = ' '; + this.disorderSourceWord(); + this.updateFormDisplay(formId); + this.flushToStoreDB(); + } + + disorderSourceWord() { + const strArray = this.sourceWordStr.split(''); + if (strArray.length !== WORD_LENGTH) { + Logger.error('FormAbility invalid sourceWordStr len:' + strArray.length); + return; + } + let indexArray = [0, 1, 2, 3]; + let len = indexArray.length; + let randomIndex; + let temp; + while (len) { + randomIndex = Math.floor(Math.random() * (len--)); + temp = indexArray[randomIndex]; + indexArray[randomIndex] = indexArray[len]; + indexArray[len] = temp; + } + let randomArray = [ + strArray[indexArray[0]], + strArray[indexArray[1]], + strArray[indexArray[2]], + strArray[indexArray[3]] + ]; + Logger.info('FormAbility indexArray:' + indexArray); + this.sourceWordStr = randomArray.join(''); + } + + checkCurrentStatus(formId) { + const strArray = this.targetWordStr.split(''); + for (let i = 0; i < strArray.length; i++) { + if (strArray[i] === ' ') { + return; + } + } + for (let i = 0; i < this.allWordArray.length; i++) { + if (this.allWordArray[i] === this.targetWordStr) { + Logger.info('FormAbility correct word and updateNextWord.'); + this.updateNextWord(formId); + return; + } + } + Logger.info('FormAbility wrong word and resetCurrentWord.'); + this.resetCurrentWord(formId); + } + + getCurrentFormData() { + let formData = { + "source_1": this.sourceWordStr.charAt(0), + "source_2": this.sourceWordStr.charAt(1), + "source_3": this.sourceWordStr.charAt(2), + "source_4": this.sourceWordStr.charAt(3), + "target_1": this.targetWordStr.charAt(0), + "target_2": this.targetWordStr.charAt(1), + "target_3": this.targetWordStr.charAt(2), + "target_4": this.targetWordStr.charAt(3) + }; + Logger.info('FormAbility data:' + JSON.stringify(formData)); + return formBindingData.createFormBindingData(formData); + } + + updateFormDisplay(formId) { + formProvider.updateForm(formId, this.getCurrentFormData()).then((data) => { + Logger.info('FormAbility updateForm success.' + JSON.stringify(data)); + }).catch((error) => { + Logger.error('FormAbility updateForm failed: ' + JSON.stringify(error)); + }) + } + + onFormEvent(formId, message) { + // Called when a specified message event defined by the form provider is triggered. + Logger.info('FormAbility onEvent. id:' + formId + " msg:" + message); + // this.updateAllInfo(formId); + if (this.storeDB === undefined) { + this.storeDB = dataStorage.getStorageSync(this.context.filesDir + 'myStore'); + } + this.sourceWordStr = this.storeDB.getSync('sourceWord', this.allWordArray[0]).toString(); + this.targetWordStr = this.storeDB.getSync('targetWord', ' ').toString(); + Logger.info('FormAbility sourceWord:[' + this.sourceWordStr + ']' + " " + this.sourceWordStr.length); + Logger.info('FormAbility targetWord:[' + this.targetWordStr + ']' + " " + this.targetWordStr.length); + if (this.sourceWordStr.length !== WORD_LENGTH || this.targetWordStr.length !== WORD_LENGTH) { + this.sourceWordStr = this.allWordArray[0]; + this.targetWordStr = ' '; + } + Logger.info('FormAbility sourceWord:[' + this.sourceWordStr + ']'); + Logger.info('FormAbility targetWord:[' + this.targetWordStr + ']'); + let eventIndex = Number(JSON.parse(message).params.message.charAt(0)); + if (eventIndex === NaN || eventIndex < 0 || eventIndex > TARGET_MAX_LENGTH) { + Logger.info('FormAbility onEvent failed for invalid eventIndex:' + eventIndex); + return; + } + if (eventIndex < WORD_LENGTH && this.sourceWordStr.charAt(eventIndex) === ' ') { + Logger.info('FormAbility source no need to update for eventIndex:' + eventIndex); + return; + } + if (eventIndex >= WORD_LENGTH && this.targetWordStr.charAt(eventIndex - WORD_LENGTH) === ' ') { + Logger.info('FormAbility target no need to update for eventIndex:' + eventIndex); + return; + } + this.updateWordStr(eventIndex); + Logger.info('FormAbility sourceWord:[' + this.sourceWordStr + ']'); + Logger.info('FormAbility targetWord:[' + this.targetWordStr + ']'); + this.updateFormDisplay(formId); + this.checkCurrentStatus(formId); + Logger.info('FormAbility sourceWord:' + JSON.stringify(this.storeDB.getSync('sourceWord', 'NA'))); + Logger.info('FormAbility targetWord:' + JSON.stringify(this.storeDB.getSync('targetWord', 'NA'))); + } + + onRemoveForm(formId) { + // Called to notify the form provider that a specified form has been destroyed. + Logger.info('FormAbility onDestroy.'); + } + + onAcquireFormState(want) { + // Called to return a {@link FormState} object. + return formInfo.FormState.READY; + } +}; diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/src/main/ets/MainAbility/MainAbility.ts b/HarmonyOS_NEXT/Widget/FormGame/entry/src/main/ets/MainAbility/MainAbility.ts new file mode 100644 index 0000000000000000000000000000000000000000..bcb14296c0d0b053a8303b39154d1680c0c4ec24 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/src/main/ets/MainAbility/MainAbility.ts @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2022-2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import Logger from '../Utils/Logger'; +import UIAbility from '@ohos.app.ability.UIAbility'; + +export default class MainAbility extends UIAbility { + onCreate(want, launchParam) { + Logger.info("[Demo] MainAbility onCreate") + } + + onDestroy() { + Logger.info("[Demo] MainAbility onDestroy") + } + + onWindowStageCreate(windowStage) { + // Main window is created, set main page for this ability + Logger.info("[Demo] MainAbility onWindowStageCreate") + windowStage.setUIContent(this.context, "pages/index", null) + } + + onWindowStageDestroy() { + // Main window is destroyed, release UI related resources + Logger.info("[Demo] MainAbility onWindowStageDestroy") + } + + onForeground() { + // Ability has brought to foreground + Logger.info("[Demo] MainAbility onForeground") + } + + onBackground() { + // Ability has back to background + Logger.info("[Demo] MainAbility onBackground") + } +}; diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/src/main/ets/Utils/Logger.ts b/HarmonyOS_NEXT/Widget/FormGame/entry/src/main/ets/Utils/Logger.ts new file mode 100644 index 0000000000000000000000000000000000000000..e5fd41fa5bde25c557af1ad9454de04d6a240e6c --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/src/main/ets/Utils/Logger.ts @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import hilog from '@ohos.hilog' + +class Logger { + private domain: number + private prefix: string + private format: string = "%{public}s" + + constructor(prefix: string) { + this.prefix = prefix + this.domain = 0xFF00 + } + + debug(...args: any[]) { + hilog.debug(this.domain, this.prefix, this.format, args) + } + + info(...args: any[]) { + hilog.info(this.domain, this.prefix, this.format, args) + } + + warn(...args: any[]) { + hilog.warn(this.domain, this.prefix, this.format, args) + } + + error(...args: any[]) { + hilog.error(this.domain, this.prefix, this.format, args) + } +} + +export default new Logger('[Sample_FormGame]') diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/src/main/ets/pages/index.ets b/HarmonyOS_NEXT/Widget/FormGame/entry/src/main/ets/pages/index.ets new file mode 100644 index 0000000000000000000000000000000000000000..b4bbb43171f18255079c3ab091553853aba31c12 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/src/main/ets/pages/index.ets @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import Logger from '../Utils/Logger'; + +@Entry +@Component +struct Index { + @State message: string = 'Hello World' + + build() { + Row() { + Column() { + Text(this.message) + .fontSize(50) + .fontWeight(FontWeight.Bold) + .onClick(() => { + Logger.info("Hello World"); + }) + } + .width('100%') + } + .height('100%') + } +} diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/src/main/js/common/widget.png b/HarmonyOS_NEXT/Widget/FormGame/entry/src/main/js/common/widget.png new file mode 100644 index 0000000000000000000000000000000000000000..c13bb4d340435b2e8d8fd90660ffc9916e1f6d68 Binary files /dev/null and b/HarmonyOS_NEXT/Widget/FormGame/entry/src/main/js/common/widget.png differ diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/src/main/js/i18n/en-US.json b/HarmonyOS_NEXT/Widget/FormGame/entry/src/main/js/i18n/en-US.json new file mode 100644 index 0000000000000000000000000000000000000000..a9f9399c745a57d756b56b11963691ec33fef84c --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/src/main/js/i18n/en-US.json @@ -0,0 +1,6 @@ +{ + "strings": { + "title_immersive": "Today's delicious food", + "detail_immersive": "A bowl of fragrant fried noodles, back to childhood memories" + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/src/main/js/i18n/zh-CN.json b/HarmonyOS_NEXT/Widget/FormGame/entry/src/main/js/i18n/zh-CN.json new file mode 100644 index 0000000000000000000000000000000000000000..d11d08b26a4a64740b08cca609f335ee2d124146 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/src/main/js/i18n/zh-CN.json @@ -0,0 +1,6 @@ +{ + "strings": { + "title_immersive": "今日美食推荐", + "detail_immersive": "一碗香喷喷的炸酱面,回到儿时的青涩回忆" + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/src/main/js/widget/pages/index/index.css b/HarmonyOS_NEXT/Widget/FormGame/entry/src/main/js/widget/pages/index/index.css new file mode 100644 index 0000000000000000000000000000000000000000..59982af9b8d7039fbbcf1fc45c0ed10eff9a5107 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/src/main/js/widget/pages/index/index.css @@ -0,0 +1,83 @@ +#wrapper { + flex-direction: column; + align-items: flex-start; + width: 100%; + height: 100%; + background-color: #ff3ebeaa; +} + +#box_title { + margin: 5%; + height: 18fp; + justify-content: center; +} + +#box_line_title { + background-color: #99eaa5a5; + margin: 5%; + padding: 3%; + height: 100%; + border-radius: 5fp; + justify-content: center; +} + +#one_box_title { + height: 100%; + justify-content: center; +} + +#word_title { + color: #ff02132d; + font-size: 15vp; +} + +#box_rect { + margin-bottom: 3%; + flex-direction: column; + align-items: center; +} + +#box_line { + flex-direction: row; + align-items: center; + justify-content: center; +} + +#one_box { + background-color: white; + margin-top: 5%; + margin-bottom: 5%; + margin-left: 10%; + margin-right: 10%; + border-radius: 5fp; + width: 28%; + justify-content: center; +} + +#box_line_t { + flex-direction: row; + align-items: center; + justify-content: center; + background-color: blue; +} + +#one_box_t { + background-color: #ffb8b4b4; + margin-top: 5%; + margin-bottom: 10%; + margin-left: 6%; + margin-right: 6%; + width: 29fp; + height: 38fp; + border-radius: 5fp; + justify-content: center; +} + +#word_t { + color: #ffb70909; + font-size: 26vp; +} + +#word_s { + color: #ff302602; +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/src/main/js/widget/pages/index/index.hml b/HarmonyOS_NEXT/Widget/FormGame/entry/src/main/js/widget/pages/index/index.hml new file mode 100644 index 0000000000000000000000000000000000000000..cda84d15fa9f8b3213c5edf92ffbb70706f37d36 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/src/main/js/widget/pages/index/index.hml @@ -0,0 +1,52 @@ +
+
+
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+
+
+
+ {{source_1}} +
+
+ {{source_2}} +
+
+
+
+ {{source_3}} +
+
+ {{source_4}} +
+
+
+
+
+ {{target_1}} +
+
+ {{target_2}} +
+
+ {{target_3}} +
+
+ {{target_4}} +
+
+
+
\ No newline at end of file diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/src/main/js/widget/pages/index/index.json b/HarmonyOS_NEXT/Widget/FormGame/entry/src/main/js/widget/pages/index/index.json new file mode 100644 index 0000000000000000000000000000000000000000..da7190064c0bfee4be5d9ef3d0257e341c70c0df --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/src/main/js/widget/pages/index/index.json @@ -0,0 +1,70 @@ +{ + "data": { + "source_1": "天", + "source_2": "天", + "source_3": "向", + "source_4": "上", + "target_1": "", + "target_2": "", + "target_3": "", + "target_4": "" + }, + "actions": { + "routerEvent": { + "action": "router", + "bundleName": "com.aafwk.myform", + "abilityName": "MainAbility", + "params": { + "message": "detail" + } + }, + "sourceEvent1": { + "action": "message", + "params": { + "message": "0sourceEvent" + } + }, + "sourceEvent2": { + "action": "message", + "params": { + "message": "1sourceEvent" + } + }, + "sourceEvent3": { + "action": "message", + "params": { + "message": "2sourceEvent" + } + }, + "sourceEvent4": { + "action": "message", + "params": { + "message": "3sourceEvent" + } + }, + "targetEvent1": { + "action": "message", + "params": { + "message": "4targetEvent" + } + }, + "targetEvent2": { + "action": "message", + "params": { + "message": "5targetEvent" + } + }, + "targetEvent3": { + "action": "message", + "params": { + "message": "6targetEvent" + } + }, + "targetEvent4": { + "action": "message", + "params": { + "message": "7targetEvent" + } + } + } +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/src/main/module.json5 b/HarmonyOS_NEXT/Widget/FormGame/entry/src/main/module.json5 new file mode 100644 index 0000000000000000000000000000000000000000..c3cdee7207271cb078b535cc49f0388598e72bb3 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/src/main/module.json5 @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "module": { + "name": "entry", + "type": "entry", + "srcEntrance": "./ets/Application/AbilityStage.ts", + "description": "$string:entry_desc", + "mainElement": "MainAbility", + "deviceTypes": [ + "default", + "tablet", + ], + "deliveryWithInstall": true, + "installationFree": false, + "pages": "$profile:main_pages", + "uiSyntax": "ets", + "abilities": [ + { + "name": "MainAbility", + "srcEntrance": "./ets/MainAbility/MainAbility.ts", + "description": "$string:MainAbility_desc", + "icon": "$media:icon", + "label": "$string:MainAbility_label", + "visible": true, + "skills": [ + { + "entities": [ + "entity.system.home", + ], + "actions": [ + "action.system.home", + ], + }, + ], + "startWindowIcon": "$media:icon", + "startWindowBackground": "$color:white" + }, + ], + "extensionAbilities": [ + { + "name": "FormAbility", + "srcEntrance": "./ets/FormAbility/FormAbility.ts", + "label": "$string:form_FormAbility_label", + "description": "$string:form_FormAbility_desc", + "type": "form", + "metadata": [ + { + "name": "ohos.extension.form", + "resource": "$profile:form_config", + }, + ], + }, + ], + }, +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/src/main/resources/base/element/color.json b/HarmonyOS_NEXT/Widget/FormGame/entry/src/main/resources/base/element/color.json new file mode 100644 index 0000000000000000000000000000000000000000..1bbc9aa9617e97c45440e1d3d66afc1154837012 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/src/main/resources/base/element/color.json @@ -0,0 +1,8 @@ +{ + "color": [ + { + "name": "white", + "value": "#FFFFFF" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/src/main/resources/base/element/string.json b/HarmonyOS_NEXT/Widget/FormGame/entry/src/main/resources/base/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..f94e2558783d494ce77866009e0f12ecb566807f --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/src/main/resources/base/element/string.json @@ -0,0 +1,24 @@ +{ + "string": [ + { + "name": "entry_desc", + "value": "description" + }, + { + "name": "MainAbility_label", + "value": "娱乐卡片" + }, + { + "name": "MainAbility_desc", + "value": "description" + }, + { + "name": "form_FormAbility_desc", + "value": "form_description" + }, + { + "name": "form_FormAbility_label", + "value": "form_label" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/src/main/resources/base/media/icon.png b/HarmonyOS_NEXT/Widget/FormGame/entry/src/main/resources/base/media/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ce307a8827bd75456441ceb57d530e4c8d45d36c Binary files /dev/null and b/HarmonyOS_NEXT/Widget/FormGame/entry/src/main/resources/base/media/icon.png differ diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/src/main/resources/base/profile/form_config.json b/HarmonyOS_NEXT/Widget/FormGame/entry/src/main/resources/base/profile/form_config.json new file mode 100644 index 0000000000000000000000000000000000000000..60f73032233341aa5b687efe0de7217f8164fdcb --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/src/main/resources/base/profile/form_config.json @@ -0,0 +1,23 @@ +{ + "forms": [ + { + "name": "widget", + "description": "用卡片实现一个小游戏", + "src": "./js/widget/pages/index/index", + "formConfigAbility": "ability://ohos.samples.formgameability.MainAbility", + "window": { + "designWidth": 720, + "autoDesignWidth": true + }, + "colorMode": "auto", + "isDefault": true, + "updateEnabled": true, + "scheduledUpdateTime": "10:30", + "updateDuration": 1, + "defaultDimension": "2*2", + "supportDimensions": [ + "2*2" + ] + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/src/main/resources/base/profile/main_pages.json b/HarmonyOS_NEXT/Widget/FormGame/entry/src/main/resources/base/profile/main_pages.json new file mode 100644 index 0000000000000000000000000000000000000000..feec276e105eeb8d621c20aaf838f318b0a94150 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/src/main/resources/base/profile/main_pages.json @@ -0,0 +1,5 @@ +{ + "src": [ + "pages/index" + ] +} diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/src/ohosTest/ets/Application/AbilityStage.ts b/HarmonyOS_NEXT/Widget/FormGame/entry/src/ohosTest/ets/Application/AbilityStage.ts new file mode 100644 index 0000000000000000000000000000000000000000..0b19bfdbc7b52f4a23c92f238e5a7adfaf32a11f --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/src/ohosTest/ets/Application/AbilityStage.ts @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2022-2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import hilog from '@ohos.hilog'; +import AbilityStage from "@ohos.app.ability.AbilityStage"; + +export default class TestAbilityStage extends AbilityStage { + onCreate() { + hilog.info(0x0000, "FormGame", "%{public}s", "[Demo] TestAbilityStage onCreate") + } +} diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/src/ohosTest/ets/TestRunner/OpenHarmonyTestRunner.ts b/HarmonyOS_NEXT/Widget/FormGame/entry/src/ohosTest/ets/TestRunner/OpenHarmonyTestRunner.ts new file mode 100644 index 0000000000000000000000000000000000000000..959c415b0f6885636e70b7e8bed59c3ecaa88da0 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/src/ohosTest/ets/TestRunner/OpenHarmonyTestRunner.ts @@ -0,0 +1,79 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import hilog from '@ohos.hilog'; +import TestRunner from '@ohos.application.testRunner' +import AbilityDelegatorRegistry from '@ohos.application.abilityDelegatorRegistry' + +var abilityDelegator = undefined +var abilityDelegatorArguments = undefined + +function translateParamsToString(parameters) { + const keySet = new Set([ + '-s class', '-s notClass', '-s suite', '-s it', + '-s level', '-s testType', '-s size', '-s timeout', + '-s dryRun' + ]) + let targetParams = ''; + for (const key in parameters) { + if (keySet.has(key)) { + targetParams = `${targetParams} ${key} ${parameters[key]}` + } + } + return targetParams.trim() +} + +async function onAbilityCreateCallback() { + hilog.info(0x0000, "FormGame", "%{public}s", "onAbilityCreateCallback"); +} + +async function addAbilityMonitorCallback(err: any) { + hilog.info(0x0000, "FormGame", "%{public}s", "addAbilityMonitorCallback : " + JSON.stringify(err)) +} + +export default class OpenHarmonyTestRunner implements TestRunner { + constructor() { + } + + onPrepare() { + hilog.info(0x0000, "FormGame", "%{public}s", "OpenHarmonyTestRunner OnPrepare ") + } + + async onRun() { + hilog.info(0x0000, "FormGame", "%{public}s", 'OpenHarmonyTestRunner onRun run') + abilityDelegatorArguments = AbilityDelegatorRegistry.getArguments() + abilityDelegator = AbilityDelegatorRegistry.getAbilityDelegator() + var testAbilityName = abilityDelegatorArguments.bundleName + '.TestAbility' + let lMonitor = { + abilityName: testAbilityName, + onAbilityCreate: onAbilityCreateCallback, + }; + abilityDelegator.addAbilityMonitor(lMonitor, addAbilityMonitorCallback) + var cmd = 'aa start -d 0 -a TestAbility' + ' -b ' + abilityDelegatorArguments.bundleName + cmd += ' ' + translateParamsToString(abilityDelegatorArguments.parameters) + var debug = abilityDelegatorArguments.parameters["-D"] + if (debug == 'true') { + cmd += ' -D' + } + hilog.info(0x0000, "FormGame", "%{public}s", 'cmd : ' + cmd) + abilityDelegator.executeShellCommand(cmd, + (err: any, d: any) => { + hilog.info(0x0000, "FormGame", "%{public}s", 'executeShellCommand : err : ' + JSON.stringify(err)); + hilog.info(0x0000, "FormGame", "%{public}s", 'executeShellCommand : data : ' + d.stdResult); + hilog.info(0x0000, "FormGame", "%{public}s", 'executeShellCommand : data : ' + d.exitCode); + }) + hilog.info(0x0000, "FormGame", "%{public}s", 'OpenHarmonyTestRunner onRun end') + } +}; diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/src/ohosTest/ets/module.json5.ftl b/HarmonyOS_NEXT/Widget/FormGame/entry/src/ohosTest/ets/module.json5.ftl new file mode 100644 index 0000000000000000000000000000000000000000..010cd105569288029704b86df7439a7372ea77d7 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/src/ohosTest/ets/module.json5.ftl @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "module": { + "name": "${moduleName}_test", + "type": "feature", + "srcEntrance": "./ets/Application/AbilityStage.ts", + "description": "$string:entry_test_desc", + "mainElement": "TestAbility", + "deviceTypes": [${deviceTypes ?replace("[","")?replace("]","")}], + "deliveryWithInstall": true, + "installationFree": false, + "pages": "$profile:test_pages", + "uiSyntax": "ets", + "abilities": [ + { + "name": "TestAbility", + "srcEntrance": "./ets/testability/TestAbility.ets", + "description": "$string:TestAbility_desc", + "icon": "$media:icon", + "label": "$string:TestAbility_label", + "visible": true, + "skills": [ + { + "actions": [ + "action.system.home" + ], + "entities": [ + "entity.system.home" + ] + } + ] + } + ] + } +} diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/src/ohosTest/ets/test/Aibility.test.ets b/HarmonyOS_NEXT/Widget/FormGame/entry/src/ohosTest/ets/test/Aibility.test.ets new file mode 100644 index 0000000000000000000000000000000000000000..8600fae246ea9487d558228fbe540fd9fa581afb --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/src/ohosTest/ets/test/Aibility.test.ets @@ -0,0 +1,72 @@ +/* + * Copyright (c) 2022-2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { Driver, ON } from '@ohos.UiTest'; +import Logger from '../../../main/ets/Utils/Logger'; +import { describe, it, expect, beforeAll } from '@ohos/hypium'; +import AbilityDelegatorRegistry from '@ohos.app.ability.abilityDelegatorRegistry'; + +const DRIVER=Driver.create(); +const TAG = '[Sample_FormGame]'; +const BUNDLE = 'FormGame_'; +let abilityDelegatorRegistry = AbilityDelegatorRegistry.getAbilityDelegator(); + +export default function abilityTest(){ + describe('ActsAbilityTest',() => { + + /** + * 添加卡片到桌面功能验证 + */ + it('FormGame_OpenFormList_001',0,async (done: Function) => { + Logger.info(TAG, BUNDLE + 'FormGame_OpenFormList_001 begin'); + let ability = await abilityDelegatorRegistry.getCurrentTopAbility(); + let manager = ability.context.resourceManager; + await DRIVER.delayMs(1000); + await DRIVER.pressBack(); + await DRIVER.delayMs(2000); + //找到娱乐卡片并且长按 + await DRIVER.assertComponentExist(ON.text(await manager.getStringValue($r('app.string.Entertainment_card')))); + let app=await DRIVER.findComponent(ON.text(await manager.getStringValue($r('app.string.Entertainment_card')))); + // 获取文字控件边框 + let rect = await app.getBounds(); + // 计算文字控件高度 + let height = rect.bottom - rect.top; + // 获取文字控件中心点 + let point = await app.getBoundsCenter(); + await DRIVER.longClick(point.x, point.y - height); + await DRIVER.delayMs(1000); + // 点击列表中的服务卡片 + await DRIVER.assertComponentExist(ON.text(await manager.getStringValue($r('app.string.Service_card')))); + let formBtn=await DRIVER.findComponent(ON.text(await manager.getStringValue($r('app.string.Service_card')))); + await formBtn.click(); + await DRIVER.delayMs(1000); + // 点击添加到桌面按钮 + await DRIVER.assertComponentExist(ON.text(await manager.getStringValue($r('app.string.Add_to_table')))); + let addToDesk = await DRIVER.findComponent(ON.text(await manager.getStringValue($r('app.string.Add_to_table')))); + await addToDesk.click(); + await DRIVER.delayMs(2000); + // 检查桌面上的娱乐卡片数量 + await DRIVER.assertComponentExist(ON.text(await manager.getStringValue($r('app.string.Entertainment_card')))); + let resultArray=await DRIVER.findComponents(ON.text(await manager.getStringValue($r('app.string.Entertainment_card')))); + expect(resultArray.length).assertEqual(2); // 桌面上本来安装的娱乐卡片,加上添加的接龙游戏娱乐卡片,一个可以找到两个娱乐卡片 + done(); + Logger.info(TAG, BUNDLE + 'FormGame_OpenFormList_001 end'); + }) + }) +} + + + + diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/src/ohosTest/ets/test/List.test.ets b/HarmonyOS_NEXT/Widget/FormGame/entry/src/ohosTest/ets/test/List.test.ets new file mode 100644 index 0000000000000000000000000000000000000000..93ab0971c73d586527840fb41395c568476432de --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/src/ohosTest/ets/test/List.test.ets @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import abilityTest from './Aibility.test' + +export default function testsuite() { + abilityTest() +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/src/ohosTest/ets/testability/TestAbility.ets b/HarmonyOS_NEXT/Widget/FormGame/entry/src/ohosTest/ets/testability/TestAbility.ets new file mode 100644 index 0000000000000000000000000000000000000000..5eae3fb5ff5104b26f89c47f6bf27c18bd119569 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/src/ohosTest/ets/testability/TestAbility.ets @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2022-2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import hilog from '@ohos.hilog'; +import UIAbility from '@ohos.app.ability.UIAbility'; +import AbilityDelegatorRegistry from '@ohos.application.abilityDelegatorRegistry'; +import { Hypium } from '@ohos/hypium'; +import testsuite from '../test/List.test'; +import Want from '@ohos.app.ability.Want'; +import AbilityConstant from '@ohos.app.ability.AbilityConstant'; +import window from '@ohos.window'; + +export default class TestAbility extends UIAbility { + onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) { + hilog.info(0x0000, "FormGame", "%{public}s", 'TestAbility onCreate') + } + + onDestroy() { + hilog.info(0x0000, "FormGame", "%{public}s", 'TestAbility onDestroy') + } + + onWindowStageCreate(windowStage: window.WindowStage) { + hilog.info(0x0000, "FormGame", "%{public}s", 'TestAbility onWindowStageCreate') + windowStage.loadContent("testability/pages/index", (err, data) => { + if (err.code) { + hilog.error(0x0000, "FormGame", "%{public}s", 'Failed to load the content. Cause:' + JSON.stringify(err)); + return; + } + hilog.info(0x0000, "FormGame", "%{public}s", 'Succeeded in loading the content. Data: ' + JSON.stringify(data)) + }); + + let abilityDelegator = AbilityDelegatorRegistry.getAbilityDelegator() + let abilityDelegatorArguments = AbilityDelegatorRegistry.getArguments() + hilog.info(0x0000, "FormGame", "%{public}s", 'start run testcase!!!') + Hypium.hypiumTest(abilityDelegator, abilityDelegatorArguments, testsuite) + } + + onWindowStageDestroy() { + hilog.info(0x0000, "FormGame", "%{public}s", 'TestAbility onWindowStageDestroy') + } + + onForeground() { + hilog.info(0x0000, "FormGame", "%{public}s", 'TestAbility onForeground') + } + + onBackground() { + hilog.info(0x0000, "FormGame", "%{public}s", 'TestAbility onBackground') + } +}; diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/src/ohosTest/ets/testability/pages/Index.ets b/HarmonyOS_NEXT/Widget/FormGame/entry/src/ohosTest/ets/testability/pages/Index.ets new file mode 100644 index 0000000000000000000000000000000000000000..574a4443f072e9d8c467e5d5424d936037b67673 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/src/ohosTest/ets/testability/pages/Index.ets @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import hilog from '@ohos.hilog'; +import router from '@ohos.router'; + +@Entry +@Component +struct Index { + aboutToAppear() { + hilog.info(0x0000, "FormGame", "%{public}s", 'TestAbility index aboutToAppear') + } + + @State message: string = 'Hello World' + + build() { + Row() { + Column() { + Text(this.message) + .fontSize(50) + .fontWeight(FontWeight.Bold) + Button() { + Text('next page') + .fontSize(20) + .fontWeight(FontWeight.Bold) + } + .type(ButtonType.Capsule) + .margin({ + top: 20 + }) + .backgroundColor('#0D9FFB') + .width('35%') + .height('5%') + .onClick(() => { + }) + } + .width('100%') + } + .height('100%') + } +} diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/src/ohosTest/module.json5 b/HarmonyOS_NEXT/Widget/FormGame/entry/src/ohosTest/module.json5 new file mode 100644 index 0000000000000000000000000000000000000000..b4553d86869147dee6645265718e4d558fb2062e --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/src/ohosTest/module.json5 @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +{ + "module": { + "name": "entry_test", + "type": "feature", + "srcEntrance": "./ets/testability/TestAbility.ets", + "description": "$string:entry_test_desc", + "mainElement": "TestAbility", + "deviceTypes": [ + "default", + "tablet" + ], + "deliveryWithInstall": true, + "installationFree": false, + "pages": "$profile:test_pages", + "uiSyntax": "ets", + "abilities": [ + { + "name": "TestAbility", + "srcEntrance": "./ets/testability/TestAbility.ets", + "description": "$string:TestAbility_desc", + "icon": "$media:icon", + "label": "$string:TestAbility_label", + "visible": true, + "skills": [ + { + "actions": [ + "action.system.home" + ], + "entities": [ + "entity.system.home" + ] + } + ], + "startWindowIcon": "$media:icon", + "startWindowBackground": "$color:white" + } + ] + } +} diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/src/ohosTest/resources/base/element/color.json b/HarmonyOS_NEXT/Widget/FormGame/entry/src/ohosTest/resources/base/element/color.json new file mode 100644 index 0000000000000000000000000000000000000000..1bbc9aa9617e97c45440e1d3d66afc1154837012 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/src/ohosTest/resources/base/element/color.json @@ -0,0 +1,8 @@ +{ + "color": [ + { + "name": "white", + "value": "#FFFFFF" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/src/ohosTest/resources/base/element/string.json b/HarmonyOS_NEXT/Widget/FormGame/entry/src/ohosTest/resources/base/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..34bda618f68a657ffed7ceec25f94fb738e8cd45 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/src/ohosTest/resources/base/element/string.json @@ -0,0 +1,30 @@ +{ + "string": [ + { + "name": "entry_test_desc", + "value": "test ability description" + }, + { + "name": "TestAbility_desc", + "value": "the test ability" + }, + { + "name": "TestAbility_label", + "value": "test label" + }, + { + "name": "Entertainment_card", + "value": "娱乐卡片" + } + , + { + "name": "Service_card", + "value": "服务卡片" + }, + { + "name":"Add_to_table", + "value": "添加到桌面" + } + + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/src/ohosTest/resources/base/media/icon.png b/HarmonyOS_NEXT/Widget/FormGame/entry/src/ohosTest/resources/base/media/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ce307a8827bd75456441ceb57d530e4c8d45d36c Binary files /dev/null and b/HarmonyOS_NEXT/Widget/FormGame/entry/src/ohosTest/resources/base/media/icon.png differ diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/src/ohosTest/resources/base/profile/test_pages.json b/HarmonyOS_NEXT/Widget/FormGame/entry/src/ohosTest/resources/base/profile/test_pages.json new file mode 100644 index 0000000000000000000000000000000000000000..b7e7343cacb32ce982a45e76daad86e435e054fe --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/src/ohosTest/resources/base/profile/test_pages.json @@ -0,0 +1,5 @@ +{ + "src": [ + "testability/pages/Index" + ] +} diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/src/ohosTest/resources/en/element/string.json b/HarmonyOS_NEXT/Widget/FormGame/entry/src/ohosTest/resources/en/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..9c275195ec8e7c5ee4d8bbb8c7be4a1d0cec14c8 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/src/ohosTest/resources/en/element/string.json @@ -0,0 +1,28 @@ +{ + "string": [ + { + "name": "entry_test_desc", + "value": "test ability description" + }, + { + "name": "TestAbility_desc", + "value": "the test ability" + }, + { + "name": "TestAbility_label", + "value": "test label" + }, + { + "name": "Entertainment_card", + "value": "entertainment card" + }, + { + "name": "Service_card", + "value": "service card" + }, + { + "name":"Add_to_table", + "value": "add to table" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Widget/FormGame/entry/src/ohosTest/resources/zh/element/string.json b/HarmonyOS_NEXT/Widget/FormGame/entry/src/ohosTest/resources/zh/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..ee14ceaba59c608de1094d5e937238b8eb0bda79 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/entry/src/ohosTest/resources/zh/element/string.json @@ -0,0 +1,28 @@ +{ + "string": [ + { + "name": "entry_test_desc", + "value": "test ability description" + }, + { + "name": "TestAbility_desc", + "value": "the test ability" + }, + { + "name": "TestAbility_label", + "value": "test label" + }, + { + "name": "Entertainment_card", + "value": "娱乐卡片" + }, + { + "name": "Service_card", + "value": "服务卡片" + }, + { + "name":"Add_to_table", + "value": "添加到桌面" + } + ] +} \ No newline at end of file diff --git a/HarmonyOS_NEXT/Widget/FormGame/hvigor/hvigor-config.json5 b/HarmonyOS_NEXT/Widget/FormGame/hvigor/hvigor-config.json5 new file mode 100644 index 0000000000000000000000000000000000000000..92855f3cfc6147d26ffd1045842575d66d7c4684 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/hvigor/hvigor-config.json5 @@ -0,0 +1,18 @@ +{ + "hvigorVersion": "3.0.9-s", + "dependencies": { + "@ohos/hvigor-ohos-plugin": "3.0.9-s" + }, + "execution": { + // "daemon": true, /* Enable daemon compilation. Default: true */ + // "incremental": true, /* Enable incremental compilation. Default: true */ + // "parallel": true, /* Enable parallel compilation. Default: true */ + // "typeCheck": false, /* Enable typeCheck. Default: false */ + }, + "logging": { + // "level": "info" /* Define the log level. Value: [ "debug" | "info" | "warn" | "error" ]. Default: "info" */ + }, + "debugging": { + // "stacktrace": false /* Disable stacktrace compilation. Default: false */ + } +} diff --git a/HarmonyOS_NEXT/Widget/FormGame/hvigor/hvigor-wrapper.js b/HarmonyOS_NEXT/Widget/FormGame/hvigor/hvigor-wrapper.js new file mode 100644 index 0000000000000000000000000000000000000000..372eae8eb4a124095936f9cd78df5c6756746f3f --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/hvigor/hvigor-wrapper.js @@ -0,0 +1 @@ +"use strict";var u=require("path"),D=require("os"),e=require("fs"),t=require("crypto"),r=require("child_process"),n="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},i={},C={},F=n&&n.__importDefault||function(u){return u&&u.__esModule?u:{default:u}};Object.defineProperty(C,"__esModule",{value:!0}),C.maxPathLength=C.isMac=C.isLinux=C.isWindows=void 0;const E=F(D),A="Windows_NT",o="Darwin";function a(){return E.default.type()===A}function c(){return E.default.type()===o}C.isWindows=a,C.isLinux=function(){return"Linux"===E.default.type()},C.isMac=c,C.maxPathLength=function(){return c()?1016:a()?259:4095},function(e){var t=n&&n.__createBinding||(Object.create?function(u,D,e,t){void 0===t&&(t=e);var r=Object.getOwnPropertyDescriptor(D,e);r&&!("get"in r?!D.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return D[e]}}),Object.defineProperty(u,t,r)}:function(u,D,e,t){void 0===t&&(t=e),u[t]=D[e]}),r=n&&n.__setModuleDefault||(Object.create?function(u,D){Object.defineProperty(u,"default",{enumerable:!0,value:D})}:function(u,D){u.default=D}),i=n&&n.__importStar||function(u){if(u&&u.__esModule)return u;var D={};if(null!=u)for(var e in u)"default"!==e&&Object.prototype.hasOwnProperty.call(u,e)&&t(D,u,e);return r(D,u),D};Object.defineProperty(e,"__esModule",{value:!0}),e.WORK_SPACE=e.HVIGOR_PROJECT_WRAPPER_HOME=e.HVIGOR_PROJECT_ROOT_DIR=e.HVIGOR_PROJECT_CACHES_HOME=e.HVIGOR_PNPM_STORE_PATH=e.HVIGOR_WRAPPER_PNPM_SCRIPT_PATH=e.PROJECT_CACHES=e.HVIGOR_WRAPPER_TOOLS_HOME=e.HVIGOR_USER_HOME=e.DEFAULT_PACKAGE_JSON=e.DEFAULT_HVIGOR_CONFIG_JSON_FILE_NAME=e.PNPM=e.HVIGOR=e.NPM_TOOL=e.PNPM_TOOL=e.HVIGOR_ENGINE_PACKAGE_NAME=void 0;const F=i(D),E=i(u),A=C;e.HVIGOR_ENGINE_PACKAGE_NAME="@ohos/hvigor",e.PNPM_TOOL=(0,A.isWindows)()?"pnpm.cmd":"pnpm",e.NPM_TOOL=(0,A.isWindows)()?"npm.cmd":"npm",e.HVIGOR="hvigor",e.PNPM="pnpm",e.DEFAULT_HVIGOR_CONFIG_JSON_FILE_NAME="hvigor-config.json5",e.DEFAULT_PACKAGE_JSON="package.json",e.HVIGOR_USER_HOME=E.resolve(F.homedir(),".hvigor"),e.HVIGOR_WRAPPER_TOOLS_HOME=E.resolve(e.HVIGOR_USER_HOME,"wrapper","tools"),e.PROJECT_CACHES="project_caches",e.HVIGOR_WRAPPER_PNPM_SCRIPT_PATH=E.resolve(e.HVIGOR_WRAPPER_TOOLS_HOME,"node_modules",".bin",e.PNPM_TOOL),e.HVIGOR_PNPM_STORE_PATH=E.resolve(e.HVIGOR_USER_HOME,"caches"),e.HVIGOR_PROJECT_CACHES_HOME=E.resolve(e.HVIGOR_USER_HOME,e.PROJECT_CACHES),e.HVIGOR_PROJECT_ROOT_DIR=process.cwd(),e.HVIGOR_PROJECT_WRAPPER_HOME=E.resolve(e.HVIGOR_PROJECT_ROOT_DIR,e.HVIGOR),e.WORK_SPACE="workspace"}(i);var s={},l={};Object.defineProperty(l,"__esModule",{value:!0}),l.logInfoPrintConsole=l.logErrorAndExit=void 0,l.logErrorAndExit=function(u){u instanceof Error?console.error(u.message):console.error(u),process.exit(-1)},l.logInfoPrintConsole=function(u){console.log(u)};var B=n&&n.__createBinding||(Object.create?function(u,D,e,t){void 0===t&&(t=e);var r=Object.getOwnPropertyDescriptor(D,e);r&&!("get"in r?!D.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return D[e]}}),Object.defineProperty(u,t,r)}:function(u,D,e,t){void 0===t&&(t=e),u[t]=D[e]}),d=n&&n.__setModuleDefault||(Object.create?function(u,D){Object.defineProperty(u,"default",{enumerable:!0,value:D})}:function(u,D){u.default=D}),f=n&&n.__importStar||function(u){if(u&&u.__esModule)return u;var D={};if(null!=u)for(var e in u)"default"!==e&&Object.prototype.hasOwnProperty.call(u,e)&&B(D,u,e);return d(D,u),D};Object.defineProperty(s,"__esModule",{value:!0});var _=s.executeBuild=void 0;const p=f(e),O=f(u),h=l;_=s.executeBuild=function(u){const D=O.resolve(u,"node_modules","@ohos","hvigor","bin","hvigor.js");try{const u=p.realpathSync(D);require(u)}catch(e){(0,h.logErrorAndExit)(`Error: ENOENT: no such file ${D},delete ${u} and retry.`)}};var P={},v={};!function(u){var D=n&&n.__importDefault||function(u){return u&&u.__esModule?u:{default:u}};Object.defineProperty(u,"__esModule",{value:!0}),u.hashFile=u.hash=u.createHash=void 0;const r=D(t),i=D(e);u.createHash=(u="MD5")=>r.default.createHash(u);u.hash=(D,e)=>(0,u.createHash)(e).update(D).digest("hex");u.hashFile=(D,e)=>{if(i.default.existsSync(D))return(0,u.hash)(i.default.readFileSync(D,"utf-8"),e)}}(v);var g={},m={},R={};Object.defineProperty(R,"__esModule",{value:!0}),R.Unicode=void 0;class y{}R.Unicode=y,y.SPACE_SEPARATOR=/[\u1680\u2000-\u200A\u202F\u205F\u3000]/,y.ID_START=/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/,y.ID_CONTINUE=/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDE00-\uDE3E\uDE47\uDE50-\uDE83\uDE86-\uDE99\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/,Object.defineProperty(m,"__esModule",{value:!0}),m.JudgeUtil=void 0;const I=R;m.JudgeUtil=class{static isIgnoreChar(u){return"string"==typeof u&&("\t"===u||"\v"===u||"\f"===u||" "===u||" "===u||"\ufeff"===u||"\n"===u||"\r"===u||"\u2028"===u||"\u2029"===u)}static isSpaceSeparator(u){return"string"==typeof u&&I.Unicode.SPACE_SEPARATOR.test(u)}static isIdStartChar(u){return"string"==typeof u&&(u>="a"&&u<="z"||u>="A"&&u<="Z"||"$"===u||"_"===u||I.Unicode.ID_START.test(u))}static isIdContinueChar(u){return"string"==typeof u&&(u>="a"&&u<="z"||u>="A"&&u<="Z"||u>="0"&&u<="9"||"$"===u||"_"===u||"‌"===u||"‍"===u||I.Unicode.ID_CONTINUE.test(u))}static isDigitWithoutZero(u){return/[1-9]/.test(u)}static isDigit(u){return"string"==typeof u&&/[0-9]/.test(u)}static isHexDigit(u){return"string"==typeof u&&/[0-9A-Fa-f]/.test(u)}};var N=n&&n.__importDefault||function(u){return u&&u.__esModule?u:{default:u}};Object.defineProperty(g,"__esModule",{value:!0}),g.parseJsonText=g.parseJsonFile=void 0;const b=N(e),S=N(D),w=N(u),H=m;var x;!function(u){u[u.Char=0]="Char",u[u.EOF=1]="EOF",u[u.Identifier=2]="Identifier"}(x||(x={}));let M,T,V,G,j,J,W="start",U=[],L=0,$=1,k=0,K=!1,z="default",q="'",Z=1;function X(u,D=!1){T=String(u),W="start",U=[],L=0,$=1,k=0,G=void 0,K=D;do{M=Q(),nu[W]()}while("eof"!==M.type);return G}function Q(){for(z="default",j="",q="'",Z=1;;){J=Y();const u=Du[z]();if(u)return u}}function Y(){if(T[L])return String.fromCodePoint(T.codePointAt(L))}function uu(){const u=Y();return"\n"===u?($++,k=0):u?k+=u.length:k++,u&&(L+=u.length),u}g.parseJsonFile=function(u,D=!1,e="utf-8"){const t=b.default.readFileSync(w.default.resolve(u),{encoding:e});try{return X(t,D)}catch(D){if(D instanceof SyntaxError){const e=D.message.split("at");if(2===e.length)throw new Error(`${e[0].trim()}${S.default.EOL}\t at ${u}:${e[1].trim()}`)}throw new Error(`${u} is not in valid JSON/JSON5 format.`)}},g.parseJsonText=X;const Du={default(){switch(J){case"/":return uu(),void(z="comment");case void 0:return uu(),eu("eof")}if(!H.JudgeUtil.isIgnoreChar(J)&&!H.JudgeUtil.isSpaceSeparator(J))return Du[W]();uu()},start(){z="value"},beforePropertyName(){switch(J){case"$":case"_":return j=uu(),void(z="identifierName");case"\\":return uu(),void(z="identifierNameStartEscape");case"}":return eu("punctuator",uu());case'"':case"'":return q=J,uu(),void(z="string")}if(H.JudgeUtil.isIdStartChar(J))return j+=uu(),void(z="identifierName");throw Eu(x.Char,uu())},afterPropertyName(){if(":"===J)return eu("punctuator",uu());throw Eu(x.Char,uu())},beforePropertyValue(){z="value"},afterPropertyValue(){switch(J){case",":case"}":return eu("punctuator",uu())}throw Eu(x.Char,uu())},beforeArrayValue(){if("]"===J)return eu("punctuator",uu());z="value"},afterArrayValue(){switch(J){case",":case"]":return eu("punctuator",uu())}throw Eu(x.Char,uu())},end(){throw Eu(x.Char,uu())},comment(){switch(J){case"*":return uu(),void(z="multiLineComment");case"/":return uu(),void(z="singleLineComment")}throw Eu(x.Char,uu())},multiLineComment(){switch(J){case"*":return uu(),void(z="multiLineCommentAsterisk");case void 0:throw Eu(x.Char,uu())}uu()},multiLineCommentAsterisk(){switch(J){case"*":return void uu();case"/":return uu(),void(z="default");case void 0:throw Eu(x.Char,uu())}uu(),z="multiLineComment"},singleLineComment(){switch(J){case"\n":case"\r":case"\u2028":case"\u2029":return uu(),void(z="default");case void 0:return uu(),eu("eof")}uu()},value(){switch(J){case"{":case"[":return eu("punctuator",uu());case"n":return uu(),tu("ull"),eu("null",null);case"t":return uu(),tu("rue"),eu("boolean",!0);case"f":return uu(),tu("alse"),eu("boolean",!1);case"-":case"+":return"-"===uu()&&(Z=-1),void(z="numerical");case".":case"0":case"I":case"N":return void(z="numerical");case'"':case"'":return q=J,uu(),j="",void(z="string")}if(void 0===J||!H.JudgeUtil.isDigitWithoutZero(J))throw Eu(x.Char,uu());z="numerical"},numerical(){switch(J){case".":return j=uu(),void(z="decimalPointLeading");case"0":return j=uu(),void(z="zero");case"I":return uu(),tu("nfinity"),eu("numeric",Z*(1/0));case"N":return uu(),tu("aN"),eu("numeric",NaN)}if(void 0!==J&&H.JudgeUtil.isDigitWithoutZero(J))return j=uu(),void(z="decimalInteger");throw Eu(x.Char,uu())},zero(){switch(J){case".":case"e":case"E":return void(z="decimal");case"x":case"X":return j+=uu(),void(z="hexadecimal")}return eu("numeric",0)},decimalInteger(){switch(J){case".":case"e":case"E":return void(z="decimal")}if(!H.JudgeUtil.isDigit(J))return eu("numeric",Z*Number(j));j+=uu()},decimal(){switch(J){case".":j+=uu(),z="decimalFraction";break;case"e":case"E":j+=uu(),z="decimalExponent"}},decimalPointLeading(){if(H.JudgeUtil.isDigit(J))return j+=uu(),void(z="decimalFraction");throw Eu(x.Char,uu())},decimalFraction(){switch(J){case"e":case"E":return j+=uu(),void(z="decimalExponent")}if(!H.JudgeUtil.isDigit(J))return eu("numeric",Z*Number(j));j+=uu()},decimalExponent(){switch(J){case"+":case"-":return j+=uu(),void(z="decimalExponentSign")}if(H.JudgeUtil.isDigit(J))return j+=uu(),void(z="decimalExponentInteger");throw Eu(x.Char,uu())},decimalExponentSign(){if(H.JudgeUtil.isDigit(J))return j+=uu(),void(z="decimalExponentInteger");throw Eu(x.Char,uu())},decimalExponentInteger(){if(!H.JudgeUtil.isDigit(J))return eu("numeric",Z*Number(j));j+=uu()},hexadecimal(){if(H.JudgeUtil.isHexDigit(J))return j+=uu(),void(z="hexadecimalInteger");throw Eu(x.Char,uu())},hexadecimalInteger(){if(!H.JudgeUtil.isHexDigit(J))return eu("numeric",Z*Number(j));j+=uu()},identifierNameStartEscape(){if("u"!==J)throw Eu(x.Char,uu());uu();const u=ru();switch(u){case"$":case"_":break;default:if(!H.JudgeUtil.isIdStartChar(u))throw Eu(x.Identifier)}j+=u,z="identifierName"},identifierName(){switch(J){case"$":case"_":case"‌":case"‍":return void(j+=uu());case"\\":return uu(),void(z="identifierNameEscape")}if(!H.JudgeUtil.isIdContinueChar(J))return eu("identifier",j);j+=uu()},identifierNameEscape(){if("u"!==J)throw Eu(x.Char,uu());uu();const u=ru();switch(u){case"$":case"_":case"‌":case"‍":break;default:if(!H.JudgeUtil.isIdContinueChar(u))throw Eu(x.Identifier)}j+=u,z="identifierName"},string(){switch(J){case"\\":return uu(),void(j+=function(){const u=Y(),D=function(){switch(Y()){case"b":return uu(),"\b";case"f":return uu(),"\f";case"n":return uu(),"\n";case"r":return uu(),"\r";case"t":return uu(),"\t";case"v":return uu(),"\v"}return}();if(D)return D;switch(u){case"0":if(uu(),H.JudgeUtil.isDigit(Y()))throw Eu(x.Char,uu());return"\0";case"x":return uu(),function(){let u="",D=Y();if(!H.JudgeUtil.isHexDigit(D))throw Eu(x.Char,uu());if(u+=uu(),D=Y(),!H.JudgeUtil.isHexDigit(D))throw Eu(x.Char,uu());return u+=uu(),String.fromCodePoint(parseInt(u,16))}();case"u":return uu(),ru();case"\n":case"\u2028":case"\u2029":return uu(),"";case"\r":return uu(),"\n"===Y()&&uu(),""}if(void 0===u||H.JudgeUtil.isDigitWithoutZero(u))throw Eu(x.Char,uu());return uu()}());case'"':case"'":if(J===q){const u=eu("string",j);return uu(),u}return void(j+=uu());case"\n":case"\r":case void 0:throw Eu(x.Char,uu());case"\u2028":case"\u2029":!function(u){console.warn(`JSON5: '${Fu(u)}' in strings is not valid ECMAScript; consider escaping.`)}(J)}j+=uu()}};function eu(u,D){return{type:u,value:D,line:$,column:k}}function tu(u){for(const D of u){if(Y()!==D)throw Eu(x.Char,uu());uu()}}function ru(){let u="",D=4;for(;D-- >0;){const D=Y();if(!H.JudgeUtil.isHexDigit(D))throw Eu(x.Char,uu());u+=uu()}return String.fromCodePoint(parseInt(u,16))}const nu={start(){if("eof"===M.type)throw Eu(x.EOF);iu()},beforePropertyName(){switch(M.type){case"identifier":case"string":return V=M.value,void(W="afterPropertyName");case"punctuator":return void Cu();case"eof":throw Eu(x.EOF)}},afterPropertyName(){if("eof"===M.type)throw Eu(x.EOF);W="beforePropertyValue"},beforePropertyValue(){if("eof"===M.type)throw Eu(x.EOF);iu()},afterPropertyValue(){if("eof"===M.type)throw Eu(x.EOF);switch(M.value){case",":return void(W="beforePropertyName");case"}":Cu()}},beforeArrayValue(){if("eof"===M.type)throw Eu(x.EOF);"punctuator"!==M.type||"]"!==M.value?iu():Cu()},afterArrayValue(){if("eof"===M.type)throw Eu(x.EOF);switch(M.value){case",":return void(W="beforeArrayValue");case"]":Cu()}},end(){}};function iu(){const u=function(){let u;switch(M.type){case"punctuator":switch(M.value){case"{":u={};break;case"[":u=[]}break;case"null":case"boolean":case"numeric":case"string":u=M.value}return u}();if(K&&"object"==typeof u&&(u._line=$,u._column=k),void 0===G)G=u;else{const D=U[U.length-1];Array.isArray(D)?K&&"object"!=typeof u?D.push({value:u,_line:$,_column:k}):D.push(u):D[V]=K&&"object"!=typeof u?{value:u,_line:$,_column:k}:u}!function(u){if(u&&"object"==typeof u)U.push(u),W=Array.isArray(u)?"beforeArrayValue":"beforePropertyName";else{const u=U[U.length-1];W=u?Array.isArray(u)?"afterArrayValue":"afterPropertyValue":"end"}}(u)}function Cu(){U.pop();const u=U[U.length-1];W=u?Array.isArray(u)?"afterArrayValue":"afterPropertyValue":"end"}function Fu(u){const D={"'":"\\'",'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\v":"\\v","\0":"\\0","\u2028":"\\u2028","\u2029":"\\u2029"};if(D[u])return D[u];if(u<" "){const D=u.charCodeAt(0).toString(16);return`\\x${`00${D}`.substring(D.length)}`}return u}function Eu(u,D){let e="";switch(u){case x.Char:e=void 0===D?`JSON5: invalid end of input at ${$}:${k}`:`JSON5: invalid character '${Fu(D)}' at ${$}:${k}`;break;case x.EOF:e=`JSON5: invalid end of input at ${$}:${k}`;break;case x.Identifier:k-=5,e=`JSON5: invalid identifier character at ${$}:${k}`}const t=new Au(e);return t.lineNumber=$,t.columnNumber=k,t}class Au extends SyntaxError{}var ou={},au=n&&n.__createBinding||(Object.create?function(u,D,e,t){void 0===t&&(t=e);var r=Object.getOwnPropertyDescriptor(D,e);r&&!("get"in r?!D.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return D[e]}}),Object.defineProperty(u,t,r)}:function(u,D,e,t){void 0===t&&(t=e),u[t]=D[e]}),cu=n&&n.__setModuleDefault||(Object.create?function(u,D){Object.defineProperty(u,"default",{enumerable:!0,value:D})}:function(u,D){u.default=D}),su=n&&n.__importStar||function(u){if(u&&u.__esModule)return u;var D={};if(null!=u)for(var e in u)"default"!==e&&Object.prototype.hasOwnProperty.call(u,e)&&au(D,u,e);return cu(D,u),D},lu=n&&n.__importDefault||function(u){return u&&u.__esModule?u:{default:u}};Object.defineProperty(ou,"__esModule",{value:!0}),ou.isFileExists=ou.offlinePluginConversion=ou.executeCommand=ou.getNpmPath=ou.hasNpmPackInPaths=void 0;const Bu=r,du=lu(e),fu=su(u),_u=i,pu=l;ou.hasNpmPackInPaths=function(u,D){try{return require.resolve(u,{paths:[...D]}),!0}catch(u){return!1}},ou.getNpmPath=function(){const u=process.execPath;return fu.join(fu.dirname(u),_u.NPM_TOOL)},ou.executeCommand=function(u,D,e){0!==(0,Bu.spawnSync)(u,D,e).status&&(0,pu.logErrorAndExit)(`Error: ${u} ${D} execute failed.See above for details.`)},ou.offlinePluginConversion=function(u,D){return D.startsWith("file:")||D.endsWith(".tgz")?fu.resolve(u,_u.HVIGOR,D.replace("file:","")):D},ou.isFileExists=function(u){return du.default.existsSync(u)&&du.default.statSync(u).isFile()};var Ou=n&&n.__createBinding||(Object.create?function(u,D,e,t){void 0===t&&(t=e);var r=Object.getOwnPropertyDescriptor(D,e);r&&!("get"in r?!D.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return D[e]}}),Object.defineProperty(u,t,r)}:function(u,D,e,t){void 0===t&&(t=e),u[t]=D[e]}),hu=n&&n.__setModuleDefault||(Object.create?function(u,D){Object.defineProperty(u,"default",{enumerable:!0,value:D})}:function(u,D){u.default=D}),Pu=n&&n.__importStar||function(u){if(u&&u.__esModule)return u;var D={};if(null!=u)for(var e in u)"default"!==e&&Object.prototype.hasOwnProperty.call(u,e)&&Ou(D,u,e);return hu(D,u),D},vu=n&&n.__importDefault||function(u){return u&&u.__esModule?u:{default:u}};Object.defineProperty(P,"__esModule",{value:!0});var gu=P.initProjectWorkSpace=void 0;const mu=Pu(e),Ru=vu(D),yu=Pu(u),Iu=v,Nu=i,bu=g,Su=l,wu=ou;let Hu,xu,Mu;function Tu(u,D,e){return void 0!==e.dependencies&&(0,wu.offlinePluginConversion)(Nu.HVIGOR_PROJECT_ROOT_DIR,D.dependencies[u])===yu.normalize(e.dependencies[u])}function Vu(){const u=yu.join(Mu,Nu.WORK_SPACE);if((0,Su.logInfoPrintConsole)("Hvigor cleaning..."),!mu.existsSync(u))return;const D=mu.readdirSync(u);if(!D||0===D.length)return;const e=yu.resolve(Mu,"node_modules","@ohos","hvigor","bin","hvigor.js");mu.existsSync(e)&&(0,wu.executeCommand)(process.argv[0],[e,"--stop-daemon"],{});try{D.forEach((D=>{mu.rmSync(yu.resolve(u,D),{recursive:!0})}))}catch(D){(0,Su.logErrorAndExit)(`The hvigor build tool cannot be installed. Please manually clear the workspace directory and synchronize the project again.\n\n Workspace Path: ${u}.`)}}gu=P.initProjectWorkSpace=function(){if(Hu=function(){const u=yu.resolve(Nu.HVIGOR_PROJECT_WRAPPER_HOME,Nu.DEFAULT_HVIGOR_CONFIG_JSON_FILE_NAME);mu.existsSync(u)||(0,Su.logErrorAndExit)(`Error: Hvigor config file ${u} does not exist.`);return(0,bu.parseJsonFile)(u)}(),Mu=function(u){let D;D=function(u){let D=u.hvigorVersion;if(D.startsWith("file:")||D.endsWith(".tgz"))return!1;const e=u.dependencies,t=Object.getOwnPropertyNames(e);for(const u of t){const D=e[u];if(D.startsWith("file:")||D.endsWith(".tgz"))return!1}if(1===t.length&&"@ohos/hvigor-ohos-plugin"===t[0])return D>"2.5.0";return!1}(u)?function(u){let D=`${Nu.HVIGOR_ENGINE_PACKAGE_NAME}@${u.hvigorVersion}`;const e=u.dependencies;if(e){Object.getOwnPropertyNames(e).sort().forEach((u=>{D+=`,${u}@${e[u]}`}))}return(0,Iu.hash)(D)}(u):(0,Iu.hash)(process.cwd());return yu.resolve(Ru.default.homedir(),".hvigor","project_caches",D)}(Hu),xu=function(){const u=yu.resolve(Mu,Nu.WORK_SPACE,Nu.DEFAULT_PACKAGE_JSON);return mu.existsSync(u)?(0,bu.parseJsonFile)(u):{dependencies:{}}}(),!(0,wu.hasNpmPackInPaths)(Nu.HVIGOR_ENGINE_PACKAGE_NAME,[yu.join(Mu,Nu.WORK_SPACE)])||(0,wu.offlinePluginConversion)(Nu.HVIGOR_PROJECT_ROOT_DIR,Hu.hvigorVersion)!==xu.dependencies[Nu.HVIGOR_ENGINE_PACKAGE_NAME]||!function(){function u(u){const D=null==u?void 0:u.dependencies;return void 0===D?0:Object.getOwnPropertyNames(D).length}const D=u(Hu),e=u(xu);if(D+1!==e)return!1;for(const u in null==Hu?void 0:Hu.dependencies)if(!(0,wu.hasNpmPackInPaths)(u,[yu.join(Mu,Nu.WORK_SPACE)])||!Tu(u,Hu,xu))return!1;return!0}()){Vu();try{!function(){(0,Su.logInfoPrintConsole)("Hvigor installing...");for(const u in Hu.dependencies)Hu.dependencies[u]&&(Hu.dependencies[u]=(0,wu.offlinePluginConversion)(Nu.HVIGOR_PROJECT_ROOT_DIR,Hu.dependencies[u]));const u={dependencies:{...Hu.dependencies}};u.dependencies[Nu.HVIGOR_ENGINE_PACKAGE_NAME]=(0,wu.offlinePluginConversion)(Nu.HVIGOR_PROJECT_ROOT_DIR,Hu.hvigorVersion);const D=yu.join(Mu,Nu.WORK_SPACE);try{mu.mkdirSync(D,{recursive:!0});const e=yu.resolve(D,Nu.DEFAULT_PACKAGE_JSON);mu.writeFileSync(e,JSON.stringify(u))}catch(u){(0,Su.logErrorAndExit)(u)}(function(){const u=["config","set","store-dir",Nu.HVIGOR_PNPM_STORE_PATH],D={cwd:yu.join(Mu,Nu.WORK_SPACE),stdio:["inherit","inherit","inherit"]};(0,wu.executeCommand)(Nu.HVIGOR_WRAPPER_PNPM_SCRIPT_PATH,u,D)})(),function(){const u=["install"],D={cwd:yu.join(Mu,Nu.WORK_SPACE),stdio:["inherit","inherit","inherit"]};(0,wu.executeCommand)(Nu.HVIGOR_WRAPPER_PNPM_SCRIPT_PATH,u,D)}(),(0,Su.logInfoPrintConsole)("Hvigor install success.")}()}catch(u){Vu()}}return Mu};var Gu={};!function(t){var C=n&&n.__createBinding||(Object.create?function(u,D,e,t){void 0===t&&(t=e);var r=Object.getOwnPropertyDescriptor(D,e);r&&!("get"in r?!D.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return D[e]}}),Object.defineProperty(u,t,r)}:function(u,D,e,t){void 0===t&&(t=e),u[t]=D[e]}),F=n&&n.__setModuleDefault||(Object.create?function(u,D){Object.defineProperty(u,"default",{enumerable:!0,value:D})}:function(u,D){u.default=D}),E=n&&n.__importStar||function(u){if(u&&u.__esModule)return u;var D={};if(null!=u)for(var e in u)"default"!==e&&Object.prototype.hasOwnProperty.call(u,e)&&C(D,u,e);return F(D,u),D},A=n&&n.__importDefault||function(u){return u&&u.__esModule?u:{default:u}};Object.defineProperty(t,"__esModule",{value:!0}),t.executeInstallPnpm=t.isPnpmInstalled=t.environmentHandler=t.checkNpmConifg=t.PNPM_VERSION=void 0;const o=r,a=E(e),c=A(D),s=E(u),B=i,d=l,f=ou;t.PNPM_VERSION="7.30.0",t.checkNpmConifg=function(){const u=s.resolve(B.HVIGOR_PROJECT_ROOT_DIR,".npmrc"),D=s.resolve(c.default.homedir(),".npmrc");if((0,f.isFileExists)(u)||(0,f.isFileExists)(D))return;const e=(0,f.getNpmPath)(),t=(0,o.spawnSync)(e,["config","get","prefix"],{cwd:B.HVIGOR_PROJECT_ROOT_DIR});if(0!==t.status||!t.stdout)return void(0,d.logErrorAndExit)("Error: The hvigor depends on the npmrc file. Configure the npmrc file first.");const r=s.resolve(`${t.stdout}`.replace(/[\r\n]/gi,""),".npmrc");(0,f.isFileExists)(r)||(0,d.logErrorAndExit)("Error: The hvigor depends on the npmrc file. Configure the npmrc file first.")},t.environmentHandler=function(){process.env["npm_config_update-notifier"]="false"},t.isPnpmInstalled=function(){return!!a.existsSync(B.HVIGOR_WRAPPER_PNPM_SCRIPT_PATH)&&(0,f.hasNpmPackInPaths)("pnpm",[B.HVIGOR_WRAPPER_TOOLS_HOME])},t.executeInstallPnpm=function(){(0,d.logInfoPrintConsole)(`Installing pnpm@${t.PNPM_VERSION}...`);const u=(0,f.getNpmPath)();!function(){const u=s.resolve(B.HVIGOR_WRAPPER_TOOLS_HOME,B.DEFAULT_PACKAGE_JSON);try{a.existsSync(B.HVIGOR_WRAPPER_TOOLS_HOME)||a.mkdirSync(B.HVIGOR_WRAPPER_TOOLS_HOME,{recursive:!0});const D={dependencies:{}};D.dependencies[B.PNPM]=t.PNPM_VERSION,a.writeFileSync(u,JSON.stringify(D))}catch(D){(0,d.logErrorAndExit)(`Error: EPERM: operation not permitted,create ${u} failed.`)}}(),(0,f.executeCommand)(u,["install","pnpm"],{cwd:B.HVIGOR_WRAPPER_TOOLS_HOME,stdio:["inherit","inherit","inherit"],env:process.env}),(0,d.logInfoPrintConsole)("Pnpm install success.")}}(Gu),function(){Gu.checkNpmConifg(),Gu.environmentHandler(),Gu.isPnpmInstalled()||Gu.executeInstallPnpm();const D=gu();_(u.join(D,i.WORK_SPACE))}(); \ No newline at end of file diff --git a/HarmonyOS_NEXT/Widget/FormGame/hvigorfile.js b/HarmonyOS_NEXT/Widget/FormGame/hvigorfile.js new file mode 100644 index 0000000000000000000000000000000000000000..5f2735e3deeaf655828407544bbed9365c258278 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/hvigorfile.js @@ -0,0 +1,2 @@ +// Script for compiling build behavior. It is built in the build plug-in and cannot be modified currently. +module.exports = require('@ohos/hvigor-ohos-plugin').appTasks \ No newline at end of file diff --git a/HarmonyOS_NEXT/Widget/FormGame/hvigorw b/HarmonyOS_NEXT/Widget/FormGame/hvigorw new file mode 100644 index 0000000000000000000000000000000000000000..ff6a29a2ac9e13860657c8e33464123f4da4b7ed --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/hvigorw @@ -0,0 +1,48 @@ +#!/bin/bash + +# ---------------------------------------------------------------------------- +# Hvigor startup script, version 1.0.0 +# +# Required ENV vars: +# ------------------ +# NODE_HOME - location of a Node home dir +# or +# Add /usr/local/nodejs/bin to the PATH environment variable +# ---------------------------------------------------------------------------- + +HVIGOR_APP_HOME="`pwd -P`" +HVIGOR_WRAPPER_SCRIPT=${HVIGOR_APP_HOME}/hvigor/hvigor-wrapper.js +warn() { + echo "" + echo -e "\033[1;33m`date '+[%Y-%m-%d %H:%M:%S]'`$@\033[0m" +} + +error() { + echo "" + echo -e "\033[1;31m`date '+[%Y-%m-%d %H:%M:%S]'`$@\033[0m" +} + +fail() { + error "$@" + exit 1 +} + +# Determine node to start hvigor wrapper script +if [ -n "${NODE_HOME}" ];then + EXECUTABLE_NODE="${NODE_HOME}/bin/node" + if [ ! -x "$EXECUTABLE_NODE" ];then + fail "ERROR: NODE_HOME is set to an invalid directory,check $NODE_HOME\n\nPlease set NODE_HOME in your environment to the location where your nodejs installed" + fi +else + EXECUTABLE_NODE="node" + which ${EXECUTABLE_NODE} > /dev/null 2>&1 || fail "ERROR: NODE_HOME is not set and not 'node' command found in your path" +fi + +# Check hvigor wrapper script +if [ ! -r "$HVIGOR_WRAPPER_SCRIPT" ];then + fail "ERROR: Couldn't find hvigor/hvigor-wrapper.js in ${HVIGOR_APP_HOME}" +fi + +# start hvigor-wrapper script +exec "${EXECUTABLE_NODE}" \ + "${HVIGOR_WRAPPER_SCRIPT}" "$@" diff --git a/HarmonyOS_NEXT/Widget/FormGame/hvigorw.bat b/HarmonyOS_NEXT/Widget/FormGame/hvigorw.bat new file mode 100644 index 0000000000000000000000000000000000000000..d570007e8a178639a230d95b94a09dcda89969d8 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/hvigorw.bat @@ -0,0 +1,64 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Hvigor startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +set WRAPPER_MODULE_PATH=%APP_HOME%\hvigor\hvigor-wrapper.js +set NODE_EXE=node.exe + +goto start + +:start +@rem Find node.exe +if defined NODE_HOME goto findNodeFromNodeHome + +%NODE_EXE% --version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: NODE_HOME is not set and no 'node' command could be found in your PATH. +echo. +echo Please set the NODE_HOME variable in your environment to match the +echo location of your NodeJs installation. + +goto fail + +:findNodeFromNodeHome +set NODE_HOME=%NODE_HOME:"=% +set NODE_EXE_PATH=%NODE_HOME%/%NODE_EXE% + +if exist "%NODE_EXE_PATH%" goto execute +echo. +echo ERROR: NODE_HOME is not set and no 'node' command could be found in your PATH. +echo. +echo Please set the NODE_HOME variable in your environment to match the +echo location of your NodeJs installation. + +goto fail + +:execute +@rem Execute hvigor +"%NODE_EXE%" "%WRAPPER_MODULE_PATH%" %* + +if "%ERRORLEVEL%" == "0" goto hvigorwEnd + +:fail +exit /b 1 + +:hvigorwEnd +if "%OS%" == "Windows_NT" endlocal + +:end diff --git a/HarmonyOS_NEXT/Widget/FormGame/oh-package.json5 b/HarmonyOS_NEXT/Widget/FormGame/oh-package.json5 new file mode 100644 index 0000000000000000000000000000000000000000..d6d1216a52c576443375170d04910a5c69a6f417 --- /dev/null +++ b/HarmonyOS_NEXT/Widget/FormGame/oh-package.json5 @@ -0,0 +1,9 @@ +{ + "devDependencies": { + "@ohos/hypium": "1.0.6" + }, + "name": "formapplication", + "description": "", + "version": "1.0.0", + "dependencies": {} +} diff --git a/HarmonyOS_NEXT/Widget/FormGame/screenshots/FormGameAdd.png b/HarmonyOS_NEXT/Widget/FormGame/screenshots/FormGameAdd.png new file mode 100644 index 0000000000000000000000000000000000000000..fe275aa7dc052cc0a3b510add63472a146c495af Binary files /dev/null and b/HarmonyOS_NEXT/Widget/FormGame/screenshots/FormGameAdd.png differ diff --git a/HarmonyOS_NEXT/Widget/FormGame/screenshots/FormGamePlay.png b/HarmonyOS_NEXT/Widget/FormGame/screenshots/FormGamePlay.png new file mode 100644 index 0000000000000000000000000000000000000000..8b4c3c1e7a1ba8ef913f3edc28e2aa823fee89b1 Binary files /dev/null and b/HarmonyOS_NEXT/Widget/FormGame/screenshots/FormGamePlay.png differ