Project

Profile

Help

RE: Performance variations ยป explain.rome-test.v2.xml

Vladimir Nesterovsky, 2020-05-19 14:15

 
1
<stylesheet xmlns:fn="http://www.w3.org/2005/xpath-functions"
2
            xmlns:xs="http://www.w3.org/2001/XMLSchema">
3
   <globalVariables>
4
      <globalVariable name="Q{xslt:priority-queue:2020}empty"
5
                      as="1FM k[AS] v[1F]"
6
                      line="16"
7
                      module="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
8
                      visibility="PRIVATE">
9
         <ifCall baseUri="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
10
                 ns="array=~ map=~ p=private:xslt:priority-queue:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
11
                 line="16"
12
                 name="Q{http://www.w3.org/2005/xpath-functions/map}merge"
13
                 type="1FM">
14
            <sequence>
15
               <map size="1">
16
                  <str val="keys"/>
17
                  <map size="0"/>
18
               </map>
19
               <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
20
                  <str val="items"/>
21
                  <array size="0"/>
22
               </ifCall>
23
            </sequence>
24
            <map size="2">
25
               <str val="duplicates"/>
26
               <str val="reject"/>
27
               <str val="duplicates-error-code"/>
28
               <str val="FOJS0003"/>
29
            </map>
30
         </ifCall>
31
      </globalVariable>
32
   </globalVariables>
33
   <mode onNo="TC" flags="dW" patternSlots="0">
34
      <ruleSet type="document-node()">
35
         <templateRule prec="5"
36
                       prio="-0.5"
37
                       seq="0"
38
                       rank="0"
39
                       minImp="0"
40
                       slots="1"
41
                       matches="ND"
42
                       flags="s"
43
                       line="16"
44
                       module="file:/C:/projects/git/xslt-graph/tests/rome-test.v2.xslt">
45
            <p.nodeTest role="match" test="ND"/>
46
            <let role="action"
47
                 baseUri="file:/C:/projects/git/xslt-graph/tests/rome-test.v2.xslt"
48
                 ns="array=~ g=xslt:graph-api:2020 map=~ t=public:this xs=~ xsl=~ xml=~"
49
                 line="17"
50
                 var="Q{}g"
51
                 as="1FM"
52
                 slot="0"
53
                 eval="16">
54
               <ufCall name="Q{public:this}create-graph" tailCall="false" bSlot="0"/>
55
               <message line="26">
56
                  <sequence role="select">
57
                     <valueOf>
58
                        <str val="Shortest path:&#xA;"/>
59
                     </valueOf>
60
                     <forEach>
61
                        <ufCall name="Q{xslt:graph-api:2020}dijkstra-search"
62
                                tailCall="false"
63
                                bSlot="1"
64
                                eval="0 0 6">
65
                           <int val="1498"/>
66
                           <int val="351"/>
67
                           <varRef name="Q{}g" slot="0"/>
68
                        </ufCall>
69
                        <sequence line="30">
70
                           <valueOf>
71
                              <fn name="string-join">
72
                                 <convert from="A" to="AS">
73
                                    <data>
74
                                       <mergeAdj>
75
                                          <sequence>
76
                                             <lookup>
77
                                                <dot type="1FM"/>
78
                                                <str val="from"/>
79
                                             </lookup>
80
                                             <str val=" - "/>
81
                                             <lookup>
82
                                                <dot type="1FM"/>
83
                                                <str val="to"/>
84
                                             </lookup>
85
                                             <str val=", distance = "/>
86
                                             <ufCall name="Q{xslt:graph-api:2020}edge-value"
87
                                                     tailCall="false"
88
                                                     bSlot="2"
89
                                                     eval="16 6">
90
                                                <check card="1" diag="0|0||g:edge-value">
91
                                                   <lookup>
92
                                                      <dot type="1FM"/>
93
                                                      <str val="edge"/>
94
                                                   </lookup>
95
                                                </check>
96
                                                <varRef name="Q{}g" slot="0"/>
97
                                             </ufCall>
98
                                             <str val=", total = "/>
99
                                             <lookup>
100
                                                <dot type="1FM"/>
101
                                                <str val="distance"/>
102
                                             </lookup>
103
                                          </sequence>
104
                                       </mergeAdj>
105
                                    </data>
106
                                 </convert>
107
                                 <str val=""/>
108
                              </fn>
109
                           </valueOf>
110
                           <valueOf>
111
                              <str val="&#xA;"/>
112
                           </valueOf>
113
                        </sequence>
114
                     </forEach>
115
                  </sequence>
116
                  <str role="terminate" val="no"/>
117
                  <str role="error" val="Q{http://www.w3.org/2005/xqt-errors}XTMM9000"/>
118
               </message>
119
            </let>
120
         </templateRule>
121
      </ruleSet>
122
   </mode>
123
   <namedTemplates>
124
      <template name="f:repeat"
125
                line="180"
126
                module="file:/C:/projects/git/xslt-graph/functions.xslt">
127
         <sequence baseUri="file:/C:/projects/git/xslt-graph/functions.xslt"
128
                   ns="f=xslt:functions:2020 xs=~ xsl=~ xml=~"
129
                   line="181">
130
            <param name="Q{}state" slot="0">
131
               <empty role="select"/>
132
               <supplied role="conversion" slot="0"/>
133
            </param>
134
            <param line="182"
135
                   name="Q{}condition"
136
                   slot="1"
137
                   flags="i"
138
                   as="1F r[1AB] a[*]">
139
               <check role="conversion" card="1" diag="8|0|XTTE0590|condition">
140
                  <fnCoercer to="1F r[1AB] a[*]" diag="8|0|XTTE0590|condition">
141
                     <supplied slot="1"/>
142
                  </fnCoercer>
143
               </check>
144
            </param>
145
            <param line="183" name="Q{}action" slot="2" flags="i" as="1F a[*]">
146
               <check role="conversion" card="1" diag="8|0|XTTE0590|action">
147
                  <fnCoercer to="1F a[*]" diag="8|0|XTTE0590|action">
148
                     <supplied slot="2"/>
149
                  </fnCoercer>
150
               </check>
151
            </param>
152
            <param line="184" name="Q{}next" slot="3" flags="i" as="1F a[*,*]">
153
               <check role="conversion" card="1" diag="8|0|XTTE0590|next">
154
                  <fnCoercer to="1F a[*,*]" diag="8|0|XTTE0590|next">
155
                     <supplied slot="3"/>
156
                  </fnCoercer>
157
               </check>
158
            </param>
159
            <let line="186" var="Q{}items" slot="4" eval="4">
160
               <ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn="$action">
161
                  <varRef name="Q{}action" slot="2"/>
162
                  <arrayBlock>
163
                     <varRef name="Q{}state" slot="0"/>
164
                  </arrayBlock>
165
               </ifCall>
166
               <sequence line="188">
167
                  <varRef name="Q{}items" slot="4"/>
168
                  <choose line="190">
169
                     <fn name="not">
170
                        <ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn="$condition">
171
                           <varRef name="Q{}condition" slot="1"/>
172
                           <arrayBlock>
173
                              <varRef name="Q{}state" slot="0"/>
174
                           </arrayBlock>
175
                        </ifCall>
176
                     </fn>
177
                     <callT line="191"
178
                            name="Q{xslt:functions:2020}repeat"
179
                            bSlot="0"
180
                            flags="t">
181
                        <withParam name="Q{}state" flags="c">
182
                           <ifCall line="192"
183
                                   name="Q{http://saxon.sf.net/}apply"
184
                                   type="*"
185
                                   dyn="$next">
186
                              <varRef name="Q{}next" slot="3"/>
187
                              <arrayBlock>
188
                                 <varRef name="Q{}state" slot="0"/>
189
                                 <varRef name="Q{}items" slot="4"/>
190
                              </arrayBlock>
191
                           </ifCall>
192
                        </withParam>
193
                        <withParam name="Q{}condition" flags="c" as="1F r[1AB] a[*]">
194
                           <varRef line="193" name="Q{}condition" slot="1"/>
195
                        </withParam>
196
                        <withParam name="Q{}action" flags="c" as="1F a[*]">
197
                           <varRef line="194" name="Q{}action" slot="2"/>
198
                        </withParam>
199
                        <withParam name="Q{}next" flags="c" as="1F a[*,*]">
200
                           <varRef line="195" name="Q{}next" slot="3"/>
201
                        </withParam>
202
                     </callT>
203
                  </choose>
204
               </sequence>
205
            </let>
206
         </sequence>
207
      </template>
208
      <template name="f:skip-while"
209
                line="241"
210
                module="file:/C:/projects/git/xslt-graph/functions.xslt">
211
         <sequence baseUri="file:/C:/projects/git/xslt-graph/functions.xslt"
212
                   ns="f=xslt:functions:2020 xs=~ xsl=~ xml=~"
213
                   line="242">
214
            <param name="Q{}items" slot="0">
215
               <empty role="select"/>
216
               <supplied role="conversion" slot="0"/>
217
            </param>
218
            <param line="243" name="Q{}index" slot="1" as="1ADI">
219
               <int role="select" val="1"/>
220
               <treat role="conversion" as="ADI" diag="8|0|XTTE0590|index">
221
                  <check card="1" diag="8|0|XTTE0590|index">
222
                     <cvUntyped to="ADI" diag="8|0|XTTE0590|index">
223
                        <data diag="8|0|XTTE0590|index">
224
                           <supplied slot="1"/>
225
                        </data>
226
                     </cvUntyped>
227
                  </check>
228
               </treat>
229
            </param>
230
            <param line="245"
231
                   name="Q{}condition"
232
                   slot="2"
233
                   flags="i"
234
                   as="1F r[1AB] a[1,1ADI]">
235
               <check role="conversion" card="1" diag="8|0|XTTE0590|condition">
236
                  <fnCoercer to="1F r[1AB] a[1,1ADI]" diag="8|0|XTTE0590|condition">
237
                     <supplied slot="2"/>
238
                  </fnCoercer>
239
               </check>
240
            </param>
241
            <let line="247" var="Q{}item" as="?" slot="3" eval="7">
242
               <first>
243
                  <varRef name="Q{}items" slot="0"/>
244
               </first>
245
               <let line="248" var="Q{}tail" slot="4" eval="10">
246
                  <tail start="2">
247
                     <varRef name="Q{}items" slot="0"/>
248
                  </tail>
249
                  <choose line="251">
250
                     <and op="and">
251
                        <fn name="exists">
252
                           <varRef name="Q{}item" slot="3"/>
253
                        </fn>
254
                        <ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn="$condition">
255
                           <varRef name="Q{}condition" slot="2"/>
256
                           <arrayBlock>
257
                              <varRef name="Q{}item" slot="3"/>
258
                              <varRef name="Q{}index" slot="1"/>
259
                           </arrayBlock>
260
                        </ifCall>
261
                     </and>
262
                     <callT line="252"
263
                            name="Q{xslt:functions:2020}skip-while"
264
                            bSlot="0"
265
                            flags="t">
266
                        <withParam name="Q{}items" flags="c">
267
                           <varRef line="253" name="Q{}tail" slot="4"/>
268
                        </withParam>
269
                        <withParam name="Q{}index" flags="c" as="1ADI">
270
                           <arith line="254" op="+" calc="i+i">
271
                              <varRef name="Q{}index" slot="1"/>
272
                              <int val="1"/>
273
                           </arith>
274
                        </withParam>
275
                        <withParam name="Q{}condition" flags="c" as="1F r[1AB] a[1,1ADI]">
276
                           <varRef line="255" name="Q{}condition" slot="2"/>
277
                        </withParam>
278
                     </callT>
279
                     <true/>
280
                     <varRef line="259" name="Q{}tail" slot="4"/>
281
                  </choose>
282
               </let>
283
            </let>
284
         </sequence>
285
      </template>
286
      <template name="f:take-while"
287
                line="211"
288
                module="file:/C:/projects/git/xslt-graph/functions.xslt">
289
         <sequence baseUri="file:/C:/projects/git/xslt-graph/functions.xslt"
290
                   ns="f=xslt:functions:2020 xs=~ xsl=~ xml=~"
291
                   line="212">
292
            <param name="Q{}items" slot="0">
293
               <empty role="select"/>
294
               <supplied role="conversion" slot="0"/>
295
            </param>
296
            <param line="213" name="Q{}index" slot="1" as="1ADI">
297
               <int role="select" val="1"/>
298
               <treat role="conversion" as="ADI" diag="8|0|XTTE0590|index">
299
                  <check card="1" diag="8|0|XTTE0590|index">
300
                     <cvUntyped to="ADI" diag="8|0|XTTE0590|index">
301
                        <data diag="8|0|XTTE0590|index">
302
                           <supplied slot="1"/>
303
                        </data>
304
                     </cvUntyped>
305
                  </check>
306
               </treat>
307
            </param>
308
            <param line="215"
309
                   name="Q{}condition"
