eSIM RSP 测试用例对比站

人工切片(-man) ↔ Cas 盲生成(-cas)· 真机真卡执行证据对照

源码对照:4.2.21.2.3

ES10c 启用 Profile(Case 4) / TC_eUICC_ES10c.EnableProfile_Case4

左侧为人工切片入口(-man,来自 原料/切片 的最小可执行脚本),右侧为 Cas 盲生成入口(-cas,仅依据规范生成)。文件按原始编码(多为 GBK)解码为 UTF-8 显示,行号自 1 起;字节级原文与 sha256 见两侧脚本包。完整 unified diff 见本页底部折叠区,以及 报告原文 §4。
-man 入口
Import/TestCase_SGP_23.js
993 行 / 38688 字符 / gb18030
-cas 入口
TC_eUICC_ES10c_EnableProfile_Case4/Import/TC_eUICC_ES10c_EnableProfile_Case4.js
821 行 / 65301 字符 / gb18030
默认折行显示长行;取消勾选可横向滚动查看原始行宽
-man 人工切片Import/TestCase_SGP_23.js993 行 / 38688 字符 / gb18030入口函数 @L3
1// slice of Import\TestCase_SGP_23.js - cases: TC_eUICC_ES10c_EnableProfile_Case4_01_Nominal_Enable_Profile_by_ISD_P_AID_and_refreshFlag_set_when_Device_supports_UICC_Reset + TC_eUICC_ES10c_EnableProfile_Case4_02_Nominal_Enable_Profile_by_ICCID_and_refreshFlag_set_when_Device_supports_UICC_Reset + TC_eUICC_ES10c_EnableProfile_Case4_03_Nominal_Enable_Profile_by_ISD_P_AID_and_refreshFlag_set_when_Device_supports_eUICC_Profile_State_Change + TC_eUICC_ES10c_EnableProfile_Case4_04_Nominal_Enable_Profile_ICCID_and_refreshFlag_set_when_Device_supports_eUICC_Profile_State_Change + TC_eUICC_ES10c_EnableProfile_Case4_05_Nominal_Enable_Profile_by_ISD_P_AID_and_refreshFlag_not_set + TC_eUICC_ES10c_EnableProfile_Case4_06_Nominal_Enable_Profile_by_ICCID_and_refreshFlag_not_set + TC_eUICC_ES10c_EnableProfile_Case4_07_Nominal_Enable_Profile_by_ISD_P_AID_and_refreshFlag_set_while_proactive_session_is_ongoing_catBusy_not_supported + TC_eUICC_ES10c_EnableProfile_Case4_08_Nominal_Enable_Profile_by_ISD_P_AID_and_refreshFlag_not_set_while_proactive_session_is_ongoing_catBusy_not_supported + TC_eUICC_ES10c_EnableProfile_Case4_09_Nominal_Enable_Profile_by_ISD_P_AID_and_refreshFlag_set_while_proactive_session_is_ongoing_with_Terminal_Response_outstanding_catBusy_not_supported + TC_eUICC_ES10c_EnableProfile_Case4_10_Nominal_Enable_Profile_by_ISD_P_AID_and_refreshFlag_not_set_while_proactive_session_is_ongoing_with_Terminal_Response_outstanding_catBusy_not_supported (extracted verbatim)
2
3function TC_eUICC_ES10c_EnableProfile_Case4_01_Nominal_Enable_Profile_by_ISD_P_AID_and_refreshFlag_set_when_Device_supports_UICC_Reset()
4{
5	if(!Card_Have_ECC_Cert)
6		return;
7	
8	TestOfMEPMode = 0;	
9
10	initial_condition_PROFILE_OPERATIONAL1_is_Disabled();
11	var ISD_P_Test01 = curProfile_ISD_P_AID;
12	
13	tracenamestr = "测试目的:设备支持 “UICC Reset”,通过ISD-P AID激活profile,并设置refreshFlag";
14	curDis.TraceStart(sno++,tracenamestr);
15	
16	curLogicChannel = 0;
17	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
18	Ini_powerOn_eUICC_LPAe_not_activate();
19	
20	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
21	TS_MANAGE_CHANNEL_OPEN();
22	
23	curLogicChannel = 1;
24	
25	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
26	TS_SELECT("Select ISD",ISD_R_AID,"9000");
27	
28	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EnableProfileRequest,refreshFlag为FF;");
29
30	var enableProRequest = new EnableProfileRequest();
31	enableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.isdpAid,ISD_P_Test01);
32	enableProRequest.refreshFlag = BooleanValue_BerCode_True;
33	enableProRequest.GenHexData();
34	var respData = LPAd_Transport_data_to_eUICC(enableProRequest.hexData,"91","00","91XX");
35	
36	curStrHandle.CheckData("BF3103800100", respData, "EnableProfileResponse");
37	
38	curLogicChannel = 0;
39	curDis.TestStepStart2(stno++,"读卡器向卡片发送 Fetch命令,主动式命令refresh;");
40	
41	FetchStr = Fetch("","9000","");
42		
43	var CmdDetails = GetValueByTag("01",1);
44	var CmdQualifier = CmdDetails.substr(4,2);
45	CheckData("04",CmdQualifier,"the command qualifier is equal to ’04’ (UICC Reset)");//'04' = UICC Reset; 
46	
47	curLogicChannel = 0;
48	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
49	Ini_powerOn_eUICC_LPAe_not_activate();
50	
51	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
52	TS_MANAGE_CHANNEL_OPEN();
53	
54	curLogicChannel = 1;
55	
56	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
57	TS_SELECT("Select ISD",ISD_R_AID,"9000");
58	
59	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
60	
61	var proInfoListRequest = new ProfileInfoListRequest();
62	proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.isdpAid,ISD_P_Test01);
63	proInfoListRequest.tagList = "5A4F9F70";
64	proInfoListRequest.GenHexData();
65	var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
66	
67
68	var proInfoListResponse = new  ProfileInfoListResponse();
69	proInfoListResponse.checkCardResDataFormat(respData);
70	
71	try
72	{
73		curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
74		curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
75		curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
76	}catch(e){
77		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
78	}
79	
80	curLogicChannel = 0;
81	curDis.TestStepStart2(stno++,"读卡器向卡片发送 Select命令,选择ICCID;");
82	var para1 = new SelectFileEFPara_3G("2FE2");
83	SendAPDU(para1.apdu);
84	
85	curDis.TestStepStart2(stno++,"读卡器向卡片发送read binary命令;");
86	var para1 = new ReadBinaryPara_3G("00","00","0A");
87	para1.apdu.resvalue = ICCID_OP_PROF1;
88	SendAPDU(para1.apdu);
89	
90	RecoverCard();
91	
92}
93
94function TC_eUICC_ES10c_EnableProfile_Case4_02_Nominal_Enable_Profile_by_ICCID_and_refreshFlag_set_when_Device_supports_UICC_Reset()
95{
96	if(!Card_Have_ECC_Cert)
97		return;
98	
99	TestOfMEPMode = 0;	
100
101	initial_condition_PROFILE_OPERATIONAL1_is_Disabled();
102	var ISD_P_Test01 = curProfile_ISD_P_AID;
103	
104	tracenamestr = "测试目的:设备支持 “UICC Reset”,通过ICCID激活profile,并设置refreshFlag";
105	curDis.TraceStart(sno++,tracenamestr);
106	
107	curLogicChannel = 0;
108	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
109	Ini_powerOn_eUICC_LPAe_not_activate();
110	
111	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
112	TS_MANAGE_CHANNEL_OPEN();
113	
114	curLogicChannel = 1;
115	
116	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
117	TS_SELECT("Select ISD",ISD_R_AID,"9000");
118	
119	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EnableProfileRequest,refreshFlag为FF;");
120	var enableProRequest = new EnableProfileRequest();
121	enableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.iccid,ICCID_OP_PROF1);
122	enableProRequest.refreshFlag = BooleanValue_BerCode_True;
123	enableProRequest.GenHexData();
124	var respData = LPAd_Transport_data_to_eUICC(enableProRequest.hexData,"91","00","91XX");
125	
126	curStrHandle.CheckData("BF3103800100", respData, "EnableProfileResponse");
127	
128	curLogicChannel = 0;
129	curDis.TestStepStart2(stno++,"读卡器向卡片发送 Fetch命令,主动式命令refresh;");
130	
131	FetchStr = Fetch("","9000","");
132		
133	var CmdDetails = GetValueByTag("01",1);
134	var CmdQualifier = CmdDetails.substr(4,2);
135	CheckData("04",CmdQualifier,"the command qualifier is equal to ’04’ (UICC Reset)");//'04' = UICC Reset; 
136	
137	curLogicChannel = 0;
138	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
139	Ini_powerOn_eUICC_LPAe_not_activate();
140	
141	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
142	TS_MANAGE_CHANNEL_OPEN();
143	
144	curLogicChannel = 1;
145	
146	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
147	TS_SELECT("Select ISD",ISD_R_AID,"9000");
148	
149	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
150	var proInfoListRequest = new ProfileInfoListRequest();
151	proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
152	proInfoListRequest.tagList = "5A4F9F70";
153	proInfoListRequest.GenHexData();
154	var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
155	
156
157	var proInfoListResponse = new  ProfileInfoListResponse();
158	proInfoListResponse.checkCardResDataFormat(respData);
159	
160	try
161	{
162		curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
163		curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
164		curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
165	}catch(e){
166		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
167	}
168	
169	curLogicChannel = 0;
170	curDis.TestStepStart2(stno++,"读卡器向卡片发送 Select命令,选择ICCID;");
171	var para1 = new SelectFileEFPara_3G("2FE2");
172	SendAPDU(para1.apdu);
173	
174	curDis.TestStepStart2(stno++,"读卡器向卡片发送read binary命令;");
175	var para1 = new ReadBinaryPara_3G("00","00","0A");
176	para1.apdu.resvalue = ICCID_OP_PROF1;
177	SendAPDU(para1.apdu);
178	
179	RecoverCard();
180	
181}
182
183function TC_eUICC_ES10c_EnableProfile_Case4_03_Nominal_Enable_Profile_by_ISD_P_AID_and_refreshFlag_set_when_Device_supports_eUICC_Profile_State_Change()
184{
185	if(!Card_Have_ECC_Cert)
186		return;
187	
188	TestOfMEPMode = 0;	
189
190	initial_condition_PROFILE_OPERATIONAL1_is_Disabled();
191	var ISD_P_Test01 = curProfile_ISD_P_AID;
192	
193	tracenamestr = "测试目的:设备支持 “eUICC Profile State Change”,通过ISD-P AID激活profile,并设置refreshFlag";
194	curDis.TraceStart(sno++,tracenamestr);
195	
196	curLogicChannel = 0;
197	
198	TERMINAL_PROFILE_Default = TERMINAL_PROFILE_eUICCProfileStateChanged;//add 20260423
199	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
200	Ini_powerOn_eUICC_LPAe_not_activate();
201	
202	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
203	TS_MANAGE_CHANNEL_OPEN();
204	
205	curLogicChannel = 1;
206	
207	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
208	TS_SELECT("Select ISD",ISD_R_AID,"9000");
209	
210	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EnableProfileRequest,refreshFlag为FF;");
211
212	var enableProRequest = new EnableProfileRequest();
213	enableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.isdpAid,ISD_P_Test01);
214	enableProRequest.refreshFlag = BooleanValue_BerCode_True;
215	enableProRequest.GenHexData();
216	var respData = LPAd_Transport_data_to_eUICC(enableProRequest.hexData,"91","00","91XX");
217	
218	curStrHandle.CheckData("BF3103800100", respData, "EnableProfileResponse");
219	
220	curLogicChannel = 0;
221	curDis.TestStepStart2(stno++,"读卡器向卡片发送 Fetch命令,主动式命令refresh;");
222	FetchStr = Fetch("","9000","");
223		
224	var CmdDetails = GetValueByTag("01",1);
225	var CmdQualifier = CmdDetails.substr(4,2);
226	CheckData("09",CmdQualifier,"the command qualifier is equal to ’09’ (eUICC Profile State Change)");
227	
228	TerminalResponse("00","9000");
229	
230	curDis.TestStepStart2(stno++,"eUICC卡片初始化:从第 2 步到第 4 步,[SELECT_MF]、[TERMINAL_CAPABILITY_LPAd] 、[TERMINAL_PROFILE_eUICCProfileStateChanged] ");
231	curLogicChannel = 0;	
232	if (check_eUICC_support_TERMINAL_CAPABILITY_cmd())
233		TS_TERMINAL_CAPABILITY_cmd();
234	else
235		obj.SubLevel("eUICC不支持”TERMINAL_CAPABILITY“命令", level_of_SubLevel.warning);
236	
237	IniCard_SetUpMenu("",1);
238	
239	
240	
241	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
242	TS_MANAGE_CHANNEL_OPEN();
243	
244	curLogicChannel = 1;
245	
246	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
247	TS_SELECT("Select ISD",ISD_R_AID,"9000");
248	
249	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
250	
251	var proInfoListRequest = new ProfileInfoListRequest();
252	proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.isdpAid,ISD_P_Test01);
253	proInfoListRequest.tagList = "5A4F9F70";
254	proInfoListRequest.GenHexData();
255	var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
256	
257
258	var proInfoListResponse = new  ProfileInfoListResponse();
259	proInfoListResponse.checkCardResDataFormat(respData);
260	
261	try
262	{
263		curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
264		curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
265		curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
266	}catch(e){
267		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
268	}
269	
270	curLogicChannel = 0;
271	curDis.TestStepStart2(stno++,"读卡器向卡片发送 Select命令,选择ICCID;");
272	var para1 = new SelectFileEFPara_3G("2FE2");
273	SendAPDU(para1.apdu);
274	
275	curDis.TestStepStart2(stno++,"读卡器向卡片发送read binary命令;");
276	var para1 = new ReadBinaryPara_3G("00","00","0A");
277	para1.apdu.resvalue = ICCID_OP_PROF1;
278	SendAPDU(para1.apdu);
279	
280	RecoverCard();
281}
282
283function TC_eUICC_ES10c_EnableProfile_Case4_04_Nominal_Enable_Profile_ICCID_and_refreshFlag_set_when_Device_supports_eUICC_Profile_State_Change()
284{
285	if(!Card_Have_ECC_Cert)
286		return;
287
288	TestOfMEPMode = 0;	
289
290	initial_condition_PROFILE_OPERATIONAL1_is_Disabled();
291	var ISD_P_Test01 = curProfile_ISD_P_AID;
292	
293	tracenamestr = "测试目的:设备支持 “eUICC Profile State Change”,通过ICCID激活profile,并设置refreshFlag";
294	curDis.TraceStart(sno++,tracenamestr);
295	
296	curLogicChannel = 0;
297	TERMINAL_PROFILE_Default = TERMINAL_PROFILE_eUICCProfileStateChanged;
298	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
299	Ini_powerOn_eUICC_LPAe_not_activate();
300
301	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
302	TS_MANAGE_CHANNEL_OPEN();
303	
304	curLogicChannel = 1;
305	
306	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
307	TS_SELECT("Select ISD",ISD_R_AID,"9000");
308	
309	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EnableProfileRequest,refreshFlag为FF;");
310	var enableProRequest = new EnableProfileRequest();
311	enableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.iccid,ICCID_OP_PROF1);
312	enableProRequest.refreshFlag = BooleanValue_BerCode_True;
313	enableProRequest.GenHexData();
314	var respData = LPAd_Transport_data_to_eUICC(enableProRequest.hexData,"91","00","91XX");
315	
316	curStrHandle.CheckData("BF3103800100", respData, "EnableProfileResponse");
317	
318	curLogicChannel = 0;
319	curDis.TestStepStart2(stno++,"读卡器向卡片发送 Fetch命令,主动式命令refresh;");
320	
321	FetchStr = Fetch("","9000","");
322		
323	var CmdDetails = GetValueByTag("01",1);
324	var CmdQualifier = CmdDetails.substr(4,2);
325	CheckData("09",CmdQualifier,"the command qualifier is equal to ’09’ (eUICC Profile State Change)");//'09' = eUICC Profile State Change;   102.223-8.6
326	
327	TerminalResponse("00","9000");
328	
329	curLogicChannel = 0;
330	curDis.TestStepStart2(stno++,"eUICC卡片初始化:从第 2 步到第 4 步,[SELECT_MF]、[TERMINAL_CAPABILITY_LPAd] 、[TERMINAL_PROFILE_eUICCProfileStateChanged] ");
331	
332	curLogicChannel = 0;
333	
334	if (check_eUICC_support_TERMINAL_CAPABILITY_cmd())
335		TS_TERMINAL_CAPABILITY_cmd();
336	else
337		obj.SubLevel("eUICC不支持”TERMINAL_CAPABILITY“命令", level_of_SubLevel.warning);
338	
339	IniCard_SetUpMenu("",1);
340	
341	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
342	TS_MANAGE_CHANNEL_OPEN();
343	
344	curLogicChannel = 1;
345	
346	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
347	TS_SELECT("Select ISD",ISD_R_AID,"9000");
348	
349	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
350	var proInfoListRequest = new ProfileInfoListRequest();
351	proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
352	proInfoListRequest.tagList = "5A4F9F70";
353	proInfoListRequest.GenHexData();
354	var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
355	
356
357	var proInfoListResponse = new  ProfileInfoListResponse();
358	proInfoListResponse.checkCardResDataFormat(respData);
359	
360	try
361	{
362		curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
363		curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
364		curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
365	}catch(e){
366		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
367	}
368	
369	curLogicChannel = 0;
370	curDis.TestStepStart2(stno++,"读卡器向卡片发送 Select命令,选择ICCID;");
371	var para1 = new SelectFileEFPara_3G("2FE2");
372	SendAPDU(para1.apdu);
373	
374	curDis.TestStepStart2(stno++,"读卡器向卡片发送read binary命令;");
375	var para1 = new ReadBinaryPara_3G("00","00","0A");
376	para1.apdu.resvalue = ICCID_OP_PROF1;
377	SendAPDU(para1.apdu);
378	
379	RecoverCard();
380}
381
382function TC_eUICC_ES10c_EnableProfile_Case4_05_Nominal_Enable_Profile_by_ISD_P_AID_and_refreshFlag_not_set()
383{
384	if(!Card_Have_ECC_Cert)
385		return;
386	
387	TestOfMEPMode = 0;	
388
389	initial_condition_PROFILE_OPERATIONAL1_is_Disabled();
390	var ISD_P_Test01 = curProfile_ISD_P_AID;
391	
392	tracenamestr = "测试目的:通过ISD-P AID激活profile,不设置refreshFlag";
393	curDis.TraceStart(sno++,tracenamestr);
394	
395	curLogicChannel = 0;
396	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
397	Ini_powerOn_eUICC_LPAe_not_activate();
398	
399	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
400	TS_MANAGE_CHANNEL_OPEN();
401	
402	curLogicChannel = 1;
403	
404	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
405	TS_SELECT("Select ISD",ISD_R_AID,"9000");
406	
407	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EnableProfileRequest,refreshFlag为false;");
408
409	var enableProRequest = new EnableProfileRequest();
410	enableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.isdpAid,ISD_P_Test01);
411	enableProRequest.refreshFlag = BooleanValue_BerCode_False;
412	enableProRequest.GenHexData();
413	var respData = LPAd_Transport_data_to_eUICC(enableProRequest.hexData,"91","00","9000");
414	
415	curStrHandle.CheckData("BF3103800100", respData, "EnableProfileResponse");
416	
417	curDis.TestStepStart2(stno++,"读卡器向卡片发送 TERMINAL_PROFILE命令;");
418	IniCard_SetUpMenu("",1);
419	
420	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
421	TS_MANAGE_CHANNEL_OPEN();
422	curLogicChannel = 1;
423	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
424	TS_SELECT("Select ISD",ISD_R_AID,"9000");
425	
426	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
427	
428	var proInfoListRequest = new ProfileInfoListRequest();
429	proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.isdpAid,ISD_P_Test01);
430	proInfoListRequest.tagList = "5A4F9F70";
431	proInfoListRequest.GenHexData();
432	var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
433	
434
435	var proInfoListResponse = new  ProfileInfoListResponse();
436	proInfoListResponse.checkCardResDataFormat(respData);
437	
438	try
439	{
440		curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
441		curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
442		curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
443	}catch(e){
444		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
445	}
446	
447	curLogicChannel = 0;
448	curDis.TestStepStart2(stno++,"读卡器向卡片发送 Select命令,选择ICCID;");
449	var para1 = new SelectFileEFPara_3G("2FE2");
450	SendAPDU(para1.apdu);
451	
452	curDis.TestStepStart2(stno++,"读卡器向卡片发送read binary命令;");
453	var para1 = new ReadBinaryPara_3G("00","00","0A");
454	para1.apdu.resvalue = ICCID_OP_PROF1;
455	SendAPDU(para1.apdu);
456	
457	RecoverCard();
458	
459}
460
461function TC_eUICC_ES10c_EnableProfile_Case4_06_Nominal_Enable_Profile_by_ICCID_and_refreshFlag_not_set()
462{
463	if(!Card_Have_ECC_Cert)
464		return;
465	
466	TestOfMEPMode = 0;	
467
468	initial_condition_PROFILE_OPERATIONAL1_is_Disabled();
469	var ISD_P_Test01 = curProfile_ISD_P_AID;
470	
471	tracenamestr = "测试目的:通过ICCID激活profile,不设置refreshFlag";
472	curDis.TraceStart(sno++,tracenamestr);
473	
474	curLogicChannel = 0;
475	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
476	Ini_powerOn_eUICC_LPAe_not_activate();
477	
478	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
479	TS_MANAGE_CHANNEL_OPEN();
480	
481	curLogicChannel = 1;
482	
483	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
484	TS_SELECT("Select ISD",ISD_R_AID,"9000");
485	
486	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EnableProfileRequest,refreshFlag为false;");
487	var enableProRequest = new EnableProfileRequest();
488	enableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.iccid,ICCID_OP_PROF1);
489	enableProRequest.refreshFlag = BooleanValue_BerCode_False;
490	enableProRequest.GenHexData();
491	var respData = LPAd_Transport_data_to_eUICC(enableProRequest.hexData,"91","00","9000");
492	
493	curStrHandle.CheckData("BF3103800100", respData, "EnableProfileResponse");
494	
495	curDis.TestStepStart2(stno++,"读卡器向卡片发送 TERMINAL_PROFILE命令;");
496	IniCard_SetUpMenu("",1);
497	
498	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
499	TS_MANAGE_CHANNEL_OPEN();
500	curLogicChannel = 1;
501	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
502	TS_SELECT("Select ISD",ISD_R_AID,"9000");
503	
504	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
505	var proInfoListRequest = new ProfileInfoListRequest();
506	proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
507	proInfoListRequest.tagList = "5A4F9F70";
508	proInfoListRequest.GenHexData();
509	var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
510	
511
512	var proInfoListResponse = new  ProfileInfoListResponse();
513	proInfoListResponse.checkCardResDataFormat(respData);
514	
515	try
516	{
517		curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
518		curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
519		curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
520	}catch(e){
521		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
522	}
523	
524	curLogicChannel = 0;
525	curDis.TestStepStart2(stno++,"读卡器向卡片发送 Select命令,选择ICCID;");
526	var para1 = new SelectFileEFPara_3G("2FE2");
527	SendAPDU(para1.apdu);
528	
529	curDis.TestStepStart2(stno++,"读卡器向卡片发送read binary命令;");
530	var para1 = new ReadBinaryPara_3G("00","00","0A");
531	para1.apdu.resvalue = ICCID_OP_PROF1;
532	SendAPDU(para1.apdu);
533	
534	RecoverCard();
535	
536}
537
538function TC_eUICC_ES10c_EnableProfile_Case4_07_Nominal_Enable_Profile_by_ISD_P_AID_and_refreshFlag_set_while_proactive_session_is_ongoing_catBusy_not_supported()
539{
540	if(!Card_Have_ECC_Cert)
541		  return;
542	
543
544	if(!check_Applicability_of_tests_RSP_SGP23_test("C033"))
545		return;
546		
547	TestOfMEPMode = 0;	
548	initial_condition_PROFILE_OPERATIONAL1_is_Enabled(); 
549	var ISD_P_Test01 = curProfile_ISD_P_AID;
550	
551	initial_condition_PROFILE_OPERATIONAL2_is_Disabled();
552	var ISD_P_Test02 = curProfile_ISD_P_AID;
553	
554	tracenamestr = "测试目的:eUICC不支持catBusy,主动式会话进行中时,通过ISD-P AID激活profile,并设置refreshFlag";
555	curDis.TraceStart(sno++,tracenamestr);
556	
557	
558	curLogicChannel = 0;
559	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
560	Ini_powerOn_eUICC_LPAe_not_activate();
561	
562	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
563	TS_MANAGE_CHANNEL_OPEN();
564	curLogicChannel = 1;
565	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
566	TS_SELECT("Select ISD",ISD_R_AID,"9000");
567	
568	
569  curLogicChannel=0;
570	curDis.TestStepStart2(stno++,"读卡器向卡片发送SMS-PP;");
571	sSendType = SendTypeByOTA.SMS;
572	KIC = MNO_SCP80_ENC_KEY;
573	KID = MNO_SCP80_AUTH_KEY;
574	KIK = MNO_SCP80_DATA_ENC_KEY;
575	
576
577	sAPDU = "80F28002024F0000";	
578	SendMessageToCard_GP(sSendType,"91XX",0,MNO_TAR_PROFILE_OPERATIONAL1,"12210015",sAPDU);
579	
580	curLogicChannel=1;
581	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EnableProfileRequest,refreshFlag为true;");
582
583	var enableProRequest = new EnableProfileRequest();
584	enableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.isdpAid,ISD_P_Test02);
585	enableProRequest.refreshFlag = BooleanValue_BerCode_True;
586	enableProRequest.GenHexData();
587	var respData = LPAd_Transport_data_to_eUICC(enableProRequest.hexData,"91","00","91XX");
588	curStrHandle.CheckData("BF3103800100", respData, "EnableProfileResponse");
589	
590	curLogicChannel = 0;
591	curDis.TestStepStart2(stno++,"读卡器向卡片发送 Fetch命令,主动式命令refresh;");
592
593	FetchStr = Fetch("","9000","");
594		
595	var CmdDetails = GetValueByTag("01",1);
596	var CmdQualifier = CmdDetails.substr(4,2);
597	CheckData("04",CmdQualifier,"the command qualifier is equal to ’04’ (UICC Reset)");//'04' = UICC Reset; 
598	
599	curLogicChannel = 0;
600	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
601	Ini_powerOn_eUICC_LPAe_not_activate();
602	
603	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
604	TS_MANAGE_CHANNEL_OPEN();
605	
606	curLogicChannel = 1;
607	
608	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
609	TS_SELECT("Select ISD",ISD_R_AID,"9000");
610	
611	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
612
613	var proInfoListRequest = new ProfileInfoListRequest();
614	proInfoListRequest.GenHexData();
615	var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
616	
617
618	var proInfoListResponse = new  ProfileInfoListResponse();
619	proInfoListResponse.checkCardResDataFormat(respData);
620	
621	try
622	{
623		curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
624		curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
625		curStrHandle.CheckData(Profile_DISABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
626		
627		curStrHandle.CheckData(ICCID_OP_PROF2, proInfoListResponse.profileInfoListOk.arrOfElement[1].iccid, "ICCID");
628		curStrHandle.CheckData(ISD_P_Test02, proInfoListResponse.profileInfoListOk.arrOfElement[1].isdpAid, "ISD-P AID");
629		curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[1].profileState, "profile State");
630	}catch(e){
631		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
632	}
633	
634	curLogicChannel = 0;
635	curDis.TestStepStart2(stno++,"读卡器向卡片发送 Select命令,选择ICCID;");
636	var para1 = new SelectFileEFPara_3G("2FE2");
637	SendAPDU(para1.apdu);
638	
639	curDis.TestStepStart2(stno++,"读卡器向卡片发送read binary命令;");
640	var para1 = new ReadBinaryPara_3G("00","00","0A");
641	para1.apdu.resvalue = ICCID_OP_PROF2;
642	SendAPDU(para1.apdu);
643	
644	RecoverCard();
645	
646	
647	
648	
649}
650
651function TC_eUICC_ES10c_EnableProfile_Case4_08_Nominal_Enable_Profile_by_ISD_P_AID_and_refreshFlag_not_set_while_proactive_session_is_ongoing_catBusy_not_supported()
652{
653	if(!Card_Have_ECC_Cert)
654		return;
655	
656
657	if(!check_Applicability_of_tests_RSP_SGP23_test("C033"))
658		return;
659		
660	TestOfMEPMode = 0;	
661	initial_condition_PROFILE_OPERATIONAL1_is_Enabled(); 
662	var ISD_P_Test01 = curProfile_ISD_P_AID;
663	
664	initial_condition_PROFILE_OPERATIONAL2_is_Disabled();
665	var ISD_P_Test02 = curProfile_ISD_P_AID;
666	
667	tracenamestr = "测试目的:eUICC不支持catBusy,主动式会话进行中时,通过ISD-P AID激活profile,不设置refreshFlag";
668	curDis.TraceStart(sno++,tracenamestr);
669	
670	
671	curLogicChannel = 0;
672	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
673	Ini_powerOn_eUICC_LPAe_not_activate();
674	
675	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
676	TS_MANAGE_CHANNEL_OPEN();
677	curLogicChannel = 1;
678	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
679	TS_SELECT("Select ISD",ISD_R_AID,"9000");
680	
681	
682  curLogicChannel=0;
683	curDis.TestStepStart2(stno++,"读卡器向卡片发送SMS-PP;");
684	sSendType = SendTypeByOTA.SMS;
685	KIC = MNO_SCP80_ENC_KEY;
686	KID = MNO_SCP80_AUTH_KEY;
687	KIK = MNO_SCP80_DATA_ENC_KEY;
688	
689
690	sAPDU = "80F28002024F0000";		
691	SendMessageToCard_GP(sSendType,"91XX",0,MNO_TAR_PROFILE_OPERATIONAL1,"12210015",sAPDU);
692	
693	curLogicChannel=1;
694	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EnableProfileRequest,refreshFlag为false(not set);");
695
696	var enableProRequest = new EnableProfileRequest();
697	enableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.isdpAid,ISD_P_Test02);
698	enableProRequest.refreshFlag = BooleanValue_BerCode_False;
699	enableProRequest.GenHexData();
700	var respData = LPAd_Transport_data_to_eUICC(enableProRequest.hexData,"91","00","91XX");
701	curStrHandle.CheckData("BF3103800100", respData, "EnableProfileResponse");
702	
703	curLogicChannel = 0;
704	curDis.TestStepStart2(stno++,"读卡器向卡片发送 Fetch命令,主动式命令refresh;");
705
706	FetchStr = Fetch("","9000","");
707	var CmdDetails = GetValueByTag("01",1);
708	var CmdQualifier = CmdDetails.substr(4,2);
709	CheckData("04",CmdQualifier,"the command qualifier is equal to ’04’ (UICC Reset)");//'04' = UICC Reset; 
710	
711	curLogicChannel = 0;
712	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
713	Ini_powerOn_eUICC_LPAe_not_activate();
714	
715	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
716	TS_MANAGE_CHANNEL_OPEN();
717	
718	curLogicChannel = 1;
719	
720	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
721	TS_SELECT("Select ISD",ISD_R_AID,"9000");
722	
723	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
724
725	var proInfoListRequest = new ProfileInfoListRequest();
726	proInfoListRequest.GenHexData();
727	var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
728	
729
730	var proInfoListResponse = new  ProfileInfoListResponse();
731	proInfoListResponse.checkCardResDataFormat(respData);
732	
733	try
734	{
735		curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
736		curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
737		curStrHandle.CheckData(Profile_DISABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
738		
739		curStrHandle.CheckData(ICCID_OP_PROF2, proInfoListResponse.profileInfoListOk.arrOfElement[1].iccid, "ICCID");
740		curStrHandle.CheckData(ISD_P_Test02, proInfoListResponse.profileInfoListOk.arrOfElement[1].isdpAid, "ISD-P AID");
741		curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[1].profileState, "profile State");
742	}catch(e){
743		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
744	}
745	
746	curLogicChannel = 0;
747	curDis.TestStepStart2(stno++,"读卡器向卡片发送 Select命令,选择ICCID;");
748	var para1 = new SelectFileEFPara_3G("2FE2");
749	SendAPDU(para1.apdu);
750	
751	curDis.TestStepStart2(stno++,"读卡器向卡片发送read binary命令;");
752	var para1 = new ReadBinaryPara_3G("00","00","0A");
753	para1.apdu.resvalue = ICCID_OP_PROF2;
754	SendAPDU(para1.apdu);
755	
756	RecoverCard();	
757	
758}
759
760function TC_eUICC_ES10c_EnableProfile_Case4_09_Nominal_Enable_Profile_by_ISD_P_AID_and_refreshFlag_set_while_proactive_session_is_ongoing_with_Terminal_Response_outstanding_catBusy_not_supported()
761{
762	if(!Card_Have_ECC_Cert)
763		return;
764	
765
766	if(!check_Applicability_of_tests_RSP_SGP23_test("C033"))
767		return;
768		
769	TestOfMEPMode = 0;	
770	initial_condition_PROFILE_OPERATIONAL1_is_Enabled(); 
771	var ISD_P_Test01 = curProfile_ISD_P_AID;
772	
773	initial_condition_PROFILE_OPERATIONAL2_is_Disabled();
774	var ISD_P_Test02 = curProfile_ISD_P_AID;
775	
776	tracenamestr = "测试目的:eUICC不支持catBusy,主动式会话进行中(未给终端响应)时,通过ISD-P AID激活profile,设置refreshFlag";
777	curDis.TraceStart(sno++,tracenamestr);
778	
779	
780	curLogicChannel = 0;
781	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
782	Ini_powerOn_eUICC_LPAe_not_activate();
783	
784	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
785	TS_MANAGE_CHANNEL_OPEN();
786	curLogicChannel = 1;
787	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
788	TS_SELECT("Select ISD",ISD_R_AID,"9000");
789	
790	
791  curLogicChannel=0;
792	curDis.TestStepStart2(stno++,"读卡器向卡片发送SMS-PP;");
793	sSendType = SendTypeByOTA.SMS;
794	KIC = MNO_SCP80_ENC_KEY;
795	KID = MNO_SCP80_AUTH_KEY;
796	KIK = MNO_SCP80_DATA_ENC_KEY;
797	
798
799	sAPDU = "80F28002024F0000";	
800	
801	SendMessageToCard_GP(sSendType,"91XX",0,MNO_TAR_PROFILE_OPERATIONAL1,"12210015",sAPDU);
802	
803	var exResPara = new ExpandedRemoteResponsePara(arrExpandedRemoteCmdObj, "9000", "00", sSendType);
804	CardSendMessageToServerExpandedRemoteCmd(exResPara);
805	
806	curLogicChannel=1;
807	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EnableProfileRequest,refreshFlag为true;");
808
809	var enableProRequest = new EnableProfileRequest();
810	enableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.isdpAid,ISD_P_Test02);
811	enableProRequest.refreshFlag = BooleanValue_BerCode_True;
812	enableProRequest.GenHexData();
813	var respData = LPAd_Transport_data_to_eUICC(enableProRequest.hexData,"91","00","91XX");
814	curStrHandle.CheckData("BF3103800100", respData, "EnableProfileResponse");
815	
816	curLogicChannel = 0;
817	curDis.TestStepStart2(stno++,"读卡器向卡片发送TerminalResponse命令;");
818	TerminalResponse("00","91XX");		
819	var ss = obj.GetState();
820	HaveReEntry91XX = false;
821	
822	curDis.TestStepStart2(stno++,"读卡器向卡片发送 Fetch命令,主动式命令refresh;");
823	FetchStr = Fetch("","9000","");
824	var CmdDetails = GetValueByTag("01",1);
825	var CmdQualifier = CmdDetails.substr(4,2);
826	CheckData("04",CmdQualifier,"the command qualifier is equal to ’04’ (UICC Reset)");//'04' = UICC Reset;
827	
828	curLogicChannel = 0;
829	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
830	Ini_powerOn_eUICC_LPAe_not_activate();
831	
832	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
833	TS_MANAGE_CHANNEL_OPEN();
834	
835	curLogicChannel = 1;
836	
837	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
838	TS_SELECT("Select ISD",ISD_R_AID,"9000");
839	
840	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
841
842	var proInfoListRequest = new ProfileInfoListRequest();
843	proInfoListRequest.GenHexData();
844	var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
845	
846
847	var proInfoListResponse = new  ProfileInfoListResponse();
848	proInfoListResponse.checkCardResDataFormat(respData);
849	
850	try
851	{
852		curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
853		curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
854		curStrHandle.CheckData(Profile_DISABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
855		
856		curStrHandle.CheckData(ICCID_OP_PROF2, proInfoListResponse.profileInfoListOk.arrOfElement[1].iccid, "ICCID");
857		curStrHandle.CheckData(ISD_P_Test02, proInfoListResponse.profileInfoListOk.arrOfElement[1].isdpAid, "ISD-P AID");
858		curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[1].profileState, "profile State");
859	}catch(e){
860		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
861	}
862	
863	curLogicChannel = 0;
864	curDis.TestStepStart2(stno++,"读卡器向卡片发送 Select命令,选择ICCID;");
865	var para1 = new SelectFileEFPara_3G("2FE2");
866	SendAPDU(para1.apdu);
867	
868	curDis.TestStepStart2(stno++,"读卡器向卡片发送read binary命令;");
869	var para1 = new ReadBinaryPara_3G("00","00","0A");
870	para1.apdu.resvalue = ICCID_OP_PROF2;
871	SendAPDU(para1.apdu);
872	
873	RecoverCard();	
874	
875}
876
877function TC_eUICC_ES10c_EnableProfile_Case4_10_Nominal_Enable_Profile_by_ISD_P_AID_and_refreshFlag_not_set_while_proactive_session_is_ongoing_with_Terminal_Response_outstanding_catBusy_not_supported()
878{
879		if(!Card_Have_ECC_Cert)
880		return;
881	
882
883	if(!check_Applicability_of_tests_RSP_SGP23_test("C033"))
884		return;
885		
886	TestOfMEPMode = 0;	
887	initial_condition_PROFILE_OPERATIONAL1_is_Enabled(); 
888	var ISD_P_Test01 = curProfile_ISD_P_AID;
889	
890	initial_condition_PROFILE_OPERATIONAL2_is_Disabled();
891	var ISD_P_Test02 = curProfile_ISD_P_AID;
892	
893	tracenamestr = "测试目的:eUICC不支持catBusy,主动式会话进行中(未给终端响应)时,通过ISD-P AID激活profile,不设置refreshFlag";
894	curDis.TraceStart(sno++,tracenamestr);
895	
896	
897	curLogicChannel = 0;
898	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
899	Ini_powerOn_eUICC_LPAe_not_activate();
900	
901	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
902	TS_MANAGE_CHANNEL_OPEN();
903	curLogicChannel = 1;
904	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
905	TS_SELECT("Select ISD",ISD_R_AID,"9000");
906	
907	
908  curLogicChannel=0;
909	curDis.TestStepStart2(stno++,"读卡器向卡片发送SMS-PP;");
910	sSendType = SendTypeByOTA.SMS;
911	KIC = MNO_SCP80_ENC_KEY;
912	KID = MNO_SCP80_AUTH_KEY;
913	KIK = MNO_SCP80_DATA_ENC_KEY;
914	
915
916	sAPDU = "80F28002024F0000";	
917	
918	SendMessageToCard_GP(sSendType,"91XX",0,MNO_TAR_PROFILE_OPERATIONAL1,"12210015",sAPDU);
919	
920	var exResPara = new ExpandedRemoteResponsePara(arrExpandedRemoteCmdObj, "9000", "00", sSendType);
921	CardSendMessageToServerExpandedRemoteCmd(exResPara);
922	
923	curLogicChannel=1;
924	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EnableProfileRequest,refreshFlag为false;");
925
926	var enableProRequest = new EnableProfileRequest();
927	enableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.isdpAid,ISD_P_Test02);
928	enableProRequest.refreshFlag = BooleanValue_BerCode_False;
929	enableProRequest.GenHexData();
930	var respData = LPAd_Transport_data_to_eUICC(enableProRequest.hexData,"91","00","91XX");
931
932	curStrHandle.CheckData("BF3103800100", respData, "EnableProfileResponse");
933	
934	curLogicChannel = 0;
935	curDis.TestStepStart2(stno++,"读卡器向卡片发送TerminalResponse命令;");
936	TerminalResponse("00","91XX");		
937	var ss = obj.GetState();
938	HaveReEntry91XX = false;
939	
940	curDis.TestStepStart2(stno++,"读卡器向卡片发送 Fetch命令,主动式命令refresh;");
941	FetchStr = Fetch("","9000","");
942	var CmdDetails = GetValueByTag("01",1);
943	var CmdQualifier = CmdDetails.substr(4,2);
944	CheckData("04",CmdQualifier,"the command qualifier is equal to ’04’ (UICC Reset)");//'04' = UICC Reset;
945	
946	curLogicChannel = 0;
947	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
948	Ini_powerOn_eUICC_LPAe_not_activate();
949	
950	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
951	TS_MANAGE_CHANNEL_OPEN();
952	
953	curLogicChannel = 1;
954	
955	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
956	TS_SELECT("Select ISD",ISD_R_AID,"9000");
957	
958	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
959
960	var proInfoListRequest = new ProfileInfoListRequest();
961	proInfoListRequest.GenHexData();
962	var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
963	
964
965	var proInfoListResponse = new  ProfileInfoListResponse();
966	proInfoListResponse.checkCardResDataFormat(respData);
967	
968	try
969	{
970		curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
971		curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
972		curStrHandle.CheckData(Profile_DISABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
973		
974		curStrHandle.CheckData(ICCID_OP_PROF2, proInfoListResponse.profileInfoListOk.arrOfElement[1].iccid, "ICCID");
975		curStrHandle.CheckData(ISD_P_Test02, proInfoListResponse.profileInfoListOk.arrOfElement[1].isdpAid, "ISD-P AID");
976		curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[1].profileState, "profile State");
977	}catch(e){
978		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
979	}
980	
981	curLogicChannel = 0;
982	curDis.TestStepStart2(stno++,"读卡器向卡片发送 Select命令,选择ICCID;");
983	var para1 = new SelectFileEFPara_3G("2FE2");
984	SendAPDU(para1.apdu);
985	
986	curDis.TestStepStart2(stno++,"读卡器向卡片发送read binary命令;");
987	var para1 = new ReadBinaryPara_3G("00","00","0A");
988	para1.apdu.resvalue = ICCID_OP_PROF2;
989	SendAPDU(para1.apdu);
990	
991	RecoverCard();
992}
993
-cas 盲生成TC_eUICC_ES10c_EnableProfile_Case4/Import/TC_eUICC_ES10c_EnableProfile_Case4.js821 行 / 65301 字符 / gb18030
1// Author: 卡思Cas智能体
2// Date: 20261005-152741
3// Function: (purpose 原文未由 SGP.23 该 TC 提供,corpus vacuum 登记)TC_eUICC_ES10c.EnableProfile_Case4,Test Sequence #01-#10 Nominal (all 10 sequences),适用性 M。
4// Test points: ICH-SEQ01-IC1-K1-C1 ATR_present;ICH-SEQ01-IC1-K2-C2 FCP_Template
5//   ICH-SEQ01-IC1-K2-C4 SW;ICH-SEQ01-IC1-K3-C4 SW;ICH-SEQ01-IC1-K4-C4 final SW
6//   ICH-SEQ01-IC2-K1-C4 SW;ICH-SEQ01-IC2-K1-C3 CHANNEL_NUMBER extracted;ICH-SEQ01-IC2-K2-C4 SW
7//   S1-C1 SW1 91;S1-C2 enableResult ok;S2-C1 proactive command envelope;IC4-IC1-K1-C1 ATR_present
8//   IC4-IC1-K2-C2 FCP_Template;IC4-IC1-K2-C4 SW;IC4-IC1-K3-C4 SW;IC4-IC1-K4-C4 final SW
9//   IC4-IC2-K1-C4 SW;IC4-IC2-K1-C3 CHANNEL_NUMBER extracted;IC4-IC2-K2-C4 SW;S4-C1 SW
10//   S4-C2 contains PROFILE_INFO1;S5-C1 SW;S6-C1 SW;S6-C2 READ_BINARY data;S7-C1 SW1 91
11//   S7-C2 enableResult ok;S8-C1 proactive command envelope;IC10-IC1-K1-C1 ATR_present
12//   IC10-IC1-K2-C2 FCP_Template;IC10-IC1-K2-C4 SW;IC10-IC1-K3-C4 SW;IC10-IC1-K4-C4 final SW
13//   IC10-IC2-K1-C4 SW;IC10-IC2-K1-C3 CHANNEL_NUMBER extracted;IC10-IC2-K2-C4 SW;S10-C1 SW
14//   S10-C2 contains PROFILE_INFO1;S11-C1 SW;S12-C1 SW;S12-C2 READ_BINARY data;S13-C1 SW1 91
15//   S13-C2 enableResult ok;S14-C1 proactive command envelope;S15-C1 SW;IC17-IC1-K2-C2 FCP_Template
16//   IC17-IC1-K2-C4 SW;IC17-IC1-K3-C4 SW;IC17-IC1-K4-C4 final SW;IC18-IC2-K1-C4 SW
17//   IC18-IC2-K1-C3 CHANNEL_NUMBER extracted;IC18-IC2-K2-C4 SW;S18-C1 SW
18//   S18-C2 contains PROFILE_INFO1;S19-C1 SW;S20-C1 SW;S20-C2 READ_BINARY data;S21-C1 SW1 91
19//   S21-C2 enableResult ok;S22-C1 proactive command envelope;S23-C1 SW;IC25-IC1-K2-C2 FCP_Template
20//   IC25-IC1-K2-C4 SW;IC25-IC1-K3-C4 SW;IC25-IC1-K4-C4 final SW;IC26-IC2-K1-C4 SW
21//   IC26-IC2-K1-C3 CHANNEL_NUMBER extracted;IC26-IC2-K2-C4 SW;S26-C1 SW
22//   S26-C2 contains PROFILE_INFO1;S27-C1 SW;S28-C1 SW;S28-C2 READ_BINARY data;S29-C1 SW
23//   S29-C2 enableResult ok;S30-C1 final SW;S31-C1 SW;S31-C2 contains PROFILE_INFO1;S32-C1 SW
24//   S33-C1 SW;S33-C2 READ_BINARY data;S34-C1 SW;S34-C2 enableResult ok;S35-C1 final SW;S36-C1 SW
25//   S36-C2 contains PROFILE_INFO1;S37-C1 SW;S38-C1 SW;S38-C2 READ_BINARY data;S39-C1 SW1 91
26//   S40-C1 SW1 91;S40-C2 enableResult ok;S41-C1 proactive command envelope
27//   IC43-IC1-K1-C1 ATR_present;IC43-IC1-K2-C2 FCP_Template;IC43-IC1-K2-C4 SW;IC43-IC1-K3-C4 SW
28//   IC43-IC1-K4-C4 final SW;IC43-IC2-K1-C4 SW;IC43-IC2-K1-C3 CHANNEL_NUMBER extracted
29//   IC43-IC2-K2-C4 SW;S43-C1 SW;S43-C2 contains PROFILE_INFO1_DISABLED
30//   S43-C3 contains PROFILE_INFO2_ENABLED;S44-C1 SW;S45-C1 SW;S45-C2 READ_BINARY data;S46-C1 SW1 91
31//   S47-C1 SW;S47-C2 enableResult ok;S48-C1 SW;S48-C2 contains PROFILE_INFO1_DISABLED
32//   S48-C3 contains PROFILE_INFO2_ENABLED;S49-C1 SW;S50-C1 SW;S50-C2 READ_BINARY data;S51-C1 SW1 91
33//   S52-C1 proactive command envelope;S53-C1 SW;S53-C2 enableResult ok;S54-C1 SW1 91
34//   S55-C1 proactive command envelope;IC57-IC1-K1-C1 ATR_present;IC57-IC1-K2-C2 FCP_Template
35//   IC57-IC1-K2-C4 SW;IC57-IC1-K3-C4 SW;IC57-IC1-K4-C4 final SW;IC57-IC2-K1-C4 SW
36//   IC57-IC2-K1-C3 CHANNEL_NUMBER extracted;IC57-IC2-K2-C4 SW;S57-C1 SW
37//   S57-C2 contains PROFILE_INFO1_DISABLED;S57-C3 contains PROFILE_INFO2_ENABLED;S58-C1 SW
38//   S59-C1 SW;S59-C2 READ_BINARY data;S60-C1 SW1 91;S61-C1 proactive command envelope;S62-C1 SW
39//   S62-C2 enableResult ok;S63-C1 SW1 != 91;S64-C1 SW;S64-C2 contains PROFILE_INFO1_DISABLED
40//   S64-C3 contains PROFILE_INFO2_ENABLED;S65-C1 SW;S66-C1 SW;S66-C2 READ_BINARY data
41// 本函数由 CaseIR 4.2.21.2.3 编译生成(fullwave-blindgen-live-70-W1-laneA2,SGP.23 v1.16 × SGP.22 v2.7):字节权威=CaseIR,非誊录黄金脚本。
42// Value-free template: every data byte is injected from CaseIR fields; no scaffold globals (see docs/speconly/compile-symbol-migration.md).
43// 适用性 M:编译期门,运行时由 harness 环境前置承担。
44function TC_eUICC_ES10c_EnableProfile_Case4_01_10_Nominal_all_10_sequences() {
45    var bind = curBind;
46    var profileAidSession = BindEs10xProcProfileDynamic.beginSession(bind, "TC_eUICC_ES10c_EnableProfile_Case4_01_10_Nominal_all_10_sequences");
47    // runtime-bound payload: ISD_P_AID1 stays in execution domain; context_lineage: {"context_id": "ccd6682ef04d74b7", "authority_reference": "E_tc_4221/468-468/G_annexB_dynamic:L51"}
48    var cardCtxLoad1 = BindCardContext.load(bind, profileAidSession, "ISD_P_AID1", {"tag":"4F","bytes":16,"range":{"minHex":"A0000005591010FFFFFFFF8900001000","maxHex":"A0000005591010FFFFFFFF8900FFFF00","lastByte":"00"}}, {token: CARD_CONTEXT_TOKEN, domainId: CARD_CONTEXT_DOMAIN});
49    // runtime-bound payload: ISD_P_AID2 stays in execution domain; context_lineage: {"context_id": "ccd6682ef04d74b7", "authority_reference": "E_tc_4221/607-607/G_annexB_dynamic:L52"}
50    var cardCtxLoad2 = BindCardContext.load(bind, profileAidSession, "ISD_P_AID2", {"tag":"4F","bytes":16,"range":{"minHex":"A0000005591010FFFFFFFF8900001000","maxHex":"A0000005591010FFFFFFFF8900FFFF00","lastByte":"00"}}, {token: CARD_CONTEXT_TOKEN, domainId: CARD_CONTEXT_DOMAIN});
51    // TC-GEN-1 eUICC: The PROFILE_OPERATIONAL1 has been installed on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
52    // SEQ01-IC-T1 eUICC: The PROFILE_OPERATIONAL1 is Disabled on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
53    // SEQ01-IC-T2 eUICC: The PROFILE_OPERATIONAL1 corresponds to <ISD_P_AID1>.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
54    // SEQ02-IC-T1 eUICC: The PROFILE_OPERATIONAL1 is Disabled on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
55    // SEQ02-IC1 PROC_EUICC_INITIALIZATION_SEQUENCE: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
56    // SEQ02-IC2 PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
57    // SEQ03-IC-T1 eUICC: The PROFILE_OPERATIONAL1 is Disabled on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
58    // SEQ03-IC-T2 eUICC: The PROFILE_OPERATIONAL1 corresponds to <ISD_P_AID1>.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
59    // SEQ03-IC1 PROC_EUICC_INITIALIZATION_SEQUENCE_eUICCProfileStateChanged: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
60    // SEQ03-IC2 PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
61    // SEQ04-IC-T1 eUICC: The PROFILE_OPERATIONAL1 is Disabled on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
62    // SEQ04-IC1 PROC_EUICC_INITIALIZATION_SEQUENCE_eUICCProfileStateChanged: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
63    // SEQ04-IC2 PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
64    // SEQ05-IC-T1 eUICC: The PROFILE_OPERATIONAL1 is Disabled on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
65    // SEQ05-IC-T2 eUICC: The PROFILE_OPERATIONAL1 corresponds to <ISD_P_AID1>.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
66    // SEQ05-IC1 PROC_EUICC_INITIALIZATION_SEQUENCE: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
67    // SEQ05-IC2 PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
68    // SEQ06-IC-T1 eUICC: The PROFILE_OPERATIONAL1 is Disabled on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
69    // SEQ06-IC1 PROC_EUICC_INITIALIZATION_SEQUENCE: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
70    // SEQ06-IC2 PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
71    // SEQ07-IC-T1 eUICC: The PROFILE_OPERATIONAL1 is Enabled on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
72    // SEQ07-IC-T2 eUICC: The PROFILE_OPERATIONAL2 has been installed on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
73    // SEQ07-IC-T3 eUICC: The PROFILE_OPERATIONAL2 is Disabled on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
74    // SEQ07-IC-T4 eUICC: The PROFILE_OPERATIONAL2 corresponds to <ISD_P_AID2>.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
75    // SEQ07-IC1 PROC_EUICC_INITIALIZATION_SEQUENCE: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
76    // SEQ07-IC2 PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
77    // SEQ07-IC4 Do not send FETCH command: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
78    // SEQ08-IC-T1 eUICC: The PROFILE_OPERATIONAL1 is Enabled on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
79    // SEQ08-IC-T2 eUICC: The PROFILE_OPERATIONAL2 has been installed on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
80    // SEQ08-IC-T3 eUICC: The PROFILE_OPERATIONAL2 is Disabled on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
81    // SEQ08-IC-T4 eUICC: The PROFILE_OPERATIONAL2 corresponds to <ISD_P_AID2>.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
82    // SEQ08-IC1 PROC_EUICC_INITIALIZATION_SEQUENCE: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
83    // SEQ08-IC2 PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
84    // SEQ08-IC4 Do not send FETCH command: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
85    // SEQ09-IC-T1 eUICC: The PROFILE_OPERATIONAL1 is Enabled on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
86    // SEQ09-IC-T2 eUICC: The PROFILE_OPERATIONAL2 has been installed on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
87    // SEQ09-IC-T3 eUICC: The PROFILE_OPERATIONAL2 is Disabled on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
88    // SEQ09-IC-T4 eUICC: The PROFILE_OPERATIONAL2 corresponds to <ISD_P_AID2>.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
89    // SEQ09-IC1 PROC_EUICC_INITIALIZATION_SEQUENCE: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
90    // SEQ09-IC2 PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
91    // SEQ10-IC-T1 eUICC: The PROFILE_OPERATIONAL1 is Enabled on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
92    // SEQ10-IC-T2 eUICC: The PROFILE_OPERATIONAL2 has been installed on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
93    // SEQ10-IC-T3 eUICC: The PROFILE_OPERATIONAL2 is Disabled on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
94    // SEQ10-IC-T4 eUICC: The PROFILE_OPERATIONAL2 corresponds to <ISD_P_AID2>.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
95    // SEQ10-IC1 PROC_EUICC_INITIALIZATION_SEQUENCE: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
96    // SEQ10-IC2 PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
97    // PREFLIGHT_CONTEXT AUTHORIZED_DISCOVERY: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
98
99    // IC head inline (initial_conditions → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
100    var s68 = bind.resetAndAtr();
101    bind.checkData("ICH-SEQ01-IC1-K1-C1 ATR_present", "1", s68.atr_hex !== "" ? "1" : "0");
102
103    // IC head inline (initial_conditions → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
104    // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
105    var s69 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
106    bind.checkData("ICH-SEQ01-IC1-K2-C2 FCP_Template", "1", s69.resp.length > 0 ? "1" : "0");
107    bind.checkData("ICH-SEQ01-IC1-K2-C4 SW", "9000", s69.sw);
108
109    // IC head inline (initial_conditions → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
110    var s70 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
111    bind.checkData("ICH-SEQ01-IC1-K3-C4 SW", "9000", s70.sw);
112
113    // IC head inline (initial_conditions → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
114    var steady71 = bind.runToSteadyState(function () {
115        return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
116    });
117    bind.checkData("ICH-SEQ01-IC1-K4-C4 final SW", "9000", steady71.final.sw);
118
119    // IC head inline (initial_conditions → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
120    // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
121    var s72 = bind.manageChannelOpen("9000");
122    bind.checkData("ICH-SEQ01-IC2-K1-C4 SW", "9000", s72.sw);
123    bind.checkData("ICH-SEQ01-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s72.chan !== null ? "1" : "0");
124
125    // IC head inline (initial_conditions → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
126    // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
127    var s73 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
128    // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
129    bind.checkData("ICH-SEQ01-IC2-K2-C4 SW", "9000", s73.sw);
130
131    // 步骤 1:MTD_STORE_DATA(tc_step)
132    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
133    var s1 = bind.sendApdu("81", "E2", "91", "00", "BF2D035C014F", "00", "9000");
134
135    // 步骤 2:SEQ01-1] MTD_STORE_DATA(tc_step;REQ: RQ24_010, RQ32_011, RQ32_016_1, RQ32_016_2, RQ57_128, RQ57_129, RQ57_133_3, RQ57_136, RQ57_137)
136    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
137    var sdCla2 = s72.chan !== null ? (s72.chan <= 3 ? 128 + s72.chan : 188 + s72.chan).toString(16).toUpperCase() : null;
138    // runtime-bound payload: ISD_P_AID1 stays in execution domain
139    var s2 = bind.sendApdu(sdCla2, "E2", "91", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID1", "BF31154F10", "0101FF", profileAidSession), "00", null);
140    BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID1", s2.cmd, profileAidSession);
141    bind.checkData("S1-C1 SW1 91", "91", s2.sw.substring(0, 2));
142    var r2w2 = BindGecaProc.parseGecaResponse(s2.resp, {outer: "BF31", required: ["80"]});
143    bind.checkData("S1-C2 enableResult ok", "00", (r2w2.ok && r2w2.fields["80"] === "00") ? "00" : (r2w2.fields["80"] || "absent"));
144
145    // 步骤 3:SEQ01-2] FETCH 'XX'(tc_step;REQ: RQ32_016_3, RQ32_017, RQ57_134)
146    // FETCH header literals follow the golden wire evidence 8012 (same
147    // anchor as runToSteadyState; J Annex D.4 has no FETCH row, D 2.2.2
148    // gives mechanism only). Le = pending length from the last 91XX
149    // (chain rule, binding-internal state).
150    var s3 = bind.fetchPending("80", "12", "00", "00", null);
151    bind.checkData("S2-C1 proactive command envelope", "1", (s3.resp.length >= 4 && s3.resp.substring(0, 2) === "D0") ? "1" : "0");
152    // S2-C1: REFRESH type/mode bytes are not corpus-fixed (envelope face only; per-mode bytes absent from input).
153    // S3:主动会话协议闭合(TS 102 223 §6.3:主动命令必须 TR 应答;
154    // UICC Reset 变体 E 表无 TR 行属编辑省略,golden U3 线证同构)。
155    var s3tr = bind.terminalResponseForPending("80", "14", "00", "00", "9000");
156
157    // IC ref inline @E 步骤 4(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
158    var s74 = bind.resetAndAtr();
159    bind.checkData("IC4-IC1-K1-C1 ATR_present", "1", s74.atr_hex !== "" ? "1" : "0");
160
161    // IC ref inline @E 步骤 4(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
162    // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
163    var s75 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
164    bind.checkData("IC4-IC1-K2-C2 FCP_Template", "1", s75.resp.length > 0 ? "1" : "0");
165    bind.checkData("IC4-IC1-K2-C4 SW", "9000", s75.sw);
166
167    // IC ref inline @E 步骤 4(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
168    var s76 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
169    bind.checkData("IC4-IC1-K3-C4 SW", "9000", s76.sw);
170
171    // IC ref inline @E 步骤 4(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
172    var steady77 = bind.runToSteadyState(function () {
173        return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
174    });
175    bind.checkData("IC4-IC1-K4-C4 final SW", "9000", steady77.final.sw);
176
177    // IC ref inline @E 步骤 4(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
178    // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
179    var s78 = bind.manageChannelOpen("9000");
180    bind.checkData("IC4-IC2-K1-C4 SW", "9000", s78.sw);
181    bind.checkData("IC4-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s78.chan !== null ? "1" : "0");
182
183    // IC ref inline @E 步骤 4(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
184    // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
185    var s79 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
186    // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
187    bind.checkData("IC4-IC2-K2-C4 SW", "9000", s79.sw);
188
189    // 步骤 5:SEQ01-4] MTD_STORE_DATA(tc_step;REQ: RQ24_010, RQ32_011, RQ32_016_1, RQ32_016_2, RQ57_128, RQ57_129, RQ57_133_3, RQ57_136, RQ57_137)
190    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
191    var sdCla5 = s78.chan !== null ? (s78.chan <= 3 ? 128 + s78.chan : 188 + s78.chan).toString(16).toUpperCase() : null;
192    // runtime-bound payload: ISD_P_AID1 stays in execution domain
193    var s5 = bind.sendApdu(sdCla5, "E2", "91", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID1", "BF2D16A0124F10", "", profileAidSession), "00", "9000");
194    bind.checkData("S4-C1 SW", "9000", s5.sw);
195    BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID1", s5.cmd, profileAidSession);
196    var r2p5 = BindEs10xProcProfile.walkChoiceList(s5.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
197    var r2has5_0 = false;
198    for (var r2i5_0 = 0; r2i5_0 < r2p5.elements.length; r2i5_0++) {
199        var f = r2p5.elements[r2i5_0].fields;
200        if (f["5A"] === "989209012143658709F5" && f["9F70"] === "01") { r2has5_0 = true; break; }
201    }
202    bind.checkData("S4-C2 contains PROFILE_INFO1", "1", (r2p5.branch_tag === "A0" && r2has5_0) ? "1" : "0");
203
204    // 步骤 6:SEQ01-5] [SELECT_ICCID(tc_step)
205    var s6 = bind.sendApdu("00", "A4", "00", "0C", "2FE2", null, "9000");
206    bind.checkData("S5-C1 SW", "9000", s6.sw);
207
208    // 步骤 7:SEQ01-6] [READ_BINARY] with <L>=0x0A(tc_step;REQ: RQ34_015)
209    var s7 = bind.sendApdu("00", "B0", "00", "00", null, "0A", "9000");
210    bind.checkData("S6-C1 SW", "9000", s7.sw);
211    bind.checkData("S6-C2 READ_BINARY data", "989209012143658709F5", s7.resp);
212
213    // 步骤 8:SEQ02-1] MTD_STORE_DATA(tc_step;REQ: RQ32_011, RQ32_016_1, RQ32_016_2, RQ57_128, RQ57_129, RQ57_133_3, RQ57_136, RQ57_137)
214    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
215    var sdCla8 = s78.chan !== null ? (s78.chan <= 3 ? 128 + s78.chan : 188 + s78.chan).toString(16).toUpperCase() : null;
216    var s8 = bind.sendApdu(sdCla8, "E2", "91", "00", "BF310F5A0A989209012143658709F50101FF", "00", null);
217    bind.checkData("S7-C1 SW1 91", "91", s8.sw.substring(0, 2));
218    var r2w8 = BindGecaProc.parseGecaResponse(s8.resp, {outer: "BF31", required: ["80"]});
219    bind.checkData("S7-C2 enableResult ok", "00", (r2w8.ok && r2w8.fields["80"] === "00") ? "00" : (r2w8.fields["80"] || "absent"));
220
221    // 步骤 9:SEQ02-2] FETCH 'XX'(tc_step;REQ: RQ32_016_3, RQ32_017, RQ57_134)
222    // FETCH header literals follow the golden wire evidence 8012 (same
223    // anchor as runToSteadyState; J Annex D.4 has no FETCH row, D 2.2.2
224    // gives mechanism only). Le = pending length from the last 91XX
225    // (chain rule, binding-internal state).
226    var s9 = bind.fetchPending("80", "12", "00", "00", null);
227    bind.checkData("S8-C1 proactive command envelope", "1", (s9.resp.length >= 4 && s9.resp.substring(0, 2) === "D0") ? "1" : "0");
228    // S8-C1: REFRESH type/mode bytes are not corpus-fixed (envelope face only; per-mode bytes absent from input).
229    // S9:主动会话协议闭合(TS 102 223 §6.3:主动命令必须 TR 应答;
230    // UICC Reset 变体 E 表无 TR 行属编辑省略,golden U3 线证同构)。
231    var s9tr = bind.terminalResponseForPending("80", "14", "00", "00", "9000");
232
233    // IC ref inline @E 步骤 10(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
234    var s80 = bind.resetAndAtr();
235    bind.checkData("IC10-IC1-K1-C1 ATR_present", "1", s80.atr_hex !== "" ? "1" : "0");
236
237    // IC ref inline @E 步骤 10(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
238    // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
239    var s81 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
240    bind.checkData("IC10-IC1-K2-C2 FCP_Template", "1", s81.resp.length > 0 ? "1" : "0");
241    bind.checkData("IC10-IC1-K2-C4 SW", "9000", s81.sw);
242
243    // IC ref inline @E 步骤 10(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
244    var s82 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
245    bind.checkData("IC10-IC1-K3-C4 SW", "9000", s82.sw);
246
247    // IC ref inline @E 步骤 10(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
248    var steady83 = bind.runToSteadyState(function () {
249        return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
250    });
251    bind.checkData("IC10-IC1-K4-C4 final SW", "9000", steady83.final.sw);
252
253    // IC ref inline @E 步骤 10(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
254    // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
255    var s84 = bind.manageChannelOpen("9000");
256    bind.checkData("IC10-IC2-K1-C4 SW", "9000", s84.sw);
257    bind.checkData("IC10-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s84.chan !== null ? "1" : "0");
258
259    // IC ref inline @E 步骤 10(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
260    // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
261    var s85 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
262    // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
263    bind.checkData("IC10-IC2-K2-C4 SW", "9000", s85.sw);
264
265    // 步骤 11:SEQ02-4] MTD_STORE_DATA(tc_step;REQ: RQ32_011, RQ32_016_1, RQ32_016_2, RQ57_128, RQ57_129, RQ57_133_3, RQ57_136, RQ57_137)
266    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
267    var sdCla11 = s84.chan !== null ? (s84.chan <= 3 ? 128 + s84.chan : 188 + s84.chan).toString(16).toUpperCase() : null;
268    var s11 = bind.sendApdu(sdCla11, "E2", "91", "00", "BF2D0EA00C5A0A989209012143658709F5", "00", "9000");
269    bind.checkData("S10-C1 SW", "9000", s11.sw);
270    var r2p11 = BindEs10xProcProfile.walkChoiceList(s11.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
271    var r2has11_0 = false;
272    for (var r2i11_0 = 0; r2i11_0 < r2p11.elements.length; r2i11_0++) {
273        var f = r2p11.elements[r2i11_0].fields;
274        if (f["5A"] === "989209012143658709F5" && f["9F70"] === "01") { r2has11_0 = true; break; }
275    }
276    bind.checkData("S10-C2 contains PROFILE_INFO1", "1", (r2p11.branch_tag === "A0" && r2has11_0) ? "1" : "0");
277
278    // 步骤 12:SEQ02-5] [SELECT_ICCID(tc_step)
279    var s12 = bind.sendApdu("00", "A4", "00", "0C", "2FE2", null, "9000");
280    bind.checkData("S11-C1 SW", "9000", s12.sw);
281
282    // 步骤 13:SEQ02-6] [READ_BINARY] with <L>=0x0A(tc_step;REQ: RQ34_015)
283    var s13 = bind.sendApdu("00", "B0", "00", "00", null, "0A", "9000");
284    bind.checkData("S12-C1 SW", "9000", s13.sw);
285    bind.checkData("S12-C2 READ_BINARY data", "989209012143658709F5", s13.resp);
286
287    // 步骤 14:SEQ03-1] MTD_STORE_DATA(tc_step;REQ: RQ24_010, RQ32_011, RQ32_016_1, RQ32_016_2, RQ57_128, RQ57_129, RQ57_133_3, RQ57_136, RQ57_137)
288    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
289    var sdCla14 = s84.chan !== null ? (s84.chan <= 3 ? 128 + s84.chan : 188 + s84.chan).toString(16).toUpperCase() : null;
290    // runtime-bound payload: ISD_P_AID1 stays in execution domain
291    var s14 = bind.sendApdu(sdCla14, "E2", "91", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID1", "BF31154F10", "0101FF", profileAidSession), "00", null);
292    BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID1", s14.cmd, profileAidSession);
293    bind.checkData("S13-C1 SW1 91", "91", s14.sw.substring(0, 2));
294    var r2w14 = BindGecaProc.parseGecaResponse(s14.resp, {outer: "BF31", required: ["80"]});
295    bind.checkData("S13-C2 enableResult ok", "00", (r2w14.ok && r2w14.fields["80"] === "00") ? "00" : (r2w14.fields["80"] || "absent"));
296
297    // 步骤 15:SEQ03-2] FETCH 'XX'(tc_step;REQ: RQ32_016_3, RQ32_017, RQ57_134)
298    // FETCH header literals follow the golden wire evidence 8012 (same
299    // anchor as runToSteadyState; J Annex D.4 has no FETCH row, D 2.2.2
300    // gives mechanism only). Le = pending length from the last 91XX
301    // (chain rule, binding-internal state).
302    var s15 = bind.fetchPending("80", "12", "00", "00", null);
303    bind.checkData("S14-C1 proactive command envelope", "1", (s15.resp.length >= 4 && s15.resp.substring(0, 2) === "D0") ? "1" : "0");
304    // S14-C1: REFRESH type/mode bytes are not corpus-fixed (envelope face only; per-mode bytes absent from input).
305
306    // 步骤 16:SEQ03-3] TERMINAL RESPONSE(tc_step)
307    // TERMINAL RESPONSE data is dynamically built by the binding from the
308    // last FETCHed proactive command (D 2.2.2; buildTrData) - never static.
309    // Header literals follow the golden wire evidence 8014.
310    var s16 = bind.terminalResponseForPending("80", "14", "00", "00", "9000");
311    bind.checkData("S15-C1 SW", "9000", s16.sw);
312
313    // IC ref inline @E 步骤 17(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE_eUICCProfileStateChanged, K row 2):SELECT_MF(K 语料机械展开)
314    // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
315    var s86 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
316    bind.checkData("IC17-IC1-K2-C2 FCP_Template", "1", s86.resp.length > 0 ? "1" : "0");
317    bind.checkData("IC17-IC1-K2-C4 SW", "9000", s86.sw);
318
319    // IC ref inline @E 步骤 17(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE_eUICCProfileStateChanged, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
320    var s87 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
321    bind.checkData("IC17-IC1-K3-C4 SW", "9000", s87.sw);
322
323    // IC ref inline @E 步骤 17(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE_eUICCProfileStateChanged, K row 4):TERMINAL_PROFILE_eUICCProfileStateChanged(K 语料机械展开)
324    var steady88 = bind.runToSteadyState(function () {
325        return bind.sendTerminalProfile("FFFFFFFFFFFF1FFFFF0302FFFF9FFFEFDFFF0FFF0FFFFF0FFF03003F7FFF03FFFF20", "9000");
326    });
327    bind.checkData("IC17-IC1-K4-C4 final SW", "9000", steady88.final.sw);
328
329    // IC ref inline @E 步骤 18(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
330    // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
331    var s89 = bind.manageChannelOpen("9000");
332    bind.checkData("IC18-IC2-K1-C4 SW", "9000", s89.sw);
333    bind.checkData("IC18-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s89.chan !== null ? "1" : "0");
334
335    // IC ref inline @E 步骤 18(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
336    // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
337    var s90 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
338    // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
339    bind.checkData("IC18-IC2-K2-C4 SW", "9000", s90.sw);
340
341    // 步骤 19:SEQ03-6] MTD_STORE_DATA(tc_step;REQ: RQ24_010, RQ32_011, RQ32_016_1, RQ32_016_2, RQ57_128, RQ57_129, RQ57_133_3, RQ57_136, RQ57_137)
342    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
343    var sdCla19 = s89.chan !== null ? (s89.chan <= 3 ? 128 + s89.chan : 188 + s89.chan).toString(16).toUpperCase() : null;
344    // runtime-bound payload: ISD_P_AID1 stays in execution domain
345    var s19 = bind.sendApdu(sdCla19, "E2", "91", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID1", "BF2D16A0124F10", "", profileAidSession), "00", "9000");
346    bind.checkData("S18-C1 SW", "9000", s19.sw);
347    BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID1", s19.cmd, profileAidSession);
348    var r2p19 = BindEs10xProcProfile.walkChoiceList(s19.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
349    var r2has19_0 = false;
350    for (var r2i19_0 = 0; r2i19_0 < r2p19.elements.length; r2i19_0++) {
351        var f = r2p19.elements[r2i19_0].fields;
352        if (f["5A"] === "989209012143658709F5" && f["9F70"] === "01") { r2has19_0 = true; break; }
353    }
354    bind.checkData("S18-C2 contains PROFILE_INFO1", "1", (r2p19.branch_tag === "A0" && r2has19_0) ? "1" : "0");
355
356    // 步骤 20:SEQ03-7] [SELECT_ICCID(tc_step)
357    var s20 = bind.sendApdu("00", "A4", "00", "0C", "2FE2", null, "9000");
358    bind.checkData("S19-C1 SW", "9000", s20.sw);
359
360    // 步骤 21:SEQ03-8] [READ_BINARY] with <L>=0x0A(tc_step;REQ: RQ34_015)
361    var s21 = bind.sendApdu("00", "B0", "00", "00", null, "0A", "9000");
362    bind.checkData("S20-C1 SW", "9000", s21.sw);
363    bind.checkData("S20-C2 READ_BINARY data", "989209012143658709F5", s21.resp);
364
365    // 步骤 22:SEQ04-1] MTD_STORE_DATA(tc_step;REQ: RQ32_011, RQ32_016_1, RQ32_016_2, RQ57_128, RQ57_129, RQ57_133_3, RQ57_136, RQ57_137)
366    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
367    var sdCla22 = s89.chan !== null ? (s89.chan <= 3 ? 128 + s89.chan : 188 + s89.chan).toString(16).toUpperCase() : null;
368    var s22 = bind.sendApdu(sdCla22, "E2", "91", "00", "BF310F5A0A989209012143658709F50101FF", "00", null);
369    bind.checkData("S21-C1 SW1 91", "91", s22.sw.substring(0, 2));
370    var r2w22 = BindGecaProc.parseGecaResponse(s22.resp, {outer: "BF31", required: ["80"]});
371    bind.checkData("S21-C2 enableResult ok", "00", (r2w22.ok && r2w22.fields["80"] === "00") ? "00" : (r2w22.fields["80"] || "absent"));
372
373    // 步骤 23:SEQ04-2] FETCH 'XX'(tc_step;REQ: RQ32_016_3, RQ32_017, RQ57_134)
374    // FETCH header literals follow the golden wire evidence 8012 (same
375    // anchor as runToSteadyState; J Annex D.4 has no FETCH row, D 2.2.2
376    // gives mechanism only). Le = pending length from the last 91XX
377    // (chain rule, binding-internal state).
378    var s23 = bind.fetchPending("80", "12", "00", "00", null);
379    bind.checkData("S22-C1 proactive command envelope", "1", (s23.resp.length >= 4 && s23.resp.substring(0, 2) === "D0") ? "1" : "0");
380    // S22-C1: REFRESH type/mode bytes are not corpus-fixed (envelope face only; per-mode bytes absent from input).
381
382    // 步骤 24:SEQ04-3] TERMINAL RESPONSE(tc_step)
383    // TERMINAL RESPONSE data is dynamically built by the binding from the
384    // last FETCHed proactive command (D 2.2.2; buildTrData) - never static.
385    // Header literals follow the golden wire evidence 8014.
386    var s24 = bind.terminalResponseForPending("80", "14", "00", "00", "9000");
387    bind.checkData("S23-C1 SW", "9000", s24.sw);
388
389    // IC ref inline @E 步骤 25(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE_eUICCProfileStateChanged, K row 2):SELECT_MF(K 语料机械展开)
390    // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
391    var s91 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
392    bind.checkData("IC25-IC1-K2-C2 FCP_Template", "1", s91.resp.length > 0 ? "1" : "0");
393    bind.checkData("IC25-IC1-K2-C4 SW", "9000", s91.sw);
394
395    // IC ref inline @E 步骤 25(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE_eUICCProfileStateChanged, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
396    var s92 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
397    bind.checkData("IC25-IC1-K3-C4 SW", "9000", s92.sw);
398
399    // IC ref inline @E 步骤 25(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE_eUICCProfileStateChanged, K row 4):TERMINAL_PROFILE_eUICCProfileStateChanged(K 语料机械展开)
400    var steady93 = bind.runToSteadyState(function () {
401        return bind.sendTerminalProfile("FFFFFFFFFFFF1FFFFF0302FFFF9FFFEFDFFF0FFF0FFFFF0FFF03003F7FFF03FFFF20", "9000");
402    });
403    bind.checkData("IC25-IC1-K4-C4 final SW", "9000", steady93.final.sw);
404
405    // IC ref inline @E 步骤 26(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
406    // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
407    var s94 = bind.manageChannelOpen("9000");
408    bind.checkData("IC26-IC2-K1-C4 SW", "9000", s94.sw);
409    bind.checkData("IC26-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s94.chan !== null ? "1" : "0");
410
411    // IC ref inline @E 步骤 26(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
412    // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
413    var s95 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
414    // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
415    bind.checkData("IC26-IC2-K2-C4 SW", "9000", s95.sw);
416
417    // 步骤 27:SEQ04-6] MTD_STORE_DATA(tc_step;REQ: RQ32_011, RQ32_016_1, RQ32_016_2, RQ57_128, RQ57_129, RQ57_133_3, RQ57_136, RQ57_137)
418    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
419    var sdCla27 = s94.chan !== null ? (s94.chan <= 3 ? 128 + s94.chan : 188 + s94.chan).toString(16).toUpperCase() : null;
420    var s27 = bind.sendApdu(sdCla27, "E2", "91", "00", "BF2D0EA00C5A0A989209012143658709F5", "00", "9000");
421    bind.checkData("S26-C1 SW", "9000", s27.sw);
422    var r2p27 = BindEs10xProcProfile.walkChoiceList(s27.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
423    var r2has27_0 = false;
424    for (var r2i27_0 = 0; r2i27_0 < r2p27.elements.length; r2i27_0++) {
425        var f = r2p27.elements[r2i27_0].fields;
426        if (f["5A"] === "989209012143658709F5" && f["9F70"] === "01") { r2has27_0 = true; break; }
427    }
428    bind.checkData("S26-C2 contains PROFILE_INFO1", "1", (r2p27.branch_tag === "A0" && r2has27_0) ? "1" : "0");
429
430    // 步骤 28:SEQ04-7] [SELECT_ICCID(tc_step)
431    var s28 = bind.sendApdu("00", "A4", "00", "0C", "2FE2", null, "9000");
432    bind.checkData("S27-C1 SW", "9000", s28.sw);
433
434    // 步骤 29:SEQ04-8] [READ_BINARY] with <L>=0x0A(tc_step;REQ: RQ34_015)
435    var s29 = bind.sendApdu("00", "B0", "00", "00", null, "0A", "9000");
436    bind.checkData("S28-C1 SW", "9000", s29.sw);
437    bind.checkData("S28-C2 READ_BINARY data", "989209012143658709F5", s29.resp);
438
439    // 步骤 30:SEQ05-1] MTD_STORE_DATA(tc_step;REQ: RQ32_011, RQ32_017_1, RQ32_017_2, RQ57_128, RQ57_129, RQ57_132, RQ57_136, RQ57_137, RQ57_132_1, RQ24_010)
440    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
441    var sdCla30 = s94.chan !== null ? (s94.chan <= 3 ? 128 + s94.chan : 188 + s94.chan).toString(16).toUpperCase() : null;
442    // runtime-bound payload: ISD_P_AID1 stays in execution domain
443    var s30 = bind.sendApdu(sdCla30, "E2", "91", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID1", "BF31154F10", "010100", profileAidSession), "00", "9000");
444    bind.checkData("S29-C1 SW", "9000", s30.sw);
445    BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID1", s30.cmd, profileAidSession);
446    var r2w30 = BindGecaProc.parseGecaResponse(s30.resp, {outer: "BF31", required: ["80"]});
447    bind.checkData("S29-C2 enableResult ok", "00", (r2w30.ok && r2w30.fields["80"] === "00") ? "00" : (r2w30.fields["80"] || "absent"));
448
449    // 步骤 31:SEQ05-2] [TERMINAL_PROFILE(tc_step;REQ: RQ32_018_1, RQ57_135_4)
450    var steady31 = bind.runToSteadyState(function () {
451        return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
452    });
453    bind.checkData("S30-C1 final SW", "9000", steady31.final.sw);
454
455    // 步骤 32:SEQ05-3] MTD_STORE_DATA(tc_step;REQ: RQ32_011, RQ32_017_1, RQ32_017_2, RQ57_128, RQ57_129, RQ57_132, RQ57_136, RQ57_137, RQ57_132_1, RQ24_010)
456    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
457    var sdCla32 = s94.chan !== null ? (s94.chan <= 3 ? 128 + s94.chan : 188 + s94.chan).toString(16).toUpperCase() : null;
458    // runtime-bound payload: ISD_P_AID1 stays in execution domain
459    var s32 = bind.sendApdu(sdCla32, "E2", "91", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID1", "BF2D16A0124F10", "", profileAidSession), "00", "9000");
460    bind.checkData("S31-C1 SW", "9000", s32.sw);
461    BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID1", s32.cmd, profileAidSession);
462    var r2p32 = BindEs10xProcProfile.walkChoiceList(s32.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
463    var r2has32_0 = false;
464    for (var r2i32_0 = 0; r2i32_0 < r2p32.elements.length; r2i32_0++) {
465        var f = r2p32.elements[r2i32_0].fields;
466        if (f["5A"] === "989209012143658709F5" && f["9F70"] === "01") { r2has32_0 = true; break; }
467    }
468    bind.checkData("S31-C2 contains PROFILE_INFO1", "1", (r2p32.branch_tag === "A0" && r2has32_0) ? "1" : "0");
469
470    // 步骤 33:SEQ05-4] [SELECT_ICCID(tc_step)
471    var s33 = bind.sendApdu("00", "A4", "00", "0C", "2FE2", null, "9000");
472    bind.checkData("S32-C1 SW", "9000", s33.sw);
473
474    // 步骤 34:SEQ05-5] [READ_BINARY] with <L>=0x0A(tc_step;REQ: RQ34_015)
475    var s34 = bind.sendApdu("00", "B0", "00", "00", null, "0A", "9000");
476    bind.checkData("S33-C1 SW", "9000", s34.sw);
477    bind.checkData("S33-C2 READ_BINARY data", "989209012143658709F5", s34.resp);
478
479    // 步骤 35:SEQ06-1] MTD_STORE_DATA(tc_step;REQ: RQ32_011, RQ32_017_1, RQ32_017_2, RQ57_128, RQ57_129, RQ57_132, RQ57_136, RQ57_137, RQ57_132_1)
480    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
481    var sdCla35 = s94.chan !== null ? (s94.chan <= 3 ? 128 + s94.chan : 188 + s94.chan).toString(16).toUpperCase() : null;
482    var s35 = bind.sendApdu(sdCla35, "E2", "91", "00", "BF310F5A0A989209012143658709F5010100", "00", "9000");
483    bind.checkData("S34-C1 SW", "9000", s35.sw);
484    var r2w35 = BindGecaProc.parseGecaResponse(s35.resp, {outer: "BF31", required: ["80"]});
485    bind.checkData("S34-C2 enableResult ok", "00", (r2w35.ok && r2w35.fields["80"] === "00") ? "00" : (r2w35.fields["80"] || "absent"));
486
487    // 步骤 36:SEQ06-2] [TERMINAL_PROFILE(tc_step;REQ: RQ32_018_1, RQ57_135_4)
488    var steady36 = bind.runToSteadyState(function () {
489        return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
490    });
491    bind.checkData("S35-C1 final SW", "9000", steady36.final.sw);
492
493    // 步骤 37:SEQ06-3] MTD_STORE_DATA(tc_step;REQ: RQ32_011, RQ32_017_1, RQ32_017_2, RQ57_128, RQ57_129, RQ57_132, RQ57_136, RQ57_137, RQ57_132_1)
494    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
495    var sdCla37 = s94.chan !== null ? (s94.chan <= 3 ? 128 + s94.chan : 188 + s94.chan).toString(16).toUpperCase() : null;
496    var s37 = bind.sendApdu(sdCla37, "E2", "91", "00", "BF2D0EA00C5A0A989209012143658709F5", "00", "9000");
497    bind.checkData("S36-C1 SW", "9000", s37.sw);
498    var r2p37 = BindEs10xProcProfile.walkChoiceList(s37.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
499    var r2has37_0 = false;
500    for (var r2i37_0 = 0; r2i37_0 < r2p37.elements.length; r2i37_0++) {
501        var f = r2p37.elements[r2i37_0].fields;
502        if (f["5A"] === "989209012143658709F5" && f["9F70"] === "01") { r2has37_0 = true; break; }
503    }
504    bind.checkData("S36-C2 contains PROFILE_INFO1", "1", (r2p37.branch_tag === "A0" && r2has37_0) ? "1" : "0");
505
506    // 步骤 38:SEQ06-4] [SELECT_ICCID(tc_step)
507    var s38 = bind.sendApdu("00", "A4", "00", "0C", "2FE2", null, "9000");
508    bind.checkData("S37-C1 SW", "9000", s38.sw);
509
510    // 步骤 39:SEQ06-5] [READ_BINARY] with <L>=0x0A(tc_step;REQ: RQ34_015)
511    var s39 = bind.sendApdu("00", "B0", "00", "00", null, "0A", "9000");
512    bind.checkData("S38-C1 SW", "9000", s39.sw);
513    bind.checkData("S38-C2 READ_BINARY data", "989209012143658709F5", s39.resp);
514
515    // 步骤 40:SEQ07-IC3] MTD_SEND_SMS_PP(tc_step)
516    // MTD_SEND_SMS_PP ENVELOPE (H Annex C.1 表1238 Details: 80 C2 00 00 <L>): SCP80-packed SMS-PP body is runtime-domain
517    // (<MNO_SCP80_COUNTER>/<CC>/<C_APDUS_SCRIPT>) — no bytes fabricated; the embedded STORE DATA
518    // script executes via the proactive FETCH / TERMINAL RESPONSE chain, not in this response.
519    var s40 = bind.sendApdu("80", "C2", "00", "00", null, null, null);
520    bind.checkData("S39-C1 SW1 91", "91", s40.sw.substring(0, 2));
521
522    // 步骤 41:SEQ07-1] MTD_STORE_DATA(tc_step;REQ: RQ32_011)
523    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
524    var sdCla41 = s94.chan !== null ? (s94.chan <= 3 ? 128 + s94.chan : 188 + s94.chan).toString(16).toUpperCase() : null;
525    // runtime-bound payload: ISD_P_AID2 stays in execution domain
526    var s41 = bind.sendApdu(sdCla41, "E2", "91", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID2", "BF31154F10", "0101FF", profileAidSession), "00", null);
527    BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID2", s41.cmd, profileAidSession);
528    bind.checkData("S40-C1 SW1 91", "91", s41.sw.substring(0, 2));
529    var r2w41 = BindGecaProc.parseGecaResponse(s41.resp, {outer: "BF31", required: ["80"]});
530    bind.checkData("S40-C2 enableResult ok", "00", (r2w41.ok && r2w41.fields["80"] === "00") ? "00" : (r2w41.fields["80"] || "absent"));
531
532    // 步骤 42:SEQ07-2] FETCH 'YY'(tc_step;REQ: RQ32_016_3, RQ32_017, RQ57_134)
533    // FETCH header literals follow the golden wire evidence 8012 (same
534    // anchor as runToSteadyState; J Annex D.4 has no FETCH row, D 2.2.2
535    // gives mechanism only). Le = pending length from the last 91XX
536    // (chain rule, binding-internal state).
537    var s42 = bind.fetchPending("80", "12", "00", "00", null);
538    bind.checkData("S41-C1 proactive command envelope", "1", (s42.resp.length >= 4 && s42.resp.substring(0, 2) === "D0") ? "1" : "0");
539    // S41-C1: REFRESH type/mode bytes are not corpus-fixed (envelope face only; per-mode bytes absent from input).
540    // S42:主动会话协议闭合(TS 102 223 §6.3:主动命令必须 TR 应答;
541    // UICC Reset 变体 E 表无 TR 行属编辑省略,golden U3 线证同构)。
542    var s42tr = bind.terminalResponseForPending("80", "14", "00", "00", "9000");
543
544    // IC ref inline @E 步骤 43(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
545    var s96 = bind.resetAndAtr();
546    bind.checkData("IC43-IC1-K1-C1 ATR_present", "1", s96.atr_hex !== "" ? "1" : "0");
547
548    // IC ref inline @E 步骤 43(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
549    // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
550    var s97 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
551    bind.checkData("IC43-IC1-K2-C2 FCP_Template", "1", s97.resp.length > 0 ? "1" : "0");
552    bind.checkData("IC43-IC1-K2-C4 SW", "9000", s97.sw);
553
554    // IC ref inline @E 步骤 43(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
555    var s98 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
556    bind.checkData("IC43-IC1-K3-C4 SW", "9000", s98.sw);
557
558    // IC ref inline @E 步骤 43(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
559    var steady99 = bind.runToSteadyState(function () {
560        return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
561    });
562    bind.checkData("IC43-IC1-K4-C4 final SW", "9000", steady99.final.sw);
563
564    // IC ref inline @E 步骤 43(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
565    // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
566    var s100 = bind.manageChannelOpen("9000");
567    bind.checkData("IC43-IC2-K1-C4 SW", "9000", s100.sw);
568    bind.checkData("IC43-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s100.chan !== null ? "1" : "0");
569
570    // IC ref inline @E 步骤 43(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
571    // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
572    var s101 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
573    // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
574    bind.checkData("IC43-IC2-K2-C4 SW", "9000", s101.sw);
575
576    // 步骤 44:SEQ07-4] MTD_STORE_DATA(tc_step;REQ: RQ32_011)
577    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
578    var sdCla44 = s100.chan !== null ? (s100.chan <= 3 ? 128 + s100.chan : 188 + s100.chan).toString(16).toUpperCase() : null;
579    var s44 = bind.sendApdu(sdCla44, "E2", "91", "00", "BF2D00", "00", "9000");
580    bind.checkData("S43-C1 SW", "9000", s44.sw);
581    var r2p44 = BindEs10xProcProfile.walkChoiceList(s44.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
582    var r2has44_0 = false;
583    for (var r2i44_0 = 0; r2i44_0 < r2p44.elements.length; r2i44_0++) {
584        var f = r2p44.elements[r2i44_0].fields;
585        if (f["5A"] === "989209012143658709F5" && f["9F70"] === "00") { r2has44_0 = true; break; }
586    }
587    bind.checkData("S43-C2 contains PROFILE_INFO1_DISABLED", "1", (r2p44.branch_tag === "A0" && r2has44_0) ? "1" : "0");
588    var r2has44_0 = false;
589    for (var r2i44_0 = 0; r2i44_0 < r2p44.elements.length; r2i44_0++) {
590        var f = r2p44.elements[r2i44_0].fields;
591        if (f["5A"] === "989209013254769810F9" && f["9F70"] === "01") { r2has44_0 = true; break; }
592    }
593    bind.checkData("S43-C3 contains PROFILE_INFO2_ENABLED", "1", (r2p44.branch_tag === "A0" && r2has44_0) ? "1" : "0");
594
595    // 步骤 45:SEQ07-5] [SELECT_ICCID(tc_step)
596    var s45 = bind.sendApdu("00", "A4", "00", "0C", "2FE2", null, "9000");
597    bind.checkData("S44-C1 SW", "9000", s45.sw);
598
599    // 步骤 46:SEQ07-6] [READ_BINARY] with <L>=0x0A(tc_step;REQ: RQ34_015)
600    var s46 = bind.sendApdu("00", "B0", "00", "00", null, "0A", "9000");
601    bind.checkData("S45-C1 SW", "9000", s46.sw);
602    bind.checkData("S45-C2 READ_BINARY data", "989209013254769810F9", s46.resp);
603
604    // 步骤 47:SEQ08-IC3] MTD_SEND_SMS_PP(tc_step)
605    // MTD_SEND_SMS_PP ENVELOPE (H Annex C.1 表1238 Details: 80 C2 00 00 <L>): SCP80-packed SMS-PP body is runtime-domain
606    // (<MNO_SCP80_COUNTER>/<CC>/<C_APDUS_SCRIPT>) — no bytes fabricated; the embedded STORE DATA
607    // script executes via the proactive FETCH / TERMINAL RESPONSE chain, not in this response.
608    var s47 = bind.sendApdu("80", "C2", "00", "00", null, null, null);
609    bind.checkData("S46-C1 SW1 91", "91", s47.sw.substring(0, 2));
610
611    // 步骤 48:SEQ08-1] MTD_STORE_DATA(tc_step)
612    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
613    var sdCla48 = s100.chan !== null ? (s100.chan <= 3 ? 128 + s100.chan : 188 + s100.chan).toString(16).toUpperCase() : null;
614    // runtime-bound payload: ISD_P_AID2 stays in execution domain
615    var s48 = bind.sendApdu(sdCla48, "E2", "91", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID2", "BF31154F10", "010100", profileAidSession), "00", "9000");
616    bind.checkData("S47-C1 SW", "9000", s48.sw);
617    BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID2", s48.cmd, profileAidSession);
618    var r2w48 = BindGecaProc.parseGecaResponse(s48.resp, {outer: "BF31", required: ["80"]});
619    bind.checkData("S47-C2 enableResult ok", "00", (r2w48.ok && r2w48.fields["80"] === "00") ? "00" : (r2w48.fields["80"] || "absent"));
620
621    // 步骤 49:SEQ08-2] MTD_STORE_DATA(tc_step;REQ: RQ32_011)
622    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
623    var sdCla49 = s100.chan !== null ? (s100.chan <= 3 ? 128 + s100.chan : 188 + s100.chan).toString(16).toUpperCase() : null;
624    var s49 = bind.sendApdu(sdCla49, "E2", "91", "00", "BF2D00", "00", "9000");
625    bind.checkData("S48-C1 SW", "9000", s49.sw);
626    var r2p49 = BindEs10xProcProfile.walkChoiceList(s49.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
627    var r2has49_0 = false;
628    for (var r2i49_0 = 0; r2i49_0 < r2p49.elements.length; r2i49_0++) {
629        var f = r2p49.elements[r2i49_0].fields;
630        if (f["5A"] === "989209012143658709F5" && f["9F70"] === "00") { r2has49_0 = true; break; }
631    }
632    bind.checkData("S48-C2 contains PROFILE_INFO1_DISABLED", "1", (r2p49.branch_tag === "A0" && r2has49_0) ? "1" : "0");
633    var r2has49_0 = false;
634    for (var r2i49_0 = 0; r2i49_0 < r2p49.elements.length; r2i49_0++) {
635        var f = r2p49.elements[r2i49_0].fields;
636        if (f["5A"] === "989209013254769810F9" && f["9F70"] === "01") { r2has49_0 = true; break; }
637    }
638    bind.checkData("S48-C3 contains PROFILE_INFO2_ENABLED", "1", (r2p49.branch_tag === "A0" && r2has49_0) ? "1" : "0");
639
640    // 步骤 50:SEQ08-3] [SELECT_ICCID(tc_step)
641    var s50 = bind.sendApdu("00", "A4", "00", "0C", "2FE2", null, "9000");
642    bind.checkData("S49-C1 SW", "9000", s50.sw);
643
644    // 步骤 51:SEQ08-4] [READ_BINARY] with <L>=0x0A(tc_step;REQ: RQ34_015)
645    var s51 = bind.sendApdu("00", "B0", "00", "00", null, "0A", "9000");
646    bind.checkData("S50-C1 SW", "9000", s51.sw);
647    bind.checkData("S50-C2 READ_BINARY data", "989209013254769810F9", s51.resp);
648
649    // 步骤 52:SEQ09-IC3] MTD_SEND_SMS_PP(tc_step)
650    // MTD_SEND_SMS_PP ENVELOPE (H Annex C.1 表1238 Details: 80 C2 00 00 <L>): SCP80-packed SMS-PP body is runtime-domain
651    // (<MNO_SCP80_COUNTER>/<CC>/<C_APDUS_SCRIPT>) — no bytes fabricated; the embedded STORE DATA
652    // script executes via the proactive FETCH / TERMINAL RESPONSE chain, not in this response.
653    var s52 = bind.sendApdu("80", "C2", "00", "00", null, null, null);
654    bind.checkData("S51-C1 SW1 91", "91", s52.sw.substring(0, 2));
655
656    // 步骤 53:SEQ09-1] FETCH 'XX'(tc_step)
657    // FETCH header literals follow the golden wire evidence 8012 (same
658    // anchor as runToSteadyState; J Annex D.4 has no FETCH row, D 2.2.2
659    // gives mechanism only). Le = pending length from the last 91XX
660    // (chain rule, binding-internal state).
661    var s53 = bind.fetchPending("80", "12", "00", "00", null);
662    bind.checkData("S52-C1 proactive command envelope", "1", (s53.resp.length >= 4 && s53.resp.substring(0, 2) === "D0") ? "1" : "0");
663    // S52-C1: REFRESH type/mode bytes are not corpus-fixed (envelope face only; per-mode bytes absent from input).
664    // S53:主动会话协议闭合(TS 102 223 §6.3:主动命令必须 TR 应答;
665    // UICC Reset 变体 E 表无 TR 行属编辑省略,golden U3 线证同构)。
666    var s53tr = bind.terminalResponseForPending("80", "14", "00", "00", "9000");
667
668    // 步骤 54:SEQ09-2] MTD_STORE_DATA(tc_step;REQ: RQ32_011)
669    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
670    var sdCla54 = s100.chan !== null ? (s100.chan <= 3 ? 128 + s100.chan : 188 + s100.chan).toString(16).toUpperCase() : null;
671    // runtime-bound payload: ISD_P_AID2 stays in execution domain
672    var s54 = bind.sendApdu(sdCla54, "E2", "91", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID2", "BF31154F10", "0101FF", profileAidSession), "00", "9000");
673    bind.checkData("S53-C1 SW", "9000", s54.sw);
674    BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID2", s54.cmd, profileAidSession);
675    var r2w54 = BindGecaProc.parseGecaResponse(s54.resp, {outer: "BF31", required: ["80"]});
676    bind.checkData("S53-C2 enableResult ok", "00", (r2w54.ok && r2w54.fields["80"] === "00") ? "00" : (r2w54.fields["80"] || "absent"));
677
678    // 步骤 55:SEQ09-3] TERMINAL RESPONSE(tc_step)
679    // TERMINAL RESPONSE data is dynamically built by the binding from the
680    // last FETCHed proactive command (D 2.2.2; buildTrData) - never static.
681    // Header literals follow the golden wire evidence 8014.
682    var s55 = bind.terminalResponseForPending("80", "14", "00", "00", null);
683    bind.checkData("S54-C1 SW1 91", "91", s55.sw.substring(0, 2));
684
685    // 步骤 56:SEQ09-4] FETCH 'YY'(tc_step;REQ: RQ32_016_3, RQ32_017, RQ57_134)
686    // FETCH header literals follow the golden wire evidence 8012 (same
687    // anchor as runToSteadyState; J Annex D.4 has no FETCH row, D 2.2.2
688    // gives mechanism only). Le = pending length from the last 91XX
689    // (chain rule, binding-internal state).
690    var s56 = bind.fetchPending("80", "12", "00", "00", null);
691    bind.checkData("S55-C1 proactive command envelope", "1", (s56.resp.length >= 4 && s56.resp.substring(0, 2) === "D0") ? "1" : "0");
692    // S55-C1: REFRESH type/mode bytes are not corpus-fixed (envelope face only; per-mode bytes absent from input).
693    // S56:主动会话协议闭合(TS 102 223 §6.3:主动命令必须 TR 应答;
694    // UICC Reset 变体 E 表无 TR 行属编辑省略,golden U3 线证同构)。
695    var s56tr = bind.terminalResponseForPending("80", "14", "00", "00", "9000");
696
697    // IC ref inline @E 步骤 57(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
698    var s102 = bind.resetAndAtr();
699    bind.checkData("IC57-IC1-K1-C1 ATR_present", "1", s102.atr_hex !== "" ? "1" : "0");
700
701    // IC ref inline @E 步骤 57(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
702    // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
703    var s103 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
704    bind.checkData("IC57-IC1-K2-C2 FCP_Template", "1", s103.resp.length > 0 ? "1" : "0");
705    bind.checkData("IC57-IC1-K2-C4 SW", "9000", s103.sw);
706
707    // IC ref inline @E 步骤 57(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
708    var s104 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
709    bind.checkData("IC57-IC1-K3-C4 SW", "9000", s104.sw);
710
711    // IC ref inline @E 步骤 57(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
712    var steady105 = bind.runToSteadyState(function () {
713        return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
714    });
715    bind.checkData("IC57-IC1-K4-C4 final SW", "9000", steady105.final.sw);
716
717    // IC ref inline @E 步骤 57(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
718    // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
719    var s106 = bind.manageChannelOpen("9000");
720    bind.checkData("IC57-IC2-K1-C4 SW", "9000", s106.sw);
721    bind.checkData("IC57-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s106.chan !== null ? "1" : "0");
722
723    // IC ref inline @E 步骤 57(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
724    // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
725    var s107 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
726    // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
727    bind.checkData("IC57-IC2-K2-C4 SW", "9000", s107.sw);
728
729    // 步骤 58:SEQ09-6] MTD_STORE_DATA(tc_step;REQ: RQ32_011)
730    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
731    var sdCla58 = s106.chan !== null ? (s106.chan <= 3 ? 128 + s106.chan : 188 + s106.chan).toString(16).toUpperCase() : null;
732    var s58 = bind.sendApdu(sdCla58, "E2", "91", "00", "BF2D00", "00", "9000");
733    bind.checkData("S57-C1 SW", "9000", s58.sw);
734    var r2p58 = BindEs10xProcProfile.walkChoiceList(s58.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
735    var r2has58_0 = false;
736    for (var r2i58_0 = 0; r2i58_0 < r2p58.elements.length; r2i58_0++) {
737        var f = r2p58.elements[r2i58_0].fields;
738        if (f["5A"] === "989209012143658709F5" && f["9F70"] === "00") { r2has58_0 = true; break; }
739    }
740    bind.checkData("S57-C2 contains PROFILE_INFO1_DISABLED", "1", (r2p58.branch_tag === "A0" && r2has58_0) ? "1" : "0");
741    var r2has58_0 = false;
742    for (var r2i58_0 = 0; r2i58_0 < r2p58.elements.length; r2i58_0++) {
743        var f = r2p58.elements[r2i58_0].fields;
744        if (f["5A"] === "989209013254769810F9" && f["9F70"] === "01") { r2has58_0 = true; break; }
745    }
746    bind.checkData("S57-C3 contains PROFILE_INFO2_ENABLED", "1", (r2p58.branch_tag === "A0" && r2has58_0) ? "1" : "0");
747
748    // 步骤 59:SEQ09-7] [SELECT_ICCID(tc_step)
749    var s59 = bind.sendApdu("00", "A4", "00", "0C", "2FE2", null, "9000");
750    bind.checkData("S58-C1 SW", "9000", s59.sw);
751
752    // 步骤 60:SEQ09-8] [READ_BINARY] with <L>=0x0A(tc_step;REQ: RQ34_015)
753    var s60 = bind.sendApdu("00", "B0", "00", "00", null, "0A", "9000");
754    bind.checkData("S59-C1 SW", "9000", s60.sw);
755    bind.checkData("S59-C2 READ_BINARY data", "989209013254769810F9", s60.resp);
756
757    // 步骤 61:SEQ10-IC3] MTD_SEND_SMS_PP(tc_step)
758    // MTD_SEND_SMS_PP ENVELOPE (H Annex C.1 表1238 Details: 80 C2 00 00 <L>): SCP80-packed SMS-PP body is runtime-domain
759    // (<MNO_SCP80_COUNTER>/<CC>/<C_APDUS_SCRIPT>) — no bytes fabricated; the embedded STORE DATA
760    // script executes via the proactive FETCH / TERMINAL RESPONSE chain, not in this response.
761    var s61 = bind.sendApdu("80", "C2", "00", "00", null, null, null);
762    bind.checkData("S60-C1 SW1 91", "91", s61.sw.substring(0, 2));
763
764    // 步骤 62:SEQ10-1] FETCH 'XX'(tc_step)
765    // FETCH header literals follow the golden wire evidence 8012 (same
766    // anchor as runToSteadyState; J Annex D.4 has no FETCH row, D 2.2.2
767    // gives mechanism only). Le = pending length from the last 91XX
768    // (chain rule, binding-internal state).
769    var s62 = bind.fetchPending("80", "12", "00", "00", null);
770    bind.checkData("S61-C1 proactive command envelope", "1", (s62.resp.length >= 4 && s62.resp.substring(0, 2) === "D0") ? "1" : "0");
771    // S61-C1: REFRESH type/mode bytes are not corpus-fixed (envelope face only; per-mode bytes absent from input).
772    // S62:主动会话协议闭合(TS 102 223 §6.3:主动命令必须 TR 应答;
773    // UICC Reset 变体 E 表无 TR 行属编辑省略,golden U3 线证同构)。
774    var s62tr = bind.terminalResponseForPending("80", "14", "00", "00", "9000");
775
776    // 步骤 63:SEQ10-2] MTD_STORE_DATA(tc_step)
777    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
778    var sdCla63 = s106.chan !== null ? (s106.chan <= 3 ? 128 + s106.chan : 188 + s106.chan).toString(16).toUpperCase() : null;
779    // runtime-bound payload: ISD_P_AID2 stays in execution domain
780    var s63 = bind.sendApdu(sdCla63, "E2", "91", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID2", "BF31154F10", "010100", profileAidSession), "00", "9000");
781    bind.checkData("S62-C1 SW", "9000", s63.sw);
782    BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID2", s63.cmd, profileAidSession);
783    var r2w63 = BindGecaProc.parseGecaResponse(s63.resp, {outer: "BF31", required: ["80"]});
784    bind.checkData("S62-C2 enableResult ok", "00", (r2w63.ok && r2w63.fields["80"] === "00") ? "00" : (r2w63.fields["80"] || "absent"));
785
786    // 步骤 64:SEQ10-3] TERMINAL RESPONSE(tc_step)
787    // TERMINAL RESPONSE data is dynamically built by the binding from the
788    // last FETCHed proactive command (D 2.2.2; buildTrData) - never static.
789    // Header literals follow the golden wire evidence 8014.
790    var s64 = bind.terminalResponseForPending("80", "14", "00", "00", null);
791    bind.checkData("S63-C1 SW1 != 91", "1", s64.sw.substring(0, 2) !== "91" ? "1" : "0");
792
793    // 步骤 65:SEQ10-4] MTD_STORE_DATA(tc_step;REQ: RQ32_011)
794    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
795    var sdCla65 = s106.chan !== null ? (s106.chan <= 3 ? 128 + s106.chan : 188 + s106.chan).toString(16).toUpperCase() : null;
796    var s65 = bind.sendApdu(sdCla65, "E2", "91", "00", "BF2D00", "00", "9000");
797    bind.checkData("S64-C1 SW", "9000", s65.sw);
798    var r2p65 = BindEs10xProcProfile.walkChoiceList(s65.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
799    var r2has65_0 = false;
800    for (var r2i65_0 = 0; r2i65_0 < r2p65.elements.length; r2i65_0++) {
801        var f = r2p65.elements[r2i65_0].fields;
802        if (f["5A"] === "989209012143658709F5" && f["9F70"] === "00") { r2has65_0 = true; break; }
803    }
804    bind.checkData("S64-C2 contains PROFILE_INFO1_DISABLED", "1", (r2p65.branch_tag === "A0" && r2has65_0) ? "1" : "0");
805    var r2has65_0 = false;
806    for (var r2i65_0 = 0; r2i65_0 < r2p65.elements.length; r2i65_0++) {
807        var f = r2p65.elements[r2i65_0].fields;
808        if (f["5A"] === "989209013254769810F9" && f["9F70"] === "01") { r2has65_0 = true; break; }
809    }
810    bind.checkData("S64-C3 contains PROFILE_INFO2_ENABLED", "1", (r2p65.branch_tag === "A0" && r2has65_0) ? "1" : "0");
811
812    // 步骤 66:SEQ10-5] [SELECT_ICCID(tc_step)
813    var s66 = bind.sendApdu("00", "A4", "00", "0C", "2FE2", null, "9000");
814    bind.checkData("S65-C1 SW", "9000", s66.sw);
815
816    // 步骤 67:SEQ10-6] [READ_BINARY] with <L>=0x0A(tc_step;REQ: RQ34_015)
817    var s67 = bind.sendApdu("00", "B0", "00", "00", null, "0A", "9000");
818    bind.checkData("S66-C1 SW", "9000", s67.sw);
819    bind.checkData("S66-C2 READ_BINARY data", "989209013254769810F9", s67.resp);
820}
821

完整 unified diff

行级差异:新增 819 行 / 删除 991 行(以 -man 为基准,unified 上下文 3 行)。

展开 diff(1815 行)
--- -man
+++ -cas
@@ -1,993 +1,821 @@
-// slice of Import\TestCase_SGP_23.js - cases: TC_eUICC_ES10c_EnableProfile_Case4_01_Nominal_Enable_Profile_by_ISD_P_AID_and_refreshFlag_set_when_Device_supports_UICC_Reset + TC_eUICC_ES10c_EnableProfile_Case4_02_Nominal_Enable_Profile_by_ICCID_and_refreshFlag_set_when_Device_supports_UICC_Reset + TC_eUICC_ES10c_EnableProfile_Case4_03_Nominal_Enable_Profile_by_ISD_P_AID_and_refreshFlag_set_when_Device_supports_eUICC_Profile_State_Change + TC_eUICC_ES10c_EnableProfile_Case4_04_Nominal_Enable_Profile_ICCID_and_refreshFlag_set_when_Device_supports_eUICC_Profile_State_Change + TC_eUICC_ES10c_EnableProfile_Case4_05_Nominal_Enable_Profile_by_ISD_P_AID_and_refreshFlag_not_set + TC_eUICC_ES10c_EnableProfile_Case4_06_Nominal_Enable_Profile_by_ICCID_and_refreshFlag_not_set + TC_eUICC_ES10c_EnableProfile_Case4_07_Nominal_Enable_Profile_by_ISD_P_AID_and_refreshFlag_set_while_proactive_session_is_ongoing_catBusy_not_supported + TC_eUICC_ES10c_EnableProfile_Case4_08_Nominal_Enable_Profile_by_ISD_P_AID_and_refreshFlag_not_set_while_proactive_session_is_ongoing_catBusy_not_supported + TC_eUICC_ES10c_EnableProfile_Case4_09_Nominal_Enable_Profile_by_ISD_P_AID_and_refreshFlag_set_while_proactive_session_is_ongoing_with_Terminal_Response_outstanding_catBusy_not_supported + TC_eUICC_ES10c_EnableProfile_Case4_10_Nominal_Enable_Profile_by_ISD_P_AID_and_refreshFlag_not_set_while_proactive_session_is_ongoing_with_Terminal_Response_outstanding_catBusy_not_supported (extracted verbatim)
-
-function TC_eUICC_ES10c_EnableProfile_Case4_01_Nominal_Enable_Profile_by_ISD_P_AID_and_refreshFlag_set_when_Device_supports_UICC_Reset()
-{
-	if(!Card_Have_ECC_Cert)
-		return;
-	
-	TestOfMEPMode = 0;	
-
-	initial_condition_PROFILE_OPERATIONAL1_is_Disabled();
-	var ISD_P_Test01 = curProfile_ISD_P_AID;
-	
-	tracenamestr = "测试目的:设备支持 “UICC Reset”,通过ISD-P AID激活profile,并设置refreshFlag";
-	curDis.TraceStart(sno++,tracenamestr);
-	
-	curLogicChannel = 0;
-	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
-	Ini_powerOn_eUICC_LPAe_not_activate();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
-	TS_MANAGE_CHANNEL_OPEN();
-	
-	curLogicChannel = 1;
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
-	TS_SELECT("Select ISD",ISD_R_AID,"9000");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EnableProfileRequest,refreshFlag为FF;");
-
-	var enableProRequest = new EnableProfileRequest();
-	enableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.isdpAid,ISD_P_Test01);
-	enableProRequest.refreshFlag = BooleanValue_BerCode_True;
-	enableProRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(enableProRequest.hexData,"91","00","91XX");
-	
-	curStrHandle.CheckData("BF3103800100", respData, "EnableProfileResponse");
-	
-	curLogicChannel = 0;
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 Fetch命令,主动式命令refresh;");
-	
-	FetchStr = Fetch("","9000","");
-		
-	var CmdDetails = GetValueByTag("01",1);
-	var CmdQualifier = CmdDetails.substr(4,2);
-	CheckData("04",CmdQualifier,"the command qualifier is equal to ’04’ (UICC Reset)");//'04' = UICC Reset; 
-	
-	curLogicChannel = 0;
-	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
-	Ini_powerOn_eUICC_LPAe_not_activate();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
-	TS_MANAGE_CHANNEL_OPEN();
-	
-	curLogicChannel = 1;
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
-	TS_SELECT("Select ISD",ISD_R_AID,"9000");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
-	
-	var proInfoListRequest = new ProfileInfoListRequest();
-	proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.isdpAid,ISD_P_Test01);
-	proInfoListRequest.tagList = "5A4F9F70";
-	proInfoListRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-	
-
-	var proInfoListResponse = new  ProfileInfoListResponse();
-	proInfoListResponse.checkCardResDataFormat(respData);
-	
-	try
-	{
-		curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
-		curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
-		curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
-	}catch(e){
-		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
-	}
-	
-	curLogicChannel = 0;
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 Select命令,选择ICCID;");
-	var para1 = new SelectFileEFPara_3G("2FE2");
-	SendAPDU(para1.apdu);
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送read binary命令;");
-	var para1 = new ReadBinaryPara_3G("00","00","0A");
-	para1.apdu.resvalue = ICCID_OP_PROF1;
-	SendAPDU(para1.apdu);
-	
-	RecoverCard();
-	
-}
-
-function TC_eUICC_ES10c_EnableProfile_Case4_02_Nominal_Enable_Profile_by_ICCID_and_refreshFlag_set_when_Device_supports_UICC_Reset()
-{
-	if(!Card_Have_ECC_Cert)
-		return;
-	
-	TestOfMEPMode = 0;	
-
-	initial_condition_PROFILE_OPERATIONAL1_is_Disabled();
-	var ISD_P_Test01 = curProfile_ISD_P_AID;
-	
-	tracenamestr = "测试目的:设备支持 “UICC Reset”,通过ICCID激活profile,并设置refreshFlag";
-	curDis.TraceStart(sno++,tracenamestr);
-	
-	curLogicChannel = 0;
-	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
-	Ini_powerOn_eUICC_LPAe_not_activate();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
-	TS_MANAGE_CHANNEL_OPEN();
-	
-	curLogicChannel = 1;
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
-	TS_SELECT("Select ISD",ISD_R_AID,"9000");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EnableProfileRequest,refreshFlag为FF;");
-	var enableProRequest = new EnableProfileRequest();
-	enableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.iccid,ICCID_OP_PROF1);
-	enableProRequest.refreshFlag = BooleanValue_BerCode_True;
-	enableProRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(enableProRequest.hexData,"91","00","91XX");
-	
-	curStrHandle.CheckData("BF3103800100", respData, "EnableProfileResponse");
-	
-	curLogicChannel = 0;
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 Fetch命令,主动式命令refresh;");
-	
-	FetchStr = Fetch("","9000","");
-		
-	var CmdDetails = GetValueByTag("01",1);
-	var CmdQualifier = CmdDetails.substr(4,2);
-	CheckData("04",CmdQualifier,"the command qualifier is equal to ’04’ (UICC Reset)");//'04' = UICC Reset; 
-	
-	curLogicChannel = 0;
-	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
-	Ini_powerOn_eUICC_LPAe_not_activate();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
-	TS_MANAGE_CHANNEL_OPEN();
-	
-	curLogicChannel = 1;
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
-	TS_SELECT("Select ISD",ISD_R_AID,"9000");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
-	var proInfoListRequest = new ProfileInfoListRequest();
-	proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
-	proInfoListRequest.tagList = "5A4F9F70";
-	proInfoListRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-	
-
-	var proInfoListResponse = new  ProfileInfoListResponse();
-	proInfoListResponse.checkCardResDataFormat(respData);
-	
-	try
-	{
-		curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
-		curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
-		curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
-	}catch(e){
-		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
-	}
-	
-	curLogicChannel = 0;
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 Select命令,选择ICCID;");
-	var para1 = new SelectFileEFPara_3G("2FE2");
-	SendAPDU(para1.apdu);
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送read binary命令;");
-	var para1 = new ReadBinaryPara_3G("00","00","0A");
-	para1.apdu.resvalue = ICCID_OP_PROF1;
-	SendAPDU(para1.apdu);
-	
-	RecoverCard();
-	
-}
-
-function TC_eUICC_ES10c_EnableProfile_Case4_03_Nominal_Enable_Profile_by_ISD_P_AID_and_refreshFlag_set_when_Device_supports_eUICC_Profile_State_Change()
-{
-	if(!Card_Have_ECC_Cert)
-		return;
-	
-	TestOfMEPMode = 0;	
-
-	initial_condition_PROFILE_OPERATIONAL1_is_Disabled();
-	var ISD_P_Test01 = curProfile_ISD_P_AID;
-	
-	tracenamestr = "测试目的:设备支持 “eUICC Profile State Change”,通过ISD-P AID激活profile,并设置refreshFlag";
-	curDis.TraceStart(sno++,tracenamestr);
-	
-	curLogicChannel = 0;
-	
-	TERMINAL_PROFILE_Default = TERMINAL_PROFILE_eUICCProfileStateChanged;//add 20260423
-	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
-	Ini_powerOn_eUICC_LPAe_not_activate();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
-	TS_MANAGE_CHANNEL_OPEN();
-	
-	curLogicChannel = 1;
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
-	TS_SELECT("Select ISD",ISD_R_AID,"9000");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EnableProfileRequest,refreshFlag为FF;");
-
-	var enableProRequest = new EnableProfileRequest();
-	enableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.isdpAid,ISD_P_Test01);
-	enableProRequest.refreshFlag = BooleanValue_BerCode_True;
-	enableProRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(enableProRequest.hexData,"91","00","91XX");
-	
-	curStrHandle.CheckData("BF3103800100", respData, "EnableProfileResponse");
-	
-	curLogicChannel = 0;
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 Fetch命令,主动式命令refresh;");
-	FetchStr = Fetch("","9000","");
-		
-	var CmdDetails = GetValueByTag("01",1);
-	var CmdQualifier = CmdDetails.substr(4,2);
-	CheckData("09",CmdQualifier,"the command qualifier is equal to ’09’ (eUICC Profile State Change)");
-	
-	TerminalResponse("00","9000");
-	
-	curDis.TestStepStart2(stno++,"eUICC卡片初始化:从第 2 步到第 4 步,[SELECT_MF]、[TERMINAL_CAPABILITY_LPAd] 、[TERMINAL_PROFILE_eUICCProfileStateChanged] ");
-	curLogicChannel = 0;	
-	if (check_eUICC_support_TERMINAL_CAPABILITY_cmd())
-		TS_TERMINAL_CAPABILITY_cmd();
-	else
-		obj.SubLevel("eUICC不支持”TERMINAL_CAPABILITY“命令", level_of_SubLevel.warning);
-	
-	IniCard_SetUpMenu("",1);
-	
-	
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
-	TS_MANAGE_CHANNEL_OPEN();
-	
-	curLogicChannel = 1;
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
-	TS_SELECT("Select ISD",ISD_R_AID,"9000");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
-	
-	var proInfoListRequest = new ProfileInfoListRequest();
-	proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.isdpAid,ISD_P_Test01);
-	proInfoListRequest.tagList = "5A4F9F70";
-	proInfoListRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-	
-
-	var proInfoListResponse = new  ProfileInfoListResponse();
-	proInfoListResponse.checkCardResDataFormat(respData);
-	
-	try
-	{
-		curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
-		curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
-		curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
-	}catch(e){
-		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
-	}
-	
-	curLogicChannel = 0;
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 Select命令,选择ICCID;");
-	var para1 = new SelectFileEFPara_3G("2FE2");
-	SendAPDU(para1.apdu);
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送read binary命令;");
-	var para1 = new ReadBinaryPara_3G("00","00","0A");
-	para1.apdu.resvalue = ICCID_OP_PROF1;
-	SendAPDU(para1.apdu);
-	
-	RecoverCard();
-}
-
-function TC_eUICC_ES10c_EnableProfile_Case4_04_Nominal_Enable_Profile_ICCID_and_refreshFlag_set_when_Device_supports_eUICC_Profile_State_Change()
-{
-	if(!Card_Have_ECC_Cert)
-		return;
-
-	TestOfMEPMode = 0;	
-
-	initial_condition_PROFILE_OPERATIONAL1_is_Disabled();
-	var ISD_P_Test01 = curProfile_ISD_P_AID;
-	
-	tracenamestr = "测试目的:设备支持 “eUICC Profile State Change”,通过ICCID激活profile,并设置refreshFlag";
-	curDis.TraceStart(sno++,tracenamestr);
-	
-	curLogicChannel = 0;
-	TERMINAL_PROFILE_Default = TERMINAL_PROFILE_eUICCProfileStateChanged;
-	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
-	Ini_powerOn_eUICC_LPAe_not_activate();
-
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
-	TS_MANAGE_CHANNEL_OPEN();
-	
-	curLogicChannel = 1;
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
-	TS_SELECT("Select ISD",ISD_R_AID,"9000");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EnableProfileRequest,refreshFlag为FF;");
-	var enableProRequest = new EnableProfileRequest();
-	enableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.iccid,ICCID_OP_PROF1);
-	enableProRequest.refreshFlag = BooleanValue_BerCode_True;
-	enableProRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(enableProRequest.hexData,"91","00","91XX");
-	
-	curStrHandle.CheckData("BF3103800100", respData, "EnableProfileResponse");
-	
-	curLogicChannel = 0;
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 Fetch命令,主动式命令refresh;");
-	
-	FetchStr = Fetch("","9000","");
-		
-	var CmdDetails = GetValueByTag("01",1);
-	var CmdQualifier = CmdDetails.substr(4,2);
-	CheckData("09",CmdQualifier,"the command qualifier is equal to ’09’ (eUICC Profile State Change)");//'09' = eUICC Profile State Change;   102.223-8.6
-	
-	TerminalResponse("00","9000");
-	
-	curLogicChannel = 0;
-	curDis.TestStepStart2(stno++,"eUICC卡片初始化:从第 2 步到第 4 步,[SELECT_MF]、[TERMINAL_CAPABILITY_LPAd] 、[TERMINAL_PROFILE_eUICCProfileStateChanged] ");
-	
-	curLogicChannel = 0;
-	
-	if (check_eUICC_support_TERMINAL_CAPABILITY_cmd())
-		TS_TERMINAL_CAPABILITY_cmd();
-	else
-		obj.SubLevel("eUICC不支持”TERMINAL_CAPABILITY“命令", level_of_SubLevel.warning);
-	
-	IniCard_SetUpMenu("",1);
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
-	TS_MANAGE_CHANNEL_OPEN();
-	
-	curLogicChannel = 1;
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
-	TS_SELECT("Select ISD",ISD_R_AID,"9000");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
-	var proInfoListRequest = new ProfileInfoListRequest();
-	proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
-	proInfoListRequest.tagList = "5A4F9F70";
-	proInfoListRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-	
-
-	var proInfoListResponse = new  ProfileInfoListResponse();
-	proInfoListResponse.checkCardResDataFormat(respData);
-	
-	try
-	{
-		curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
-		curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
-		curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
-	}catch(e){
-		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
-	}
-	
-	curLogicChannel = 0;
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 Select命令,选择ICCID;");
-	var para1 = new SelectFileEFPara_3G("2FE2");
-	SendAPDU(para1.apdu);
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送read binary命令;");
-	var para1 = new ReadBinaryPara_3G("00","00","0A");
-	para1.apdu.resvalue = ICCID_OP_PROF1;
-	SendAPDU(para1.apdu);
-	
-	RecoverCard();
-}
-
-function TC_eUICC_ES10c_EnableProfile_Case4_05_Nominal_Enable_Profile_by_ISD_P_AID_and_refreshFlag_not_set()
-{
-	if(!Card_Have_ECC_Cert)
-		return;
-	
-	TestOfMEPMode = 0;	
-
-	initial_condition_PROFILE_OPERATIONAL1_is_Disabled();
-	var ISD_P_Test01 = curProfile_ISD_P_AID;
-	
-	tracenamestr = "测试目的:通过ISD-P AID激活profile,不设置refreshFlag";
-	curDis.TraceStart(sno++,tracenamestr);
-	
-	curLogicChannel = 0;
-	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
-	Ini_powerOn_eUICC_LPAe_not_activate();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
-	TS_MANAGE_CHANNEL_OPEN();
-	
-	curLogicChannel = 1;
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
-	TS_SELECT("Select ISD",ISD_R_AID,"9000");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EnableProfileRequest,refreshFlag为false;");
-
-	var enableProRequest = new EnableProfileRequest();
-	enableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.isdpAid,ISD_P_Test01);
-	enableProRequest.refreshFlag = BooleanValue_BerCode_False;
-	enableProRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(enableProRequest.hexData,"91","00","9000");
-	
-	curStrHandle.CheckData("BF3103800100", respData, "EnableProfileResponse");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 TERMINAL_PROFILE命令;");
-	IniCard_SetUpMenu("",1);
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
-	TS_MANAGE_CHANNEL_OPEN();
-	curLogicChannel = 1;
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
-	TS_SELECT("Select ISD",ISD_R_AID,"9000");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
-	
-	var proInfoListRequest = new ProfileInfoListRequest();
-	proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.isdpAid,ISD_P_Test01);
-	proInfoListRequest.tagList = "5A4F9F70";
-	proInfoListRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-	
-
-	var proInfoListResponse = new  ProfileInfoListResponse();
-	proInfoListResponse.checkCardResDataFormat(respData);
-	
-	try
-	{
-		curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
-		curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
-		curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
-	}catch(e){
-		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
-	}
-	
-	curLogicChannel = 0;
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 Select命令,选择ICCID;");
-	var para1 = new SelectFileEFPara_3G("2FE2");
-	SendAPDU(para1.apdu);
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送read binary命令;");
-	var para1 = new ReadBinaryPara_3G("00","00","0A");
-	para1.apdu.resvalue = ICCID_OP_PROF1;
-	SendAPDU(para1.apdu);
-	
-	RecoverCard();
-	
-}
-
-function TC_eUICC_ES10c_EnableProfile_Case4_06_Nominal_Enable_Profile_by_ICCID_and_refreshFlag_not_set()
-{
-	if(!Card_Have_ECC_Cert)
-		return;
-	
-	TestOfMEPMode = 0;	
-
-	initial_condition_PROFILE_OPERATIONAL1_is_Disabled();
-	var ISD_P_Test01 = curProfile_ISD_P_AID;
-	
-	tracenamestr = "测试目的:通过ICCID激活profile,不设置refreshFlag";
-	curDis.TraceStart(sno++,tracenamestr);
-	
-	curLogicChannel = 0;
-	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
-	Ini_powerOn_eUICC_LPAe_not_activate();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
-	TS_MANAGE_CHANNEL_OPEN();
-	
-	curLogicChannel = 1;
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
-	TS_SELECT("Select ISD",ISD_R_AID,"9000");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EnableProfileRequest,refreshFlag为false;");
-	var enableProRequest = new EnableProfileRequest();
-	enableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.iccid,ICCID_OP_PROF1);
-	enableProRequest.refreshFlag = BooleanValue_BerCode_False;
-	enableProRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(enableProRequest.hexData,"91","00","9000");
-	
-	curStrHandle.CheckData("BF3103800100", respData, "EnableProfileResponse");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 TERMINAL_PROFILE命令;");
-	IniCard_SetUpMenu("",1);
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
-	TS_MANAGE_CHANNEL_OPEN();
-	curLogicChannel = 1;
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
-	TS_SELECT("Select ISD",ISD_R_AID,"9000");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
-	var proInfoListRequest = new ProfileInfoListRequest();
-	proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
-	proInfoListRequest.tagList = "5A4F9F70";
-	proInfoListRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-	
-
-	var proInfoListResponse = new  ProfileInfoListResponse();
-	proInfoListResponse.checkCardResDataFormat(respData);
-	
-	try
-	{
-		curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
-		curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
-		curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
-	}catch(e){
-		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
-	}
-	
-	curLogicChannel = 0;
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 Select命令,选择ICCID;");
-	var para1 = new SelectFileEFPara_3G("2FE2");
-	SendAPDU(para1.apdu);
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送read binary命令;");
-	var para1 = new ReadBinaryPara_3G("00","00","0A");
-	para1.apdu.resvalue = ICCID_OP_PROF1;
-	SendAPDU(para1.apdu);
-	
-	RecoverCard();
-	
-}
-
-function TC_eUICC_ES10c_EnableProfile_Case4_07_Nominal_Enable_Profile_by_ISD_P_AID_and_refreshFlag_set_while_proactive_session_is_ongoing_catBusy_not_supported()
-{
-	if(!Card_Have_ECC_Cert)
-		  return;
-	
-
-	if(!check_Applicability_of_tests_RSP_SGP23_test("C033"))
-		return;
-		
-	TestOfMEPMode = 0;	
-	initial_condition_PROFILE_OPERATIONAL1_is_Enabled(); 
-	var ISD_P_Test01 = curProfile_ISD_P_AID;
-	
-	initial_condition_PROFILE_OPERATIONAL2_is_Disabled();
-	var ISD_P_Test02 = curProfile_ISD_P_AID;
-	
-	tracenamestr = "测试目的:eUICC不支持catBusy,主动式会话进行中时,通过ISD-P AID激活profile,并设置refreshFlag";
-	curDis.TraceStart(sno++,tracenamestr);
-	
-	
-	curLogicChannel = 0;
-	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
-	Ini_powerOn_eUICC_LPAe_not_activate();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
-	TS_MANAGE_CHANNEL_OPEN();
-	curLogicChannel = 1;
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
-	TS_SELECT("Select ISD",ISD_R_AID,"9000");
-	
-	
-  curLogicChannel=0;
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送SMS-PP;");
-	sSendType = SendTypeByOTA.SMS;
-	KIC = MNO_SCP80_ENC_KEY;
-	KID = MNO_SCP80_AUTH_KEY;
-	KIK = MNO_SCP80_DATA_ENC_KEY;
-	
-
-	sAPDU = "80F28002024F0000";	
-	SendMessageToCard_GP(sSendType,"91XX",0,MNO_TAR_PROFILE_OPERATIONAL1,"12210015",sAPDU);
-	
-	curLogicChannel=1;
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EnableProfileRequest,refreshFlag为true;");
-
-	var enableProRequest = new EnableProfileRequest();
-	enableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.isdpAid,ISD_P_Test02);
-	enableProRequest.refreshFlag = BooleanValue_BerCode_True;
-	enableProRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(enableProRequest.hexData,"91","00","91XX");
-	curStrHandle.CheckData("BF3103800100", respData, "EnableProfileResponse");
-	
-	curLogicChannel = 0;
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 Fetch命令,主动式命令refresh;");
-
-	FetchStr = Fetch("","9000","");
-		
-	var CmdDetails = GetValueByTag("01",1);
-	var CmdQualifier = CmdDetails.substr(4,2);
-	CheckData("04",CmdQualifier,"the command qualifier is equal to ’04’ (UICC Reset)");//'04' = UICC Reset; 
-	
-	curLogicChannel = 0;
-	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
-	Ini_powerOn_eUICC_LPAe_not_activate();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
-	TS_MANAGE_CHANNEL_OPEN();
-	
-	curLogicChannel = 1;
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
-	TS_SELECT("Select ISD",ISD_R_AID,"9000");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
-
-	var proInfoListRequest = new ProfileInfoListRequest();
-	proInfoListRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-	
-
-	var proInfoListResponse = new  ProfileInfoListResponse();
-	proInfoListResponse.checkCardResDataFormat(respData);
-	
-	try
-	{
-		curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
-		curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
-		curStrHandle.CheckData(Profile_DISABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
-		
-		curStrHandle.CheckData(ICCID_OP_PROF2, proInfoListResponse.profileInfoListOk.arrOfElement[1].iccid, "ICCID");
-		curStrHandle.CheckData(ISD_P_Test02, proInfoListResponse.profileInfoListOk.arrOfElement[1].isdpAid, "ISD-P AID");
-		curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[1].profileState, "profile State");
-	}catch(e){
-		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
-	}
-	
-	curLogicChannel = 0;
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 Select命令,选择ICCID;");
-	var para1 = new SelectFileEFPara_3G("2FE2");
-	SendAPDU(para1.apdu);
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送read binary命令;");
-	var para1 = new ReadBinaryPara_3G("00","00","0A");
-	para1.apdu.resvalue = ICCID_OP_PROF2;
-	SendAPDU(para1.apdu);
-	
-	RecoverCard();
-	
-	
-	
-	
-}
-
-function TC_eUICC_ES10c_EnableProfile_Case4_08_Nominal_Enable_Profile_by_ISD_P_AID_and_refreshFlag_not_set_while_proactive_session_is_ongoing_catBusy_not_supported()
-{
-	if(!Card_Have_ECC_Cert)
-		return;
-	
-
-	if(!check_Applicability_of_tests_RSP_SGP23_test("C033"))
-		return;
-		
-	TestOfMEPMode = 0;	
-	initial_condition_PROFILE_OPERATIONAL1_is_Enabled(); 
-	var ISD_P_Test01 = curProfile_ISD_P_AID;
-	
-	initial_condition_PROFILE_OPERATIONAL2_is_Disabled();
-	var ISD_P_Test02 = curProfile_ISD_P_AID;
-	
-	tracenamestr = "测试目的:eUICC不支持catBusy,主动式会话进行中时,通过ISD-P AID激活profile,不设置refreshFlag";
-	curDis.TraceStart(sno++,tracenamestr);
-	
-	
-	curLogicChannel = 0;
-	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
-	Ini_powerOn_eUICC_LPAe_not_activate();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
-	TS_MANAGE_CHANNEL_OPEN();
-	curLogicChannel = 1;
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
-	TS_SELECT("Select ISD",ISD_R_AID,"9000");
-	
-	
-  curLogicChannel=0;
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送SMS-PP;");
-	sSendType = SendTypeByOTA.SMS;
-	KIC = MNO_SCP80_ENC_KEY;
-	KID = MNO_SCP80_AUTH_KEY;
-	KIK = MNO_SCP80_DATA_ENC_KEY;
-	
-
-	sAPDU = "80F28002024F0000";		
-	SendMessageToCard_GP(sSendType,"91XX",0,MNO_TAR_PROFILE_OPERATIONAL1,"12210015",sAPDU);
-	
-	curLogicChannel=1;
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EnableProfileRequest,refreshFlag为false(not set);");
-
-	var enableProRequest = new EnableProfileRequest();
-	enableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.isdpAid,ISD_P_Test02);
-	enableProRequest.refreshFlag = BooleanValue_BerCode_False;
-	enableProRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(enableProRequest.hexData,"91","00","91XX");
-	curStrHandle.CheckData("BF3103800100", respData, "EnableProfileResponse");
-	
-	curLogicChannel = 0;
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 Fetch命令,主动式命令refresh;");
-
-	FetchStr = Fetch("","9000","");
-	var CmdDetails = GetValueByTag("01",1);
-	var CmdQualifier = CmdDetails.substr(4,2);
-	CheckData("04",CmdQualifier,"the command qualifier is equal to ’04’ (UICC Reset)");//'04' = UICC Reset; 
-	
-	curLogicChannel = 0;
-	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
-	Ini_powerOn_eUICC_LPAe_not_activate();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
-	TS_MANAGE_CHANNEL_OPEN();
-	
-	curLogicChannel = 1;
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
-	TS_SELECT("Select ISD",ISD_R_AID,"9000");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
-
-	var proInfoListRequest = new ProfileInfoListRequest();
-	proInfoListRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-	
-
-	var proInfoListResponse = new  ProfileInfoListResponse();
-	proInfoListResponse.checkCardResDataFormat(respData);
-	
-	try
-	{
-		curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
-		curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
-		curStrHandle.CheckData(Profile_DISABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
-		
-		curStrHandle.CheckData(ICCID_OP_PROF2, proInfoListResponse.profileInfoListOk.arrOfElement[1].iccid, "ICCID");
-		curStrHandle.CheckData(ISD_P_Test02, proInfoListResponse.profileInfoListOk.arrOfElement[1].isdpAid, "ISD-P AID");
-		curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[1].profileState, "profile State");
-	}catch(e){
-		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
-	}
-	
-	curLogicChannel = 0;
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 Select命令,选择ICCID;");
-	var para1 = new SelectFileEFPara_3G("2FE2");
-	SendAPDU(para1.apdu);
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送read binary命令;");
-	var para1 = new ReadBinaryPara_3G("00","00","0A");
-	para1.apdu.resvalue = ICCID_OP_PROF2;
-	SendAPDU(para1.apdu);
-	
-	RecoverCard();	
-	
-}
-
-function TC_eUICC_ES10c_EnableProfile_Case4_09_Nominal_Enable_Profile_by_ISD_P_AID_and_refreshFlag_set_while_proactive_session_is_ongoing_with_Terminal_Response_outstanding_catBusy_not_supported()
-{
-	if(!Card_Have_ECC_Cert)
-		return;
-	
-
-	if(!check_Applicability_of_tests_RSP_SGP23_test("C033"))
-		return;
-		
-	TestOfMEPMode = 0;	
-	initial_condition_PROFILE_OPERATIONAL1_is_Enabled(); 
-	var ISD_P_Test01 = curProfile_ISD_P_AID;
-	
-	initial_condition_PROFILE_OPERATIONAL2_is_Disabled();
-	var ISD_P_Test02 = curProfile_ISD_P_AID;
-	
-	tracenamestr = "测试目的:eUICC不支持catBusy,主动式会话进行中(未给终端响应)时,通过ISD-P AID激活profile,设置refreshFlag";
-	curDis.TraceStart(sno++,tracenamestr);
-	
-	
-	curLogicChannel = 0;
-	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
-	Ini_powerOn_eUICC_LPAe_not_activate();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
-	TS_MANAGE_CHANNEL_OPEN();
-	curLogicChannel = 1;
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
-	TS_SELECT("Select ISD",ISD_R_AID,"9000");
-	
-	
-  curLogicChannel=0;
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送SMS-PP;");
-	sSendType = SendTypeByOTA.SMS;
-	KIC = MNO_SCP80_ENC_KEY;
-	KID = MNO_SCP80_AUTH_KEY;
-	KIK = MNO_SCP80_DATA_ENC_KEY;
-	
-
-	sAPDU = "80F28002024F0000";	
-	
-	SendMessageToCard_GP(sSendType,"91XX",0,MNO_TAR_PROFILE_OPERATIONAL1,"12210015",sAPDU);
-	
-	var exResPara = new ExpandedRemoteResponsePara(arrExpandedRemoteCmdObj, "9000", "00", sSendType);
-	CardSendMessageToServerExpandedRemoteCmd(exResPara);
-	
-	curLogicChannel=1;
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EnableProfileRequest,refreshFlag为true;");
-
-	var enableProRequest = new EnableProfileRequest();
-	enableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.isdpAid,ISD_P_Test02);
-	enableProRequest.refreshFlag = BooleanValue_BerCode_True;
-	enableProRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(enableProRequest.hexData,"91","00","91XX");
-	curStrHandle.CheckData("BF3103800100", respData, "EnableProfileResponse");
-	
-	curLogicChannel = 0;
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送TerminalResponse命令;");
-	TerminalResponse("00","91XX");		
-	var ss = obj.GetState();
-	HaveReEntry91XX = false;
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 Fetch命令,主动式命令refresh;");
-	FetchStr = Fetch("","9000","");
-	var CmdDetails = GetValueByTag("01",1);
-	var CmdQualifier = CmdDetails.substr(4,2);
-	CheckData("04",CmdQualifier,"the command qualifier is equal to ’04’ (UICC Reset)");//'04' = UICC Reset;
-	
-	curLogicChannel = 0;
-	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
-	Ini_powerOn_eUICC_LPAe_not_activate();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
-	TS_MANAGE_CHANNEL_OPEN();
-	
-	curLogicChannel = 1;
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
-	TS_SELECT("Select ISD",ISD_R_AID,"9000");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
-
-	var proInfoListRequest = new ProfileInfoListRequest();
-	proInfoListRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-	
-
-	var proInfoListResponse = new  ProfileInfoListResponse();
-	proInfoListResponse.checkCardResDataFormat(respData);
-	
-	try
-	{
-		curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
-		curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
-		curStrHandle.CheckData(Profile_DISABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
-		
-		curStrHandle.CheckData(ICCID_OP_PROF2, proInfoListResponse.profileInfoListOk.arrOfElement[1].iccid, "ICCID");
-		curStrHandle.CheckData(ISD_P_Test02, proInfoListResponse.profileInfoListOk.arrOfElement[1].isdpAid, "ISD-P AID");
-		curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[1].profileState, "profile State");
-	}catch(e){
-		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
-	}
-	
-	curLogicChannel = 0;
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 Select命令,选择ICCID;");
-	var para1 = new SelectFileEFPara_3G("2FE2");
-	SendAPDU(para1.apdu);
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送read binary命令;");
-	var para1 = new ReadBinaryPara_3G("00","00","0A");
-	para1.apdu.resvalue = ICCID_OP_PROF2;
-	SendAPDU(para1.apdu);
-	
-	RecoverCard();	
-	
-}
-
-function TC_eUICC_ES10c_EnableProfile_Case4_10_Nominal_Enable_Profile_by_ISD_P_AID_and_refreshFlag_not_set_while_proactive_session_is_ongoing_with_Terminal_Response_outstanding_catBusy_not_supported()
-{
-		if(!Card_Have_ECC_Cert)
-		return;
-	
-
-	if(!check_Applicability_of_tests_RSP_SGP23_test("C033"))
-		return;
-		
-	TestOfMEPMode = 0;	
-	initial_condition_PROFILE_OPERATIONAL1_is_Enabled(); 
-	var ISD_P_Test01 = curProfile_ISD_P_AID;
-	
-	initial_condition_PROFILE_OPERATIONAL2_is_Disabled();
-	var ISD_P_Test02 = curProfile_ISD_P_AID;
-	
-	tracenamestr = "测试目的:eUICC不支持catBusy,主动式会话进行中(未给终端响应)时,通过ISD-P AID激活profile,不设置refreshFlag";
-	curDis.TraceStart(sno++,tracenamestr);
-	
-	
-	curLogicChannel = 0;
-	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
-	Ini_powerOn_eUICC_LPAe_not_activate();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
-	TS_MANAGE_CHANNEL_OPEN();
-	curLogicChannel = 1;
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
-	TS_SELECT("Select ISD",ISD_R_AID,"9000");
-	
-	
-  curLogicChannel=0;
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送SMS-PP;");
-	sSendType = SendTypeByOTA.SMS;
-	KIC = MNO_SCP80_ENC_KEY;
-	KID = MNO_SCP80_AUTH_KEY;
-	KIK = MNO_SCP80_DATA_ENC_KEY;
-	
-
-	sAPDU = "80F28002024F0000";	
-	
-	SendMessageToCard_GP(sSendType,"91XX",0,MNO_TAR_PROFILE_OPERATIONAL1,"12210015",sAPDU);
-	
-	var exResPara = new ExpandedRemoteResponsePara(arrExpandedRemoteCmdObj, "9000", "00", sSendType);
-	CardSendMessageToServerExpandedRemoteCmd(exResPara);
-	
-	curLogicChannel=1;
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EnableProfileRequest,refreshFlag为false;");
-
-	var enableProRequest = new EnableProfileRequest();
-	enableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.isdpAid,ISD_P_Test02);
-	enableProRequest.refreshFlag = BooleanValue_BerCode_False;
-	enableProRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(enableProRequest.hexData,"91","00","91XX");
-
-	curStrHandle.CheckData("BF3103800100", respData, "EnableProfileResponse");
-	
-	curLogicChannel = 0;
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送TerminalResponse命令;");
-	TerminalResponse("00","91XX");		
-	var ss = obj.GetState();
-	HaveReEntry91XX = false;
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 Fetch命令,主动式命令refresh;");
-	FetchStr = Fetch("","9000","");
-	var CmdDetails = GetValueByTag("01",1);
-	var CmdQualifier = CmdDetails.substr(4,2);
-	CheckData("04",CmdQualifier,"the command qualifier is equal to ’04’ (UICC Reset)");//'04' = UICC Reset;
-	
-	curLogicChannel = 0;
-	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
-	Ini_powerOn_eUICC_LPAe_not_activate();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
-	TS_MANAGE_CHANNEL_OPEN();
-	
-	curLogicChannel = 1;
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
-	TS_SELECT("Select ISD",ISD_R_AID,"9000");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
-
-	var proInfoListRequest = new ProfileInfoListRequest();
-	proInfoListRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-	
-
-	var proInfoListResponse = new  ProfileInfoListResponse();
-	proInfoListResponse.checkCardResDataFormat(respData);
-	
-	try
-	{
-		curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
-		curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
-		curStrHandle.CheckData(Profile_DISABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
-		
-		curStrHandle.CheckData(ICCID_OP_PROF2, proInfoListResponse.profileInfoListOk.arrOfElement[1].iccid, "ICCID");
-		curStrHandle.CheckData(ISD_P_Test02, proInfoListResponse.profileInfoListOk.arrOfElement[1].isdpAid, "ISD-P AID");
-		curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[1].profileState, "profile State");
-	}catch(e){
-		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
-	}
-	
-	curLogicChannel = 0;
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 Select命令,选择ICCID;");
-	var para1 = new SelectFileEFPara_3G("2FE2");
-	SendAPDU(para1.apdu);
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送read binary命令;");
-	var para1 = new ReadBinaryPara_3G("00","00","0A");
-	para1.apdu.resvalue = ICCID_OP_PROF2;
-	SendAPDU(para1.apdu);
-	
-	RecoverCard();
+// Author: 卡思Cas智能体
+// Date: 20261005-152741
+// Function: (purpose 原文未由 SGP.23 该 TC 提供,corpus vacuum 登记)TC_eUICC_ES10c.EnableProfile_Case4,Test Sequence #01-#10 Nominal (all 10 sequences),适用性 M。
+// Test points: ICH-SEQ01-IC1-K1-C1 ATR_present;ICH-SEQ01-IC1-K2-C2 FCP_Template
+//   ICH-SEQ01-IC1-K2-C4 SW;ICH-SEQ01-IC1-K3-C4 SW;ICH-SEQ01-IC1-K4-C4 final SW
+//   ICH-SEQ01-IC2-K1-C4 SW;ICH-SEQ01-IC2-K1-C3 CHANNEL_NUMBER extracted;ICH-SEQ01-IC2-K2-C4 SW
+//   S1-C1 SW1 91;S1-C2 enableResult ok;S2-C1 proactive command envelope;IC4-IC1-K1-C1 ATR_present
+//   IC4-IC1-K2-C2 FCP_Template;IC4-IC1-K2-C4 SW;IC4-IC1-K3-C4 SW;IC4-IC1-K4-C4 final SW
+//   IC4-IC2-K1-C4 SW;IC4-IC2-K1-C3 CHANNEL_NUMBER extracted;IC4-IC2-K2-C4 SW;S4-C1 SW
+//   S4-C2 contains PROFILE_INFO1;S5-C1 SW;S6-C1 SW;S6-C2 READ_BINARY data;S7-C1 SW1 91
+//   S7-C2 enableResult ok;S8-C1 proactive command envelope;IC10-IC1-K1-C1 ATR_present
+//   IC10-IC1-K2-C2 FCP_Template;IC10-IC1-K2-C4 SW;IC10-IC1-K3-C4 SW;IC10-IC1-K4-C4 final SW
+//   IC10-IC2-K1-C4 SW;IC10-IC2-K1-C3 CHANNEL_NUMBER extracted;IC10-IC2-K2-C4 SW;S10-C1 SW
+//   S10-C2 contains PROFILE_INFO1;S11-C1 SW;S12-C1 SW;S12-C2 READ_BINARY data;S13-C1 SW1 91
+//   S13-C2 enableResult ok;S14-C1 proactive command envelope;S15-C1 SW;IC17-IC1-K2-C2 FCP_Template
+//   IC17-IC1-K2-C4 SW;IC17-IC1-K3-C4 SW;IC17-IC1-K4-C4 final SW;IC18-IC2-K1-C4 SW
+//   IC18-IC2-K1-C3 CHANNEL_NUMBER extracted;IC18-IC2-K2-C4 SW;S18-C1 SW
+//   S18-C2 contains PROFILE_INFO1;S19-C1 SW;S20-C1 SW;S20-C2 READ_BINARY data;S21-C1 SW1 91
+//   S21-C2 enableResult ok;S22-C1 proactive command envelope;S23-C1 SW;IC25-IC1-K2-C2 FCP_Template
+//   IC25-IC1-K2-C4 SW;IC25-IC1-K3-C4 SW;IC25-IC1-K4-C4 final SW;IC26-IC2-K1-C4 SW
+//   IC26-IC2-K1-C3 CHANNEL_NUMBER extracted;IC26-IC2-K2-C4 SW;S26-C1 SW
+//   S26-C2 contains PROFILE_INFO1;S27-C1 SW;S28-C1 SW;S28-C2 READ_BINARY data;S29-C1 SW
+//   S29-C2 enableResult ok;S30-C1 final SW;S31-C1 SW;S31-C2 contains PROFILE_INFO1;S32-C1 SW
+//   S33-C1 SW;S33-C2 READ_BINARY data;S34-C1 SW;S34-C2 enableResult ok;S35-C1 final SW;S36-C1 SW
+//   S36-C2 contains PROFILE_INFO1;S37-C1 SW;S38-C1 SW;S38-C2 READ_BINARY data;S39-C1 SW1 91
+//   S40-C1 SW1 91;S40-C2 enableResult ok;S41-C1 proactive command envelope
+//   IC43-IC1-K1-C1 ATR_present;IC43-IC1-K2-C2 FCP_Template;IC43-IC1-K2-C4 SW;IC43-IC1-K3-C4 SW
+//   IC43-IC1-K4-C4 final SW;IC43-IC2-K1-C4 SW;IC43-IC2-K1-C3 CHANNEL_NUMBER extracted
+//   IC43-IC2-K2-C4 SW;S43-C1 SW;S43-C2 contains PROFILE_INFO1_DISABLED
+//   S43-C3 contains PROFILE_INFO2_ENABLED;S44-C1 SW;S45-C1 SW;S45-C2 READ_BINARY data;S46-C1 SW1 91
+//   S47-C1 SW;S47-C2 enableResult ok;S48-C1 SW;S48-C2 contains PROFILE_INFO1_DISABLED
+//   S48-C3 contains PROFILE_INFO2_ENABLED;S49-C1 SW;S50-C1 SW;S50-C2 READ_BINARY data;S51-C1 SW1 91
+//   S52-C1 proactive command envelope;S53-C1 SW;S53-C2 enableResult ok;S54-C1 SW1 91
+//   S55-C1 proactive command envelope;IC57-IC1-K1-C1 ATR_present;IC57-IC1-K2-C2 FCP_Template
+//   IC57-IC1-K2-C4 SW;IC57-IC1-K3-C4 SW;IC57-IC1-K4-C4 final SW;IC57-IC2-K1-C4 SW
+//   IC57-IC2-K1-C3 CHANNEL_NUMBER extracted;IC57-IC2-K2-C4 SW;S57-C1 SW
+//   S57-C2 contains PROFILE_INFO1_DISABLED;S57-C3 contains PROFILE_INFO2_ENABLED;S58-C1 SW
+//   S59-C1 SW;S59-C2 READ_BINARY data;S60-C1 SW1 91;S61-C1 proactive command envelope;S62-C1 SW
+//   S62-C2 enableResult ok;S63-C1 SW1 != 91;S64-C1 SW;S64-C2 contains PROFILE_INFO1_DISABLED
+//   S64-C3 contains PROFILE_INFO2_ENABLED;S65-C1 SW;S66-C1 SW;S66-C2 READ_BINARY data
+// 本函数由 CaseIR 4.2.21.2.3 编译生成(fullwave-blindgen-live-70-W1-laneA2,SGP.23 v1.16 × SGP.22 v2.7):字节权威=CaseIR,非誊录黄金脚本。
+// Value-free template: every data byte is injected from CaseIR fields; no scaffold globals (see docs/speconly/compile-symbol-migration.md).
+// 适用性 M:编译期门,运行时由 harness 环境前置承担。
+function TC_eUICC_ES10c_EnableProfile_Case4_01_10_Nominal_all_10_sequences() {
+    var bind = curBind;
+    var profileAidSession = BindEs10xProcProfileDynamic.beginSession(bind, "TC_eUICC_ES10c_EnableProfile_Case4_01_10_Nominal_all_10_sequences");
+    // runtime-bound payload: ISD_P_AID1 stays in execution domain; context_lineage: {"context_id": "ccd6682ef04d74b7", "authority_reference": "E_tc_4221/468-468/G_annexB_dynamic:L51"}
+    var cardCtxLoad1 = BindCardContext.load(bind, profileAidSession, "ISD_P_AID1", {"tag":"4F","bytes":16,"range":{"minHex":"A0000005591010FFFFFFFF8900001000","maxHex":"A0000005591010FFFFFFFF8900FFFF00","lastByte":"00"}}, {token: CARD_CONTEXT_TOKEN, domainId: CARD_CONTEXT_DOMAIN});
+    // runtime-bound payload: ISD_P_AID2 stays in execution domain; context_lineage: {"context_id": "ccd6682ef04d74b7", "authority_reference": "E_tc_4221/607-607/G_annexB_dynamic:L52"}
+    var cardCtxLoad2 = BindCardContext.load(bind, profileAidSession, "ISD_P_AID2", {"tag":"4F","bytes":16,"range":{"minHex":"A0000005591010FFFFFFFF8900001000","maxHex":"A0000005591010FFFFFFFF8900FFFF00","lastByte":"00"}}, {token: CARD_CONTEXT_TOKEN, domainId: CARD_CONTEXT_DOMAIN});
+    // TC-GEN-1 eUICC: The PROFILE_OPERATIONAL1 has been installed on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+    // SEQ01-IC-T1 eUICC: The PROFILE_OPERATIONAL1 is Disabled on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+    // SEQ01-IC-T2 eUICC: The PROFILE_OPERATIONAL1 corresponds to <ISD_P_AID1>.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+    // SEQ02-IC-T1 eUICC: The PROFILE_OPERATIONAL1 is Disabled on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+    // SEQ02-IC1 PROC_EUICC_INITIALIZATION_SEQUENCE: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+    // SEQ02-IC2 PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+    // SEQ03-IC-T1 eUICC: The PROFILE_OPERATIONAL1 is Disabled on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+    // SEQ03-IC-T2 eUICC: The PROFILE_OPERATIONAL1 corresponds to <ISD_P_AID1>.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+    // SEQ03-IC1 PROC_EUICC_INITIALIZATION_SEQUENCE_eUICCProfileStateChanged: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+    // SEQ03-IC2 PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+    // SEQ04-IC-T1 eUICC: The PROFILE_OPERATIONAL1 is Disabled on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+    // SEQ04-IC1 PROC_EUICC_INITIALIZATION_SEQUENCE_eUICCProfileStateChanged: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+    // SEQ04-IC2 PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+    // SEQ05-IC-T1 eUICC: The PROFILE_OPERATIONAL1 is Disabled on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+    // SEQ05-IC-T2 eUICC: The PROFILE_OPERATIONAL1 corresponds to <ISD_P_AID1>.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+    // SEQ05-IC1 PROC_EUICC_INITIALIZATION_SEQUENCE: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+    // SEQ05-IC2 PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+    // SEQ06-IC-T1 eUICC: The PROFILE_OPERATIONAL1 is Disabled on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+    // SEQ06-IC1 PROC_EUICC_INITIALIZATION_SEQUENCE: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+    // SEQ06-IC2 PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+    // SEQ07-IC-T1 eUICC: The PROFILE_OPERATIONAL1 is Enabled on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+    // SEQ07-IC-T2 eUICC: The PROFILE_OPERATIONAL2 has been installed on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+    // SEQ07-IC-T3 eUICC: The PROFILE_OPERATIONAL2 is Disabled on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+    // SEQ07-IC-T4 eUICC: The PROFILE_OPERATIONAL2 corresponds to <ISD_P_AID2>.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+    // SEQ07-IC1 PROC_EUICC_INITIALIZATION_SEQUENCE: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+    // SEQ07-IC2 PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+    // SEQ07-IC4 Do not send FETCH command: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+    // SEQ08-IC-T1 eUICC: The PROFILE_OPERATIONAL1 is Enabled on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+    // SEQ08-IC-T2 eUICC: The PROFILE_OPERATIONAL2 has been installed on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+    // SEQ08-IC-T3 eUICC: The PROFILE_OPERATIONAL2 is Disabled on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+    // SEQ08-IC-T4 eUICC: The PROFILE_OPERATIONAL2 corresponds to <ISD_P_AID2>.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+    // SEQ08-IC1 PROC_EUICC_INITIALIZATION_SEQUENCE: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+    // SEQ08-IC2 PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+    // SEQ08-IC4 Do not send FETCH command: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+    // SEQ09-IC-T1 eUICC: The PROFILE_OPERATIONAL1 is Enabled on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+    // SEQ09-IC-T2 eUICC: The PROFILE_OPERATIONAL2 has been installed on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+    // SEQ09-IC-T3 eUICC: The PROFILE_OPERATIONAL2 is Disabled on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+    // SEQ09-IC-T4 eUICC: The PROFILE_OPERATIONAL2 corresponds to <ISD_P_AID2>.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+    // SEQ09-IC1 PROC_EUICC_INITIALIZATION_SEQUENCE: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+    // SEQ09-IC2 PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+    // SEQ10-IC-T1 eUICC: The PROFILE_OPERATIONAL1 is Enabled on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+    // SEQ10-IC-T2 eUICC: The PROFILE_OPERATIONAL2 has been installed on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+    // SEQ10-IC-T3 eUICC: The PROFILE_OPERATIONAL2 is Disabled on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+    // SEQ10-IC-T4 eUICC: The PROFILE_OPERATIONAL2 corresponds to <ISD_P_AID2>.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+    // SEQ10-IC1 PROC_EUICC_INITIALIZATION_SEQUENCE: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+    // SEQ10-IC2 PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+    // PREFLIGHT_CONTEXT AUTHORIZED_DISCOVERY: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+
+    // IC head inline (initial_conditions → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
+    var s68 = bind.resetAndAtr();
+    bind.checkData("ICH-SEQ01-IC1-K1-C1 ATR_present", "1", s68.atr_hex !== "" ? "1" : "0");
+
+    // IC head inline (initial_conditions → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
+    // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
+    var s69 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
+    bind.checkData("ICH-SEQ01-IC1-K2-C2 FCP_Template", "1", s69.resp.length > 0 ? "1" : "0");
+    bind.checkData("ICH-SEQ01-IC1-K2-C4 SW", "9000", s69.sw);
+
+    // IC head inline (initial_conditions → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
+    var s70 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
+    bind.checkData("ICH-SEQ01-IC1-K3-C4 SW", "9000", s70.sw);
+
+    // IC head inline (initial_conditions → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
+    var steady71 = bind.runToSteadyState(function () {
+        return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
+    });
+    bind.checkData("ICH-SEQ01-IC1-K4-C4 final SW", "9000", steady71.final.sw);
+
+    // IC head inline (initial_conditions → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
+    // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
+    var s72 = bind.manageChannelOpen("9000");
+    bind.checkData("ICH-SEQ01-IC2-K1-C4 SW", "9000", s72.sw);
+    bind.checkData("ICH-SEQ01-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s72.chan !== null ? "1" : "0");
+
+    // IC head inline (initial_conditions → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
+    // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
+    var s73 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
+    // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
+    bind.checkData("ICH-SEQ01-IC2-K2-C4 SW", "9000", s73.sw);
+
+    // 步骤 1:MTD_STORE_DATA(tc_step)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var s1 = bind.sendApdu("81", "E2", "91", "00", "BF2D035C014F", "00", "9000");
+
+    // 步骤 2:SEQ01-1] MTD_STORE_DATA(tc_step;REQ: RQ24_010, RQ32_011, RQ32_016_1, RQ32_016_2, RQ57_128, RQ57_129, RQ57_133_3, RQ57_136, RQ57_137)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla2 = s72.chan !== null ? (s72.chan <= 3 ? 128 + s72.chan : 188 + s72.chan).toString(16).toUpperCase() : null;
+    // runtime-bound payload: ISD_P_AID1 stays in execution domain
+    var s2 = bind.sendApdu(sdCla2, "E2", "91", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID1", "BF31154F10", "0101FF", profileAidSession), "00", null);
+    BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID1", s2.cmd, profileAidSession);
+    bind.checkData("S1-C1 SW1 91", "91", s2.sw.substring(0, 2));
+    var r2w2 = BindGecaProc.parseGecaResponse(s2.resp, {outer: "BF31", required: ["80"]});
+    bind.checkData("S1-C2 enableResult ok", "00", (r2w2.ok && r2w2.fields["80"] === "00") ? "00" : (r2w2.fields["80"] || "absent"));
+
+    // 步骤 3:SEQ01-2] FETCH 'XX'(tc_step;REQ: RQ32_016_3, RQ32_017, RQ57_134)
+    // FETCH header literals follow the golden wire evidence 8012 (same
+    // anchor as runToSteadyState; J Annex D.4 has no FETCH row, D 2.2.2
+    // gives mechanism only). Le = pending length from the last 91XX
+    // (chain rule, binding-internal state).
+    var s3 = bind.fetchPending("80", "12", "00", "00", null);
+    bind.checkData("S2-C1 proactive command envelope", "1", (s3.resp.length >= 4 && s3.resp.substring(0, 2) === "D0") ? "1" : "0");
+    // S2-C1: REFRESH type/mode bytes are not corpus-fixed (envelope face only; per-mode bytes absent from input).
+    // S3:主动会话协议闭合(TS 102 223 §6.3:主动命令必须 TR 应答;
+    // UICC Reset 变体 E 表无 TR 行属编辑省略,golden U3 线证同构)。
+    var s3tr = bind.terminalResponseForPending("80", "14", "00", "00", "9000");
+
+    // IC ref inline @E 步骤 4(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
+    var s74 = bind.resetAndAtr();
+    bind.checkData("IC4-IC1-K1-C1 ATR_present", "1", s74.atr_hex !== "" ? "1" : "0");
+
+    // IC ref inline @E 步骤 4(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
+    // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
+    var s75 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
+    bind.checkData("IC4-IC1-K2-C2 FCP_Template", "1", s75.resp.length > 0 ? "1" : "0");
+    bind.checkData("IC4-IC1-K2-C4 SW", "9000", s75.sw);
+
+    // IC ref inline @E 步骤 4(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
+    var s76 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
+    bind.checkData("IC4-IC1-K3-C4 SW", "9000", s76.sw);
+
+    // IC ref inline @E 步骤 4(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
+    var steady77 = bind.runToSteadyState(function () {
+        return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
+    });
+    bind.checkData("IC4-IC1-K4-C4 final SW", "9000", steady77.final.sw);
+
+    // IC ref inline @E 步骤 4(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
+    // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
+    var s78 = bind.manageChannelOpen("9000");
+    bind.checkData("IC4-IC2-K1-C4 SW", "9000", s78.sw);
+    bind.checkData("IC4-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s78.chan !== null ? "1" : "0");
+
+    // IC ref inline @E 步骤 4(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
+    // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
+    var s79 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
+    // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
+    bind.checkData("IC4-IC2-K2-C4 SW", "9000", s79.sw);
+
+    // 步骤 5:SEQ01-4] MTD_STORE_DATA(tc_step;REQ: RQ24_010, RQ32_011, RQ32_016_1, RQ32_016_2, RQ57_128, RQ57_129, RQ57_133_3, RQ57_136, RQ57_137)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla5 = s78.chan !== null ? (s78.chan <= 3 ? 128 + s78.chan : 188 + s78.chan).toString(16).toUpperCase() : null;
+    // runtime-bound payload: ISD_P_AID1 stays in execution domain
+    var s5 = bind.sendApdu(sdCla5, "E2", "91", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID1", "BF2D16A0124F10", "", profileAidSession), "00", "9000");
+    bind.checkData("S4-C1 SW", "9000", s5.sw);
+    BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID1", s5.cmd, profileAidSession);
+    var r2p5 = BindEs10xProcProfile.walkChoiceList(s5.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+    var r2has5_0 = false;
+    for (var r2i5_0 = 0; r2i5_0 < r2p5.elements.length; r2i5_0++) {
+        var f = r2p5.elements[r2i5_0].fields;
+        if (f["5A"] === "989209012143658709F5" && f["9F70"] === "01") { r2has5_0 = true; break; }
+    }
+    bind.checkData("S4-C2 contains PROFILE_INFO1", "1", (r2p5.branch_tag === "A0" && r2has5_0) ? "1" : "0");
+
+    // 步骤 6:SEQ01-5] [SELECT_ICCID(tc_step)
+    var s6 = bind.sendApdu("00", "A4", "00", "0C", "2FE2", null, "9000");
+    bind.checkData("S5-C1 SW", "9000", s6.sw);
+
+    // 步骤 7:SEQ01-6] [READ_BINARY] with <L>=0x0A(tc_step;REQ: RQ34_015)
+    var s7 = bind.sendApdu("00", "B0", "00", "00", null, "0A", "9000");
+    bind.checkData("S6-C1 SW", "9000", s7.sw);
+    bind.checkData("S6-C2 READ_BINARY data", "989209012143658709F5", s7.resp);
+
+    // 步骤 8:SEQ02-1] MTD_STORE_DATA(tc_step;REQ: RQ32_011, RQ32_016_1, RQ32_016_2, RQ57_128, RQ57_129, RQ57_133_3, RQ57_136, RQ57_137)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla8 = s78.chan !== null ? (s78.chan <= 3 ? 128 + s78.chan : 188 + s78.chan).toString(16).toUpperCase() : null;
+    var s8 = bind.sendApdu(sdCla8, "E2", "91", "00", "BF310F5A0A989209012143658709F50101FF", "00", null);
+    bind.checkData("S7-C1 SW1 91", "91", s8.sw.substring(0, 2));
+    var r2w8 = BindGecaProc.parseGecaResponse(s8.resp, {outer: "BF31", required: ["80"]});
+    bind.checkData("S7-C2 enableResult ok", "00", (r2w8.ok && r2w8.fields["80"] === "00") ? "00" : (r2w8.fields["80"] || "absent"));
+
+    // 步骤 9:SEQ02-2] FETCH 'XX'(tc_step;REQ: RQ32_016_3, RQ32_017, RQ57_134)
+    // FETCH header literals follow the golden wire evidence 8012 (same
+    // anchor as runToSteadyState; J Annex D.4 has no FETCH row, D 2.2.2
+    // gives mechanism only). Le = pending length from the last 91XX
+    // (chain rule, binding-internal state).
+    var s9 = bind.fetchPending("80", "12", "00", "00", null);
+    bind.checkData("S8-C1 proactive command envelope", "1", (s9.resp.length >= 4 && s9.resp.substring(0, 2) === "D0") ? "1" : "0");
+    // S8-C1: REFRESH type/mode bytes are not corpus-fixed (envelope face only; per-mode bytes absent from input).
+    // S9:主动会话协议闭合(TS 102 223 §6.3:主动命令必须 TR 应答;
+    // UICC Reset 变体 E 表无 TR 行属编辑省略,golden U3 线证同构)。
+    var s9tr = bind.terminalResponseForPending("80", "14", "00", "00", "9000");
+
+    // IC ref inline @E 步骤 10(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
+    var s80 = bind.resetAndAtr();
+    bind.checkData("IC10-IC1-K1-C1 ATR_present", "1", s80.atr_hex !== "" ? "1" : "0");
+
+    // IC ref inline @E 步骤 10(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
+    // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
+    var s81 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
+    bind.checkData("IC10-IC1-K2-C2 FCP_Template", "1", s81.resp.length > 0 ? "1" : "0");
+    bind.checkData("IC10-IC1-K2-C4 SW", "9000", s81.sw);
+
+    // IC ref inline @E 步骤 10(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
+    var s82 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
+    bind.checkData("IC10-IC1-K3-C4 SW", "9000", s82.sw);
+
+    // IC ref inline @E 步骤 10(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
+    var steady83 = bind.runToSteadyState(function () {
+        return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
+    });
+    bind.checkData("IC10-IC1-K4-C4 final SW", "9000", steady83.final.sw);
+
+    // IC ref inline @E 步骤 10(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
+    // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
+    var s84 = bind.manageChannelOpen("9000");
+    bind.checkData("IC10-IC2-K1-C4 SW", "9000", s84.sw);
+    bind.checkData("IC10-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s84.chan !== null ? "1" : "0");
+
+    // IC ref inline @E 步骤 10(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
+    // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
+    var s85 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
+    // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
+    bind.checkData("IC10-IC2-K2-C4 SW", "9000", s85.sw);
+
+    // 步骤 11:SEQ02-4] MTD_STORE_DATA(tc_step;REQ: RQ32_011, RQ32_016_1, RQ32_016_2, RQ57_128, RQ57_129, RQ57_133_3, RQ57_136, RQ57_137)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla11 = s84.chan !== null ? (s84.chan <= 3 ? 128 + s84.chan : 188 + s84.chan).toString(16).toUpperCase() : null;
+    var s11 = bind.sendApdu(sdCla11, "E2", "91", "00", "BF2D0EA00C5A0A989209012143658709F5", "00", "9000");
+    bind.checkData("S10-C1 SW", "9000", s11.sw);
+    var r2p11 = BindEs10xProcProfile.walkChoiceList(s11.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+    var r2has11_0 = false;
+    for (var r2i11_0 = 0; r2i11_0 < r2p11.elements.length; r2i11_0++) {
+        var f = r2p11.elements[r2i11_0].fields;
+        if (f["5A"] === "989209012143658709F5" && f["9F70"] === "01") { r2has11_0 = true; break; }
+    }
+    bind.checkData("S10-C2 contains PROFILE_INFO1", "1", (r2p11.branch_tag === "A0" && r2has11_0) ? "1" : "0");
+
+    // 步骤 12:SEQ02-5] [SELECT_ICCID(tc_step)
+    var s12 = bind.sendApdu("00", "A4", "00", "0C", "2FE2", null, "9000");
+    bind.checkData("S11-C1 SW", "9000", s12.sw);
+
+    // 步骤 13:SEQ02-6] [READ_BINARY] with <L>=0x0A(tc_step;REQ: RQ34_015)
+    var s13 = bind.sendApdu("00", "B0", "00", "00", null, "0A", "9000");
+    bind.checkData("S12-C1 SW", "9000", s13.sw);
+    bind.checkData("S12-C2 READ_BINARY data", "989209012143658709F5", s13.resp);
+
+    // 步骤 14:SEQ03-1] MTD_STORE_DATA(tc_step;REQ: RQ24_010, RQ32_011, RQ32_016_1, RQ32_016_2, RQ57_128, RQ57_129, RQ57_133_3, RQ57_136, RQ57_137)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla14 = s84.chan !== null ? (s84.chan <= 3 ? 128 + s84.chan : 188 + s84.chan).toString(16).toUpperCase() : null;
+    // runtime-bound payload: ISD_P_AID1 stays in execution domain
+    var s14 = bind.sendApdu(sdCla14, "E2", "91", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID1", "BF31154F10", "0101FF", profileAidSession), "00", null);
+    BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID1", s14.cmd, profileAidSession);
+    bind.checkData("S13-C1 SW1 91", "91", s14.sw.substring(0, 2));
+    var r2w14 = BindGecaProc.parseGecaResponse(s14.resp, {outer: "BF31", required: ["80"]});
+    bind.checkData("S13-C2 enableResult ok", "00", (r2w14.ok && r2w14.fields["80"] === "00") ? "00" : (r2w14.fields["80"] || "absent"));
+
+    // 步骤 15:SEQ03-2] FETCH 'XX'(tc_step;REQ: RQ32_016_3, RQ32_017, RQ57_134)
+    // FETCH header literals follow the golden wire evidence 8012 (same
+    // anchor as runToSteadyState; J Annex D.4 has no FETCH row, D 2.2.2
+    // gives mechanism only). Le = pending length from the last 91XX
+    // (chain rule, binding-internal state).
+    var s15 = bind.fetchPending("80", "12", "00", "00", null);
+    bind.checkData("S14-C1 proactive command envelope", "1", (s15.resp.length >= 4 && s15.resp.substring(0, 2) === "D0") ? "1" : "0");
+    // S14-C1: REFRESH type/mode bytes are not corpus-fixed (envelope face only; per-mode bytes absent from input).
+
+    // 步骤 16:SEQ03-3] TERMINAL RESPONSE(tc_step)
+    // TERMINAL RESPONSE data is dynamically built by the binding from the
+    // last FETCHed proactive command (D 2.2.2; buildTrData) - never static.
+    // Header literals follow the golden wire evidence 8014.
+    var s16 = bind.terminalResponseForPending("80", "14", "00", "00", "9000");
+    bind.checkData("S15-C1 SW", "9000", s16.sw);
+
+    // IC ref inline @E 步骤 17(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE_eUICCProfileStateChanged, K row 2):SELECT_MF(K 语料机械展开)
+    // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
+    var s86 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
+    bind.checkData("IC17-IC1-K2-C2 FCP_Template", "1", s86.resp.length > 0 ? "1" : "0");
+    bind.checkData("IC17-IC1-K2-C4 SW", "9000", s86.sw);
+
+    // IC ref inline @E 步骤 17(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE_eUICCProfileStateChanged, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
+    var s87 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
+    bind.checkData("IC17-IC1-K3-C4 SW", "9000", s87.sw);
+
+    // IC ref inline @E 步骤 17(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE_eUICCProfileStateChanged, K row 4):TERMINAL_PROFILE_eUICCProfileStateChanged(K 语料机械展开)
+    var steady88 = bind.runToSteadyState(function () {
+        return bind.sendTerminalProfile("FFFFFFFFFFFF1FFFFF0302FFFF9FFFEFDFFF0FFF0FFFFF0FFF03003F7FFF03FFFF20", "9000");
+    });
+    bind.checkData("IC17-IC1-K4-C4 final SW", "9000", steady88.final.sw);
+
+    // IC ref inline @E 步骤 18(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
+    // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
+    var s89 = bind.manageChannelOpen("9000");
+    bind.checkData("IC18-IC2-K1-C4 SW", "9000", s89.sw);
+    bind.checkData("IC18-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s89.chan !== null ? "1" : "0");
+
+    // IC ref inline @E 步骤 18(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
+    // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
+    var s90 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
+    // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
+    bind.checkData("IC18-IC2-K2-C4 SW", "9000", s90.sw);
+
+    // 步骤 19:SEQ03-6] MTD_STORE_DATA(tc_step;REQ: RQ24_010, RQ32_011, RQ32_016_1, RQ32_016_2, RQ57_128, RQ57_129, RQ57_133_3, RQ57_136, RQ57_137)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla19 = s89.chan !== null ? (s89.chan <= 3 ? 128 + s89.chan : 188 + s89.chan).toString(16).toUpperCase() : null;
+    // runtime-bound payload: ISD_P_AID1 stays in execution domain
+    var s19 = bind.sendApdu(sdCla19, "E2", "91", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID1", "BF2D16A0124F10", "", profileAidSession), "00", "9000");
+    bind.checkData("S18-C1 SW", "9000", s19.sw);
+    BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID1", s19.cmd, profileAidSession);
+    var r2p19 = BindEs10xProcProfile.walkChoiceList(s19.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+    var r2has19_0 = false;
+    for (var r2i19_0 = 0; r2i19_0 < r2p19.elements.length; r2i19_0++) {
+        var f = r2p19.elements[r2i19_0].fields;
+        if (f["5A"] === "989209012143658709F5" && f["9F70"] === "01") { r2has19_0 = true; break; }
+    }
+    bind.checkData("S18-C2 contains PROFILE_INFO1", "1", (r2p19.branch_tag === "A0" && r2has19_0) ? "1" : "0");
+
+    // 步骤 20:SEQ03-7] [SELECT_ICCID(tc_step)
+    var s20 = bind.sendApdu("00", "A4", "00", "0C", "2FE2", null, "9000");
+    bind.checkData("S19-C1 SW", "9000", s20.sw);
+
+    // 步骤 21:SEQ03-8] [READ_BINARY] with <L>=0x0A(tc_step;REQ: RQ34_015)
+    var s21 = bind.sendApdu("00", "B0", "00", "00", null, "0A", "9000");
+    bind.checkData("S20-C1 SW", "9000", s21.sw);
+    bind.checkData("S20-C2 READ_BINARY data", "989209012143658709F5", s21.resp);
+
+    // 步骤 22:SEQ04-1] MTD_STORE_DATA(tc_step;REQ: RQ32_011, RQ32_016_1, RQ32_016_2, RQ57_128, RQ57_129, RQ57_133_3, RQ57_136, RQ57_137)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla22 = s89.chan !== null ? (s89.chan <= 3 ? 128 + s89.chan : 188 + s89.chan).toString(16).toUpperCase() : null;
+    var s22 = bind.sendApdu(sdCla22, "E2", "91", "00", "BF310F5A0A989209012143658709F50101FF", "00", null);
+    bind.checkData("S21-C1 SW1 91", "91", s22.sw.substring(0, 2));
+    var r2w22 = BindGecaProc.parseGecaResponse(s22.resp, {outer: "BF31", required: ["80"]});
+    bind.checkData("S21-C2 enableResult ok", "00", (r2w22.ok && r2w22.fields["80"] === "00") ? "00" : (r2w22.fields["80"] || "absent"));
+
+    // 步骤 23:SEQ04-2] FETCH 'XX'(tc_step;REQ: RQ32_016_3, RQ32_017, RQ57_134)
+    // FETCH header literals follow the golden wire evidence 8012 (same
+    // anchor as runToSteadyState; J Annex D.4 has no FETCH row, D 2.2.2
+    // gives mechanism only). Le = pending length from the last 91XX
+    // (chain rule, binding-internal state).
+    var s23 = bind.fetchPending("80", "12", "00", "00", null);
+    bind.checkData("S22-C1 proactive command envelope", "1", (s23.resp.length >= 4 && s23.resp.substring(0, 2) === "D0") ? "1" : "0");
+    // S22-C1: REFRESH type/mode bytes are not corpus-fixed (envelope face only; per-mode bytes absent from input).
+
+    // 步骤 24:SEQ04-3] TERMINAL RESPONSE(tc_step)
+    // TERMINAL RESPONSE data is dynamically built by the binding from the
+    // last FETCHed proactive command (D 2.2.2; buildTrData) - never static.
+    // Header literals follow the golden wire evidence 8014.
+    var s24 = bind.terminalResponseForPending("80", "14", "00", "00", "9000");
+    bind.checkData("S23-C1 SW", "9000", s24.sw);
+
+    // IC ref inline @E 步骤 25(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE_eUICCProfileStateChanged, K row 2):SELECT_MF(K 语料机械展开)
+    // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
+    var s91 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
+    bind.checkData("IC25-IC1-K2-C2 FCP_Template", "1", s91.resp.length > 0 ? "1" : "0");
+    bind.checkData("IC25-IC1-K2-C4 SW", "9000", s91.sw);
+
+    // IC ref inline @E 步骤 25(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE_eUICCProfileStateChanged, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
+    var s92 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
+    bind.checkData("IC25-IC1-K3-C4 SW", "9000", s92.sw);
+
+    // IC ref inline @E 步骤 25(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE_eUICCProfileStateChanged, K row 4):TERMINAL_PROFILE_eUICCProfileStateChanged(K 语料机械展开)
+    var steady93 = bind.runToSteadyState(function () {
+        return bind.sendTerminalProfile("FFFFFFFFFFFF1FFFFF0302FFFF9FFFEFDFFF0FFF0FFFFF0FFF03003F7FFF03FFFF20", "9000");
+    });
+    bind.checkData("IC25-IC1-K4-C4 final SW", "9000", steady93.final.sw);
+
+    // IC ref inline @E 步骤 26(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
+    // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
+    var s94 = bind.manageChannelOpen("9000");
+    bind.checkData("IC26-IC2-K1-C4 SW", "9000", s94.sw);
+    bind.checkData("IC26-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s94.chan !== null ? "1" : "0");
+
+    // IC ref inline @E 步骤 26(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
+    // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
+    var s95 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
+    // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
+    bind.checkData("IC26-IC2-K2-C4 SW", "9000", s95.sw);
+
+    // 步骤 27:SEQ04-6] MTD_STORE_DATA(tc_step;REQ: RQ32_011, RQ32_016_1, RQ32_016_2, RQ57_128, RQ57_129, RQ57_133_3, RQ57_136, RQ57_137)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla27 = s94.chan !== null ? (s94.chan <= 3 ? 128 + s94.chan : 188 + s94.chan).toString(16).toUpperCase() : null;
+    var s27 = bind.sendApdu(sdCla27, "E2", "91", "00", "BF2D0EA00C5A0A989209012143658709F5", "00", "9000");
+    bind.checkData("S26-C1 SW", "9000", s27.sw);
+    var r2p27 = BindEs10xProcProfile.walkChoiceList(s27.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+    var r2has27_0 = false;
+    for (var r2i27_0 = 0; r2i27_0 < r2p27.elements.length; r2i27_0++) {
+        var f = r2p27.elements[r2i27_0].fields;
+        if (f["5A"] === "989209012143658709F5" && f["9F70"] === "01") { r2has27_0 = true; break; }
+    }
+    bind.checkData("S26-C2 contains PROFILE_INFO1", "1", (r2p27.branch_tag === "A0" && r2has27_0) ? "1" : "0");
+
+    // 步骤 28:SEQ04-7] [SELECT_ICCID(tc_step)
+    var s28 = bind.sendApdu("00", "A4", "00", "0C", "2FE2", null, "9000");
+    bind.checkData("S27-C1 SW", "9000", s28.sw);
+
+    // 步骤 29:SEQ04-8] [READ_BINARY] with <L>=0x0A(tc_step;REQ: RQ34_015)
+    var s29 = bind.sendApdu("00", "B0", "00", "00", null, "0A", "9000");
+    bind.checkData("S28-C1 SW", "9000", s29.sw);
+    bind.checkData("S28-C2 READ_BINARY data", "989209012143658709F5", s29.resp);
+
+    // 步骤 30:SEQ05-1] MTD_STORE_DATA(tc_step;REQ: RQ32_011, RQ32_017_1, RQ32_017_2, RQ57_128, RQ57_129, RQ57_132, RQ57_136, RQ57_137, RQ57_132_1, RQ24_010)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla30 = s94.chan !== null ? (s94.chan <= 3 ? 128 + s94.chan : 188 + s94.chan).toString(16).toUpperCase() : null;
+    // runtime-bound payload: ISD_P_AID1 stays in execution domain
+    var s30 = bind.sendApdu(sdCla30, "E2", "91", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID1", "BF31154F10", "010100", profileAidSession), "00", "9000");
+    bind.checkData("S29-C1 SW", "9000", s30.sw);
+    BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID1", s30.cmd, profileAidSession);
+    var r2w30 = BindGecaProc.parseGecaResponse(s30.resp, {outer: "BF31", required: ["80"]});
+    bind.checkData("S29-C2 enableResult ok", "00", (r2w30.ok && r2w30.fields["80"] === "00") ? "00" : (r2w30.fields["80"] || "absent"));
+
+    // 步骤 31:SEQ05-2] [TERMINAL_PROFILE(tc_step;REQ: RQ32_018_1, RQ57_135_4)
+    var steady31 = bind.runToSteadyState(function () {
+        return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
+    });
+    bind.checkData("S30-C1 final SW", "9000", steady31.final.sw);
+
+    // 步骤 32:SEQ05-3] MTD_STORE_DATA(tc_step;REQ: RQ32_011, RQ32_017_1, RQ32_017_2, RQ57_128, RQ57_129, RQ57_132, RQ57_136, RQ57_137, RQ57_132_1, RQ24_010)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla32 = s94.chan !== null ? (s94.chan <= 3 ? 128 + s94.chan : 188 + s94.chan).toString(16).toUpperCase() : null;
+    // runtime-bound payload: ISD_P_AID1 stays in execution domain
+    var s32 = bind.sendApdu(sdCla32, "E2", "91", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID1", "BF2D16A0124F10", "", profileAidSession), "00", "9000");
+    bind.checkData("S31-C1 SW", "9000", s32.sw);
+    BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID1", s32.cmd, profileAidSession);
+    var r2p32 = BindEs10xProcProfile.walkChoiceList(s32.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+    var r2has32_0 = false;
+    for (var r2i32_0 = 0; r2i32_0 < r2p32.elements.length; r2i32_0++) {
+        var f = r2p32.elements[r2i32_0].fields;
+        if (f["5A"] === "989209012143658709F5" && f["9F70"] === "01") { r2has32_0 = true; break; }
+    }
+    bind.checkData("S31-C2 contains PROFILE_INFO1", "1", (r2p32.branch_tag === "A0" && r2has32_0) ? "1" : "0");
+
+    // 步骤 33:SEQ05-4] [SELECT_ICCID(tc_step)
+    var s33 = bind.sendApdu("00", "A4", "00", "0C", "2FE2", null, "9000");
+    bind.checkData("S32-C1 SW", "9000", s33.sw);
+
+    // 步骤 34:SEQ05-5] [READ_BINARY] with <L>=0x0A(tc_step;REQ: RQ34_015)
+    var s34 = bind.sendApdu("00", "B0", "00", "00", null, "0A", "9000");
+    bind.checkData("S33-C1 SW", "9000", s34.sw);
+    bind.checkData("S33-C2 READ_BINARY data", "989209012143658709F5", s34.resp);
+
+    // 步骤 35:SEQ06-1] MTD_STORE_DATA(tc_step;REQ: RQ32_011, RQ32_017_1, RQ32_017_2, RQ57_128, RQ57_129, RQ57_132, RQ57_136, RQ57_137, RQ57_132_1)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla35 = s94.chan !== null ? (s94.chan <= 3 ? 128 + s94.chan : 188 + s94.chan).toString(16).toUpperCase() : null;
+    var s35 = bind.sendApdu(sdCla35, "E2", "91", "00", "BF310F5A0A989209012143658709F5010100", "00", "9000");
+    bind.checkData("S34-C1 SW", "9000", s35.sw);
+    var r2w35 = BindGecaProc.parseGecaResponse(s35.resp, {outer: "BF31", required: ["80"]});
+    bind.checkData("S34-C2 enableResult ok", "00", (r2w35.ok && r2w35.fields["80"] === "00") ? "00" : (r2w35.fields["80"] || "absent"));
+
+    // 步骤 36:SEQ06-2] [TERMINAL_PROFILE(tc_step;REQ: RQ32_018_1, RQ57_135_4)
+    var steady36 = bind.runToSteadyState(function () {
+        return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
+    });
+    bind.checkData("S35-C1 final SW", "9000", steady36.final.sw);
+
+    // 步骤 37:SEQ06-3] MTD_STORE_DATA(tc_step;REQ: RQ32_011, RQ32_017_1, RQ32_017_2, RQ57_128, RQ57_129, RQ57_132, RQ57_136, RQ57_137, RQ57_132_1)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla37 = s94.chan !== null ? (s94.chan <= 3 ? 128 + s94.chan : 188 + s94.chan).toString(16).toUpperCase() : null;
+    var s37 = bind.sendApdu(sdCla37, "E2", "91", "00", "BF2D0EA00C5A0A989209012143658709F5", "00", "9000");
+    bind.checkData("S36-C1 SW", "9000", s37.sw);
+    var r2p37 = BindEs10xProcProfile.walkChoiceList(s37.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+    var r2has37_0 = false;
+    for (var r2i37_0 = 0; r2i37_0 < r2p37.elements.length; r2i37_0++) {
+        var f = r2p37.elements[r2i37_0].fields;
+        if (f["5A"] === "989209012143658709F5" && f["9F70"] === "01") { r2has37_0 = true; break; }
+    }
+    bind.checkData("S36-C2 contains PROFILE_INFO1", "1", (r2p37.branch_tag === "A0" && r2has37_0) ? "1" : "0");
+
+    // 步骤 38:SEQ06-4] [SELECT_ICCID(tc_step)
+    var s38 = bind.sendApdu("00", "A4", "00", "0C", "2FE2", null, "9000");
+    bind.checkData("S37-C1 SW", "9000", s38.sw);
+
+    // 步骤 39:SEQ06-5] [READ_BINARY] with <L>=0x0A(tc_step;REQ: RQ34_015)
+    var s39 = bind.sendApdu("00", "B0", "00", "00", null, "0A", "9000");
+    bind.checkData("S38-C1 SW", "9000", s39.sw);
+    bind.checkData("S38-C2 READ_BINARY data", "989209012143658709F5", s39.resp);
+
+    // 步骤 40:SEQ07-IC3] MTD_SEND_SMS_PP(tc_step)
+    // MTD_SEND_SMS_PP ENVELOPE (H Annex C.1 表1238 Details: 80 C2 00 00 <L>): SCP80-packed SMS-PP body is runtime-domain
+    // (<MNO_SCP80_COUNTER>/<CC>/<C_APDUS_SCRIPT>) — no bytes fabricated; the embedded STORE DATA
+    // script executes via the proactive FETCH / TERMINAL RESPONSE chain, not in this response.
+    var s40 = bind.sendApdu("80", "C2", "00", "00", null, null, null);
+    bind.checkData("S39-C1 SW1 91", "91", s40.sw.substring(0, 2));
+
+    // 步骤 41:SEQ07-1] MTD_STORE_DATA(tc_step;REQ: RQ32_011)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla41 = s94.chan !== null ? (s94.chan <= 3 ? 128 + s94.chan : 188 + s94.chan).toString(16).toUpperCase() : null;
+    // runtime-bound payload: ISD_P_AID2 stays in execution domain
+    var s41 = bind.sendApdu(sdCla41, "E2", "91", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID2", "BF31154F10", "0101FF", profileAidSession), "00", null);
+    BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID2", s41.cmd, profileAidSession);
+    bind.checkData("S40-C1 SW1 91", "91", s41.sw.substring(0, 2));
+    var r2w41 = BindGecaProc.parseGecaResponse(s41.resp, {outer: "BF31", required: ["80"]});
+    bind.checkData("S40-C2 enableResult ok", "00", (r2w41.ok && r2w41.fields["80"] === "00") ? "00" : (r2w41.fields["80"] || "absent"));
+
+    // 步骤 42:SEQ07-2] FETCH 'YY'(tc_step;REQ: RQ32_016_3, RQ32_017, RQ57_134)
+    // FETCH header literals follow the golden wire evidence 8012 (same
+    // anchor as runToSteadyState; J Annex D.4 has no FETCH row, D 2.2.2
+    // gives mechanism only). Le = pending length from the last 91XX
+    // (chain rule, binding-internal state).
+    var s42 = bind.fetchPending("80", "12", "00", "00", null);
+    bind.checkData("S41-C1 proactive command envelope", "1", (s42.resp.length >= 4 && s42.resp.substring(0, 2) === "D0") ? "1" : "0");
+    // S41-C1: REFRESH type/mode bytes are not corpus-fixed (envelope face only; per-mode bytes absent from input).
+    // S42:主动会话协议闭合(TS 102 223 §6.3:主动命令必须 TR 应答;
+    // UICC Reset 变体 E 表无 TR 行属编辑省略,golden U3 线证同构)。
+    var s42tr = bind.terminalResponseForPending("80", "14", "00", "00", "9000");
+
+    // IC ref inline @E 步骤 43(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
+    var s96 = bind.resetAndAtr();
+    bind.checkData("IC43-IC1-K1-C1 ATR_present", "1", s96.atr_hex !== "" ? "1" : "0");
+
+    // IC ref inline @E 步骤 43(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
+    // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
+    var s97 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
+    bind.checkData("IC43-IC1-K2-C2 FCP_Template", "1", s97.resp.length > 0 ? "1" : "0");
+    bind.checkData("IC43-IC1-K2-C4 SW", "9000", s97.sw);
+
+    // IC ref inline @E 步骤 43(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
+    var s98 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
+    bind.checkData("IC43-IC1-K3-C4 SW", "9000", s98.sw);
+
+    // IC ref inline @E 步骤 43(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
+    var steady99 = bind.runToSteadyState(function () {
+        return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
+    });
+    bind.checkData("IC43-IC1-K4-C4 final SW", "9000", steady99.final.sw);
+
+    // IC ref inline @E 步骤 43(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
+    // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
+    var s100 = bind.manageChannelOpen("9000");
+    bind.checkData("IC43-IC2-K1-C4 SW", "9000", s100.sw);
+    bind.checkData("IC43-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s100.chan !== null ? "1" : "0");
+
+    // IC ref inline @E 步骤 43(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
+    // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
+    var s101 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
+    // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
+    bind.checkData("IC43-IC2-K2-C4 SW", "9000", s101.sw);
+
+    // 步骤 44:SEQ07-4] MTD_STORE_DATA(tc_step;REQ: RQ32_011)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla44 = s100.chan !== null ? (s100.chan <= 3 ? 128 + s100.chan : 188 + s100.chan).toString(16).toUpperCase() : null;
+    var s44 = bind.sendApdu(sdCla44, "E2", "91", "00", "BF2D00", "00", "9000");
+    bind.checkData("S43-C1 SW", "9000", s44.sw);
+    var r2p44 = BindEs10xProcProfile.walkChoiceList(s44.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+    var r2has44_0 = false;
+    for (var r2i44_0 = 0; r2i44_0 < r2p44.elements.length; r2i44_0++) {
+        var f = r2p44.elements[r2i44_0].fields;
+        if (f["5A"] === "989209012143658709F5" && f["9F70"] === "00") { r2has44_0 = true; break; }
+    }
+    bind.checkData("S43-C2 contains PROFILE_INFO1_DISABLED", "1", (r2p44.branch_tag === "A0" && r2has44_0) ? "1" : "0");
+    var r2has44_0 = false;
+    for (var r2i44_0 = 0; r2i44_0 < r2p44.elements.length; r2i44_0++) {
+        var f = r2p44.elements[r2i44_0].fields;
+        if (f["5A"] === "989209013254769810F9" && f["9F70"] === "01") { r2has44_0 = true; break; }
+    }
+    bind.checkData("S43-C3 contains PROFILE_INFO2_ENABLED", "1", (r2p44.branch_tag === "A0" && r2has44_0) ? "1" : "0");
+
+    // 步骤 45:SEQ07-5] [SELECT_ICCID(tc_step)
+    var s45 = bind.sendApdu("00", "A4", "00", "0C", "2FE2", null, "9000");
+    bind.checkData("S44-C1 SW", "9000", s45.sw);
+
+    // 步骤 46:SEQ07-6] [READ_BINARY] with <L>=0x0A(tc_step;REQ: RQ34_015)
+    var s46 = bind.sendApdu("00", "B0", "00", "00", null, "0A", "9000");
+    bind.checkData("S45-C1 SW", "9000", s46.sw);
+    bind.checkData("S45-C2 READ_BINARY data", "989209013254769810F9", s46.resp);
+
+    // 步骤 47:SEQ08-IC3] MTD_SEND_SMS_PP(tc_step)
+    // MTD_SEND_SMS_PP ENVELOPE (H Annex C.1 表1238 Details: 80 C2 00 00 <L>): SCP80-packed SMS-PP body is runtime-domain
+    // (<MNO_SCP80_COUNTER>/<CC>/<C_APDUS_SCRIPT>) — no bytes fabricated; the embedded STORE DATA
+    // script executes via the proactive FETCH / TERMINAL RESPONSE chain, not in this response.
+    var s47 = bind.sendApdu("80", "C2", "00", "00", null, null, null);
+    bind.checkData("S46-C1 SW1 91", "91", s47.sw.substring(0, 2));
+
+    // 步骤 48:SEQ08-1] MTD_STORE_DATA(tc_step)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla48 = s100.chan !== null ? (s100.chan <= 3 ? 128 + s100.chan : 188 + s100.chan).toString(16).toUpperCase() : null;
+    // runtime-bound payload: ISD_P_AID2 stays in execution domain
+    var s48 = bind.sendApdu(sdCla48, "E2", "91", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID2", "BF31154F10", "010100", profileAidSession), "00", "9000");
+    bind.checkData("S47-C1 SW", "9000", s48.sw);
+    BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID2", s48.cmd, profileAidSession);
+    var r2w48 = BindGecaProc.parseGecaResponse(s48.resp, {outer: "BF31", required: ["80"]});
+    bind.checkData("S47-C2 enableResult ok", "00", (r2w48.ok && r2w48.fields["80"] === "00") ? "00" : (r2w48.fields["80"] || "absent"));
+
+    // 步骤 49:SEQ08-2] MTD_STORE_DATA(tc_step;REQ: RQ32_011)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla49 = s100.chan !== null ? (s100.chan <= 3 ? 128 + s100.chan : 188 + s100.chan).toString(16).toUpperCase() : null;
+    var s49 = bind.sendApdu(sdCla49, "E2", "91", "00", "BF2D00", "00", "9000");
+    bind.checkData("S48-C1 SW", "9000", s49.sw);
+    var r2p49 = BindEs10xProcProfile.walkChoiceList(s49.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+    var r2has49_0 = false;
+    for (var r2i49_0 = 0; r2i49_0 < r2p49.elements.length; r2i49_0++) {
+        var f = r2p49.elements[r2i49_0].fields;
+        if (f["5A"] === "989209012143658709F5" && f["9F70"] === "00") { r2has49_0 = true; break; }
+    }
+    bind.checkData("S48-C2 contains PROFILE_INFO1_DISABLED", "1", (r2p49.branch_tag === "A0" && r2has49_0) ? "1" : "0");
+    var r2has49_0 = false;
+    for (var r2i49_0 = 0; r2i49_0 < r2p49.elements.length; r2i49_0++) {
+        var f = r2p49.elements[r2i49_0].fields;
+        if (f["5A"] === "989209013254769810F9" && f["9F70"] === "01") { r2has49_0 = true; break; }
+    }
+    bind.checkData("S48-C3 contains PROFILE_INFO2_ENABLED", "1", (r2p49.branch_tag === "A0" && r2has49_0) ? "1" : "0");
+
+    // 步骤 50:SEQ08-3] [SELECT_ICCID(tc_step)
+    var s50 = bind.sendApdu("00", "A4", "00", "0C", "2FE2", null, "9000");
+    bind.checkData("S49-C1 SW", "9000", s50.sw);
+
+    // 步骤 51:SEQ08-4] [READ_BINARY] with <L>=0x0A(tc_step;REQ: RQ34_015)
+    var s51 = bind.sendApdu("00", "B0", "00", "00", null, "0A", "9000");
+    bind.checkData("S50-C1 SW", "9000", s51.sw);
+    bind.checkData("S50-C2 READ_BINARY data", "989209013254769810F9", s51.resp);
+
+    // 步骤 52:SEQ09-IC3] MTD_SEND_SMS_PP(tc_step)
+    // MTD_SEND_SMS_PP ENVELOPE (H Annex C.1 表1238 Details: 80 C2 00 00 <L>): SCP80-packed SMS-PP body is runtime-domain
+    // (<MNO_SCP80_COUNTER>/<CC>/<C_APDUS_SCRIPT>) — no bytes fabricated; the embedded STORE DATA
+    // script executes via the proactive FETCH / TERMINAL RESPONSE chain, not in this response.
+    var s52 = bind.sendApdu("80", "C2", "00", "00", null, null, null);
+    bind.checkData("S51-C1 SW1 91", "91", s52.sw.substring(0, 2));
+
+    // 步骤 53:SEQ09-1] FETCH 'XX'(tc_step)
+    // FETCH header literals follow the golden wire evidence 8012 (same
+    // anchor as runToSteadyState; J Annex D.4 has no FETCH row, D 2.2.2
+    // gives mechanism only). Le = pending length from the last 91XX
+    // (chain rule, binding-internal state).
+    var s53 = bind.fetchPending("80", "12", "00", "00", null);
+    bind.checkData("S52-C1 proactive command envelope", "1", (s53.resp.length >= 4 && s53.resp.substring(0, 2) === "D0") ? "1" : "0");
+    // S52-C1: REFRESH type/mode bytes are not corpus-fixed (envelope face only; per-mode bytes absent from input).
+    // S53:主动会话协议闭合(TS 102 223 §6.3:主动命令必须 TR 应答;
+    // UICC Reset 变体 E 表无 TR 行属编辑省略,golden U3 线证同构)。
+    var s53tr = bind.terminalResponseForPending("80", "14", "00", "00", "9000");
+
+    // 步骤 54:SEQ09-2] MTD_STORE_DATA(tc_step;REQ: RQ32_011)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla54 = s100.chan !== null ? (s100.chan <= 3 ? 128 + s100.chan : 188 + s100.chan).toString(16).toUpperCase() : null;
+    // runtime-bound payload: ISD_P_AID2 stays in execution domain
+    var s54 = bind.sendApdu(sdCla54, "E2", "91", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID2", "BF31154F10", "0101FF", profileAidSession), "00", "9000");
+    bind.checkData("S53-C1 SW", "9000", s54.sw);
+    BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID2", s54.cmd, profileAidSession);
+    var r2w54 = BindGecaProc.parseGecaResponse(s54.resp, {outer: "BF31", required: ["80"]});
+    bind.checkData("S53-C2 enableResult ok", "00", (r2w54.ok && r2w54.fields["80"] === "00") ? "00" : (r2w54.fields["80"] || "absent"));
+
+    // 步骤 55:SEQ09-3] TERMINAL RESPONSE(tc_step)
+    // TERMINAL RESPONSE data is dynamically built by the binding from the
+    // last FETCHed proactive command (D 2.2.2; buildTrData) - never static.
+    // Header literals follow the golden wire evidence 8014.
+    var s55 = bind.terminalResponseForPending("80", "14", "00", "00", null);
+    bind.checkData("S54-C1 SW1 91", "91", s55.sw.substring(0, 2));
+
+    // 步骤 56:SEQ09-4] FETCH 'YY'(tc_step;REQ: RQ32_016_3, RQ32_017, RQ57_134)
+    // FETCH header literals follow the golden wire evidence 8012 (same
+    // anchor as runToSteadyState; J Annex D.4 has no FETCH row, D 2.2.2
+    // gives mechanism only). Le = pending length from the last 91XX
+    // (chain rule, binding-internal state).
+    var s56 = bind.fetchPending("80", "12", "00", "00", null);
+    bind.checkData("S55-C1 proactive command envelope", "1", (s56.resp.length >= 4 && s56.resp.substring(0, 2) === "D0") ? "1" : "0");
+    // S55-C1: REFRESH type/mode bytes are not corpus-fixed (envelope face only; per-mode bytes absent from input).
+    // S56:主动会话协议闭合(TS 102 223 §6.3:主动命令必须 TR 应答;
+    // UICC Reset 变体 E 表无 TR 行属编辑省略,golden U3 线证同构)。
+    var s56tr = bind.terminalResponseForPending("80", "14", "00", "00", "9000");
+
+    // IC ref inline @E 步骤 57(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
+    var s102 = bind.resetAndAtr();
+    bind.checkData("IC57-IC1-K1-C1 ATR_present", "1", s102.atr_hex !== "" ? "1" : "0");
+
+    // IC ref inline @E 步骤 57(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
+    // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
+    var s103 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
+    bind.checkData("IC57-IC1-K2-C2 FCP_Template", "1", s103.resp.length > 0 ? "1" : "0");
+    bind.checkData("IC57-IC1-K2-C4 SW", "9000", s103.sw);
+
+    // IC ref inline @E 步骤 57(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
+    var s104 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
+    bind.checkData("IC57-IC1-K3-C4 SW", "9000", s104.sw);
+
+    // IC ref inline @E 步骤 57(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
+    var steady105 = bind.runToSteadyState(function () {
+        return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
+    });
+    bind.checkData("IC57-IC1-K4-C4 final SW", "9000", steady105.final.sw);
+
+    // IC ref inline @E 步骤 57(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
+    // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
+    var s106 = bind.manageChannelOpen("9000");
+    bind.checkData("IC57-IC2-K1-C4 SW", "9000", s106.sw);
+    bind.checkData("IC57-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s106.chan !== null ? "1" : "0");
+
+    // IC ref inline @E 步骤 57(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
+    // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
+    var s107 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
+    // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
+    bind.checkData("IC57-IC2-K2-C4 SW", "9000", s107.sw);
+
+    // 步骤 58:SEQ09-6] MTD_STORE_DATA(tc_step;REQ: RQ32_011)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla58 = s106.chan !== null ? (s106.chan <= 3 ? 128 + s106.chan : 188 + s106.chan).toString(16).toUpperCase() : null;
+    var s58 = bind.sendApdu(sdCla58, "E2", "91", "00", "BF2D00", "00", "9000");
+    bind.checkData("S57-C1 SW", "9000", s58.sw);
+    var r2p58 = BindEs10xProcProfile.walkChoiceList(s58.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+    var r2has58_0 = false;
+    for (var r2i58_0 = 0; r2i58_0 < r2p58.elements.length; r2i58_0++) {
+        var f = r2p58.elements[r2i58_0].fields;
+        if (f["5A"] === "989209012143658709F5" && f["9F70"] === "00") { r2has58_0 = true; break; }
+    }
+    bind.checkData("S57-C2 contains PROFILE_INFO1_DISABLED", "1", (r2p58.branch_tag === "A0" && r2has58_0) ? "1" : "0");
+    var r2has58_0 = false;
+    for (var r2i58_0 = 0; r2i58_0 < r2p58.elements.length; r2i58_0++) {
+        var f = r2p58.elements[r2i58_0].fields;
+        if (f["5A"] === "989209013254769810F9" && f["9F70"] === "01") { r2has58_0 = true; break; }
+    }
+    bind.checkData("S57-C3 contains PROFILE_INFO2_ENABLED", "1", (r2p58.branch_tag === "A0" && r2has58_0) ? "1" : "0");
+
+    // 步骤 59:SEQ09-7] [SELECT_ICCID(tc_step)
+    var s59 = bind.sendApdu("00", "A4", "00", "0C", "2FE2", null, "9000");
+    bind.checkData("S58-C1 SW", "9000", s59.sw);
+
+    // 步骤 60:SEQ09-8] [READ_BINARY] with <L>=0x0A(tc_step;REQ: RQ34_015)
+    var s60 = bind.sendApdu("00", "B0", "00", "00", null, "0A", "9000");
+    bind.checkData("S59-C1 SW", "9000", s60.sw);
+    bind.checkData("S59-C2 READ_BINARY data", "989209013254769810F9", s60.resp);
+
+    // 步骤 61:SEQ10-IC3] MTD_SEND_SMS_PP(tc_step)
+    // MTD_SEND_SMS_PP ENVELOPE (H Annex C.1 表1238 Details: 80 C2 00 00 <L>): SCP80-packed SMS-PP body is runtime-domain
+    // (<MNO_SCP80_COUNTER>/<CC>/<C_APDUS_SCRIPT>) — no bytes fabricated; the embedded STORE DATA
+    // script executes via the proactive FETCH / TERMINAL RESPONSE chain, not in this response.
+    var s61 = bind.sendApdu("80", "C2", "00", "00", null, null, null);
+    bind.checkData("S60-C1 SW1 91", "91", s61.sw.substring(0, 2));
+
+    // 步骤 62:SEQ10-1] FETCH 'XX'(tc_step)
+    // FETCH header literals follow the golden wire evidence 8012 (same
+    // anchor as runToSteadyState; J Annex D.4 has no FETCH row, D 2.2.2
+    // gives mechanism only). Le = pending length from the last 91XX
+    // (chain rule, binding-internal state).
+    var s62 = bind.fetchPending("80", "12", "00", "00", null);
+    bind.checkData("S61-C1 proactive command envelope", "1", (s62.resp.length >= 4 && s62.resp.substring(0, 2) === "D0") ? "1" : "0");
+    // S61-C1: REFRESH type/mode bytes are not corpus-fixed (envelope face only; per-mode bytes absent from input).
+    // S62:主动会话协议闭合(TS 102 223 §6.3:主动命令必须 TR 应答;
+    // UICC Reset 变体 E 表无 TR 行属编辑省略,golden U3 线证同构)。
+    var s62tr = bind.terminalResponseForPending("80", "14", "00", "00", "9000");
+
+    // 步骤 63:SEQ10-2] MTD_STORE_DATA(tc_step)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla63 = s106.chan !== null ? (s106.chan <= 3 ? 128 + s106.chan : 188 + s106.chan).toString(16).toUpperCase() : null;
+    // runtime-bound payload: ISD_P_AID2 stays in execution domain
+    var s63 = bind.sendApdu(sdCla63, "E2", "91", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID2", "BF31154F10", "010100", profileAidSession), "00", "9000");
+    bind.checkData("S62-C1 SW", "9000", s63.sw);
+    BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID2", s63.cmd, profileAidSession);
+    var r2w63 = BindGecaProc.parseGecaResponse(s63.resp, {outer: "BF31", required: ["80"]});
+    bind.checkData("S62-C2 enableResult ok", "00", (r2w63.ok && r2w63.fields["80"] === "00") ? "00" : (r2w63.fields["80"] || "absent"));
+
+    // 步骤 64:SEQ10-3] TERMINAL RESPONSE(tc_step)
+    // TERMINAL RESPONSE data is dynamically built by the binding from the
+    // last FETCHed proactive command (D 2.2.2; buildTrData) - never static.
+    // Header literals follow the golden wire evidence 8014.
+    var s64 = bind.terminalResponseForPending("80", "14", "00", "00", null);
+    bind.checkData("S63-C1 SW1 != 91", "1", s64.sw.substring(0, 2) !== "91" ? "1" : "0");
+
+    // 步骤 65:SEQ10-4] MTD_STORE_DATA(tc_step;REQ: RQ32_011)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla65 = s106.chan !== null ? (s106.chan <= 3 ? 128 + s106.chan : 188 + s106.chan).toString(16).toUpperCase() : null;
+    var s65 = bind.sendApdu(sdCla65, "E2", "91", "00", "BF2D00", "00", "9000");
+    bind.checkData("S64-C1 SW", "9000", s65.sw);
+    var r2p65 = BindEs10xProcProfile.walkChoiceList(s65.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+    var r2has65_0 = false;
+    for (var r2i65_0 = 0; r2i65_0 < r2p65.elements.length; r2i65_0++) {
+        var f = r2p65.elements[r2i65_0].fields;
+        if (f["5A"] === "989209012143658709F5" && f["9F70"] === "00") { r2has65_0 = true; break; }
+    }
+    bind.checkData("S64-C2 contains PROFILE_INFO1_DISABLED", "1", (r2p65.branch_tag === "A0" && r2has65_0) ? "1" : "0");
+    var r2has65_0 = false;
+    for (var r2i65_0 = 0; r2i65_0 < r2p65.elements.length; r2i65_0++) {
+        var f = r2p65.elements[r2i65_0].fields;
+        if (f["5A"] === "989209013254769810F9" && f["9F70"] === "01") { r2has65_0 = true; break; }
+    }
+    bind.checkData("S64-C3 contains PROFILE_INFO2_ENABLED", "1", (r2p65.branch_tag === "A0" && r2has65_0) ? "1" : "0");
+
+    // 步骤 66:SEQ10-5] [SELECT_ICCID(tc_step)
+    var s66 = bind.sendApdu("00", "A4", "00", "0C", "2FE2", null, "9000");
+    bind.checkData("S65-C1 SW", "9000", s66.sw);
+
+    // 步骤 67:SEQ10-6] [READ_BINARY] with <L>=0x0A(tc_step;REQ: RQ34_015)
+    var s67 = bind.sendApdu("00", "B0", "00", "00", null, "0A", "9000");
+    bind.checkData("S66-C1 SW", "9000", s67.sw);
+    bind.checkData("S66-C2 READ_BINARY data", "989209013254769810F9", s67.resp);
 }