@rick427/react-native-liveness 0.2.4 → 0.3.0
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/README.md +7 -14
- package/lib/module/LivenessCamera.js +27 -34
- package/lib/module/LivenessCamera.js.map +1 -1
- package/lib/module/LivenessCameraModal.js +0 -4
- package/lib/module/LivenessCameraModal.js.map +1 -1
- package/lib/module/livenessScoring.js +33 -61
- package/lib/module/livenessScoring.js.map +1 -1
- package/lib/module/useLivenessCamera.js +49 -75
- package/lib/module/useLivenessCamera.js.map +1 -1
- package/lib/typescript/src/LivenessCamera.d.ts +1 -1
- package/lib/typescript/src/LivenessCamera.d.ts.map +1 -1
- package/lib/typescript/src/LivenessCameraModal.d.ts +1 -1
- package/lib/typescript/src/LivenessCameraModal.d.ts.map +1 -1
- package/lib/typescript/src/livenessScoring.d.ts +13 -8
- package/lib/typescript/src/livenessScoring.d.ts.map +1 -1
- package/lib/typescript/src/types.d.ts +2 -12
- package/lib/typescript/src/types.d.ts.map +1 -1
- package/lib/typescript/src/useLivenessCamera.d.ts +0 -2
- package/lib/typescript/src/useLivenessCamera.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/LivenessCamera.tsx +10 -20
- package/src/LivenessCameraModal.tsx +0 -4
- package/src/livenessScoring.ts +54 -91
- package/src/types.ts +4 -18
- package/src/useLivenessCamera.ts +56 -96
package/README.md
CHANGED
|
@@ -151,8 +151,6 @@ export default function VerificationScreen() {
|
|
|
151
151
|
| `onLivenessConfirmed` | `() => void` | — | Fired the moment liveness is confirmed, before countdown. |
|
|
152
152
|
| `onError` | `(err: Error) => void` | — | Fired on unrecoverable errors. |
|
|
153
153
|
| `countdownFrom` | `number` | `3` | Countdown start value. |
|
|
154
|
-
| `livenessThreshold` | `number` | `0.65` | Per-frame score (0–1) required to count as a good frame. |
|
|
155
|
-
| `confirmFrames` | `number` | `7` | Consecutive good frames required to confirm liveness (~350 ms at 20 fps). |
|
|
156
154
|
| `soundEnabled` | `boolean` | `true` | Play native shutter sound on capture. |
|
|
157
155
|
| `fontFamily` | `string` | `'Baloo-Medium'` | Font applied to all text inside the component. |
|
|
158
156
|
|
|
@@ -191,8 +189,6 @@ export default function VerificationScreen() {
|
|
|
191
189
|
| `onLivenessConfirmed` | `() => void` | — | Fired the moment liveness is confirmed, before countdown. |
|
|
192
190
|
| `onError` | `(err: Error) => void` | — | Fired on unrecoverable errors. |
|
|
193
191
|
| `countdownFrom` | `number` | `3` | Countdown start value. |
|
|
194
|
-
| `livenessThreshold` | `number` | `0.65` | Per-frame score (0–1) required to count as a good frame. |
|
|
195
|
-
| `confirmFrames` | `number` | `7` | Consecutive good frames required to confirm liveness (~350 ms at 20 fps). |
|
|
196
192
|
| `soundEnabled` | `boolean` | `true` | Play native shutter sound on capture. |
|
|
197
193
|
| `fontFamily` | `string` | `'Baloo-Medium'` | Font applied to all text inside the component. |
|
|
198
194
|
| `style` | `ViewStyle` | — | Style for the root container. |
|
|
@@ -224,19 +220,16 @@ The circle guide layers three animations built entirely with `Animated` + `react
|
|
|
224
220
|
|
|
225
221
|
---
|
|
226
222
|
|
|
227
|
-
## How liveness
|
|
223
|
+
## How liveness detection works
|
|
228
224
|
|
|
229
|
-
|
|
225
|
+
Detection runs at up to **20 fps** via ML Kit (preview renders at 60 fps). The user is guided through four sequential challenges. Each challenge must be held for a short window of consecutive frames before the arc advances. The arc fills yellow as challenges complete, then snaps green when all four pass and the countdown begins.
|
|
230
226
|
|
|
231
|
-
|
|
|
227
|
+
| Step | Challenge | Condition |
|
|
232
228
|
|---|---|---|
|
|
233
|
-
|
|
|
234
|
-
|
|
|
235
|
-
|
|
|
236
|
-
|
|
237
|
-
Eye openness is intentionally excluded — this is **passive** liveness detection. Natural blinks are involuntary and must not penalise the user.
|
|
238
|
-
|
|
239
|
-
Liveness is confirmed once `confirmFrames` consecutive frames all score above `livenessThreshold`. Bad frames decay the streak by 1 instead of resetting it, making detection resilient to momentary noise.
|
|
229
|
+
| 1 | Position your face in the circle | Face detected, correct size, looking roughly forward |
|
|
230
|
+
| 2 | Turn your head slightly | Yaw > 15° either direction |
|
|
231
|
+
| 3 | Now look straight ahead | Yaw < 10°, pitch < 15° |
|
|
232
|
+
| 4 | Now blink | Both eye-open probabilities drop below 0.3 |
|
|
240
233
|
|
|
241
234
|
---
|
|
242
235
|
|
|
@@ -25,9 +25,9 @@ const BRACKET_STROKE = STROKE_WIDTH + 1;
|
|
|
25
25
|
|
|
26
26
|
// ─── Colour helper ────────────────────────────────────────────────────────────
|
|
27
27
|
/**
|
|
28
|
-
* ● White – no face
|
|
29
|
-
* ● Yellow –
|
|
30
|
-
* ● Green –
|
|
28
|
+
* ● White – no face yet (arc at 0)
|
|
29
|
+
* ● Yellow – challenge in progress (arc filling)
|
|
30
|
+
* ● Green – all challenges passed (confirmed / countdown / capture)
|
|
31
31
|
* ● Red – error
|
|
32
32
|
*/
|
|
33
33
|
function getCircleColor(state, score) {
|
|
@@ -40,7 +40,7 @@ function getCircleColor(state, score) {
|
|
|
40
40
|
case 'done':
|
|
41
41
|
return '#4CAF50';
|
|
42
42
|
default:
|
|
43
|
-
return score
|
|
43
|
+
return score > 0.02 ? '#FFD60A' : '#FFFFFF';
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
46
|
|
|
@@ -66,24 +66,23 @@ function bracketArcPath(cx, cy, r, centerDeg, spanDeg) {
|
|
|
66
66
|
const _worklet_15111972513221_init_data = {
|
|
67
67
|
code: "function LivenessCameraTsx1(){const{cy,r,scanProgress,SCAN_LINE_HEIGHT,scanOpacity}=this.__closure;return{y:cy-r+2+scanProgress.value*(2*r-SCAN_LINE_HEIGHT-4),opacity:scanOpacity.value};}",
|
|
68
68
|
location: "/home/runner/work/react-native-liveness/react-native-liveness/src/LivenessCamera.tsx",
|
|
69
|
-
sourceMap: "{\"version\":3,\"names\":[\"LivenessCameraTsx1\",\"cy\",\"r\",\"scanProgress\",\"SCAN_LINE_HEIGHT\",\"scanOpacity\",\"__closure\",\"y\",\"value\",\"opacity\"],\"sources\":[\"/home/runner/work/react-native-liveness/react-native-liveness/src/LivenessCamera.tsx\"],\"mappings\":\"
|
|
69
|
+
sourceMap: "{\"version\":3,\"names\":[\"LivenessCameraTsx1\",\"cy\",\"r\",\"scanProgress\",\"SCAN_LINE_HEIGHT\",\"scanOpacity\",\"__closure\",\"y\",\"value\",\"opacity\"],\"sources\":[\"/home/runner/work/react-native-liveness/react-native-liveness/src/LivenessCamera.tsx\"],\"mappings\":\"AAiII,SAAAA,mBAAA,QAAAC,EAAA,CAAAC,CAAA,CAAAC,YAAA,CAAAC,gBAAA,CAAAC,WAAA,OAAAC,SAAA,OAAO,CAELC,CAAC,CAAEN,EAAE,CAAGC,CAAC,CAAG,CAAC,CAAGC,YAAY,CAACK,KAAK,EAAI,CAAC,CAAGN,CAAC,CAAGE,gBAAgB,CAAG,CAAC,CAAC,CACnEK,OAAO,CAAEJ,WAAW,CAACG,KACvB,CAAC\",\"ignoreList\":[]}"
|
|
70
70
|
};
|
|
71
71
|
const _worklet_14693916078586_init_data = {
|
|
72
72
|
code: "function LivenessCameraTsx2(){const{bracketRot,cx,cy}=this.__closure;return{rotation:bracketRot.value%360,originX:cx,originY:cy};}",
|
|
73
73
|
location: "/home/runner/work/react-native-liveness/react-native-liveness/src/LivenessCamera.tsx",
|
|
74
|
-
sourceMap: "{\"version\":3,\"names\":[\"LivenessCameraTsx2\",\"bracketRot\",\"cx\",\"cy\",\"__closure\",\"rotation\",\"value\",\"originX\",\"originY\"],\"sources\":[\"/home/runner/work/react-native-liveness/react-native-liveness/src/LivenessCamera.tsx\"],\"mappings\":\"
|
|
74
|
+
sourceMap: "{\"version\":3,\"names\":[\"LivenessCameraTsx2\",\"bracketRot\",\"cx\",\"cy\",\"__closure\",\"rotation\",\"value\",\"originX\",\"originY\"],\"sources\":[\"/home/runner/work/react-native-liveness/react-native-liveness/src/LivenessCamera.tsx\"],\"mappings\":\"AA0II,SAAAA,mBAAA,QAAAC,UAAA,CAAAC,EAAA,CAAAC,EAAA,OAAAC,SAAA,OAAO,CAELC,QAAQ,CAAEJ,UAAU,CAACK,KAAK,CAAG,GAAG,CAChCC,OAAO,CAAEL,EAAE,CACXM,OAAO,CAAEL,EACX,CAAC\",\"ignoreList\":[]}"
|
|
75
75
|
};
|
|
76
|
-
const
|
|
77
|
-
code: "function LivenessCameraTsx3(){const{circumference,livenessProgress
|
|
76
|
+
const _worklet_9652703216258_init_data = {
|
|
77
|
+
code: "function LivenessCameraTsx3(){const{circumference,livenessProgress}=this.__closure;return{strokeDashoffset:circumference*(1-livenessProgress.value)};}",
|
|
78
78
|
location: "/home/runner/work/react-native-liveness/react-native-liveness/src/LivenessCamera.tsx",
|
|
79
|
-
sourceMap: "{\"version\":3,\"names\":[\"LivenessCameraTsx3\",\"circumference\",\"livenessProgress\",\"
|
|
79
|
+
sourceMap: "{\"version\":3,\"names\":[\"LivenessCameraTsx3\",\"circumference\",\"livenessProgress\",\"__closure\",\"strokeDashoffset\",\"value\"],\"sources\":[\"/home/runner/work/react-native-liveness/react-native-liveness/src/LivenessCamera.tsx\"],\"mappings\":\"AAqJI,SAAAA,mBAAA,QAAAC,aAAA,CAAAC,gBAAA,OAAAC,SAAA,OAAO,CACLC,gBAAgB,CAAEH,aAAa,EAAI,CAAC,CAAGC,gBAAgB,CAACG,KAAK,CAC/D,CAAC\",\"ignoreList\":[]}"
|
|
80
80
|
};
|
|
81
81
|
function CircleOverlay({
|
|
82
82
|
width,
|
|
83
83
|
height,
|
|
84
84
|
state,
|
|
85
|
-
score
|
|
86
|
-
livenessThreshold
|
|
85
|
+
score
|
|
87
86
|
}) {
|
|
88
87
|
// ── Shared values — all hooks before any early return ─────────────────────
|
|
89
88
|
// scanProgress 0=top 1=bottom, ping-pongs continuously
|
|
@@ -165,32 +164,31 @@ function CircleOverlay({
|
|
|
165
164
|
cx,
|
|
166
165
|
cy
|
|
167
166
|
}), [cx, cy]);
|
|
167
|
+
|
|
168
|
+
// score is already 0–1 challenge progress — arc fills directly
|
|
168
169
|
const progressAnimProps = useAnimatedProps(function LivenessCameraTsx3Factory({
|
|
169
|
-
|
|
170
|
+
_worklet_9652703216258_init_data,
|
|
170
171
|
circumference,
|
|
171
|
-
livenessProgress
|
|
172
|
-
livenessThreshold
|
|
172
|
+
livenessProgress
|
|
173
173
|
}) {
|
|
174
|
-
const _e = [new global.Error(), -
|
|
174
|
+
const _e = [new global.Error(), -3, -27];
|
|
175
175
|
const LivenessCameraTsx3 = () => ({
|
|
176
|
-
strokeDashoffset: circumference - livenessProgress.value
|
|
176
|
+
strokeDashoffset: circumference * (1 - livenessProgress.value)
|
|
177
177
|
});
|
|
178
178
|
LivenessCameraTsx3.__closure = {
|
|
179
179
|
circumference,
|
|
180
|
-
livenessProgress
|
|
181
|
-
livenessThreshold
|
|
180
|
+
livenessProgress
|
|
182
181
|
};
|
|
183
|
-
LivenessCameraTsx3.__workletHash =
|
|
182
|
+
LivenessCameraTsx3.__workletHash = 9652703216258;
|
|
184
183
|
LivenessCameraTsx3.__pluginVersion = "0.8.3";
|
|
185
|
-
LivenessCameraTsx3.__initData =
|
|
184
|
+
LivenessCameraTsx3.__initData = _worklet_9652703216258_init_data;
|
|
186
185
|
LivenessCameraTsx3.__stackDetails = _e;
|
|
187
186
|
return LivenessCameraTsx3;
|
|
188
187
|
}({
|
|
189
|
-
|
|
188
|
+
_worklet_9652703216258_init_data,
|
|
190
189
|
circumference,
|
|
191
|
-
livenessProgress
|
|
192
|
-
|
|
193
|
-
}), [circumference, livenessThreshold]);
|
|
190
|
+
livenessProgress
|
|
191
|
+
}), [circumference]);
|
|
194
192
|
|
|
195
193
|
// ── Start scan line + bracket rotation on mount ───────────────────────────
|
|
196
194
|
useEffect(() => {
|
|
@@ -222,12 +220,12 @@ function CircleOverlay({
|
|
|
222
220
|
}
|
|
223
221
|
}, [state]); // eslint-disable-line react-hooks/exhaustive-deps
|
|
224
222
|
|
|
225
|
-
// ── Drive progress arc from
|
|
223
|
+
// ── Drive progress arc from challenge progress (0–1) ─────────────────────
|
|
226
224
|
useEffect(() => {
|
|
227
|
-
livenessProgress.value = withTiming(
|
|
228
|
-
duration:
|
|
225
|
+
livenessProgress.value = withTiming(score, {
|
|
226
|
+
duration: 220
|
|
229
227
|
});
|
|
230
|
-
}, [score
|
|
228
|
+
}, [score]); // eslint-disable-line react-hooks/exhaustive-deps
|
|
231
229
|
|
|
232
230
|
// ── Guard — render nothing until dimensions are known ─────────────────────
|
|
233
231
|
if (width === 0 || height === 0) return null;
|
|
@@ -372,8 +370,6 @@ export function LivenessCamera({
|
|
|
372
370
|
onLivenessConfirmed,
|
|
373
371
|
onError,
|
|
374
372
|
countdownFrom = 3,
|
|
375
|
-
livenessThreshold = 0.65,
|
|
376
|
-
confirmFrames = 7,
|
|
377
373
|
soundEnabled = true,
|
|
378
374
|
fontFamily = DEFAULT_FONT,
|
|
379
375
|
style
|
|
@@ -399,8 +395,6 @@ export function LivenessCamera({
|
|
|
399
395
|
countdown,
|
|
400
396
|
feedback
|
|
401
397
|
} = useLivenessCamera({
|
|
402
|
-
livenessThreshold,
|
|
403
|
-
confirmFrames,
|
|
404
398
|
countdownFrom,
|
|
405
399
|
soundEnabled,
|
|
406
400
|
cameraRef,
|
|
@@ -464,8 +458,7 @@ export function LivenessCamera({
|
|
|
464
458
|
width: containerSize.width,
|
|
465
459
|
height: containerSize.height,
|
|
466
460
|
state: livenessState,
|
|
467
|
-
score: livenessScore
|
|
468
|
-
livenessThreshold: livenessThreshold
|
|
461
|
+
score: livenessScore
|
|
469
462
|
}), livenessState !== 'done' && /*#__PURE__*/_jsx(View, {
|
|
470
463
|
style: styles.feedbackContainer,
|
|
471
464
|
children: /*#__PURE__*/_jsx(Text, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useCallback","useEffect","useRef","useState","Animated","RNAnimated","StyleSheet","Text","View","cancelAnimation","Easing","useAnimatedProps","useSharedValue","withRepeat","withSequence","withTiming","Camera","useCameraDevice","useCameraFormat","useCameraPermission","Circle","ClipPath","Defs","G","LinearGradient","Path","Rect","Stop","Svg","useLivenessCamera","jsx","_jsx","jsxs","_jsxs","AnimatedCircle","createAnimatedComponent","AnimatedG","AnimatedRect","DEFAULT_FONT","CIRCLE_DIAMETER_RATIO","STROKE_WIDTH","K","SCAN_LINE_HEIGHT","BRACKET_SPAN_DEG","BRACKET_STROKE","getCircleColor","state","score","circlePath","cx","cy","r","join","bracketArcPath","centerDeg","spanDeg","toRad","d","Math","PI","a1","a2","x1","cos","y1","sin","x2","y2","_worklet_15111972513221_init_data","code","location","sourceMap","_worklet_14693916078586_init_data","_worklet_1688522500078_init_data","CircleOverlay","width","height","livenessThreshold","scanProgress","scanOpacity","bracketRot","livenessProgress","circumference","color","scanAnimProps","LivenessCameraTsx1Factory","_e","global","Error","LivenessCameraTsx1","y","value","opacity","__closure","__workletHash","__pluginVersion","__initData","__stackDetails","bracketAnimProps","LivenessCameraTsx2Factory","LivenessCameraTsx2","rotation","originX","originY","progressAnimProps","LivenessCameraTsx3Factory","LivenessCameraTsx3","strokeDashoffset","duration","easing","linear","min","scrimD","bracketD","map","deg","style","absoluteFill","children","id","offset","stopColor","stopOpacity","fill","fillRule","stroke","strokeWidth","clipPath","x","animatedProps","strokeLinecap","strokeDasharray","transform","CountdownBubble","fontFamily","scale","Value","current","parallel","sequence","spring","toValue","stiffness","damping","useNativeDriver","timing","start","styles","countdownBubble","countdownText","LivenessCamera","onCapture","onLivenessConfirmed","onError","countdownFrom","confirmFrames","soundEnabled","hasPermission","requestPermission","device","format","fps","maxFps","cameraRef","containerSize","setContainerSize","frameProcessor","livenessState","livenessScore","countdown","feedback","handleLayout","e","nativeEvent","layout","catch","root","centered","permissionText","onLayout","ref","isActive","photo","pixelFormat","feedbackContainer","feedbackText","countdownContainer","captureFlash","pointerEvents","create","flex","backgroundColor","overflow","justifyContent","alignItems","fontSize","textAlign","paddingHorizontal","position","bottom","left","right","textShadowColor","textShadowOffset","textShadowRadius","absoluteFillObject","borderRadius","borderWidth","borderColor","lineHeight"],"sourceRoot":"../../src","sources":["LivenessCamera.tsx"],"mappings":";;AAAA,SAASA,WAAW,EAAEC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AAChE,SAASC,QAAQ,IAAIC,UAAU,EAAEC,UAAU,EAAEC,IAAI,EAAEC,IAAI,QAAQ,cAAc;AAC7E,OAAOJ,QAAQ,IACbK,eAAe,EACfC,MAAM,EACNC,gBAAgB,EAChBC,cAAc,EACdC,UAAU,EACVC,YAAY,EACZC,UAAU,QACL,yBAAyB;AAChC,SACEC,MAAM,EACNC,eAAe,EACfC,eAAe,EACfC,mBAAmB,QACd,4BAA4B;AACnC,SACEC,MAAM,EACNC,QAAQ,EACRC,IAAI,EACJC,CAAC,EACDC,cAAc,EACdC,IAAI,EACJC,IAAI,EACJC,IAAI,EACJC,GAAG,QACE,kBAAkB;AACzB,SAASC,iBAAiB,QAAQ,wBAAqB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAGxD;AACA;AACA;AACA,MAAMC,cAAc,GAAG9B,QAAQ,CAAC+B,uBAAuB,CAACf,MAAM,CAAC;AAC/D,MAAMgB,SAAS,GAAGhC,QAAQ,CAAC+B,uBAAuB,CAACZ,CAAC,CAAC;AACrD,MAAMc,YAAY,GAAGjC,QAAQ,CAAC+B,uBAAuB,CAACT,IAAI,CAAC;;AAE3D;AACA,MAAMY,YAAY,GAAG,cAAc;AACnC,MAAMC,qBAAqB,GAAG,IAAI;AAClC,MAAMC,YAAY,GAAG,CAAC;AACtB,MAAMC,CAAC,GAAG,MAAM,CAAC,CAAC;AAClB,MAAMC,gBAAgB,GAAG,CAAC,CAAC,CAAC;AAC5B,MAAMC,gBAAgB,GAAG,EAAE,CAAC,CAAC;AAC7B,MAAMC,cAAc,GAAGJ,YAAY,GAAG,CAAC;;AAEvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASK,cAAcA,CAACC,KAAoB,EAAEC,KAAa,EAAU;EACnE,QAAQD,KAAK;IACX,KAAK,OAAO;MACV,OAAO,SAAS;IAClB,KAAK,WAAW;IAChB,KAAK,WAAW;IAChB,KAAK,WAAW;IAChB,KAAK,MAAM;MACT,OAAO,SAAS;IAClB;MACE,OAAOC,KAAK,IAAI,GAAG,GAAG,SAAS,GAAG,SAAS;EAC/C;AACF;;AAEA;AACA;AACA,SAASC,UAAUA,CAACC,EAAU,EAAEC,EAAU,EAAEC,CAAS,EAAU;EAC7D,OAAO,CACL,KAAKF,EAAE,GAAGE,CAAC,IAAID,EAAE,EAAE,EACnB,KAAKD,EAAE,GAAGE,CAAC,IAAID,EAAE,GAAGC,CAAC,GAAGV,CAAC,IAAIQ,EAAE,GAAGE,CAAC,GAAGV,CAAC,IAAIS,EAAE,GAAGC,CAAC,IAAIF,EAAE,IAAIC,EAAE,GAAGC,CAAC,EAAE,EACnE,KAAKF,EAAE,GAAGE,CAAC,GAAGV,CAAC,IAAIS,EAAE,GAAGC,CAAC,IAAIF,EAAE,GAAGE,CAAC,IAAID,EAAE,GAAGC,CAAC,GAAGV,CAAC,IAAIQ,EAAE,GAAGE,CAAC,IAAID,EAAE,EAAE,EACnE,KAAKD,EAAE,GAAGE,CAAC,IAAID,EAAE,GAAGC,CAAC,GAAGV,CAAC,IAAIQ,EAAE,GAAGE,CAAC,GAAGV,CAAC,IAAIS,EAAE,GAAGC,CAAC,IAAIF,EAAE,IAAIC,EAAE,GAAGC,CAAC,EAAE,EACnE,KAAKF,EAAE,GAAGE,CAAC,GAAGV,CAAC,IAAIS,EAAE,GAAGC,CAAC,IAAIF,EAAE,GAAGE,CAAC,IAAID,EAAE,GAAGC,CAAC,GAAGV,CAAC,IAAIQ,EAAE,GAAGE,CAAC,IAAID,EAAE,EAAE,EACnE,GAAG,CACJ,CAACE,IAAI,CAAC,GAAG,CAAC;AACb;;AAEA;AACA,SAASC,cAAcA,CACrBJ,EAAU,EACVC,EAAU,EACVC,CAAS,EACTG,SAAiB,EACjBC,OAAe,EACP;EACR,MAAMC,KAAK,GAAIC,CAAS,IAAMA,CAAC,GAAGC,IAAI,CAACC,EAAE,GAAI,GAAG;EAChD,MAAMC,EAAE,GAAGJ,KAAK,CAACF,SAAS,GAAGC,OAAO,GAAG,CAAC,CAAC;EACzC,MAAMM,EAAE,GAAGL,KAAK,CAACF,SAAS,GAAGC,OAAO,GAAG,CAAC,CAAC;EACzC,MAAMO,EAAE,GAAGb,EAAE,GAAGE,CAAC,GAAGO,IAAI,CAACK,GAAG,CAACH,EAAE,CAAC;EAChC,MAAMI,EAAE,GAAGd,EAAE,GAAGC,CAAC,GAAGO,IAAI,CAACO,GAAG,CAACL,EAAE,CAAC;EAChC,MAAMM,EAAE,GAAGjB,EAAE,GAAGE,CAAC,GAAGO,IAAI,CAACK,GAAG,CAACF,EAAE,CAAC;EAChC,MAAMM,EAAE,GAAGjB,EAAE,GAAGC,CAAC,GAAGO,IAAI,CAACO,GAAG,CAACJ,EAAE,CAAC;EAChC,OAAO,KAAKC,EAAE,IAAIE,EAAE,MAAMb,CAAC,IAAIA,CAAC,UAAUe,EAAE,IAAIC,EAAE,EAAE;AACtD;;AAEA;AAAA,MAAAC,iCAAA;EAAAC,IAAA;EAAAC,QAAA;EAAAC,SAAA;AAAA;AAAA,MAAAC,iCAAA;EAAAH,IAAA;EAAAC,QAAA;EAAAC,SAAA;AAAA;AAAA,MAAAE,gCAAA;EAAAJ,IAAA;EAAAC,QAAA;EAAAC,SAAA;AAAA;AACA,SAASG,aAAaA,CAAC;EACrBC,KAAK;EACLC,MAAM;EACN9B,KAAK;EACLC,KAAK;EACL8B;AAOF,CAAC,EAAE;EACD;EACA;EACA,MAAMC,YAAY,GAAGlE,cAAc,CAAC,CAAC,CAAC;EACtC,MAAMmE,WAAW,GAAGnE,cAAc,CAAC,CAAC,CAAC;EACrC;EACA,MAAMoE,UAAU,GAAGpE,cAAc,CAAC,CAAC,CAAC;EACpC;EACA,MAAMqE,gBAAgB,GAAGrE,cAAc,CAAC,CAAC,CAAC;;EAE1C;EACA,MAAMqC,EAAE,GAAG0B,KAAK,GAAG,CAAC;EACpB,MAAMzB,EAAE,GAAG0B,MAAM,GAAG,IAAI;EACxB,MAAMzB,CAAC,GAAIwB,KAAK,GAAGpC,qBAAqB,GAAI,CAAC;EAC7C,MAAM2C,aAAa,GAAG,CAAC,GAAGxB,IAAI,CAACC,EAAE,GAAGR,CAAC;EACrC,MAAMgC,KAAK,GAAGtC,cAAc,CAACC,KAAK,EAAEC,KAAK,CAAC;;EAE1C;EACA,MAAMqC,aAAa,GAAGzE,gBAAgB,CACpC,SAAA0E,0BAAA;IAAAjB,iCAAA;IAEKlB,EAAE;IAAGC,CAAC;IAAO2B,YAAY;IAAkBpC,gBAAgB;IACrDqC;EAAW;IAAA,MAAAO,EAAA,QAAAC,MAAA,CAAAC,KAAA;IAAA,MAAAC,kBAAA,GAHtBA,CAAA,MAAO;MACL;MACAC,CAAC,EAAExC,EAAE,GAAGC,CAAC,GAAG,CAAC,GAAG2B,YAAY,CAACa,KAAK,IAAI,CAAC,GAAGxC,CAAC,GAAGT,gBAAgB,GAAG,CAAC,CAAC;MACnEkD,OAAO,EAAEb,WAAW,CAACY;IACvB,CAAC,CAAC;IAAAF,kBAAA,CAAAI,SAAA;MAFG3C,EAAE;MAAGC,CAAC;MAAO2B,YAAY;MAAkBpC,gBAAgB;MACrDqC;IAAW;IAAAU,kBAAA,CAAAK,aAAA;IAAAL,kBAAA,CAAAM,eAAA;IAAAN,kBAAA,CAAAO,UAAA,GAAA5B,iCAAA;IAAAqB,kBAAA,CAAAQ,cAAA,GAAAX,EAAA;IAAA,OAAAG,kBAAA;EAAA,CAHtB;IAAArB,iCAAA;IAEKlB,EAAE;IAAGC,CAAC;IAAO2B,YAAY;IAAkBpC,gBAAgB;IACrDqC;EAAW,IAEtB,CAAC7B,EAAE,EAAEC,CAAC,CACR,CAAC;EAED,MAAM+C,gBAAgB,GAAGvF,gBAAgB,CACvC,SAAAwF,0BAAA;IAAA3B,iCAAA;IAEYQ,UAAU;IACX/B,EAAE;IACFC;EAAE;IAAA,MAAAoC,EAAA,QAAAC,MAAA,CAAAC,KAAA;IAAA,MAAAY,kBAAA,GAJbA,CAAA,MAAO;MACL;MACAC,QAAQ,EAAErB,UAAU,CAACW,KAAK,GAAG,GAAG;MAChCW,OAAO,EAAErD,EAAE;MACXsD,OAAO,EAAErD;IACX,CAAC,CAAC;IAAAkD,kBAAA,CAAAP,SAAA;MAHUb,UAAU;MACX/B,EAAE;MACFC;IAAE;IAAAkD,kBAAA,CAAAN,aAAA;IAAAM,kBAAA,CAAAL,eAAA;IAAAK,kBAAA,CAAAJ,UAAA,GAAAxB,iCAAA;IAAA4B,kBAAA,CAAAH,cAAA,GAAAX,EAAA;IAAA,OAAAc,kBAAA;EAAA,CAJb;IAAA5B,iCAAA;IAEYQ,UAAU;IACX/B,EAAE;IACFC;EAAE,IAEb,CAACD,EAAE,EAAEC,EAAE,CACT,CAAC;EAED,MAAMsD,iBAAiB,GAAG7F,gBAAgB,CACxC,SAAA8F,0BAAA;IAAAhC,gCAAA;IAEIS,aAAa;IACZD,gBAAgB;IAASJ;EAAiB;IAAA,MAAAS,EAAA,QAAAC,MAAA,CAAAC,KAAA;IAAA,MAAAkB,kBAAA,GAH/CA,CAAA,MAAO;MACLC,gBAAgB,EACdzB,aAAa,GACZD,gBAAgB,CAACU,KAAK,GAAGd,iBAAiB,GAAIK;IACnD,CAAC,CAAC;IAAAwB,kBAAA,CAAAb,SAAA;MAFEX,aAAa;MACZD,gBAAgB;MAASJ;IAAiB;IAAA6B,kBAAA,CAAAZ,aAAA;IAAAY,kBAAA,CAAAX,eAAA;IAAAW,kBAAA,CAAAV,UAAA,GAAAvB,gCAAA;IAAAiC,kBAAA,CAAAT,cAAA,GAAAX,EAAA;IAAA,OAAAoB,kBAAA;EAAA,CAH/C;IAAAjC,gCAAA;IAEIS,aAAa;IACZD,gBAAgB;IAASJ;EAAiB,IAE/C,CAACK,aAAa,EAAEL,iBAAiB,CACnC,CAAC;;EAED;EACA5E,SAAS,CAAC,MAAM;IACd6E,YAAY,CAACa,KAAK,GAAG9E,UAAU,CAC7BC,YAAY,CACVC,UAAU,CAAC,CAAC,EAAE;MAAE6F,QAAQ,EAAE,IAAI;MAAEC,MAAM,EAAEnG,MAAM,CAACoG;IAAO,CAAC,CAAC,EACxD/F,UAAU,CAAC,CAAC,EAAE;MAAE6F,QAAQ,EAAE,IAAI;MAAEC,MAAM,EAAEnG,MAAM,CAACoG;IAAO,CAAC,CACzD,CAAC,EACD,CAAC,CAAC,EACF,KACF,CAAC;IACD9B,UAAU,CAACW,KAAK,GAAG9E,UAAU,CAC3BE,UAAU,CAAC,GAAG,EAAE;MAAE6F,QAAQ,EAAE,IAAI;MAAEC,MAAM,EAAEnG,MAAM,CAACoG;IAAO,CAAC,CAAC,EAC1D,CAAC,CAAC,EACF,KACF,CAAC;IACD,OAAO,MAAM;MACXrG,eAAe,CAACqE,YAAY,CAAC;MAC7BrE,eAAe,CAACuE,UAAU,CAAC;IAC7B,CAAC;EACH,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;;EAER;EACA/E,SAAS,CAAC,MAAM;IACd,IAAI6C,KAAK,KAAK,UAAU,EAAE;MACxBrC,eAAe,CAACqE,YAAY,CAAC;MAC7BrE,eAAe,CAACuE,UAAU,CAAC;MAC3BD,WAAW,CAACY,KAAK,GAAG5E,UAAU,CAAC,CAAC,EAAE;QAAE6F,QAAQ,EAAE;MAAI,CAAC,CAAC;IACtD;EACF,CAAC,EAAE,CAAC9D,KAAK,CAAC,CAAC,CAAC,CAAC;;EAEb;EACA7C,SAAS,CAAC,MAAM;IACdgF,gBAAgB,CAACU,KAAK,GAAG5E,UAAU,CAAC2C,IAAI,CAACqD,GAAG,CAAChE,KAAK,EAAE8B,iBAAiB,CAAC,EAAE;MACtE+B,QAAQ,EAAE;IACZ,CAAC,CAAC;EACJ,CAAC,EAAE,CAAC7D,KAAK,EAAE8B,iBAAiB,CAAC,CAAC,CAAC,CAAC;;EAEhC;EACA,IAAIF,KAAK,KAAK,CAAC,IAAIC,MAAM,KAAK,CAAC,EAAE,OAAO,IAAI;;EAE5C;EACA,MAAMoC,MAAM,GAAG,QAAQrC,KAAK,IAAIC,MAAM,OAAO5B,UAAU,CAACC,EAAE,EAAEC,EAAE,EAAEC,CAAC,CAAC,EAAE;;EAEpE;EACA,MAAM8D,QAAQ,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CACjCC,GAAG,CAAEC,GAAG,IAAK9D,cAAc,CAACJ,EAAE,EAAEC,EAAE,EAAEC,CAAC,EAAEgE,GAAG,EAAExE,gBAAgB,CAAC,CAAC,CAC9DS,IAAI,CAAC,GAAG,CAAC;EAEZ,oBACEnB,KAAA,CAACL,GAAG;IAACwF,KAAK,EAAE9G,UAAU,CAAC+G,YAAa;IAAC1C,KAAK,EAAEA,KAAM;IAACC,MAAM,EAAEA,MAAO;IAAA0C,QAAA,gBAEhErF,KAAA,CAACX,IAAI;MAAAgG,QAAA,gBAEHvF,IAAA,CAACV,QAAQ;QAACkG,EAAE,EAAC,sBAAsB;QAAAD,QAAA,eACjCvF,IAAA,CAACX,MAAM;UAAC6B,EAAE,EAAEA,EAAG;UAACC,EAAE,EAAEA,EAAG;UAACC,CAAC,EAAEA;QAAE,CAAE;MAAC,CACxB,CAAC,eAGXlB,KAAA,CAACT,cAAc;QAAC+F,EAAE,EAAC,eAAe;QAACzD,EAAE,EAAC,GAAG;QAACE,EAAE,EAAC,GAAG;QAACE,EAAE,EAAC,GAAG;QAACC,EAAE,EAAC,GAAG;QAAAmD,QAAA,gBAC5DvF,IAAA,CAACJ,IAAI;UAAC6F,MAAM,EAAC,GAAG;UAACC,SAAS,EAAC,MAAM;UAACC,WAAW,EAAC;QAAG,CAAE,CAAC,eACpD3F,IAAA,CAACJ,IAAI;UAAC6F,MAAM,EAAC,MAAM;UAACC,SAAS,EAAC,MAAM;UAACC,WAAW,EAAC;QAAM,CAAE,CAAC,eAC1D3F,IAAA,CAACJ,IAAI;UAAC6F,MAAM,EAAC,MAAM;UAACC,SAAS,EAAC,MAAM;UAACC,WAAW,EAAC;QAAM,CAAE,CAAC,eAC1D3F,IAAA,CAACJ,IAAI;UAAC6F,MAAM,EAAC,GAAG;UAACC,SAAS,EAAC,MAAM;UAACC,WAAW,EAAC;QAAG,CAAE,CAAC;MAAA,CACtC,CAAC;IAAA,CACb,CAAC,eAGP3F,IAAA,CAACN,IAAI;MAACgC,CAAC,EAAEuD,MAAO;MAACW,IAAI,EAAC,kBAAkB;MAACC,QAAQ,EAAC;IAAS,CAAE,CAAC,eAG9D7F,IAAA,CAACX,MAAM;MACL6B,EAAE,EAAEA,EAAG;MACPC,EAAE,EAAEA,EAAG;MACPC,CAAC,EAAEA,CAAE;MACLwE,IAAI,EAAC,MAAM;MACXE,MAAM,EAAC,wBAAwB;MAC/BC,WAAW,EAAE;IAAE,CAChB,CAAC,eAGF/F,IAAA,CAACR,CAAC;MAACwG,QAAQ,EAAC,4BAA4B;MAAAT,QAAA,eACtCvF,IAAA,CAACM,YAAY;QACX2F,CAAC,EAAE/E,EAAE,GAAGE,CAAE;QACVwB,KAAK,EAAExB,CAAC,GAAG,CAAE;QACbyB,MAAM,EAAElC,gBAAiB;QACzBiF,IAAI,EAAC,qBAAqB;QAC1BM,aAAa,EAAE7C;MAAc,CAC9B;IAAC,CACD,CAAC,eAGJrD,IAAA,CAACK,SAAS;MAAC6F,aAAa,EAAE/B,gBAAiB;MAAAoB,QAAA,eACzCvF,IAAA,CAACN,IAAI;QACHgC,CAAC,EAAEwD,QAAS;QACZU,IAAI,EAAC,MAAM;QACXE,MAAM,EAAE1C,KAAM;QACd2C,WAAW,EAAElF,cAAe;QAC5BsF,aAAa,EAAC,OAAO;QACrBtC,OAAO,EAAE;MAAK,CACf;IAAC,CACO,CAAC,eAIZ7D,IAAA,CAACG,cAAc;MACbe,EAAE,EAAEA,EAAG;MACPC,EAAE,EAAEA,EAAG;MACPC,CAAC,EAAEA,CAAE;MACLwE,IAAI,EAAC,MAAM;MACXE,MAAM,EAAE1C,KAAM;MACd2C,WAAW,EAAEtF,YAAa;MAC1B2F,eAAe,EAAEjD,aAAc;MAC/BgD,aAAa,EAAC,OAAO;MACrBE,SAAS,EAAE,eAAenF,EAAE,KAAKC,EAAE,GAAI;MACvC+E,aAAa,EAAEzB;IAAkB,CAClC,CAAC;EAAA,CACC,CAAC;AAEV;;AAEA;AACA,SAAS6B,eAAeA,CAAC;EACvB1C,KAAK;EACL2C;AAIF,CAAC,EAAE;EACD,MAAMC,KAAK,GAAGrI,MAAM,CAAC,IAAIG,UAAU,CAACmI,KAAK,CAAC,CAAC,CAAC,CAAC,CAACC,OAAO;EACrD,MAAM7C,OAAO,GAAG1F,MAAM,CAAC,IAAIG,UAAU,CAACmI,KAAK,CAAC,CAAC,CAAC,CAAC,CAACC,OAAO;EAEvDxI,SAAS,CAAC,MAAM;IACdI,UAAU,CAACqI,QAAQ,CAAC,CAClBrI,UAAU,CAACsI,QAAQ,CAAC,CAClBtI,UAAU,CAACuI,MAAM,CAACL,KAAK,EAAE;MACvBM,OAAO,EAAE,GAAG;MACZC,SAAS,EAAE,GAAG;MACdC,OAAO,EAAE,CAAC;MACVC,eAAe,EAAE;IACnB,CAAC,CAAC,EACF3I,UAAU,CAACuI,MAAM,CAACL,KAAK,EAAE;MACvBM,OAAO,EAAE,GAAG;MACZC,SAAS,EAAE,GAAG;MACdC,OAAO,EAAE,CAAC;MACVC,eAAe,EAAE;IACnB,CAAC,CAAC,CACH,CAAC,EACF3I,UAAU,CAAC4I,MAAM,CAACrD,OAAO,EAAE;MACzBiD,OAAO,EAAE,CAAC;MACVjC,QAAQ,EAAE,GAAG;MACboC,eAAe,EAAE;IACnB,CAAC,CAAC,CACH,CAAC,CAACE,KAAK,CAAC,CAAC;IAEV,OAAO,MAAM;MACX7I,UAAU,CAAC4I,MAAM,CAACrD,OAAO,EAAE;QACzBiD,OAAO,EAAE,CAAC;QACVjC,QAAQ,EAAE,GAAG;QACboC,eAAe,EAAE;MACnB,CAAC,CAAC,CAACE,KAAK,CAAC,CAAC;IACZ,CAAC;EACH,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;;EAER,oBACEnH,IAAA,CAAC1B,UAAU,CAACG,IAAI;IACd4G,KAAK,EAAE,CAAC+B,MAAM,CAACC,eAAe,EAAE;MAAExD,OAAO;MAAEwC,SAAS,EAAE,CAAC;QAAEG;MAAM,CAAC;IAAE,CAAC,CAAE;IAAAjB,QAAA,eAErEvF,IAAA,CAACxB,IAAI;MAAC6G,KAAK,EAAE,CAAC+B,MAAM,CAACE,aAAa,EAAE;QAAEf;MAAW,CAAC,CAAE;MAAAhB,QAAA,EAAE3B;IAAK,CAAO;EAAC,CACpD,CAAC;AAEtB;;AAEA;AACA,OAAO,SAAS2D,cAAcA,CAAC;EAC7BC,SAAS;EACTC,mBAAmB;EACnBC,OAAO;EACPC,aAAa,GAAG,CAAC;EACjB7E,iBAAiB,GAAG,IAAI;EACxB8E,aAAa,GAAG,CAAC;EACjBC,YAAY,GAAG,IAAI;EACnBtB,UAAU,GAAGhG,YAAY;EACzB8E;AACmB,CAAC,EAAE;EACtB,MAAM;IAAEyC,aAAa;IAAEC;EAAkB,CAAC,GAAG3I,mBAAmB,CAAC,CAAC;EAClE,MAAM4I,MAAM,GAAG9I,eAAe,CAAC,OAAO,CAAC;EACvC,MAAM+I,MAAM,GAAG9I,eAAe,CAAC6I,MAAM,EAAE,CAAC;IAAEE,GAAG,EAAE;EAAG,CAAC,CAAC,CAAC;EACrD,MAAMA,GAAG,GAAGvG,IAAI,CAACqD,GAAG,CAACiD,MAAM,EAAEE,MAAM,IAAI,EAAE,EAAE,EAAE,CAAC;EAC9C,MAAMC,SAAS,GAAGjK,MAAM,CAAS,IAAI,CAAC;EACtC,MAAM,CAACkK,aAAa,EAAEC,gBAAgB,CAAC,GAAGlK,QAAQ,CAAC;IAAEwE,KAAK,EAAE,CAAC;IAAEC,MAAM,EAAE;EAAE,CAAC,CAAC;EAE3E,MAAM;IAAE0F,cAAc;IAAEC,aAAa;IAAEC,aAAa;IAAEC,SAAS;IAAEC;EAAS,CAAC,GACzE7I,iBAAiB,CAAC;IAChBgD,iBAAiB;IACjB8E,aAAa;IACbD,aAAa;IACbE,YAAY;IACZO,SAAS;IACTZ,SAAS;IACTC,mBAAmB;IACnBC;EACF,CAAC,CAAC;EAEJ,MAAMkB,YAAY,GAAG3K,WAAW,CAC7B4K,CAAiE,IAAK;IACrE,MAAM;MAAEjG,KAAK;MAAEC;IAAO,CAAC,GAAGgG,CAAC,CAACC,WAAW,CAACC,MAAM;IAC9CT,gBAAgB,CAAC;MAAE1F,KAAK;MAAEC;IAAO,CAAC,CAAC;EACrC,CAAC,EACD,EACF,CAAC;EAED3E,SAAS,CAAC,MAAM;IACd,IAAI,CAAC4J,aAAa,EAAE;MAClBC,iBAAiB,CAAC,CAAC,CAACiB,KAAK,CAAC,MAAM;QAC9BtB,OAAO,GAAG,IAAIjE,KAAK,CAAC,0BAA0B,CAAC,CAAC;MAClD,CAAC,CAAC;IACJ;EACF,CAAC,EAAE,CAACqE,aAAa,EAAEC,iBAAiB,EAAEL,OAAO,CAAC,CAAC;EAE/C,IAAI,CAACI,aAAa,EAAE;IAClB,oBACE9H,IAAA,CAACvB,IAAI;MAAC4G,KAAK,EAAE,CAAC+B,MAAM,CAAC6B,IAAI,EAAE5D,KAAK,EAAE+B,MAAM,CAAC8B,QAAQ,CAAE;MAAA3D,QAAA,eACjDvF,IAAA,CAACxB,IAAI;QAAC6G,KAAK,EAAE,CAAC+B,MAAM,CAAC+B,cAAc,EAAE;UAAE5C;QAAW,CAAC,CAAE;QAAAhB,QAAA,EAAC;MAEtD,CAAM;IAAC,CACH,CAAC;EAEX;EAEA,IAAI,CAACyC,MAAM,EAAE;IACX,oBACEhI,IAAA,CAACvB,IAAI;MAAC4G,KAAK,EAAE,CAAC+B,MAAM,CAAC6B,IAAI,EAAE5D,KAAK,EAAE+B,MAAM,CAAC8B,QAAQ,CAAE;MAAA3D,QAAA,eACjDvF,IAAA,CAACxB,IAAI;QAAC6G,KAAK,EAAE,CAAC+B,MAAM,CAAC+B,cAAc,EAAE;UAAE5C;QAAW,CAAC,CAAE;QAAAhB,QAAA,EAAC;MAEtD,CAAM;IAAC,CACH,CAAC;EAEX;EAEA,oBACErF,KAAA,CAACzB,IAAI;IAAC4G,KAAK,EAAE,CAAC+B,MAAM,CAAC6B,IAAI,EAAE5D,KAAK,CAAE;IAAC+D,QAAQ,EAAER,YAAa;IAAArD,QAAA,gBACxDvF,IAAA,CAACf,MAAM;MACLoK,GAAG,EAAEjB,SAAU;MACf/C,KAAK,EAAE9G,UAAU,CAAC+G,YAAa;MAC/B0C,MAAM,EAAEA,MAAO;MACfsB,QAAQ,EAAEd,aAAa,KAAK,MAAM,IAAIA,aAAa,KAAK,OAAQ;MAChED,cAAc,EAAEA,cAAe;MAC/BgB,KAAK;MACLC,WAAW,EAAC,KAAK;MACjBvB,MAAM,EAAEA,MAAO;MACfC,GAAG,EAAEA;IAAI,CACV,CAAC,eACFlI,IAAA,CAAC2C,aAAa;MACZC,KAAK,EAAEyF,aAAa,CAACzF,KAAM;MAC3BC,MAAM,EAAEwF,aAAa,CAACxF,MAAO;MAC7B9B,KAAK,EAAEyH,aAAc;MACrBxH,KAAK,EAAEyH,aAAc;MACrB3F,iBAAiB,EAAEA;IAAkB,CACtC,CAAC,EACD0F,aAAa,KAAK,MAAM,iBACvBxI,IAAA,CAACvB,IAAI;MAAC4G,KAAK,EAAE+B,MAAM,CAACqC,iBAAkB;MAAAlE,QAAA,eACpCvF,IAAA,CAACxB,IAAI;QAAC6G,KAAK,EAAE,CAAC+B,MAAM,CAACsC,YAAY,EAAE;UAAEnD;QAAW,CAAC,CAAE;QAAAhB,QAAA,EAAEoD;MAAQ,CAAO;IAAC,CACjE,CACP,EACAH,aAAa,KAAK,WAAW,IAAIE,SAAS,KAAK,IAAI,iBAClD1I,IAAA,CAACvB,IAAI;MAAC4G,KAAK,EAAE+B,MAAM,CAACuC,kBAAmB;MAAApE,QAAA,eACrCvF,IAAA,CAACsG,eAAe;QAEd1C,KAAK,EAAE8E,SAAU;QACjBnC,UAAU,EAAEA;MAAW,GAFlBmC,SAGN;IAAC,CACE,CACP,EACAF,aAAa,KAAK,WAAW,iBAC5BxI,IAAA,CAACvB,IAAI;MAAC4G,KAAK,EAAE+B,MAAM,CAACwC,YAAa;MAACC,aAAa,EAAC;IAAM,CAAE,CACzD;EAAA,CACG,CAAC;AAEX;;AAEA;AACA,MAAMzC,MAAM,GAAG7I,UAAU,CAACuL,MAAM,CAAC;EAC/Bb,IAAI,EAAE;IACJc,IAAI,EAAE,CAAC;IACPC,eAAe,EAAE,MAAM;IACvBC,QAAQ,EAAE;EACZ,CAAC;EACDf,QAAQ,EAAE;IACRgB,cAAc,EAAE,QAAQ;IACxBC,UAAU,EAAE;EACd,CAAC;EACDhB,cAAc,EAAE;IACd/F,KAAK,EAAE,MAAM;IACbgH,QAAQ,EAAE,EAAE;IACZC,SAAS,EAAE,QAAQ;IACnBC,iBAAiB,EAAE;EACrB,CAAC;EACDb,iBAAiB,EAAE;IACjBc,QAAQ,EAAE,UAAU;IACpBC,MAAM,EAAE,KAAK;IACbC,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE,CAAC;IACRP,UAAU,EAAE,QAAQ;IACpBG,iBAAiB,EAAE;EACrB,CAAC;EACDZ,YAAY,EAAE;IACZtG,KAAK,EAAE,MAAM;IACbgH,QAAQ,EAAE,EAAE;IACZC,SAAS,EAAE,QAAQ;IACnBM,eAAe,EAAE,iBAAiB;IAClCC,gBAAgB,EAAE;MAAEhI,KAAK,EAAE,CAAC;MAAEC,MAAM,EAAE;IAAE,CAAC;IACzCgI,gBAAgB,EAAE;EACpB,CAAC;EACDlB,kBAAkB,EAAE;IAClB,GAAGpL,UAAU,CAACuM,kBAAkB;IAChCZ,cAAc,EAAE,QAAQ;IACxBC,UAAU,EAAE;EACd,CAAC;EACD9C,eAAe,EAAE;IACfzE,KAAK,EAAE,EAAE;IACTC,MAAM,EAAE,EAAE;IACVkI,YAAY,EAAE,EAAE;IAChBf,eAAe,EAAE,wBAAwB;IACzCgB,WAAW,EAAE,CAAC;IACdC,WAAW,EAAE,MAAM;IACnBf,cAAc,EAAE,QAAQ;IACxBC,UAAU,EAAE;EACd,CAAC;EACD7C,aAAa,EAAE;IACblE,KAAK,EAAE,MAAM;IACbgH,QAAQ,EAAE,EAAE;IACZc,UAAU,EAAE;EACd,CAAC;EACDtB,YAAY,EAAE;IACZ,GAAGrL,UAAU,CAACuM,kBAAkB;IAChCd,eAAe,EAAE,MAAM;IACvBnG,OAAO,EAAE;EACX;AACF,CAAC,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["useCallback","useEffect","useRef","useState","Animated","RNAnimated","StyleSheet","Text","View","cancelAnimation","Easing","useAnimatedProps","useSharedValue","withRepeat","withSequence","withTiming","Camera","useCameraDevice","useCameraFormat","useCameraPermission","Circle","ClipPath","Defs","G","LinearGradient","Path","Rect","Stop","Svg","useLivenessCamera","jsx","_jsx","jsxs","_jsxs","AnimatedCircle","createAnimatedComponent","AnimatedG","AnimatedRect","DEFAULT_FONT","CIRCLE_DIAMETER_RATIO","STROKE_WIDTH","K","SCAN_LINE_HEIGHT","BRACKET_SPAN_DEG","BRACKET_STROKE","getCircleColor","state","score","circlePath","cx","cy","r","join","bracketArcPath","centerDeg","spanDeg","toRad","d","Math","PI","a1","a2","x1","cos","y1","sin","x2","y2","_worklet_15111972513221_init_data","code","location","sourceMap","_worklet_14693916078586_init_data","_worklet_9652703216258_init_data","CircleOverlay","width","height","scanProgress","scanOpacity","bracketRot","livenessProgress","circumference","color","scanAnimProps","LivenessCameraTsx1Factory","_e","global","Error","LivenessCameraTsx1","y","value","opacity","__closure","__workletHash","__pluginVersion","__initData","__stackDetails","bracketAnimProps","LivenessCameraTsx2Factory","LivenessCameraTsx2","rotation","originX","originY","progressAnimProps","LivenessCameraTsx3Factory","LivenessCameraTsx3","strokeDashoffset","duration","easing","linear","scrimD","bracketD","map","deg","style","absoluteFill","children","id","offset","stopColor","stopOpacity","fill","fillRule","stroke","strokeWidth","clipPath","x","animatedProps","strokeLinecap","strokeDasharray","transform","CountdownBubble","fontFamily","scale","Value","current","parallel","sequence","spring","toValue","stiffness","damping","useNativeDriver","timing","start","styles","countdownBubble","countdownText","LivenessCamera","onCapture","onLivenessConfirmed","onError","countdownFrom","soundEnabled","hasPermission","requestPermission","device","format","fps","min","maxFps","cameraRef","containerSize","setContainerSize","frameProcessor","livenessState","livenessScore","countdown","feedback","handleLayout","e","nativeEvent","layout","catch","root","centered","permissionText","onLayout","ref","isActive","photo","pixelFormat","feedbackContainer","feedbackText","countdownContainer","captureFlash","pointerEvents","create","flex","backgroundColor","overflow","justifyContent","alignItems","fontSize","textAlign","paddingHorizontal","position","bottom","left","right","textShadowColor","textShadowOffset","textShadowRadius","absoluteFillObject","borderRadius","borderWidth","borderColor","lineHeight"],"sourceRoot":"../../src","sources":["LivenessCamera.tsx"],"mappings":";;AAAA,SAASA,WAAW,EAAEC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AAChE,SAASC,QAAQ,IAAIC,UAAU,EAAEC,UAAU,EAAEC,IAAI,EAAEC,IAAI,QAAQ,cAAc;AAC7E,OAAOJ,QAAQ,IACbK,eAAe,EACfC,MAAM,EACNC,gBAAgB,EAChBC,cAAc,EACdC,UAAU,EACVC,YAAY,EACZC,UAAU,QACL,yBAAyB;AAChC,SACEC,MAAM,EACNC,eAAe,EACfC,eAAe,EACfC,mBAAmB,QACd,4BAA4B;AACnC,SACEC,MAAM,EACNC,QAAQ,EACRC,IAAI,EACJC,CAAC,EACDC,cAAc,EACdC,IAAI,EACJC,IAAI,EACJC,IAAI,EACJC,GAAG,QACE,kBAAkB;AACzB,SAASC,iBAAiB,QAAQ,wBAAqB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAGxD;AACA;AACA;AACA,MAAMC,cAAc,GAAG9B,QAAQ,CAAC+B,uBAAuB,CAACf,MAAM,CAAC;AAC/D,MAAMgB,SAAS,GAAGhC,QAAQ,CAAC+B,uBAAuB,CAACZ,CAAC,CAAC;AACrD,MAAMc,YAAY,GAAGjC,QAAQ,CAAC+B,uBAAuB,CAACT,IAAI,CAAC;;AAE3D;AACA,MAAMY,YAAY,GAAG,cAAc;AACnC,MAAMC,qBAAqB,GAAG,IAAI;AAClC,MAAMC,YAAY,GAAG,CAAC;AACtB,MAAMC,CAAC,GAAG,MAAM,CAAC,CAAC;AAClB,MAAMC,gBAAgB,GAAG,CAAC,CAAC,CAAC;AAC5B,MAAMC,gBAAgB,GAAG,EAAE,CAAC,CAAC;AAC7B,MAAMC,cAAc,GAAGJ,YAAY,GAAG,CAAC;;AAEvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASK,cAAcA,CAACC,KAAoB,EAAEC,KAAa,EAAU;EACnE,QAAQD,KAAK;IACX,KAAK,OAAO;MACV,OAAO,SAAS;IAClB,KAAK,WAAW;IAChB,KAAK,WAAW;IAChB,KAAK,WAAW;IAChB,KAAK,MAAM;MACT,OAAO,SAAS;IAClB;MACE,OAAOC,KAAK,GAAG,IAAI,GAAG,SAAS,GAAG,SAAS;EAC/C;AACF;;AAEA;AACA;AACA,SAASC,UAAUA,CAACC,EAAU,EAAEC,EAAU,EAAEC,CAAS,EAAU;EAC7D,OAAO,CACL,KAAKF,EAAE,GAAGE,CAAC,IAAID,EAAE,EAAE,EACnB,KAAKD,EAAE,GAAGE,CAAC,IAAID,EAAE,GAAGC,CAAC,GAAGV,CAAC,IAAIQ,EAAE,GAAGE,CAAC,GAAGV,CAAC,IAAIS,EAAE,GAAGC,CAAC,IAAIF,EAAE,IAAIC,EAAE,GAAGC,CAAC,EAAE,EACnE,KAAKF,EAAE,GAAGE,CAAC,GAAGV,CAAC,IAAIS,EAAE,GAAGC,CAAC,IAAIF,EAAE,GAAGE,CAAC,IAAID,EAAE,GAAGC,CAAC,GAAGV,CAAC,IAAIQ,EAAE,GAAGE,CAAC,IAAID,EAAE,EAAE,EACnE,KAAKD,EAAE,GAAGE,CAAC,IAAID,EAAE,GAAGC,CAAC,GAAGV,CAAC,IAAIQ,EAAE,GAAGE,CAAC,GAAGV,CAAC,IAAIS,EAAE,GAAGC,CAAC,IAAIF,EAAE,IAAIC,EAAE,GAAGC,CAAC,EAAE,EACnE,KAAKF,EAAE,GAAGE,CAAC,GAAGV,CAAC,IAAIS,EAAE,GAAGC,CAAC,IAAIF,EAAE,GAAGE,CAAC,IAAID,EAAE,GAAGC,CAAC,GAAGV,CAAC,IAAIQ,EAAE,GAAGE,CAAC,IAAID,EAAE,EAAE,EACnE,GAAG,CACJ,CAACE,IAAI,CAAC,GAAG,CAAC;AACb;;AAEA;AACA,SAASC,cAAcA,CACrBJ,EAAU,EACVC,EAAU,EACVC,CAAS,EACTG,SAAiB,EACjBC,OAAe,EACP;EACR,MAAMC,KAAK,GAAIC,CAAS,IAAMA,CAAC,GAAGC,IAAI,CAACC,EAAE,GAAI,GAAG;EAChD,MAAMC,EAAE,GAAGJ,KAAK,CAACF,SAAS,GAAGC,OAAO,GAAG,CAAC,CAAC;EACzC,MAAMM,EAAE,GAAGL,KAAK,CAACF,SAAS,GAAGC,OAAO,GAAG,CAAC,CAAC;EACzC,MAAMO,EAAE,GAAGb,EAAE,GAAGE,CAAC,GAAGO,IAAI,CAACK,GAAG,CAACH,EAAE,CAAC;EAChC,MAAMI,EAAE,GAAGd,EAAE,GAAGC,CAAC,GAAGO,IAAI,CAACO,GAAG,CAACL,EAAE,CAAC;EAChC,MAAMM,EAAE,GAAGjB,EAAE,GAAGE,CAAC,GAAGO,IAAI,CAACK,GAAG,CAACF,EAAE,CAAC;EAChC,MAAMM,EAAE,GAAGjB,EAAE,GAAGC,CAAC,GAAGO,IAAI,CAACO,GAAG,CAACJ,EAAE,CAAC;EAChC,OAAO,KAAKC,EAAE,IAAIE,EAAE,MAAMb,CAAC,IAAIA,CAAC,UAAUe,EAAE,IAAIC,EAAE,EAAE;AACtD;;AAEA;AAAA,MAAAC,iCAAA;EAAAC,IAAA;EAAAC,QAAA;EAAAC,SAAA;AAAA;AAAA,MAAAC,iCAAA;EAAAH,IAAA;EAAAC,QAAA;EAAAC,SAAA;AAAA;AAAA,MAAAE,gCAAA;EAAAJ,IAAA;EAAAC,QAAA;EAAAC,SAAA;AAAA;AACA,SAASG,aAAaA,CAAC;EACrBC,KAAK;EACLC,MAAM;EACN9B,KAAK;EACLC;AAMF,CAAC,EAAE;EACD;EACA;EACA,MAAM8B,YAAY,GAAGjE,cAAc,CAAC,CAAC,CAAC;EACtC,MAAMkE,WAAW,GAAGlE,cAAc,CAAC,CAAC,CAAC;EACrC;EACA,MAAMmE,UAAU,GAAGnE,cAAc,CAAC,CAAC,CAAC;EACpC;EACA,MAAMoE,gBAAgB,GAAGpE,cAAc,CAAC,CAAC,CAAC;;EAE1C;EACA,MAAMqC,EAAE,GAAG0B,KAAK,GAAG,CAAC;EACpB,MAAMzB,EAAE,GAAG0B,MAAM,GAAG,IAAI;EACxB,MAAMzB,CAAC,GAAIwB,KAAK,GAAGpC,qBAAqB,GAAI,CAAC;EAC7C,MAAM0C,aAAa,GAAG,CAAC,GAAGvB,IAAI,CAACC,EAAE,GAAGR,CAAC;EACrC,MAAM+B,KAAK,GAAGrC,cAAc,CAACC,KAAK,EAAEC,KAAK,CAAC;;EAE1C;EACA,MAAMoC,aAAa,GAAGxE,gBAAgB,CACpC,SAAAyE,0BAAA;IAAAhB,iCAAA;IAEKlB,EAAE;IAAGC,CAAC;IAAO0B,YAAY;IAAkBnC,gBAAgB;IACrDoC;EAAW;IAAA,MAAAO,EAAA,QAAAC,MAAA,CAAAC,KAAA;IAAA,MAAAC,kBAAA,GAHtBA,CAAA,MAAO;MACL;MACAC,CAAC,EAAEvC,EAAE,GAAGC,CAAC,GAAG,CAAC,GAAG0B,YAAY,CAACa,KAAK,IAAI,CAAC,GAAGvC,CAAC,GAAGT,gBAAgB,GAAG,CAAC,CAAC;MACnEiD,OAAO,EAAEb,WAAW,CAACY;IACvB,CAAC,CAAC;IAAAF,kBAAA,CAAAI,SAAA;MAFG1C,EAAE;MAAGC,CAAC;MAAO0B,YAAY;MAAkBnC,gBAAgB;MACrDoC;IAAW;IAAAU,kBAAA,CAAAK,aAAA;IAAAL,kBAAA,CAAAM,eAAA;IAAAN,kBAAA,CAAAO,UAAA,GAAA3B,iCAAA;IAAAoB,kBAAA,CAAAQ,cAAA,GAAAX,EAAA;IAAA,OAAAG,kBAAA;EAAA,CAHtB;IAAApB,iCAAA;IAEKlB,EAAE;IAAGC,CAAC;IAAO0B,YAAY;IAAkBnC,gBAAgB;IACrDoC;EAAW,IAEtB,CAAC5B,EAAE,EAAEC,CAAC,CACR,CAAC;EAED,MAAM8C,gBAAgB,GAAGtF,gBAAgB,CACvC,SAAAuF,0BAAA;IAAA1B,iCAAA;IAEYO,UAAU;IACX9B,EAAE;IACFC;EAAE;IAAA,MAAAmC,EAAA,QAAAC,MAAA,CAAAC,KAAA;IAAA,MAAAY,kBAAA,GAJbA,CAAA,MAAO;MACL;MACAC,QAAQ,EAAErB,UAAU,CAACW,KAAK,GAAG,GAAG;MAChCW,OAAO,EAAEpD,EAAE;MACXqD,OAAO,EAAEpD;IACX,CAAC,CAAC;IAAAiD,kBAAA,CAAAP,SAAA;MAHUb,UAAU;MACX9B,EAAE;MACFC;IAAE;IAAAiD,kBAAA,CAAAN,aAAA;IAAAM,kBAAA,CAAAL,eAAA;IAAAK,kBAAA,CAAAJ,UAAA,GAAAvB,iCAAA;IAAA2B,kBAAA,CAAAH,cAAA,GAAAX,EAAA;IAAA,OAAAc,kBAAA;EAAA,CAJb;IAAA3B,iCAAA;IAEYO,UAAU;IACX9B,EAAE;IACFC;EAAE,IAEb,CAACD,EAAE,EAAEC,EAAE,CACT,CAAC;;EAED;EACA,MAAMqD,iBAAiB,GAAG5F,gBAAgB,CACxC,SAAA6F,0BAAA;IAAA/B,gCAAA;IACoBQ,aAAa;IAAQD;EAAgB;IAAA,MAAAK,EAAA,QAAAC,MAAA,CAAAC,KAAA;IAAA,MAAAkB,kBAAA,GADzDA,CAAA,MAAO;MACLC,gBAAgB,EAAEzB,aAAa,IAAI,CAAC,GAAGD,gBAAgB,CAACU,KAAK;IAC/D,CAAC,CAAC;IAAAe,kBAAA,CAAAb,SAAA;MADkBX,aAAa;MAAQD;IAAgB;IAAAyB,kBAAA,CAAAZ,aAAA;IAAAY,kBAAA,CAAAX,eAAA;IAAAW,kBAAA,CAAAV,UAAA,GAAAtB,gCAAA;IAAAgC,kBAAA,CAAAT,cAAA,GAAAX,EAAA;IAAA,OAAAoB,kBAAA;EAAA,CADzD;IAAAhC,gCAAA;IACoBQ,aAAa;IAAQD;EAAgB,IAEzD,CAACC,aAAa,CAChB,CAAC;;EAED;EACAhF,SAAS,CAAC,MAAM;IACd4E,YAAY,CAACa,KAAK,GAAG7E,UAAU,CAC7BC,YAAY,CACVC,UAAU,CAAC,CAAC,EAAE;MAAE4F,QAAQ,EAAE,IAAI;MAAEC,MAAM,EAAElG,MAAM,CAACmG;IAAO,CAAC,CAAC,EACxD9F,UAAU,CAAC,CAAC,EAAE;MAAE4F,QAAQ,EAAE,IAAI;MAAEC,MAAM,EAAElG,MAAM,CAACmG;IAAO,CAAC,CACzD,CAAC,EACD,CAAC,CAAC,EACF,KACF,CAAC;IACD9B,UAAU,CAACW,KAAK,GAAG7E,UAAU,CAC3BE,UAAU,CAAC,GAAG,EAAE;MAAE4F,QAAQ,EAAE,IAAI;MAAEC,MAAM,EAAElG,MAAM,CAACmG;IAAO,CAAC,CAAC,EAC1D,CAAC,CAAC,EACF,KACF,CAAC;IACD,OAAO,MAAM;MACXpG,eAAe,CAACoE,YAAY,CAAC;MAC7BpE,eAAe,CAACsE,UAAU,CAAC;IAC7B,CAAC;EACH,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;;EAER;EACA9E,SAAS,CAAC,MAAM;IACd,IAAI6C,KAAK,KAAK,UAAU,EAAE;MACxBrC,eAAe,CAACoE,YAAY,CAAC;MAC7BpE,eAAe,CAACsE,UAAU,CAAC;MAC3BD,WAAW,CAACY,KAAK,GAAG3E,UAAU,CAAC,CAAC,EAAE;QAAE4F,QAAQ,EAAE;MAAI,CAAC,CAAC;IACtD;EACF,CAAC,EAAE,CAAC7D,KAAK,CAAC,CAAC,CAAC,CAAC;;EAEb;EACA7C,SAAS,CAAC,MAAM;IACd+E,gBAAgB,CAACU,KAAK,GAAG3E,UAAU,CAACgC,KAAK,EAAE;MAAE4D,QAAQ,EAAE;IAAI,CAAC,CAAC;EAC/D,CAAC,EAAE,CAAC5D,KAAK,CAAC,CAAC,CAAC,CAAC;;EAEb;EACA,IAAI4B,KAAK,KAAK,CAAC,IAAIC,MAAM,KAAK,CAAC,EAAE,OAAO,IAAI;;EAE5C;EACA,MAAMkC,MAAM,GAAG,QAAQnC,KAAK,IAAIC,MAAM,OAAO5B,UAAU,CAACC,EAAE,EAAEC,EAAE,EAAEC,CAAC,CAAC,EAAE;;EAEpE;EACA,MAAM4D,QAAQ,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CACjCC,GAAG,CAAEC,GAAG,IAAK5D,cAAc,CAACJ,EAAE,EAAEC,EAAE,EAAEC,CAAC,EAAE8D,GAAG,EAAEtE,gBAAgB,CAAC,CAAC,CAC9DS,IAAI,CAAC,GAAG,CAAC;EAEZ,oBACEnB,KAAA,CAACL,GAAG;IAACsF,KAAK,EAAE5G,UAAU,CAAC6G,YAAa;IAACxC,KAAK,EAAEA,KAAM;IAACC,MAAM,EAAEA,MAAO;IAAAwC,QAAA,gBAEhEnF,KAAA,CAACX,IAAI;MAAA8F,QAAA,gBAEHrF,IAAA,CAACV,QAAQ;QAACgG,EAAE,EAAC,sBAAsB;QAAAD,QAAA,eACjCrF,IAAA,CAACX,MAAM;UAAC6B,EAAE,EAAEA,EAAG;UAACC,EAAE,EAAEA,EAAG;UAACC,CAAC,EAAEA;QAAE,CAAE;MAAC,CACxB,CAAC,eAGXlB,KAAA,CAACT,cAAc;QAAC6F,EAAE,EAAC,eAAe;QAACvD,EAAE,EAAC,GAAG;QAACE,EAAE,EAAC,GAAG;QAACE,EAAE,EAAC,GAAG;QAACC,EAAE,EAAC,GAAG;QAAAiD,QAAA,gBAC5DrF,IAAA,CAACJ,IAAI;UAAC2F,MAAM,EAAC,GAAG;UAACC,SAAS,EAAC,MAAM;UAACC,WAAW,EAAC;QAAG,CAAE,CAAC,eACpDzF,IAAA,CAACJ,IAAI;UAAC2F,MAAM,EAAC,MAAM;UAACC,SAAS,EAAC,MAAM;UAACC,WAAW,EAAC;QAAM,CAAE,CAAC,eAC1DzF,IAAA,CAACJ,IAAI;UAAC2F,MAAM,EAAC,MAAM;UAACC,SAAS,EAAC,MAAM;UAACC,WAAW,EAAC;QAAM,CAAE,CAAC,eAC1DzF,IAAA,CAACJ,IAAI;UAAC2F,MAAM,EAAC,GAAG;UAACC,SAAS,EAAC,MAAM;UAACC,WAAW,EAAC;QAAG,CAAE,CAAC;MAAA,CACtC,CAAC;IAAA,CACb,CAAC,eAGPzF,IAAA,CAACN,IAAI;MAACgC,CAAC,EAAEqD,MAAO;MAACW,IAAI,EAAC,kBAAkB;MAACC,QAAQ,EAAC;IAAS,CAAE,CAAC,eAG9D3F,IAAA,CAACX,MAAM;MACL6B,EAAE,EAAEA,EAAG;MACPC,EAAE,EAAEA,EAAG;MACPC,CAAC,EAAEA,CAAE;MACLsE,IAAI,EAAC,MAAM;MACXE,MAAM,EAAC,wBAAwB;MAC/BC,WAAW,EAAE;IAAE,CAChB,CAAC,eAGF7F,IAAA,CAACR,CAAC;MAACsG,QAAQ,EAAC,4BAA4B;MAAAT,QAAA,eACtCrF,IAAA,CAACM,YAAY;QACXyF,CAAC,EAAE7E,EAAE,GAAGE,CAAE;QACVwB,KAAK,EAAExB,CAAC,GAAG,CAAE;QACbyB,MAAM,EAAElC,gBAAiB;QACzB+E,IAAI,EAAC,qBAAqB;QAC1BM,aAAa,EAAE5C;MAAc,CAC9B;IAAC,CACD,CAAC,eAGJpD,IAAA,CAACK,SAAS;MAAC2F,aAAa,EAAE9B,gBAAiB;MAAAmB,QAAA,eACzCrF,IAAA,CAACN,IAAI;QACHgC,CAAC,EAAEsD,QAAS;QACZU,IAAI,EAAC,MAAM;QACXE,MAAM,EAAEzC,KAAM;QACd0C,WAAW,EAAEhF,cAAe;QAC5BoF,aAAa,EAAC,OAAO;QACrBrC,OAAO,EAAE;MAAK,CACf;IAAC,CACO,CAAC,eAIZ5D,IAAA,CAACG,cAAc;MACbe,EAAE,EAAEA,EAAG;MACPC,EAAE,EAAEA,EAAG;MACPC,CAAC,EAAEA,CAAE;MACLsE,IAAI,EAAC,MAAM;MACXE,MAAM,EAAEzC,KAAM;MACd0C,WAAW,EAAEpF,YAAa;MAC1ByF,eAAe,EAAEhD,aAAc;MAC/B+C,aAAa,EAAC,OAAO;MACrBE,SAAS,EAAE,eAAejF,EAAE,KAAKC,EAAE,GAAI;MACvC6E,aAAa,EAAExB;IAAkB,CAClC,CAAC;EAAA,CACC,CAAC;AAEV;;AAEA;AACA,SAAS4B,eAAeA,CAAC;EACvBzC,KAAK;EACL0C;AAIF,CAAC,EAAE;EACD,MAAMC,KAAK,GAAGnI,MAAM,CAAC,IAAIG,UAAU,CAACiI,KAAK,CAAC,CAAC,CAAC,CAAC,CAACC,OAAO;EACrD,MAAM5C,OAAO,GAAGzF,MAAM,CAAC,IAAIG,UAAU,CAACiI,KAAK,CAAC,CAAC,CAAC,CAAC,CAACC,OAAO;EAEvDtI,SAAS,CAAC,MAAM;IACdI,UAAU,CAACmI,QAAQ,CAAC,CAClBnI,UAAU,CAACoI,QAAQ,CAAC,CAClBpI,UAAU,CAACqI,MAAM,CAACL,KAAK,EAAE;MACvBM,OAAO,EAAE,GAAG;MACZC,SAAS,EAAE,GAAG;MACdC,OAAO,EAAE,CAAC;MACVC,eAAe,EAAE;IACnB,CAAC,CAAC,EACFzI,UAAU,CAACqI,MAAM,CAACL,KAAK,EAAE;MACvBM,OAAO,EAAE,GAAG;MACZC,SAAS,EAAE,GAAG;MACdC,OAAO,EAAE,CAAC;MACVC,eAAe,EAAE;IACnB,CAAC,CAAC,CACH,CAAC,EACFzI,UAAU,CAAC0I,MAAM,CAACpD,OAAO,EAAE;MACzBgD,OAAO,EAAE,CAAC;MACVhC,QAAQ,EAAE,GAAG;MACbmC,eAAe,EAAE;IACnB,CAAC,CAAC,CACH,CAAC,CAACE,KAAK,CAAC,CAAC;IAEV,OAAO,MAAM;MACX3I,UAAU,CAAC0I,MAAM,CAACpD,OAAO,EAAE;QACzBgD,OAAO,EAAE,CAAC;QACVhC,QAAQ,EAAE,GAAG;QACbmC,eAAe,EAAE;MACnB,CAAC,CAAC,CAACE,KAAK,CAAC,CAAC;IACZ,CAAC;EACH,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;;EAER,oBACEjH,IAAA,CAAC1B,UAAU,CAACG,IAAI;IACd0G,KAAK,EAAE,CAAC+B,MAAM,CAACC,eAAe,EAAE;MAAEvD,OAAO;MAAEuC,SAAS,EAAE,CAAC;QAAEG;MAAM,CAAC;IAAE,CAAC,CAAE;IAAAjB,QAAA,eAErErF,IAAA,CAACxB,IAAI;MAAC2G,KAAK,EAAE,CAAC+B,MAAM,CAACE,aAAa,EAAE;QAAEf;MAAW,CAAC,CAAE;MAAAhB,QAAA,EAAE1B;IAAK,CAAO;EAAC,CACpD,CAAC;AAEtB;;AAEA;AACA,OAAO,SAAS0D,cAAcA,CAAC;EAC7BC,SAAS;EACTC,mBAAmB;EACnBC,OAAO;EACPC,aAAa,GAAG,CAAC;EACjBC,YAAY,GAAG,IAAI;EACnBrB,UAAU,GAAG9F,YAAY;EACzB4E;AACmB,CAAC,EAAE;EACtB,MAAM;IAAEwC,aAAa;IAAEC;EAAkB,CAAC,GAAGxI,mBAAmB,CAAC,CAAC;EAClE,MAAMyI,MAAM,GAAG3I,eAAe,CAAC,OAAO,CAAC;EACvC,MAAM4I,MAAM,GAAG3I,eAAe,CAAC0I,MAAM,EAAE,CAAC;IAAEE,GAAG,EAAE;EAAG,CAAC,CAAC,CAAC;EACrD,MAAMA,GAAG,GAAGpG,IAAI,CAACqG,GAAG,CAACF,MAAM,EAAEG,MAAM,IAAI,EAAE,EAAE,EAAE,CAAC;EAC9C,MAAMC,SAAS,GAAG/J,MAAM,CAAS,IAAI,CAAC;EACtC,MAAM,CAACgK,aAAa,EAAEC,gBAAgB,CAAC,GAAGhK,QAAQ,CAAC;IAAEwE,KAAK,EAAE,CAAC;IAAEC,MAAM,EAAE;EAAE,CAAC,CAAC;EAE3E,MAAM;IAAEwF,cAAc;IAAEC,aAAa;IAAEC,aAAa;IAAEC,SAAS;IAAEC;EAAS,CAAC,GACzE3I,iBAAiB,CAAC;IAChB2H,aAAa;IACbC,YAAY;IACZQ,SAAS;IACTZ,SAAS;IACTC,mBAAmB;IACnBC;EACF,CAAC,CAAC;EAEJ,MAAMkB,YAAY,GAAGzK,WAAW,CAC7B0K,CAAiE,IAAK;IACrE,MAAM;MAAE/F,KAAK;MAAEC;IAAO,CAAC,GAAG8F,CAAC,CAACC,WAAW,CAACC,MAAM;IAC9CT,gBAAgB,CAAC;MAAExF,KAAK;MAAEC;IAAO,CAAC,CAAC;EACrC,CAAC,EACD,EACF,CAAC;EAED3E,SAAS,CAAC,MAAM;IACd,IAAI,CAACyJ,aAAa,EAAE;MAClBC,iBAAiB,CAAC,CAAC,CAACkB,KAAK,CAAC,MAAM;QAC9BtB,OAAO,GAAG,IAAIhE,KAAK,CAAC,0BAA0B,CAAC,CAAC;MAClD,CAAC,CAAC;IACJ;EACF,CAAC,EAAE,CAACmE,aAAa,EAAEC,iBAAiB,EAAEJ,OAAO,CAAC,CAAC;EAE/C,IAAI,CAACG,aAAa,EAAE;IAClB,oBACE3H,IAAA,CAACvB,IAAI;MAAC0G,KAAK,EAAE,CAAC+B,MAAM,CAAC6B,IAAI,EAAE5D,KAAK,EAAE+B,MAAM,CAAC8B,QAAQ,CAAE;MAAA3D,QAAA,eACjDrF,IAAA,CAACxB,IAAI;QAAC2G,KAAK,EAAE,CAAC+B,MAAM,CAAC+B,cAAc,EAAE;UAAE5C;QAAW,CAAC,CAAE;QAAAhB,QAAA,EAAC;MAEtD,CAAM;IAAC,CACH,CAAC;EAEX;EAEA,IAAI,CAACwC,MAAM,EAAE;IACX,oBACE7H,IAAA,CAACvB,IAAI;MAAC0G,KAAK,EAAE,CAAC+B,MAAM,CAAC6B,IAAI,EAAE5D,KAAK,EAAE+B,MAAM,CAAC8B,QAAQ,CAAE;MAAA3D,QAAA,eACjDrF,IAAA,CAACxB,IAAI;QAAC2G,KAAK,EAAE,CAAC+B,MAAM,CAAC+B,cAAc,EAAE;UAAE5C;QAAW,CAAC,CAAE;QAAAhB,QAAA,EAAC;MAEtD,CAAM;IAAC,CACH,CAAC;EAEX;EAEA,oBACEnF,KAAA,CAACzB,IAAI;IAAC0G,KAAK,EAAE,CAAC+B,MAAM,CAAC6B,IAAI,EAAE5D,KAAK,CAAE;IAAC+D,QAAQ,EAAER,YAAa;IAAArD,QAAA,gBACxDrF,IAAA,CAACf,MAAM;MACLkK,GAAG,EAAEjB,SAAU;MACf/C,KAAK,EAAE5G,UAAU,CAAC6G,YAAa;MAC/ByC,MAAM,EAAEA,MAAO;MACfuB,QAAQ,EAAEd,aAAa,KAAK,MAAM,IAAIA,aAAa,KAAK,OAAQ;MAChED,cAAc,EAAEA,cAAe;MAC/BgB,KAAK;MACLC,WAAW,EAAC,KAAK;MACjBxB,MAAM,EAAEA,MAAO;MACfC,GAAG,EAAEA;IAAI,CACV,CAAC,eACF/H,IAAA,CAAC2C,aAAa;MACZC,KAAK,EAAEuF,aAAa,CAACvF,KAAM;MAC3BC,MAAM,EAAEsF,aAAa,CAACtF,MAAO;MAC7B9B,KAAK,EAAEuH,aAAc;MACrBtH,KAAK,EAAEuH;IAAc,CACtB,CAAC,EACDD,aAAa,KAAK,MAAM,iBACvBtI,IAAA,CAACvB,IAAI;MAAC0G,KAAK,EAAE+B,MAAM,CAACqC,iBAAkB;MAAAlE,QAAA,eACpCrF,IAAA,CAACxB,IAAI;QAAC2G,KAAK,EAAE,CAAC+B,MAAM,CAACsC,YAAY,EAAE;UAAEnD;QAAW,CAAC,CAAE;QAAAhB,QAAA,EAAEoD;MAAQ,CAAO;IAAC,CACjE,CACP,EACAH,aAAa,KAAK,WAAW,IAAIE,SAAS,KAAK,IAAI,iBAClDxI,IAAA,CAACvB,IAAI;MAAC0G,KAAK,EAAE+B,MAAM,CAACuC,kBAAmB;MAAApE,QAAA,eACrCrF,IAAA,CAACoG,eAAe;QAEdzC,KAAK,EAAE6E,SAAU;QACjBnC,UAAU,EAAEA;MAAW,GAFlBmC,SAGN;IAAC,CACE,CACP,EACAF,aAAa,KAAK,WAAW,iBAC5BtI,IAAA,CAACvB,IAAI;MAAC0G,KAAK,EAAE+B,MAAM,CAACwC,YAAa;MAACC,aAAa,EAAC;IAAM,CAAE,CACzD;EAAA,CACG,CAAC;AAEX;;AAEA;AACA,MAAMzC,MAAM,GAAG3I,UAAU,CAACqL,MAAM,CAAC;EAC/Bb,IAAI,EAAE;IACJc,IAAI,EAAE,CAAC;IACPC,eAAe,EAAE,MAAM;IACvBC,QAAQ,EAAE;EACZ,CAAC;EACDf,QAAQ,EAAE;IACRgB,cAAc,EAAE,QAAQ;IACxBC,UAAU,EAAE;EACd,CAAC;EACDhB,cAAc,EAAE;IACd9F,KAAK,EAAE,MAAM;IACb+G,QAAQ,EAAE,EAAE;IACZC,SAAS,EAAE,QAAQ;IACnBC,iBAAiB,EAAE;EACrB,CAAC;EACDb,iBAAiB,EAAE;IACjBc,QAAQ,EAAE,UAAU;IACpBC,MAAM,EAAE,KAAK;IACbC,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE,CAAC;IACRP,UAAU,EAAE,QAAQ;IACpBG,iBAAiB,EAAE;EACrB,CAAC;EACDZ,YAAY,EAAE;IACZrG,KAAK,EAAE,MAAM;IACb+G,QAAQ,EAAE,EAAE;IACZC,SAAS,EAAE,QAAQ;IACnBM,eAAe,EAAE,iBAAiB;IAClCC,gBAAgB,EAAE;MAAE9H,KAAK,EAAE,CAAC;MAAEC,MAAM,EAAE;IAAE,CAAC;IACzC8H,gBAAgB,EAAE;EACpB,CAAC;EACDlB,kBAAkB,EAAE;IAClB,GAAGlL,UAAU,CAACqM,kBAAkB;IAChCZ,cAAc,EAAE,QAAQ;IACxBC,UAAU,EAAE;EACd,CAAC;EACD9C,eAAe,EAAE;IACfvE,KAAK,EAAE,EAAE;IACTC,MAAM,EAAE,EAAE;IACVgI,YAAY,EAAE,EAAE;IAChBf,eAAe,EAAE,wBAAwB;IACzCgB,WAAW,EAAE,CAAC;IACdC,WAAW,EAAE,MAAM;IACnBf,cAAc,EAAE,QAAQ;IACxBC,UAAU,EAAE;EACd,CAAC;EACD7C,aAAa,EAAE;IACbjE,KAAK,EAAE,MAAM;IACb+G,QAAQ,EAAE,EAAE;IACZc,UAAU,EAAE;EACd,CAAC;EACDtB,YAAY,EAAE;IACZ,GAAGnL,UAAU,CAACqM,kBAAkB;IAChCd,eAAe,EAAE,MAAM;IACvBlG,OAAO,EAAE;EACX;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -48,8 +48,6 @@ export function LivenessCameraModal({
|
|
|
48
48
|
onLivenessConfirmed,
|
|
49
49
|
onError,
|
|
50
50
|
countdownFrom,
|
|
51
|
-
livenessThreshold,
|
|
52
|
-
confirmFrames,
|
|
53
51
|
soundEnabled,
|
|
54
52
|
fontFamily
|
|
55
53
|
}) {
|
|
@@ -70,8 +68,6 @@ export function LivenessCameraModal({
|
|
|
70
68
|
onLivenessConfirmed: onLivenessConfirmed,
|
|
71
69
|
onError: onError,
|
|
72
70
|
countdownFrom: countdownFrom,
|
|
73
|
-
livenessThreshold: livenessThreshold,
|
|
74
|
-
confirmFrames: confirmFrames,
|
|
75
71
|
soundEnabled: soundEnabled,
|
|
76
72
|
fontFamily: fontFamily
|
|
77
73
|
}), /*#__PURE__*/_jsx(TouchableOpacity, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Modal","StyleSheet","TouchableOpacity","View","Path","Svg","LivenessCamera","jsx","_jsx","jsxs","_jsxs","CloseIcon","color","size","pad","end","width","height","viewBox","children","d","stroke","strokeWidth","strokeLinecap","LivenessCameraModal","visible","onClose","animationType","closeButtonStyle","closeButtonIconColor","closeButtonIconSize","onCapture","onLivenessConfirmed","onError","countdownFrom","
|
|
1
|
+
{"version":3,"names":["Modal","StyleSheet","TouchableOpacity","View","Path","Svg","LivenessCamera","jsx","_jsx","jsxs","_jsxs","CloseIcon","color","size","pad","end","width","height","viewBox","children","d","stroke","strokeWidth","strokeLinecap","LivenessCameraModal","visible","onClose","animationType","closeButtonStyle","closeButtonIconColor","closeButtonIconSize","onCapture","onLivenessConfirmed","onError","countdownFrom","soundEnabled","fontFamily","handleCapture","result","statusBarTranslucent","onRequestClose","style","styles","container","camera","closeButton","onPress","activeOpacity","hitSlop","top","bottom","left","right","create","flex","backgroundColor","position","borderRadius","justifyContent","alignItems","borderWidth","borderColor"],"sourceRoot":"../../src","sources":["LivenessCameraModal.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,69 +1,41 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
//
|
|
4
|
-
// require gestures. Natural blinks are involuntary and must never penalise the
|
|
5
|
-
// user. Liveness is confirmed via face presence, size, and frontal pose only.
|
|
6
|
-
const WEIGHTS = {
|
|
7
|
-
faceDetected: 0.25,
|
|
8
|
-
faceSize: 0.3,
|
|
9
|
-
headPose: 0.45
|
|
10
|
-
};
|
|
11
|
-
|
|
12
|
-
// Loosened from 0.20 / 0.65 — gives more room for the user to breathe
|
|
3
|
+
// ─── Thresholds ───────────────────────────────────────────────────────────────
|
|
13
4
|
const FACE_SIZE_MIN = 0.15;
|
|
14
5
|
const FACE_SIZE_MAX = 0.8;
|
|
15
|
-
const FACE_SIZE_SOFT_MARGIN = 0.05; // gradient ramp at each edge
|
|
16
6
|
|
|
17
|
-
//
|
|
18
|
-
const MAX_YAW_DEG = 25;
|
|
19
|
-
const MAX_PITCH_DEG = 25;
|
|
20
|
-
export function scoreFrame(face, frameWidth) {
|
|
21
|
-
if (!face.detected || frameWidth === 0) {
|
|
22
|
-
return {
|
|
23
|
-
total: 0,
|
|
24
|
-
faceSize: 0,
|
|
25
|
-
headPose: 0,
|
|
26
|
-
eyesOpen: 0
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
const faceWidthRatio = face.bounds.width / frameWidth;
|
|
7
|
+
// ─── Challenge step ───────────────────────────────────────────────────────────
|
|
30
8
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
9
|
+
/**
|
|
10
|
+
* Sequential liveness challenges.
|
|
11
|
+
* Each step completes when `framesRequired` consecutive frames pass `check`.
|
|
12
|
+
* The progress arc fills 1/N per step, then turns green at the end.
|
|
13
|
+
*/
|
|
14
|
+
export const CHALLENGE_STEPS = [{
|
|
15
|
+
instruction: 'Position your face in the circle',
|
|
16
|
+
framesRequired: 5,
|
|
17
|
+
check: (face, fw) => {
|
|
18
|
+
if (!face.detected || fw === 0) return false;
|
|
19
|
+
const ratio = face.bounds.width / fw;
|
|
20
|
+
return ratio >= FACE_SIZE_MIN && ratio <= FACE_SIZE_MAX && Math.abs(face.yawAngle) < 20 && Math.abs(face.pitchAngle) < 20;
|
|
40
21
|
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
if (!face.detected) return 'Position your face in the circle';
|
|
61
|
-
const faceWidthRatio = face.bounds.width / frameWidth;
|
|
62
|
-
if (faceWidthRatio < FACE_SIZE_MIN) return 'Move closer';
|
|
63
|
-
if (faceWidthRatio > FACE_SIZE_MAX) return 'Move farther away';
|
|
64
|
-
const yawBad = Math.abs(face.yawAngle) >= MAX_YAW_DEG;
|
|
65
|
-
const pitchBad = Math.abs(face.pitchAngle) >= MAX_PITCH_DEG;
|
|
66
|
-
if (yawBad || pitchBad) return 'Look straight ahead';
|
|
67
|
-
return 'Hold still...';
|
|
68
|
-
}
|
|
22
|
+
}, {
|
|
23
|
+
instruction: 'Turn your head slightly',
|
|
24
|
+
framesRequired: 4,
|
|
25
|
+
check: face => face.detected && Math.abs(face.yawAngle) > 15
|
|
26
|
+
}, {
|
|
27
|
+
instruction: 'Now look straight ahead',
|
|
28
|
+
framesRequired: 5,
|
|
29
|
+
check: face => face.detected && Math.abs(face.yawAngle) < 10 && Math.abs(face.pitchAngle) < 15
|
|
30
|
+
}, {
|
|
31
|
+
instruction: 'Now blink',
|
|
32
|
+
framesRequired: 2,
|
|
33
|
+
check: face => {
|
|
34
|
+
if (!face.detected) return false;
|
|
35
|
+
const l = face.leftEyeOpenProbability;
|
|
36
|
+
const r = face.rightEyeOpenProbability;
|
|
37
|
+
// -1 means ML Kit couldn't classify — don't count as a blink
|
|
38
|
+
return l >= 0 && l < 0.3 && r >= 0 && r < 0.3;
|
|
39
|
+
}
|
|
40
|
+
}];
|
|
69
41
|
//# sourceMappingURL=livenessScoring.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["FACE_SIZE_MIN","FACE_SIZE_MAX","CHALLENGE_STEPS","instruction","framesRequired","check","face","fw","detected","ratio","bounds","width","Math","abs","yawAngle","pitchAngle","l","leftEyeOpenProbability","r","rightEyeOpenProbability"],"sourceRoot":"../../src","sources":["livenessScoring.ts"],"mappings":";;AAEA;AACA,MAAMA,aAAa,GAAG,IAAI;AAC1B,MAAMC,aAAa,GAAG,GAAG;;AAEzB;;AAUA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,eAAyC,GAAG,CACvD;EACEC,WAAW,EAAE,kCAAkC;EAC/CC,cAAc,EAAE,CAAC;EACjBC,KAAK,EAAEA,CAACC,IAAI,EAAEC,EAAE,KAAK;IACnB,IAAI,CAACD,IAAI,CAACE,QAAQ,IAAID,EAAE,KAAK,CAAC,EAAE,OAAO,KAAK;IAC5C,MAAME,KAAK,GAAGH,IAAI,CAACI,MAAM,CAACC,KAAK,GAAGJ,EAAE;IACpC,OACEE,KAAK,IAAIT,aAAa,IACtBS,KAAK,IAAIR,aAAa,IACtBW,IAAI,CAACC,GAAG,CAACP,IAAI,CAACQ,QAAQ,CAAC,GAAG,EAAE,IAC5BF,IAAI,CAACC,GAAG,CAACP,IAAI,CAACS,UAAU,CAAC,GAAG,EAAE;EAElC;AACF,CAAC,EACD;EACEZ,WAAW,EAAE,yBAAyB;EACtCC,cAAc,EAAE,CAAC;EACjBC,KAAK,EAAGC,IAAI,IAAKA,IAAI,CAACE,QAAQ,IAAII,IAAI,CAACC,GAAG,CAACP,IAAI,CAACQ,QAAQ,CAAC,GAAG;AAC9D,CAAC,EACD;EACEX,WAAW,EAAE,yBAAyB;EACtCC,cAAc,EAAE,CAAC;EACjBC,KAAK,EAAGC,IAAI,IACVA,IAAI,CAACE,QAAQ,IACbI,IAAI,CAACC,GAAG,CAACP,IAAI,CAACQ,QAAQ,CAAC,GAAG,EAAE,IAC5BF,IAAI,CAACC,GAAG,CAACP,IAAI,CAACS,UAAU,CAAC,GAAG;AAChC,CAAC,EACD;EACEZ,WAAW,EAAE,WAAW;EACxBC,cAAc,EAAE,CAAC;EACjBC,KAAK,EAAGC,IAAI,IAAK;IACf,IAAI,CAACA,IAAI,CAACE,QAAQ,EAAE,OAAO,KAAK;IAChC,MAAMQ,CAAC,GAAGV,IAAI,CAACW,sBAAsB;IACrC,MAAMC,CAAC,GAAGZ,IAAI,CAACa,uBAAuB;IACtC;IACA,OAAOH,CAAC,IAAI,CAAC,IAAIA,CAAC,GAAG,GAAG,IAAIE,CAAC,IAAI,CAAC,IAAIA,CAAC,GAAG,GAAG;EAC/C;AACF,CAAC,CACO","ignoreList":[]}
|