310
                   slot="2"
311
                   flags="i"
312
                   as="1F r[1AB] a[1,1ADI]">
313
               <check role="conversion" card="1" diag="8|0|XTTE0590|condition">
314
                  <fnCoercer to="1F r[1AB] a[1,1ADI]" diag="8|0|XTTE0590|condition">
315
                     <supplied slot="2"/>
316
                  </fnCoercer>
317
               </check>
318
            </param>
319
            <let line="217" var="Q{}item" as="?" slot="3" eval="7">
320
               <first>
321
                  <varRef name="Q{}items" slot="0"/>
322
               </first>
323
               <choose line="219">
324
                  <and op="and">
325
                     <fn name="exists">
326
                        <varRef name="Q{}item" slot="3"/>
327
                     </fn>
328
                     <ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn="$condition">
329
                        <varRef name="Q{}condition" slot="2"/>
330
                        <arrayBlock>
331
                           <varRef name="Q{}item" slot="3"/>
332
                           <varRef name="Q{}index" slot="1"/>
333
                        </arrayBlock>
334
                     </ifCall>
335
                  </and>
336
                  <sequence line="220">
337
                     <varRef name="Q{}item" slot="3"/>
338
                     <callT line="222"
339
                            name="Q{xslt:functions:2020}take-while"
340
                            bSlot="0"
341
                            flags="t">
342
                        <withParam name="Q{}items" flags="c">
343
                           <tail line="223" start="2">
344
                              <varRef name="Q{}items" slot="0"/>
345
                           </tail>
346
                        </withParam>
347
                        <withParam name="Q{}index" flags="c" as="1ADI">
348
                           <arith line="224" op="+" calc="i+i">
349
                              <varRef name="Q{}index" slot="1"/>
350
                              <int val="1"/>
351
                           </arith>
352
                        </withParam>
353
                        <withParam name="Q{}condition" flags="c" as="1F r[1AB] a[1,1ADI]">
354
                           <varRef line="225" name="Q{}condition" slot="2"/>
355
                        </withParam>
356
                     </callT>
357
                  </sequence>
358
               </choose>
359
            </let>
360
         </sequence>
361
      </template>
362
      <template name="f:while"
363
                line="144"
364
                module="file:/C:/projects/git/xslt-graph/functions.xslt">
365
         <sequence baseUri="file:/C:/projects/git/xslt-graph/functions.xslt"
366
                   ns="f=xslt:functions:2020 xs=~ xsl=~ xml=~"
367
                   line="145">
368
            <param name="Q{}state" slot="0">
369
               <empty role="select"/>
370
               <supplied role="conversion" slot="0"/>
371
            </param>
372
            <param line="146"
373
                   name="Q{}condition"
374
                   slot="1"
375
                   flags="i"
376
                   as="1F r[1AB] a[*]">
377
               <check role="conversion" card="1" diag="8|0|XTTE0590|condition">
378
                  <fnCoercer to="1F r[1AB] a[*]" diag="8|0|XTTE0590|condition">
379
                     <supplied slot="1"/>
380
                  </fnCoercer>
381
               </check>
382
            </param>
383
            <param line="147" name="Q{}action" slot="2" flags="i" as="1F a[*]">
384
               <check role="conversion" card="1" diag="8|0|XTTE0590|action">
385
                  <fnCoercer to="1F a[*]" diag="8|0|XTTE0590|action">
386
                     <supplied slot="2"/>
387
                  </fnCoercer>
388
               </check>
389
            </param>
390
            <param line="148" name="Q{}next" slot="3" flags="i" as="1F a[*,*]">
391
               <check role="conversion" card="1" diag="8|0|XTTE0590|next">
392
                  <fnCoercer to="1F a[*,*]" diag="8|0|XTTE0590|next">
393
                     <supplied slot="3"/>
394
                  </fnCoercer>
395
               </check>
396
            </param>
397
            <choose line="150">
398
               <ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn="$condition">
399
                  <varRef name="Q{}condition" slot="1"/>
400
                  <arrayBlock>
401
                     <varRef name="Q{}state" slot="0"/>
402
                  </arrayBlock>
403
               </ifCall>
404
               <let line="151" var="Q{}items" slot="4" eval="4">
405
                  <ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn="$action">
406
                     <varRef name="Q{}action" slot="2"/>
407
                     <arrayBlock>
408
                        <varRef name="Q{}state" slot="0"/>
409
                     </arrayBlock>
410
                  </ifCall>
411
                  <sequence line="153">
412
                     <varRef name="Q{}items" slot="4"/>
413
                     <callT line="155"
414
                            name="Q{xslt:functions:2020}while"
415
                            bSlot="0"
416
                            flags="t">
417
                        <withParam name="Q{}state" flags="c">
418
                           <ifCall line="156"
419
                                   name="Q{http://saxon.sf.net/}apply"
420
                                   type="*"
421
                                   dyn="$next">
422
                              <varRef name="Q{}next" slot="3"/>
423
                              <arrayBlock>
424
                                 <varRef name="Q{}state" slot="0"/>
425
                                 <varRef name="Q{}items" slot="4"/>
426
                              </arrayBlock>
427
                           </ifCall>
428
                        </withParam>
429
                        <withParam name="Q{}condition" flags="c" as="1F r[1AB] a[*]">
430
                           <varRef line="157" name="Q{}condition" slot="1"/>
431
                        </withParam>
432
                        <withParam name="Q{}action" flags="c" as="1F a[*]">
433
                           <varRef line="158" name="Q{}action" slot="2"/>
434
                        </withParam>
435
                        <withParam name="Q{}next" flags="c" as="1F a[*,*]">
436
                           <varRef line="159" name="Q{}next" slot="3"/>
437
                        </withParam>
438
                     </callT>
439
                  </sequence>
440
               </let>
441
            </choose>
442
         </sequence>
443
      </template>
444
   </namedTemplates>
445
   <accumulators/>
446
   <functions>
447
      <function name="Q{xslt:functions:2020}while"
448
                line="48"
449
                module="file:/C:/projects/git/xslt-graph/functions.xslt"
450
                eval="8"
451
                flags="pU"
452
                as="*"
453
                slots="3">
454
         <arg name="Q{}state" as="*"/>
455
         <arg name="Q{}condition" as="1F r[1AB] a[*]"/>
456
         <arg name="Q{}next" as="1F a[*]"/>
457
         <tailCallLoop role="body"
458
                       baseUri="file:/C:/projects/git/xslt-graph/functions.xslt"
459
                       ns="f=xslt:functions:2020 xs=~ xsl=~ xml=~"
460
                       line="57">
461
            <choose>
462
               <ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn="$condition">
463
                  <varRef name="Q{}condition" slot="1"/>
464
                  <arrayBlock>
465
                     <varRef name="Q{}state" slot="0"/>
466
                  </arrayBlock>
467
               </ifCall>
468
               <ufCall name="Q{xslt:functions:2020}while"
469
                       tailCall="self"
470
                       bSlot="0"
471
                       eval="4 6 6">
472
                  <ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn="$next">
473
                     <varRef name="Q{}next" slot="2"/>
474
                     <arrayBlock>
475
                        <varRef name="Q{}state" slot="0"/>
476
                     </arrayBlock>
477
                  </ifCall>
478
                  <varRef name="Q{}condition" slot="1"/>
479
                  <varRef name="Q{}next" slot="2"/>
480
               </ufCall>
481
               <true/>
482
               <varRef name="Q{}state" slot="0"/>
483
            </choose>
484
         </tailCallLoop>
485
      </function>
486
      <function name="Q{public:this}create-graph"
487
                line="42"
488
                module="file:/C:/projects/git/xslt-graph/tests/rome-test.v2.xslt"
489
                eval="8"
490
                flags="pU"
491
                as="1FM"
492
                slots="4">
493
         <let role="body"
494
              baseUri="file:/C:/projects/git/xslt-graph/tests/rome-test.v2.xslt"
495
              ns="array=~ g=xslt:graph-api:2020 map=~ t=public:this xs=~ xsl=~ xml=~"
496
              line="53"
497
              var="Q{}roads"
498
              as="*FM k[AS] v[?ADI]"
499
              slot="0"
500
              eval="4">
501
            <for var="Q{}line" as="AS" slot="1">
502
               <filter role="in" flags="b">
503
                  <fn name="unparsed-text-lines">
504
                     <str val="rome99.gr"/>
505
                  </fn>
506
                  <fn name="starts-with">
507
                     <dot type="1AS"/>
508
                     <str val="a "/>
509
                  </fn>
510
               </filter>
511
               <let role="return" var="Q{}values" slot="2" eval="4">
512
                  <fn name="tokenize">
513
                     <varRef name="Q{}line" slot="1"/>
514
                  </fn>
515
                  <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}merge" type="1FM">
516
                     <sequence>
517
                        <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
518
                           <str val="from"/>
519
                           <cast flags="ae" as="?ADI">
520
                              <subscript>
521
                                 <varRef name="Q{}values" slot="2"/>
522
                                 <int val="2"/>
523
                              </subscript>
524
                           </cast>
525
                        </ifCall>
526
                        <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
527
                           <str val="to"/>
528
                           <cast flags="ae" as="?ADI">
529
                              <subscript>
530
                                 <varRef name="Q{}values" slot="2"/>
531
                                 <int val="3"/>
532
                              </subscript>
533
                           </cast>
534
                        </ifCall>
535
                        <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
536
                           <str val="length"/>
537
                           <cast flags="ae" as="?ADI">
538
                              <subscript>
539
                                 <varRef name="Q{}values" slot="2"/>
540
                                 <int val="4"/>
541
                              </subscript>
542
                           </cast>
543
                        </ifCall>
544
                     </sequence>
545
                     <map size="2">
546
                        <str val="duplicates"/>
547
                        <str val="reject"/>
548
                        <str val="duplicates-error-code"/>
549
                        <str val="FOJS0003"/>
550
                     </map>
551
                  </ifCall>
552
               </let>
553
            </for>
554
            <let line="60" var="Q{}vertices" as="1FM" slot="3" eval="8">
555
               <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}merge" type="1FM">
556
                  <forEach>
557
                     <varRef name="Q{}roads" slot="0"/>
558
                     <sequence>
559
                        <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
560
                           <check card="1" diag="0|0||map:entry">
561
                              <lookup>
562
                                 <dot type="1FM k[AS] v[?ADI]"/>
563
                                 <str val="from"/>
564
                              </lookup>
565
                           </check>
566
                           <dot type="1FM k[AS] v[?ADI]"/>
567
                        </ifCall>
568
                        <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
569
                           <check card="1" diag="0|0||map:entry">
570
                              <lookup>
571
                                 <dot type="1FM k[AS] v[?ADI]"/>
572
                                 <str val="to"/>
573
                              </lookup>
574
                           </check>
575
                           <dot type="1FM k[AS] v[?ADI]"/>
576
                        </ifCall>
577
                     </sequence>
578
                  </forEach>
579
                  <map size="2">
580
                     <str val="duplicates"/>
581
                     <str val="combine"/>
582
                     <str val="duplicates-error-code"/>
583
                     <str val="FOJS0003"/>
584
                  </map>
585
               </ifCall>
586
               <ifCall line="73"
587
                       name="Q{http://www.w3.org/2005/xpath-functions/map}merge"
588
                       type="1FM">
589
                  <sequence>
590
                     <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
591
                        <str val="vertices"/>
592
                        <partialApply>
593
                           <ufRef name="Q{http://ns.saxonica.com/anonymous-type}f_1963862935"
594
                                  arity="1"
595
                                  bSlot="0"/>
596
                           <varRef name="Q{}vertices" slot="3"/>
597
                        </partialApply>
598
                     </ifCall>
599
                     <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
600
                        <str val="edges"/>
601
                        <partialApply>
602
                           <ufRef name="Q{http://ns.saxonica.com/anonymous-type}f_775445710"
603
                                  arity="1"
604
                                  bSlot="1"/>
605
                           <varRef name="Q{}roads" slot="0"/>
606
                        </partialApply>
607
                     </ifCall>
608
                     <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
609
                        <str val="edge-value"/>
610
                        <ufRef name="Q{http://ns.saxonica.com/anonymous-type}f_769432223"
611
                               arity="1"
612
                               bSlot="2"/>
613
                     </ifCall>
614
                     <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
615
                        <str val="edge-vertices"/>
616
                        <ufRef name="Q{http://ns.saxonica.com/anonymous-type}f_696933920"
617
                               arity="1"
618
                               bSlot="3"/>
619
                     </ifCall>
620
                     <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
621
                        <str val="vertex-edges"/>
622
                        <partialApply>
623
                           <fnCoercer to="1F a[*,1FM]" diag="0|0||saxon:call">
624
                              <ufRef name="Q{http://ns.saxonica.com/anonymous-type}f_712974096"
625
                                     arity="2"
626
                                     bSlot="4"/>
