@authme/liveness 2.2.0-rc.9 → 2.2.1-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +22 -0
- package/package.json +5 -4
- package/src/lib/data-access/dto.interface.d.ts +6 -1
- package/src/lib/data-access/dto.interface.js +7 -0
- package/src/lib/data-access/dto.interface.js.map +1 -1
- package/src/lib/enum/fas-recognition.enum.d.ts +1 -46
- package/src/lib/enum/fas-recognition.enum.js +8 -53
- package/src/lib/enum/fas-recognition.enum.js.map +1 -1
- package/src/lib/modules-liveness-feature-liveness.d.ts +2 -2
- package/src/lib/modules-liveness-feature-liveness.js +7 -10
- package/src/lib/modules-liveness-feature-liveness.js.map +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,28 @@
|
|
|
2
2
|
|
|
3
3
|
This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
|
|
4
4
|
|
|
5
|
+
## [2.2.1-rc.1](https://github.com/AuthMe01/web-client-sdk/compare/v2.2.1-rc.0...v2.2.1-rc.1) (2022-12-28)
|
|
6
|
+
|
|
7
|
+
## [2.2.1-rc.0](https://github.com/AuthMe01/web-client-sdk/compare/v2.2.0...v2.2.1-rc.0) (2022-12-22)
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
- implement preloadBackground feature ([4b58a16](https://github.com/AuthMe01/web-client-sdk/commit/4b58a16dbdd506d48ce9f9671d8154997f4b9839))
|
|
12
|
+
|
|
13
|
+
## [2.2.0](https://github.com/AuthMe01/web-client-sdk/compare/v2.2.0-rc.13...v2.2.0) (2022-12-19)
|
|
14
|
+
|
|
15
|
+
## [2.2.0-rc.13](https://github.com/AuthMe01/web-client-sdk/compare/v2.2.0-rc.12...v2.2.0-rc.13) (2022-12-19)
|
|
16
|
+
|
|
17
|
+
### Bug Fixes
|
|
18
|
+
|
|
19
|
+
- 1.implement enum LivenessResultStatus 2.modify getResult api recall condition ([28323f0](https://github.com/AuthMe01/web-client-sdk/commit/28323f0714657c9c19d230a2771dde5f5bdbe8f9))
|
|
20
|
+
|
|
21
|
+
## [2.2.0-rc.12](https://github.com/AuthMe01/web-client-sdk/compare/v2.2.0-rc.11...v2.2.0-rc.12) (2022-12-16)
|
|
22
|
+
|
|
23
|
+
## [2.2.0-rc.11](https://github.com/AuthMe01/web-client-sdk/compare/v2.2.0-rc.10...v2.2.0-rc.11) (2022-12-16)
|
|
24
|
+
|
|
25
|
+
## [2.2.0-rc.10](https://github.com/AuthMe01/web-client-sdk/compare/v2.2.0-rc.9...v2.2.0-rc.10) (2022-12-15)
|
|
26
|
+
|
|
5
27
|
## [2.2.0-rc.9](https://github.com/AuthMe01/web-client-sdk/compare/v2.2.0-rc.8...v2.2.0-rc.9) (2022-12-09)
|
|
6
28
|
|
|
7
29
|
## [2.2.0-rc.8](https://github.com/AuthMe01/web-client-sdk/compare/v2.2.0-rc.7...v2.2.0-rc.8) (2022-12-07)
|
package/package.json
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@authme/liveness",
|
|
3
|
-
"version": "2.2.
|
|
3
|
+
"version": "2.2.1-rc.1",
|
|
4
4
|
"main": "./src/index.js",
|
|
5
5
|
"typings": "./src/index.d.ts",
|
|
6
6
|
"dependencies": {},
|
|
7
7
|
"peerDependencies": {
|
|
8
|
-
"@authme/core": "2.2.
|
|
9
|
-
"@authme/util": "2.2.
|
|
8
|
+
"@authme/core": "2.2.1-rc.1",
|
|
9
|
+
"@authme/util": "2.2.1-rc.1",
|
|
10
10
|
"three": "^0.136.0",
|
|
11
|
-
"
|
|
11
|
+
"lottie-web": "^5.9.2",
|
|
12
|
+
"@authme/engine": "2.2.1-rc.1",
|
|
12
13
|
"rxjs": "~7.4.0",
|
|
13
14
|
"tslib": "^2.3.0"
|
|
14
15
|
}
|
|
@@ -28,10 +28,15 @@ export interface LivenessInitResponse {
|
|
|
28
28
|
};
|
|
29
29
|
}
|
|
30
30
|
export interface LivenessResultResponse {
|
|
31
|
-
state:
|
|
31
|
+
state: LivenessResultStatus;
|
|
32
32
|
isPass: boolean;
|
|
33
33
|
score: number;
|
|
34
34
|
createTime: string;
|
|
35
35
|
updateTime: string;
|
|
36
36
|
expiryTime: string;
|
|
37
37
|
}
|
|
38
|
+
export declare enum LivenessResultStatus {
|
|
39
|
+
DONE = "DONE",
|
|
40
|
+
VALIDATING = "Validating",
|
|
41
|
+
UPLOADING = "Uploading"
|
|
42
|
+
}
|
|
@@ -1,3 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LivenessResultStatus = void 0;
|
|
4
|
+
var LivenessResultStatus;
|
|
5
|
+
(function (LivenessResultStatus) {
|
|
6
|
+
LivenessResultStatus["DONE"] = "DONE";
|
|
7
|
+
LivenessResultStatus["VALIDATING"] = "Validating";
|
|
8
|
+
LivenessResultStatus["UPLOADING"] = "Uploading";
|
|
9
|
+
})(LivenessResultStatus = exports.LivenessResultStatus || (exports.LivenessResultStatus = {}));
|
|
3
10
|
//# sourceMappingURL=dto.interface.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dto.interface.js","sourceRoot":"","sources":["../../../../../../../../libs/modules/liveness/feature-liveness/src/lib/data-access/dto.interface.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"dto.interface.js","sourceRoot":"","sources":["../../../../../../../../libs/modules/liveness/feature-liveness/src/lib/data-access/dto.interface.ts"],"names":[],"mappings":";;;AAuCA,IAAY,oBAIX;AAJD,WAAY,oBAAoB;IAC9B,qCAAa,CAAA;IACb,iDAAyB,CAAA;IACzB,+CAAuB,CAAA;AACzB,CAAC,EAJW,oBAAoB,GAApB,4BAAoB,KAApB,4BAAoB,QAI/B"}
|
|
@@ -1,46 +1 @@
|
|
|
1
|
-
export
|
|
2
|
-
Failed = "EAuthMeFASServiceStatus_Failed",
|
|
3
|
-
NoFace = "EAuthMeFASServiceStatus_NoFace",
|
|
4
|
-
FaceNotAtCenter = "EAuthMeFASServiceStatus_FaceNotAtCenter",
|
|
5
|
-
FaceTooSmall = "EAuthMeFASServiceStatus_FaceTooSmall",
|
|
6
|
-
FaceTooLarge = "EAuthMeFASServiceStatus_FaceTooLarge",
|
|
7
|
-
NeedFaceToCamera = "EAuthMeFASServiceStatus_NeedFaceToCamera",
|
|
8
|
-
FaceMasked = "EAuthMeFASServiceStatus_FaceMasked",
|
|
9
|
-
NeedOpenMouth = "EAuthMeFASServiceStatus_NeedOpenMouth",
|
|
10
|
-
NeedCloseMouth = "EAuthMeFASServiceStatus_NeedCloseMouth",
|
|
11
|
-
NeedSmile = "EAuthMeFASServiceStatus_NeedSmile",
|
|
12
|
-
NeedOpenEyes = "EAuthMeFASServiceStatus_NeedOpenEyes",
|
|
13
|
-
NeedMoreFrame = "EAuthMeFASServiceStatus_NeedMoreFrame",
|
|
14
|
-
Error = "EAuthMeFASServiceStatus_Error",
|
|
15
|
-
Pass = "EAuthMeFASServiceStatus_Pass"
|
|
16
|
-
}
|
|
17
|
-
export declare enum EAuthMeFASServiceStage {
|
|
18
|
-
Passive = "EAuthMeFASServiceStage_Passive",
|
|
19
|
-
OpenMouth = "EAuthMeFASServiceStage_OpenMouth",
|
|
20
|
-
CloseMouth = "EAuthMeFASServiceStage_CloseMouth",
|
|
21
|
-
Smile = "EAuthMeFASServiceStage_Smile",
|
|
22
|
-
Done = "EAuthMeFASServiceStage_Done"
|
|
23
|
-
}
|
|
24
|
-
export declare enum EAuthMeEyeStatus {
|
|
25
|
-
Eye_Close = "EAuthMeEyeStatus_Eye_Close",
|
|
26
|
-
Eye_Open = "EAuthMeEyeStatus_Eye_Open"
|
|
27
|
-
}
|
|
28
|
-
export declare enum EAuthMeMouthStatus {
|
|
29
|
-
Mouth_Close = "EAuthMeMouthStatus_Mouth_Close",
|
|
30
|
-
Mouth_Open = "EAuthMeMouthStatus_Mouth_Open"
|
|
31
|
-
}
|
|
32
|
-
export declare enum EAuthMeFacePose {
|
|
33
|
-
Unknown = "EAuthMeFacePose_Unknown",
|
|
34
|
-
LeftProfile = "EAuthMeFacePose_LeftProfile",
|
|
35
|
-
LeftFrontal = "EAuthMeFacePose_LeftFrontal",
|
|
36
|
-
Frontal = "EAuthMeFacePose_Frontal",
|
|
37
|
-
RightFrontal = "EAuthMeFacePose_RightFrontal",
|
|
38
|
-
RightProfile = "EAuthMeFacePose_RightProfile",
|
|
39
|
-
UpFrontal = "EAuthMeFacePose_UpFrontal",
|
|
40
|
-
DownFrontal = "EAuthMeFacePose_DownFrontal"
|
|
41
|
-
}
|
|
42
|
-
export declare enum EAuthMeFaceAntiSpoofingStatus {
|
|
43
|
-
FrameNotEnough = "EAuthMeFaceAntiSpoofingStatus_FrameNotEnough",
|
|
44
|
-
Real = "EAuthMeFaceAntiSpoofingStatus_Real",
|
|
45
|
-
Spoof = "EAuthMeFaceAntiSpoofingStatus_Spoof"
|
|
46
|
-
}
|
|
1
|
+
export { EAuthMeEyeStatus, EAuthMeFaceAntiSpoofingStatus, EAuthMeFacePose, EAuthMeFASServiceStage, EAuthMeMouthStatus, EAuthMeFASServiceStatus as FasRecognitionResult, } from '@authme/engine';
|
|
@@ -1,56 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
var
|
|
5
|
-
(function (
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
FasRecognitionResult["NeedFaceToCamera"] = "EAuthMeFASServiceStatus_NeedFaceToCamera";
|
|
12
|
-
FasRecognitionResult["FaceMasked"] = "EAuthMeFASServiceStatus_FaceMasked";
|
|
13
|
-
FasRecognitionResult["NeedOpenMouth"] = "EAuthMeFASServiceStatus_NeedOpenMouth";
|
|
14
|
-
FasRecognitionResult["NeedCloseMouth"] = "EAuthMeFASServiceStatus_NeedCloseMouth";
|
|
15
|
-
FasRecognitionResult["NeedSmile"] = "EAuthMeFASServiceStatus_NeedSmile";
|
|
16
|
-
FasRecognitionResult["NeedOpenEyes"] = "EAuthMeFASServiceStatus_NeedOpenEyes";
|
|
17
|
-
FasRecognitionResult["NeedMoreFrame"] = "EAuthMeFASServiceStatus_NeedMoreFrame";
|
|
18
|
-
FasRecognitionResult["Error"] = "EAuthMeFASServiceStatus_Error";
|
|
19
|
-
FasRecognitionResult["Pass"] = "EAuthMeFASServiceStatus_Pass";
|
|
20
|
-
})(FasRecognitionResult = exports.FasRecognitionResult || (exports.FasRecognitionResult = {}));
|
|
21
|
-
var EAuthMeFASServiceStage;
|
|
22
|
-
(function (EAuthMeFASServiceStage) {
|
|
23
|
-
EAuthMeFASServiceStage["Passive"] = "EAuthMeFASServiceStage_Passive";
|
|
24
|
-
EAuthMeFASServiceStage["OpenMouth"] = "EAuthMeFASServiceStage_OpenMouth";
|
|
25
|
-
EAuthMeFASServiceStage["CloseMouth"] = "EAuthMeFASServiceStage_CloseMouth";
|
|
26
|
-
EAuthMeFASServiceStage["Smile"] = "EAuthMeFASServiceStage_Smile";
|
|
27
|
-
EAuthMeFASServiceStage["Done"] = "EAuthMeFASServiceStage_Done";
|
|
28
|
-
})(EAuthMeFASServiceStage = exports.EAuthMeFASServiceStage || (exports.EAuthMeFASServiceStage = {}));
|
|
29
|
-
var EAuthMeEyeStatus;
|
|
30
|
-
(function (EAuthMeEyeStatus) {
|
|
31
|
-
EAuthMeEyeStatus["Eye_Close"] = "EAuthMeEyeStatus_Eye_Close";
|
|
32
|
-
EAuthMeEyeStatus["Eye_Open"] = "EAuthMeEyeStatus_Eye_Open";
|
|
33
|
-
})(EAuthMeEyeStatus = exports.EAuthMeEyeStatus || (exports.EAuthMeEyeStatus = {}));
|
|
34
|
-
var EAuthMeMouthStatus;
|
|
35
|
-
(function (EAuthMeMouthStatus) {
|
|
36
|
-
EAuthMeMouthStatus["Mouth_Close"] = "EAuthMeMouthStatus_Mouth_Close";
|
|
37
|
-
EAuthMeMouthStatus["Mouth_Open"] = "EAuthMeMouthStatus_Mouth_Open";
|
|
38
|
-
})(EAuthMeMouthStatus = exports.EAuthMeMouthStatus || (exports.EAuthMeMouthStatus = {}));
|
|
39
|
-
var EAuthMeFacePose;
|
|
40
|
-
(function (EAuthMeFacePose) {
|
|
41
|
-
EAuthMeFacePose["Unknown"] = "EAuthMeFacePose_Unknown";
|
|
42
|
-
EAuthMeFacePose["LeftProfile"] = "EAuthMeFacePose_LeftProfile";
|
|
43
|
-
EAuthMeFacePose["LeftFrontal"] = "EAuthMeFacePose_LeftFrontal";
|
|
44
|
-
EAuthMeFacePose["Frontal"] = "EAuthMeFacePose_Frontal";
|
|
45
|
-
EAuthMeFacePose["RightFrontal"] = "EAuthMeFacePose_RightFrontal";
|
|
46
|
-
EAuthMeFacePose["RightProfile"] = "EAuthMeFacePose_RightProfile";
|
|
47
|
-
EAuthMeFacePose["UpFrontal"] = "EAuthMeFacePose_UpFrontal";
|
|
48
|
-
EAuthMeFacePose["DownFrontal"] = "EAuthMeFacePose_DownFrontal";
|
|
49
|
-
})(EAuthMeFacePose = exports.EAuthMeFacePose || (exports.EAuthMeFacePose = {}));
|
|
50
|
-
var EAuthMeFaceAntiSpoofingStatus;
|
|
51
|
-
(function (EAuthMeFaceAntiSpoofingStatus) {
|
|
52
|
-
EAuthMeFaceAntiSpoofingStatus["FrameNotEnough"] = "EAuthMeFaceAntiSpoofingStatus_FrameNotEnough";
|
|
53
|
-
EAuthMeFaceAntiSpoofingStatus["Real"] = "EAuthMeFaceAntiSpoofingStatus_Real";
|
|
54
|
-
EAuthMeFaceAntiSpoofingStatus["Spoof"] = "EAuthMeFaceAntiSpoofingStatus_Spoof";
|
|
55
|
-
})(EAuthMeFaceAntiSpoofingStatus = exports.EAuthMeFaceAntiSpoofingStatus || (exports.EAuthMeFaceAntiSpoofingStatus = {}));
|
|
3
|
+
exports.FasRecognitionResult = exports.EAuthMeMouthStatus = exports.EAuthMeFASServiceStage = exports.EAuthMeFacePose = exports.EAuthMeFaceAntiSpoofingStatus = exports.EAuthMeEyeStatus = void 0;
|
|
4
|
+
var engine_1 = require("@authme/engine");
|
|
5
|
+
Object.defineProperty(exports, "EAuthMeEyeStatus", { enumerable: true, get: function () { return engine_1.EAuthMeEyeStatus; } });
|
|
6
|
+
Object.defineProperty(exports, "EAuthMeFaceAntiSpoofingStatus", { enumerable: true, get: function () { return engine_1.EAuthMeFaceAntiSpoofingStatus; } });
|
|
7
|
+
Object.defineProperty(exports, "EAuthMeFacePose", { enumerable: true, get: function () { return engine_1.EAuthMeFacePose; } });
|
|
8
|
+
Object.defineProperty(exports, "EAuthMeFASServiceStage", { enumerable: true, get: function () { return engine_1.EAuthMeFASServiceStage; } });
|
|
9
|
+
Object.defineProperty(exports, "EAuthMeMouthStatus", { enumerable: true, get: function () { return engine_1.EAuthMeMouthStatus; } });
|
|
10
|
+
Object.defineProperty(exports, "FasRecognitionResult", { enumerable: true, get: function () { return engine_1.EAuthMeFASServiceStatus; } });
|
|
56
11
|
//# sourceMappingURL=fas-recognition.enum.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fas-recognition.enum.js","sourceRoot":"","sources":["../../../../../../../../libs/modules/liveness/feature-liveness/src/lib/enum/fas-recognition.enum.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"fas-recognition.enum.js","sourceRoot":"","sources":["../../../../../../../../libs/modules/liveness/feature-liveness/src/lib/enum/fas-recognition.enum.ts"],"names":[],"mappings":";;;AAAA,yCAOwB;AANtB,0GAAA,gBAAgB,OAAA;AAChB,uHAAA,6BAA6B,OAAA;AAC7B,yGAAA,eAAe,OAAA;AACf,gHAAA,sBAAsB,OAAA;AACtB,4GAAA,kBAAkB,OAAA;AAClB,8GAAA,uBAAuB,OAAwB"}
|
|
@@ -3,7 +3,7 @@ import { EAuthMeFASServiceStage } from './enum';
|
|
|
3
3
|
import { FasResult } from './interface';
|
|
4
4
|
export declare class FasService extends AuthmeEngineModuleBase<FasResult> {
|
|
5
5
|
constructor(engine: MlEngine);
|
|
6
|
-
setStage(stageList: EAuthMeFASServiceStage[]): Promise<
|
|
6
|
+
setStage(stageList: EAuthMeFASServiceStage[]): Promise<unknown>;
|
|
7
7
|
getStageParams(stageIndex: number): Promise<{
|
|
8
8
|
applyFAS: 0 | 1;
|
|
9
9
|
fThreshold: number;
|
|
@@ -13,5 +13,5 @@ export declare class FasService extends AuthmeEngineModuleBase<FasResult> {
|
|
|
13
13
|
applyFAS: 0 | 1;
|
|
14
14
|
fThreshold: number;
|
|
15
15
|
iFrameNum: number;
|
|
16
|
-
}): Promise<
|
|
16
|
+
}): Promise<unknown>;
|
|
17
17
|
}
|
|
@@ -1,28 +1,25 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.FasService = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
4
|
const engine_1 = require("@authme/engine");
|
|
6
|
-
const rxjs_1 = require("rxjs");
|
|
7
5
|
class FasService extends engine_1.AuthmeEngineModuleBase {
|
|
8
6
|
constructor(engine) {
|
|
9
7
|
super(engine);
|
|
10
8
|
this.moduleName = engine_1.EngineModule.Fas;
|
|
11
9
|
}
|
|
12
10
|
setStage(stageList) {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
11
|
+
const stageStrList = stageList.map((x) => x.split('_')[1]);
|
|
12
|
+
return this.engine.run(this.moduleName, 'setStage', {
|
|
13
|
+
stageList: stageStrList,
|
|
16
14
|
});
|
|
17
15
|
}
|
|
18
16
|
getStageParams(stageIndex) {
|
|
19
|
-
return
|
|
20
|
-
return yield (0, rxjs_1.firstValueFrom)(this.engine.run(this.moduleName, 'getStageParams', { stageIndex }));
|
|
21
|
-
});
|
|
17
|
+
return this.engine.run(this.moduleName, 'getStageParams', { stageIndex });
|
|
22
18
|
}
|
|
23
19
|
setStageParams(stageIndex, value) {
|
|
24
|
-
return
|
|
25
|
-
|
|
20
|
+
return this.engine.run(this.moduleName, 'setStageParams', {
|
|
21
|
+
stageIndex,
|
|
22
|
+
value,
|
|
26
23
|
});
|
|
27
24
|
}
|
|
28
25
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modules-liveness-feature-liveness.js","sourceRoot":"","sources":["../../../../../../../libs/modules/liveness/feature-liveness/src/lib/modules-liveness-feature-liveness.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"modules-liveness-feature-liveness.js","sourceRoot":"","sources":["../../../../../../../libs/modules/liveness/feature-liveness/src/lib/modules-liveness-feature-liveness.ts"],"names":[],"mappings":";;;AAAA,2CAAgF;AAIhF,MAAa,UAAW,SAAQ,+BAAiC;IAC/D,YAAY,MAAgB;QAC1B,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,IAAI,CAAC,UAAU,GAAG,qBAAY,CAAC,GAAG,CAAC;IACrC,CAAC;IAED,QAAQ,CAAC,SAAmC;QAC1C,MAAM,YAAY,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3D,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE;YAClD,SAAS,EAAE,YAAY;SACxB,CAAC,CAAC;IACL,CAAC;IAED,cAAc,CACZ,UAAkB;QAElB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,gBAAgB,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;IAC5E,CAAC;IAED,cAAc,CACZ,UAAkB,EAClB,KAAiE;QAEjE,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,gBAAgB,EAAE;YACxD,UAAU;YACV,KAAK;SACN,CAAC,CAAC;IACL,CAAC;CACF;AA5BD,gCA4BC"}
|