@routinecrew/routinecode 2.31.31 → 2.31.33
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/bin/prompt-vault.js +1 -1
- package/bin/setup.js +1 -1
- package/hooks/lib/block_message.py +50 -39
- package/hooks/pending-drainer.sh +254 -0
- package/hooks/post-tool-universal.sh +23 -0
- package/hooks/pre-agent-spawn.mjs +1 -1
- package/hooks/session-start.sh +25 -0
- package/hooks/stop-usage-metrics.sh +27 -0
- package/hooks/user-prompt-submit.sh +26 -3
- package/mcp-db-manager/dist/analyzers/duplicate-detector.js +1 -1
- package/mcp-db-manager/dist/core/model-parser.js +1 -1
- package/mcp-db-manager/dist/core/schema-reader.js +1 -1
- package/mcp-db-manager/dist/executors/migration-executor.js +1 -1
- package/mcp-db-manager/dist/generators/migration-generator.js +1 -1
- package/mcp-db-manager/dist/index.js +1 -1
- package/mcp-db-manager/dist/validators/schema-validator.js +1 -1
- package/mcp-dev-tester/dist/analyzers/auth-diagnoser.js +1 -1
- package/mcp-dev-tester/dist/analyzers/backend-analyzer.js +1 -1
- package/mcp-dev-tester/dist/analyzers/endpoint-diagnoser.js +1 -1
- package/mcp-dev-tester/dist/analyzers/frontend-analyzer.js +1 -1
- package/mcp-dev-tester/dist/analyzers/runtime-diagnoser.js +1 -1
- package/mcp-dev-tester/dist/analyzers/type-comparator.js +1 -1
- package/mcp-dev-tester/dist/analyzers/validation-diagnoser.js +1 -1
- package/mcp-dev-tester/dist/browser/playwright-manager.js +1 -1
- package/mcp-dev-tester/dist/browser/ui-tester.js +1 -1
- package/mcp-dev-tester/dist/config/project-config.js +1 -1
- package/mcp-dev-tester/dist/index.js +1 -1
- package/mcp-dev-tester/dist/testers/api-tester.js +1 -1
- package/mcp-doc-fetcher/dist/index.js +1 -1
- package/mcp-html-renderer/dist/index.js +1 -1
- package/mcp-html-renderer/dist/preview.js +1 -1
- package/mcp-html-renderer/dist/template-engine.js +1 -1
- package/mcp-intelligence/dist/concept-catalog.js +1 -1
- package/mcp-intelligence/dist/concept-server-proxy.js +1 -1
- package/mcp-intelligence/dist/config-auth.js +1 -1
- package/mcp-intelligence/dist/contracts.generated.js +1 -1
- package/mcp-intelligence/dist/domain-templates.js +1 -1
- package/mcp-intelligence/dist/grounding.js +1 -1
- package/mcp-intelligence/dist/handlers.js +1 -1
- package/mcp-intelligence/dist/index.js +1 -1
- package/mcp-intelligence/dist/intelligence-file.js +1 -1
- package/mcp-intelligence/dist/knowledge-critic.js +1 -1
- package/mcp-intelligence/dist/knowledge-handlers.d.ts.map +1 -1
- package/mcp-intelligence/dist/knowledge-handlers.js +1 -1
- package/mcp-intelligence/dist/mention-extractor.js +1 -1
- package/mcp-intelligence/dist/provenance.js +1 -1
- package/mcp-intelligence/dist/semantic-embedder.js +1 -1
- package/mcp-log-watcher/dist/config-auth.js +1 -1
- package/mcp-log-watcher/dist/file-watcher.js +1 -1
- package/mcp-log-watcher/dist/index.js +1 -1
- package/mcp-log-watcher/dist/known-solutions.js +1 -1
- package/mcp-log-watcher/dist/log-store.js +1 -1
- package/mcp-log-watcher/dist/websocket-server.js +1 -1
- package/mcp-plan-manager/dist/__tests__/plan-parser.test.js +1 -1
- package/mcp-plan-manager/dist/file-ops.js +1 -1
- package/mcp-plan-manager/dist/index.js +1 -1
- package/mcp-plan-manager/dist/plan-parser.js +1 -1
- package/mcp-project-context/dist/git-ops.js +1 -1
- package/mcp-project-context/dist/index.js +1 -1
- package/mcp-project-context/dist/project-analysis.js +1 -1
- package/mcp-routinecode/dist/agent-tracker.js +1 -1
- package/mcp-routinecode/dist/blast-radius.js +1 -1
- package/mcp-routinecode/dist/config-auth.js +1 -1
- package/mcp-routinecode/dist/contracts.generated.js +1 -1
- package/mcp-routinecode/dist/explorer-advisor.js +1 -1
- package/mcp-routinecode/dist/failure-tracker.js +1 -1
- package/mcp-routinecode/dist/file-lock-registry.js +1 -1
- package/mcp-routinecode/dist/file-risk-scorer.js +1 -1
- package/mcp-routinecode/dist/index.js +1 -1
- package/mcp-routinecode/dist/known-solutions.js +1 -1
- package/mcp-routinecode/dist/ledger-miner.js +1 -1
- package/mcp-routinecode/dist/observed-draft.js +1 -1
- package/mcp-routinecode/dist/pattern-matcher.js +1 -1
- package/mcp-routinecode/dist/routines.d.ts +18 -0
- package/mcp-routinecode/dist/routines.js +1 -1
- package/mcp-routinecode/dist/rule-engine.js +1 -1
- package/mcp-routinecode/dist/rule-promoter.js +1 -1
- package/mcp-routinecode/dist/telemetry-analyzer.js +1 -1
- package/mcp-routinecode/dist/verification.js +0 -0
- package/mcp-routinecode/dist/viral-loop.js +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# pending-drainer — pending-sync.jsonl 을 서버로 주기 백필. **MCP 비의존**(cwd 무관).
|
|
3
|
+
# session-start 훅이 백그라운드(nohup)로 기동. post-tool-universal 이 6h 안전망으로 재기동.
|
|
4
|
+
# 목표: 각 사용자 pending 이 세션 경계를 넘겨 쌓이지 않게 하고, 유실 0(실패=pending 또는 dead-letter).
|
|
5
|
+
#
|
|
6
|
+
# 설계 L5 (교차검증 97):
|
|
7
|
+
# - config.json(serverUrl/apiKey/tenantId/userId/machineId) 직접 읽어 Bearer POST
|
|
8
|
+
# ${serverUrl}/api/v1/ingest/${endpoint}.
|
|
9
|
+
# - payload body 엔벌로프는 sendToServer 와 **동일** 재구성:
|
|
10
|
+
# {...item.data, tenantId, userId, contributorHash: userId ? 'p:'+userId : machineId}
|
|
11
|
+
# (헤더만으론 서버 dedup/귀속이 깨짐 — body 의 contributorHash 사용)
|
|
12
|
+
# - 디바운스: .last-drain mtime <1h 면 skip. 성공 후 touch.
|
|
13
|
+
# - rate: 요청 간 >=2.5s(<=24/min). 429 는 지수 백오프.
|
|
14
|
+
# - nextAttemptAt(L4 백오프) 존중. 멱등(서버 dedup). claim-rename 으로 동시실행 방지.
|
|
15
|
+
# - 실패 분류/재큐/dead-letter 는 L4(knowledge-handlers) 와 동일 규칙.
|
|
16
|
+
set -u
|
|
17
|
+
|
|
18
|
+
KN="${ROUTINECODE_KNOWLEDGE_DIR:-${ROUTINECODE_DIR:-$HOME/.routinecode}/knowledge}"
|
|
19
|
+
CONFIG="${ROUTINECODE_CONFIG_PATH:-${ROUTINECODE_DIR:-$HOME/.routinecode}/config.json}"
|
|
20
|
+
PENDING="$KN/pending-sync.jsonl"
|
|
21
|
+
DEADLETTER="$KN/pending-sync.deadletter.jsonl"
|
|
22
|
+
MARKER="$KN/.last-drain"
|
|
23
|
+
|
|
24
|
+
# recorder 자신의 세션에서는 돌지 않음(불필요한 중첩 방지)
|
|
25
|
+
[ "${ROUTINECODE_RECORDER:-}" = "1" ] && exit 0
|
|
26
|
+
[ -f "$CONFIG" ] || exit 0
|
|
27
|
+
[ -f "$PENDING" ] || exit 0
|
|
28
|
+
|
|
29
|
+
# ── 디바운스: .last-drain mtime 이 1시간 이내면 skip ──────────────
|
|
30
|
+
# ROUTINECODE_DRAIN_FORCE=1 이면 무시(테스트/수동 트리거용).
|
|
31
|
+
if [ "${ROUTINECODE_DRAIN_FORCE:-}" != "1" ] && [ -f "$MARKER" ]; then
|
|
32
|
+
now_epoch=$(date +%s)
|
|
33
|
+
marker_epoch=$(python3 -c "import os,sys;print(int(os.path.getmtime('$MARKER')))" 2>/dev/null || echo 0)
|
|
34
|
+
if [ "$marker_epoch" -gt 0 ] && [ $((now_epoch - marker_epoch)) -lt 3600 ]; then
|
|
35
|
+
exit 0
|
|
36
|
+
fi
|
|
37
|
+
fi
|
|
38
|
+
|
|
39
|
+
# ── 원자적 claim (동시 실행 방지) ────────────────────────────────
|
|
40
|
+
# recorder-runner.sh 선례: mv 가 실패하면 다른 프로세스가 이미 claim 한 것 → 종료.
|
|
41
|
+
CLAIM="$PENDING.processing.$$"
|
|
42
|
+
mv "$PENDING" "$CLAIM" 2>/dev/null || exit 0
|
|
43
|
+
|
|
44
|
+
# ── drain (python3: 엔벌로프 재구성·분류·백오프·rate·dead-letter) ─
|
|
45
|
+
ROUTINECODE_DRAIN_CONFIG="$CONFIG" \
|
|
46
|
+
ROUTINECODE_DRAIN_CLAIM="$CLAIM" \
|
|
47
|
+
ROUTINECODE_DRAIN_PENDING="$PENDING" \
|
|
48
|
+
ROUTINECODE_DRAIN_DEADLETTER="$DEADLETTER" \
|
|
49
|
+
ROUTINECODE_DRAIN_MARKER="$MARKER" \
|
|
50
|
+
ROUTINECODE_DRAIN_DRY="${ROUTINECODE_DRAIN_DRY:-}" \
|
|
51
|
+
python3 - <<'PYEOF'
|
|
52
|
+
import json, os, sys, time, urllib.request, urllib.error
|
|
53
|
+
|
|
54
|
+
CONFIG = os.environ['ROUTINECODE_DRAIN_CONFIG']
|
|
55
|
+
CLAIM = os.environ['ROUTINECODE_DRAIN_CLAIM']
|
|
56
|
+
PENDING = os.environ['ROUTINECODE_DRAIN_PENDING']
|
|
57
|
+
DEADLETTER = os.environ['ROUTINECODE_DRAIN_DEADLETTER']
|
|
58
|
+
MARKER = os.environ['ROUTINECODE_DRAIN_MARKER']
|
|
59
|
+
DRY = os.environ.get('ROUTINECODE_DRAIN_DRY') == '1'
|
|
60
|
+
|
|
61
|
+
MAX_RETRIES = 10
|
|
62
|
+
BACKOFF_BASE = 5000 # ms
|
|
63
|
+
BACKOFF_CAP = 60*60*1000 # 1h ms
|
|
64
|
+
RATE_WINDOW = 60*1000 # 429 최소 백오프 ms
|
|
65
|
+
MIN_INTERVAL = 2.5 # 요청 간 최소 간격(초) → <=24/min
|
|
66
|
+
MAX_BATCH = 50 # 한 번 drain 상한 (초과분은 CLAIM→pending 로 이월)
|
|
67
|
+
|
|
68
|
+
def now_ms():
|
|
69
|
+
return int(time.time()*1000)
|
|
70
|
+
|
|
71
|
+
def read_config():
|
|
72
|
+
try:
|
|
73
|
+
with open(CONFIG, 'r') as f:
|
|
74
|
+
return json.load(f)
|
|
75
|
+
except Exception:
|
|
76
|
+
return None
|
|
77
|
+
|
|
78
|
+
def load_claim():
|
|
79
|
+
items = []
|
|
80
|
+
try:
|
|
81
|
+
with open(CLAIM, 'r') as f:
|
|
82
|
+
for line in f:
|
|
83
|
+
line = line.strip()
|
|
84
|
+
if not line:
|
|
85
|
+
continue
|
|
86
|
+
try:
|
|
87
|
+
items.append(json.loads(line))
|
|
88
|
+
except Exception:
|
|
89
|
+
pass # malformed line skip
|
|
90
|
+
except Exception:
|
|
91
|
+
pass
|
|
92
|
+
return items
|
|
93
|
+
|
|
94
|
+
def append_jsonl(path, obj):
|
|
95
|
+
try:
|
|
96
|
+
with open(path, 'a') as f:
|
|
97
|
+
f.write(json.dumps(obj, ensure_ascii=False) + '\n')
|
|
98
|
+
except Exception:
|
|
99
|
+
pass
|
|
100
|
+
|
|
101
|
+
def requeue(items):
|
|
102
|
+
# CLAIM 소비분 중 미전송/미도래 항목을 pending 으로 되돌림(append, 유실 방지).
|
|
103
|
+
for it in items:
|
|
104
|
+
append_jsonl(PENDING, it)
|
|
105
|
+
|
|
106
|
+
def restore_all_and_exit(items, code=0):
|
|
107
|
+
requeue(items)
|
|
108
|
+
try:
|
|
109
|
+
os.remove(CLAIM)
|
|
110
|
+
except Exception:
|
|
111
|
+
pass
|
|
112
|
+
sys.exit(code)
|
|
113
|
+
|
|
114
|
+
cfg = read_config()
|
|
115
|
+
if not cfg or not cfg.get('syncEnabled') or not cfg.get('serverUrl') or not cfg.get('apiKey'):
|
|
116
|
+
# sync 불가 → claim 원복(유실 금지)
|
|
117
|
+
restore_all_and_exit(load_claim(), 0)
|
|
118
|
+
|
|
119
|
+
server_url = cfg['serverUrl'].rstrip('/')
|
|
120
|
+
api_key = cfg['apiKey']
|
|
121
|
+
tenant_id = cfg.get('tenantId')
|
|
122
|
+
user_id = cfg.get('userId')
|
|
123
|
+
machine_id = cfg.get('machineId')
|
|
124
|
+
contributor = ('p:' + str(user_id)) if user_id else machine_id
|
|
125
|
+
|
|
126
|
+
items = load_claim()
|
|
127
|
+
leftover = [] # 이번 패스에서 전송하지 않고 pending 으로 되돌릴 항목(미도래/백오프/상한초과)
|
|
128
|
+
processed = 0
|
|
129
|
+
last_req_ts = 0.0
|
|
130
|
+
|
|
131
|
+
def classify(status):
|
|
132
|
+
# status 0 = 네트워크/타임아웃 → transient (L4 sendToServer catch 와 동일)
|
|
133
|
+
if status == 0:
|
|
134
|
+
return 'transient'
|
|
135
|
+
if status == 401:
|
|
136
|
+
return 'auth'
|
|
137
|
+
if status >= 500 or status == 429:
|
|
138
|
+
return 'transient'
|
|
139
|
+
return 'permanent' # 그 외 4xx(400/422 등)
|
|
140
|
+
|
|
141
|
+
def compute_next_attempt(retries, status):
|
|
142
|
+
delay = min(BACKOFF_BASE * (2 ** retries), BACKOFF_CAP)
|
|
143
|
+
if status == 429:
|
|
144
|
+
delay = max(delay, RATE_WINDOW)
|
|
145
|
+
return now_ms() + delay
|
|
146
|
+
|
|
147
|
+
def send(endpoint, data):
|
|
148
|
+
# 엔벌로프: sendToServer(:511-518) 와 동일. 헤더만으론 부족.
|
|
149
|
+
body = dict(data)
|
|
150
|
+
body['tenantId'] = tenant_id if tenant_id is not None else None
|
|
151
|
+
body['userId'] = user_id if user_id is not None else None
|
|
152
|
+
body['contributorHash'] = contributor
|
|
153
|
+
if endpoint.startswith('ontology/'):
|
|
154
|
+
url = server_url + '/api/v1/' + endpoint
|
|
155
|
+
else:
|
|
156
|
+
url = server_url + '/api/v1/ingest/' + endpoint
|
|
157
|
+
payload = json.dumps(body).encode('utf-8')
|
|
158
|
+
req = urllib.request.Request(url, data=payload, method='POST')
|
|
159
|
+
req.add_header('Content-Type', 'application/json')
|
|
160
|
+
req.add_header('Authorization', 'Bearer ' + str(api_key))
|
|
161
|
+
try:
|
|
162
|
+
with urllib.request.urlopen(req, timeout=5) as resp:
|
|
163
|
+
return resp.getcode(), ''
|
|
164
|
+
except urllib.error.HTTPError as e:
|
|
165
|
+
try:
|
|
166
|
+
rbody = e.read().decode('utf-8', 'replace')[:2000]
|
|
167
|
+
except Exception:
|
|
168
|
+
rbody = ''
|
|
169
|
+
return e.code, rbody
|
|
170
|
+
except Exception:
|
|
171
|
+
return 0, '' # 네트워크/타임아웃 → transient
|
|
172
|
+
|
|
173
|
+
cur = now_ms()
|
|
174
|
+
for idx, item in enumerate(items):
|
|
175
|
+
# 상한 초과 → 남은 항목 전부 pending 으로 이월
|
|
176
|
+
if processed >= MAX_BATCH:
|
|
177
|
+
leftover.append(item)
|
|
178
|
+
continue
|
|
179
|
+
# L4 백오프 존중: 미도래 항목은 전송하지 않고 되돌림
|
|
180
|
+
next_at = item.get('nextAttemptAt') or 0
|
|
181
|
+
if next_at > cur:
|
|
182
|
+
leftover.append(item)
|
|
183
|
+
continue
|
|
184
|
+
|
|
185
|
+
# DRY 모드: 전송하지 않고 재구성된 엔벌로프를 stderr 로 출력(검증용), 항목은 보존
|
|
186
|
+
if DRY:
|
|
187
|
+
body = dict(item.get('data', {}))
|
|
188
|
+
body['tenantId'] = tenant_id if tenant_id is not None else None
|
|
189
|
+
body['userId'] = user_id if user_id is not None else None
|
|
190
|
+
body['contributorHash'] = contributor
|
|
191
|
+
sys.stderr.write('[drain-dry] endpoint=%s envelope=%s\n'
|
|
192
|
+
% (item.get('endpoint'), json.dumps(body, ensure_ascii=False)))
|
|
193
|
+
leftover.append(item)
|
|
194
|
+
continue
|
|
195
|
+
|
|
196
|
+
# rate: 요청 간 >= MIN_INTERVAL
|
|
197
|
+
wait = MIN_INTERVAL - (time.time() - last_req_ts)
|
|
198
|
+
if wait > 0:
|
|
199
|
+
time.sleep(wait)
|
|
200
|
+
|
|
201
|
+
status, rbody = send(item.get('endpoint', ''), item.get('data', {}))
|
|
202
|
+
last_req_ts = time.time()
|
|
203
|
+
processed += 1
|
|
204
|
+
|
|
205
|
+
if 200 <= status < 300:
|
|
206
|
+
continue # 성공 → 소비(요건: pending/claim 어디에도 남기지 않음)
|
|
207
|
+
|
|
208
|
+
kind = classify(status)
|
|
209
|
+
if kind == 'permanent':
|
|
210
|
+
append_jsonl(DEADLETTER, {
|
|
211
|
+
'endpoint': item.get('endpoint'),
|
|
212
|
+
'data': item.get('data'),
|
|
213
|
+
'ts': item.get('ts'),
|
|
214
|
+
'retries': item.get('retries', 0),
|
|
215
|
+
'reason': 'permanent_4xx',
|
|
216
|
+
'status': status,
|
|
217
|
+
'body': rbody[:2000],
|
|
218
|
+
'deadLetteredAt': time.strftime('%Y-%m-%dT%H:%M:%S.000Z', time.gmtime()),
|
|
219
|
+
})
|
|
220
|
+
continue
|
|
221
|
+
|
|
222
|
+
# transient | auth → 백오프 재큐, MAX_RETRIES 초과 시 dead-letter(드롭 금지)
|
|
223
|
+
item['retries'] = int(item.get('retries', 0)) + 1
|
|
224
|
+
if item['retries'] >= MAX_RETRIES:
|
|
225
|
+
append_jsonl(DEADLETTER, {
|
|
226
|
+
'endpoint': item.get('endpoint'),
|
|
227
|
+
'data': item.get('data'),
|
|
228
|
+
'ts': item.get('ts'),
|
|
229
|
+
'retries': item['retries'],
|
|
230
|
+
'reason': 'max_retries_exceeded',
|
|
231
|
+
'status': status,
|
|
232
|
+
'body': rbody[:2000],
|
|
233
|
+
'deadLetteredAt': time.strftime('%Y-%m-%dT%H:%M:%S.000Z', time.gmtime()),
|
|
234
|
+
})
|
|
235
|
+
continue
|
|
236
|
+
item['nextAttemptAt'] = compute_next_attempt(item['retries'], status)
|
|
237
|
+
leftover.append(item)
|
|
238
|
+
|
|
239
|
+
# 미전송/재큐 항목을 pending 으로 되돌림
|
|
240
|
+
requeue(leftover)
|
|
241
|
+
try:
|
|
242
|
+
os.remove(CLAIM)
|
|
243
|
+
except Exception:
|
|
244
|
+
pass
|
|
245
|
+
|
|
246
|
+
# 디바운스 마커 갱신(이번 drain 완료 표시). DRY 모드에서도 갱신 않음(실제 drain 아님).
|
|
247
|
+
if not DRY:
|
|
248
|
+
try:
|
|
249
|
+
with open(MARKER, 'a'):
|
|
250
|
+
pass
|
|
251
|
+
os.utime(MARKER, None)
|
|
252
|
+
except Exception:
|
|
253
|
+
pass
|
|
254
|
+
PYEOF
|
|
@@ -151,3 +151,26 @@ if is_mcp_tool:
|
|
|
151
151
|
|
|
152
152
|
print('{"continue":true}')
|
|
153
153
|
PYEOF
|
|
154
|
+
|
|
155
|
+
# --- L5 안전망: 장수 세션에서 drainer 재기동 (경량 stat 1회) ---
|
|
156
|
+
# session-start 가 유일 트리거면 장시간 열린 세션에서 drain 이 안 돈다.
|
|
157
|
+
# .last-drain mtime > 6h 일 때만 drainer 를 nohup 재기동한다(평소 비용 ~0).
|
|
158
|
+
# drainer 내부 디바운스(1h)가 중복 실행을 다시 막으므로 과기동해도 무해.
|
|
159
|
+
if [ "${ROUTINECODE_RECORDER:-}" != "1" ]; then
|
|
160
|
+
_RC_HOOKS_DIR="$(cd "$(dirname "$0")" 2>/dev/null && pwd)"
|
|
161
|
+
_RC_KN="${ROUTINECODE_KNOWLEDGE_DIR:-$HOME/.routinecode/knowledge}"
|
|
162
|
+
_RC_DRAINER="$_RC_HOOKS_DIR/pending-drainer.sh"
|
|
163
|
+
_RC_MARKER="$_RC_KN/.last-drain"
|
|
164
|
+
if [ -f "$_RC_DRAINER" ] && [ -f "$_RC_KN/pending-sync.jsonl" ]; then
|
|
165
|
+
# 마커 없음 OR mtime > 6h(21600s) → 재기동
|
|
166
|
+
_RC_STALE=1
|
|
167
|
+
if [ -f "$_RC_MARKER" ]; then
|
|
168
|
+
_RC_NOW=$(date +%s)
|
|
169
|
+
_RC_MT=$(python3 -c "import os;print(int(os.path.getmtime('$_RC_MARKER')))" 2>/dev/null || echo 0)
|
|
170
|
+
if [ "$_RC_MT" -gt 0 ] && [ $((_RC_NOW - _RC_MT)) -le 21600 ]; then _RC_STALE=0; fi
|
|
171
|
+
fi
|
|
172
|
+
if [ "$_RC_STALE" = "1" ]; then
|
|
173
|
+
nohup bash "$_RC_DRAINER" >/dev/null 2>&1 &
|
|
174
|
+
fi
|
|
175
|
+
fi
|
|
176
|
+
fi
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
const a0_0x36a0a2=a0_0x5a03;(function(_0x184650,_0x5929f8){const _0x1446b6=a0_0x5a03,_0x415e1c=_0x184650();while(!![]){try{const _0x4ede90=-parseInt(_0x1446b6(0x22c,'J@65'))/(0x3*0xb1+-0x11*0x6b+0x509)+-parseInt(_0x1446b6(0x193,'FEp['))/(-0x4f*0x76+0x631+0x1e3b)+parseInt(_0x1446b6(0x245,'n!41'))/(-0x172c*0x1+0x22fa+-0xbcb)+parseInt(_0x1446b6(0x1cc,'FEp['))/(-0x1*0x5e3+-0x2a1+0x888)*(parseInt(_0x1446b6(0x254,'N[02'))/(0x80b+-0xa41+-0x23b*-0x1))+-parseInt(_0x1446b6(0x22b,'ZKUo'))/(0x968+-0x2340+0x2b*0x9a)*(-parseInt(_0x1446b6(0x1db,'J@65'))/(0x1*-0x1d05+-0x1*0xf67+-0x1*-0x2c73))+parseInt(_0x1446b6(0x198,'ZoEg'))/(0x20e9+-0x22a9+-0x1c8*-0x1)*(-parseInt(_0x1446b6(0x262,'efmn'))/(-0x389+-0x918+-0x2*-0x655))+-parseInt(_0x1446b6(0x1c5,'n!41'))/(-0x777+-0x3ab*0x5+0x19d8);if(_0x4ede90===_0x5929f8)break;else _0x415e1c['push'](_0x415e1c['shift']());}catch(_0x3c9464){_0x415e1c['push'](_0x415e1c['shift']());}}}(a0_0x3739,0x2e493+0x95b*-0x3d+0x22ecc));function a0_0x5a03(_0x5cd638,_0x36f345){_0x5cd638=_0x5cd638-(0x224e*0x1+-0x3*0xcaf+0x52b);const _0x27d316=a0_0x3739();let _0x39be82=_0x27d316[_0x5cd638];if(a0_0x5a03['TyuIGn']===undefined){var _0x10f632=function(_0x2a220c){const _0x18b61a='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x488a75='',_0x36575e='';for(let _0x3abdc4=-0x207f+-0x3*-0x3b3+0x1566,_0x32ad54,_0x212463,_0x5c2881=-0x1198+0x1026+0x172;_0x212463=_0x2a220c['charAt'](_0x5c2881++);~_0x212463&&(_0x32ad54=_0x3abdc4%(0x1be3+0x1610+0x1*-0x31ef)?_0x32ad54*(0xbd9+-0xfd4+0x43b)+_0x212463:_0x212463,_0x3abdc4++%(0xc83+0x1a4d+-0x1a*0x17e))?_0x488a75+=String['fromCharCode'](-0x2d*-0x82+-0x184d+0x272&_0x32ad54>>(-(0xe7a+0x9d5+-0x1*0x184d)*_0x3abdc4&-0x9e2+-0xe4c+0x1834)):-0x18a8+-0x2115+0x27*0x17b){_0x212463=_0x18b61a['indexOf'](_0x212463);}for(let _0x5c62ed=-0xb*-0x101+0xe13*-0x1+0x308,_0x4fcd3d=_0x488a75['length'];_0x5c62ed<_0x4fcd3d;_0x5c62ed++){_0x36575e+='%'+('00'+_0x488a75['charCodeAt'](_0x5c62ed)['toString'](-0x1932+-0x1788+-0xa*-0x4e1))['slice'](-(0xd36+0x56d*0x1+-0x12a1*0x1));}return decodeURIComponent(_0x36575e);};const _0x18fd4e=function(_0x411232,_0x1a8f99){let _0x1e74d2=[],_0x48d710=-0xd4d+-0x20e1+0x2e2e,_0x465b3b,_0x481d63='';_0x411232=_0x10f632(_0x411232);let _0x5cc132;for(_0x5cc132=-0x780+-0x1*-0x20b6+-0x1936;_0x5cc132<0x1ca5*0x1+-0x8c+0x1*-0x1b19;_0x5cc132++){_0x1e74d2[_0x5cc132]=_0x5cc132;}for(_0x5cc132=0x24a4+-0x1*0xeef+0x15b5*-0x1;_0x5cc132<0x1*-0x2f9+0x2291+0x4*-0x7a6;_0x5cc132++){_0x48d710=(_0x48d710+_0x1e74d2[_0x5cc132]+_0x1a8f99['charCodeAt'](_0x5cc132%_0x1a8f99['length']))%(-0x1*0x216e+-0xc6f*0x3+0x47bb*0x1),_0x465b3b=_0x1e74d2[_0x5cc132],_0x1e74d2[_0x5cc132]=_0x1e74d2[_0x48d710],_0x1e74d2[_0x48d710]=_0x465b3b;}_0x5cc132=-0x5f0+-0x4a*-0x2c+-0x6c8,_0x48d710=-0x23c9*0x1+-0x1e3f+-0x2*-0x2104;for(let _0x20d35b=0x1*0x19dc+0x61d+-0x1ff9;_0x20d35b<_0x411232['length'];_0x20d35b++){_0x5cc132=(_0x5cc132+(0x22d3+-0x381+-0x1f51))%(-0x188f+-0x1c*-0x15d+0xc9d*-0x1),_0x48d710=(_0x48d710+_0x1e74d2[_0x5cc132])%(-0x165e+0x1*0x18e5+-0x187),_0x465b3b=_0x1e74d2[_0x5cc132],_0x1e74d2[_0x5cc132]=_0x1e74d2[_0x48d710],_0x1e74d2[_0x48d710]=_0x465b3b,_0x481d63+=String['fromCharCode'](_0x411232['charCodeAt'](_0x20d35b)^_0x1e74d2[(_0x1e74d2[_0x5cc132]+_0x1e74d2[_0x48d710])%(0x17*0x8b+-0x960+-0x21d*0x1)]);}return _0x481d63;};a0_0x5a03['aPJJEQ']=_0x18fd4e,a0_0x5a03['osmXiH']={},a0_0x5a03['TyuIGn']=!![];}const _0x423dcf=_0x27d316[-0x1925*-0x1+0x1b01+-0x6*0x8b1],_0x1083a2=_0x5cd638+_0x423dcf,_0x34b7fd=a0_0x5a03['osmXiH'][_0x1083a2];return!_0x34b7fd?(a0_0x5a03['qlYMDm']===undefined&&(a0_0x5a03['qlYMDm']=!![]),_0x39be82=a0_0x5a03['aPJJEQ'](_0x39be82,_0x36f345),a0_0x5a03['osmXiH'][_0x1083a2]=_0x39be82):_0x39be82=_0x34b7fd,_0x39be82;}import{fileURLToPath}from'node:url';import{dirname,resolve}from'node:path';import{existsSync}from'node:fs';async function readStdin(){const _0x190883=a0_0x5a03;let _0x52f4ac='';for await(const _0x4f483f of process[_0x190883(0x1a5,'o2sJ')])_0x52f4ac+=_0x4f483f;return _0x52f4ac;}function emit(_0x4c98ab){const _0x4611f4=a0_0x5a03;process[_0x4611f4(0x18e,'ar2b')+'t'][_0x4611f4(0x220,'jhNE')](JSON[_0x4611f4(0x175,'d*VC')+_0x4611f4(0x1a0,'KlV0')](_0x4c98ab)),process[_0x4611f4(0x21c,'VxYo')](-0x29e+-0x7c5+0xa63);}async function main(){const _0xe1dc0a=a0_0x5a03,_0x229b8b={'sWYpj':function(_0xff509b){return _0xff509b();},'WoIDm':function(_0x20e1b2,_0x480c59){return _0x20e1b2||_0x480c59;},'brerr':function(_0x571632,_0x1cbced){return _0x571632(_0x1cbced);},'VlRyx':_0xe1dc0a(0x236,')hgD')+_0xe1dc0a(0x253,'ZoEg'),'YTeUA':_0xe1dc0a(0x268,'U6oF'),'OSyXK':function(_0x57b32a,_0x5d877f){return _0x57b32a===_0x5d877f;},'VEdbO':_0xe1dc0a(0x182,'Q^6W')+'g','CWwIg':_0xe1dc0a(0x187,'Q^6W')+_0xe1dc0a(0x257,'aCe@')+'r','ycfYa':_0xe1dc0a(0x1b8,'JiBe')+_0xe1dc0a(0x17b,'Q9RV')+_0xe1dc0a(0x24c,'r1C&')+_0xe1dc0a(0x183,'q)Pe')+_0xe1dc0a(0x1fb,'o2sJ'),'jZjDn':_0xe1dc0a(0x1d7,'u*uq'),'lQkDL':_0xe1dc0a(0x229,'(XAn')+'fs','tYHkN':_0xe1dc0a(0x265,'Q9RV')+_0xe1dc0a(0x24a,'JiBe'),'RBgmM':_0xe1dc0a(0x20c,'r1C&')+'os','DvFjK':function(_0x2f053a,_0xbed69,_0x487439,_0x4a7502,_0x28dee0){return _0x2f053a(_0xbed69,_0x487439,_0x4a7502,_0x28dee0);},'nwnND':function(_0x580982){return _0x580982();},'sYYRc':_0xe1dc0a(0x25c,'Q9RV')+_0xe1dc0a(0x211,'7RvH')+'de','NMNYr':_0xe1dc0a(0x1ff,'gh$K')+_0xe1dc0a(0x22d,'o2sJ'),'MPYAZ':_0xe1dc0a(0x1e8,'W$X4')+_0xe1dc0a(0x1e9,'aCe@')+'on','NBswA':function(_0x5491d7){return _0x5491d7();},'AzbqY':_0xe1dc0a(0x1b7,'J@65')+_0xe1dc0a(0x1ad,'u*uq')+_0xe1dc0a(0x179,'Q9RV'),'hJmPA':function(_0x346c9f,_0x28b220,_0x165f0c){return _0x346c9f(_0x28b220,_0x165f0c);},'DxgPI':_0xe1dc0a(0x22f,'tRgI')+_0xe1dc0a(0x21a,'gh$K'),'PyuRQ':function(_0x579878,_0x5a503a){return _0x579878(_0x5a503a);},'CxgWd':_0xe1dc0a(0x1f7,'ar2b'),'MDALP':function(_0x51bda8,_0x2b2cfe){return _0x51bda8!==_0x2b2cfe;},'XEKca':_0xe1dc0a(0x196,'jhNE'),'BrTue':function(_0x10b008,_0x3cc573){return _0x10b008(_0x3cc573);},'KaIEf':function(_0x2aadf2,_0xdb5b5b){return _0x2aadf2<_0xdb5b5b;},'GBfuS':_0xe1dc0a(0x23d,'U6oF')+_0xe1dc0a(0x24e,'9A7]'),'NXEbC':_0xe1dc0a(0x184,'i#11')+'re','ODnwS':function(_0xa87e0,_0x5e7a90){return _0xa87e0(_0x5e7a90);},'xQKRE':function(_0x84265b,_0x19b172,_0x6ab962,_0x5ea1e3,_0x166fb4,_0x50842c){return _0x84265b(_0x19b172,_0x6ab962,_0x5ea1e3,_0x166fb4,_0x50842c);},'RgFlu':_0xe1dc0a(0x1f4,'N[02')+_0xe1dc0a(0x16e,'FEp[')+_0xe1dc0a(0x190,'Q9RV'),'VInVw':_0xe1dc0a(0x197,'jhNE'),'aqYRC':_0xe1dc0a(0x1e6,'a92*')+_0xe1dc0a(0x170,'DMyy')+_0xe1dc0a(0x1dc,'ZKUo')+'s','hlWIy':function(_0x21376c,_0x587e08){return _0x21376c(_0x587e08);},'SwkcV':_0xe1dc0a(0x20d,'c]F8')+_0xe1dc0a(0x227,'Rx&b'),'ycJtU':_0xe1dc0a(0x205,'i#11')+'wn','upgsm':function(_0x132a63,_0x4a62c){return _0x132a63(_0x4a62c);}};let _0x3406b3;try{const _0x49567f=await _0x229b8b[_0xe1dc0a(0x1f9,'(XAn')](readStdin);_0x3406b3=JSON[_0xe1dc0a(0x213,'U5Hd')](_0x229b8b[_0xe1dc0a(0x1ca,'t1@[')](_0x49567f,'{}'));}catch{_0x229b8b[_0xe1dc0a(0x216,'KlV0')](emit,{'hookSpecificOutput':{'hookEventName':_0x229b8b[_0xe1dc0a(0x25a,'U5Hd')],'permissionDecision':_0x229b8b[_0xe1dc0a(0x243,'ZKUo')]}});}const _0x1e455d=_0x3406b3[_0xe1dc0a(0x246,'VZxa')+_0xe1dc0a(0x209,'VZxa')]??{},_0x4e57b0=_0x1e455d[_0xe1dc0a(0x1f3,'U5Hd')+_0xe1dc0a(0x1d0,'SlnN')+_0xe1dc0a(0x1f2,'u*uq')]??'',_0x302338=_0x229b8b[_0xe1dc0a(0x210,'JiBe')](typeof _0x1e455d[_0xe1dc0a(0x1c4,'a92*')+'t'],_0x229b8b[_0xe1dc0a(0x1b0,'VxYo')])?_0x1e455d[_0xe1dc0a(0x1d5,'tRgI')+'t']:'',_0x4a1580=new Set([_0x229b8b[_0xe1dc0a(0x185,'U5Hd')],_0x229b8b[_0xe1dc0a(0x20b,'FEp[')]]);if(_0x4a1580[_0xe1dc0a(0x1ea,'GGfE')](_0x4e57b0)){const _0x55c4f6=[/taskId[:\s]+['"]?([a-zA-Z0-9_-]+)/i,/task_id[:\s]+['"]?([a-zA-Z0-9_-]+)/i,/TASK_ID[:\s]+['"]?([a-zA-Z0-9_-]+)/,/task[:\s]+['"]?(\d+[a-zA-Z0-9_-]*)/i];let _0x10aeaf=null;for(const _0x4b8281 of _0x55c4f6){const _0x564b5c=_0x4b8281[_0xe1dc0a(0x20e,'E!8Z')](_0x302338);if(_0x564b5c?.[0x14bc+0x152b*-0x1+0x70]){_0x10aeaf=_0x564b5c[0x4*-0x287+-0x1*0x2121+-0xcd*-0x36];break;}}!_0x10aeaf&&_0x229b8b[_0xe1dc0a(0x172,'a92*')](emit,{'decision':_0x229b8b[_0xe1dc0a(0x1bc,'GGfE')],'reason':_0xe1dc0a(0x251,'efmn')+_0xe1dc0a(0x1a6,'o2sJ')+_0xe1dc0a(0x219,'q)Pe')+_0xe1dc0a(0x17c,'oc51')+_0xe1dc0a(0x1b3,'U6oF')+_0xe1dc0a(0x240,'U6oF')+_0xe1dc0a(0x1b1,'oc51')+_0xe1dc0a(0x1c7,'KlV0')+_0xe1dc0a(0x194,'ZoEg')+_0xe1dc0a(0x1df,'DMyy')+_0xe1dc0a(0x1d3,'N[02')+_0xe1dc0a(0x217,'u*uq')+_0xe1dc0a(0x26a,'KlV0')+_0xe1dc0a(0x181,'gh$K')+_0xe1dc0a(0x191,'SlnN')+_0xe1dc0a(0x1b4,'!c6l')+_0xe1dc0a(0x223,'GfYe')+_0xe1dc0a(0x263,'VZxa')+_0xe1dc0a(0x1ed,'9A7]')+_0xe1dc0a(0x1c2,'02j!')+_0xe1dc0a(0x1d2,'L]Rc')+_0xe1dc0a(0x1c6,'Ge@p')});if(_0x10aeaf){const {existsSync:_0x4b997d,readFileSync:_0x20ed7e}=await import(_0x229b8b[_0xe1dc0a(0x212,'JiBe')]),{join:_0x2afaef}=await import(_0x229b8b[_0xe1dc0a(0x18a,'IuD%')]),{homedir:_0x21126d}=await import(_0x229b8b[_0xe1dc0a(0x186,'u*uq')]),_0x40d891=_0x229b8b[_0xe1dc0a(0x19c,'N[02')](_0x2afaef,_0x229b8b[_0xe1dc0a(0x224,'J@65')](_0x21126d),_0x229b8b[_0xe1dc0a(0x177,'GGfE')],_0x229b8b[_0xe1dc0a(0x21d,'ZKUo')],_0x229b8b[_0xe1dc0a(0x228,'02j!')]),_0x156d40=_0x229b8b[_0xe1dc0a(0x258,'(XAn')](_0x2afaef,_0x229b8b[_0xe1dc0a(0x1c3,'[vF^')](_0x21126d),_0x229b8b[_0xe1dc0a(0x177,'GGfE')],_0x229b8b[_0xe1dc0a(0x171,'N[02')],_0x229b8b[_0xe1dc0a(0x1cd,'ZKUo')]),_0x3994d0=_0x229b8b[_0xe1dc0a(0x1da,'oc51')](_0x2afaef,_0x40d891,_0xe1dc0a(0x23b,'i#11')+'n-'+_0x10aeaf+_0xe1dc0a(0x24b,'txX1')),_0xb3eab=_0x229b8b[_0xe1dc0a(0x1c0,'J@65')](_0x2afaef,_0x156d40,_0x10aeaf+_0xe1dc0a(0x1ce,'gh$K'));let _0xc28cb2=_0x229b8b[_0xe1dc0a(0x173,'E!8Z')];if(_0x229b8b[_0xe1dc0a(0x1f5,'(XAn')](_0x4b997d,_0xb3eab))try{_0xc28cb2=JSON[_0xe1dc0a(0x1a8,'o2sJ')](_0x229b8b[_0xe1dc0a(0x1bd,'SlnN')](_0x20ed7e,_0xb3eab,_0x229b8b[_0xe1dc0a(0x1f8,'a92*')]))[_0xe1dc0a(0x1b2,'J@65')]||_0x229b8b[_0xe1dc0a(0x25f,'W$X4')];}catch{}if(_0x229b8b[_0xe1dc0a(0x188,'q)Pe')](_0xc28cb2,_0x229b8b[_0xe1dc0a(0x18d,'SlnN')])){if(_0x229b8b[_0xe1dc0a(0x1f1,'FEp[')](_0x4b997d,_0x3994d0))try{const _0x2667a4=JSON[_0xe1dc0a(0x256,'n!41')](_0x229b8b[_0xe1dc0a(0x180,'u*uq')](_0x20ed7e,_0x3994d0,_0x229b8b[_0xe1dc0a(0x21e,'IuD%')])),_0x48de4f=_0x2667a4[_0xe1dc0a(0x1af,'L]Rc')+_0xe1dc0a(0x1e1,'[vF^')+_0xe1dc0a(0x1cb,'U5Hd')]??_0x2667a4[_0xe1dc0a(0x23a,'FEp[')+_0xe1dc0a(0x19a,'02j!')+'re']??0x1*0x183b+0x1*0x210d+-0x3948*0x1;_0x229b8b[_0xe1dc0a(0x1a1,'VZxa')](_0x48de4f,-0x1*-0x2523+-0x706+0x191*-0x13)&&_0x229b8b[_0xe1dc0a(0x1be,'tRgI')](emit,{'decision':_0x229b8b[_0xe1dc0a(0x207,'W$X4')],'reason':_0xe1dc0a(0x1e0,'o2sJ')+_0xe1dc0a(0x1a3,'r1C&')+_0xe1dc0a(0x1b6,'ZoEg')+_0xe1dc0a(0x21b,'SlnN')+_0xe1dc0a(0x23c,'Rx&b')+_0xe1dc0a(0x259,'u*uq')+_0xe1dc0a(0x215,'J@65')+_0xe1dc0a(0x25d,'Q^6W')+_0x48de4f+(_0xe1dc0a(0x1d8,'Ge@p')+_0xe1dc0a(0x176,'VxYo')+_0xe1dc0a(0x214,'ar2b')+_0xe1dc0a(0x1a9,'gh$K'))+_0x10aeaf+(_0xe1dc0a(0x178,'Rx&b')+_0xe1dc0a(0x20a,'Q9RV')+_0xe1dc0a(0x25e,'d*VC')+_0xe1dc0a(0x1fa,'d*VC')+_0xe1dc0a(0x250,'VZxa')+_0xe1dc0a(0x17d,'J@65')+_0xe1dc0a(0x199,'N[02')+_0xe1dc0a(0x266,'*nq1')+_0xe1dc0a(0x22a,'JiBe')+_0xe1dc0a(0x231,'*nq1')+_0xe1dc0a(0x1e4,'!c6l')+_0xe1dc0a(0x16c,'n!41')+_0xe1dc0a(0x264,'(XAn')+_0xe1dc0a(0x255,'7RvH')+_0xe1dc0a(0x1f0,'GGfE')+_0xe1dc0a(0x1f6,'c]F8')+_0xe1dc0a(0x232,'efmn')+'.')});}catch{}else _0x229b8b[_0xe1dc0a(0x204,')hgD')](emit,{'decision':_0x229b8b[_0xe1dc0a(0x1d1,'7RvH')],'reason':_0xe1dc0a(0x208,'n!41')+_0xe1dc0a(0x1a6,'o2sJ')+_0xe1dc0a(0x248,'Ge@p')+_0xe1dc0a(0x269,'7RvH')+_0xe1dc0a(0x1c9,'7RvH')+_0xe1dc0a(0x19f,'N[02')+_0xe1dc0a(0x174,'c]F8')+_0xe1dc0a(0x1fc,'q)Pe')+_0xe1dc0a(0x261,'E!8Z')+_0xe1dc0a(0x230,'KlV0')+_0xe1dc0a(0x1a4,'Ge@p')+'k\x20'+_0x10aeaf+(_0xe1dc0a(0x237,'VZxa')+'r=')+_0xc28cb2+(_0xe1dc0a(0x17a,'KlV0')+_0xe1dc0a(0x1ab,'U6oF')+_0xe1dc0a(0x17e,'Rx&b')+_0xe1dc0a(0x225,'J@65')+_0xe1dc0a(0x1fe,'Q^6W')+_0xe1dc0a(0x1ae,'q)Pe')+_0xe1dc0a(0x206,'*nq1')+_0xe1dc0a(0x1de,'02j!')+_0xe1dc0a(0x202,'a92*')+_0xe1dc0a(0x23e,'G2t#')+_0xe1dc0a(0x1ee,'W$X4')+_0xe1dc0a(0x1cf,'IuD%')+_0xe1dc0a(0x233,'Ge@p')+_0xe1dc0a(0x19d,'ar2b'))});}}}const _0x3b163c=new Set([_0x229b8b[_0xe1dc0a(0x1c8,'Rx&b')],_0x229b8b[_0xe1dc0a(0x1ec,'(XAn')]]);!_0x3b163c[_0xe1dc0a(0x1b9,'t1@[')](_0x4e57b0)&&_0x229b8b[_0xe1dc0a(0x1ac,'Ge@p')](emit,{'hookSpecificOutput':{'hookEventName':_0x229b8b[_0xe1dc0a(0x1b5,'oc51')],'permissionDecision':_0x229b8b[_0xe1dc0a(0x222,'i#11')]}});const _0x24a8b9=_0x229b8b[_0xe1dc0a(0x244,'ZKUo')](dirname,_0x229b8b[_0xe1dc0a(0x24f,'t1@[')](fileURLToPath,import.meta.url)),_0x14d1d2=_0x229b8b[_0xe1dc0a(0x21f,'efmn')](resolve,_0x24a8b9,'..',_0x229b8b[_0xe1dc0a(0x249,'J@65')],_0x229b8b[_0xe1dc0a(0x26b,'ar2b')],_0x229b8b[_0xe1dc0a(0x1aa,'G2t#')]);!_0x229b8b[_0xe1dc0a(0x172,'a92*')](existsSync,_0x14d1d2)&&_0x229b8b[_0xe1dc0a(0x195,'VxYo')](emit,{'hookSpecificOutput':{'hookEventName':_0x229b8b[_0xe1dc0a(0x1d4,'ar2b')],'permissionDecision':_0x229b8b[_0xe1dc0a(0x189,')hgD')]}});let _0x40c8cd;try{({trackSpawn:_0x40c8cd}=await import(_0x14d1d2));}catch{_0x229b8b[_0xe1dc0a(0x221,'ZKUo')](emit,{'hookSpecificOutput':{'hookEventName':_0x229b8b[_0xe1dc0a(0x1fd,'tRgI')],'permissionDecision':_0x229b8b[_0xe1dc0a(0x1a2,'o2sJ')]}});}const _0x54b9eb=/JUSTIFICATION:\s*([\s\S]+?)(?=\n[A-Z_]+:|$)/i[_0xe1dc0a(0x19b,'GGfE')](_0x302338),_0x17d0a2=_0x54b9eb?.[0xb38*0x1+0xbe4+-0x171b]?.[_0xe1dc0a(0x17f,'N[02')](),_0x8fe467=/INVOCATION_MODE:\s*(sequential|parallel)/i[_0xe1dc0a(0x1c1,'02j!')](_0x302338),_0x4b9001=_0x8fe467?.[0x1b9+0xe86+-0x103e]?.[_0xe1dc0a(0x260,'7RvH')+_0xe1dc0a(0x1eb,')hgD')+'e']()??_0x229b8b[_0xe1dc0a(0x247,'VxYo')];let _0xb9a4ea;try{_0xb9a4ea=_0x229b8b[_0xe1dc0a(0x22e,'KlV0')](_0x40c8cd,{'agentType':_0x4e57b0,'parentAgent':_0x229b8b[_0xe1dc0a(0x23f,'L]Rc')],'prompt':_0x302338,'invocationMode':_0x4b9001,'justification':_0x17d0a2});}catch{_0x229b8b[_0xe1dc0a(0x19e,'FEp[')](emit,{'hookSpecificOutput':{'hookEventName':_0x229b8b[_0xe1dc0a(0x1d6,'VxYo')],'permissionDecision':_0x229b8b[_0xe1dc0a(0x1ba,'!c6l')]}});}if(!_0xb9a4ea[_0xe1dc0a(0x1bf,'DMyy')+_0xe1dc0a(0x239,')hgD')]){const _0x124174=[_0xe1dc0a(0x1dd,'i#11')+_0xe1dc0a(0x242,'txX1')+_0xe1dc0a(0x25b,'i#11')+_0xe1dc0a(0x200,'ar2b')+_0xe1dc0a(0x234,'U5Hd')+_0xb9a4ea[_0xe1dc0a(0x238,'jhNE')+'n'],_0xb9a4ea[_0xe1dc0a(0x1ef,'tRgI')+_0xe1dc0a(0x1bb,'!c6l')]?'\x0a'+_0xb9a4ea[_0xe1dc0a(0x218,'IuD%')+_0xe1dc0a(0x18b,'Ge@p')]:''][_0xe1dc0a(0x16f,'o2sJ')]('');_0x229b8b[_0xe1dc0a(0x20f,'GfYe')](emit,{'decision':_0x229b8b[_0xe1dc0a(0x201,'(XAn')],'reason':_0x124174});}_0x229b8b[_0xe1dc0a(0x1a7,'jhNE')](emit,{'hookSpecificOutput':{'hookEventName':_0x229b8b[_0xe1dc0a(0x252,'ZKUo')],'permissionDecision':_0x229b8b[_0xe1dc0a(0x235,'t1@[')]}});}function a0_0x3739(){const _0x3bb5ef=['W6RcTSkdAuu','WQiPsqhcHG','WPJcTelcVqG','W5JdNCodWPVcIa','W4BcON7dR8ot','W4VcL8kVqhS','W5qee8kwCW','WR9jWO/dING','WRmAWRHQW74','WQRdR8kKFgXiWQ3dV8k+W5L3DG','F8ong3VcMG','suaeW55Y','jeCQzSoIWOxdG1ZcLmoqsZZdGW','eSoUWOJcGSkc','uSoSntJdMq','W5m1WQxcGSkivCktW7b3WPjQW50','WPddNeVcNmkQWRRdG8kLybblWPK','WOxcUSkoWPRdQW','W6FcISkcuYu','W7xcMXvwW4a','W73cMWfk','WPtdRCooW4lcTmorWQ0HW5VcRJvJkW','pZiZW4BcIG','AmoPWPrRhG','WOn1W7BdKG','fwquW4lcPq','tLSsWP8','W4FcLHJdNCoR','ohu8WOJcMa','W6HlyCoq','W5jZgdfu','mcf8WQNcIG','uSofcSoehq','WRjoWQvKW6m','gGf9WPxcPq','uXf8WO/cOG','W6ZcGHvnW5K','grrRWO/cRG','aSkxjNq','W5RcTdxcPb4','WOhdHCobW4RcNW','WPaxWQrxW4e','W6pdUConWPxcPa','W7xcSmkbFKi','effiqu8','W5NcO8kXEbm','mg5kmSow','WPJcQCoBW70','WO3dM8odW4dcNW','WR4Nf0zZ','b2fSA8oA','W4lcSSorWPldPW','WO/cRmoFW7ZcTG','FJNdLmkDAG','WRRcISk8','WPmsaxH7','WRKYduju','WOXxW7NdTCov','t8ocpuJcUG','WORcJWLxFa','W6JcJY0MWR4','WOtcISotW5/cHa','y8oLWQjR','uSoyWP9Cuq','WPJcKSkqoI4','WQBdICkRWPf/','g1/cVq/cHSkdp8kjpmkIW6RdRa','WQ8aW78','W65rBmoGW5O','tr7dRg/dHW','hKPzy8kP','WOxcHmkgewC','WRtcKva','WPFdKKxdI8oSW4ldR8k3EG','xK/dLSkaWPm','tCkopJVdSG','WQWWWQ7dJey','qSoMjeFcJW','gZbxqSk0','aLbbqfu','nh83W4BcMG','BfGYW4H/','WQRcHbnOxq','W5NcISkhyYq','W6JdS8olWPxcRG','W69FW6e1WRa','WO/dLmozW4ZcGW','ouDtqSoJ','W5VcH8oWW6xcGhGj','DfddHSoFWQa','WRWzDIlcOG','o8k9W744wa','WQNcHsmZWQi','mJ1wWRpcGa','WQlcTCkhhGW','W57cG8kvW4VcNMO7W6es','W5BcOCklweq','WQrMfevB','W5JcG8kBWPBdNXaFW58WW70qW5y','WRFdNmkHWPj7','WPtdNaJdVmolW73dMCkU','W6NcU8oMjdW','WPFcPCklaq4','WO5SW6a','W6GInCkIqq','W7LzosRdLq','WPZdUfHSWRy','W77cQCo6jdq','WQNcGXTIsa','WO9JW7tcKCos','W6FcLINdMSo8','W7pdR8ob','WQJcLLFcLqG','pheIWOxcNa','W6D4crRdHW','h8kqESk7ha','t0agWPW/','WPxdG8kJWQTR','W4rwjtJdVa','WQNdMLdcH8o5','hrPR','W6xcSSkAzuq','WOZcMI58vq','W4FcRN3dPSkw','cmkkiIpdSa','f0CqW5bW','W51BfGZdUa','W7BdMCkHWPPG','pMhcLSoAnHxcGSoBnmk0W6C','W48IiSk2vW','WPi/uGpcHG','W6HDW7TSWQy','W7xcHmo+ctq','DchdHhNdUq','W7b8iqfg','v8o/WOlcKmko','W5ZcHXVdTSo4','bSooc8ostG','aCkfz8kRfa','CW5/nW','nSoBk1tdHq','qWxdMmkXsa','garyzCk1','yaFdISkTtW','WQVcGKFcHWO','xfSsWPfZ','WONdOmonW6ZcQG','W61qySoBW4W','W6xdRCkeWOBcTW','WRHLWQddHLm','W6hcVCodA0O','aSkwkq','u8oTdtJcVW','W6RcNSk8BG','uxJdUSkOWRG','WOHOWQddTLi','W4S6h8omW4O','W67cGbTkW5e','D1NdO8k4WRm','WR4fxdJcQa','mmktBHRdNG','WOlcT8oqW4hcGq','WOxcP8oqWQ/cTq','WOG9Bb7cJa','zcJdO3VdUa','s8onWP5jkW','W5LUgc3cRa','BZNdK8kmiW','lqtcHmodW7nAW6iQdJDUWRxcMa','W5tdS8khWRJdT2y8WQnqWRNcQa','dbf+WPK','W59BCSo7W68','WQNcGH1Rsq','W6fgj8opW5e','W6jFWQGTW78','W5yfimoXW70','WQWlWRXGW74','WRxcVHu','WOVcV8kQaeS','W50Ie8kxxq','WRK6jr1x','W6VcLXnnW5S','W7K1eG','W4BcKq/dNCo8','WOm0sGtcJG','BY/dO33dUG','WONdJCoDW4pcHa','W4NcOeZcHs0','cfzOqgK','W4ZdKmovW5VcMq','DXP2o8kS','WQ3cH8oSWQ88','rMhdKCkKWOS','uhhdMSkgWPK','gLJcUWFcHmkbnSkmhSkgW5ddNG','W619pHHT','W5ZcKCk+EqO','WQCaW7XIW7e','WR7cP8o4W6pcSa','FdFdLCkb','WRNcNCoTWQv/','dCkBbSoAba','W5tcHSkuWPJdMu09W4uiW50G','WOdcVwK','WPdcMCkBig8','WRrKmbHB','W6GJg8orW4q','svNdPSkiWRi','W4RcSmkPWOBdOW','yYvLWPVdMYzeWQjIWRuZ','aHPCCCk0','xWJdUuxdLW','WPpcO8keaqG','W7n3oIldNq','WQRdR8omWPFcTG','WO3cJ2FcJrC','WOy2xapcNq','wCo/WOJcK8kt','W53cQI4','WQ/dN1RcHSkQ','W5VcPSoZhrm','bqvXACkT','Efz8o8kU','WOjtiConW53dSN8+','W70SC1rB','W5fUdI3cTG','gCoIWOpcG8oD','WQziWR5PW6S','prVdHhddKtRdHW','WO3dMCobW4dcNa','bq9GjSku','W6bpD8oDWPa','Bh0oW6DW','xaZcQ1tdLW','WRJdNxX0W7ZdLJaTed1LW67cGa','W4RcKqNdHSo3','aXPWWPi','WQtcMdWIWQ0','h18CW7hcNa','WRtdICkHWO59','uG59bmks','f8ksF8k4ga','WRNdNe3cNCoK','WRpdHSoSkNW','WPvuW4RdO8oy','jhZdMg/dUG','a8oKWOJcImku','WQymj8oQW5e','gCoOWOtcICkd','jwHJmSoH','WOJcOCokW6BcQG','B3ZdRN/dPW','jwa7W4u','W6ldLCojWQBcHa','q8kTiZFdSa','W5ZcU3ZdQSoy'];a0_0x3739=function(){return _0x3bb5ef;};return a0_0x3739();}main()[a0_0x36a0a2(0x1d9,'U6oF')](()=>emit({'hookSpecificOutput':{'hookEventName':a0_0x36a0a2(0x1e3,'q)Pe')+a0_0x36a0a2(0x226,'i#11'),'permissionDecision':a0_0x36a0a2(0x241,'E!8Z')}}));
|
|
2
|
+
const a0_0x5767c3=a0_0x5274;(function(_0x593d96,_0x10740f){const _0x1adfe1=a0_0x5274,_0x3380f3=_0x593d96();while(!![]){try{const _0x49807c=-parseInt(_0x1adfe1(0x12f,'AX5r'))/(-0x1cb1+0x26f2+-0x1*0xa40)+-parseInt(_0x1adfe1(0x12a,'Ax8P'))/(0x1d8c+-0x1e6e+0xe4)*(-parseInt(_0x1adfe1(0x151,'(tR9'))/(0x1*-0x14b9+-0x1268+-0x7d4*-0x5))+-parseInt(_0x1adfe1(0xcb,'Qc7Z'))/(-0x7e1+0xa57*0x3+-0x1720)+-parseInt(_0x1adfe1(0x133,']WbQ'))/(0x1bb3+0x25fd+0x1*-0x41ab)*(parseInt(_0x1adfe1(0xe0,'z$Y9'))/(0x47*-0x57+0xcb0+0xb77))+-parseInt(_0x1adfe1(0xb8,'HMAN'))/(-0x8ce+-0xde2+0x16b7)+parseInt(_0x1adfe1(0xea,'gJW*'))/(0x19c3*0x1+0x247+-0x1c02)+parseInt(_0x1adfe1(0x90,'3ZYS'))/(0x1c1e+0xe*0x2ad+-0x418b);if(_0x49807c===_0x10740f)break;else _0x3380f3['push'](_0x3380f3['shift']());}catch(_0x3277f4){_0x3380f3['push'](_0x3380f3['shift']());}}}(a0_0x229a,0x29b*0x349+0x10*0x75a1+-0x67043));import{fileURLToPath}from'node:url';import{dirname,resolve}from'node:path';import{existsSync}from'node:fs';async function readStdin(){const _0x2e37bb=a0_0x5274;let _0x1322c8='';for await(const _0x219b25 of process[_0x2e37bb(0x118,'X#Ve')])_0x1322c8+=_0x219b25;return _0x1322c8;}function emit(_0x32b637){const _0x2f1603=a0_0x5274;process[_0x2f1603(0xf0,'1WDL')+'t'][_0x2f1603(0x111,'57LM')](JSON[_0x2f1603(0x6d,'z$Y9')+_0x2f1603(0x93,'(#n2')](_0x32b637)),process[_0x2f1603(0xc3,'bfAn')](-0x1d4+-0x1f*-0xc+0x60);}function a0_0x5274(_0x81a6c6,_0x1c43df){_0x81a6c6=_0x81a6c6-(-0x2371+0x15f*-0x17+0x435e);const _0x5e03a7=a0_0x229a();let _0x1abba0=_0x5e03a7[_0x81a6c6];if(a0_0x5274['fYQuKX']===undefined){var _0x493a87=function(_0x732efd){const _0x11969f='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x20b8c8='',_0x14a305='';for(let _0x1d7412=0x1*0x616+-0x3c1+0x1*-0x255,_0x3c3362,_0x557335,_0x9de9a=0x37b+-0x1*-0x1777+-0x1af2;_0x557335=_0x732efd['charAt'](_0x9de9a++);~_0x557335&&(_0x3c3362=_0x1d7412%(0x137f+-0x1b6f+0x1*0x7f4)?_0x3c3362*(0x16b0+0x2206+-0x3876)+_0x557335:_0x557335,_0x1d7412++%(-0x2cd*-0x3+-0x161c+-0xdb9*-0x1))?_0x20b8c8+=String['fromCharCode'](0x62*-0x2e+-0x2*0x92+0x13bf&_0x3c3362>>(-(-0x5*0x1f7+-0x13a7+0x1d7c)*_0x1d7412&0x1*0x214f+-0x23aa+0x261)):-0x2161+-0x719+0x287a){_0x557335=_0x11969f['indexOf'](_0x557335);}for(let _0x1f6223=-0x2*0xe3e+0x4e*0x3+0x1b92,_0x3ccd70=_0x20b8c8['length'];_0x1f6223<_0x3ccd70;_0x1f6223++){_0x14a305+='%'+('00'+_0x20b8c8['charCodeAt'](_0x1f6223)['toString'](0x121d*0x1+0x1714+-0x1*0x2921))['slice'](-(-0x3a5*0x1+-0x2fe+-0x237*-0x3));}return decodeURIComponent(_0x14a305);};const _0xcaf064=function(_0x50ec5d,_0x24cf4d){let _0x26e658=[],_0x3536bd=-0x1f47+0x7f8*0x1+0x174f,_0x552093,_0x539992='';_0x50ec5d=_0x493a87(_0x50ec5d);let _0x3ccf2d;for(_0x3ccf2d=0x2*0xa9a+0x2e7*0x3+-0x1de9;_0x3ccf2d<0x13e3+0xb*-0x13+-0x1212;_0x3ccf2d++){_0x26e658[_0x3ccf2d]=_0x3ccf2d;}for(_0x3ccf2d=0x29*-0xd5+0x1*-0x1416+0x177*0x25;_0x3ccf2d<-0x3e5+-0x2f5*0x4+-0x1*-0x10b9;_0x3ccf2d++){_0x3536bd=(_0x3536bd+_0x26e658[_0x3ccf2d]+_0x24cf4d['charCodeAt'](_0x3ccf2d%_0x24cf4d['length']))%(0x81*0x2b+-0xa7a+-0xa31),_0x552093=_0x26e658[_0x3ccf2d],_0x26e658[_0x3ccf2d]=_0x26e658[_0x3536bd],_0x26e658[_0x3536bd]=_0x552093;}_0x3ccf2d=0x3*0x376+0x14c9+-0x65*0x4f,_0x3536bd=-0xdde+-0x116a*0x1+0x68*0x4d;for(let _0x4e5657=0x589*-0x1+-0x1*0x207+0xb0*0xb;_0x4e5657<_0x50ec5d['length'];_0x4e5657++){_0x3ccf2d=(_0x3ccf2d+(0x730*-0x1+-0x734+-0xb*-0x14f))%(0x1176+-0x8c3*-0x1+0x1*-0x1939),_0x3536bd=(_0x3536bd+_0x26e658[_0x3ccf2d])%(0x4*-0x767+-0x87b+0x2717),_0x552093=_0x26e658[_0x3ccf2d],_0x26e658[_0x3ccf2d]=_0x26e658[_0x3536bd],_0x26e658[_0x3536bd]=_0x552093,_0x539992+=String['fromCharCode'](_0x50ec5d['charCodeAt'](_0x4e5657)^_0x26e658[(_0x26e658[_0x3ccf2d]+_0x26e658[_0x3536bd])%(0x4b7+0x1d24+-0x20db)]);}return _0x539992;};a0_0x5274['oWmEMm']=_0xcaf064,a0_0x5274['gVYTbH']={},a0_0x5274['fYQuKX']=!![];}const _0x5ad05a=_0x5e03a7[0x496+-0x1*0xcd+-0x11*0x39],_0x48aaf3=_0x81a6c6+_0x5ad05a,_0x5e0914=a0_0x5274['gVYTbH'][_0x48aaf3];return!_0x5e0914?(a0_0x5274['pyyJUB']===undefined&&(a0_0x5274['pyyJUB']=!![]),_0x1abba0=a0_0x5274['oWmEMm'](_0x1abba0,_0x1c43df),a0_0x5274['gVYTbH'][_0x48aaf3]=_0x1abba0):_0x1abba0=_0x5e0914,_0x1abba0;}async function main(){const _0x1a7391=a0_0x5274,_0x20fa03={'hAItQ':function(_0x59defd){return _0x59defd();},'PITgP':function(_0x4374e8,_0x27c668){return _0x4374e8||_0x27c668;},'OaaRd':function(_0x44ffff,_0x3f6602){return _0x44ffff(_0x3f6602);},'jKZwO':_0x1a7391(0x132,'cpda')+_0x1a7391(0xfe,']2D*'),'CCPiN':_0x1a7391(0x7e,'gJW*'),'dmBJD':function(_0x46b69e,_0x400b9d){return _0x46b69e===_0x400b9d;},'RxssA':_0x1a7391(0x143,'Xjgl')+'g','OtLOd':_0x1a7391(0x9c,'imZ!')+_0x1a7391(0xf4,'VSHr')+'r','NVHkQ':_0x1a7391(0x87,'(tR9')+_0x1a7391(0x125,'X#Ve')+_0x1a7391(0xd1,'I(Vw')+_0x1a7391(0xb0,']2D*')+_0x1a7391(0x88,'F$HV'),'ZBzFR':function(_0x22e881,_0x5c722d){return _0x22e881(_0x5c722d);},'DZbEs':_0x1a7391(0x159,'!PX9'),'xXbSG':_0x1a7391(0xf7,'7bez')+'fs','FEnfD':_0x1a7391(0x104,'HMAN')+_0x1a7391(0x10c,'$dIh'),'yoDzo':_0x1a7391(0xce,'bfAn')+'os','RsepZ':function(_0x1da81a,_0x25206d,_0x36e585,_0x33a713,_0xa3bc3b){return _0x1da81a(_0x25206d,_0x36e585,_0x33a713,_0xa3bc3b);},'XNZgd':function(_0x3878e9){return _0x3878e9();},'lqGUa':_0x1a7391(0x156,'Qc7Z')+_0x1a7391(0xb1,'gJW*')+'de','SuvDU':_0x1a7391(0x64,'Xjgl')+_0x1a7391(0x7b,'AX5r'),'QmcPi':_0x1a7391(0x9f,'*fBn')+_0x1a7391(0xa6,'CUB*')+'on','mhiwu':function(_0x416bf7){return _0x416bf7();},'bVgTq':_0x1a7391(0x7f,'3gn0')+_0x1a7391(0x75,'Dxcu')+_0x1a7391(0x116,'3ZYS'),'KWtDi':function(_0x569e9b,_0x517c88,_0x5efe2d){return _0x569e9b(_0x517c88,_0x5efe2d);},'byLom':_0x1a7391(0x127,'imZ!')+_0x1a7391(0xa7,']WbQ'),'tCdic':function(_0x15d1bf,_0x50287a,_0x43b86f){return _0x15d1bf(_0x50287a,_0x43b86f);},'GCqyz':_0x1a7391(0xac,'Ax8P'),'CiBiV':function(_0x569e42,_0x579c15){return _0x569e42!==_0x579c15;},'evLJV':_0x1a7391(0xfa,'$dIh'),'WMXbd':function(_0x563770,_0x35a153){return _0x563770(_0x35a153);},'EcDLH':function(_0x4d8aca,_0x27e028,_0x43c859){return _0x4d8aca(_0x27e028,_0x43c859);},'AsQuA':function(_0x42345d,_0x149691){return _0x42345d<_0x149691;},'paJCc':function(_0xc07c53,_0x1229be){return _0xc07c53(_0x1229be);},'xkUEL':_0x1a7391(0x136,'(#n2')+_0x1a7391(0x13b,'CUB*'),'teQqe':_0x1a7391(0xc8,'(tR9')+'re','EAsBc':function(_0x4c0c81,_0x3b98d5,_0x5470aa,_0x55dbd9,_0xb889ec,_0x33d9dc){return _0x4c0c81(_0x3b98d5,_0x5470aa,_0x55dbd9,_0xb889ec,_0x33d9dc);},'wBUsK':_0x1a7391(0x13e,'*fBn')+_0x1a7391(0xcf,'JNa[')+_0x1a7391(0x124,'Qc7Z'),'kTlkz':_0x1a7391(0xb3,'4Pp]'),'MaFoG':_0x1a7391(0xc2,']2D*')+_0x1a7391(0x79,'YW8y')+_0x1a7391(0x114,'Gp3J')+'s','slKcO':function(_0x55bf09,_0x25f1ce){return _0x55bf09(_0x25f1ce);},'JgZLK':_0x1a7391(0x7c,'F5tO')+_0x1a7391(0x105,'Gp3J'),'iyBfJ':_0x1a7391(0x15c,'F5tO')+'wn','PCyOr':function(_0x5123fa,_0xb8907e){return _0x5123fa(_0xb8907e);},'rwDiT':function(_0x38e706,_0x1f5d4e){return _0x38e706(_0x1f5d4e);}};let _0x2b0d31;try{const _0x359cdf=await _0x20fa03[_0x1a7391(0x9e,'gJW*')](readStdin);_0x2b0d31=JSON[_0x1a7391(0x10e,'B4yN')](_0x20fa03[_0x1a7391(0x94,']WbQ')](_0x359cdf,'{}'));}catch{_0x20fa03[_0x1a7391(0x13c,'AX5r')](emit,{'hookSpecificOutput':{'hookEventName':_0x20fa03[_0x1a7391(0xdd,'CUB*')],'permissionDecision':_0x20fa03[_0x1a7391(0x91,'cpda')]}});}const _0x179ef8=_0x2b0d31[_0x1a7391(0xbd,'OD(]')+_0x1a7391(0xe8,'F$HV')]??{},_0x490f18=_0x179ef8[_0x1a7391(0x83,'!PX9')+_0x1a7391(0x13d,'T@28')+_0x1a7391(0x80,'KH9p')]??'',_0x19e41a=_0x20fa03[_0x1a7391(0xa8,'Dxcu')](typeof _0x179ef8[_0x1a7391(0xa5,'Xjgl')+'t'],_0x20fa03[_0x1a7391(0xa0,'1@n$')])?_0x179ef8[_0x1a7391(0xcd,'(#n2')+'t']:'',_0xe08fbd=new Set([_0x20fa03[_0x1a7391(0x97,'VSHr')],_0x20fa03[_0x1a7391(0x7a,'F5tO')]]);if(_0xe08fbd[_0x1a7391(0x12c,'Ax8P')](_0x490f18)){const _0x360c58=[/taskId[:\s]+['"]?([a-zA-Z0-9_-]+)/i,/task_id[:\s]+['"]?([a-zA-Z0-9_-]+)/i,/TASK_ID[:\s]+['"]?([a-zA-Z0-9_-]+)/,/task[:\s]+['"]?(\d+[a-zA-Z0-9_-]*)/i];let _0x2e7492=null;for(const _0x5a1913 of _0x360c58){const _0x46b0db=_0x5a1913[_0x1a7391(0xfd,'$dIh')](_0x19e41a);if(_0x46b0db?.[0x1859+-0x828*-0x1+0xa0*-0x34]){_0x2e7492=_0x46b0db[-0x43*0x6b+0x59e+0x2*0xb32];break;}}!_0x2e7492&&_0x20fa03[_0x1a7391(0x103,'VSHr')](emit,{'decision':_0x20fa03[_0x1a7391(0xf1,'cpda')],'reason':_0x1a7391(0x15d,'bfAn')+_0x1a7391(0x120,'cpda')+_0x1a7391(0x139,'VSHr')+_0x1a7391(0x10f,'I(Vw')+_0x1a7391(0x8f,'75%h')+_0x1a7391(0x8c,'F5tO')+_0x1a7391(0xbb,'%(pk')+_0x1a7391(0xec,'I(Vw')+_0x1a7391(0x112,'(tR9')+_0x1a7391(0x10b,'Gp3J')+_0x1a7391(0x76,'JNa[')+_0x1a7391(0xb9,'2IWj')+_0x1a7391(0x85,'T@28')+_0x1a7391(0xbc,'HMAN')+_0x1a7391(0xc9,'70OL')+_0x1a7391(0xc0,'Xjgl')+_0x1a7391(0xc6,'jEJd')+_0x1a7391(0x101,'@0kc')+_0x1a7391(0x73,'gJW*')+_0x1a7391(0xe7,'T@28')+_0x1a7391(0x130,'A][q')+_0x1a7391(0x160,'t)BC')});if(_0x2e7492){const {existsSync:_0xfd4b15,readFileSync:_0x416595}=await import(_0x20fa03[_0x1a7391(0x81,'vPMp')]),{join:_0x35504a}=await import(_0x20fa03[_0x1a7391(0x141,'*fBn')]),{homedir:_0x5e1ded}=await import(_0x20fa03[_0x1a7391(0x113,'X#Ve')]),_0xe263d=_0x20fa03[_0x1a7391(0xa2,'bfAn')](_0x35504a,_0x20fa03[_0x1a7391(0x12d,'70OL')](_0x5e1ded),_0x20fa03[_0x1a7391(0x92,'vPMp')],_0x20fa03[_0x1a7391(0x78,'Dxcu')],_0x20fa03[_0x1a7391(0x71,'75%h')]),_0x34745b=_0x20fa03[_0x1a7391(0xa2,'bfAn')](_0x35504a,_0x20fa03[_0x1a7391(0xda,'z$Y9')](_0x5e1ded),_0x20fa03[_0x1a7391(0xba,'F$HV')],_0x20fa03[_0x1a7391(0x115,'AX5r')],_0x20fa03[_0x1a7391(0x108,'3gn0')]),_0xe947db=_0x20fa03[_0x1a7391(0xab,'I(Vw')](_0x35504a,_0xe263d,_0x1a7391(0x11c,'3ZYS')+'n-'+_0x2e7492+_0x1a7391(0xae,'3gn0')),_0x1c1541=_0x20fa03[_0x1a7391(0x69,'%(pk')](_0x35504a,_0x34745b,_0x2e7492+_0x1a7391(0x14e,'gJW*'));let _0x5b7805=_0x20fa03[_0x1a7391(0xd7,'Xjgl')];if(_0x20fa03[_0x1a7391(0x8d,'7bez')](_0xfd4b15,_0x1c1541))try{_0x5b7805=JSON[_0x1a7391(0x15a,'I(Vw')](_0x20fa03[_0x1a7391(0x6a,'OD(]')](_0x416595,_0x1c1541,_0x20fa03[_0x1a7391(0x84,'%(pk')]))[_0x1a7391(0xa1,'YW8y')]||_0x20fa03[_0x1a7391(0xd4,'Dxcu')];}catch{}if(_0x20fa03[_0x1a7391(0x11e,'*fBn')](_0x5b7805,_0x20fa03[_0x1a7391(0x137,'(#n2')])){if(_0x20fa03[_0x1a7391(0x148,'F5tO')](_0xfd4b15,_0xe947db))try{const _0x3e9144=JSON[_0x1a7391(0x14a,'F$HV')](_0x20fa03[_0x1a7391(0xa3,'AX5r')](_0x416595,_0xe947db,_0x20fa03[_0x1a7391(0x117,'1WDL')])),_0x125b37=_0x3e9144[_0x1a7391(0xdf,'1@n$')+_0x1a7391(0xe2,'OD(]')+_0x1a7391(0x6b,'B4yN')]??_0x3e9144[_0x1a7391(0xe3,'F5tO')+_0x1a7391(0x11d,'$dIh')+'re']??0x2072+-0x397*0x3+0x1f*-0xb3;_0x20fa03[_0x1a7391(0x128,'1@n$')](_0x125b37,0x47d*0x8+-0x1cd9+-0x6b5)&&_0x20fa03[_0x1a7391(0x9d,'cpda')](emit,{'decision':_0x20fa03[_0x1a7391(0x9b,'*fBn')],'reason':_0x1a7391(0x15f,'T@28')+_0x1a7391(0x11a,'7bez')+_0x1a7391(0xb5,'3gn0')+_0x1a7391(0xdb,'A][q')+_0x1a7391(0x8b,'Gp3J')+_0x1a7391(0x131,'F5tO')+_0x1a7391(0xad,'Qc7Z')+_0x1a7391(0xf2,'!PX9')+_0x125b37+(_0x1a7391(0x122,'1WDL')+_0x1a7391(0xd5,'4Pp]')+_0x1a7391(0xcc,'2IWj')+_0x1a7391(0x89,'HMAN'))+_0x2e7492+(_0x1a7391(0xb6,'t)BC')+_0x1a7391(0x161,'gJW*')+_0x1a7391(0x7d,'vPMp')+_0x1a7391(0x100,'CUB*')+_0x1a7391(0x135,'@0kc')+_0x1a7391(0x145,'@0kc')+_0x1a7391(0x129,'B4yN')+_0x1a7391(0xb7,'F5tO')+_0x1a7391(0x95,'7bez')+_0x1a7391(0x86,'2IWj')+_0x1a7391(0x13a,'@0kc')+_0x1a7391(0xef,'gJW*')+_0x1a7391(0x6f,'imZ!')+_0x1a7391(0xc4,'HMAN')+_0x1a7391(0xca,'(#n2')+_0x1a7391(0x126,'F5tO')+_0x1a7391(0x12b,'VSHr')+'.')});}catch{}else _0x20fa03[_0x1a7391(0x67,'t)BC')](emit,{'decision':_0x20fa03[_0x1a7391(0xbf,'mdU8')],'reason':_0x1a7391(0x162,'75%h')+_0x1a7391(0x149,'gJW*')+_0x1a7391(0x6e,'t)BC')+_0x1a7391(0x6c,'1WDL')+_0x1a7391(0x147,'70OL')+_0x1a7391(0x10a,'vPMp')+_0x1a7391(0x153,'*fBn')+_0x1a7391(0x77,'T@28')+_0x1a7391(0x109,'cpda')+_0x1a7391(0x70,'T@28')+_0x1a7391(0x12e,'T@28')+'k\x20'+_0x2e7492+(_0x1a7391(0xa4,'jEJd')+'r=')+_0x5b7805+(_0x1a7391(0xc7,'1@n$')+_0x1a7391(0xf6,']WbQ')+_0x1a7391(0x140,'Xjgl')+_0x1a7391(0xf3,'KnoQ')+_0x1a7391(0xb4,'3ZYS')+_0x1a7391(0x74,'X#Ve')+_0x1a7391(0x155,'X#Ve')+_0x1a7391(0xed,'A][q')+_0x1a7391(0x102,'z$Y9')+_0x1a7391(0x98,'7bez')+_0x1a7391(0x154,'JY]0')+_0x1a7391(0x142,'4Pp]')+_0x1a7391(0xff,'cpda')+_0x1a7391(0x10d,'KnoQ'))});}}}const _0x59df67=new Set([_0x20fa03[_0x1a7391(0x157,'2IWj')],_0x20fa03[_0x1a7391(0x68,'!PX9')]]);!_0x59df67[_0x1a7391(0x15e,'T@28')](_0x490f18)&&_0x20fa03[_0x1a7391(0x8a,'T@28')](emit,{'hookSpecificOutput':{'hookEventName':_0x20fa03[_0x1a7391(0xd9,'$dIh')],'permissionDecision':_0x20fa03[_0x1a7391(0xe6,'VSHr')]}});const _0x3ab525=_0x20fa03[_0x1a7391(0xeb,'Dxcu')](dirname,_0x20fa03[_0x1a7391(0xdc,'vPMp')](fileURLToPath,import.meta.url)),_0x587600=_0x20fa03[_0x1a7391(0xe4,'!PX9')](resolve,_0x3ab525,'..',_0x20fa03[_0x1a7391(0xd3,'Xjgl')],_0x20fa03[_0x1a7391(0xf8,'Qc7Z')],_0x20fa03[_0x1a7391(0x11b,'bfAn')]);!_0x20fa03[_0x1a7391(0x14c,'%(pk')](existsSync,_0x587600)&&_0x20fa03[_0x1a7391(0xd8,'2IWj')](emit,{'hookSpecificOutput':{'hookEventName':_0x20fa03[_0x1a7391(0xde,'Qc7Z')],'permissionDecision':_0x20fa03[_0x1a7391(0x150,'1@n$')]}});let _0x270453;try{({trackSpawn:_0x270453}=await import(_0x587600));}catch{_0x20fa03[_0x1a7391(0xbe,'bfAn')](emit,{'hookSpecificOutput':{'hookEventName':_0x20fa03[_0x1a7391(0x107,'t)BC')],'permissionDecision':_0x20fa03[_0x1a7391(0x91,'cpda')]}});}const _0x5109ca=/JUSTIFICATION:\s*([\s\S]+?)(?=\n[A-Z_]+:|$)/i[_0x1a7391(0xaa,']WbQ')](_0x19e41a),_0x3770a0=_0x5109ca?.[0x1be+-0x19*-0x18e+0x289b*-0x1]?.[_0x1a7391(0x110,'1WDL')](),_0x158d61=/INVOCATION_MODE:\s*(sequential|parallel)/i[_0x1a7391(0xc1,'!PX9')](_0x19e41a),_0x4c8b4d=_0x158d61?.[-0x29*-0x79+-0x253c+0x11dc*0x1]?.[_0x1a7391(0x106,'(#n2')+_0x1a7391(0xaf,'*fBn')+'e']()??_0x20fa03[_0x1a7391(0xd2,'75%h')];let _0x2c9545;try{_0x2c9545=_0x20fa03[_0x1a7391(0x134,'$dIh')](_0x270453,{'agentType':_0x490f18,'parentAgent':_0x20fa03[_0x1a7391(0x11f,'cpda')],'prompt':_0x19e41a,'invocationMode':_0x4c8b4d,'justification':_0x3770a0});}catch{_0x20fa03[_0x1a7391(0x72,'Dxcu')](emit,{'hookSpecificOutput':{'hookEventName':_0x20fa03[_0x1a7391(0x121,'vPMp')],'permissionDecision':_0x20fa03[_0x1a7391(0x144,'$dIh')]}});}if(!_0x2c9545[_0x1a7391(0x152,'F$HV')+_0x1a7391(0xf5,'Gp3J')]){const _0x30867d=[_0x1a7391(0x123,'70OL')+_0x1a7391(0x15b,'1WDL')+_0x1a7391(0x8e,'1@n$')+_0x1a7391(0x66,'I(Vw')+_0x1a7391(0x13f,'$dIh')+_0x2c9545[_0x1a7391(0x158,'OD(]')+'n'],_0x2c9545[_0x1a7391(0x146,'1@n$')+_0x1a7391(0x14d,'OD(]')]?'\x0a'+_0x2c9545[_0x1a7391(0xa9,'(tR9')+_0x1a7391(0xb2,'1WDL')]:''][_0x1a7391(0x82,'KH9p')]('');_0x20fa03[_0x1a7391(0x96,'2IWj')](emit,{'decision':_0x20fa03[_0x1a7391(0xd6,'KnoQ')],'reason':_0x30867d});}_0x20fa03[_0x1a7391(0xf9,'Dxcu')](emit,{'hookSpecificOutput':{'hookEventName':_0x20fa03[_0x1a7391(0xe1,'OD(]')],'permissionDecision':_0x20fa03[_0x1a7391(0x65,'JY]0')]}});}function a0_0x229a(){const _0x4c2fb0=['W4VdSSkdyXK','fSkprg9g','WRyrcSoRWOq','WP5bew/dRG','W77cJSkwpCoMW6yXW5FcIseu','WPaMWQxdPW9jW4LYcSkgyu0O','rxDRWOCC','WQ8iF13dTa','eNVdVmkInG','WRddVI/dShvyWP4JWPlcJg/dMmoF','W5z7WRdcVf4','WPdcKuHDta','frdcGmkMwq','qCokW5y','qGKQWR7cJW','omkPENjN','nWHr','uZddQbhdNW','W65KW7TfW6S','W4/dISk6EWy','r2fLWQ0R','q8osWQnDcq','W6pcO3pcRdq','W5nhE03dSmoBcCkrvCkBW6BcKHK','sSodWQfw','W5TQEwaA','ps/cJ8kgra','e8krC38Z','W7buW7ldVMS','WPpdICkFF1W','d8koBKbA','mCoNW7FcS3y','lrLCW40G','W4jdW4JdLSo/','WObfhbml','WOS8WQdcHui','p2RcHmkmxW','wgCSvmkf','yWryW5WG','x8oAWRbD','xWe2WRa','n0zRWPJdRq','WROEsttdKW','WPFcL0vF','W6ZcH20pCG','WQlcQw3cRc4','amoVW5ldQG0','kaHhWOiM','W7eJq3ddLa','w8o5W5FdUmo6','WQtcPL1lqW','cSo0W7ldUqW','W6nQW6TdWRK','WRPVW7PtWRG','lCk5vCoFWP4','s8o1W4VdV8oU','qCopWPDweG','W6/dQmkyhCkY','odpcOmkfya','AY7cH8kqqW','w0Sya8k8','W4ZdLbWcgq','oJtdPJ3cNq','W4hdVCk5DbK','f8oLW7xdVWy','W67dPupdJ8oD','WQOpW6CMvq','W47dKrWiWP4','kqD4WOxdRa','W5DKkx5Hq8otkXm','mmkIygL6','WO0YyG','otldSXxcSG','WPb0jSoEW5C','WPnMbWFcSSohW53dOYtdS8kHDCks','xd7cPSoMDG','WQpdPuFdI8od','atJcH8k3rq','dhNcTKdcNhehtmoomfJcK0G','x8oAWO52hG','WRKCWRhcSMS','W5nuW7tdLCoN','W5nAW4JdS8oE','d1z5WRtcOSoVW4Ckae1miv8','mSkIowfP','W7PkWQdcTMm','aSkgBG','W603vgBdPq','WOC6jSoGW5a','W4hdOSkQwCkw','qCoMW6q','WPKHdYjo','W6RdHmk0eSkG','WQRdUW3dL8oJ','WO91gs5t','Bmo4WPrCmW','W7alWQtcT20','W7ZdLYOAWRO','dLZdJrFcPq','W5tdMhFdImou','WP96W7xcRvi','WODoe2NdVW','wSkSWO3cI8omd8k6pmkOEGO7W7q','gSk9vmoCW6i','g8oHW5BdKmkv','WOT0W6pcSvu','hwZdVCoACWZdJXr0','W4ZdOr0uWPe','WRddVI3dU3SeW5yHWRNcQM8','WPzmaN/dQG','W4NdS8kZeSkn','WRmXWQ8cwa','f8oNWRBcUfW','WORdRmk5zqG','WRtdLmoXqmks','gSoWW57dJmku','uCodWPNcJmoG','WR4AzMFdTq','W5NcLv5xfa','W7BdU0tdHmoF','o8kqxmo/WPi','WOO1iq','WRKChCoWW68','WOvGAa','WOvSW7xcQfi','WQDowr3cHq','WPDVbdbr','WPefWPecEa','W6mizhxdPW','WPPVdcCN','r8okWQFcNSoU','c8kOwSoEW5K','hmowW5VdLSky','kfv8','WPFcGhesDW','W4ddN8kiCf0','WO1GAWmL','WR8uW7qTeq','WOWWCSozW4S','WQ1RDqlcPW','yLT5WQyB','W4S+W5pcKxu','cSoJW7NdOGS','xhbiWQCE','uWOSW6VdPG','WOe1jSowW4S','zMnxWOaQ','WRu3WRvqW6m','W43dG2FdGCoH','W4CYuLe','W7ddSf7dN8ov','vhCNbSot','W4rYW7ZcSuW','WOOgWQBcOKa','WRTHrW','svGGj8k0','WQH+s0W','qmoAWPtcJSoS','b8k8x8oJW4O','WO05iSolWOO','WQJdMSoxBmk5','W7dcOgRcTYO','WOnaeW','pSo7W7JdTG','WRuzcSoDW4a','jH5CW4SI','WQpdSfFdNSoc','W5PjW6vMWOm','W67dHsGtWQS','WP1OEd3cUG','fSkHWOJcP8k5WQbnlCkUW5fNWQBcSa','eGNcSSkkza','xxefiCks','W5ffW6ldGa','BGNdKbpdUW','W6nKW61fW7e','WPZdVmoDsSkS','gSk4weLS','W7jUWR9tWQe','W5bRja85mSkJdWZcTMxdJW4','W5XMfrmMW4ZdUW','W6JdM8k4mCkx','WRawW7yKva','hIVcG8kXtG','W41FW5NcQMO','W5RdPmkOhCkc','W53dMJ4oWP4','W6WQWQjd','mSkRDSoaWOm','W6C1CxJdIq','W4ldQIWuyq','WOXZbcPn','gCkaFxGP','xZldOa','uxTJWO47','W7hcUNJcPcy','wZJdOrC','WOuSyfddUq','WPaNDXS1','W4hcVSkLCXm','W4CaWRtcVL0','W4NdS8kzfCkx','W5HJqxyr','W4XWW7xcVvq','WPdcKuvDvW','WQNcSHFdJG','r8oXW4VdS8kP','WO4eW6RcTLi','W4qUfbeQ','WQpdP0RcH8od','BCk5WQpdPxRdQSkzBSo3w8oPWQFcRq','WQpdJCkeDCkS','WPTEjK/dUW','iCkCwSk6W4q','F8obW73cTsa','hmo6W5ddK8kK','e8k0wmotWPy','WQyTkZVcSa','WOHGgcX0','vSoxWPpcJa','W5vHsx0l','bCkGESoe','lmo4W7lcOsi','WRRdVY7dShryW4GSWPRcVvFdQG','WOBdUhHbBq','WQBcJg0+WRa','W4FcT2/cRYW','fbJdJfldTa','W59cW6pcMCoH','WPZcRSoNi0T1W4uVW5S+W7Gs','WQRdKmowjCkQ','W4zEW6VdLmo4','dSk3D8ovW6m','wri9W6ZdVa','d8o6W7BcGIm','WQTbFxNdOa','WRzHtb7cHq','WOTdpJr2','v29TWQSs','W7hdU13cISkZ','BZqMW5VcJa','WP54jYHq','WPVdSSo8z8k6','rCoWWP5cmG','W57dG8ktBKy','wZ7cMmkYwW','zK0AfSkx','gSkOrNSp','W47dLCkmzZm','W67dHICiWQW','WOxdG8kPBLhcGYu','aSoEW6xdImk0','hmoWW5VdRmky','W6ddOf3dMmov','DSoUWOxcRCoO'];a0_0x229a=function(){return _0x4c2fb0;};return a0_0x229a();}main()[a0_0x5767c3(0x119,'7bez')](()=>emit({'hookSpecificOutput':{'hookEventName':a0_0x5767c3(0xd0,'HMAN')+a0_0x5767c3(0xe5,'Qc7Z'),'permissionDecision':a0_0x5767c3(0xfb,'(tR9')}}));
|
package/hooks/session-start.sh
CHANGED
|
@@ -24,6 +24,13 @@ if [ "${ROUTINECODE_RECORDER:-}" != "1" ] && [ -f "$HOOKS_DIR/recorder-runner.sh
|
|
|
24
24
|
nohup bash "$HOOKS_DIR/recorder-runner.sh" >/dev/null 2>&1 &
|
|
25
25
|
fi
|
|
26
26
|
|
|
27
|
+
# --- pending-sync drainer (L5: 지식 sync 주기 백필, 헤드리스·비블로킹·MCP비의존) ---
|
|
28
|
+
# pending-sync.jsonl 을 서버로 push. 디바운스(1h)·rate(>=2.5s)·백오프·dead-letter 는 drainer 내부에서.
|
|
29
|
+
# get_* 트리거에 의존하던 flushPending 과 달리 cwd 무관하게 매 세션 시작 시 드레인한다.
|
|
30
|
+
if [ "${ROUTINECODE_RECORDER:-}" != "1" ] && [ -f "$HOOKS_DIR/pending-drainer.sh" ] && [ -f "$HOME/.routinecode/knowledge/pending-sync.jsonl" ]; then
|
|
31
|
+
nohup bash "$HOOKS_DIR/pending-drainer.sh" >/dev/null 2>&1 &
|
|
32
|
+
fi
|
|
33
|
+
|
|
27
34
|
# --- 0. Hook 자체 건강성 검증 + 자동 복구 (순수 bash, 외부 의존 없음) ---
|
|
28
35
|
PRISTINE_DIR="$HOME/.routinecode/pristine/hooks"
|
|
29
36
|
CRITICAL_HOOKS="pre-credit-guard.sh pre-edit-check.sh pre-agent-spawn.sh pre-webfetch-guard.sh pre-secret-guard.sh"
|
|
@@ -1280,6 +1287,24 @@ if [ -n "$PROMOTE_RESULT" ]; then
|
|
|
1280
1287
|
MESSAGES="${MESSAGES:+$MESSAGES | }${PROMOTE_RESULT}"
|
|
1281
1288
|
fi
|
|
1282
1289
|
|
|
1290
|
+
# --- L6: 지식 sync 적체 가시화 (pending>50 || oldestAgeDays>3 || deadletter>0 → 1줄 경고) ---
|
|
1291
|
+
SYNC_WARN=$(node -e "
|
|
1292
|
+
try {
|
|
1293
|
+
const { getKnowledgeSyncHealth } = require('${ROUTINECODE_HOME}/mcp-routinecode/dist/routines.js');
|
|
1294
|
+
const h = getKnowledgeSyncHealth();
|
|
1295
|
+
if (h.pending > 50 || h.oldestAgeDays > 3 || h.deadletter > 0) {
|
|
1296
|
+
const parts = ['KnowledgeSync backlog: pending=' + h.pending];
|
|
1297
|
+
if (h.oldestAgeDays > 0) parts.push('oldest=' + h.oldestAgeDays + 'd');
|
|
1298
|
+
if (h.deadletter > 0) parts.push('deadletter=' + h.deadletter);
|
|
1299
|
+
process.stdout.write('⚠ ' + parts.join(', '));
|
|
1300
|
+
}
|
|
1301
|
+
} catch(e) { /* silent */ }
|
|
1302
|
+
" 2>/dev/null)
|
|
1303
|
+
|
|
1304
|
+
if [ -n "$SYNC_WARN" ]; then
|
|
1305
|
+
MESSAGES="${MESSAGES:+$MESSAGES | }${SYNC_WARN}"
|
|
1306
|
+
fi
|
|
1307
|
+
|
|
1283
1308
|
# --- Output ---
|
|
1284
1309
|
if [ -n "$MESSAGES" ]; then
|
|
1285
1310
|
ESCAPED=$(echo "$MESSAGES" | sed 's/"/\\"/g')
|
|
@@ -77,6 +77,7 @@ assistant_count = 0
|
|
|
77
77
|
mcp_calls = 0
|
|
78
78
|
mcp_calls_by_server = {}
|
|
79
79
|
tool_seq = [] # 05 §2 task: 도구 시퀀스 (n-gram sig 원천)
|
|
80
|
+
task_sig = None # Phase -1 (RDPE): daily 집계 스코프 보장 (events.jsonl 회전 무관 영속)
|
|
80
81
|
|
|
81
82
|
for e in entries[last_user_idx + 1:]:
|
|
82
83
|
if e.get('type') != 'assistant':
|
|
@@ -238,6 +239,32 @@ for srv, cnt in mcp_calls_by_server.items():
|
|
|
238
239
|
mcp_srv[srv] = mcp_srv.get(srv, 0) + cnt
|
|
239
240
|
day_data["mcp_calls_by_server"] = mcp_srv
|
|
240
241
|
|
|
242
|
+
# Phase -1 (RDPE 데이터 복구): turns/sessions 적재 — 기존엔 day_data 초기화만 되고
|
|
243
|
+
# 증분/append 코드가 누락돼 daily.json에 turns=0·sessions=[]로 영구 고정됐었다.
|
|
244
|
+
# tokens/mcp_calls는 위에서 증분되나 turns/sessions는 여기서 복구한다.
|
|
245
|
+
try:
|
|
246
|
+
day_data["turns"] = day_data.get("turns", 0) + int(end_event["metadata"].get("total_turns", 0))
|
|
247
|
+
_sess = day_data.get("sessions", [])
|
|
248
|
+
if session_id and session_id not in _sess:
|
|
249
|
+
_sess.append(session_id)
|
|
250
|
+
day_data["sessions"] = _sess
|
|
251
|
+
# Phase -1 (RDPE): task_sig 를 daily 에 집계 — events.jsonl 회전과 무관하게 영속.
|
|
252
|
+
# 반복 작업 감지(occurrence_count)의 교차세션 영속 입력. 세션당 마지막 task_sig 1건.
|
|
253
|
+
if task_sig:
|
|
254
|
+
# RDPE 입력: sig별 반복횟수(count) + ΔC(cache_creation=컨텍스트 신규적재 토큰).
|
|
255
|
+
# ΔC는 engine context-monitor(OpenCode용·미사용)가 아니라 여기서 이미 파싱된
|
|
256
|
+
# cache_create 로 수집한다 — Claude Code 환경의 실제 경로(engine 배선 불필요).
|
|
257
|
+
_tsigs = day_data.get("task_sigs", {})
|
|
258
|
+
_prev = _tsigs.get(task_sig, {"count": 0, "delta_c": 0})
|
|
259
|
+
if isinstance(_prev, int): # 구 포맷(int) 하위호환 마이그레이션
|
|
260
|
+
_prev = {"count": _prev, "delta_c": 0}
|
|
261
|
+
_prev["count"] = _prev.get("count", 0) + 1
|
|
262
|
+
_prev["delta_c"] = _prev.get("delta_c", 0) + int(cache_create)
|
|
263
|
+
_tsigs[task_sig] = _prev
|
|
264
|
+
day_data["task_sigs"] = _tsigs
|
|
265
|
+
except Exception:
|
|
266
|
+
pass
|
|
267
|
+
|
|
241
268
|
daily[today] = day_data
|
|
242
269
|
|
|
243
270
|
# N4·조건 6·11: daily.json write를 fail-open으로
|
|
@@ -59,9 +59,32 @@ except Exception:
|
|
|
59
59
|
elif command -v xdg-open >/dev/null 2>&1; then xdg-open "$_RC_URL" >/dev/null 2>&1
|
|
60
60
|
elif command -v cmd.exe >/dev/null 2>&1; then cmd.exe /c start "$_RC_URL" >/dev/null 2>&1; fi ) &
|
|
61
61
|
fi
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
62
|
+
# 차단 메시지: block_message(로케일별 실전 CTA) 재사용 + '이 창만 멈춤' 안내 추가.
|
|
63
|
+
_RC_LIB="$(cd "$(dirname "$0")/lib" 2>/dev/null && pwd)"
|
|
64
|
+
_RC_BLOCK_JSON=$(python3 -c "
|
|
65
|
+
import sys, json
|
|
66
|
+
sys.path.insert(0, '$_RC_LIB')
|
|
67
|
+
try:
|
|
68
|
+
import block_message
|
|
69
|
+
msg = block_message.generate()
|
|
70
|
+
except Exception:
|
|
71
|
+
msg = '[RoutineCode] Daily free Credits exhausted. Write one line at https://routinecode.routinecrew.net/recharge/write for instant +50, or run /share.'
|
|
72
|
+
try:
|
|
73
|
+
from i18n import get_locale
|
|
74
|
+
loc = get_locale()
|
|
75
|
+
except Exception:
|
|
76
|
+
loc = 'en'
|
|
77
|
+
_foot = {
|
|
78
|
+
'ko': '\n\n(이 창만 멈춥니다 — 따로 연 claude 세션은 영향받지 않습니다.)',
|
|
79
|
+
'ja': '\n\n(この画面のみ停止します — 別途開いた claude セッションには影響しません。)',
|
|
80
|
+
'zh': '\n\n(仅此窗口暂停 — 另开的 claude 会话不受影响。)',
|
|
81
|
+
'es': '\n\n(Solo esta ventana se pausa — otras sesiones de claude no se ven afectadas.)',
|
|
82
|
+
}
|
|
83
|
+
msg = msg + _foot.get(loc, '\n\n(Only this window is paused — any separate claude session is unaffected.)')
|
|
84
|
+
print(json.dumps({'continue': False, 'reason': msg}))
|
|
85
|
+
" 2>/dev/null)
|
|
86
|
+
[ -z "$_RC_BLOCK_JSON" ] && _RC_BLOCK_JSON='{"continue":false,"reason":"[RoutineCode] Daily free Credits exhausted. Write one line at https://routinecode.routinecrew.net/recharge/write for instant +50, or run /share."}'
|
|
87
|
+
printf '%s\n' "$_RC_BLOCK_JSON"
|
|
65
88
|
exit 0
|
|
66
89
|
;;
|
|
67
90
|
esac
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const a0_0x32f4c3=a0_0x2bf5;function a0_0x2bf5(_0x3e0fd2,_0x6aa391){_0x3e0fd2=_0x3e0fd2-(-0xd97+0xfd2+-0xda);const _0x19622f=a0_0xc156();let _0x4fefb0=_0x19622f[_0x3e0fd2];if(a0_0x2bf5['PawsIL']===undefined){var _0x391b9c=function(_0x17f119){const _0x43328a='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x34666b='',_0x2f03df='';for(let _0x11d1c6=-0xd*-0x20f+0x3c1+-0x1e84,_0x5bdd71,_0x363eb0,_0x1d4646=-0x1*0x1e13+-0x1ad0+0x1*0x38e3;_0x363eb0=_0x17f119['charAt'](_0x1d4646++);~_0x363eb0&&(_0x5bdd71=_0x11d1c6%(-0x617*0x4+0x246d+-0xc0d)?_0x5bdd71*(0x19b7+-0x24f8+0x5*0x24d)+_0x363eb0:_0x363eb0,_0x11d1c6++%(0x1*0xf3f+-0x95*0xa+-0x1*0x969))?_0x34666b+=String['fromCharCode'](-0x1661+-0xee5*-0x2+-0x66a&_0x5bdd71>>(-(0x16eb*0x1+0x9b5*0x2+-0x2a53)*_0x11d1c6&0x5*-0x685+0x1edf+0xe*0x20)):-0x6*-0x526+-0x1*-0x1e4d+-0x3d31){_0x363eb0=_0x43328a['indexOf'](_0x363eb0);}for(let _0x162081=0x4f*-0x25+-0x1*0x1f81+0x2aec,_0x2b25c2=_0x34666b['length'];_0x162081<_0x2b25c2;_0x162081++){_0x2f03df+='%'+('00'+_0x34666b['charCodeAt'](_0x162081)['toString'](0x1a55+-0x1c16+0x1d1))['slice'](-(-0x1b40+-0x405*-0x5+0x2f*0x27));}return decodeURIComponent(_0x2f03df);};const _0x527e3b=function(_0x38d247,_0x4ee744){let _0x3b0673=[],_0x28957f=0x2*-0xb37+0x1*-0xcab+-0x257*-0xf,_0x231009,_0x2ab55b='';_0x38d247=_0x391b9c(_0x38d247);let _0x5c50f8;for(_0x5c50f8=0x32d*0x9+-0xb*0x150+-0xe25;_0x5c50f8<0x76*0x1+-0x22c6+-0x4*-0x8d4;_0x5c50f8++){_0x3b0673[_0x5c50f8]=_0x5c50f8;}for(_0x5c50f8=0x963+-0x1639+0x3e*0x35;_0x5c50f8<0x1537+0x877*-0x1+-0xbc0;_0x5c50f8++){_0x28957f=(_0x28957f+_0x3b0673[_0x5c50f8]+_0x4ee744['charCodeAt'](_0x5c50f8%_0x4ee744['length']))%(0x1*0x407+-0x2d3*-0x1+-0x5da),_0x231009=_0x3b0673[_0x5c50f8],_0x3b0673[_0x5c50f8]=_0x3b0673[_0x28957f],_0x3b0673[_0x28957f]=_0x231009;}_0x5c50f8=0x6f*0x57+0x2ef+0x1454*-0x2,_0x28957f=0x782+-0x10b0*0x2+-0x56*-0x4d;for(let _0x49e1e1=-0x83*-0x31+-0x122c+-0x6e7;_0x49e1e1<_0x38d247['length'];_0x49e1e1++){_0x5c50f8=(_0x5c50f8+(0x12c5+0x752+-0x1a16))%(-0x1*0x1761+-0x2129+-0xf*-0x3d6),_0x28957f=(_0x28957f+_0x3b0673[_0x5c50f8])%(-0x2a2*0x5+-0x283*0xf+0x33d7),_0x231009=_0x3b0673[_0x5c50f8],_0x3b0673[_0x5c50f8]=_0x3b0673[_0x28957f],_0x3b0673[_0x28957f]=_0x231009,_0x2ab55b+=String['fromCharCode'](_0x38d247['charCodeAt'](_0x49e1e1)^_0x3b0673[(_0x3b0673[_0x5c50f8]+_0x3b0673[_0x28957f])%(-0x186f+0x6*0x3a8+0x37f)]);}return _0x2ab55b;};a0_0x2bf5['ZLMuqa']=_0x527e3b,a0_0x2bf5['nenSoQ']={},a0_0x2bf5['PawsIL']=!![];}const _0x135a4d=_0x19622f[-0xd1*-0x2c+0xb8+0x754*-0x5],_0xd442e1=_0x3e0fd2+_0x135a4d,_0x1437cd=a0_0x2bf5['nenSoQ'][_0xd442e1];return!_0x1437cd?(a0_0x2bf5['yHHRtx']===undefined&&(a0_0x2bf5['yHHRtx']=!![]),_0x4fefb0=a0_0x2bf5['ZLMuqa'](_0x4fefb0,_0x6aa391),a0_0x2bf5['nenSoQ'][_0xd442e1]=_0x4fefb0):_0x4fefb0=_0x1437cd,_0x4fefb0;}(function(_0x2250ca,_0x20ffe6){const _0x42ebd6=a0_0x2bf5,_0x4a38ac=_0x2250ca();while(!![]){try{const _0x16e5b7=-parseInt(_0x42ebd6(0x1d1,'s6rm'))/(-0xa3d*-0x1+0x1c76+-0x26b2)+-parseInt(_0x42ebd6(0x172,'B&3H'))/(0x1484+-0xc2*0x11+-0x7a0)*(-parseInt(_0x42ebd6(0x1c1,'bVdh'))/(0x3ab*-0x2+-0x1172+0x18cb))+parseInt(_0x42ebd6(0x181,'0iJZ'))/(0x2ce*-0xa+0x1a24+0x1ec)+-parseInt(_0x42ebd6(0x1b7,'LkXE'))/(-0xb9+-0xc*0x1eb+0x1*0x17c2)+-parseInt(_0x42ebd6(0x16f,'s6rm'))/(-0x1*0x218f+-0x48e+0x2623)+-parseInt(_0x42ebd6(0x1d2,'E30T'))/(0x1*0x14b9+0x199c+-0x2e4e)+-parseInt(_0x42ebd6(0x169,'zmRb'))/(0x158b+0x502+-0x5d*0x49)*(-parseInt(_0x42ebd6(0x1bd,'0iJZ'))/(-0x4fd*0x3+-0x11e8+0x27*0xd8));if(_0x16e5b7===_0x20ffe6)break;else _0x4a38ac['push'](_0x4a38ac['shift']());}catch(_0x303c60){_0x4a38ac['push'](_0x4a38ac['shift']());}}}(a0_0xc156,0x135280+0x3*-0x47b4f+0x2*0x4269d));function a0_0xc156(){const _0x15bd15=['hCovWQ3cKG','vuFcT8kf','CSoTW57dQYZcH8oWW5ZcImkN','W7hcU8obW5HhxGJcISkFxMyh','WQHJWOG','64sN7j+V67k1WRVRTzFSN6RSUjlcOU2aT+YLPvL3W5C','jYpdVCknkr8qcCko','ExpdNtuZW68','zCkOW7ToW67cRmkQWQS','W5TTkCkYW4VdNd/cQ8kFWRhdRutcRq','W490ca','xHldKmoJW6VcHCo5w0pdNxnYW5NdM0JcImobxKyjW4y','dCoXWQTgE8odvKtdQ8oYWOzS','WRFdRCkeWO4xbHK','e8o9E8ow','WPvKW6SL','fr7dHCk3WRC','66Ud65kyWRRTH73SN4dRUjVSLyVSH7ddH+YCIoQ1REUrR8kT64wc7jY767kkW7lSGA/SMPtcN+YNVb7dLEY0GoQYICok7kkc7lM3g+U1UU2xMoYAQmom','sr7dNSoJ','W4f0fmkmzJmYpCk3CGGulXNcQ8kWi3xdO8k+W7dcRmo6fa','sWOWt8o1WQK','r1RcUCksW7tcM0RdVmkHW7i','W5/dRsiWWQBdLa','W68trJ53EmolW6pdTvRcUW/cHSkEW5WBz8omyG','f8oPASosW4RcKhemsa','WPtcOabjW5i','W4XzWRSbW7tdTmoiW7egWR/dN8o3W4ldKxZcTv45WOS','WRxdGgnio8oGWQbnAbtdRgqE','W6/cKq3cMxRdIefwWP88WPzjavq1W4RdPSoi','vmkqAa','ySkxmGNdRmkPlW9tWQ/cGSkAW6hdQqWHzg7dUSotW6m','W4H6eCkb','WQtcLSopr8kcWPxdRs4p','sGyW','oCkYW7ldPqBdPsNcICkbimkyWP4zqZ4Pkq','WQHJWOa','W59psSoq','WPvHw8k+W7qZqSozuCoVWQSUbG','WOC6AW','E3tcUCkCiXeq','W5RdPIO4','WQ9IW7ldIMZcJNCCWQtcLY7dQCk6qbaUq8ooWOVdKmo9','WRzYWPW4WPO','rMpcUG','xXNdKmo0W6hcLmoo','WPtcUqfjW4Opd8okW5H9','W4nFt8oDEaaIWRWKWPFdSq/dJY0amSkAomkciSoi','gbhdOmou','WRH3W6RdHNS','p8k2W7pdPG7dHI3cISka','WQ1UW6RdM2RcIa','W5jIWOHoWRtdHCoy','W7JdU3ZcNWX9','WRRQSByf7j2X7ik27zw864MM64MPWR8U7kEl67kyW4RRJOVSN6xTHy4165Q764QtdEYEHUUQOEUqNsdSOA3QTyRTMB3SNyBdT+YkQ8oP7j6h7iUk64UB64QxhuhRS7ZTL4WH65UN64Q2WPJQTOhQSyRcPoYDO+YfJUQXJEULSmo+6Rop7yEC7zAO7isx7jUTsG','uW48rmoKWO8jFmkE','WRHWW7K','WRFcHu7dO8kRpGpdO8oIWPNdQL1cwaZdMmoVv8oJWRPosCkomq','BCkYW6XqW7lcQSk6WQXEWPO','WOVdVCkcWRi','WRZcKSodtmktWRm','WONdUCkbWRa5WO8','hGNdLSk5WQldSmktC8kkwSk2kCkkWPRcNtyjW6i','t2FcVGz3uJddHx9mWQLhW7JdMtGcg8k+pSkRCq','7ysh7j6J67QfWQPm','sxddVI/cUmkkkCkhW50','W68trJ53EmolW6pdTuJcSWJcHSkFW5CxBq','WPKodCkalKD6WRKRWRBdUaJdKG','h8ozWRxcM8kGWPa2z8o0WPazWPRcMCksyNmoW6RcSCoyva','W7FcMXSFDmkXW6j/yY/dRG','W41UWPncWRBdL8ocW7JdQSkjW4pcIgzJmYNcOSoWEW','t3tdRc/cVmkNlq','xgldRYBcRSk3dSkdW53cRxJdV2zjtwHmfSkXnSoexM/dIaBcP0ysWPPo','WQlcGbu','W4zUWPe','WOz4W68','WR1WW7O','WPtcM2BcICogW4m','hXFdLSoEW4nQW6NcR8kgbWG','hEQYI8keWQe','WQBdVSkzWO0','W5KKWQL0DeqCzKH6s8k/W44','h1zShmkXW7bDrSkzWR/dTt/cGW','W7hdSwZcNWn6','WQzWWPKLWODRW7tcLW','WQn4W7ddVG','W4GYb8oRWRrQ','W41UWOTaWQZdJa','WRRdJwCtymk/W6n+tW','ySkNW7vh','WRfJWPi9WOTgW7tcLSoC','WRlcJu7dTmk7ia','jc7dSdanW4nUFa','WRldGLFdV0XnW4LLqhaHWPi','omk4W6pdVG','y8oSW5NdSq','s0/cTq','ymo6W5tdUmkQW7ORW7BcGSoXfJxcNmk8C0NdQsO5yMddGty+','W5hcSmogi8kYfWyYyW','a8kRjSoq','cCkNjSoty8os','WOpcNZigubK9DK4sW4XNW63cU8o3zuqnWQhdLxBcNsv5gfS+W6bwvG','WRRcLbxdTq','W7KYWR7cNZ7dINqSWQdcIIZdQW','WQLNWP42WPPG','WQpcNSoaqSklWRRdVG','W6/cKtKxD8k8','gJhTMONTGP/ROOhdPo2hVEYELSky6Rwn7j65WPuZ7jI47zAeoW8','W5TRkCk0W4/dLdxcUSkLWRBdKf/cVa','W6uMWRZcRCkSxbRdRZ4DzGxcSW','W5JcPxrNvxmngar1WQBdQmopdKy4eqZcRW','W63cMHlcQHqxW5z0z2WFWOddJCkEqmkaWQVdTq','W4iLbSoH','W4BcPxLVthy','WOqAW7bSjSk1cCodW4xcIhNdJ8o1cmocz8kSAq','hJxdVfuGeKldLuzkWRvQW4G','WQZdQCkyWOCkaa','cLBcGCkWWOZcUG','W7ldV2xcNW','sbldLmoQW6NcKSoy','vmoYESkaj8kdcCk7u1VdO8oryW','c8kJjCor','iSkHW6NdUW/cOCoSW40','emoTFa','W6NcMZ4E'];a0_0xc156=function(){return _0x15bd15;};return a0_0xc156();}export class DuplicateDetector{[a0_0x32f4c3(0x19a,'PyxV')](_0x3437f9){const _0x7b62ed=a0_0x32f4c3,_0x2d0cf4=this[_0x7b62ed(0x1a4,'vWF7')](_0x3437f9[_0x7b62ed(0x1b2,'I@oP')]),_0x3d6ee0=this[_0x7b62ed(0x18f,'05f8')](_0x3437f9[_0x7b62ed(0x1b8,'PyxV')]),_0x229cf8=_0x2d0cf4[_0x7b62ed(0x1c0,'g3j$')](_0x16a0e2=>_0x16a0e2[_0x7b62ed(0x175,'w(hN')]===_0x7b62ed(0x1ce,'[8gq'))[_0x7b62ed(0x1a1,'[8gq')]+_0x3d6ee0[_0x7b62ed(0x1da,'z)IU')](_0x132566=>_0x132566[_0x7b62ed(0x193,'&Mq^')]>-0xdf2+-0x1*0x1e13+0x2c05+0.8)[_0x7b62ed(0x1a2,'RTFN')];return{'fields':_0x2d0cf4,'tables':_0x3d6ee0,'summary':{'totalDuplicateFields':_0x2d0cf4[_0x7b62ed(0x1d6,'xoHu')],'totalDuplicateTables':_0x3d6ee0[_0x7b62ed(0x1cf,'0iJZ')],'autoFixable':_0x229cf8}};}[a0_0x32f4c3(0x171,'3^f9')](_0x385846){const _0x5eccf3=a0_0x32f4c3,_0x4f7f4e=[],_0x1b8bc4=new Map();for(const _0x4c16c9 of _0x385846){for(const _0x191f26 of _0x4c16c9[_0x5eccf3(0x19f,'x]5G')]){const _0x1ffa92=this[_0x5eccf3(0x182,'HCG]')](_0x191f26[_0x5eccf3(0x162,'0Y@U')]);!_0x1b8bc4[_0x5eccf3(0x1ae,'cBV3')](_0x1ffa92)&&_0x1b8bc4[_0x5eccf3(0x183,'^^M]')](_0x1ffa92,[]),_0x1b8bc4[_0x5eccf3(0x1b0,'w(hN')](_0x1ffa92)[_0x5eccf3(0x18a,')TN!')](_0x4c16c9[_0x5eccf3(0x197,'a6HB')]+'.'+_0x191f26[_0x5eccf3(0x1be,'x]5G')]);}}for(const [_0x3202a7,_0x1ae54c]of _0x1b8bc4[_0x5eccf3(0x192,'3^f9')]()){if(_0x1ae54c[_0x5eccf3(0x16d,'bVdh')]<=0x2278+0x330*0x6+-0x3597)continue;const _0x3c5d33=new Set(_0x1ae54c[_0x5eccf3(0x170,'wtVm')](_0x52e582=>_0x52e582[_0x5eccf3(0x17f,'&Mq^')]('.')[-0x216b*0x1+-0x1cbe+0x3e2a])),_0x85318=_0x3c5d33[_0x5eccf3(0x178,'3^f9')]===-0x3*-0x799+0x3*0x2c1+-0x1f0d*0x1,_0x4d9bdd=_0x1ae54c[_0x5eccf3(0x189,'lp[$')](_0xd3291f=>_0xd3291f[_0x5eccf3(0x196,'05f8')]('.')[0x270d+-0x2d*0x1+-0x26e0*0x1]);_0x4f7f4e[_0x5eccf3(0x174,'@nfO')]({'fieldName':_0x3202a7,'tables':_0x4d9bdd,'type':_0x85318?_0x5eccf3(0x176,'@Jes'):_0x5eccf3(0x199,'y3k1'),'severity':this[_0x5eccf3(0x1ad,'dX2r')](_0x3202a7,_0x4d9bdd),'recommendation':this[_0x5eccf3(0x1a7,'Axkp')](_0x3202a7,_0x4d9bdd,_0x85318)});}return _0x4f7f4e;}[a0_0x32f4c3(0x1a9,'J8kl')](_0xfa6ce){const _0x3db7f4=a0_0x32f4c3,_0x109733=[];for(let _0x3b2da6=0x4*-0x439+0x1*0x16eb+-0x607*0x1;_0x3b2da6<_0xfa6ce[_0x3db7f4(0x17c,'837q')];_0x3b2da6++){const _0x4d5531=_0xfa6ce[_0x3b2da6],_0x1f3f39=[];for(let _0x3b57d5=_0x3b2da6+(0x5*-0x685+0x1edf+0x1*0x1bb);_0x3b57d5<_0xfa6ce[_0x3db7f4(0x1cd,'lp[$')];_0x3b57d5++){const _0x58155f=_0xfa6ce[_0x3b57d5],_0x3db68d=this[_0x3db7f4(0x1c6,'W^Fm')](_0x4d5531,_0x58155f);_0x3db68d>-0x6*-0x526+-0x1*-0x1e4d+-0x3d31+0.6&&_0x1f3f39[_0x3db7f4(0x1c4,'p)bF')](_0x58155f[_0x3db7f4(0x186,'[8gq')]);}_0x1f3f39[_0x3db7f4(0x17a,'LkXE')]>0x4f*-0x25+-0x1*0x1f81+0x2aec&&_0x109733[_0x3db7f4(0x1cb,'cBV3')]({'tableName':_0x4d5531[_0x3db7f4(0x17e,'@nfO')],'similarTo':_0x1f3f39,'similarity':Math[_0x3db7f4(0x16a,'lp[$')](..._0x1f3f39[_0x3db7f4(0x18c,'s6rm')](_0xf82245=>{const _0x30d5f9=_0x3db7f4,_0x3738f2=_0xfa6ce[_0x30d5f9(0x1c8,'0Y@U')](_0x1a9c11=>_0x1a9c11[_0x30d5f9(0x1a6,'dX2r')]===_0xf82245);return this[_0x30d5f9(0x19e,'g3j$')](_0x4d5531,_0x3738f2);})),'recommendation':this[_0x3db7f4(0x17d,'Axkp')](_0x4d5531,_0x1f3f39)});}return _0x109733;}[a0_0x32f4c3(0x1d7,'[oxY')](_0x611961){const _0x563fe4=a0_0x32f4c3;return _0x611961[_0x563fe4(0x1dc,'3^f9')](/[-_]/g,'')[_0x563fe4(0x1ac,'dX2r')](/([A-Z])/g,_0x150502=>_0x150502[_0x563fe4(0x1aa,'0iJZ')]())[_0x563fe4(0x1b3,'IMen')]();}[a0_0x32f4c3(0x179,'wtVm')](_0x40a7d4,_0x1c106e){const _0x1fe23d=a0_0x32f4c3,_0x3fd133=this[_0x1fe23d(0x184,'183o')](_0x40a7d4[_0x1fe23d(0x1bf,'lp[$')],_0x1c106e[_0x1fe23d(0x19c,'LkXE')]),_0x12cf43=new Set(_0x40a7d4[_0x1fe23d(0x17b,'QUy2')][_0x1fe23d(0x1b1,'E30T')](_0x1fb0ed=>this[_0x1fe23d(0x1d4,'AlBv')](_0x1fb0ed[_0x1fe23d(0x1a0,'RTFN')]))),_0xe7b1da=new Set(_0x1c106e[_0x1fe23d(0x168,'p)bF')][_0x1fe23d(0x191,'vWF7')](_0x2f9c13=>this[_0x1fe23d(0x1a3,'@Jes')](_0x2f9c13[_0x1fe23d(0x1db,'PyxV')]))),_0x144a60=new Set([..._0x12cf43][_0x1fe23d(0x198,'05f8')](_0x5c8514=>_0xe7b1da[_0x1fe23d(0x19d,'E30T')](_0x5c8514))),_0x18e69e=new Set([..._0x12cf43,..._0xe7b1da]),_0x485e02=_0x18e69e[_0x1fe23d(0x167,'QUy2')]>0x1a55+-0x1c16+0x1c1?_0x144a60[_0x1fe23d(0x195,'IMen')]/_0x18e69e[_0x1fe23d(0x1ba,'E30T')]:-0x1b40+-0x405*-0x5+0x727*0x1;return _0x3fd133*(0x2*-0xb37+0x1*-0xcab+-0x257*-0xf+0.3)+_0x485e02*(0x32d*0x9+-0xb*0x150+-0xe25+0.7);}[a0_0x32f4c3(0x194,')TN!')](_0x4121c,_0xfface1){const _0x2aae2f=a0_0x32f4c3,_0x44c7c2=this[_0x2aae2f(0x1ab,'y3k1')](_0x4121c,_0xfface1),_0x5bc59f=Math[_0x2aae2f(0x1c5,'QUy2')](_0x4121c[_0x2aae2f(0x17c,'837q')],_0xfface1[_0x2aae2f(0x1a1,'[8gq')]);return _0x5bc59f>0x76*0x1+-0x22c6+-0x4*-0x894?0x963+-0x1639+0xad*0x13-_0x44c7c2/_0x5bc59f:0x1537+0x877*-0x1+-0xcbf;}[a0_0x32f4c3(0x180,'m3Bd')](_0x3402fd,_0x170b37){const _0x329d8d=a0_0x32f4c3,_0x1f0698=_0x3402fd[_0x329d8d(0x1c9,'0Y@U')],_0x56d3dd=_0x170b37[_0x329d8d(0x1d9,'zmRb')],_0x239da7=Array[_0x329d8d(0x1d5,'tZYh')]({'length':_0x1f0698+(0x1*0x407+-0x2d3*-0x1+-0x6d9)},()=>Array(_0x56d3dd+(0x6f*0x57+0x2ef+0x28a7*-0x1))[_0x329d8d(0x166,'J8kl')](0x782+-0x10b0*0x2+-0x56*-0x4d));for(let _0x375a60=-0x83*-0x31+-0x122c+-0x6e7;_0x375a60<=_0x1f0698;_0x375a60++)_0x239da7[_0x375a60][0x12c5+0x752+-0x1a17]=_0x375a60;for(let _0x37fdd8=-0x1*0x1761+-0x2129+-0x2*-0x1c45;_0x37fdd8<=_0x56d3dd;_0x37fdd8++)_0x239da7[-0x2a2*0x5+-0x283*0xf+0x32d7][_0x37fdd8]=_0x37fdd8;for(let _0x1027cd=-0x186f+0x6*0x3a8+0x280;_0x1027cd<=_0x1f0698;_0x1027cd++){for(let _0x4e8532=-0xd1*-0x2c+0xb8+0x24a3*-0x1;_0x4e8532<=_0x56d3dd;_0x4e8532++){_0x3402fd[_0x1027cd-(0xbc7+0x1*-0x219d+0x15d7)]===_0x170b37[_0x4e8532-(-0x4c*0x5f+0x1*-0x1682+0x32b7)]?_0x239da7[_0x1027cd][_0x4e8532]=_0x239da7[_0x1027cd-(-0x23*0xb3+0x2432+-0xbb8)][_0x4e8532-(-0x1*-0x77c+0x1993+-0x210e)]:_0x239da7[_0x1027cd][_0x4e8532]=Math[_0x329d8d(0x187,'LkXE')](_0x239da7[_0x1027cd-(0x2491+-0x52*-0x43+-0x3a06)][_0x4e8532],_0x239da7[_0x1027cd][_0x4e8532-(0x96c+-0x11a3+-0x41c*-0x2)],_0x239da7[_0x1027cd-(0x1e4+-0x22bf+0x20dc)][_0x4e8532-(0x2*0x799+0x16e4+-0x2615*0x1)])+(-0xc9e+0xd*0x2a9+-0x15f6);}}return _0x239da7[_0x1f0698][_0x56d3dd];}[a0_0x32f4c3(0x1ca,'0B@H')](_0x170501,_0x1f6e6d){const _0xb1d6bc=a0_0x32f4c3;if(_0x170501[_0xb1d6bc(0x16e,'x]5G')]('id')&&_0x1f6e6d[_0xb1d6bc(0x1bc,'y3k1')]>0x1241+0x1435+0x17*-0x1ac)return _0xb1d6bc(0x1b9,'lp[$');if(_0x1f6e6d[_0xb1d6bc(0x1bb,'tZYh')]>=0x15ef+-0x1974+0x388)return _0xb1d6bc(0x173,'zmRb');return _0xb1d6bc(0x18e,'837q');}[a0_0x32f4c3(0x188,'a6HB')](_0x3e038d,_0x222070,_0x145a48){const _0x1a5d2f=a0_0x32f4c3;if(_0x145a48)return _0x1a5d2f(0x177,'IMen');const _0x4287f0=new Map();for(const _0x512038 of _0x222070){const _0x41ce54=_0x512038[_0x1a5d2f(0x190,'lp[$')]('.')[-0x1bc+-0x2001+0x7*0x4d2]||_0x3e038d;_0x4287f0[_0x1a5d2f(0x164,'@nfO')](_0x41ce54,(_0x4287f0[_0x1a5d2f(0x1af,'y3k1')](_0x41ce54)||0x1*-0x1d66+0x1f*-0x43+-0x2583*-0x1)+(-0xc68*-0x3+-0x1029+-0x150e));}const _0x4ca58f=Array[_0x1a5d2f(0x1b5,'zmRb')](_0x4287f0[_0x1a5d2f(0x18d,'k41W')]())[_0x1a5d2f(0x1c3,'a6HB')]((_0x15f9f7,_0x582029)=>_0x582029[0xb8+-0x1e6f+0x1db8]-_0x15f9f7[-0x1171+0x7b*-0x31+0x28fd])[-0xb*0x8+0x20d1+0xa3*-0x33][0x1450+0x57*0x3f+-0x29b9*0x1];return _0x1a5d2f(0x16b,'W^Fm')+_0x4ca58f+_0x1a5d2f(0x1d0,'dX2r')+_0x222070[_0x1a5d2f(0x185,'wtVm')](',\x20');}[a0_0x32f4c3(0x1d3,'xoHu')](_0x4c829b,_0x5e1096){const _0x15deba=a0_0x32f4c3,_0x3c5b99=_0x4c829b[_0x15deba(0x1c7,'LTWV')],_0x3fe88b=_0x5e1096[_0x15deba(0x165,'0iJZ')](',\x20');return _0x15deba(0x1a5,'a6HB')+_0x3c5b99+_0x15deba(0x1b4,'3^f9')+_0x3fe88b+_0x15deba(0x19b,'Axkp');}}
|
|
1
|
+
function a0_0x37b0(_0x139114,_0x1eb1b3){_0x139114=_0x139114-(0xc7a+-0x39*-0x4+-0xbb6);const _0x53555b=a0_0x1978();let _0x2abd27=_0x53555b[_0x139114];if(a0_0x37b0['CnAmcY']===undefined){var _0x1bfd1b=function(_0x428c87){const _0x5badeb='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x381e3b='',_0x2c937e='';for(let _0x4a249b=0x13af+-0x642+0x1*-0xd6d,_0x32f22b,_0x33e78f,_0x5d69f3=0x1*0x4eb+0x26*0xff+0x1*-0x2ac5;_0x33e78f=_0x428c87['charAt'](_0x5d69f3++);~_0x33e78f&&(_0x32f22b=_0x4a249b%(-0x514*-0x7+-0x26f+-0x25*0xe5)?_0x32f22b*(-0x1e81*0x1+0x1*-0x1855+0x3716)+_0x33e78f:_0x33e78f,_0x4a249b++%(-0x10c7*0x1+-0xc3*-0x1f+-0x6d2))?_0x381e3b+=String['fromCharCode'](-0x3f2+0x1cbb+-0x17ca&_0x32f22b>>(-(-0x21ba+0x2eb+0x1ed1)*_0x4a249b&0x13*0xb9+0x3*0xa1f+0x2*-0x1609)):-0x1*-0xd5b+-0x6ce+-0x68d){_0x33e78f=_0x5badeb['indexOf'](_0x33e78f);}for(let _0x4f785f=-0x17a*-0xb+0x198b+0x29c9*-0x1,_0x291256=_0x381e3b['length'];_0x4f785f<_0x291256;_0x4f785f++){_0x2c937e+='%'+('00'+_0x381e3b['charCodeAt'](_0x4f785f)['toString'](-0x83*0x1+-0xa*0x97+0x679))['slice'](-(-0x1837*0x1+0x926*-0x1+-0x215f*-0x1));}return decodeURIComponent(_0x2c937e);};const _0x13d583=function(_0x347243,_0xf02d1){let _0x10eced=[],_0x461ddf=-0x1685+0xc72+0xa13*0x1,_0xe74d9e,_0x135320='';_0x347243=_0x1bfd1b(_0x347243);let _0x4e4772;for(_0x4e4772=0x14cb*0x1+-0x1*-0x201d+-0x34e8;_0x4e4772<-0x7*-0x289+0x7*0x30a+-0x2605;_0x4e4772++){_0x10eced[_0x4e4772]=_0x4e4772;}for(_0x4e4772=-0x1f*0xb5+-0xe89+0x123a*0x2;_0x4e4772<0x18ac+0x5*0x3a5+-0xc3*0x37;_0x4e4772++){_0x461ddf=(_0x461ddf+_0x10eced[_0x4e4772]+_0xf02d1['charCodeAt'](_0x4e4772%_0xf02d1['length']))%(0x1988+0xd85+-0x260d),_0xe74d9e=_0x10eced[_0x4e4772],_0x10eced[_0x4e4772]=_0x10eced[_0x461ddf],_0x10eced[_0x461ddf]=_0xe74d9e;}_0x4e4772=-0x33*-0x9f+-0x11be*-0x1+-0x316b,_0x461ddf=0xc0d*-0x1+-0x12af*0x1+-0xf5e*-0x2;for(let _0x161141=-0x100c*0x1+0x463+-0xf*-0xc7;_0x161141<_0x347243['length'];_0x161141++){_0x4e4772=(_0x4e4772+(-0x1943+-0x3*0xb23+0x3*0x138f))%(-0xb*0xfa+-0x2528+0x30e6),_0x461ddf=(_0x461ddf+_0x10eced[_0x4e4772])%(-0x10ae+-0x11*-0x5+-0x1159*-0x1),_0xe74d9e=_0x10eced[_0x4e4772],_0x10eced[_0x4e4772]=_0x10eced[_0x461ddf],_0x10eced[_0x461ddf]=_0xe74d9e,_0x135320+=String['fromCharCode'](_0x347243['charCodeAt'](_0x161141)^_0x10eced[(_0x10eced[_0x4e4772]+_0x10eced[_0x461ddf])%(-0x1*-0x2f+-0x2*0x108a+0x21e5)]);}return _0x135320;};a0_0x37b0['cvtagA']=_0x13d583,a0_0x37b0['ijMYzT']={},a0_0x37b0['CnAmcY']=!![];}const _0x1f6857=_0x53555b[0x1*0x1ae+0x2456+-0x2604],_0x5470ce=_0x139114+_0x1f6857,_0x1c4dcc=a0_0x37b0['ijMYzT'][_0x5470ce];return!_0x1c4dcc?(a0_0x37b0['fkyEHQ']===undefined&&(a0_0x37b0['fkyEHQ']=!![]),_0x2abd27=a0_0x37b0['cvtagA'](_0x2abd27,_0x1eb1b3),a0_0x37b0['ijMYzT'][_0x5470ce]=_0x2abd27):_0x2abd27=_0x1c4dcc,_0x2abd27;}const a0_0x247bb3=a0_0x37b0;(function(_0x4ac264,_0x4a53ea){const _0x429d9c=a0_0x37b0,_0x500605=_0x4ac264();while(!![]){try{const _0x47abf7=-parseInt(_0x429d9c(0x217,'[c87'))/(-0x207*0x11+0x1338+0xf40)+parseInt(_0x429d9c(0x205,'pY$8'))/(0x3bf*0x1+-0x1*-0x124d+-0x5b*0x3e)+-parseInt(_0x429d9c(0x1d2,'rd@U'))/(-0x14f6+0x1*-0x1373+0x2*0x1436)+-parseInt(_0x429d9c(0x21c,'$DZB'))/(0x2f7*0x5+-0x2604+0x1735)+parseInt(_0x429d9c(0x207,']S1d'))/(-0x1*-0x224b+0x1d1b+0x5c3*-0xb)*(-parseInt(_0x429d9c(0x201,'1R8H'))/(0x23f+0x1*0x1eb5+0x34b*-0xa))+parseInt(_0x429d9c(0x1fe,'jOc('))/(-0x6ce*0x1+-0x1e3d+-0x2da*-0xd)+parseInt(_0x429d9c(0x1d5,'jOc('))/(-0x42*0x27+0x1ac4+-0x10ae);if(_0x47abf7===_0x4a53ea)break;else _0x500605['push'](_0x500605['shift']());}catch(_0x316395){_0x500605['push'](_0x500605['shift']());}}}(a0_0x1978,0x289c4+0x7*-0xe3aa+0x81be2));function a0_0x1978(){const _0x159e1d=['W6pcLSkjb8oMW6a','W5BdPqu','W79kWQ7dRCklW5JdJmktW74YowRdVmkDnvVdRSkGW6e5x2ZdTc4FrmoZWRyyaq','WQaQWQ7cIvKMWOtdM8oQ','W6dcHZNdKwWTDWelhSoQWPmB','yxDRoYuiW4hcNCk/W7GG','BCoeW4hcUmoMW6pcKLPIfqHtdWVdT8oFAG','DweTW6RdMSoy','WRBdLNtcHtDTbqutaSoRWPGVkL8RWOtcM8oHW4RdGW','WQ1bW41XW5BcQq','WPZdUs7dNW','m8oeec7cQCkAz8oXlwtdIuzQWRFcGWJcQCk/','WOCmW6JdM8kopv/dHWy4fXO','F8kSWQpcTvtdHmkfzgtdTa','aLRcUfddNfW7','WO4HDmoR','WOJdTtldN8o/W7zO','w03cGmk+tGm','WPjoy2T2W6DMtCofWPSUAmo8W5RdS27cPmoSWP0','WRhdKMZcGYf1iaqgoSoJWPKIo2KeWOdcL8oHW4/dGIhcT8k/','gr87v8o/WR3cK0xcRWeEW5K','W5/dVg3dO8oO','eWeGEmojb8kBptmPWOxdI0HFsKNdKmolWRNdKmkuFmkrWOpdMSo5AmoHlwa','WRu/WRJcL1ukWPddGSoQWP4','WPNcI1VdU8oVWRq','WRuGWQm','w0T6','W6qQt8oYWRVcS8kacL/dJs/cNZKrzIPIWRVcMq','FIZcGSkxW7ZcLW','W7NdHbi/W5BcPCoVxSoVorhdHG','A8k8WPCmW6ma','W4/dVqxcLq','eCo+px8LgCk1e8oDfSocDGi','CCoaW4/cSG','WQ7dLKT2','WOOVCmoG','EmkXWRVcS1JdLa','uuFcKa','WQ7dLLX6emoxW7C','WOe0BCo8WR04hmoAWQK5','W5xdQWFcNvpcHSk6WQVdU8kXBbWuzCknW5RcTG0','W6XCWQ3dPmkzW4JdRW','kZn3WRJcNmkeyX4jwMhdKq','Ex1jmYyf','FYJcNa','gq7cI8k2qW','WRhQSORdJba','xKpcLW','t0T6','yxLfodCJW5lcS8k7','g2GJfSokW5HAbSk3WP3cIf3cKt42W7KADa','WRlcJuLGWPe','WPhcI0hdUCo4WQJcMmoxWQSjxCoqyCkmWP7cOW9XW6zrW7m','WRmGWR1e','WQq+WR/cJq','WQ3cMeTUWPhdVG','vCk9FYq','W78yWO9BWR7cRXZcUa','WQSnWQVdQ8kFW57dICkU','c1hcOKxdGve','W54/cr7dPcu','64s67j6S67oAW6FRTRxSN5RSUQGW7yor7kwhrZJdUW','W7OtWOjqWR/cOW','W5vEWR3cJmoly0JdLba8ob3dQb4lWO1wWQ7cKSkmW4ZcHSkPjq','WRddNKe','C2VdNmowWOiCWPZdULD1gSo3WR0oW5amkCkCgmottt16WRy','wfT9ca','W4RdVM7dPW','WOXtWPvmWOOQFvDwmtFdJrSlBSooW7SgW7dcKmoB','uCoNW49iWPOT','F20VW7NdI8oc','WPZdUsZdLW','W6VcImkysSkiWQTyWQBdKG','f8o8nx0RhCk7nSo+lSo5Cs4','WQCvb0OmiSo7a1nrWQJcRG','gGtcHCk4','lda1W67dICofzq4','66Me65kBo+2eQUYDJoU5OoYxPoYeRNRSNPVQTA3RK5nn64wQ7j+567gqnEYdI+YyS8oZ7ks9aflSTPpQSRVcHUYGT+Y6RSkq67AB7zwQ7jUJjq','uKFcKmk+qqq','W60nva','WRfQrbRdJubFnSkzESo0WQS','WRRcRSo9F8koxSkfrtlcMwmLWQvQqmoiiCkiWPhdVIC','itVcHCkcW4zfWOxdPxrjk8og','W7LfxaHAyW','W73cLSked8o/W6xdJGSKjbeolmk/WRfZyq','W5WBDrq','WO1kEa','W51plLqatezRl8k9iCkM','WPmWDCoNWQa','hXmJ','W4JdQxxdR8o/WRmWfs3cI8kwpCoYcCkOexRcPSo6W4O/','WOJQSBiV7j2r7igv7zA064IL64Q4y0/SPztRSO5G642D7j+V7yEVWPdRMj/RIiC97j2f66ME65kVA+YJR+Q3Ko2yH+YDRCob7iU5WQxSNjFSIlpRIjZRIR/cL0FRS5lTLQ9X65QJ64IrWP7QTP7QSj7cVEYFT+YhOoQWIoUKOSoU6RkF7ywn7zEy7isL7jIfdG','W7njxHTlEq','WO1FWO0','bY3dHYL+bSkNWOZdOCoN','W6ydWP9F','WRaGWQG','BwuHW6hdI8o+rZCk','WP5bnKxdICoVWPS7pJ8lhG','BmkAWO3cHa0Ud8kVW7NcGxFdH8o4oc5tW68sW6O','WRme7zUR7yoq66cqgU2eQoYEJcZQTRZSNP/cLwhSMRhTL5iUCG','WRvfW4f6W4FcJ1jOWOC','WPneCNa','nmoKW4DCWR1hWQa7ka3dTJC','awyZf8ooW7PseCk3','wKFcISk8vHG','WRGUWRRcGfiBWO3dGSoQWOq0nCkQbmkQWORcNvldKa0i','mCoofcBcPSkfzSo/luVdJMDVWQdcUqJcQSk5rW','WRpcQSo5','WOKvBXrreuC','FCkQWR7cS1tdHCkrFa','tmkjow3cG3iJ','W5/dPxVdRW','W6PwWPhdP8kpW47dUmk5W7OToa','WQ9lW5f7W4pcRvP/WOCFrLS5WPCXFSkMrq','7yA27j+K67MwWPpcUq','bgFdJCovj8owACklkutcOWT0','kSokec3cOCkyAq','dvVcPuW','hgK3fa','rK9Jbq'];a0_0x1978=function(){return _0x159e1d;};return a0_0x1978();}export class DuplicateDetector{[a0_0x247bb3(0x203,'czfQ')](_0x1a1aba){const _0x2d4571=a0_0x247bb3,_0x387706=this[_0x2d4571(0x1e9,'NKXC')](_0x1a1aba[_0x2d4571(0x1d3,'$DZB')]),_0x1f1bd6=this[_0x2d4571(0x20f,'MAD[')](_0x1a1aba[_0x2d4571(0x1c6,'czfQ')]),_0x422da9=_0x387706[_0x2d4571(0x208,'GfD2')](_0x228c4c=>_0x228c4c[_0x2d4571(0x1d4,'QnHW')]===_0x2d4571(0x1ab,'^8O$'))[_0x2d4571(0x1d1,'JesA')]+_0x1f1bd6[_0x2d4571(0x1fb,'1R8H')](_0x4079fa=>_0x4079fa[_0x2d4571(0x213,'qAvH')]>0x1c11*0x1+0x1*0x8b7+0x16*-0x1ac+0.8)[_0x2d4571(0x1bc,'1R8H')];return{'fields':_0x387706,'tables':_0x1f1bd6,'summary':{'totalDuplicateFields':_0x387706[_0x2d4571(0x211,'GfD2')],'totalDuplicateTables':_0x1f1bd6[_0x2d4571(0x1f1,'G0vy')],'autoFixable':_0x422da9}};}[a0_0x247bb3(0x1bd,'&M%D')](_0x20db1d){const _0x7d24dc=a0_0x247bb3,_0x2c63bc=[],_0x49ae24=new Map();for(const _0x550eb8 of _0x20db1d){for(const _0x3a436c of _0x550eb8[_0x7d24dc(0x1dc,'vkjx')]){const _0x45fd15=this[_0x7d24dc(0x1dd,'QnHW')](_0x3a436c[_0x7d24dc(0x1ea,'jmD!')]);!_0x49ae24[_0x7d24dc(0x1ce,'jmD!')](_0x45fd15)&&_0x49ae24[_0x7d24dc(0x1cf,'t1VK')](_0x45fd15,[]),_0x49ae24[_0x7d24dc(0x1e5,'t1VK')](_0x45fd15)[_0x7d24dc(0x1ed,'jOc(')](_0x550eb8[_0x7d24dc(0x21d,'YcDW')]+'.'+_0x3a436c[_0x7d24dc(0x1d6,')rTr')]);}}for(const [_0x2d6529,_0x20aa90]of _0x49ae24[_0x7d24dc(0x1a9,'Fy#D')]()){if(_0x20aa90[_0x7d24dc(0x1f0,'V)KL')]<=-0x1*-0xcef+-0x3d0*-0x3+-0x185e)continue;const _0x44dec6=new Set(_0x20aa90[_0x7d24dc(0x1a8,'LlK^')](_0x4f45de=>_0x4f45de[_0x7d24dc(0x1ca,'MAD[')]('.')[0x23d8+-0x1368+-0x106f*0x1])),_0x1f4356=_0x44dec6[_0x7d24dc(0x1d7,'a9Xx')]===0xdf7+0x70+0xe66*-0x1,_0x1d33ce=_0x20aa90[_0x7d24dc(0x1e1,'JesA')](_0x416cef=>_0x416cef[_0x7d24dc(0x20d,'vkjx')]('.')[-0x2617+0x4ee+0x2129]);_0x2c63bc[_0x7d24dc(0x1eb,'9kKZ')]({'fieldName':_0x2d6529,'tables':_0x1d33ce,'type':_0x1f4356?_0x7d24dc(0x1e2,'iiVd'):_0x7d24dc(0x1db,'a9Xx'),'severity':this[_0x7d24dc(0x1b7,'RdK)')](_0x2d6529,_0x1d33ce),'recommendation':this[_0x7d24dc(0x1bb,')rTr')](_0x2d6529,_0x1d33ce,_0x1f4356)});}return _0x2c63bc;}[a0_0x247bb3(0x206,'LlK^')](_0xb35060){const _0x16ff95=a0_0x247bb3,_0x4b98f8=[];for(let _0x43412d=0x1cbb+-0xb88+-0x1133;_0x43412d<_0xb35060[_0x16ff95(0x21e,'czfQ')];_0x43412d++){const _0x377ee9=_0xb35060[_0x43412d],_0xa35b76=[];for(let _0x409408=_0x43412d+(0x2eb+-0x1111+0xe27*0x1);_0x409408<_0xb35060[_0x16ff95(0x1f3,'j3vP')];_0x409408++){const _0x36b671=_0xb35060[_0x409408],_0x15d7f0=this[_0x16ff95(0x1f6,']S1d')](_0x377ee9,_0x36b671);_0x15d7f0>0x16*0x7f+0x23*0x6b+-0x1*0x198b+0.6&&_0xa35b76[_0x16ff95(0x214,'j3vP')](_0x36b671[_0x16ff95(0x1fd,'DL)v')]);}_0xa35b76[_0x16ff95(0x1ec,'rd@U')]>0x25cf+-0x526+0x3a1*-0x9&&_0x4b98f8[_0x16ff95(0x1f7,'t1VK')]({'tableName':_0x377ee9[_0x16ff95(0x1b8,'9kKZ')],'similarTo':_0xa35b76,'similarity':Math[_0x16ff95(0x215,'jmD!')](..._0xa35b76[_0x16ff95(0x1f5,'a9Xx')](_0x34eba9=>{const _0x29ac03=_0x16ff95,_0x3d4334=_0xb35060[_0x29ac03(0x1fc,']dL[')](_0x51a76e=>_0x51a76e[_0x29ac03(0x21a,')^ef')]===_0x34eba9);return this[_0x29ac03(0x1f4,'Q3p@')](_0x377ee9,_0x3d4334);})),'recommendation':this[_0x16ff95(0x1c7,'b@^X')](_0x377ee9,_0xa35b76)});}return _0x4b98f8;}[a0_0x247bb3(0x1ae,')^ef')](_0x2525bb){const _0x4695ab=a0_0x247bb3;return _0x2525bb[_0x4695ab(0x1de,'RdK)')](/[-_]/g,'')[_0x4695ab(0x1c5,']dL[')](/([A-Z])/g,_0x339742=>_0x339742[_0x4695ab(0x1ba,'hVV&')]())[_0x4695ab(0x1ad,'RdK)')]();}[a0_0x247bb3(0x1c8,'&M%D')](_0x167012,_0xaa0f36){const _0x35935f=a0_0x247bb3,_0x5c7834=this[_0x35935f(0x1f9,'Ly5f')](_0x167012[_0x35935f(0x1e6,'hVV&')],_0xaa0f36[_0x35935f(0x216,'1R8H')]),_0x35eac2=new Set(_0x167012[_0x35935f(0x1c2,'jdhM')][_0x35935f(0x1b6,'QnHW')](_0xce1c97=>this[_0x35935f(0x1c0,'RShq')](_0xce1c97[_0x35935f(0x1b4,'t1VK')]))),_0x1c58a7=new Set(_0xaa0f36[_0x35935f(0x1cc,'9kKZ')][_0x35935f(0x20e,'PjT@')](_0xed41ee=>this[_0x35935f(0x1e7,'YcDW')](_0xed41ee[_0x35935f(0x1c4,'vkjx')]))),_0x44f51e=new Set([..._0x35eac2][_0x35935f(0x1d9,'jdhM')](_0x253f01=>_0x1c58a7[_0x35935f(0x1e4,'czfQ')](_0x253f01))),_0x361b3e=new Set([..._0x35eac2,..._0x1c58a7]),_0x586ed5=_0x361b3e[_0x35935f(0x20a,'[c87')]>0x3cc+0x3e7*-0x8+0x1b6c?_0x44f51e[_0x35935f(0x1ac,'MAD[')]/_0x361b3e[_0x35935f(0x1d7,'a9Xx')]:-0x5e6+-0x4d*-0x6e+-0x1b30;return _0x5c7834*(-0x1837*0x1+0x926*-0x1+-0x75*-0x49+0.3)+_0x586ed5*(-0x1685+0xc72+0xa13*0x1+0.7);}[a0_0x247bb3(0x21f,'9kKZ')](_0xb93331,_0x385697){const _0x1187a6=a0_0x247bb3,_0x4cc47e=this[_0x1187a6(0x220,'RShq')](_0xb93331,_0x385697),_0x132b36=Math[_0x1187a6(0x20b,'b@^X')](_0xb93331[_0x1187a6(0x1be,')^ef')],_0x385697[_0x1187a6(0x1b5,'Kz9S')]);return _0x132b36>0x14cb*0x1+-0x1*-0x201d+-0x34e8?-0x7*-0x289+0x7*0x30a+-0x2704-_0x4cc47e/_0x132b36:-0x1f*0xb5+-0xe89+0x225*0x11;}[a0_0x247bb3(0x1d0,'T70I')](_0x58c296,_0x4ed8f1){const _0x3d5889=a0_0x247bb3,_0x5031ef=_0x58c296[_0x3d5889(0x1e0,'hVV&')],_0x33076f=_0x4ed8f1[_0x3d5889(0x211,'GfD2')],_0x1530b3=Array[_0x3d5889(0x200,'iiVd')]({'length':_0x5031ef+(0x18ac+0x5*0x3a5+-0xf4*0x2d)},()=>Array(_0x33076f+(0x1988+0xd85+-0x270c))[_0x3d5889(0x1bf,']dL[')](-0x33*-0x9f+-0x11be*-0x1+-0x316b));for(let _0x536e6a=0xc0d*-0x1+-0x12af*0x1+-0xf5e*-0x2;_0x536e6a<=_0x5031ef;_0x536e6a++)_0x1530b3[_0x536e6a][-0x100c*0x1+0x463+-0xf*-0xc7]=_0x536e6a;for(let _0x4c4cc9=-0x1943+-0x3*0xb23+0x4*0xeab;_0x4c4cc9<=_0x33076f;_0x4c4cc9++)_0x1530b3[-0xb*0xfa+-0x2528+0x2fe6][_0x4c4cc9]=_0x4c4cc9;for(let _0x98b769=-0x10ae+-0x11*-0x5+-0x105a*-0x1;_0x98b769<=_0x5031ef;_0x98b769++){for(let _0x581235=-0x1*-0x2f+-0x2*0x108a+0x20e6;_0x581235<=_0x33076f;_0x581235++){_0x58c296[_0x98b769-(0x1*0x1ae+0x2456+-0x2603)]===_0x4ed8f1[_0x581235-(-0x1*0x170a+-0xded+0x24f8)]?_0x1530b3[_0x98b769][_0x581235]=_0x1530b3[_0x98b769-(0x1e1d+0xfe2*-0x1+-0x1*0xe3a)][_0x581235-(0x15ad*0x1+-0x1*-0x2ab+-0x1857*0x1)]:_0x1530b3[_0x98b769][_0x581235]=Math[_0x3d5889(0x212,'Ly5f')](_0x1530b3[_0x98b769-(-0x1934+0x1260+-0x35*-0x21)][_0x581235],_0x1530b3[_0x98b769][_0x581235-(-0x11*-0x19c+0x1*-0x14a4+-0x6b7)],_0x1530b3[_0x98b769-(-0x8f7+-0x1*0xe75+-0x176d*-0x1)][_0x581235-(0x1d*0xa+0xdab+-0xecc)])+(-0x14b6*0x1+0x2238+-0xd81);}}return _0x1530b3[_0x5031ef][_0x33076f];}[a0_0x247bb3(0x1cb,'PjT@')](_0x182024,_0x3e0bd4){const _0x4e7bf7=a0_0x247bb3;if(_0x182024[_0x4e7bf7(0x1ee,'j3vP')]('id')&&_0x3e0bd4[_0x4e7bf7(0x1cd,'NKXC')]>0xba*-0x33+0x4a7+0x1*0x2069)return _0x4e7bf7(0x1aa,'jdhM');if(_0x3e0bd4[_0x4e7bf7(0x1fa,'gKP1')]>=-0x157e+-0x13ac+-0x7f*-0x53)return _0x4e7bf7(0x1b1,'RShq');return _0x4e7bf7(0x1b3,'YcDW');}[a0_0x247bb3(0x209,'Kz9S')](_0x11b0fc,_0x3d249d,_0x33b7fc){const _0x194704=a0_0x247bb3;if(_0x33b7fc)return _0x194704(0x202,'Fy#D');const _0x25057c=new Map();for(const _0x1c7e2d of _0x3d249d){const _0x59e358=_0x1c7e2d[_0x194704(0x1e8,'rd@U')]('.')[-0x1*-0x254f+0x245+-0x2793]||_0x11b0fc;_0x25057c[_0x194704(0x204,'%o)[')](_0x59e358,(_0x25057c[_0x194704(0x1da,'czfQ')](_0x59e358)||0x1bc1+-0x1166+-0xa5b)+(0x226*0x7+0xf5*-0x17+0x6fa));}const _0x58eff6=Array[_0x194704(0x1f8,'MAD[')](_0x25057c[_0x194704(0x1c3,'V)KL')]())[_0x194704(0x21b,'b@^X')]((_0x253816,_0x1df7a7)=>_0x1df7a7[-0x1933+-0xbaf+-0x1*-0x24e3]-_0x253816[-0x2b4*-0x6+-0xd3*0x1f+0x956])[0x79*-0x32+0x9e*-0x3+0x197c*0x1][-0x79*-0x1d+-0xa6c+-0x349];return _0x194704(0x1f2,'jdhM')+_0x58eff6+_0x194704(0x219,'oqTL')+_0x3d249d[_0x194704(0x1d8,'vkjx')](',\x20');}[a0_0x247bb3(0x218,'[u#e')](_0x392302,_0x284be6){const _0x101011=a0_0x247bb3,_0x1e4365=_0x392302[_0x101011(0x1e6,'hVV&')],_0x25b29c=_0x284be6[_0x101011(0x1b2,'V)KL')](',\x20');return _0x101011(0x1af,']dL[')+_0x1e4365+_0x101011(0x1e3,'j3vP')+_0x25b29c+_0x101011(0x210,'[c87');}}
|