627
                           </fnCoercer>
628
                           <null/>
629
                           <varRef name="Q{}vertices" slot="3"/>
630
                        </partialApply>
631
                     </ifCall>
632
                  </sequence>
633
                  <map size="2">
634
                     <str val="duplicates"/>
635
                     <str val="reject"/>
636
                     <str val="duplicates-error-code"/>
637
                     <str val="FOJS0003"/>
638
                  </map>
639
               </ifCall>
640
            </let>
641
         </let>
642
      </function>
643
      <function name="Q{xslt:functions:2020}while"
644
                line="21"
645
                module="file:/C:/projects/git/xslt-graph/functions.xslt"
646
                eval="9"
647
                flags="pU"
648
                as="*"
649
                slots="4">
650
         <arg name="Q{}state" as="*"/>
651
         <arg name="Q{}condition" as="1F r[1AB] a[*]"/>
652
         <arg name="Q{}action" as="1F a[*]"/>
653
         <arg name="Q{}next" as="1F a[*,*]"/>
654
         <callT role="body"
655
                baseUri="file:/C:/projects/git/xslt-graph/functions.xslt"
656
                ns="f=xslt:functions:2020 xs=~ xsl=~ xml=~"
657
                line="27"
658
                name="Q{xslt:functions:2020}while"
659
                bSlot="0">
660
            <withParam name="Q{}state" flags="c">
661
               <varRef line="28" name="Q{}state" slot="0"/>
662
            </withParam>
663
            <withParam name="Q{}condition" flags="c" as="1F r[1AB] a[*]">
664
               <varRef line="29" name="Q{}condition" slot="1"/>
665
            </withParam>
666
            <withParam name="Q{}action" flags="c" as="1F a[*]">
667
               <varRef line="30" name="Q{}action" slot="2"/>
668
            </withParam>
669
            <withParam name="Q{}next" flags="c" as="1F a[*,*]">
670
               <varRef line="31" name="Q{}next" slot="3"/>
671
            </withParam>
672
         </callT>
673
      </function>
674
      <function name="Q{xslt:functions:2020}take-while"
675
                line="96"
676
                module="file:/C:/projects/git/xslt-graph/functions.xslt"
677
                eval="9"
678
                flags="pU"
679
                as="*"
680
                slots="2">
681
         <arg name="Q{}items" as="*"/>
682
         <arg name="Q{}condition" as="1F r[1AB] a[1,1ADI]"/>
683
         <callT role="body"
684
                baseUri="file:/C:/projects/git/xslt-graph/functions.xslt"
685
                ns="f=xslt:functions:2020 xs=~ xsl=~ xml=~"
686
                line="101"
687
                name="Q{xslt:functions:2020}take-while"
688
                bSlot="0">
689
            <withParam name="Q{}items" flags="c">
690
               <varRef line="102" name="Q{}items" slot="0"/>
691
            </withParam>
692
            <withParam name="Q{}condition" flags="c" as="1F r[1AB] a[1,1ADI]">
693
               <varRef line="103" name="Q{}condition" slot="1"/>
694
            </withParam>
695
         </callT>
696
      </function>
697
      <function name="Q{http://ns.saxonica.com/anonymous-type}f_767904468"
698
                line="0"
699
                eval="4"
700
                flags="pU"
701
                as="*"
702
                slots="1">
703
         <arg name="Q{}state" as="1FM"/>
704
         <filter role="body"
705
                 baseUri="file:/C:/projects/git/xslt-graph/search.xslt"
706
                 ns="array=~ f=xslt:functions:2020 g=xslt:graph-api:2020 map=~ xs=~ xsl=~ xml=~"
707
                 line="79"
708
                 flags="b">
709
            <ifCall name="Q{http://www.w3.org/2005/xpath-functions/array}head" type="*">
710
               <treat as="FA" diag="0|0||array:head">
711
                  <check card="1" diag="0|0||array:head">
712
                     <lookup>
713
                        <varRef name="Q{}state" slot="0"/>
714
                        <str val="queue"/>
715
                     </lookup>
716
                  </check>
717
               </treat>
718
            </ifCall>
719
            <fn name="not">
720
               <ifCall name="Q{http://saxon.sf.net/}apply"
721
                       type="*"
722
                       dyn="$state ? &#34;visited&#34;">
723
                  <treat as="F" diag="0|0||saxon:apply">
724
                     <check card="1" diag="0|0||saxon:apply">
725
                        <lookup>
726
                           <varRef name="Q{}state" slot="0"/>
727
                           <str val="visited"/>
728
                        </lookup>
729
                     </check>
730
                  </treat>
731
                  <arrayBlock>
732
                     <lookup>
733
                        <dot/>
734
                        <str val="to"/>
735
                     </lookup>
736
                  </arrayBlock>
737
               </ifCall>
738
            </fn>
739
         </filter>
740
      </function>
741
      <function name="Q{xslt:graph-api:2020}edges"
742
                line="53"
743
                module="file:/C:/projects/git/xslt-graph/graph.xslt"
744
                eval="4"
745
                flags="pU"
746
                as="*"
747
                slots="1">
748
         <arg name="Q{}g" as="1FM"/>
749
         <forEach role="body"
750
                  baseUri="file:/C:/projects/git/xslt-graph/graph.xslt"
751
                  ns="g=xslt:graph-api:2020 map=~ xs=~ xsl=~ xml=~"
752
                  line="56">
753
            <lookup>
754
               <varRef name="Q{}g" slot="0"/>
755
               <str val="edges"/>
756
            </lookup>
757
            <ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn=".">
758
               <treat as="F" diag="0|0||saxon:apply">
759
                  <dot/>
760
               </treat>
761
               <array size="0"/>
762
            </ifCall>
763
         </forEach>
764
      </function>
765
      <function name="Q{xslt:priority-queue:2020}tail"
766
                line="116"
767
                module="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
768
                eval="8"
769
                flags="pU"
770
                as="1FM"
771
                slots="2">
772
         <arg name="Q{}q" as="1FM"/>
773
         <let role="body"
774
              baseUri="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
775
              ns="array=~ map=~ p=private:xslt:priority-queue:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
776
              line="125"
777
              var="Q{}items"
778
              slot="1"
779
              eval="4">
780
            <lookup>
781
               <varRef name="Q{}q" slot="0"/>
782
               <str val="items"/>
783
            </lookup>
784
            <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}merge" type="1FM">
785
               <sequence>
786
                  <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
787
                     <str val="keys"/>
788
                     <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}remove" type="1FM">
789
                        <treat as="FM" diag="0|0||map:remove">
790
                           <check card="1" diag="0|0||map:remove">
791
                              <lookup>
792
                                 <varRef name="Q{}q" slot="0"/>
793
                                 <str val="keys"/>
794
                              </lookup>
795
                           </check>
796
                        </treat>
797
                        <data diag="0|1||map:remove">
798
                           <ifCall name="Q{http://www.w3.org/2005/xpath-functions/array}head" type="*">
799
                              <treat as="FA" diag="0|0||array:head">
800
                                 <check card="1" diag="0|0||array:head">
801
                                    <varRef name="Q{}items" slot="1"/>
802
                                 </check>
803
                              </treat>
804
                           </ifCall>
805
                        </data>
806
                     </ifCall>
807
                  </ifCall>
808
                  <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
809
                     <str val="items"/>
810
                     <ifCall name="Q{http://www.w3.org/2005/xpath-functions/array}tail" type="1FA">
811
                        <treat as="FA" diag="0|0||array:tail">
812
                           <check card="1" diag="0|0||array:tail">
813
                              <varRef name="Q{}items" slot="1"/>
814
                           </check>
815
                        </treat>
816
                     </ifCall>
817
                  </ifCall>
818
               </sequence>
819
               <map size="2">
820
                  <str val="duplicates"/>
821
                  <str val="reject"/>
822
                  <str val="duplicates-error-code"/>
823
                  <str val="FOJS0003"/>
824
               </map>
825
            </ifCall>
826
         </let>
827
      </function>
828
      <function name="Q{xslt:priority-queue:2020}head"
829
                line="105"
830
                module="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
831
                eval="7"
832
                flags="pU"
833
                as="?FM"
834
                slots="2">
835
         <arg name="Q{}q" as="1FM"/>
836
         <let role="body"
837
              baseUri="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
838
              ns="array=~ map=~ p=private:xslt:priority-queue:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
839
              line="108"
840
              var="Q{http://saxon.sf.net/generated-variable}v0"
841
              as="1F"
842
              slot="1"
843
              eval="13">
844
            <treat as="F" diag="0|0||saxon:apply">
845
               <check card="1" diag="0|0||saxon:apply">
846
                  <lookup>
847
                     <varRef name="Q{}q" slot="0"/>
848
                     <str val="keys"/>
849
                  </lookup>
850
               </check>
851
            </treat>
852
            <treat as="FM" diag="5|0|XTTE0780|q:head#1">
853
               <check card="?" diag="5|0|XTTE0780|q:head#1">
854
                  <forEach>
855
                     <ifCall name="Q{http://www.w3.org/2005/xpath-functions/array}head" type="*">
856
                        <treat as="FA" diag="0|0||array:head">
857
                           <check card="1" diag="0|0||array:head">
858
                              <lookup>
859
                                 <varRef name="Q{}q" slot="0"/>
860
                                 <str val="items"/>
861
                              </lookup>
862
                           </check>
863
                        </treat>
864
                     </ifCall>
865
                     <ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn="$q ? &#34;keys&#34;">
866
                        <varRef name="Q{http://saxon.sf.net/generated-variable}v0" slot="1"/>
867
                        <arrayBlock>
868
                           <dot/>
869
                        </arrayBlock>
870
                     </ifCall>
871
                  </forEach>
872
               </check>
873
            </treat>
874
         </let>
875
      </function>
876
      <function name="Q{xslt:priority-queue:2020}size"
877
                line="91"
878
                module="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
879
                eval="8"
880
                flags="pU"
881
                as="1ADI"
882
                slots="1">
883
         <arg name="Q{}q" as="1FM"/>
884
         <ifCall role="body"
885
                 baseUri="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
886
                 ns="array=~ map=~ p=private:xslt:priority-queue:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
887
                 line="94"
888
                 name="Q{http://www.w3.org/2005/xpath-functions/array}size"
889
                 type="1ADI">
890
            <treat as="FA" diag="0|0||array:size">
891
               <check card="1" diag="0|0||array:size">
892
                  <lookup>
893
                     <varRef name="Q{}q" slot="0"/>
894
                     <str val="items"/>
895
                  </lookup>
896
               </check>
897
            </treat>
898
         </ifCall>
899
      </function>
900
      <function name="Q{http://ns.saxonica.com/anonymous-type}f_760357227"
901
                line="0"
902
                eval="4"
903
                flags="pU"
904
                as="*"
905
                slots="10">
906
         <arg name="Q{}state" as="*"/>
907
         <arg name="Q{}g" as="1FM"/>
908
         <arg name="Q{}target" as="?"/>
909
         <let role="body"
910
              baseUri="file:/C:/projects/git/xslt-graph/dijkstra-search.v2.xslt"
911
              ns="array=~ f=xslt:functions:2020 g=xslt:graph-api:2020 map=~ p=private:xslt:graph-api:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
912
              line="171"
913
              var="Q{}item"
914
              slot="3"
915
              eval="3">
916
            <lookup>
917
               <ufCall name="Q{xslt:priority-queue:2020}head" tailCall="false" bSlot="0">
918
                  <treat as="FM" diag="0|0||q:head">
919
                     <check card="1" diag="0|0||q:head">
920
                        <first>
921
                           <varRef name="Q{}state" slot="0"/>
922
                        </first>
923
                     </check>
924
                  </treat>
925
               </ufCall>
926
               <str val="value"/>
927
            </lookup>
928
            <let var="Q{}visited" slot="4" eval="7">
929
               <subscript>
930
                  <varRef name="Q{}state" slot="0"/>
931
                  <int val="2"/>
932
               </subscript>
933
               <let var="Q{}from" slot="5" eval="4">
934
                  <lookup>
935
                     <varRef name="Q{}item" slot="3"/>
936
                     <str val="to"/>
937
                  </lookup>
938
                  <let var="Q{}total" slot="6" eval="4">
939
                     <lookup>
940
                        <varRef name="Q{}item" slot="3"/>
941
                        <str val="distance"/>
942
                     </lookup>
943
                     <choose>
944
                        <gc op="="
945
                            card="M:N"
946
                            comp="GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint">
947
                           <data diag="1|0||=">
948
                              <varRef name="Q{}target" slot="2"/>
949
                           </data>
950
                           <data diag="1|1||=">
951
                              <varRef name="Q{}from" slot="5"/>
952
                           </data>
953
                        </gc>
954
                        <sequence>
955
                           <ufCall name="Q{xslt:priority-queue:2020}create" tailCall="false" bSlot="1"/>
956
                           <varRef name="Q{}visited" slot="4"/>
957
                        </sequence>
958
                        <true/>
959
                        <fn name="fold-left">
960
                           <for var="Q{}edge" slot="7">
961
                              <ufCall role="in"
962
                                      name="Q{xslt:graph-api:2020}vertex-edges"
963
                                      tailCall="false"
964
                                      bSlot="2">
965
                                 <check card="1" diag="0|0||g:vertex-edges">
966
                                    <varRef name="Q{}from" slot="5"/>
967
                                 </check>
968
                                 <varRef name="Q{}g" slot="1"/>
969
                              </ufCall>
970
                              <let role="return" var="Q{}distance" slot="8" eval="4">
971
                                 <ufCall name="Q{xslt:graph-api:2020}edge-value" tailCall="false" bSlot="3">
972
                                    <varRef name="Q{}edge" slot="7"/>
973
                                    <varRef name="Q{}g" slot="1"/>
974
                                 </ufCall>
975
                                 <for var="Q{}to" slot="9">
976
                                    <ufCall role="in"
977
                                            name="Q{xslt:graph-api:2020}edge-vertices"
978
                                            tailCall="false"
979
                                            bSlot="4">
980
                                       <varRef name="Q{}edge" slot="7"/>
981
                                       <varRef name="Q{}g" slot="1"/>
982
                                    </ufCall>
983
                                    <choose role="return">
984
                                       <gc op="="
985
                                           card="M:N"
986
                                           comp="GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint">
987
                                          <data diag="1|0||=">
988
                                             <varRef name="Q{}to" slot="9"/>
989
                                          </data>
990
                                          <data diag="1|1||=">
991
                                             <varRef name="Q{}from" slot="5"/>
992
                                          </data>
993
                                       </gc>
994
                                       <empty/>
995
                                       <true/>
996
                                       <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}merge" type="1FM">
997
                                          <sequence>
998
                                             <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
999
                                                <str val="from"/>
1000
                                                <varRef name="Q{}from" slot="5"/>
1001
                                             </ifCall>
1002
                                             <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
1003
                                                <str val="to"/>
1004
                                                <varRef name="Q{}to" slot="9"/>
1005
                                             </ifCall>
1006
                                             <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
1007
                                                <str val="edge"/>
1008
                                                <varRef name="Q{}edge" slot="7"/>
1009
                                             </ifCall>
1010
                                             <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
1011
                                                <str val="distance"/>
1012
                                                <choose>
1013
                                                   <fn name="empty">
1014
                                                      <varRef name="Q{}total" slot="6"/>
1015
                                                   </fn>
1016
                                                   <varRef name="Q{}distance" slot="8"/>
1017
                                                   <true/>
1018
                                                   <arith op="+" calc="a+a">
1019
                                                      <cvUntyped to="AO">
1020
                                                         <atomSing card="?" diag="1|0||+">
1021
                                                            <varRef name="Q{}total" slot="6"/>
1022
                                                         </atomSing>
1023
                                                      </cvUntyped>
1024
                                                      <cvUntyped to="AO">
1025
                                                         <atomSing card="?" diag="1|1||+">
1026
                                                            <varRef name="Q{}distance" slot="8"/>
1027
                                                         </atomSing>
1028
                                                      </cvUntyped>
1029
                                                   </arith>
1030
                                                </choose>
1031
                                             </ifCall>
1032
                                          </sequence>
1033
                                          <map size="2">
1034
                                             <str val="duplicates"/>
1035
                                             <str val="reject"/>
1036
                                             <str val="duplicates-error-code"/>
1037
                                             <str val="FOJS0003"/>
1038
                                          </map>
1039
                                       </ifCall>
1040
                                    </choose>
1041
                                 </for>
1042
                              </let>
1043
                           </for>
1044
                           <sequence>
1045
                              <ufCall name="Q{xslt:priority-queue:2020}tail" tailCall="false" bSlot="5">
1046
                                 <treat as="FM" diag="0|0||q:tail">
1047
                                    <check card="1" diag="0|0||q:tail">
1048
                                       <first>
1049
                                          <varRef name="Q{}state" slot="0"/>
1050
                                       </first>
1051
                                    </check>
1052
                                 </treat>
1053
                              </ufCall>
1054
                              <varRef name="Q{}visited" slot="4"/>
1055
                           </sequence>
1056
                           <fnCoercer to="1F a[*,1]" diag="0|2||fn:fold-left">
1057
                              <ufRef name="Q{http://ns.saxonica.com/anonymous-type}f_1944702768"
1058
                                     arity="2"
1059
                                     bSlot="6"/>
1060
                           </fnCoercer>
1061
                        </fn>
1062
                     </choose>
1063
                  </let>
1064
               </let>
1065
            </let>
1066
         </let>
1067
      </function>
1068
      <function name="Q{http://ns.saxonica.com/anonymous-type}f_769432223"
1069
                line="0"
1070
                eval="4"
1071
                flags="pU"
1072
                as="*"
1073
                slots="1">
1074
         <arg name="Q{}edge" as="1FM"/>
1075
         <lookup role="body"
1076
                 baseUri="file:/C:/projects/git/xslt-graph/tests/rome-test.v2.xslt"
1077
                 ns="array=~ g=xslt:graph-api:2020 map=~ t=public:this xs=~ xsl=~ xml=~"
1078
                 line="73">
1079
            <varRef name="Q{}edge" slot="0"/>
1080
            <str val="length"/>
1081
         </lookup>
1082
      </function>
1083
      <function name="Q{http://ns.saxonica.com/anonymous-type}f_696933920"
1084
                line="0"
1085
                eval="4"
1086
                flags="pU"
1087
                as="*"
1088
                slots="1">
1089
         <arg name="Q{}edge" as="1FM"/>
1090
         <sequence role="body"
1091
                   baseUri="file:/C:/projects/git/xslt-graph/tests/rome-test.v2.xslt"
1092
                   ns="array=~ g=xslt:graph-api:2020 map=~ t=public:this xs=~ xsl=~ xml=~"
1093
                   line="73">
1094
            <lookup>
1095
               <varRef name="Q{}edge" slot="0"/>
1096
               <str val="from"/>
1097
            </lookup>
1098
            <lookup>
1099
               <varRef name="Q{}edge" slot="0"/>
1100
               <str val="to"/>
1101
            </lookup>
1102
         </sequence>
1103
      </function>
1104
      <function name="Q{xslt:graph-api:2020}edge-value"
1105
                line="83"
1106
                module="file:/C:/projects/git/xslt-graph/graph.xslt"
1107
                eval="4"
1108
                flags="pU"
1109
                as="*"
1110
                slots="3">
1111
         <arg name="Q{}edge" as="1"/>
1112
         <arg name="Q{}g" as="1FM"/>
1113
         <let role="body"
1114
              baseUri="file:/C:/projects/git/xslt-graph/graph.xslt"
1115
              ns="g=xslt:graph-api:2020 map=~ xs=~ xsl=~ xml=~"
1116
              line="92"
1117
              var="Q{}fn"
1118
              slot="2"
1119
              eval="4">
1120
            <lookup>
1121
               <varRef name="Q{}g" slot="1"/>
1122
               <str val="edge-value"/>
1123
            </lookup>
1124
            <choose>
1125
               <fn name="empty">
1126
                  <varRef name="Q{}fn" slot="2"/>
1127
               </fn>
1128
               <varRef name="Q{}edge" slot="0"/>
1129
               <true/>
1130
               <ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn="$fn">
1131
                  <treat as="F" diag="0|0||saxon:apply">
1132
                     <check card="1" diag="0|0||saxon:apply">
1133
                        <varRef name="Q{}fn" slot="2"/>
1134
                     </check>
1135
                  </treat>
1136
                  <arrayBlock>
1137
                     <varRef name="Q{}edge" slot="0"/>
1138
                  </arrayBlock>
1139
               </ifCall>
1140
            </choose>
1141
         </let>
1142
      </function>
1143
      <function name="Q{xslt:priority-queue:2020}items"
1144
                line="152"
1145
                module="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
1146
                eval="4"
1147
                flags="pU"
1148
                as="*FM"
1149
                slots="2">
1150
         <arg name="Q{}q" as="1FM"/>
1151
         <let role="body"
1152
              baseUri="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
1153
              ns="array=~ map=~ p=private:xslt:priority-queue:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
1154
              line="155"
1155
              var="Q{http://saxon.sf.net/generated-variable}v0"
1156
              as="1F"
1157
              slot="1"
1158
              eval="13">
1159
            <treat as="F" diag="0|0||saxon:apply">
1160
               <check card="1" diag="0|0||saxon:apply">
1161
                  <lookup>
1162
                     <varRef name="Q{}q" slot="0"/>
1163
                     <str val="keys"/>
1164
                  </lookup>
1165
               </check>
1166
            </treat>
1167
            <treat as="FM" diag="5|0|XTTE0780|q:items#1">
1168
               <forEach>
1169
                  <lookupAll>
1170
                     <lookup>
1171
                        <varRef name="Q{}q" slot="0"/>
1172
                        <str val="items"/>
1173
                     </lookup>
1174
                  </lookupAll>
1175
                  <ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn="$q ? &#34;keys&#34;">
1176
                     <varRef name="Q{http://saxon.sf.net/generated-variable}v0" slot="1"/>
1177
                     <arrayBlock>
1178
                        <dot/>
1179
                     </arrayBlock>
1180
                  </ifCall>
1181
               </forEach>
1182
            </treat>
1183
         </let>
1184
      </function>
1185
      <function name="Q{xslt:priority-queue:2020}remove"
1186
                line="67"
1187
                module="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
1188
                eval="16"
1189
                flags="pU"
1190
                as="1FM"
1191
                slots="5">
1192
         <arg name="Q{}q" as="1FM"/>
1193
         <arg name="Q{}key" as="1"/>
1194
         <let role="body"
1195
              baseUri="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
1196
              ns="array=~ map=~ p=private:xslt:priority-queue:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
1197
              line="83"
1198
              var="Q{}keys"
1199
              slot="2"
1200
              eval="4">
1201
            <lookup>
1202
               <varRef name="Q{}q" slot="0"/>
1203
               <str val="keys"/>
1204
            </lookup>
1205
            <let var="Q{}items" slot="3" eval="4">
1206
               <lookup>
1207
                  <varRef name="Q{}q" slot="0"/>
1208
                  <str val="items"/>
1209
               </lookup>
1210
               <let var="Q{}item" slot="4" eval="4">
1211
                  <ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn="$keys">
1212
                     <treat as="F" diag="0|0||saxon:apply">
1213
                        <check card="1" diag="0|0||saxon:apply">
1214
                           <varRef name="Q{}keys" slot="2"/>
1215
                        </check>
1216
                     </treat>
1217
                     <arrayBlock>
1218
                        <varRef name="Q{}key" slot="1"/>
1219
                     </arrayBlock>
1220
                  </ifCall>
1221
                  <choose>
1222
                     <fn name="empty">
1223
                        <varRef name="Q{}item" slot="4"/>
1224
                     </fn>
1225
                     <varRef name="Q{}q" slot="0"/>
1226
                     <true/>
1227
                     <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}merge" type="1FM">
1228
                        <sequence>
1229
                           <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
1230
                              <str val="keys"/>
1231
                              <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}remove" type="1FM">
1232
                                 <treat as="FM" diag="0|0||map:remove">
1233
                                    <check card="1" diag="0|0||map:remove">
1234
                                       <varRef name="Q{}keys" slot="2"/>
1235
                                    </check>
1236
                                 </treat>
1237
                                 <data diag="0|1||map:remove">
1238
                                    <varRef name="Q{}key" slot="1"/>
1239
                                 </data>
1240
                              </ifCall>
1241
                           </ifCall>
1242
                           <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
1243
                              <str val="items"/>
1244
                              <ifCall name="Q{http://www.w3.org/2005/xpath-functions/array}remove" type="1FA">
1245
                                 <treat as="FA" diag="0|0||array:remove">
1246
                                    <check card="1" diag="0|0||array:remove">
1247
                                       <varRef name="Q{}items" slot="3"/>
1248
                                    </check>
1249
                                 </treat>
1250
                                 <ufCall name="Q{private:xslt:priority-queue:2020}find"
1251
                                         tailCall="false"
1252
                                         bSlot="0"
1253
                                         eval="16 16 8 6">
1254
                                    <treat as="FM" diag="0|0||p:find">
1255
                                       <check card="1" diag="0|0||p:find">
1256
                                          <varRef name="Q{}keys" slot="2"/>
1257
                                       </check>
1258
                                    </treat>
1259
                                    <treat as="FA" diag="0|1||p:find">
1260
                                       <check card="1" diag="0|1||p:find">
1261
                                          <varRef name="Q{}items" slot="3"/>
1262
                                       </check>
1263
                                    </treat>
1264
                                    <check card="?" diag="0|2||p:find">
1265
                                       <lookup>
1266
                                          <varRef name="Q{}item" slot="4"/>
1267
                                          <str val="priority"/>
1268
                                       </lookup>
1269
                                    </check>
1270
                                    <varRef name="Q{}key" slot="1"/>
1271
                                 </ufCall>
1272
                              </ifCall>
1273
                           </ifCall>
1274
                        </sequence>
1275
                        <map size="2">
1276
                           <str val="duplicates"/>
1277
                           <str val="reject"/>
1278
                           <str val="duplicates-error-code"/>
1279
                           <str val="FOJS0003"/>
1280
                        </map>
1281
                     </ifCall>
1282
                  </choose>
1283
               </let>
1284
            </let>
1285
         </let>
1286
      </function>
1287
      <function name="Q{xslt:functions:2020}skip-while"
1288
                line="117"
1289
                module="file:/C:/projects/git/xslt-graph/functions.xslt"
1290
                eval="9"
1291
                flags="pU"
1292
                as="*"
1293
                slots="2">
1294
         <arg name="Q{}items" as="*"/>
1295
         <arg name="Q{}condition" as="1F r[1AB] a[1,1ADI]"/>
1296
         <callT role="body"
1297
                baseUri="file:/C:/projects/git/xslt-graph/functions.xslt"
1298
                ns="f=xslt:functions:2020 xs=~ xsl=~ xml=~"
1299
                line="122"
1300
                name="Q{xslt:functions:2020}skip-while"
1301
                bSlot="0">
1302
            <withParam name="Q{}items" flags="c">
1303
               <varRef line="123" name="Q{}items" slot="0"/>
1304
            </withParam>
1305
            <withParam name="Q{}condition" flags="c" as="1F r[1AB] a[1,1ADI]">
1306
               <varRef line="124" name="Q{}condition" slot="1"/>
1307
            </withParam>
1308
         </callT>
1309
      </function>
1310
      <function name="Q{http://ns.saxonica.com/anonymous-type}f_658909832"
1311
                line="0"
1312
                eval="16"
1313
                flags="pU"
1314
                as="*"
1315
                slots="1">
1316
         <arg name="Q{}state" as="1FM"/>
1317
         <vc role="body"
1318
             baseUri="file:/C:/projects/git/xslt-graph/search.xslt"
1319
             ns="array=~ f=xslt:functions:2020 g=xslt:graph-api:2020 map=~ xs=~ xsl=~ xml=~"
1320
             line="79"
1321
             op="gt"
1322
             onEmpty="0"
1323
             comp="CAVC">
1324
            <ifCall name="Q{http://www.w3.org/2005/xpath-functions/array}size" type="1ADI">
1325
               <treat as="FA" diag="0|0||array:size">
1326
                  <check card="1" diag="0|0||array:size">
1327
                     <lookup>
1328
                        <varRef name="Q{}state" slot="0"/>
1329
                        <str val="queue"/>
1330
                     </lookup>
1331
                  </check>
1332
               </treat>
1333
            </ifCall>
1334
            <int val="0"/>
1335
         </vc>
1336
      </function>
1337
      <function name="Q{http://ns.saxonica.com/anonymous-type}f_656479172"
1338
                line="0"
1339
                eval="16"
1340
                flags="pU"
1341
                as="*"
1342
                slots="1">
1343
         <arg name="Q{}state" as="*"/>
1344
         <vc role="body"
1345
             baseUri="file:/C:/projects/git/xslt-graph/dijkstra-search.v2.xslt"
1346
             ns="array=~ f=xslt:functions:2020 g=xslt:graph-api:2020 map=~ p=private:xslt:graph-api:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
1347
             line="171"
1348
             op="gt"
1349
             onEmpty="0"
1350
             comp="CAVC">
1351
            <ufCall name="Q{xslt:priority-queue:2020}size" tailCall="false" bSlot="0">
1352
               <treat as="FM" diag="0|0||q:size">
1353
                  <check card="1" diag="0|0||q:size">
1354
                     <first>
1355
                        <varRef name="Q{}state" slot="0"/>
1356
                     </first>
1357
                  </check>
1358
               </treat>
1359
            </ufCall>
1360
            <int val="0"/>
1361
         </vc>
1362
      </function>
1363
      <function name="Q{http://ns.saxonica.com/anonymous-type}f_775445710"
1364
                line="0"
1365
                eval="6"
1366
                flags="pU"
1367
                as="*"
1368
                slots="1">
1369
         <arg name="Q{}roads" as="*FM k[AS] v[?ADI]"/>
1370
         <varRef role="body"
1371
                 baseUri="file:/C:/projects/git/xslt-graph/tests/rome-test.v2.xslt"
1372
                 ns="array=~ g=xslt:graph-api:2020 map=~ t=public:this xs=~ xsl=~ xml=~"
1373
                 line="73"
1374
                 name="Q{}roads"
1375
                 slot="0"/>
1376
      </function>
1377
      <function name="Q{xslt:priority-queue:2020}add"
1378
                line="34"
1379
                module="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
1380
                eval="8"
1381
                flags="pU"
1382
                as="1FM"
1383
                slots="9">
1384
         <arg name="Q{}q" as="1FM"/>
1385
         <arg name="Q{}priority" as="?"/>
1386
         <arg name="Q{}key" as="1"/>
1387
         <arg name="Q{}value" as="*"/>
1388
         <let role="body"
1389
              baseUri="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
1390
              ns="array=~ map=~ p=private:xslt:priority-queue:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
1391
              line="58"
1392
              var="Q{}keys"
1393
              slot="4"
1394
              eval="3">
1395
            <lookup>
1396
               <varRef name="Q{}q" slot="0"/>
1397
               <str val="keys"/>
1398
            </lookup>
1399
            <let var="Q{}items" slot="5" eval="3">
1400
               <lookup>
1401
                  <varRef name="Q{}q" slot="0"/>
1402
                  <str val="items"/>
1403
               </lookup>
1404
               <let var="Q{}item" slot="6" eval="3">
1405
                  <ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn="$keys">
1406
                     <treat as="F" diag="0|0||saxon:apply">
1407
                        <check card="1" diag="0|0||saxon:apply">
1408
                           <varRef name="Q{}keys" slot="4"/>
1409
                        </check>
1410
                     </treat>
1411
                     <arrayBlock>
1412
                        <varRef name="Q{}key" slot="2"/>
1413
                     </arrayBlock>
1414
                  </ifCall>
1415
                  <let var="Q{}items" slot="7" eval="3">
1416
                     <choose>
1417
                        <fn name="empty">
1418
                           <varRef name="Q{}item" slot="6"/>
1419
                        </fn>
1420
                        <varRef name="Q{}items" slot="5"/>
1421
                        <true/>
1422
                        <ifCall name="Q{http://www.w3.org/2005/xpath-functions/array}remove" type="1FA">
1423
                           <treat as="FA" diag="0|0||array:remove">
1424
                              <check card="1" diag="0|0||array:remove">
1425
                                 <varRef name="Q{}items" slot="5"/>
1426
                              </check>
1427
                           </treat>
1428
                           <ufCall name="Q{private:xslt:priority-queue:2020}find"
1429
                                   tailCall="false"
1430
                                   bSlot="0"
1431
                                   eval="16 16 8 6">
1432
                              <treat as="FM" diag="0|0||p:find">
1433
                                 <check card="1" diag="0|0||p:find">
1434
                                    <varRef name="Q{}keys" slot="4"/>
1435
                                 </check>
1436
                              </treat>
1437
                              <treat as="FA" diag="0|1||p:find">
1438
                                 <check card="1" diag="0|1||p:find">
1439
                                    <varRef name="Q{}items" slot="5"/>
1440
                                 </check>
1441
                              </treat>
1442
                              <check card="?" diag="0|2||p:find">
1443
                                 <lookup>
1444
                                    <varRef name="Q{}item" slot="6"/>
1445
                                    <str val="priority"/>
1446
                                 </lookup>
1447
                              </check>
1448
                              <varRef name="Q{}key" slot="2"/>
1449
                           </ufCall>
1450
                        </ifCall>
1451
                     </choose>
1452
                     <let var="Q{}index" slot="8" eval="16">
1453
                        <ufCall name="Q{private:xslt:priority-queue:2020}find"
1454
                                tailCall="false"
1455
                                bSlot="1"
1456
                                eval="16 16 6 6">
1457
                           <treat as="FM" diag="0|0||p:find">
1458
                              <check card="1" diag="0|0||p:find">
1459
                                 <varRef name="Q{}keys" slot="4"/>
1460
                              </check>
1461
                           </treat>
1462
                           <treat as="FA" diag="0|1||p:find">
1463
                              <check card="1" diag="0|1||p:find">
1464
                                 <varRef name="Q{}items" slot="7"/>
1465
                              </check>
1466
                           </treat>
1467
                           <varRef name="Q{}priority" slot="1"/>
1468
                           <varRef name="Q{}key" slot="2"/>
1469
                        </ufCall>
1470
                        <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}merge" type="1FM">
1471
                           <sequence>
1472
                              <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
1473
                                 <str val="keys"/>
1474
                                 <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}put" type="1FM">
1475
                                    <treat as="FM" diag="0|0||map:put">
1476
                                       <check card="1" diag="0|0||map:put">
1477
                                          <varRef name="Q{}keys" slot="4"/>
1478
                                       </check>
1479
                                    </treat>
1480
                                    <atomSing diag="0|1||map:put">
1481
                                       <varRef name="Q{}key" slot="2"/>
1482
                                    </atomSing>
1483
                                    <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}merge" type="1FM">
1484
                                       <sequence>
1485
                                          <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
1486
                                             <str val="key"/>
1487
                                             <varRef name="Q{}key" slot="2"/>
1488
                                          </ifCall>
1489
                                          <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
1490
                                             <str val="priority"/>
1491
                                             <varRef name="Q{}priority" slot="1"/>
1492
                                          </ifCall>
1493
                                          <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
1494
                                             <str val="value"/>
1495
                                             <varRef name="Q{}value" slot="3"/>
1496
                                          </ifCall>
1497
                                       </sequence>
1498
                                       <map size="2">
1499
                                          <str val="duplicates"/>
1500
                                          <str val="reject"/>
1501
                                          <str val="duplicates-error-code"/>
1502
                                          <str val="FOJS0003"/>
1503
                                       </map>
1504
                                    </ifCall>
1505
                                 </ifCall>
1506
                              </ifCall>
1507
                              <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
1508
                                 <str val="items"/>
1509
                                 <ifCall name="Q{http://www.w3.org/2005/xpath-functions/array}insert-before"
1510
                                         type="1FA">
1511
                                    <treat as="FA" diag="0|0||array:insert-before">
1512
                                       <check card="1" diag="0|0||array:insert-before">
1513
                                          <varRef name="Q{}items" slot="7"/>
1514
                                       </check>
1515
                                    </treat>
1516
                                    <minus>
1517
                                       <varRef name="Q{}index" slot="8"/>
1518
                                    </minus>
1519
                                    <varRef name="Q{}key" slot="2"/>
1520
                                 </ifCall>
1521
                              </ifCall>
1522
                           </sequence>
1523
                           <map size="2">
1524
                              <str val="duplicates"/>
1525
                              <str val="reject"/>
1526
                              <str val="duplicates-error-code"/>
1527
                              <str val="FOJS0003"/>
1528
                           </map>
1529
                        </ifCall>
1530
                     </let>
1531
                  </let>
1532
               </let>
1533
            </let>
1534
         </let>
1535
      </function>
1536
      <function name="Q{http://ns.saxonica.com/anonymous-type}f_658404420"
1537
                line="0"
1538
                eval="8"
1539
                flags="pU"
1540
                as="*"
1541
                slots="2">
1542
         <arg name="Q{}vertex" as="1"/>
1543
         <arg name="Q{}visited" as="*"/>
1544
         <fn role="body"
1545
             baseUri="file:/C:/projects/git/xslt-graph/dijkstra-search.v2.xslt"
1546
             ns="array=~ f=xslt:functions:2020 g=xslt:graph-api:2020 map=~ p=private:xslt:graph-api:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
1547
             line="88"
1548
             name="exists">
1549
            <forEach>
1550
               <ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn="$visited">
1551
                  <treat as="F" diag="0|0||saxon:apply">
1552
                     <check card="1" diag="0|0||saxon:apply">
1553
                        <varRef name="Q{}visited" slot="1"/>
1554
                     </check>
1555
                  </treat>
1556
                  <arrayBlock>
1557
                     <varRef name="Q{}vertex" slot="0"/>
1558
                  </arrayBlock>
1559
               </ifCall>
1560
               <lookup>
1561
                  <dot/>
1562
                  <str val="from"/>
1563
               </lookup>
1564
            </forEach>
1565
         </fn>
1566
      </function>
1567
      <function name="Q{xslt:priority-queue:2020}item"
1568
                line="137"
1569
                module="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
1570
                eval="7"
1571
                flags="pU"
1572
                as="?FM"
1573
                slots="2">
1574
         <arg name="Q{}q" as="1FM"/>
1575
         <arg name="Q{}key" as="1"/>
1576
         <treat role="body"
1577
                baseUri="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
1578
                ns="array=~ map=~ p=private:xslt:priority-queue:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
1579
                line="141"
1580
                as="FM"
1581
                diag="5|0|XTTE0780|q:item#2">
1582
            <check card="?" diag="5|0|XTTE0780|q:item#2">
1583
               <ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn="$q ? &#34;keys&#34;">
1584
                  <treat as="F" diag="0|0||saxon:apply">
1585
                     <check card="1" diag="0|0||saxon:apply">
1586
                        <lookup>
1587
                           <varRef name="Q{}q" slot="0"/>
1588
                           <str val="keys"/>
1589
                        </lookup>
1590
                     </check>
1591
                  </treat>
1592
                  <arrayBlock>
1593
                     <varRef name="Q{}key" slot="1"/>
1594
                  </arrayBlock>
1595
               </ifCall>
1596
            </check>
1597
         </treat>
1598
      </function>
1599
      <function name="Q{xslt:priority-queue:2020}create"
1600
                line="22"
1601
                module="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
1602
                eval="6"
1603
                flags="pU"
1604
                as="1FM"
1605
                slots="0">
1606
         <gVarRef role="body"
1607
                  baseUri="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
1608
                  ns="array=~ map=~ p=private:xslt:priority-queue:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
1609
                  line="23"
1610
                  name="Q{xslt:priority-queue:2020}empty"
1611
                  bSlot="0"/>
1612
      </function>
1613
      <function name="Q{http://ns.saxonica.com/anonymous-type}f_712974096"
1614
                line="0"
1615
                eval="4"
1616
                flags="pU"
1617
                as="*"
1618
                slots="2">
1619
         <arg name="Q{}vertex" as="1ADI"/>
1620
         <arg name="Q{}vertices" as="1FM"/>
1621
         <filter role="body"
1622
                 baseUri="file:/C:/projects/git/xslt-graph/tests/rome-test.v2.xslt"
1623
                 ns="array=~ g=xslt:graph-api:2020 map=~ t=public:this xs=~ xsl=~ xml=~"
1624
                 line="73"
1625
                 flags="b">
1626
            <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}get" type="*">
1627
               <varRef name="Q{}vertices" slot="1"/>
1628
               <varRef name="Q{}vertex" slot="0"/>
1629
            </ifCall>
1630
            <gc op="="
1631
                card="N:1"
1632
                comp="GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint">
1633
               <data diag="1|0||=">
1634
                  <lookup>
1635
                     <dot/>
1636
                     <str val="from"/>
1637
                  </lookup>
1638
               </data>
1639
               <varRef name="Q{}vertex" slot="0"/>
1640
            </gc>
1641
         </filter>
1642
      </function>
1643
      <function name="Q{xslt:graph-api:2020}dijkstra-search-visited"
1644
                line="107"
1645
                module="file:/C:/projects/git/xslt-graph/dijkstra-search.v2.xslt"
1646
                eval="16"
1647
                flags="pU"
1648
                as="1FM"
1649
                slots="4">
1650
         <arg name="Q{}source" as="1"/>
1651
         <arg name="Q{}target" as="?"/>
1652
         <arg name="Q{}g" as="1FM"/>
1653
         <treat role="body"
1654
                baseUri="file:/C:/projects/git/xslt-graph/dijkstra-search.v2.xslt"
1655
                ns="array=~ f=xslt:functions:2020 g=xslt:graph-api:2020 map=~ p=private:xslt:graph-api:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
1656
                line="171"
1657
                as="FM"
1658
                diag="5|0|XTTE0780|g:dijkstra-search-visited#3">
1659
            <check card="1" diag="5|0|XTTE0780|g:dijkstra-search-visited#3">
1660
               <subscript>
1661
                  <ufCall name="Q{xslt:functions:2020}while"
1662
                          tailCall="false"
1663
                          bSlot="0"
1664
                          eval="8 16 16">
1665
                     <let var="Q{}item" slot="3" eval="8">
1666
                        <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
1667
                           <str val="to"/>
1668
                           <varRef name="Q{}source" slot="0"/>
1669
                        </ifCall>
1670
                        <sequence>
1671
                           <ufCall name="Q{xslt:priority-queue:2020}add"
1672
                                   tailCall="false"
1673
                                   bSlot="1"
1674
                                   eval="16 0 6 6">
1675
                              <ufCall name="Q{xslt:priority-queue:2020}create" tailCall="false" bSlot="2"/>
1676
                              <empty/>
1677
                              <varRef name="Q{}source" slot="0"/>
1678
                              <varRef name="Q{}item" slot="3"/>
1679
                           </ufCall>
1680
                           <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
1681
                              <atomSing diag="0|0||map:entry">
1682
                                 <varRef name="Q{}source" slot="0"/>
1683
                              </atomSing>
1684
                              <varRef name="Q{}item" slot="3"/>
1685
                           </ifCall>
1686
                        </sequence>
1687
                     </let>
1688
                     <fnCoercer to="1F r[1AB] a[*]" diag="0|1||f:while">
1689
                        <ufRef name="Q{http://ns.saxonica.com/anonymous-type}f_656479172"
1690
                               arity="1"
1691
                               bSlot="3"/>
1692
                     </fnCoercer>
1693
                     <partialApply>
1694
                        <ufRef name="Q{http://ns.saxonica.com/anonymous-type}f_760357227"
1695
                               arity="3"
1696
                               bSlot="4"/>
1697
                        <null/>
1698
                        <varRef name="Q{}g" slot="2"/>
1699
                        <varRef name="Q{}target" slot="1"/>
1700
                     </partialApply>
1701
                  </ufCall>
1702
                  <int val="2"/>
1703
               </subscript>
1704
            </check>
1705
         </treat>
1706
      </function>
1707
      <function name="Q{xslt:graph-api:2020}dijkstra-search-reversed"
1708
                line="75"
1709
                module="file:/C:/projects/git/xslt-graph/dijkstra-search.v2.xslt"
1710
                eval="4"
1711
                flags="pU"
1712
                as="*FM"
1713
                slots="4">
1714
         <arg name="Q{}source" as="1"/>
1715
         <arg name="Q{}target" as="1"/>
1716
         <arg name="Q{}g" as="1FM"/>
1717
         <let role="body"
1718
              baseUri="file:/C:/projects/git/xslt-graph/dijkstra-search.v2.xslt"
1719
              ns="array=~ f=xslt:functions:2020 g=xslt:graph-api:2020 map=~ p=private:xslt:graph-api:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
1720
              line="88"
1721
              var="Q{}visited"
1722
              slot="3"
1723
              eval="16">
1724
            <ufCall name="Q{xslt:graph-api:2020}dijkstra-search-visited"
1725
                    tailCall="false"
1726
                    bSlot="0"
1727
                    eval="6 6 6">
1728
               <varRef name="Q{}source" slot="0"/>
1729
               <varRef name="Q{}target" slot="1"/>
1730
               <varRef name="Q{}g" slot="2"/>
1731
            </ufCall>
1732
            <treat as="FM" diag="5|0|XTTE0780|g:dijkstra-search-reversed#3">
1733
               <ufCall name="Q{xslt:functions:2020}while"
1734
                       tailCall="false"
1735
                       bSlot="1"
1736
                       eval="6 16 16 16">
1737
                  <varRef name="Q{}target" slot="1"/>
1738
                  <fnCoercer to="1F r[1AB] a[*]" diag="0|1||f:while">
1739
                     <partialApply>
1740
                        <fnCoercer to="1F a[*,*]" diag="0|0||saxon:call">
1741
                           <ufRef name="Q{http://ns.saxonica.com/anonymous-type}f_658404420"
1742
                                  arity="2"
1743
                                  bSlot="2"/>
1744
                        </fnCoercer>
1745
                        <null/>
1746
                        <varRef name="Q{}visited" slot="3"/>
1747
                     </partialApply>
1748
                  </fnCoercer>
1749
                  <partialApply>
1750
                     <fnCoercer to="1F a[*,*]" diag="0|0||saxon:call">
1751
                        <ufRef name="Q{http://ns.saxonica.com/anonymous-type}f_2108763062"
1752
                               arity="2"
1753
                               bSlot="3"/>
1754
                     </fnCoercer>
1755
                     <null/>
1756
                     <varRef name="Q{}visited" slot="3"/>
1757
                  </partialApply>
1758
                  <fnCoercer to="1F a[*,*]" diag="0|3||f:while">
1759
                     <ufRef name="Q{http://ns.saxonica.com/anonymous-type}f_2017085051"
1760
                            arity="2"
1761
                            bSlot="4"/>
1762
                  </fnCoercer>
1763
               </ufCall>
1764
            </treat>
1765
         </let>
1766
      </function>
1767
      <function name="Q{xslt:functions:2020}repeat"
1768
                line="72"
1769
                module="file:/C:/projects/git/xslt-graph/functions.xslt"
1770
                eval="9"
1771
                flags="pU"
1772
                as="*"
1773
                slots="4">
1774
         <arg name="Q{}state" as="*"/>
1775
         <arg name="Q{}condition" as="1F r[1AB] a[*]"/>
1776
         <arg name="Q{}action" as="1F a[*]"/>
1777
         <arg name="Q{}next" as="1F a[*,*]"/>
1778
         <callT role="body"
1779
                baseUri="file:/C:/projects/git/xslt-graph/functions.xslt"
1780
                ns="f=xslt:functions:2020 xs=~ xsl=~ xml=~"
1781
                line="78"
1782
                name="Q{xslt:functions:2020}repeat"
1783
                bSlot="0">
1784
            <withParam name="Q{}state" flags="c">
1785
               <varRef line="79" name="Q{}state" slot="0"/>
1786
            </withParam>
1787
            <withParam name="Q{}condition" flags="c" as="1F r[1AB] a[*]">
1788
               <varRef line="80" name="Q{}condition" slot="1"/>
1789
            </withParam>
1790
            <withParam name="Q{}action" flags="c" as="1F a[*]">
1791
               <varRef line="81" name="Q{}action" slot="2"/>
1792
            </withParam>
1793
            <withParam name="Q{}next" flags="c" as="1F a[*,*]">
1794
               <varRef line="82" name="Q{}next" slot="3"/>
1795
            </withParam>
1796
         </callT>
1797
      </function>
1798
      <function name="Q{xslt:graph-api:2020}dijkstra-search"
1799
                line="50"
1800
                module="file:/C:/projects/git/xslt-graph/dijkstra-search.v2.xslt"
1801
                eval="4"
1802
                flags="pU"
1803
                as="*FM"
1804
                slots="3">
1805
         <arg name="Q{}source" as="1"/>
1806
         <arg name="Q{}target" as="1"/>
1807
         <arg name="Q{}g" as="1FM"/>
1808
         <fn role="body"
1809
             baseUri="file:/C:/projects/git/xslt-graph/dijkstra-search.v2.xslt"
1810
             ns="array=~ f=xslt:functions:2020 g=xslt:graph-api:2020 map=~ p=private:xslt:graph-api:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
1811
             line="56"
1812
             name="reverse">
1813
            <ufCall name="Q{xslt:graph-api:2020}dijkstra-search-reversed"
1814
                    tailCall="false"
1815
                    bSlot="0"
1816
                    eval="6 6 6">
1817
               <varRef name="Q{}source" slot="0"/>
1818
               <varRef name="Q{}target" slot="1"/>
1819
               <varRef name="Q{}g" slot="2"/>
1820
            </ufCall>
1821
         </fn>
1822
      </function>
1823
      <function name="Q{xslt:graph-api:2020}dijkstra-search"
1824
                line="27"
1825
                module="file:/C:/projects/git/xslt-graph/dijkstra-search.v2.xslt"
1826
                eval="16"
1827
                flags="pU"
1828
                as="1FM"
1829
                slots="2">
1830
         <arg name="Q{}source" as="1"/>
1831
         <arg name="Q{}g" as="1FM"/>
1832
         <tailCallLoop role="body"
1833
                       baseUri="file:/C:/projects/git/xslt-graph/dijkstra-search.v2.xslt"
1834
                       ns="array=~ f=xslt:functions:2020 g=xslt:graph-api:2020 map=~ p=private:xslt:graph-api:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
1835
                       line="31">
1836
            <ufCall name="Q{xslt:graph-api:2020}dijkstra-search-visited"
1837
                    tailCall="foreign"
1838
                    bSlot="0"
1839
                    eval="6 0 6">
1840
               <varRef name="Q{}source" slot="0"/>
1841
               <empty/>
1842
               <varRef name="Q{}g" slot="1"/>
1843
            </ufCall>
1844
         </tailCallLoop>
1845
      </function>
1846
      <function name="Q{http://ns.saxonica.com/anonymous-type}f_1424082571"
1847
                line="0"
1848
                eval="16"
1849
                flags="pU"
1850
                as="*"
1851
                slots="10">
1852
         <arg name="Q{}state" as="1FM"/>
1853
         <arg name="Q{}item" as="*"/>
1854
         <arg name="Q{}g" as="1FM"/>
1855
         <arg name="Q{}is-depth-first" as="1AB"/>
1856
         <let role="body"
1857
              baseUri="file:/C:/projects/git/xslt-graph/search.xslt"
1858
              ns="array=~ f=xslt:functions:2020 g=xslt:graph-api:2020 map=~ xs=~ xsl=~ xml=~"
1859
              line="79"
1860
              var="Q{}tail"
1861
              slot="4"
1862
              eval="8">
1863
            <ifCall name="Q{http://www.w3.org/2005/xpath-functions/array}tail" type="1FA">
1864
               <treat as="FA" diag="0|0||array:tail">
1865
                  <check card="1" diag="0|0||array:tail">
1866
                     <lookup>
1867
                        <varRef name="Q{}state" slot="0"/>
1868
                        <str val="queue"/>
1869
                     </lookup>
1870
                  </check>
1871
               </treat>
1872
            </ifCall>
1873
            <choose>
1874
               <fn name="empty">
1875
                  <varRef name="Q{}item" slot="1"/>
1876
               </fn>
1877
               <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}merge" type="1FM">
1878
                  <sequence>
1879
                     <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
1880
                        <str val="queue"/>
1881
                        <varRef name="Q{}tail" slot="4"/>
1882
                     </ifCall>
1883
                     <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
1884
                        <str val="visited"/>
1885
                        <lookup>
1886
                           <varRef name="Q{}state" slot="0"/>
1887
                           <str val="visited"/>
1888
                        </lookup>
1889
                     </ifCall>
1890
                  </sequence>
1891
                  <map size="2">
1892
                     <str val="duplicates"/>
1893
                     <str val="reject"/>
1894
                     <str val="duplicates-error-code"/>
1895
                     <str val="FOJS0003"/>
1896
                  </map>
1897
               </ifCall>
1898
               <true/>
1899
               <let var="Q{}to" slot="5" eval="4">
1900
                  <lookup>
1901
                     <varRef name="Q{}item" slot="1"/>
1902
                     <str val="to"/>
1903
                  </lookup>
1904
                  <let var="Q{}visited" slot="6" eval="8">
1905
                     <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}put" type="1FM">
1906
                        <treat as="FM" diag="0|0||map:put">
1907
                           <check card="1" diag="0|0||map:put">
1908
                              <lookup>
1909
                                 <varRef name="Q{}state" slot="0"/>
1910
                                 <str val="visited"/>
1911
                              </lookup>
1912
                           </check>
1913
                        </treat>
1914
                        <atomSing diag="0|1||map:put">
1915
                           <varRef name="Q{}to" slot="5"/>
1916
                        </atomSing>
1917
                        <true/>
1918
                     </ifCall>
1919
                     <let var="Q{}items" slot="7" eval="8">
1920
                        <ifCall name="Q{http://www.w3.org/2005/xpath-functions/array}_from-sequence"
1921
                                type="1FA">
1922
                           <for var="Q{}edge" slot="8">
1923
                              <ufCall role="in"
1924
                                      name="Q{xslt:graph-api:2020}vertex-edges"
1925
                                      tailCall="false"
1926
                                      bSlot="0">
1927
                                 <check card="1" diag="0|0||g:vertex-edges">
1928
                                    <varRef name="Q{}to" slot="5"/>
1929
                                 </check>
1930
                                 <varRef name="Q{}g" slot="2"/>
1931
                              </ufCall>
1932
                              <for role="return" var="Q{}vertex" slot="9">
1933
                                 <ufCall role="in"
1934
                                         name="Q{xslt:graph-api:2020}edge-vertices"
1935
                                         tailCall="false"
1936
                                         bSlot="1">
1937
                                    <varRef name="Q{}edge" slot="8"/>
1938
                                    <varRef name="Q{}g" slot="2"/>
1939
                                 </ufCall>
1940
                                 <choose role="return">
1941
                                    <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}get" type="*">
1942
                                       <varRef name="Q{}visited" slot="6"/>
1943
                                       <atomSing diag="0|1||map:get">
1944
                                          <varRef name="Q{}vertex" slot="9"/>
1945
                                       </atomSing>
1946
                                    </ifCall>
1947
                                    <empty/>
1948
                                    <true/>
1949
                                    <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}merge" type="1FM">
1950
                                       <sequence>
1951
                                          <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
1952
                                             <str val="from"/>
1953
                                             <varRef name="Q{}to" slot="5"/>
1954
                                          </ifCall>
1955
                                          <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
1956
                                             <str val="to"/>
1957
                                             <varRef name="Q{}vertex" slot="9"/>
1958
                                          </ifCall>
1959
                                          <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
1960
                                             <str val="edge"/>
1961
                                             <varRef name="Q{}edge" slot="8"/>
1962
                                          </ifCall>
1963
                                          <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
1964
                                             <str val="depth"/>
1965
                                             <arith op="+" calc="a+a">
1966
                                                <cvUntyped to="AO">
1967
                                                   <atomSing card="?" diag="1|0||+">
1968
                                                      <lookup>
1969
                                                         <varRef name="Q{}item" slot="1"/>
1970
                                                         <str val="depth"/>
1971
                                                      </lookup>
1972
                                                   </atomSing>
1973
                                                </cvUntyped>
1974
                                                <int val="1"/>
1975
                                             </arith>
1976
                                          </ifCall>
1977
                                       </sequence>
1978
                                       <map size="2">
1979
                                          <str val="duplicates"/>
1980
                                          <str val="reject"/>
1981
                                          <str val="duplicates-error-code"/>
1982
                                          <str val="FOJS0003"/>
1983
                                       </map>
1984
                                    </ifCall>
1985
                                 </choose>
1986
                              </for>
1987
                           </for>
1988
                        </ifCall>
1989
                        <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}merge" type="1FM">
1990
                           <sequence>
1991
                              <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
1992
                                 <str val="queue"/>
1993
                                 <choose>
1994
                                    <varRef name="Q{}is-depth-first" slot="3"/>
1995
                                    <ifCall name="Q{http://www.w3.org/2005/xpath-functions/array}join" type="1FA">
1996
                                       <sequence>
1997
                                          <varRef name="Q{}items" slot="7"/>
1998
                                          <varRef name="Q{}tail" slot="4"/>
1999
                                       </sequence>
2000
                                    </ifCall>
2001
                                    <true/>
2002
                                    <ifCall name="Q{http://www.w3.org/2005/xpath-functions/array}join" type="1FA">
2003
                                       <sequence>
2004
                                          <varRef name="Q{}tail" slot="4"/>
2005
                                          <varRef name="Q{}items" slot="7"/>
2006
                                       </sequence>
2007
                                    </ifCall>
2008
                                 </choose>
2009
                              </ifCall>
2010
                              <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
2011
                                 <str val="visited"/>
2012
                                 <varRef name="Q{}visited" slot="6"/>
2013
                              </ifCall>
2014
                           </sequence>
2015
                           <map size="2">
2016
                              <str val="duplicates"/>
2017
                              <str val="reject"/>
2018
                              <str val="duplicates-error-code"/>
2019
                              <str val="FOJS0003"/>
2020
                           </map>
2021
                        </ifCall>
2022
                     </let>
2023
                  </let>
2024
               </let>
2025
            </choose>
2026
         </let>
2027
      </function>
2028
      <function name="Q{http://ns.saxonica.com/anonymous-type}f_1963862935"
2029
                line="0"
2030
                eval="4"
2031
                flags="pU"
2032
                as="*"
2033
                slots="1">
2034
         <arg name="Q{}vertices" as="1FM"/>
2035
         <ifCall role="body"
2036
                 baseUri="file:/C:/projects/git/xslt-graph/tests/rome-test.v2.xslt"
2037
                 ns="array=~ g=xslt:graph-api:2020 map=~ t=public:this xs=~ xsl=~ xml=~"
2038
                 line="73"
2039
                 name="Q{http://www.w3.org/2005/xpath-functions/map}keys"
2040
                 type="*A">
2041
            <varRef name="Q{}vertices" slot="0"/>
2042
         </ifCall>
2043
      </function>
2044
      <function name="Q{http://ns.saxonica.com/anonymous-type}f_2017085051"
2045
                line="0"
2046
                eval="4"
2047
                flags="pU"
2048
                as="*"
2049
                slots="2">
2050
         <arg name="Q{}vertex" as="1"/>
2051
         <arg name="Q{}item" as="1FM"/>
2052
         <lookup role="body"
2053
                 baseUri="file:/C:/projects/git/xslt-graph/dijkstra-search.v2.xslt"
2054
                 ns="array=~ f=xslt:functions:2020 g=xslt:graph-api:2020 map=~ p=private:xslt:graph-api:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
2055
                 line="88">
2056
            <varRef name="Q{}item" slot="1"/>
2057
            <str val="from"/>
2058
         </lookup>
2059
      </function>
2060
      <function name="Q{http://ns.saxonica.com/anonymous-type}f_2108763062"
2061
                line="0"
2062
                eval="4"
2063
                flags="pU"
2064
                as="*"
2065
                slots="2">
2066
         <arg name="Q{}vertex" as="1"/>
2067
         <arg name="Q{}visited" as="*"/>
2068
         <ifCall role="body"
2069
                 baseUri="file:/C:/projects/git/xslt-graph/dijkstra-search.v2.xslt"
2070
                 ns="array=~ f=xslt:functions:2020 g=xslt:graph-api:2020 map=~ p=private:xslt:graph-api:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
2071
                 line="88"
2072
                 name="Q{http://saxon.sf.net/}apply"
2073
                 type="*"
2074
                 dyn="$visited">
2075
            <treat as="F" diag="0|0||saxon:apply">
2076
               <check card="1" diag="0|0||saxon:apply">
2077
                  <varRef name="Q{}visited" slot="1"/>
2078
               </check>
2079
            </treat>
2080
            <arrayBlock>
2081
               <varRef name="Q{}vertex" slot="0"/>
2082
            </arrayBlock>
2083
         </ifCall>
2084
      </function>
2085
      <function name="Q{xslt:graph-api:2020}edge-vertices"
2086
                line="101"
2087
                module="file:/C:/projects/git/xslt-graph/graph.xslt"
2088
                eval="4"
2089
                flags="pU"
2090
                as="+"
2091
                slots="2">
2092
         <arg name="Q{}edge" as="1"/>
2093
         <arg name="Q{}g" as="1FM"/>
2094
         <check role="body"
2095
                baseUri="file:/C:/projects/git/xslt-graph/graph.xslt"
2096
                ns="g=xslt:graph-api:2020 map=~ xs=~ xsl=~ xml=~"
2097
                line="105"
2098
                card="+"
2099
                diag="5|0|XTTE0780|g:edge-vertices#2">
2100
            <ifCall name="Q{http://saxon.sf.net/}apply"
2101
                    type="*"
2102
                    dyn="$g ? &#34;edge-vertices&#34;">
2103
               <treat as="F" diag="0|0||saxon:apply">
2104
                  <check card="1" diag="0|0||saxon:apply">
2105
                     <lookup>
2106
                        <varRef name="Q{}g" slot="1"/>
2107
                        <str val="edge-vertices"/>
2108
                     </lookup>
2109
                  </check>
2110
               </treat>
2111
               <arrayBlock>
2112
                  <varRef name="Q{}edge" slot="0"/>
2113
               </arrayBlock>
2114
            </ifCall>
2115
         </check>
2116
      </function>
2117
      <function name="Q{http://ns.saxonica.com/anonymous-type}f_1944702768"
2118
                line="0"
2119
                eval="4"
2120
                flags="pU"
2121
                as="*"
2122
                slots="6">
2123
         <arg name="Q{}state" as="*"/>
2124
         <arg name="Q{}neighbor" as="1FM"/>
2125
         <let role="body"
2126
              baseUri="file:/C:/projects/git/xslt-graph/dijkstra-search.v2.xslt"
2127
              ns="array=~ f=xslt:functions:2020 g=xslt:graph-api:2020 map=~ p=private:xslt:graph-api:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
2128
              line="171"
2129
              var="Q{}visited"
2130
              slot="2"
2131
              eval="7">
2132
            <subscript>
2133
               <varRef name="Q{}state" slot="0"/>
2134
               <int val="2"/>
2135
            </subscript>
2136
            <let var="Q{}to" slot="3" eval="4">
2137
               <lookup>
2138
                  <varRef name="Q{}neighbor" slot="1"/>
2139
                  <str val="to"/>
2140
               </lookup>
2141
               <let var="Q{}distance" slot="4" eval="4">
2142
                  <lookup>
2143
                     <varRef name="Q{}neighbor" slot="1"/>
2144
                     <str val="distance"/>
2145
                  </lookup>
2146
                  <let var="Q{}item" slot="5" eval="4">
2147
                     <ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn="$visited">
2148
                        <treat as="F" diag="0|0||saxon:apply">
2149
                           <check card="1" diag="0|0||saxon:apply">
2150
                              <varRef name="Q{}visited" slot="2"/>
2151
                           </check>
2152
                        </treat>
2153
                        <arrayBlock>
2154
                           <varRef name="Q{}to" slot="3"/>
2155
                        </arrayBlock>
2156
                     </ifCall>
2157
                     <choose>
2158
                        <or op="or">
2159
                           <fn name="empty">
2160
                              <varRef name="Q{}item" slot="5"/>
2161
                           </fn>
2162
                           <vc op="lt"
2163
                               onEmpty="0"
2164
                               comp="GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint">
2165
                              <atomSing card="?" diag="1|0||lt">
2166
                                 <varRef name="Q{}distance" slot="4"/>
2167
                              </atomSing>
2168
                              <atomSing card="?" diag="1|1||lt">
2169
                                 <lookup>
2170
                                    <varRef name="Q{}item" slot="5"/>
2171
                                    <str val="distance"/>
2172
                                 </lookup>
2173
                              </atomSing>
2174
                           </vc>
2175
                        </or>
2176
                        <sequence>
2177
                           <ufCall name="Q{xslt:priority-queue:2020}add" tailCall="false" bSlot="0">
2178
                              <treat as="FM" diag="0|0||q:add">
2179
                                 <check card="1" diag="0|0||q:add">
2180
                                    <first>
2181
                                       <varRef name="Q{}state" slot="0"/>
2182
                                    </first>
2183
                                 </check>
2184
                              </treat>
2185
                              <check card="?" diag="0|1||q:add">
2186
                                 <varRef name="Q{}distance" slot="4"/>
2187
                              </check>
2188
                              <check card="1" diag="0|2||q:add">
2189
                                 <varRef name="Q{}to" slot="3"/>
2190
                              </check>
2191
                              <varRef name="Q{}neighbor" slot="1"/>
2192
                           </ufCall>
2193
                           <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}put" type="1FM">
2194
                              <treat as="FM" diag="0|0||map:put">
2195
                                 <check card="1" diag="0|0||map:put">
2196
                                    <varRef name="Q{}visited" slot="2"/>
2197
                                 </check>
2198
                              </treat>
2199
                              <atomSing diag="0|1||map:put">
2200
                                 <varRef name="Q{}to" slot="3"/>
2201
                              </atomSing>
2202
                              <varRef name="Q{}neighbor" slot="1"/>
2203
                           </ifCall>
2204
                        </sequence>
2205
                        <true/>
2206
                        <varRef name="Q{}state" slot="0"/>
2207
                     </choose>
2208
                  </let>
2209
               </let>
2210
            </let>
2211
         </let>
2212
      </function>
2213
      <function name="Q{xslt:graph-api:2020}search"
2214
                line="22"
2215
                module="file:/C:/projects/git/xslt-graph/search.xslt"
2216
                eval="4"
2217
                flags="pU"
2218
                as="*FM"
2219
                slots="4">
2220
         <arg name="Q{}root" as="1"/>
2221
         <arg name="Q{}g" as="1FM"/>
2222
         <arg name="Q{}is-depth-first" as="1AB"/>
2223
         <arg name="Q{}visited" as="1FM"/>
2224
         <treat role="body"
2225
                baseUri="file:/C:/projects/git/xslt-graph/search.xslt"
2226
                ns="array=~ f=xslt:functions:2020 g=xslt:graph-api:2020 map=~ xs=~ xsl=~ xml=~"
2227
                line="79"
2228
                as="FM"
2229
                diag="5|0|XTTE0780|g:search#4">
2230
            <ufCall name="Q{xslt:functions:2020}while"
2231
                    tailCall="false"
2232
                    bSlot="0"
2233
                    eval="4 16 16 16">
2234
               <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}merge" type="1FM">
2235
                  <sequence>
2236
                     <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
2237
                        <str val="queue"/>
2238
                        <arrayBlock>
2239
                           <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}merge" type="1FM">
2240
                              <sequence>
2241
                                 <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
2242
                                    <str val="to"/>
2243
                                    <varRef name="Q{}root" slot="0"/>
2244
                                 </ifCall>
2245
                                 <map size="1">
2246
                                    <str val="depth"/>
2247
                                    <int val="0"/>
2248
                                 </map>
2249
                              </sequence>
2250
                              <map size="2">
2251
                                 <str val="duplicates"/>
2252
                                 <str val="reject"/>
2253
                                 <str val="duplicates-error-code"/>
2254
                                 <str val="FOJS0003"/>
2255
                              </map>
2256
                           </ifCall>
2257
                        </arrayBlock>
2258
                     </ifCall>
2259
                     <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
2260
                        <str val="visited"/>
2261
                        <varRef name="Q{}visited" slot="3"/>
2262
                     </ifCall>
2263
                  </sequence>
2264
                  <map size="2">
2265
                     <str val="duplicates"/>
2266
                     <str val="reject"/>
2267
                     <str val="duplicates-error-code"/>
2268
                     <str val="FOJS0003"/>
2269
                  </map>
2270
               </ifCall>
2271
               <fnCoercer to="1F r[1AB] a[*]" diag="0|1||f:while">
2272
                  <ufRef name="Q{http://ns.saxonica.com/anonymous-type}f_658909832"
2273
                         arity="1"
2274
                         bSlot="1"/>
2275
               </fnCoercer>
2276
               <fnCoercer to="1F a[*]" diag="0|2||f:while">
2277
                  <ufRef name="Q{http://ns.saxonica.com/anonymous-type}f_767904468"
2278
                         arity="1"
2279
                         bSlot="2"/>
2280
               </fnCoercer>
2281
               <partialApply>
2282
                  <fnCoercer to="1F a[*,*,1FM,1AB]" diag="0|0||saxon:call">
2283
                     <ufRef name="Q{http://ns.saxonica.com/anonymous-type}f_1424082571"
2284
                            arity="4"
2285
                            bSlot="3"/>
2286
                  </fnCoercer>
2287
                  <null/>
2288
                  <null/>
2289
                  <varRef name="Q{}g" slot="1"/>
2290
                  <varRef name="Q{}is-depth-first" slot="2"/>
2291
               </partialApply>
2292
            </ufCall>
2293
         </treat>
2294
      </function>
2295
      <function name="Q{xslt:graph-api:2020}vertices"
2296
                line="42"
2297
                module="file:/C:/projects/git/xslt-graph/graph.xslt"
2298
                eval="4"
2299
                flags="pU"
2300
                as="*"
2301
                slots="1">
2302
         <arg name="Q{}g" as="1FM"/>
2303
         <forEach role="body"
2304
                  baseUri="file:/C:/projects/git/xslt-graph/graph.xslt"
2305
                  ns="g=xslt:graph-api:2020 map=~ xs=~ xsl=~ xml=~"
2306
                  line="45">
2307
            <lookup>
2308
               <varRef name="Q{}g" slot="0"/>
2309
               <str val="vertices"/>
2310
            </lookup>
2311
            <ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn=".">
2312
               <treat as="F" diag="0|0||saxon:apply">
2313
                  <dot/>
2314
               </treat>
2315
               <array size="0"/>
2316
            </ifCall>
2317
         </forEach>
2318
      </function>
2319
      <function name="Q{private:xslt:priority-queue:2020}find"
2320
                line="167"
2321
                module="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
2322
                eval="16"
2323
                flags="pU"
2324
                as="1ADI"
2325
                slots="4">
2326
         <arg name="Q{}keys" as="1FM"/>
2327
         <arg name="Q{}items" as="1FA"/>
2328
         <arg name="Q{}priority" as="?"/>
2329
         <arg name="Q{}key" as="1"/>
2330
         <tailCallLoop role="body"
2331
                       baseUri="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
2332
                       ns="array=~ map=~ p=private:xslt:priority-queue:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
2333
                       line="174">
2334
            <ufCall name="Q{private:xslt:priority-queue:2020}find"
2335
                    tailCall="foreign"
2336
                    bSlot="0"
2337
                    eval="6 6 6 6 0 16">
2338
               <varRef name="Q{}keys" slot="0"/>
2339
               <varRef name="Q{}items" slot="1"/>
2340
               <varRef name="Q{}priority" slot="2"/>
2341
               <varRef name="Q{}key" slot="3"/>
2342
               <int val="1"/>
2343
               <ifCall name="Q{http://www.w3.org/2005/xpath-functions/array}size" type="1ADI">
2344
                  <varRef name="Q{}items" slot="1"/>
2345
               </ifCall>
2346
            </ufCall>
2347
         </tailCallLoop>
2348
      </function>
2349
      <function name="Q{xslt:graph-api:2020}vertex-edges"
2350
                line="114"
2351
                module="file:/C:/projects/git/xslt-graph/graph.xslt"
2352
                eval="4"
2353
                flags="pU"
2354
                as="*"
2355
                slots="2">
2356
         <arg name="Q{}vertex" as="1"/>
2357
         <arg name="Q{}g" as="1FM"/>
2358
         <ifCall role="body"
2359
                 baseUri="file:/C:/projects/git/xslt-graph/graph.xslt"
2360
                 ns="g=xslt:graph-api:2020 map=~ xs=~ xsl=~ xml=~"
2361
                 line="118"
2362
                 name="Q{http://saxon.sf.net/}apply"
2363
                 type="*"
2364
                 dyn="$g ? &#34;vertex-edges&#34;">
2365
            <treat as="F" diag="0|0||saxon:apply">
2366
               <check card="1" diag="0|0||saxon:apply">
2367
                  <lookup>
2368
                     <varRef name="Q{}g" slot="1"/>
2369
                     <str val="vertex-edges"/>
2370
                  </lookup>
2371
               </check>
2372
            </treat>
2373
            <arrayBlock>
2374
               <varRef name="Q{}vertex" slot="0"/>
2375
            </arrayBlock>
2376
         </ifCall>
2377
      </function>
2378
      <function name="Q{xslt:graph-api:2020}vertex-value"
2379
                line="65"
2380
                module="file:/C:/projects/git/xslt-graph/graph.xslt"
2381
                eval="4"
2382
                flags="pU"
2383
                as="*"
2384
                slots="3">
2385
         <arg name="Q{}vertex" as="1"/>
2386
         <arg name="Q{}g" as="1FM"/>
2387
         <let role="body"
2388
              baseUri="file:/C:/projects/git/xslt-graph/graph.xslt"
2389
              ns="g=xslt:graph-api:2020 map=~ xs=~ xsl=~ xml=~"
2390
              line="74"
2391
              var="Q{}fn"
2392
              slot="2"
2393
              eval="4">
2394
            <lookup>
2395
               <varRef name="Q{}g" slot="1"/>
2396
               <str val="vertex-value"/>
2397
            </lookup>
2398
            <choose>
2399
               <fn name="empty">
2400
                  <varRef name="Q{}fn" slot="2"/>
2401
               </fn>
2402
               <varRef name="Q{}vertex" slot="0"/>
2403
               <true/>
2404
               <ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn="$fn">
2405
                  <treat as="F" diag="0|0||saxon:apply">
2406
                     <check card="1" diag="0|0||saxon:apply">
2407
                        <varRef name="Q{}fn" slot="2"/>
2408
                     </check>
2409
                  </treat>
2410
                  <arrayBlock>
2411
                     <varRef name="Q{}vertex" slot="0"/>
2412
                  </arrayBlock>
2413
               </ifCall>
2414
            </choose>
2415
         </let>
2416
      </function>
2417
      <function name="Q{private:xslt:priority-queue:2020}find"
2418
                line="188"
2419
                module="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
2420
                eval="16"
2421
                flags="pU"
2422
                as="1ADI"
2423
                slots="10">
2424
         <arg name="Q{}keys" as="1FM"/>
2425
         <arg name="Q{}items" as="1FA"/>
2426
         <arg name="Q{}priority" as="?"/>
2427
         <arg name="Q{}key" as="1"/>
2428
         <arg name="Q{}low" as="1ADI"/>
2429
         <arg name="Q{}high" as="1ADI"/>
2430
         <tailCallLoop role="body"
2431
                       baseUri="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
2432
                       ns="array=~ map=~ p=private:xslt:priority-queue:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
2433
                       line="225">
2434
            <choose>
2435
               <vc op="gt" onEmpty="0" comp="CAVC">
2436
                  <varRef name="Q{}low" slot="4"/>
2437
                  <varRef name="Q{}high" slot="5"/>
2438
               </vc>
2439
               <minus>
2440
                  <varRef name="Q{}low"